v8/test/mjsunit/wasm
Ben L. Titzer a2b3480611 [wasm] Use a tuple as the instance for JS imports
This CL refactors the implementation of WASM->JS import wrappers in order
to make the wrapper code shareable. Instead of specializing to the import
index, we use a tuple as the object ref in the both the import and indirect
tables. The tuple allows the wrapper code to load both the calling
instance and the target callable, rather than relying on code specialization.

This requires some tricky codegen machinery, because WASM call descriptors
expect an instance argument in a given register, yet the wrappers receive
a tuple, the code generator must generate a prologue that loads the
instance (and the callable), since it is not possible to express this at
the graph level.

R=mstarzinger@chromium.org
CC=clemensh@chromium.org

Change-Id: Id67e307f7f5089e776f5439a53b5aee4b76934b6
Reviewed-on: https://chromium-review.googlesource.com/c/1268237
Commit-Queue: Ben Titzer <titzer@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#56520}
2018-10-10 11:07:35 +00:00
..
embenchen [wasm] asm.js - Remove Wasm.instantiateModuleFromAsm, use asm.js directly. 2016-08-23 04:07:23 +00:00
adapter-frame.js [wasm] Rename wasm::LocalType to wasm::ValueType and kAst* to kWasm* 2016-12-21 13:43:00 +00:00
add-getters.js [wasm] Freeze exports object 2016-12-19 18:45:07 +00:00
anyref.js [wasm] Fix missing default value for anyref local. 2018-09-03 11:24:39 +00:00
asm-wasm-copy.js [wasm] asm.js - Remove Wasm.instantiateModuleFromAsm, use asm.js directly. 2016-08-23 04:07:23 +00:00
asm-wasm-deopt.js [wasm] asm.js - Remove Wasm.instantiateModuleFromAsm, use asm.js directly. 2016-08-23 04:07:23 +00:00
asm-wasm-exception-in-tonumber.js [asm.js] Fix source positions of ToNumber conversions. 2017-04-05 12:34:55 +00:00
asm-wasm-expr.js [asm.js] Fix source positions in for-statement parsing. 2017-04-19 08:53:57 +00:00
asm-wasm-f32.js [wasm] Enable more asm.js tests 2018-02-21 15:42:22 +00:00
asm-wasm-f64.js [wasm] Enable more asm.js tests 2018-02-21 15:42:22 +00:00
asm-wasm-heap.js [wasm] asm.js - Remove Wasm.instantiateModuleFromAsm, use asm.js directly. 2016-08-23 04:07:23 +00:00
asm-wasm-i32.js [wasm] [asm.js] Fix various asm.js issues. 2016-09-28 16:37:04 +00:00
asm-wasm-imports.js [asm.js] Split large asm.js test into parts. 2018-08-09 14:02:04 +00:00
asm-wasm-literals.js [wasm][asm.js] Fix asm.js in tests to be more strictly valid. 2017-03-14 20:17:04 +00:00
asm-wasm-memory.js Reland "[asmjs] Properly validate asm.js heap sizes" 2018-08-21 09:00:04 +00:00
asm-wasm-names.js [wasm] Honor the names section for modules coming from asm.js. 2016-12-06 14:31:51 +00:00
asm-wasm-stack.js [asm.js] Fix names for forward declared functions. 2017-04-04 07:55:54 +00:00
asm-wasm-stdlib.js [wasm] Remove obsolete %IsNotAsmWasmCode predicate. 2016-12-09 11:56:05 +00:00
asm-wasm-switch.js [wasm] asm.js - Remove Wasm.instantiateModuleFromAsm, use asm.js directly. 2016-08-23 04:07:23 +00:00
asm-wasm-u32.js [wasm] [asm.js] Fix various asm.js issues. 2016-09-28 16:37:04 +00:00
asm-wasm.js Reland "[asmjs] Properly validate asm.js heap sizes" 2018-08-21 09:00:04 +00:00
asm-with-wasm-off.js [wasm] Honor AllowCodegenFromStrings() for all WASM compile types. 2017-10-06 08:50:51 +00:00
async-compile.js [wasm] Create module object in async compilation earlier. 2018-05-09 07:54:56 +00:00
atomics.js [atomics] Fix I64CmpExchg for narrow width operations 2018-09-27 08:05:10 +00:00
bounds-check-64bit.js [wasm][cleanup] Remove kV8MaxPages from wasm-constants.js 2018-08-29 11:16:03 +00:00
calls.js [wasm] Master CL for Binary 0xC changes. 2016-09-27 20:46:30 +00:00
compare-exchange64-stress.js [wasm] Add test for I64AtomicCompareExchange 2018-09-27 11:46:35 +00:00
compare-exchange-stress.js [wasm] Add test for I64AtomicCompareExchange 2018-09-27 11:46:35 +00:00
compilation-limits-asm.js [wasm] [cleanup] Avoid shouting WASM 2017-06-09 16:24:19 +00:00
compilation-limits.js Revert "[test] Refactor assertPromiseResult" 2017-10-25 14:42:25 +00:00
compiled-module-management.js [wasm] Remove {WasmCompiledModule} object type. 2018-06-27 14:02:51 +00:00
compiled-module-serialization.js [wasm] Fix serialization of {WasmCode} with jump tables. 2018-07-02 14:41:13 +00:00
data-segments.js [wasm][test] Add additional module builder checks. 2018-09-11 09:56:44 +00:00
disable-trap-handler.js [wasm] Enable trap handlers by default in D8 on Linux x64 2017-09-25 17:43:33 +00:00
disallow-codegen.js [wasm] Return immediately if code generation is not allowed 2018-09-11 13:15:20 +00:00
divrem-trap.js [mjsunit] Change assertThrows such that it can check the exception message. 2016-11-28 10:26:44 +00:00
empirical_max_memory.js [wasm] Prepare to support 4GiB memories 2018-07-24 13:55:43 +00:00
ensure-wasm-binaries-up-to-date.js [wasm] Master CL for Binary 0xC changes. 2016-09-27 20:46:30 +00:00
errors.js [wasm] Improve trap messages 2018-02-02 11:27:11 +00:00
exceptions-catchall.js [wasm] Fix corner cases with catch-all handling. 2018-10-09 14:15:13 +00:00
exceptions-export.js [wasm] Introduce WASM_EXCEPTION_OBJECT instance type. 2018-09-10 11:26:25 +00:00
exceptions-import.js Reland "[wasm] Implement handling of exported/imported exceptions." 2018-09-17 13:15:22 +00:00
exceptions-shared.js Reland "[wasm] Implement handling of exported/imported exceptions." 2018-09-17 13:15:22 +00:00
exceptions.js [wasm] Add support for multiple catch blocks. 2018-10-09 12:26:55 +00:00
export-global.js [wasm] Enable mutable-global by default 2018-06-12 23:08:48 +00:00
export-mutable-global.js [wasm] Fix for exporting imported mutable globals 2018-06-12 21:26:27 +00:00
export-table.js [wasm] Fix error output for duplicate exports 2017-07-10 09:53:32 +00:00
expose-wasm.js [asmjs] --validate-asm should not expose the WASM API. 2017-09-04 13:31:32 +00:00
ffi-error.js [wasm] During instantiation, pending_exceptions dominate new exceptions 2018-08-07 10:44:12 +00:00
ffi.js [wasm] Don't call constructors directly from wasm2js wrappers 2018-03-29 11:48:32 +00:00
float-constant-folding.js [wasm] Do not fold f32-to-f64 and f64-to-f32 conversions. 2017-02-03 12:05:29 +00:00
function-names.js [wasm] Use "wasm-function[i]" for wasm function name 2018-07-31 11:20:44 +00:00
function-prototype.js [wasm] Fix prototype property of exported functions 2018-02-28 09:14:57 +00:00
gc-buffer.js [wasm] [cleanup] Avoid shouting WASM 2017-06-09 16:24:19 +00:00
gc-frame.js [wasm] Rename wasm::LocalType to wasm::ValueType and kAst* to kWasm* 2016-12-21 13:43:00 +00:00
gc-stress.js [wasm] Reduce run-time of GC stress test. 2017-07-14 16:02:42 +00:00
globals.js [wasm] Enable mutable-global by default 2018-06-12 23:08:48 +00:00
graceful_shutdown_during_tierup.js [wasm] Remove redundant cancelling of compile tasks 2018-08-01 12:21:57 +00:00
graceful_shutdown.js [d8] Add no-wait-for-wasm flag 2018-03-16 15:35:27 +00:00
grow-memory-detaching.js [wasm][cleanup] Remove kV8MaxPages from wasm-constants.js 2018-08-29 11:16:03 +00:00
grow-memory-in-branch.js [wasm] Add tests for grow_memory in conditional branches 2017-08-19 10:33:11 +00:00
grow-memory-in-call.js [wasm] Add tests for grow_memory in functions inside loops 2017-08-29 11:01:37 +00:00
grow-memory-in-loop.js [wasm] Add tests for grow_memory in loops 2017-08-21 09:42:34 +00:00
grow-memory.js [wasm][cleanup] Remove kV8MaxPages from wasm-constants.js 2018-08-29 11:16:03 +00:00
huge-memory.js [wasm] add a test case for 3GB memory 2017-04-26 05:09:03 +00:00
import-function.js [wasm] Use correct instance when calling start function 2018-05-15 16:17:29 +00:00
import-memory.js [wasm][cleanup] Remove kV8MaxPages from wasm-constants.js 2018-08-29 11:16:03 +00:00
import-mutable-global.js [wasm][test] Add additional module builder checks. 2018-09-11 09:56:44 +00:00
import-table.js [wasm] Fix dispatch table instance update 2018-08-30 15:54:14 +00:00
incrementer.wasm [wasm] Accept version 0x1 binaries. 2017-02-09 02:09:47 +00:00
indirect-calls.js [wasm] Use a tuple as the instance for JS imports 2018-10-10 11:07:35 +00:00
indirect-sig-mismatch.js [wasm] More extensive indirect dispatch signature mismatch tests. 2017-07-24 19:21:28 +00:00
indirect-tables.js [wasm] Fix target instance for indirect calls to imports 2018-04-27 08:27:56 +00:00
instance-gc.js [wasm] Refactor import handling for 0xC. 2016-10-06 15:43:22 +00:00
instance-memory-gc-stress.js [wasm] Implement correct 2-level namespace for imports. 2016-12-20 15:32:56 +00:00
instantiate-module-basic.js Revert "[test] Refactor assertPromiseResult" 2017-10-25 14:42:25 +00:00
instantiate-run-basic.js Revert "[test] Refactor assertPromiseResult" 2017-10-25 14:42:25 +00:00
interpreter-mixed.js [wasm] Preserve interpreter entry even on tier-up. 2018-08-17 13:21:59 +00:00
interpreter.js [wasm] Preserve interpreter entry even on tier-up. 2018-08-17 13:21:59 +00:00
js-api.js [wasm] Disallow calling wasm constructors without new. 2017-11-20 17:34:51 +00:00
jsapi-harness.js [wasm] Update spec tests 2018-02-14 14:17:44 +00:00
large-offset.js [wasm] Increase WebAssembly.Memory maximum size to 2GB 2017-06-16 03:35:09 +00:00
lazy-compilation.js [wasm] Add "freeze" flag to test lazy compilation 2017-11-30 08:54:12 +00:00
liftoff-trap-handler.js [liftoff] fix statically out of bounds memory access with trap handlers 2018-03-23 19:24:16 +00:00
liftoff.js [wasm] Prepare enabling liftoff by default on ia32 and x64 2018-06-22 11:06:26 +00:00
many-parameters.js [Liftoff] Implement direct calls 2018-01-09 10:54:56 +00:00
memory_1gb_oob.js [wasm] Support 4GiB memories in Liftoff 2018-07-27 14:20:00 +00:00
memory_2gb_oob.js [wasm] Support 4GiB memories in Liftoff 2018-07-27 14:20:00 +00:00
memory_4gb_oob.js [wasm] Support 4GiB memories in Liftoff 2018-07-27 14:20:00 +00:00
memory-external-call.js [wasm] Store the globals_start in WasmContext. 2017-10-16 09:35:47 +00:00
memory-instance-validation.js [wasm] Use WeakFixedArray for list of instances sharing a WasmMemoryObject. 2017-07-07 13:52:21 +00:00
memory-size.js Reland "[wasm] Fix page size constant + test limits on max pages." 2018-01-19 10:19:32 +00:00
memory.js [wasm] Add tests for grow_memory inside functions 2017-08-17 12:35:51 +00:00
module-memory.js [wasm][test] Fix typo in module-memory test. 2018-08-24 14:18:18 +00:00
multi-value.js [wasm] Int64 lowering for return values 2017-10-27 11:34:14 +00:00
mutable-globals.js [wasm] Rename type to value in Global constructor 2018-05-30 21:08:03 +00:00
names.js [wasm] Errors in names section do not fail the whole module. 2017-01-24 13:13:26 +00:00
origin-trial-flags.js [wasm] Check the isolate if WebAssembly threads are enabled. 2018-08-13 09:16:33 +00:00
OWNERS Remove mtrofin and rossberg from OWNERS 2018-02-15 23:48:43 +00:00
parallel_compilation.js [wasm] Master CL for Binary 0xC changes. 2016-09-27 20:46:30 +00:00
params.js [wasm] Rename wasm::LocalType to wasm::ValueType and kAst* to kWasm* 2016-12-21 13:43:00 +00:00
print-code.js [wasm] Add test for printing wasm code after deserialization 2018-06-05 19:15:15 +00:00
receiver.js [wasm] Implement correct 2-level namespace for imports. 2016-12-20 15:32:56 +00:00
serialize-lazy-module.js [wasm] Fix serialization of lazily compiled modules 2018-06-12 17:07:36 +00:00
shared-memory.js [wasm] Allocate SAB when memory is shared 2017-12-21 01:01:32 +00:00
stack.js [wasm] Use right data type for storing error location 2017-08-31 11:07:25 +00:00
stackwalk.js [wasm] Implement correct 2-level namespace for imports. 2016-12-20 15:32:56 +00:00
start-function.js [wasm] Reject an exception in the start function on the promise 2018-06-13 09:01:48 +00:00
streaming-compile.js [wasm] Streaming compilation for WebAssembly. 2017-09-15 06:36:25 +00:00
streaming-error-position.js Revert "[test] Refactor assertPromiseResult" 2017-10-25 14:42:25 +00:00
streaming-trap-location.js [wasm] Streaming compilation for WebAssembly. 2017-09-15 06:36:25 +00:00
table-grow.js [wasm] Merge the WasmContext into WasmInstanceObject 2018-04-06 12:13:26 +00:00
table.js [wasm][test] Add additional module builder checks. 2018-09-11 09:56:44 +00:00
test-wasm-module-builder.js [wasm] Disallow calling wasm constructors without new. 2017-11-20 17:34:51 +00:00
tier-up-testing-flag.js [wasm][fuzzer] Test combinations of Turbofan and Liftoff 2018-07-12 12:56:30 +00:00
trap-handler-fallback.js Reland "[wasm] Introduce a soft limit on reserved memory" 2018-09-19 15:12:18 +00:00
trap-location.js [builtins] implement RunMicrotasks pump as a code stub 2017-12-04 17:55:29 +00:00
unicode-validation.js [wasm] Also kBadChar is a valid utf8 character 2017-05-23 09:28:06 +00:00
unicode.js [wasm] Use wasm-function#%d consistently as debug name. 2018-09-12 13:47:21 +00:00
unreachable-validation.js [wasm] Decoder should narrow unreachable types on the stack. 2017-08-30 11:49:16 +00:00
unreachable.js
user-properties-common.js [wasm/test] Split test/mjsunit/wasm/user-properties.js into smaller tests. 2017-10-27 10:37:55 +00:00
user-properties-constructed.js [wasm/test] Split test/mjsunit/wasm/user-properties.js into smaller tests. 2017-10-27 10:37:55 +00:00
user-properties-exported.js [wasm/test] Split test/mjsunit/wasm/user-properties.js into smaller tests. 2017-10-27 10:37:55 +00:00
user-properties-module.js [wasm/test] Split test/mjsunit/wasm/user-properties.js into smaller tests. 2017-10-27 10:37:55 +00:00
user-properties-reexport.js [wasm/test] Split test/mjsunit/wasm/user-properties.js into smaller tests. 2017-10-27 10:37:55 +00:00
verify-module-basic-errors.js [wasm] Reduce usage of old Wasm.* API in JS tests. 2016-10-13 16:55:57 +00:00
wasm-api-overloading.js Revert "[test] Refactor assertPromiseResult" 2017-10-25 14:42:25 +00:00
wasm-constants.js [wasm] Initial catch-all control flow wiring. 2018-10-09 11:09:58 +00:00
wasm-default.js [wasm] Enable WASM by default (--expose-wasm=true). 2017-01-12 12:04:35 +00:00
wasm-module-builder.js [wasm][test] Add additional module builder checks. 2018-09-11 09:56:44 +00:00
wasm-object-api.js [wasm] Remove the "Wasm" object. 2016-10-26 16:58:53 +00:00
worker-interpreter.js [d8] Update new Worker API to match the Web API 2018-09-20 00:10:28 +00:00
worker-memory.js [d8] Update new Worker API to match the Web API 2018-09-20 00:10:28 +00:00
worker-module.js [d8] Update new Worker API to match the Web API 2018-09-20 00:10:28 +00:00