OLD | NEW |
---|---|
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 #ifndef V8_WASM_MODULE_H_ | 5 #ifndef V8_WASM_MODULE_H_ |
6 #define V8_WASM_MODULE_H_ | 6 #define V8_WASM_MODULE_H_ |
7 | 7 |
8 #include <memory> | 8 #include <memory> |
9 | 9 |
10 #include "src/api.h" | 10 #include "src/api.h" |
11 #include "src/globals.h" | 11 #include "src/globals.h" |
12 #include "src/handles.h" | 12 #include "src/handles.h" |
13 #include "src/parsing/preparse-data.h" | 13 #include "src/parsing/preparse-data.h" |
14 #include "src/trap-handler/trap-handler.h" | |
14 | 15 |
15 #include "src/wasm/managed.h" | 16 #include "src/wasm/managed.h" |
16 #include "src/wasm/signature-map.h" | 17 #include "src/wasm/signature-map.h" |
17 #include "src/wasm/wasm-opcodes.h" | 18 #include "src/wasm/wasm-opcodes.h" |
18 | 19 |
19 namespace v8 { | 20 namespace v8 { |
20 namespace internal { | 21 namespace internal { |
21 | 22 |
22 class WasmCompiledModule; | 23 class WasmCompiledModule; |
23 class WasmDebugInfo; | 24 class WasmDebugInfo; |
24 class WasmModuleObject; | 25 class WasmModuleObject; |
25 class WasmInstanceObject; | 26 class WasmInstanceObject; |
26 | 27 |
27 namespace compiler { | 28 namespace compiler { |
28 class CallDescriptor; | 29 class CallDescriptor; |
29 class WasmCompilationUnit; | 30 class WasmCompilationUnit; |
30 } | 31 } |
31 | 32 |
33 using trap_handler::ProtectedInstructionData; | |
titzer
2016/11/30 17:31:12
Is it necessary to add these here?
Eric Holk
2016/11/30 20:16:20
No. Done.
| |
34 using trap_handler::ProtectedInstructionList; | |
35 | |
32 namespace wasm { | 36 namespace wasm { |
33 class ErrorThrower; | 37 class ErrorThrower; |
34 | 38 |
35 const size_t kMaxModuleSize = 1024 * 1024 * 1024; | 39 const size_t kMaxModuleSize = 1024 * 1024 * 1024; |
36 const size_t kMaxFunctionSize = 128 * 1024; | 40 const size_t kMaxFunctionSize = 128 * 1024; |
37 const size_t kMaxStringSize = 256; | 41 const size_t kMaxStringSize = 256; |
38 const uint32_t kWasmMagic = 0x6d736100; | 42 const uint32_t kWasmMagic = 0x6d736100; |
39 const uint32_t kWasmVersion = 0x0d; | 43 const uint32_t kWasmVersion = 0x0d; |
40 | 44 |
41 const uint8_t kWasmFunctionTypeForm = 0x60; | 45 const uint8_t kWasmFunctionTypeForm = 0x60; |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
171 // Static representation of a WASM export. | 175 // Static representation of a WASM export. |
172 struct WasmExport { | 176 struct WasmExport { |
173 uint32_t name_length; // length in bytes of the exported name. | 177 uint32_t name_length; // length in bytes of the exported name. |
174 uint32_t name_offset; // offset in module bytes of the name to export. | 178 uint32_t name_offset; // offset in module bytes of the name to export. |
175 WasmExternalKind kind; // kind of the export. | 179 WasmExternalKind kind; // kind of the export. |
176 uint32_t index; // index into the respective space. | 180 uint32_t index; // index into the respective space. |
177 }; | 181 }; |
178 | 182 |
179 enum ModuleOrigin { kWasmOrigin, kAsmJsOrigin }; | 183 enum ModuleOrigin { kWasmOrigin, kAsmJsOrigin }; |
180 | 184 |
185 enum TrapFields { kTrapCodeOffset, kTrapLandingOffset, kTrapDataSize }; | |
titzer
2016/11/30 17:31:12
Should this move to wasm-objects.h? I think it ref
titzer
2016/11/30 17:31:13
Maybe this fits better in wasm-objects.h? As I thi
Eric Holk
2016/11/30 20:16:20
I moved it to objects.h, because the protected ins
| |
186 | |
181 // Static representation of a module. | 187 // Static representation of a module. |
182 struct V8_EXPORT_PRIVATE WasmModule { | 188 struct V8_EXPORT_PRIVATE WasmModule { |
183 static const uint32_t kPageSize = 0x10000; // Page size, 64kb. | 189 static const uint32_t kPageSize = 0x10000; // Page size, 64kb. |
184 static const uint32_t kMinMemPages = 1; // Minimum memory size = 64kb | 190 static const uint32_t kMinMemPages = 1; // Minimum memory size = 64kb |
185 static const size_t kV8MaxPages = 16384; // Maximum memory size = 1gb | 191 static const size_t kV8MaxPages = 16384; // Maximum memory size = 1gb |
186 static const size_t kSpecMaxPages = 65536; // Maximum according to the spec | 192 static const size_t kSpecMaxPages = 65536; // Maximum according to the spec |
187 static const size_t kV8MaxTableSize = 16 * 1024 * 1024; | 193 static const size_t kV8MaxTableSize = 16 * 1024 * 1024; |
188 | 194 |
189 Zone* owned_zone; | 195 Zone* owned_zone; |
190 const byte* module_start = nullptr; // starting address for the module bytes | 196 const byte* module_start = nullptr; // starting address for the module bytes |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
445 void ValidateModuleState(Isolate* isolate, Handle<WasmModuleObject> module_obj); | 451 void ValidateModuleState(Isolate* isolate, Handle<WasmModuleObject> module_obj); |
446 void ValidateOrphanedInstance(Isolate* isolate, | 452 void ValidateOrphanedInstance(Isolate* isolate, |
447 Handle<WasmInstanceObject> instance); | 453 Handle<WasmInstanceObject> instance); |
448 | 454 |
449 } // namespace testing | 455 } // namespace testing |
450 } // namespace wasm | 456 } // namespace wasm |
451 } // namespace internal | 457 } // namespace internal |
452 } // namespace v8 | 458 } // namespace v8 |
453 | 459 |
454 #endif // V8_WASM_MODULE_H_ | 460 #endif // V8_WASM_MODULE_H_ |
OLD | NEW |