v8/test/cctest
Leszek Swirski 52ef2a1c27 [parser] Add an n-ary node for large binop chains
Expressions of the form

    a_0 + a_1 + a_2 + a_3 + ... + a_n

seem to be reasonably common for cases such as building templates.
However, parsing these expressions results in a n-deep expression tree:

           ...
          /
         +
        / \
       +  a_2
      / \
    a_0 a_1

Traversing this tree during compilation can cause a stack overflow when n is
large.

Instead, for left-associate operations such as add, we now build up an
n-ary node in the parse tree, of the form

         n-ary +
       /  |      \
      /   |  ...  \
    a_0  a_1      a_n

The bytecode compiler can now iterate through the child expressions
rather than recursing.

This patch only supports arithmetic operations -- subsequent patches
will enable the same optimization for logical tests and comma
expressions.

Bug: v8:6964
Bug: chromium:724961
Bug: chromium:731861
Bug: chromium:752081
Bug: chromium:771653
Bug: chromium:777302
Change-Id: Ie97e4ce42506fe62a7bc4ffbdaa90a9f698352cb
Reviewed-on: https://chromium-review.googlesource.com/733120
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48920}
2017-10-25 11:28:55 +00:00
..
compiler Reimplement Array.prototype.slice in CSA and C++ 2017-10-24 06:39:47 +00:00
heap Revert "[objects] Introduce {CodeDataContainer} object type." 2017-10-25 09:24:59 +00:00
interpreter [parser] Add an n-ary node for large binop chains 2017-10-25 11:28:55 +00:00
libplatform Reland "Switch tracing to use v8::TracingController" 2017-07-03 11:49:23 +00:00
libsampler
parsing [reland] [parser] Skipping inner funcs: Use less memory for variables. 2017-10-25 08:49:37 +00:00
wasm [wasm] Use the C_WASM_ENTRY code type for cctest GetWrapperCode() 2017-10-24 19:55:44 +00:00
BUILD.gn [tools] Move common arguments processing into separate file 2017-10-24 00:25:04 +00:00
cctest_exe.isolate
cctest.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
cctest.gyp [tools] Move common arguments processing into separate file 2017-10-24 00:25:04 +00:00
cctest.h [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
cctest.isolate
cctest.status [test] Add stress_incremental_marking testing variant 2017-10-05 13:10:42 +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 Remove x87 port 2017-07-18 18:20:40 +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
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 Fix receiver checks for v8::Function on a remote context receiver. 2017-02-22 10:13:24 +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 Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-allocation.cc Revert "[Memory] Move GetRandomMmapAddr from base::OS platform to v8::internal." 2017-10-18 18:48:27 +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 [api] Intercept DefineProperty after Descriptor query 2017-10-18 12:26:59 +00:00
test-api.cc Disable stress-incremental-marking flag for tests using a lot of memory. 2017-10-18 14:20:07 +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 [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-assembler-arm.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-assembler-ia32.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-assembler-mips64.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-assembler-mips.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-assembler-ppc.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-assembler-s390.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-assembler-x64.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-atomicops.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-bignum-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-bignum.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +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 [iwyu] Remove stale TODOs about objects-inl.h inclusion. 2017-10-09 11:14:59 +00:00
test-code-stub-assembler.cc [bigint] Support <, <=, >, >=. 2017-10-24 11:46:38 +00:00
test-code-stubs-arm64.cc Simplify DoubleToI stub. 2017-10-18 10:23:21 +00:00
test-code-stubs-arm.cc Simplify DoubleToI stub. 2017-10-18 10:23:21 +00:00
test-code-stubs-ia32.cc Simplify DoubleToI stub. 2017-10-18 10:23:21 +00:00
test-code-stubs-mips64.cc Simplify DoubleToI stub. 2017-10-18 10:23:21 +00:00
test-code-stubs-mips.cc Simplify DoubleToI stub. 2017-10-18 10:23:21 +00:00
test-code-stubs-x64.cc Simplify DoubleToI stub. 2017-10-18 10:23:21 +00:00
test-code-stubs.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-code-stubs.h [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-compiler.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-constantpool.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-conversions.cc [iwyu] Remove stale TODOs about objects-inl.h inclusion. 2017-10-09 11:14:59 +00:00
test-cpu-profiler.cc [profiler] Remove dead and obsolete CodeCreateEvent. 2017-10-19 11:30:51 +00:00
test-date.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-debug.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +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 [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-disasm-arm.cc [arm] Support splitting add with immediate instructions 2017-10-12 08:06:35 +00:00
test-disasm-ia32.cc Revert "[ia32][wasm] Add I32x4AddHoriz and I16x8AddHoriz" 2017-10-17 06:46:56 +00:00
test-disasm-mips64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-disasm-mips.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +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 Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-diy-fp.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-double.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-elements-kind.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-experimental-extra.js
test-extra.js Add isPromise V8 extras util 2017-04-06 13:16:35 +00:00
test-fast-dtoa.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-feedback-vector.cc [Cleanup][Interpreter] Move feedback slot allocation to bytecode generator 2017-10-19 16:17:14 +00:00
test-feedback-vector.h [objects] Make feedback vector a first-class object 2017-07-27 13:31:55 +00:00
test-field-type-tracking.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +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 [iwyu] Remove include debug.h -> arguments.h 2017-02-09 09:19:23 +00:00
test-fuzz-arm64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-global-handles.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +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 [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +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 Fix flaky test-inobject-slack-tracking cctest. 2017-10-18 13:06:35 +00:00
test-intl.cc [intl] Implement Intl.NumberFormat.prototype.formatToParts 2017-06-30 20:14:18 +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 Cleanup codegen.h includes 2017-10-20 11:56:01 +00:00
test-log.cc [log] Consistently escape log entries 2017-10-20 23:53:44 +00:00
test-macro-assembler-arm.cc [jumbo] arm unittests fixup 2017-10-03 06:24:30 +00:00
test-macro-assembler-mips64.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-macro-assembler-mips.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-macro-assembler-x64.cc [builtins] Remove smi-tagged argc support in CheckStackOverflow 2017-10-18 15:54:05 +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] Expose a module's status and exception. 2017-06-28 15:54:57 +00:00
test-object.cc [bigint] Adapt Object::NoSideEffectsToString. 2017-10-24 08:27:53 +00:00
test-orderedhashtable.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-parsing.cc [modules] Fix lazy parsing of functions in modules. 2017-10-22 09:03:34 +00:00
test-platform-linux.cc Revert "[Memory] Move GetRandomMmapAddr from base::OS platform to v8::internal." 2017-10-18 18:48:27 +00:00
test-platform-win32.cc Revert "[Memory] Move GetRandomMmapAddr from base::OS platform to v8::internal." 2017-10-18 18:48:27 +00:00
test-platform.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-profile-generator.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +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 [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +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 Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-run-wasm-relocation-arm.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-run-wasm-relocation-ia32.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-run-wasm-relocation-x64.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-sampler-api.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-serialize.cc [builtins] Port String.raw to CPP 2017-10-19 13:47:33 +00:00
test-simulator-arm64.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-simulator-arm.cc Reland^2 "[arm] [simulator] Do also execute tests on real hardware" 2017-10-19 14:49:03 +00:00
test-strings.cc [csa] extend the static CSA type system to allow for union types 2017-10-20 15:58:51 +00:00
test-strtod.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-symbols.cc [iwyu] Remove stale TODOs about objects-inl.h inclusion. 2017-10-09 11:14:59 +00:00
test-thread-termination.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-threads.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-trace-event.cc [cleanup] Replace List with std::vector in cctests and d8. 2017-08-29 13:29:26 +00:00
test-traced-value.cc
test-transitions.cc [iwyu] Remove stale TODOs about objects-inl.h inclusion. 2017-10-09 11:14:59 +00:00
test-transitions.h Refactor TransitionArray access 2017-07-28 19:41:21 +00:00
test-typedarrays.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-types.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-unbound-queue.cc
test-unboxed-doubles.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-unscopables-hidden-prototype.cc
test-usecounters.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
test-utils-arm64.cc [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-utils-arm64.h [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
test-utils.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-version.cc [build] Introduce an embedder version string 2017-10-05 07:17:45 +00:00
test-weakmaps.cc Make sure the identity hash is uniform (at least in the lower bits). 2017-10-12 03:47:56 +00:00
test-weaksets.cc [iwyu] Remove stale TODOs about objects-inl.h inclusion. 2017-10-09 11:14:59 +00:00
testcfg.py [test] Add output for investigating win-asan failures 2017-10-16 10:30:27 +00:00
trace-extension.cc
trace-extension.h
types-fuzz.h
unicode-helpers.h [parser/test] Move cctest/PreParserScopeAnalysis into a new file. 2017-02-07 10:11:01 +00:00