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

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

Issue 2510673002: [wasm] Use more precise types for some WASM objects. (Closed)
Patch Set: Address review comment. 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 | « src/wasm/wasm-js.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/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 14
15 #include "src/wasm/managed.h" 15 #include "src/wasm/managed.h"
16 #include "src/wasm/signature-map.h" 16 #include "src/wasm/signature-map.h"
17 #include "src/wasm/wasm-opcodes.h" 17 #include "src/wasm/wasm-opcodes.h"
18 18
19 namespace v8 { 19 namespace v8 {
20 namespace internal { 20 namespace internal {
21 21
22 class WasmCompiledModule; 22 class WasmCompiledModule;
23 class WasmDebugInfo; 23 class WasmDebugInfo;
24 class WasmModuleObject; 24 class WasmModuleObject;
25 class WasmInstanceObject;
25 26
26 namespace compiler { 27 namespace compiler {
27 class CallDescriptor; 28 class CallDescriptor;
28 class WasmCompilationUnit; 29 class WasmCompilationUnit;
29 } 30 }
30 31
31 namespace wasm { 32 namespace wasm {
32 class ErrorThrower; 33 class ErrorThrower;
33 34
34 const size_t kMaxModuleSize = 1024 * 1024 * 1024; 35 const size_t kMaxModuleSize = 1024 * 1024 * 1024;
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 return GetNameOrNull(function->name_offset, function->name_length); 249 return GetNameOrNull(function->name_offset, function->name_length);
249 } 250 }
250 251
251 // Checks the given offset range is contained within the module bytes. 252 // Checks the given offset range is contained within the module bytes.
252 bool BoundsCheck(uint32_t start, uint32_t end) const { 253 bool BoundsCheck(uint32_t start, uint32_t end) const {
253 size_t size = module_end - module_start; 254 size_t size = module_end - module_start;
254 return start <= size && end <= size; 255 return start <= size && end <= size;
255 } 256 }
256 257
257 // Creates a new instantiation of the module in the given isolate. 258 // Creates a new instantiation of the module in the given isolate.
258 static MaybeHandle<JSObject> Instantiate(Isolate* isolate, 259 static MaybeHandle<WasmInstanceObject> Instantiate(
259 ErrorThrower* thrower, 260 Isolate* isolate, ErrorThrower* thrower, Handle<JSObject> wasm_module,
260 Handle<JSObject> wasm_module, 261 Handle<JSReceiver> ffi, Handle<JSArrayBuffer> memory);
261 Handle<JSReceiver> ffi,
262 Handle<JSArrayBuffer> memory);
263 262
264 MaybeHandle<WasmCompiledModule> CompileFunctions( 263 MaybeHandle<WasmCompiledModule> CompileFunctions(
265 Isolate* isolate, Handle<Managed<WasmModule>> module_wrapper, 264 Isolate* isolate, Handle<Managed<WasmModule>> module_wrapper,
266 ErrorThrower* thrower) const; 265 ErrorThrower* thrower) const;
267 }; 266 };
268 267
269 typedef Managed<WasmModule> WasmModuleWrapper; 268 typedef Managed<WasmModule> WasmModuleWrapper;
270 269
271 // An instantiated WASM module, including memory, function table, etc. 270 // An instantiated WASM module, including memory, function table, etc.
272 struct WasmInstance { 271 struct WasmInstance {
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 // Return the binary source bytes of a wasm module. 362 // Return the binary source bytes of a wasm module.
364 Handle<SeqOneByteString> GetWasmBytes(Handle<JSObject> wasm); 363 Handle<SeqOneByteString> GetWasmBytes(Handle<JSObject> wasm);
365 364
366 // Get the debug info associated with the given wasm object. 365 // Get the debug info associated with the given wasm object.
367 // If no debug info exists yet, it is created automatically. 366 // If no debug info exists yet, it is created automatically.
368 Handle<WasmDebugInfo> GetDebugInfo(Handle<JSObject> wasm); 367 Handle<WasmDebugInfo> GetDebugInfo(Handle<JSObject> wasm);
369 368
370 // Return the number of functions in the given wasm object. 369 // Return the number of functions in the given wasm object.
371 int GetNumberOfFunctions(Handle<JSObject> wasm); 370 int GetNumberOfFunctions(Handle<JSObject> wasm);
372 371
373 // Create and export JSFunction
374 Handle<JSFunction> WrapExportCodeAsJSFunction(Isolate* isolate,
375 Handle<Code> export_code,
376 Handle<String> name,
377 FunctionSig* sig, int func_index,
378 Handle<JSObject> instance);
379
380 // Check whether the given object represents a WebAssembly.Instance instance. 372 // Check whether the given object represents a WebAssembly.Instance instance.
381 // This checks the number and type of internal fields, so it's not 100 percent 373 // This checks the number and type of internal fields, so it's not 100 percent
382 // secure. If it turns out that we need more complete checks, we could add a 374 // secure. If it turns out that we need more complete checks, we could add a
383 // special marker as internal field, which will definitely never occur anywhere 375 // special marker as internal field, which will definitely never occur anywhere
384 // else. 376 // else.
385 bool IsWasmInstance(Object* instance); 377 bool IsWasmInstance(Object* instance);
386 378
387 // Return the compiled module object for this WASM instance. 379 // Return the compiled module object for this WASM instance.
388 WasmCompiledModule* GetCompiledModule(Object* wasm_instance); 380 WasmCompiledModule* GetCompiledModule(Object* wasm_instance);
389 381
(...skipping 25 matching lines...) Expand all
415 int func_index); 407 int func_index);
416 408
417 // Translate from byte offset in the module to function number and byte offset 409 // Translate from byte offset in the module to function number and byte offset
418 // within that function, encoded as line and column in the position info. 410 // within that function, encoded as line and column in the position info.
419 bool GetPositionInfo(Handle<WasmCompiledModule> compiled_module, 411 bool GetPositionInfo(Handle<WasmCompiledModule> compiled_module,
420 uint32_t position, Script::PositionInfo* info); 412 uint32_t position, Script::PositionInfo* info);
421 413
422 // Assumed to be called with a code object associated to a wasm module instance. 414 // Assumed to be called with a code object associated to a wasm module instance.
423 // Intended to be called from runtime functions. 415 // Intended to be called from runtime functions.
424 // Returns nullptr on failing to get owning instance. 416 // Returns nullptr on failing to get owning instance.
425 Object* GetOwningWasmInstance(Code* code); 417 WasmInstanceObject* GetOwningWasmInstance(Code* code);
426 418
427 MaybeHandle<JSArrayBuffer> GetInstanceMemory(Isolate* isolate, 419 MaybeHandle<JSArrayBuffer> GetInstanceMemory(
428 Handle<JSObject> instance); 420 Isolate* isolate, Handle<WasmInstanceObject> instance);
429 421
430 int32_t GetInstanceMemorySize(Isolate* isolate, Handle<JSObject> instance); 422 int32_t GetInstanceMemorySize(Isolate* isolate,
423 Handle<WasmInstanceObject> instance);
431 424
432 int32_t GrowInstanceMemory(Isolate* isolate, Handle<JSObject> instance, 425 int32_t GrowInstanceMemory(Isolate* isolate,
433 uint32_t pages); 426 Handle<WasmInstanceObject> instance, uint32_t pages);
434 427
435 void UpdateDispatchTables(Isolate* isolate, Handle<FixedArray> dispatch_tables, 428 void UpdateDispatchTables(Isolate* isolate, Handle<FixedArray> dispatch_tables,
436 int index, Handle<JSFunction> js_function); 429 int index, Handle<JSFunction> js_function);
437 430
438 namespace testing { 431 namespace testing {
439 432
440 void ValidateInstancesChain(Isolate* isolate, Handle<JSObject> wasm_module, 433 void ValidateInstancesChain(Isolate* isolate,
434 Handle<WasmModuleObject> module_obj,
441 int instance_count); 435 int instance_count);
442 void ValidateModuleState(Isolate* isolate, Handle<JSObject> wasm_module); 436 void ValidateModuleState(Isolate* isolate, Handle<WasmModuleObject> module_obj);
443 void ValidateOrphanedInstance(Isolate* isolate, Handle<JSObject> instance); 437 void ValidateOrphanedInstance(Isolate* isolate,
438 Handle<WasmInstanceObject> instance);
444 439
445 } // namespace testing 440 } // namespace testing
446 } // namespace wasm 441 } // namespace wasm
447 } // namespace internal 442 } // namespace internal
448 } // namespace v8 443 } // namespace v8
449 444
450 #endif // V8_WASM_MODULE_H_ 445 #endif // V8_WASM_MODULE_H_
OLDNEW
« no previous file with comments | « src/wasm/wasm-js.cc ('k') | src/wasm/wasm-module.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698