v8/test/cctest
Enrico Bacis 6cd7a5a73a [wasm] Introduce the WasmContext
The WasmContext struct introduced in this CL is used to store the
mem_size and mem_start address of the wasm memory. These variables can
be accessed at C++ level at graph build time (e.g., initialized during
instance building). When the GrowMemory runtime is invoked, the context
variables can be changed in the WasmContext at C++ level so that the
generated code will load the correct values.

This requires to insert a relocatable pointer only in the
JSToWasmWrapper (and in the other wasm entry points), the value is then
passed from function to function as an automatically added additional
parameter. The WasmContext is then dropped when creating an Interpreter
Entry or when invoking a JavaScript function. This removes the need of
patching the generated code at runtime (i.e., when the memory grows)
with respect to WASM_MEMORY_REFERENCE and WASM_MEMORY_SIZE_REFERENCE.
However, we still need to patch the code at instance build time to patch
the JSToWasmWrappers; in fact the address of the WasmContext is not
known during compilation, but only when the instance is built.

The WasmContext address is passed as the first parameter. This has the
advantage of not having to move the WasmContext around if the function
does not use many registers. This CL also changes the wasm calling
convention so that the first parameter register is different from the
return value register. The WasmContext is attached to every
WasmMemoryObject, to share the same context with multiple instances
sharing the same memory. Moreover, the nodes representing the
WasmContext variables are cached in the SSA environment, similarly to
other local variables that might change during execution.  The nodes are
created when initializing the SSA environment and refreshed every time a
grow_memory or a function call happens, so that we are sure that they
always represent the correct mem_size and mem_start variables.

This CL also removes the WasmMemorySize runtime (since it's now possible
to directly retrieve mem_size from the context) and simplifies the
GrowMemory runtime (since every instance now has a memory_object).

R=ahaas@chromium.org,clemensh@chromium.org
CC=gdeepti@chromium.org

