Commit 59e87d64 authored by Andreas Haas's avatar Andreas Haas Committed by Commit Bot

[wasm] Remove mjsunit/wasm/test-import-export-wrapper

The test required a special runtime function, which did not work in
general but only in the context of that one test. After an offline
discussion we decided that what the test is testing is not worth a
runtime function, since we would also see in other tests if something
goes wrong.

R=clemensh@chromium.org

Bug: v8:7403
Change-Id: I129a189a9df299d409a4a555eae28783e47b97d1
Reviewed-on: https://chromium-review.googlesource.com/901284Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#51095}
parent b17a1679
...@@ -470,121 +470,6 @@ RUNTIME_FUNCTION(Runtime_ClearFunctionFeedback) { ...@@ -470,121 +470,6 @@ RUNTIME_FUNCTION(Runtime_ClearFunctionFeedback) {
return isolate->heap()->undefined_value(); return isolate->heap()->undefined_value();
} }
RUNTIME_FUNCTION(Runtime_CheckWasmWrapperElision) {
// This only supports the case where the function being exported
// calls an intermediate function, and the intermediate function
// calls exactly one imported function
HandleScope scope(isolate);
CHECK_EQ(args.length(), 2);
// It takes two parameters, the first one is the JSFunction,
// The second one is the type
CONVERT_ARG_HANDLE_CHECKED(JSFunction, function, 0);
// If type is 0, it means that it is supposed to be a direct call into a wasm
// function.
// If type is 1, it means that it is supposed to have wrappers.
CONVERT_ARG_HANDLE_CHECKED(Smi, type, 1);
Handle<Code> export_code = handle(function->code());
CHECK(export_code->kind() == Code::JS_TO_WASM_FUNCTION);
int const mask =
RelocInfo::ModeMask(FLAG_wasm_jit_to_native ? RelocInfo::JS_TO_WASM_CALL
: RelocInfo::CODE_TARGET);
// check the type of the $export_fct
wasm::WasmCode* export_fct = nullptr;
Handle<Code> export_fct_handle;
wasm::WasmCode* intermediate_fct = nullptr;
Handle<Code> intermediate_fct_handle;
int count = 0;
for (RelocIterator it(*export_code, mask); !it.done(); it.next()) {
RelocInfo* rinfo = it.rinfo();
Address target_address = FLAG_wasm_jit_to_native
? rinfo->js_to_wasm_address()
: rinfo->target_address();
if (FLAG_wasm_jit_to_native) {
wasm::WasmCode* target =
isolate->wasm_engine()->code_manager()->LookupCode(target_address);
if (target->kind() == wasm::WasmCode::kFunction) {
++count;
export_fct = target;
}
} else {
Code* target = Code::GetCodeFromTargetAddress(target_address);
if (target->kind() == Code::WASM_FUNCTION) {
++count;
export_fct_handle = handle(target);
}
}
}
CHECK_EQ(count, 1);
// check the type of the intermediate_fct
count = 0;
if (FLAG_wasm_jit_to_native) {
for (RelocIterator it(export_fct->instructions(), export_fct->reloc_info(),
export_fct->constant_pool(),
RelocInfo::ModeMask(RelocInfo::WASM_CALL));
!it.done(); it.next()) {
RelocInfo* rinfo = it.rinfo();
Address target_address = rinfo->target_address();
wasm::WasmCode* target =
isolate->wasm_engine()->code_manager()->LookupCode(target_address);
if (target->kind() == wasm::WasmCode::kFunction) {
++count;
intermediate_fct = target;
}
}
} else {
count = 0;
for (RelocIterator it(*export_fct_handle, mask); !it.done(); it.next()) {
RelocInfo* rinfo = it.rinfo();
Address target_address = rinfo->target_address();
Code* target = Code::GetCodeFromTargetAddress(target_address);
if (target->kind() == Code::WASM_FUNCTION) {
++count;
intermediate_fct_handle = handle(target);
}
}
}
CHECK_EQ(count, 1);
// Check the type of the imported exported function, it should be also a wasm
// function in our case.
CHECK(type->value() == 0 || type->value() == 1);
count = 0;
if (FLAG_wasm_jit_to_native) {
wasm::WasmCode::Kind target_kind = type->value() == 0
? wasm::WasmCode::kWasmToWasmWrapper
: wasm::WasmCode::kWasmToJsWrapper;
for (RelocIterator it(intermediate_fct->instructions(),
intermediate_fct->reloc_info(),
intermediate_fct->constant_pool(),
RelocInfo::ModeMask(RelocInfo::WASM_CALL));
!it.done(); it.next()) {
RelocInfo* rinfo = it.rinfo();
Address target_address = rinfo->target_address();
wasm::WasmCode* target =
isolate->wasm_engine()->code_manager()->LookupCode(target_address);
if (target->kind() == target_kind) {
++count;
}
}
} else {
Code::Kind target_kind = type->value() == 0 ? Code::WASM_TO_WASM_FUNCTION
: Code::WASM_TO_JS_FUNCTION;
count = 0;
for (RelocIterator it(*intermediate_fct_handle, mask); !it.done();
it.next()) {
RelocInfo* rinfo = it.rinfo();
Address target_address = rinfo->target_address();
Code* target = Code::GetCodeFromTargetAddress(target_address);
if (target->kind() == target_kind) {
++count;
}
}
}
CHECK_LE(count, 1);
return isolate->heap()->ToBoolean(count == 1);
}
RUNTIME_FUNCTION(Runtime_SetWasmCompileControls) { RUNTIME_FUNCTION(Runtime_SetWasmCompileControls) {
HandleScope scope(isolate); HandleScope scope(isolate);
v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate); v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate);
......
...@@ -557,7 +557,6 @@ namespace internal { ...@@ -557,7 +557,6 @@ namespace internal {
#define FOR_EACH_INTRINSIC_TEST(F) \ #define FOR_EACH_INTRINSIC_TEST(F) \
F(Abort, 1, 1) \ F(Abort, 1, 1) \
F(AbortJS, 1, 1) \ F(AbortJS, 1, 1) \
F(CheckWasmWrapperElision, 2, 1) \
F(ClearFunctionFeedback, 1, 1) \ F(ClearFunctionFeedback, 1, 1) \
F(CompleteInobjectSlackTracking, 1, 1) \ F(CompleteInobjectSlackTracking, 1, 1) \
F(ConstructConsString, 2, 1) \ F(ConstructConsString, 2, 1) \
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment