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

Side by Side Diff: src/wasm/wasm-module.h

Issue 2403093002: [wasm] Canonicalize function signature indices for matching in indirect calls. (Closed)
Patch Set: Address review comments Created 4 years, 2 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/wasm-interpreter.cc ('k') | src/wasm/wasm-module.cc » ('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 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/handles.h" 11 #include "src/handles.h"
12 #include "src/parsing/preparse-data.h" 12 #include "src/parsing/preparse-data.h"
13 13
14 #include "src/wasm/signature-map.h"
14 #include "src/wasm/wasm-opcodes.h" 15 #include "src/wasm/wasm-opcodes.h"
15 #include "src/wasm/wasm-result.h"
16 16
17 namespace v8 { 17 namespace v8 {
18 namespace internal { 18 namespace internal {
19 19
20 namespace compiler { 20 namespace compiler {
21 class CallDescriptor; 21 class CallDescriptor;
22 class WasmCompilationUnit; 22 class WasmCompilationUnit;
23 } 23 }
24 24
25 namespace wasm { 25 namespace wasm {
26 class ErrorThrower;
27
26 const size_t kMaxModuleSize = 1024 * 1024 * 1024; 28 const size_t kMaxModuleSize = 1024 * 1024 * 1024;
27 const size_t kMaxFunctionSize = 128 * 1024; 29 const size_t kMaxFunctionSize = 128 * 1024;
28 const size_t kMaxStringSize = 256; 30 const size_t kMaxStringSize = 256;
29 const uint32_t kWasmMagic = 0x6d736100; 31 const uint32_t kWasmMagic = 0x6d736100;
30 const uint32_t kWasmVersion = 0x0c; 32 const uint32_t kWasmVersion = 0x0c;
31 33
32 const uint8_t kWasmFunctionTypeForm = 0x40; 34 const uint8_t kWasmFunctionTypeForm = 0x40;
33 const uint8_t kWasmAnyFunctionTypeForm = 0x20; 35 const uint8_t kWasmAnyFunctionTypeForm = 0x20;
34 36
35 enum WasmSectionCode { 37 enum WasmSectionCode {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 uint32_t source_size; // end offset in the module bytes. 129 uint32_t source_size; // end offset in the module bytes.
128 }; 130 };
129 131
130 // Static representation of a wasm indirect call table. 132 // Static representation of a wasm indirect call table.
131 struct WasmIndirectFunctionTable { 133 struct WasmIndirectFunctionTable {
132 uint32_t size; // initial table size. 134 uint32_t size; // initial table size.
133 uint32_t max_size; // maximum table size. 135 uint32_t max_size; // maximum table size.
134 std::vector<int32_t> values; // function table, -1 indicating invalid. 136 std::vector<int32_t> values; // function table, -1 indicating invalid.
135 bool imported; // true if imported. 137 bool imported; // true if imported.
136 bool exported; // true if exported. 138 bool exported; // true if exported.
139 SignatureMap map; // canonicalizing map for sig indexes.
137 }; 140 };
138 141
139 // Static representation of how to initialize a table. 142 // Static representation of how to initialize a table.
140 struct WasmTableInit { 143 struct WasmTableInit {
141 uint32_t table_index; 144 uint32_t table_index;
142 WasmInitExpr offset; 145 WasmInitExpr offset;
143 std::vector<uint32_t> entries; 146 std::vector<uint32_t> entries;
144 }; 147 };
145 148
146 // Static representation of a WASM import. 149 // Static representation of a WASM import.
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 const WasmFunction* function_; 335 const WasmFunction* function_;
333 const WasmModule* module_; 336 const WasmModule* module_;
334 WasmFunctionName(const WasmFunction* function, const ModuleEnv* menv) 337 WasmFunctionName(const WasmFunction* function, const ModuleEnv* menv)
335 : function_(function), module_(menv ? menv->module : nullptr) {} 338 : function_(function), module_(menv ? menv->module : nullptr) {}
336 }; 339 };
337 340
338 std::ostream& operator<<(std::ostream& os, const WasmModule& module); 341 std::ostream& operator<<(std::ostream& os, const WasmModule& module);
339 std::ostream& operator<<(std::ostream& os, const WasmFunction& function); 342 std::ostream& operator<<(std::ostream& os, const WasmFunction& function);
340 std::ostream& operator<<(std::ostream& os, const WasmFunctionName& name); 343 std::ostream& operator<<(std::ostream& os, const WasmFunctionName& name);
341 344
342 typedef Result<const WasmModule*> ModuleResult;
343 typedef Result<WasmFunction*> FunctionResult;
344 typedef std::vector<std::pair<int, int>> FunctionOffsets;
345 typedef Result<FunctionOffsets> FunctionOffsetsResult;
346
347 class WasmCompiledModule : public FixedArray { 345 class WasmCompiledModule : public FixedArray {
348 public: 346 public:
349 static WasmCompiledModule* cast(Object* fixed_array) { 347 static WasmCompiledModule* cast(Object* fixed_array) {
350 SLOW_DCHECK(IsWasmCompiledModule(fixed_array)); 348 SLOW_DCHECK(IsWasmCompiledModule(fixed_array));
351 return reinterpret_cast<WasmCompiledModule*>(fixed_array); 349 return reinterpret_cast<WasmCompiledModule*>(fixed_array);
352 } 350 }
353 351
354 #define WCM_OBJECT_OR_WEAK(TYPE, NAME, ID) \ 352 #define WCM_OBJECT_OR_WEAK(TYPE, NAME, ID) \
355 Handle<TYPE> NAME() const { return handle(ptr_to_##NAME()); } \ 353 Handle<TYPE> NAME() const { return handle(ptr_to_##NAME()); } \
356 \ 354 \
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 int instance_count); 546 int instance_count);
549 void ValidateModuleState(Isolate* isolate, Handle<JSObject> module_obj); 547 void ValidateModuleState(Isolate* isolate, Handle<JSObject> module_obj);
550 void ValidateOrphanedInstance(Isolate* isolate, Handle<JSObject> instance); 548 void ValidateOrphanedInstance(Isolate* isolate, Handle<JSObject> instance);
551 549
552 } // namespace testing 550 } // namespace testing
553 } // namespace wasm 551 } // namespace wasm
554 } // namespace internal 552 } // namespace internal
555 } // namespace v8 553 } // namespace v8
556 554
557 #endif // V8_WASM_MODULE_H_ 555 #endif // V8_WASM_MODULE_H_
OLDNEW
« no previous file with comments | « src/wasm/wasm-interpreter.cc ('k') | src/wasm/wasm-module.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698