Index: test/cctest/wasm/test-run-wasm-asmjs.cc |
diff --git a/test/cctest/wasm/test-run-wasm-asmjs.cc b/test/cctest/wasm/test-run-wasm-asmjs.cc |
index 30de588a062e45344ab0f313c380f4853d602841..4abb251022da5388a3c09be7b2e550ae740419ac 100644 |
--- a/test/cctest/wasm/test-run-wasm-asmjs.cc |
+++ b/test/cctest/wasm/test-run-wasm-asmjs.cc |
@@ -26,6 +26,22 @@ using namespace v8::internal::wasm; |
#define RET(x) x, kExprReturn, 1 |
#define RET_I8(x) kExprI8Const, x, kExprReturn, 1 |
+#define IF_COMPILED(expr) \ |
+ if (execution_mode == kExecuteCompiled) { \ |
+ expr; \ |
+ } |
+ |
+namespace { |
+uint32_t GetMatchingRelocInfoCount(Handle<Code> code, RelocInfo::Mode rmode) { |
+ int filter = 1 << rmode; |
+ uint32_t ret = 0; |
+ for (RelocIterator it(*code, filter); !it.done(); it.next()) { |
+ ++ret; |
+ } |
+ return ret; |
+} |
+} |
+ |
WASM_EXEC_TEST(Int32AsmjsDivS) { |
WasmRunner<int32_t> r(execution_mode, MachineType::Int32(), |
MachineType::Int32()); |
@@ -122,6 +138,9 @@ WASM_EXEC_TEST(LoadMemI32_oob_asm) { |
BUILD(r, WASM_UNOP(kExprI32AsmjsLoadMem, WASM_GET_LOCAL(0))); |
+ IF_COMPILED( |
bradnelson
2016/06/12 20:50:14
Worth making these separate from the oob test? Thi
Mircea Trofin
2016/06/13 03:33:09
Good point, thanks. Added a battery of tests for t
|
+ CHECK_EQ(1, GetMatchingRelocInfoCount(module.instance->function_code[0], |
+ RelocInfo::WASM_MEMORY_REFERENCE))); |
memory[0] = 999999; |
CHECK_EQ(999999, r.Call(0u)); |
// TODO(titzer): offset 29-31 should also be OOB. |
@@ -142,6 +161,10 @@ WASM_EXEC_TEST(LoadMemF32_oob_asm) { |
BUILD(r, WASM_UNOP(kExprF32AsmjsLoadMem, WASM_GET_LOCAL(0))); |
+ IF_COMPILED( |
+ CHECK_EQ(1, GetMatchingRelocInfoCount(module.instance->function_code[0], |
+ RelocInfo::WASM_MEMORY_REFERENCE))); |
+ |
memory[0] = 9999.5f; |
CHECK_EQ(9999.5f, r.Call(0u)); |
// TODO(titzer): offset 29-31 should also be OOB. |
@@ -162,6 +185,10 @@ WASM_EXEC_TEST(LoadMemF64_oob_asm) { |
BUILD(r, WASM_UNOP(kExprF64AsmjsLoadMem, WASM_GET_LOCAL(0))); |
+ IF_COMPILED( |
+ CHECK_EQ(1, GetMatchingRelocInfoCount(module.instance->function_code[0], |
+ RelocInfo::WASM_MEMORY_REFERENCE))); |
+ |
memory[0] = 9799.5; |
CHECK_EQ(9799.5, r.Call(0u)); |
memory[1] = 11799.25; |
@@ -185,6 +212,10 @@ WASM_EXEC_TEST(StoreMemI32_oob_asm) { |
BUILD(r, WASM_BINOP(kExprI32AsmjsStoreMem, WASM_GET_LOCAL(0), |
WASM_GET_LOCAL(1))); |
+ IF_COMPILED( |
+ CHECK_EQ(1, GetMatchingRelocInfoCount(module.instance->function_code[0], |
+ RelocInfo::WASM_MEMORY_REFERENCE))); |
+ |
memory[0] = 7777; |
CHECK_EQ(999999, r.Call(0u, 999999)); |
CHECK_EQ(999999, memory[0]); |