Change-Id: I3f058e641284f5a1bbbfc35a64c88da6ff08e240
Reviewed-on: https://chromium-review.googlesource.com/671008
Commit-Queue: Enrico Bacis <enricobacis@google.com>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48209}
2017-09-28 16:14:03 +00:00
..
compiler [wasm] Introduce the WasmContext 2017-09-28 16:14:03 +00:00
ffi Add COMPONENT tags to OWNERS files where appropriate 2017-05-22 10:15:28 +00:00
heap Replace specific IC Code::Kind with Code::STUB 2017-09-28 15:40:41 +00:00
interpreter [objects] Remove obsolete uses of {ReplaceCode} methods. 2017-09-28 12:37:46 +00:00
libplatform Reland "Switch tracing to use v8::TracingController" 2017-07-03 11:49:23 +00:00
libsampler
parsing [unicode] Return (the correct) errors for overlong / surrogate sequences. 2017-09-21 10:44:40 +00:00
wasm [wasm] Introduce the WasmContext 2017-09-28 16:14:03 +00:00
BUILD.gn [ic] Remove extra-ic-state and Map::code_cache 2017-09-28 11:24:12 +00:00
cctest_exe.isolate
cctest.cc Rename "NoBarrier" memory operations to "Relaxed". 2017-05-30 07:44:37 +00:00
cctest.gyp [ic] Remove extra-ic-state and Map::code_cache 2017-09-28 11:24:12 +00:00
cctest.h [iwyu] Fix cctest inline header inclusion violation. 2017-09-08 11:59:53 +00:00
cctest.isolate
cctest.status Skip WASM atomic tests on big-endian machines. 2017-09-20 12:28:37 +00:00
DEPS
expression-type-collector-macros.h
gay-fixed.cc
gay-fixed.h
gay-precision.cc
gay-precision.h
gay-shortest.cc
gay-shortest.h
log-eq-of-logging-and-traversal.js
OWNERS Remove x87 port 2017-07-18 18:20:40 +00:00
print-extension.cc Pass Isolate pointer to String::Utf8Value/Value constructors 2017-08-28 18:17:08 +00:00
print-extension.h
profiler-extension.cc
profiler-extension.h
scope-test-helper.h [parser] Skipping inner funcs: Associate data to SharedFunctionInfo, not Script. 2017-06-30 11:12:52 +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 Replace specific IC Code::Kind with Code::STUB 2017-09-28 15:40:41 +00:00
test-accessors.cc [cctest] Simplify the majority of callers of CcTest::CollectAllGarbage 2017-04-27 17:20:54 +00:00
test-allocation.cc [Memory] Move GetRandomMmapAddr from base::OS platform to v8::internal. 2017-09-22 15:26:18 +00:00
test-api-accessors.cc Remove experimental fast accessor builder API 2017-03-14 08:14:48 +00:00
test-api-interceptors.cc [api] Do not re-use PropertyCallbackArguments 2017-09-06 08:31:56 +00:00
test-api.cc [unicode] Fix overlong / surrogate sequences detection some more. 2017-09-26 12:08:24 +00:00
test-api.h Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-array-list.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-assembler-arm64.cc [arm64] Pair some pushes and delete unused code 2017-09-28 13:36:17 +00:00
test-assembler-arm.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-assembler-ia32.cc [iwyu] Remove illegal inline include from "macro-assembler.h" 2017-09-13 11:44:07 +00:00
test-assembler-mips64.cc MIPS[64]: Implement 3R MSA instructions in simulator 2017-09-21 13:27:44 +00:00
test-assembler-mips.cc MIPS[64]: Implement 3R MSA instructions in simulator 2017-09-21 13:27:44 +00:00
test-assembler-ppc.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-assembler-s390.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-assembler-x64.cc [wasm] Introduce the WasmContext 2017-09-28 16:14:03 +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 Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-code-stub-assembler.cc Use args to avoid unnecessary work in RecordWrite stub 2017-09-22 12:28:38 +00:00
test-code-stubs-arm64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-code-stubs-arm.cc [assembler] Remove RegisterBase::is method 2017-09-07 15:03:22 +00:00
test-code-stubs-ia32.cc [iwyu] Remove illegal inline include from "macro-assembler.h" 2017-09-13 11:44:07 +00:00
test-code-stubs-mips64.cc [iwyu] Remove illegal inline include from "macro-assembler.h" 2017-09-13 11:44:07 +00:00
test-code-stubs-mips.cc [iwyu] Remove illegal inline include from "macro-assembler.h" 2017-09-13 11:44:07 +00:00
test-code-stubs-x64.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +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 Remove Code::FUNCTION type and predicates. 2017-09-11 14:57:57 +00:00
test-constantpool.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-conversions.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-cpu-profiler.cc Delegate getting current wall-clock time to the Platform interface. 2017-08-30 06:28:09 +00:00
test-date.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-debug.cc [cleanup] Remove List. 2017-09-28 10:47:40 +00:00
test-decls.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +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 [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-disasm-arm.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-disasm-ia32.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +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 Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-diy-fp.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-double.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +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 [turbofan] Optimize fast enum cache driven for..in. 2017-09-01 11:27:37 +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 [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +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 [jumbo] add test source file namespace in test-hashmap.cc 2017-09-25 16:51:38 +00:00
test-heap-profiler.cc Reland "Reland "[profiler] proper observation of old space inline allocations"" 2017-09-25 15:13:01 +00:00
test-identity-map.cc [cleanup] Replace List with std::vector in cctests and d8. 2017-08-29 13:29:26 +00:00
test-inobject-slack-tracking.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-intl.cc [intl] Implement Intl.NumberFormat.prototype.formatToParts 2017-06-30 20:14:18 +00:00
test-javascript-arm64.cc include fixing: api.h shouldn't include objects-inl.h 2017-01-09 13:43:28 +00:00
test-js-arm64-variables.cc include fixing: api.h shouldn't include objects-inl.h 2017-01-09 13:43:28 +00:00
test-liveedit.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-lockers.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-log-stack-tracer.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-log.cc Pass Isolate pointer to String::Utf8Value/Value constructors 2017-08-28 18:17:08 +00:00
test-macro-assembler-arm.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-macro-assembler-mips64.cc [iwyu] Remove illegal inline include from "macro-assembler.h" 2017-09-13 11:44:07 +00:00
test-macro-assembler-mips.cc [iwyu] Remove illegal inline include from "macro-assembler.h" 2017-09-13 11:44:07 +00:00
test-macro-assembler-x64.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-managed.cc Refactor Managed construction 2017-09-04 11:37:42 +00:00
test-mementos.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-modules.cc [api] Expose a module's status and exception. 2017-06-28 15:54:57 +00:00
test-object.cc [iwyu] Remove obsolete "api.h" include from "handles-inl.h". 2017-09-11 12:52:20 +00:00
test-orderedhashtable.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-parsing.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-platform-linux.cc [Memory] Move GetRandomMmapAddr from base::OS platform to v8::internal. 2017-09-22 15:26:18 +00:00
test-platform-win32.cc [Memory] Move GetRandomMmapAddr from base::OS platform to v8::internal. 2017-09-22 15:26:18 +00:00
test-platform.cc
test-profile-generator.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-random-number-generator.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-regexp.cc [refactoring] Prepare conversions{.h,-inl.h,.cc} for BigInt.parseInt 2017-09-26 22:52: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 [wasm] Introduce the WasmContext 2017-09-28 16:14:03 +00:00
test-run-wasm-relocation-arm.cc [wasm] Introduce the WasmContext 2017-09-28 16:14:03 +00:00
test-run-wasm-relocation-ia32.cc [wasm] Introduce the WasmContext 2017-09-28 16:14:03 +00:00
test-run-wasm-relocation-x64.cc [wasm] Introduce the WasmContext 2017-09-28 16:14:03 +00:00
test-sampler-api.cc
test-serialize.cc [snapshot] correctly mark SFIs with deserialized code. 2017-09-27 14:32:34 +00:00
test-simulator-arm64.cc [cctest] Avoid disallowed "using namespace" directive. 2017-09-01 08:28:36 +00:00
test-simulator-arm.cc [iwyu] Remove illegal inline include from "macro-assembler.h" 2017-09-13 11:44:07 +00:00
test-strings.cc Remove --string-slices and --serialize-eager. 2017-09-28 04:41:18 +00:00
test-strtod.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-symbols.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-thread-termination.cc [console] correctly propagate exceptions. 2017-08-31 13:37:12 +00:00
test-threads.cc [cleanup] Replace List with std::vector in cctests and d8. 2017-08-29 13:29:26 +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 [tracing] Use locale independent writer for FP values. 2017-01-12 08:08:57 +00:00
test-transitions.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +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 Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-unbound-queue.cc
test-unboxed-doubles.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-unscopables-hidden-prototype.cc
test-usecounters.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-utils-arm64.cc [assembler] Make Register et al. real classes 2017-09-06 12:13:09 +00:00
test-utils-arm64.h [assembler] Make Register et al. real classes 2017-09-06 12:13:09 +00:00
test-utils.cc Start preparing test/cctest for jumbo compilation 2017-08-14 20:58:10 +00:00
test-version.cc Reland "[snapshot] include version string in the startup snapshot." 2017-09-26 11:29:44 +00:00
test-weakmaps.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
test-weaksets.cc [jumbo] add test namespaces for cctest 2017-09-21 08:46:16 +00:00
testcfg.py
trace-extension.cc
trace-extension.h
types-fuzz.h [turbofan] HeapConstant types should compare by handle address 2016-10-08 16:51:53 +00:00
unicode-helpers.h [parser/test] Move cctest/PreParserScopeAnalysis into a new file. 2017-02-07 10:11:01 +00:00