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

Side by Side Diff: test/cctest/wasm/test-run-wasm-module.cc

Issue 2479043003: [wasm] fix TestInterruptLoop for Big Endian platform (Closed)
Patch Set: workaround to avoid using const_cast Created 4 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdlib.h> 5 #include <stdlib.h>
6 #include <string.h> 6 #include <string.h>
7 7
8 #include "src/snapshot/code-serializer.h" 8 #include "src/snapshot/code-serializer.h"
9 #include "src/version.h" 9 #include "src/version.h"
10 #include "src/wasm/module-decoder.h" 10 #include "src/wasm/module-decoder.h"
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 class InterruptThread : public v8::base::Thread { 412 class InterruptThread : public v8::base::Thread {
413 public: 413 public:
414 explicit InterruptThread(Isolate* isolate, int32_t* memory) 414 explicit InterruptThread(Isolate* isolate, int32_t* memory)
415 : Thread(Options("TestInterruptLoop")), 415 : Thread(Options("TestInterruptLoop")),
416 isolate_(isolate), 416 isolate_(isolate),
417 memory_(memory) {} 417 memory_(memory) {}
418 418
419 static void OnInterrupt(v8::Isolate* isolate, void* data) { 419 static void OnInterrupt(v8::Isolate* isolate, void* data) {
420 int32_t* m = reinterpret_cast<int32_t*>(data); 420 int32_t* m = reinterpret_cast<int32_t*>(data);
421 // Set the interrupt location to 0 to break the loop in {TestInterruptLoop}. 421 // Set the interrupt location to 0 to break the loop in {TestInterruptLoop}.
422 m[interrupt_location_] = interrupt_value_; 422 int32_t* ptr = &m[interrupt_location_];
423 WriteLittleEndianValue<int32_t>(ptr, interrupt_value_);
423 } 424 }
424 425
425 virtual void Run() { 426 virtual void Run() {
426 // Wait for the main thread to write the signal value. 427 // Wait for the main thread to write the signal value.
427 while (memory_[0] != signal_value_) { 428 int32_t val = 0;
428 } 429 do {
430 val = memory_[0];
431 val = ReadLittleEndianValue<int32_t>(&val);
432 } while (val != signal_value_);
429 isolate_->RequestInterrupt(&OnInterrupt, const_cast<int32_t*>(memory_)); 433 isolate_->RequestInterrupt(&OnInterrupt, const_cast<int32_t*>(memory_));
430 } 434 }
431 435
432 Isolate* isolate_; 436 Isolate* isolate_;
433 volatile int32_t* memory_; 437 volatile int32_t* memory_;
434 static const int32_t interrupt_location_ = 10; 438 static const int32_t interrupt_location_ = 10;
435 static const int32_t interrupt_value_ = 154; 439 static const int32_t interrupt_value_ = 154;
436 static const int32_t signal_value_ = 1221; 440 static const int32_t signal_value_ = 1221;
437 }; 441 };
438 442
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 486
483 MaybeHandle<JSArrayBuffer> maybe_memory = 487 MaybeHandle<JSArrayBuffer> maybe_memory =
484 GetInstanceMemory(isolate, instance); 488 GetInstanceMemory(isolate, instance);
485 Handle<JSArrayBuffer> memory = maybe_memory.ToHandleChecked(); 489 Handle<JSArrayBuffer> memory = maybe_memory.ToHandleChecked();
486 int32_t* memory_array = reinterpret_cast<int32_t*>(memory->backing_store()); 490 int32_t* memory_array = reinterpret_cast<int32_t*>(memory->backing_store());
487 491
488 InterruptThread thread(isolate, memory_array); 492 InterruptThread thread(isolate, memory_array);
489 thread.Start(); 493 thread.Start();
490 testing::RunWasmModuleForTesting(isolate, instance, 0, nullptr, 494 testing::RunWasmModuleForTesting(isolate, instance, 0, nullptr,
491 ModuleOrigin::kWasmOrigin); 495 ModuleOrigin::kWasmOrigin);
496 int32_t val = memory_array[InterruptThread::interrupt_location_];
492 CHECK_EQ(InterruptThread::interrupt_value_, 497 CHECK_EQ(InterruptThread::interrupt_value_,
493 memory_array[InterruptThread::interrupt_location_]); 498 ReadLittleEndianValue<int32_t>(&val));
494 } 499 }
495 500
496 TEST(Run_WasmModule_GrowMemoryInIf) { 501 TEST(Run_WasmModule_GrowMemoryInIf) {
497 TestSignatures sigs; 502 TestSignatures sigs;
498 v8::internal::AccountingAllocator allocator; 503 v8::internal::AccountingAllocator allocator;
499 Zone zone(&allocator, ZONE_NAME); 504 Zone zone(&allocator, ZONE_NAME);
500 WasmModuleBuilder* builder = new (&zone) WasmModuleBuilder(&zone); 505 WasmModuleBuilder* builder = new (&zone) WasmModuleBuilder(&zone);
501 WasmFunctionBuilder* f = builder->AddFunction(sigs.i_v()); 506 WasmFunctionBuilder* f = builder->AddFunction(sigs.i_v());
502 ExportAsMain(f); 507 ExportAsMain(f);
503 byte code[] = {WASM_IF_ELSE_I(WASM_I32V(0), WASM_GROW_MEMORY(WASM_I32V(1)), 508 byte code[] = {WASM_IF_ELSE_I(WASM_I32V(0), WASM_GROW_MEMORY(WASM_I32V(1)),
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
712 717
713 TEST(Run_WasmModule_Global_f32) { 718 TEST(Run_WasmModule_Global_f32) {
714 RunWasmModuleGlobalInitTest<float>(kAstF32, -983.9f); 719 RunWasmModuleGlobalInitTest<float>(kAstF32, -983.9f);
715 RunWasmModuleGlobalInitTest<float>(kAstF32, 1122.99f); 720 RunWasmModuleGlobalInitTest<float>(kAstF32, 1122.99f);
716 } 721 }
717 722
718 TEST(Run_WasmModule_Global_f64) { 723 TEST(Run_WasmModule_Global_f64) {
719 RunWasmModuleGlobalInitTest<double>(kAstF64, -833.9); 724 RunWasmModuleGlobalInitTest<double>(kAstF64, -833.9);
720 RunWasmModuleGlobalInitTest<double>(kAstF64, 86374.25); 725 RunWasmModuleGlobalInitTest<double>(kAstF64, 86374.25);
721 } 726 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698