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

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

Issue 2522953002: [wasm] Move asm.js offset table to compiled module (Closed)
Patch Set: rebase Created 4 years 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-module-builder.cc ('k') | src/wasm/wasm-objects.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 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 #ifndef V8_WASM_OBJECTS_H_ 5 #ifndef V8_WASM_OBJECTS_H_
6 #define V8_WASM_OBJECTS_H_ 6 #define V8_WASM_OBJECTS_H_
7 7
8 #include "src/objects-inl.h" 8 #include "src/objects-inl.h"
9 #include "src/wasm/managed.h" 9 #include "src/wasm/managed.h"
10 10
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 Handle<TYPE> NAME() const { \ 196 Handle<TYPE> NAME() const { \
197 return handle(TYPE::cast(weak_##NAME()->value())); \ 197 return handle(TYPE::cast(weak_##NAME()->value())); \
198 } 198 }
199 199
200 #define CORE_WCM_PROPERTY_TABLE(MACRO) \ 200 #define CORE_WCM_PROPERTY_TABLE(MACRO) \
201 MACRO(OBJECT, FixedArray, code_table) \ 201 MACRO(OBJECT, FixedArray, code_table) \
202 MACRO(OBJECT, Foreign, module_wrapper) \ 202 MACRO(OBJECT, Foreign, module_wrapper) \
203 /* For debugging: */ \ 203 /* For debugging: */ \
204 MACRO(OBJECT, SeqOneByteString, module_bytes) \ 204 MACRO(OBJECT, SeqOneByteString, module_bytes) \
205 MACRO(OBJECT, Script, script) \ 205 MACRO(OBJECT, Script, script) \
206 MACRO(OBJECT, ByteArray, asm_js_offset_tables) \ 206 MACRO(OBJECT, ByteArray, asm_js_offset_table) \
207 /* End of debugging stuff */ \ 207 /* End of debugging stuff */ \
208 MACRO(OBJECT, FixedArray, function_tables) \ 208 MACRO(OBJECT, FixedArray, function_tables) \
209 MACRO(OBJECT, FixedArray, empty_function_tables) \ 209 MACRO(OBJECT, FixedArray, empty_function_tables) \
210 MACRO(OBJECT, JSArrayBuffer, memory) \ 210 MACRO(OBJECT, JSArrayBuffer, memory) \
211 MACRO(SMALL_NUMBER, uint32_t, min_mem_pages) \ 211 MACRO(SMALL_NUMBER, uint32_t, min_mem_pages) \
212 MACRO(SMALL_NUMBER, uint32_t, max_mem_pages) \ 212 MACRO(SMALL_NUMBER, uint32_t, max_mem_pages) \
213 MACRO(WEAK_LINK, WasmCompiledModule, next_instance) \ 213 MACRO(WEAK_LINK, WasmCompiledModule, next_instance) \
214 MACRO(WEAK_LINK, WasmCompiledModule, prev_instance) \ 214 MACRO(WEAK_LINK, WasmCompiledModule, prev_instance) \
215 MACRO(WEAK_LINK, JSObject, owning_instance) \ 215 MACRO(WEAK_LINK, JSObject, owning_instance) \
216 MACRO(WEAK_LINK, JSObject, wasm_module) 216 MACRO(WEAK_LINK, JSObject, wasm_module)
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 // Returns the function containing the given byte offset. 284 // Returns the function containing the given byte offset.
285 // Returns -1 if the byte offset is not contained in any function of this 285 // Returns -1 if the byte offset is not contained in any function of this
286 // module. 286 // module.
287 int GetContainingFunction(uint32_t byte_offset) const; 287 int GetContainingFunction(uint32_t byte_offset) const;
288 288
289 // Translate from byte offset in the module to function number and byte offset 289 // Translate from byte offset in the module to function number and byte offset
290 // within that function, encoded as line and column in the position info. 290 // within that function, encoded as line and column in the position info.
291 // Returns true if the position is valid inside this module, false otherwise. 291 // Returns true if the position is valid inside this module, false otherwise.
292 bool GetPositionInfo(uint32_t position, Script::PositionInfo* info); 292 bool GetPositionInfo(uint32_t position, Script::PositionInfo* info);
293 293
294 // Get the asm.js source position from a byte offset.
295 // Must only be called if the associated wasm object was created from asm.js.
296 static int GetAsmJsSourcePosition(Handle<WasmCompiledModule> debug_info,
297 uint32_t func_index, uint32_t byte_offset);
298
294 private: 299 private:
295 void InitId(); 300 void InitId();
296 301
297 DISALLOW_IMPLICIT_CONSTRUCTORS(WasmCompiledModule); 302 DISALLOW_IMPLICIT_CONSTRUCTORS(WasmCompiledModule);
298 }; 303 };
299 304
305 // TODO(clemensh): Extend this object for breakpoint support, or remove it.
300 class WasmDebugInfo : public FixedArray { 306 class WasmDebugInfo : public FixedArray {
301 public: 307 public:
302 enum class Fields { kFieldCount }; 308 enum class Fields { kFieldCount };
303 309
304 static Handle<WasmDebugInfo> New(Handle<WasmInstanceObject> instance); 310 static Handle<WasmDebugInfo> New(Handle<WasmInstanceObject> instance);
305 311
306 static bool IsDebugInfo(Object* object); 312 static bool IsDebugInfo(Object* object);
307 static WasmDebugInfo* cast(Object* object); 313 static WasmDebugInfo* cast(Object* object);
308 314
309 WasmInstanceObject* wasm_instance(); 315 WasmInstanceObject* wasm_instance();
310
311 bool SetBreakPoint(int byte_offset);
312
313 // Get the Script for the specified function.
314 static Script* GetFunctionScript(Handle<WasmDebugInfo> debug_info,
315 int func_index);
316
317 // Disassemble the specified function from this module.
318 static Handle<String> DisassembleFunction(Handle<WasmDebugInfo> debug_info,
319 int func_index);
320
321 // Get the offset table for the specified function, mapping from byte offsets
322 // to position in the disassembly.
323 // Returns an array with three entries per instruction: byte offset, line and
324 // column.
325 static Handle<FixedArray> GetFunctionOffsetTable(
326 Handle<WasmDebugInfo> debug_info, int func_index);
327
328 // Get the asm.js source position from a byte offset.
329 // Must only be called if the associated wasm object was created from asm.js.
330 static int GetAsmJsSourcePosition(Handle<WasmDebugInfo> debug_info,
331 int func_index, int byte_offset);
332 }; 316 };
333 317
334 class WasmInstanceWrapper : public FixedArray { 318 class WasmInstanceWrapper : public FixedArray {
335 public: 319 public:
336 static Handle<WasmInstanceWrapper> New(Isolate* isolate, 320 static Handle<WasmInstanceWrapper> New(Isolate* isolate,
337 Handle<WasmInstanceObject> instance); 321 Handle<WasmInstanceObject> instance);
338 static WasmInstanceWrapper* cast(Object* fixed_array) { 322 static WasmInstanceWrapper* cast(Object* fixed_array) {
339 SLOW_DCHECK(IsWasmInstanceWrapper(fixed_array)); 323 SLOW_DCHECK(IsWasmInstanceWrapper(fixed_array));
340 return reinterpret_cast<WasmInstanceWrapper*>(fixed_array); 324 return reinterpret_cast<WasmInstanceWrapper*>(fixed_array);
341 } 325 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 }; 370 };
387 }; 371 };
388 372
389 #undef DECLARE_ACCESSORS 373 #undef DECLARE_ACCESSORS
390 #undef DECLARE_OPTIONAL_ACCESSORS 374 #undef DECLARE_OPTIONAL_ACCESSORS
391 375
392 } // namespace internal 376 } // namespace internal
393 } // namespace v8 377 } // namespace v8
394 378
395 #endif // V8_WASM_OBJECTS_H_ 379 #endif // V8_WASM_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/wasm/wasm-module-builder.cc ('k') | src/wasm/wasm-objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698