OLD | NEW |
---|---|
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/assembler-inl.h" | 5 #include "src/assembler-inl.h" |
6 #include "src/assert-scope.h" | 6 #include "src/assert-scope.h" |
7 #include "src/compiler/wasm-compiler.h" | 7 #include "src/compiler/wasm-compiler.h" |
8 #include "src/debug/debug.h" | 8 #include "src/debug/debug.h" |
9 #include "src/factory.h" | 9 #include "src/factory.h" |
10 #include "src/frames-inl.h" | 10 #include "src/frames-inl.h" |
(...skipping 16 matching lines...) Expand all Loading... | |
27 WasmInterpreter interpreter_; | 27 WasmInterpreter interpreter_; |
28 Isolate *isolate_; | 28 Isolate *isolate_; |
29 | 29 |
30 public: | 30 public: |
31 // Initialize in the right order, using helper methods to make this possible. | 31 // Initialize in the right order, using helper methods to make this possible. |
32 // WasmInterpreter has to be allocated in place, since it is not movable. | 32 // WasmInterpreter has to be allocated in place, since it is not movable. |
33 InterpreterHandle(Isolate *isolate, WasmDebugInfo *debug_info) | 33 InterpreterHandle(Isolate *isolate, WasmDebugInfo *debug_info) |
34 : instance_(debug_info->wasm_instance()->compiled_module()->module()), | 34 : instance_(debug_info->wasm_instance()->compiled_module()->module()), |
35 interpreter_(GetBytesEnv(&instance_, debug_info), &allocator_), | 35 interpreter_(GetBytesEnv(&instance_, debug_info), &allocator_), |
36 isolate_(isolate) { | 36 isolate_(isolate) { |
37 Handle<JSArrayBuffer> mem_buffer = | 37 if (debug_info->wasm_instance()->has_memory_buffer()) { |
38 handle(debug_info->wasm_instance()->memory_buffer(), isolate); | 38 JSArrayBuffer *mem_buffer = debug_info->wasm_instance()->memory_buffer(); |
39 if (mem_buffer->IsUndefined(isolate)) { | 39 instance_.mem_start = |
40 reinterpret_cast<byte *>(mem_buffer->backing_store()); | |
titzer
2017/01/16 13:55:27
byte* instead of byte *
(I guess clang-format is
Clemens Hammacher
2017/01/16 18:51:30
Fixed with http://crrev.com/2635003002 and http://
| |
41 CHECK(mem_buffer->byte_length()->ToUint32(&instance_.mem_size)); | |
42 } else { | |
40 DCHECK_EQ(0, instance_.module->min_mem_pages); | 43 DCHECK_EQ(0, instance_.module->min_mem_pages); |
41 instance_.mem_start = nullptr; | 44 instance_.mem_start = nullptr; |
42 instance_.mem_size = 0; | 45 instance_.mem_size = 0; |
43 } else { | |
44 instance_.mem_start = | |
45 reinterpret_cast<byte *>(mem_buffer->backing_store()); | |
46 CHECK(mem_buffer->byte_length()->ToUint32(&instance_.mem_size)); | |
47 } | 46 } |
48 } | 47 } |
49 | 48 |
50 static ModuleBytesEnv GetBytesEnv(WasmInstance *instance, | 49 static ModuleBytesEnv GetBytesEnv(WasmInstance *instance, |
51 WasmDebugInfo *debug_info) { | 50 WasmDebugInfo *debug_info) { |
52 // Return raw pointer into heap. The WasmInterpreter will make its own copy | 51 // Return raw pointer into heap. The WasmInterpreter will make its own copy |
53 // of this data anyway, and there is no heap allocation in-between. | 52 // of this data anyway, and there is no heap allocation in-between. |
54 SeqOneByteString *bytes_str = | 53 SeqOneByteString *bytes_str = |
55 debug_info->wasm_instance()->compiled_module()->module_bytes(); | 54 debug_info->wasm_instance()->compiled_module()->module_bytes(); |
56 Vector<const byte> bytes(bytes_str->GetChars(), bytes_str->length()); | 55 Vector<const byte> bytes(bytes_str->GetChars(), bytes_str->length()); |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
307 return interp_handle->GetInterpretedStack(frame_pointer); | 306 return interp_handle->GetInterpretedStack(frame_pointer); |
308 } | 307 } |
309 | 308 |
310 std::unique_ptr<wasm::InterpretedFrame> WasmDebugInfo::GetInterpretedFrame( | 309 std::unique_ptr<wasm::InterpretedFrame> WasmDebugInfo::GetInterpretedFrame( |
311 Handle<WasmDebugInfo> debug_info, Address frame_pointer, int idx) { | 310 Handle<WasmDebugInfo> debug_info, Address frame_pointer, int idx) { |
312 InterpreterHandle *interp_handle = | 311 InterpreterHandle *interp_handle = |
313 GetOrCreateInterpreterHandle(debug_info->GetIsolate(), debug_info); | 312 GetOrCreateInterpreterHandle(debug_info->GetIsolate(), debug_info); |
314 return std::unique_ptr<wasm::InterpretedFrame>(new wasm::InterpretedFrame( | 313 return std::unique_ptr<wasm::InterpretedFrame>(new wasm::InterpretedFrame( |
315 interp_handle->GetInterpretedFrame(frame_pointer, idx))); | 314 interp_handle->GetInterpretedFrame(frame_pointer, idx))); |
316 } | 315 } |
OLD | NEW |