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

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

Issue 2731523005: [wasm] Lazy compilation for asm.js (Closed)
Patch Set: [wasm] Lazy compilation for asm.js Created 3 years, 9 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-module.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/debug/debug.h" 8 #include "src/debug/debug.h"
9 #include "src/debug/interface-types.h" 9 #include "src/debug/interface-types.h"
10 #include "src/objects.h" 10 #include "src/objects.h"
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 }; 157 };
158 158
159 // Information shared by all WasmCompiledModule objects for the same module. 159 // Information shared by all WasmCompiledModule objects for the same module.
160 class WasmSharedModuleData : public FixedArray { 160 class WasmSharedModuleData : public FixedArray {
161 enum Fields { 161 enum Fields {
162 kModuleWrapper, 162 kModuleWrapper,
163 kModuleBytes, 163 kModuleBytes,
164 kScript, 164 kScript,
165 kAsmJsOffsetTable, 165 kAsmJsOffsetTable,
166 kBreakPointInfos, 166 kBreakPointInfos,
167 kLazyCompilationOrchestrator,
167 kFieldCount 168 kFieldCount
168 }; 169 };
169 170
170 public: 171 public:
171 DECLARE_CASTS(WasmSharedModuleData); 172 DECLARE_CASTS(WasmSharedModuleData);
172 173
173 DECLARE_GETTER(module, wasm::WasmModule); 174 DECLARE_GETTER(module, wasm::WasmModule);
174 DECLARE_OPTIONAL_ACCESSORS(module_bytes, SeqOneByteString); 175 DECLARE_OPTIONAL_ACCESSORS(module_bytes, SeqOneByteString);
175 DECLARE_GETTER(script, Script); 176 DECLARE_GETTER(script, Script);
176 DECLARE_OPTIONAL_ACCESSORS(asm_js_offset_table, ByteArray); 177 DECLARE_OPTIONAL_ACCESSORS(asm_js_offset_table, ByteArray);
177 DECLARE_OPTIONAL_GETTER(breakpoint_infos, FixedArray); 178 DECLARE_OPTIONAL_GETTER(breakpoint_infos, FixedArray);
178 179
179 static Handle<WasmSharedModuleData> New( 180 static Handle<WasmSharedModuleData> New(
180 Isolate* isolate, Handle<Foreign> module_wrapper, 181 Isolate* isolate, Handle<Foreign> module_wrapper,
181 Handle<SeqOneByteString> module_bytes, Handle<Script> script, 182 Handle<SeqOneByteString> module_bytes, Handle<Script> script,
182 Handle<ByteArray> asm_js_offset_table); 183 Handle<ByteArray> asm_js_offset_table);
183 184
184 // Check whether this module was generated from asm.js source. 185 // Check whether this module was generated from asm.js source.
185 bool is_asm_js(); 186 bool is_asm_js();
186 187
187 static void ReinitializeAfterDeserialization(Isolate*, 188 static void ReinitializeAfterDeserialization(Isolate*,
188 Handle<WasmSharedModuleData>); 189 Handle<WasmSharedModuleData>);
189 190
190 static void AddBreakpoint(Handle<WasmSharedModuleData>, int position, 191 static void AddBreakpoint(Handle<WasmSharedModuleData>, int position,
191 Handle<Object> break_point_object); 192 Handle<Object> break_point_object);
192 193
193 static void SetBreakpointsOnNewInstance(Handle<WasmSharedModuleData>, 194 static void SetBreakpointsOnNewInstance(Handle<WasmSharedModuleData>,
194 Handle<WasmInstanceObject>); 195 Handle<WasmInstanceObject>);
196
197 static void PrepareForLazyCompilation(Handle<WasmSharedModuleData>);
198
199 private:
200 DECLARE_OPTIONAL_GETTER(lazy_compilation_orchestrator, Foreign);
201 friend class WasmCompiledModule;
195 }; 202 };
196 203
197 class WasmCompiledModule : public FixedArray { 204 class WasmCompiledModule : public FixedArray {
198 public: 205 public:
199 enum Fields { kFieldCount }; 206 enum Fields { kFieldCount };
200 207
201 static WasmCompiledModule* cast(Object* fixed_array) { 208 static WasmCompiledModule* cast(Object* fixed_array) {
202 SLOW_DCHECK(IsWasmCompiledModule(fixed_array)); 209 SLOW_DCHECK(IsWasmCompiledModule(fixed_array));
203 return reinterpret_cast<WasmCompiledModule*>(fixed_array); 210 return reinterpret_cast<WasmCompiledModule*>(fixed_array);
204 } 211 }
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 // location inside the same function. 400 // location inside the same function.
394 // If it points outside a function, or behind the last breakable location, 401 // If it points outside a function, or behind the last breakable location,
395 // this function returns false and does not set any breakpoint. 402 // this function returns false and does not set any breakpoint.
396 static bool SetBreakPoint(Handle<WasmCompiledModule>, int* position, 403 static bool SetBreakPoint(Handle<WasmCompiledModule>, int* position,
397 Handle<Object> break_point_object); 404 Handle<Object> break_point_object);
398 405
399 // Return an empty handle if no breakpoint is hit at that location, or a 406 // Return an empty handle if no breakpoint is hit at that location, or a
400 // FixedArray with all hit breakpoint objects. 407 // FixedArray with all hit breakpoint objects.
401 MaybeHandle<FixedArray> CheckBreakPoints(int position); 408 MaybeHandle<FixedArray> CheckBreakPoints(int position);
402 409
410 // Compile lazily the function called in the given caller code object at the
411 // given offset.
412 // If the called function cannot be termined from the caller (indirect call /
413 // exported function), func_index must be set.
414 // If patch_caller is set, then at least the given all call site in the caller
415 // will be patched, potentially more call sites are updated.
416 // Returns the Code to be called at the given callsite, or an empty Handle if
417 // an error occured during lazy compilation. In this case, an exception has
418 // been set on the isolate.
419 static MaybeHandle<Code> CompileLazy(Isolate*, Handle<WasmInstanceObject>,
420 Handle<Code> caller, int offset,
421 int func_index, bool patch_caller);
422
403 private: 423 private:
404 void InitId(); 424 void InitId();
405 425
406 DISALLOW_IMPLICIT_CONSTRUCTORS(WasmCompiledModule); 426 DISALLOW_IMPLICIT_CONSTRUCTORS(WasmCompiledModule);
407 }; 427 };
408 428
409 class WasmDebugInfo : public FixedArray { 429 class WasmDebugInfo : public FixedArray {
410 public: 430 public:
411 enum Fields { 431 enum Fields {
412 kInstance, 432 kInstance,
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 }; 521 };
502 }; 522 };
503 523
504 #undef DECLARE_ACCESSORS 524 #undef DECLARE_ACCESSORS
505 #undef DECLARE_OPTIONAL_ACCESSORS 525 #undef DECLARE_OPTIONAL_ACCESSORS
506 526
507 } // namespace internal 527 } // namespace internal
508 } // namespace v8 528 } // namespace v8
509 529
510 #endif // V8_WASM_OBJECTS_H_ 530 #endif // V8_WASM_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/wasm/wasm-module.cc ('k') | src/wasm/wasm-objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698