v8/test/unittests
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
..
api Pass Isolate pointer to String::Utf8Value/Value constructors 2017-08-28 18:17:08 +00:00
asmjs [asm.js] Remove some dead AsmType subclasses. 2017-08-25 09:50:29 +00:00
base [base] Allow comparing enums in (D)CHECKs 2017-09-21 13:33:30 +00:00
compiler [wasm] Introduce the WasmContext 2017-09-28 16:14:03 +00:00
compiler-dispatcher Remove Code::FUNCTION type and predicates. 2017-09-11 14:57:57 +00:00
heap [Memory] Move GetRandomMmapAddr from base::OS platform to v8::internal. 2017-09-22 15:26:18 +00:00
interpreter [es2015] Introduce dedicated GetTemplateObject bytecode. 2017-09-22 19:52:30 +00:00
libplatform Delegate getting current wall-clock time to the Platform interface. 2017-08-30 06:28:09 +00:00
parser [parser] Move newly added cctest/test-parsing/LazyFunctionLength to unittests. 2017-04-18 14:27:32 +00:00
wasm Add capability of throwing values in WASM 2017-09-25 16:58:19 +00:00
zone [heap] Simplify and linearly scale ResourceConstraints::ConfigureDefaults. 2017-05-23 17:00:57 +00:00
BUILD.gn [cleanup] Replace List with std::vector in api. 2017-09-28 09:32:18 +00:00
cancelable-tasks-unittest.cc Make CancelableTask ids unique 2017-08-02 16:10:42 +00:00
char-predicates-unittest.cc Use ICU for ID_START, ID_CONTINUE and WhiteSpace check 2017-06-14 20:32:49 +00:00
code-stub-assembler-unittest.cc [csa] Add constant folding more universally to CodeAssembler operators 2017-09-12 10:03:10 +00:00
code-stub-assembler-unittest.h [csa] Add constant folding more universally to CodeAssembler operators 2017-09-12 10:03:10 +00:00
counters-unittest.cc Localize counter class member functions. 2017-06-08 16:18:32 +00:00
DEPS Move unit tests to test/unittests. 2014-10-01 08:34:25 +00:00
detachable-vector-unittest.cc [cleanup] Replace List with std::vector in api. 2017-09-28 09:32:18 +00:00
eh-frame-iterator-unittest.cc [turbofan] Avoid disallowed "using namespace" directive. 2017-08-31 11:52:15 +00:00
eh-frame-writer-unittest.cc [turbofan] Avoid disallowed "using namespace" directive. 2017-08-31 11:52:15 +00:00
locked-queue-unittest.cc Add lock-based unbounded queue 2015-11-18 10:54:13 +00:00
object-unittest.cc [runtime] Devirtualize CompilationCacheKey::HashForObject 2017-06-12 17:00:52 +00:00
register-configuration-unittest.cc [Turbofan] Add concept of FP register aliasing on ARM 32. 2016-10-26 16:04:33 +00:00
run-all-unittests.cc Make idle tasks optional in the default platform. 2017-03-07 13:37:41 +00:00
source-position-table-unittest.cc This CL enables precise source positions for all V8 compilers. It merges compiler::SourcePosition and internal::SourcePosition to a single class used throughout the codebase. The new internal::SourcePosition instances store an id identifying an inlined function in addition to a script offset. 2016-11-14 17:22:32 +00:00
test-helpers.cc Reland "[builtins] Remove Builtins::Name() accessors" 2017-08-01 10:39:10 +00:00
test-helpers.h [Parsing] Remove parse-task support. 2017-08-18 21:09:30 +00:00
test-utils.cc [cleanup] Replace List with std::vector in IC, Handle code. 2017-08-30 07:35:00 +00:00
test-utils.h [cleanup] Replace List with std::vector in IC, Handle code. 2017-08-30 07:35:00 +00:00
unicode-unittest.cc Fix out-of-range access in unibrow::Utf8::CalculateValue. 2016-11-22 09:27:59 +00:00
unittests.gyp [cleanup] Replace List with std::vector in api. 2017-09-28 09:32:18 +00:00
unittests.isolate Reland [swarming] Isolate v8 testing. 2015-10-05 09:48:42 +00:00
unittests.status Remove x87 port 2017-07-18 18:20:40 +00:00
value-serializer-unittest.cc [api] Mark non-Isolate constructors of String::Utf8Value/Value for deprecation 2017-08-29 17:42:34 +00:00