Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(105)

Unified Diff: test/cctest/compiler/test-run-wasm-machops.cc

Issue 1881913002: Revert of [compiler] Add relocatable pointer constants for wasm memory references. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/cctest/cctest.gyp ('k') | test/cctest/test-run-wasm-relocation-x64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/compiler/test-run-wasm-machops.cc
diff --git a/test/cctest/compiler/test-run-wasm-machops.cc b/test/cctest/compiler/test-run-wasm-machops.cc
deleted file mode 100644
index 29709e981b02325e003cfd7e9a6d37b078cee54f..0000000000000000000000000000000000000000
--- a/test/cctest/compiler/test-run-wasm-machops.cc
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2016 the V8 project authors. All rights reserved. Use of this
-// source code is governed by a BSD-style license that can be found in the
-// LICENSE file.
-
-#include <cmath>
-#include <functional>
-#include <limits>
-
-#include "src/base/bits.h"
-#include "src/base/utils/random-number-generator.h"
-#include "src/codegen.h"
-#include "test/cctest/cctest.h"
-#include "test/cctest/compiler/codegen-tester.h"
-#include "test/cctest/compiler/graph-builder-tester.h"
-#include "test/cctest/compiler/value-helper.h"
-
-using namespace v8::internal;
-using namespace v8::internal::compiler;
-
-static void UpdateMemoryReferences(Handle<Code> code, Address old_base,
- Address new_base, size_t old_size,
- size_t new_size) {
- Isolate* isolate = CcTest::i_isolate();
- bool modified = false;
- int mode_mask = (1 << RelocInfo::WASM_MEMORY_REFERENCE);
- for (RelocIterator it(*code, mode_mask); !it.done(); it.next()) {
- RelocInfo::Mode mode = it.rinfo()->rmode();
- if (RelocInfo::IsWasmMemoryReference(mode)) {
- // Patch addresses with change in memory start address
- it.rinfo()->update_wasm_memory_reference(old_base, new_base, old_size,
- new_size);
- modified = true;
- }
- }
- if (modified) {
- Assembler::FlushICache(isolate, code->instruction_start(),
- code->instruction_size());
- }
-}
-
-template <typename CType>
-static void RunLoadStoreRelocation(MachineType rep) {
- const int kNumElems = 2;
- CType buffer[kNumElems];
- CType new_buffer[kNumElems];
- byte* raw = reinterpret_cast<byte*>(buffer);
- byte* new_raw = reinterpret_cast<byte*>(new_buffer);
- for (size_t i = 0; i < sizeof(buffer); i++) {
- raw[i] = static_cast<byte>((i + sizeof(CType)) ^ 0xAA);
- new_raw[i] = static_cast<byte>((i + sizeof(CType)) ^ 0xAA);
- }
- int32_t OK = 0x29000;
- RawMachineAssemblerTester<uint32_t> m;
- Node* base = m.RelocatableIntPtrConstant(reinterpret_cast<intptr_t>(raw),
- RelocInfo::WASM_MEMORY_REFERENCE);
- Node* base1 = m.RelocatableIntPtrConstant(
- reinterpret_cast<intptr_t>(raw + sizeof(CType)),
- RelocInfo::WASM_MEMORY_REFERENCE);
- Node* index = m.Int32Constant(0);
- Node* load = m.Load(rep, base, index);
- m.Store(rep.representation(), base1, index, load, kNoWriteBarrier);
- m.Return(m.Int32Constant(OK));
- CHECK(buffer[0] != buffer[1]);
- CHECK_EQ(OK, m.Call());
- CHECK(buffer[0] == buffer[1]);
- m.GenerateCode();
- Handle<Code> code = m.GetCode();
- UpdateMemoryReferences(code, raw, new_raw, sizeof(buffer),
- sizeof(new_buffer));
- CHECK(new_buffer[0] != new_buffer[1]);
- CHECK_EQ(OK, m.Call());
- CHECK(new_buffer[0] == new_buffer[1]);
-}
-
-TEST(RunLoadStoreRelocation) {
- RunLoadStoreRelocation<int8_t>(MachineType::Int8());
- RunLoadStoreRelocation<uint8_t>(MachineType::Uint8());
- RunLoadStoreRelocation<int16_t>(MachineType::Int16());
- RunLoadStoreRelocation<uint16_t>(MachineType::Uint16());
- RunLoadStoreRelocation<int32_t>(MachineType::Int32());
- RunLoadStoreRelocation<uint32_t>(MachineType::Uint32());
- RunLoadStoreRelocation<void*>(MachineType::AnyTagged());
- RunLoadStoreRelocation<float>(MachineType::Float32());
- RunLoadStoreRelocation<double>(MachineType::Float64());
-}
-
-template <typename CType>
-static void RunLoadStoreRelocationOffset(MachineType rep) {
- RawMachineAssemblerTester<int32_t> r(MachineType::Int32());
- const int kNumElems = 4;
- CType buffer[kNumElems];
- CType new_buffer[kNumElems + 1];
-
- for (int32_t x = 0; x < kNumElems; x++) {
- int32_t y = kNumElems - x - 1;
- // initialize the buffer with raw data.
- byte* raw = reinterpret_cast<byte*>(buffer);
- for (size_t i = 0; i < sizeof(buffer); i++) {
- raw[i] = static_cast<byte>((i + sizeof(buffer)) ^ 0xAA);
- }
-
- RawMachineAssemblerTester<int32_t> m;
- int32_t OK = 0x29000 + x;
- Node* base = m.RelocatableIntPtrConstant(reinterpret_cast<intptr_t>(buffer),
- RelocInfo::WASM_MEMORY_REFERENCE);
- Node* index0 = m.IntPtrConstant(x * sizeof(buffer[0]));
- Node* load = m.Load(rep, base, index0);
- Node* index1 = m.IntPtrConstant(y * sizeof(buffer[0]));
- m.Store(rep.representation(), base, index1, load, kNoWriteBarrier);
- m.Return(m.Int32Constant(OK));
-
- CHECK(buffer[x] != buffer[y]);
- CHECK_EQ(OK, m.Call());
- CHECK(buffer[x] == buffer[y]);
- m.GenerateCode();
-
- // Initialize new buffer and set old_buffer to 0
- byte* new_raw = reinterpret_cast<byte*>(new_buffer);
- for (size_t i = 0; i < sizeof(buffer); i++) {
- raw[i] = 0;
- new_raw[i] = static_cast<byte>((i + sizeof(buffer)) ^ 0xAA);
- }
-
- // Perform relocation on generated code
- Handle<Code> code = m.GetCode();
- UpdateMemoryReferences(code, raw, new_raw, sizeof(buffer),
- sizeof(new_buffer));
-
- CHECK(new_buffer[x] != new_buffer[y]);
- CHECK_EQ(OK, m.Call());
- CHECK(new_buffer[x] == new_buffer[y]);
- }
-}
-
-TEST(RunLoadStoreRelocationOffset) {
- RunLoadStoreRelocationOffset<int8_t>(MachineType::Int8());
- RunLoadStoreRelocationOffset<uint8_t>(MachineType::Uint8());
- RunLoadStoreRelocationOffset<int16_t>(MachineType::Int16());
- RunLoadStoreRelocationOffset<uint16_t>(MachineType::Uint16());
- RunLoadStoreRelocationOffset<int32_t>(MachineType::Int32());
- RunLoadStoreRelocationOffset<uint32_t>(MachineType::Uint32());
- RunLoadStoreRelocationOffset<void*>(MachineType::AnyTagged());
- RunLoadStoreRelocationOffset<float>(MachineType::Float32());
- RunLoadStoreRelocationOffset<double>(MachineType::Float64());
-}
« no previous file with comments | « test/cctest/cctest.gyp ('k') | test/cctest/test-run-wasm-relocation-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698