v8/test/cctest
Benedikt Meurer 1f8dcc5d2e [builtins] Optimize PromiseResolveThenableJob for the common case.
The idea here is that in case the `thenable` is a JSPromise and `then`
is the initial `Promise.prototype.then` method, and the @@species lookup
chain is intact, we can skip creating the temporary promise and the
closures (with the shared context), and instead directly call into our
PerformPromiseThen. This is sound since - given above mentioned
conditions - our short-cut

  PerformPromiseThen(thenable, undefined, undefined, promise_to_resolve)

is not observably different from the actual

  resolve, reject = CreateResolvingFunctions(promise_to_resolve)
  result_capability = NewPromiseCapability(%Promise%)
  PerformPromiseThen(thenable, resolve, reject, result_capability)

except through PromiseHooks (and potentially via the async stack
traces). So we disable the fast-path if either promise hooks are enabled
or the debugger is active for now.

This improves the performance on the wikipedia benchmark by 20-25% and
the bluebird-doxbee benchmark by around 20%.

Bug: v8:7253
Change-Id: I23c92ad365c2b71d65057573f2d8febe2afe00b0
Reviewed-on: https://chromium-review.googlesource.com/911800
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#51261}
2018-02-13 05:36:39 +00:00
..
compiler Normalize names of call descriptor local variables 2018-02-09 22:09:07 +00:00
heap Revert "[builtins] Mega-revert to address the Dev blocker in crbug.com/808911." 2018-02-08 17:25:13 +00:00
interpreter [builtins] Refactor the promise resolution and rejection logic. 2018-02-13 04:18:12 +00:00
libplatform [tracing] allow embedders to provide own tracing timestamps 2018-01-10 19:36:23 +00:00
libsampler
parsing [class] Fix lazy parsing of private fields 2018-02-07 18:12:50 +00:00
wasm Normalize names of call descriptor local variables 2018-02-09 22:09:07 +00:00
assembler-helper-arm.cc Replace CALL_GENERATED_CODE by GeneratedCode wrapper 2018-01-09 10:33:36 +00:00
assembler-helper-arm.h Replace CALL_GENERATED_CODE by GeneratedCode wrapper 2018-01-09 10:33:36 +00:00
BUILD.gn [builtins] Remove .incbin test 2018-02-07 15:47:37 +00:00
cctest_exe.isolate
cctest.cc [wasm] First step of refactoring trap handling to be per module. 2017-12-07 01:00:55 +00:00
cctest.h Revert "[platform] Remove {PageAllocator::kReadWriteExecute}." 2018-01-24 12:49:47 +00:00
cctest.isolate
cctest.status [cctest] Skip test-run-wasm-simd if SIMD is not supported 2018-01-31 10:08:14 +00:00
DEPS
expression-type-collector-macros.h [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
gay-fixed.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
gay-fixed.h
gay-precision.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
gay-precision.h
gay-shortest.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
gay-shortest.h
log-eq-of-logging-and-traversal.js Reland "[logging] Use OFStream for log events" 2017-10-20 22:47:01 +00:00
OWNERS [MIPS] Add Sreten Kovacevic as owner of MIPS files 2018-02-09 15:35:49 +00:00
print-extension.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
print-extension.h
profiler-extension.cc Replace CHECK(false) by UNREACHABLE() 2017-12-19 18:58:07 +00:00
profiler-extension.h
scope-test-helper.h [reland] [parser] Skipping inner funcs: Use less memory for variables. 2017-10-25 08:49:37 +00:00
setup-isolate-for-tests.cc [heap] remove heap init from shipping binary. 2017-09-07 05:24:49 +00:00
setup-isolate-for-tests.h [heap] remove heap init from shipping binary. 2017-09-07 05:24:49 +00:00
test-access-checks.cc Replace CHECK(false) by UNREACHABLE() 2017-12-19 18:58:07 +00:00
test-accessor-assembler.cc Remove ComputeFlags, simply pass in Code::Kind instead of Code::Flags 2017-09-29 15:37:27 +00:00
test-accessors.cc Implement v8::Object::SetLazyDataProperty. 2018-01-24 15:48:45 +00:00
test-allocation.cc Fix [Memory] Add OnCriticalMemoryPressure overload to v8::Platform. 2017-12-26 10:55:07 +00:00
test-api-accessors.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-api-interceptors.cc Revert "[api] Prefer Descriptor interceptor over Getter in GetPropertyAttributes" 2018-01-04 15:12:20 +00:00
test-api.cc [builtins] Optimize PromiseResolveThenableJob for the common case. 2018-02-13 05:36:39 +00:00
test-api.h Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-array-list.cc [iwyu] Remove stale TODOs about objects-inl.h inclusion. 2017-10-09 11:14:59 +00:00
test-assembler-arm64.cc [simulator] Refactor simulator I-cache to be process-wide. 2018-02-09 18:25:06 +00:00
test-assembler-arm.cc [arm] Introduce UseScratchRegisterScope for VFP registers 2018-02-02 13:05:11 +00:00
test-assembler-ia32.cc [assembler] Unify RelocInfo::NONE32 and NONE64 2018-01-22 15:09:32 +00:00
test-assembler-mips64.cc Replace CALL_GENERATED_CODE by GeneratedCode wrapper 2018-01-09 10:33:36 +00:00
test-assembler-mips.cc Replace CALL_GENERATED_CODE by GeneratedCode wrapper 2018-01-09 10:33:36 +00:00
test-assembler-ppc.cc PPC: Replace CALL_GENERATED_CODE by GeneratedCode wrapper 2018-01-10 20:40:13 +00:00
test-assembler-s390.cc PPC/s390: [assembler] Unify RelocInfo::NONE32 and NONE64 2018-01-23 19:09:25 +00:00
test-assembler-x64.cc Implement haddps for ia32/x64 2017-12-11 21:43:53 +00:00
test-atomicops.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-bignum-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-bignum.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-bit-vector.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-circular-queue.cc
test-code-layout.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-code-stub-assembler.cc [builtins] Refactor the promise resolution and rejection logic. 2018-02-13 04:18:12 +00:00
test-code-stubs-arm64.cc [simulator] Refactor simulator I-cache to be process-wide. 2018-02-09 18:25:06 +00:00
test-code-stubs-arm.cc [simulator] Refactor simulator I-cache to be process-wide. 2018-02-09 18:25:06 +00:00
test-code-stubs-ia32.cc Refactor bailout reasons 2018-01-04 19:08:45 +00:00
test-code-stubs-mips64.cc [simulator] Refactor simulator I-cache to be process-wide. 2018-02-09 18:25:06 +00:00
test-code-stubs-mips.cc [simulator] Refactor simulator I-cache to be process-wide. 2018-02-09 18:25:06 +00:00
test-code-stubs-x64.cc Refactor bailout reasons 2018-01-04 19:08:45 +00:00
test-code-stubs.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-code-stubs.h [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-compiler.cc Support Function::SetName() with --harmony-function-tostring 2018-01-09 18:13:09 +00:00
test-constantpool.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-conversions.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-cpu-profiler.cc [cpu-profiler] Fix script name when recording inlining info 2018-01-03 11:48:04 +00:00
test-date.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-debug.cc [debug] do not inline builtin if breaking on entry. 2018-02-08 13:05:20 +00:00
test-decls.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-deoptimization.cc Pass Isolate pointer to String::Utf8Value/Value constructors 2017-08-28 18:17:08 +00:00
test-dictionary.cc [runtime] Make GetHash and GetOrCreateHash member functions 2017-08-22 00:35:31 +00:00
test-disasm-arm64.cc [arm64] Rename csp to sp 2018-01-18 14:20:40 +00:00
test-disasm-arm.cc [arm] Restrict usage of pc-relative LDR. 2018-01-10 11:22:49 +00:00
test-disasm-ia32.cc [ia32] Fix disassembler tests to test instruction disassembly 2018-02-08 00:25:16 +00:00
test-disasm-mips64.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-disasm-mips.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-disasm-ppc.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-disasm-s390.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-disasm-x64.cc [x64] Fix Disassembler tests to actually test disassembly 2018-02-07 22:18:09 +00:00
test-diy-fp.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-double.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-elements-kind.cc [factory] Simplify JSFunction creation 2017-11-08 13:52:13 +00:00
test-experimental-extra.js
test-extra.js [v8-extras] Remove simpleBind 2018-02-06 09:17:58 +00:00
test-fast-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-feedback-vector.cc [turbofan] Retain call count when changing speculation mode 2018-02-12 07:55:34 +00:00
test-feedback-vector.h
test-field-type-tracking.cc [cleanup] Replace V8_UINT64_C macro by proper C++11 syntax 2017-12-01 13:13:37 +00:00
test-fixed-dtoa.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-flags.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-func-name-inference.cc [cctest] Add FuncNameInferrer coverage for arrow functions 2017-12-14 21:34:39 +00:00
test-fuzz-arm64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-global-handles.cc Global handles: More test coverage 2017-11-20 14:48:04 +00:00
test-global-object.cc Pass Isolate pointer to String::Utf8Value/Value constructors 2017-08-28 18:17:08 +00:00
test-hashcode.cc [runtime] Make GetHash and GetOrCreateHash member functions 2017-08-22 00:35:31 +00:00
test-hashmap.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-heap-profiler.cc Revert "[builtins] Mega-revert to address the Dev blocker in crbug.com/808911." 2018-02-08 17:25:13 +00:00
test-identity-map.cc [iwyu] Remove stale TODOs about objects-inl.h inclusion. 2017-10-09 11:14:59 +00:00
test-inobject-slack-tracking.cc [runtime] Harden JSFunction::CalculateInstanceSizeHelper(...) 2018-02-12 20:54:29 +00:00
test-intl.cc
test-isolate-independent-builtins.cc s390: [builtins] Add tests for embedding with .byte directive 2018-02-07 15:52:38 +00:00
test-javascript-arm64.cc [jumbo] arm64 cctest fixes 2017-09-30 17:17:23 +00:00
test-js-arm64-variables.cc [jumbo] arm64 cctest fixes 2017-09-30 17:17:23 +00:00
test-liveedit.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-lockers.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-log-stack-tracer.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-log.cc [profiler] Emit code creation events for off-heap builtins 2018-02-05 12:22:51 +00:00
test-macro-assembler-arm.cc Replace CALL_GENERATED_CODE by GeneratedCode wrapper 2018-01-09 10:33:36 +00:00
test-macro-assembler-mips64.cc Replace CALL_GENERATED_CODE by GeneratedCode wrapper 2018-01-09 10:33:36 +00:00
test-macro-assembler-mips.cc Replace CALL_GENERATED_CODE by GeneratedCode wrapper 2018-01-09 10:33:36 +00:00
test-macro-assembler-x64.cc [assembler] Unify RelocInfo::NONE32 and NONE64 2018-01-22 15:09:32 +00:00
test-managed.cc Refactor Managed construction 2017-09-04 11:37:42 +00:00
test-mementos.cc [iwyu] Remove stale TODOs about objects-inl.h inclusion. 2017-10-09 11:14:59 +00:00
test-modules.cc [api,modules] Allow GetModuleNamespace on unevaluated modules. 2018-01-08 09:01:25 +00:00
test-object.cc [bigint] Encapsulate internals in MutableBigInt 2017-11-17 23:06:52 +00:00
test-orderedhashtable.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-parsing.cc [class] Ban #constructor as a private field name 2018-02-06 18:58:37 +00:00
test-platform.cc [Memory] Create memory management API in v8::internal. 2017-12-15 18:49:47 +00:00
test-profile-generator.cc Refactor FATAL macro 2017-12-19 07:57:12 +00:00
test-random-number-generator.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-regexp.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-representation.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-run-wasm-relocation-arm64.cc [cleanup] Refactor CSignature helper 2018-01-16 10:01:13 +00:00
test-run-wasm-relocation-arm.cc [cleanup] Refactor CSignature helper 2018-01-16 10:01:13 +00:00
test-run-wasm-relocation-ia32.cc [cleanup] Refactor CSignature helper 2018-01-16 10:01:13 +00:00
test-run-wasm-relocation-x64.cc [cleanup] Refactor CSignature helper 2018-01-16 10:01:13 +00:00
test-sampler-api.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-serialize.cc [test] Add interrupt-budget fuzzer 2018-01-29 16:31:40 +00:00
test-strings.cc Reland "[regexp] fix Latin1 ignore-case bug." 2018-02-06 10:34:12 +00:00
test-strtod.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-symbols.cc [iwyu] Remove stale TODOs about objects-inl.h inclusion. 2017-10-09 11:14:59 +00:00
test-sync-primitives-arm64.cc [simulator] Make Call variadic 2018-01-08 16:53:45 +00:00
test-sync-primitives-arm.cc Replace CALL_GENERATED_CODE by GeneratedCode wrapper 2018-01-09 10:33:36 +00:00
test-thread-termination.cc Replace CHECK(false) by UNREACHABLE() 2017-12-19 18:58:07 +00:00
test-threads.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-trace-event.cc [tracing] implement TRACE_EVENT_ADD_WITH_TIMESTAMP 2018-01-12 16:27:25 +00:00
test-traced-value.cc Avoid octal escape sequences 2017-12-01 15:08:14 +00:00
test-transitions.cc [iwyu] Remove stale TODOs about objects-inl.h inclusion. 2017-10-09 11:14:59 +00:00
test-transitions.h
test-typedarrays.cc [typedarray] Reimplement TA.p.subarray as CSA 2018-01-24 12:03:14 +00:00
test-types.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-unbound-queue.cc
test-unboxed-doubles.cc Normalize casing of hexadecimal digits 2017-12-02 01:24:40 +00:00
test-unscopables-hidden-prototype.cc
test-usecounters.cc [parser] Remove incorrect UseCounter code for LabeledExpressionStatement 2018-01-06 00:17:43 +00:00
test-utils-arm64.cc [arm64] Remove remaining instances of csp 2018-01-18 18:07:18 +00:00
test-utils-arm64.h [arm64] Remove remaining instances of csp 2018-01-18 18:07:18 +00:00
test-utils.cc Replace CHECK(false) by UNREACHABLE() 2017-12-19 18:58:07 +00:00
test-version.cc [build] Introduce an embedder version string 2017-10-05 07:17:45 +00:00
test-weakmaps.cc [heap] Increase test coverage for embedder tracing 2017-12-07 14:11:51 +00:00
test-weaksets.cc [factory] Simplify JSFunction creation 2017-11-08 13:52:13 +00:00
testcfg.py [test] Remove context usage from test processors 2018-02-01 10:35:02 +00:00
trace-extension.cc Replace CHECK(false) by UNREACHABLE() 2017-12-19 18:58:07 +00:00
trace-extension.h
types-fuzz.h
unicode-helpers.h Implement DFA Unicode Decoder 2017-12-11 21:36:13 +00:00