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

Side by Side Diff: src/wasm/wasm-interpreter.cc

Issue 2209433002: [wasm] Make LoadGlobal/StoreGlobal opcodes match what is coming in binary 0xC. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 4 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 unified diff | Download patch
« no previous file with comments | « src/wasm/ast-decoder.cc ('k') | src/wasm/wasm-macro-gen.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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 "src/wasm/wasm-interpreter.h" 5 #include "src/wasm/wasm-interpreter.h"
6 #include "src/wasm/ast-decoder.h" 6 #include "src/wasm/ast-decoder.h"
7 #include "src/wasm/decoder.h" 7 #include "src/wasm/decoder.h"
8 #include "src/wasm/wasm-external-refs.h" 8 #include "src/wasm/wasm-external-refs.h"
9 #include "src/wasm/wasm-module.h" 9 #include "src/wasm/wasm-module.h"
10 10
(...skipping 1387 matching lines...) Expand 10 before | Expand all | Expand 10 after
1398 1398
1399 DoCall(target, &pc, pc + 1 + operand.length, &limit); 1399 DoCall(target, &pc, pc + 1 + operand.length, &limit);
1400 code = target; 1400 code = target;
1401 decoder.Reset(code->start, code->end); 1401 decoder.Reset(code->start, code->end);
1402 continue; 1402 continue;
1403 } 1403 }
1404 case kExprCallImport: { 1404 case kExprCallImport: {
1405 UNIMPLEMENTED(); 1405 UNIMPLEMENTED();
1406 break; 1406 break;
1407 } 1407 }
1408 case kExprLoadGlobal: { 1408 case kExprGetGlobal: {
1409 GlobalIndexOperand operand(&decoder, code->at(pc)); 1409 GlobalIndexOperand operand(&decoder, code->at(pc));
1410 const WasmGlobal* global = &module()->globals[operand.index]; 1410 const WasmGlobal* global = &module()->globals[operand.index];
1411 byte* ptr = instance()->globals_start + global->offset; 1411 byte* ptr = instance()->globals_start + global->offset;
1412 LocalType type = global->type; 1412 LocalType type = global->type;
1413 WasmVal val; 1413 WasmVal val;
1414 if (type == kAstI32) { 1414 if (type == kAstI32) {
1415 val = WasmVal(*reinterpret_cast<int32_t*>(ptr)); 1415 val = WasmVal(*reinterpret_cast<int32_t*>(ptr));
1416 } else if (type == kAstI64) { 1416 } else if (type == kAstI64) {
1417 val = WasmVal(*reinterpret_cast<int64_t*>(ptr)); 1417 val = WasmVal(*reinterpret_cast<int64_t*>(ptr));
1418 } else if (type == kAstF32) { 1418 } else if (type == kAstF32) {
1419 val = WasmVal(*reinterpret_cast<float*>(ptr)); 1419 val = WasmVal(*reinterpret_cast<float*>(ptr));
1420 } else if (type == kAstF64) { 1420 } else if (type == kAstF64) {
1421 val = WasmVal(*reinterpret_cast<double*>(ptr)); 1421 val = WasmVal(*reinterpret_cast<double*>(ptr));
1422 } else { 1422 } else {
1423 UNREACHABLE(); 1423 UNREACHABLE();
1424 } 1424 }
1425 Push(pc, val); 1425 Push(pc, val);
1426 len = 1 + operand.length; 1426 len = 1 + operand.length;
1427 break; 1427 break;
1428 } 1428 }
1429 case kExprStoreGlobal: { 1429 case kExprSetGlobal: {
1430 GlobalIndexOperand operand(&decoder, code->at(pc)); 1430 GlobalIndexOperand operand(&decoder, code->at(pc));
1431 const WasmGlobal* global = &module()->globals[operand.index]; 1431 const WasmGlobal* global = &module()->globals[operand.index];
1432 byte* ptr = instance()->globals_start + global->offset; 1432 byte* ptr = instance()->globals_start + global->offset;
1433 LocalType type = global->type; 1433 LocalType type = global->type;
1434 WasmVal val = Pop(); 1434 WasmVal val = Pop();
1435 if (type == kAstI32) { 1435 if (type == kAstI32) {
1436 *reinterpret_cast<int32_t*>(ptr) = val.to<int32_t>(); 1436 *reinterpret_cast<int32_t*>(ptr) = val.to<int32_t>();
1437 } else if (type == kAstI64) { 1437 } else if (type == kAstI64) {
1438 *reinterpret_cast<int64_t*>(ptr) = val.to<int64_t>(); 1438 *reinterpret_cast<int64_t*>(ptr) = val.to<int64_t>();
1439 } else if (type == kAstF32) { 1439 } else if (type == kAstF32) {
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
1810 1810
1811 ControlTransferMap WasmInterpreter::ComputeControlTransfersForTesting( 1811 ControlTransferMap WasmInterpreter::ComputeControlTransfersForTesting(
1812 Zone* zone, const byte* start, const byte* end) { 1812 Zone* zone, const byte* start, const byte* end) {
1813 ControlTransfers targets(zone, 0, start, end); 1813 ControlTransfers targets(zone, 0, start, end);
1814 return targets.map_; 1814 return targets.map_;
1815 } 1815 }
1816 1816
1817 } // namespace wasm 1817 } // namespace wasm
1818 } // namespace internal 1818 } // namespace internal
1819 } // namespace v8 1819 } // namespace v8
OLDNEW
« no previous file with comments | « src/wasm/ast-decoder.cc ('k') | src/wasm/wasm-macro-gen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698