diff options
Diffstat (limited to 'deps/v8/src/optimized-compilation-info.h')
-rw-r--r-- | deps/v8/src/optimized-compilation-info.h | 51 |
1 files changed, 27 insertions, 24 deletions
diff --git a/deps/v8/src/optimized-compilation-info.h b/deps/v8/src/optimized-compilation-info.h index 37232a2f06..69376bc72c 100644 --- a/deps/v8/src/optimized-compilation-info.h +++ b/deps/v8/src/optimized-compilation-info.h @@ -8,8 +8,6 @@ #include <memory> #include "src/bailout-reason.h" -#include "src/code-reference.h" -#include "src/feedback-vector.h" #include "src/frames.h" #include "src/globals.h" #include "src/handles.h" @@ -21,17 +19,17 @@ namespace v8 { namespace internal { -class CoverageInfo; -class DeclarationScope; class DeferredHandles; class FunctionLiteral; class Isolate; class JavaScriptFrame; class JSGlobalObject; -class ParseInfo; -class SourceRangeMap; class Zone; +namespace wasm { +struct WasmCompilationResult; +} + // OptimizedCompilationInfo encapsulates the information needed to compile // optimized code for a given function, and the results of the optimized // compilation. @@ -74,15 +72,11 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { bool is_osr() const { return !osr_offset_.IsNone(); } Handle<SharedFunctionInfo> shared_info() const { return shared_info_; } bool has_shared_info() const { return !shared_info().is_null(); } + Handle<BytecodeArray> bytecode_array() const { return bytecode_array_; } + bool has_bytecode_array() const { return !bytecode_array_.is_null(); } Handle<JSFunction> closure() const { return closure_; } - Handle<Code> code() const { return code_.as_js_code(); } - - wasm::WasmCode* wasm_code() const { - return const_cast<wasm::WasmCode*>(code_.as_wasm_code()); - } + Handle<Code> code() const { return code_; } Code::Kind code_kind() const { return code_kind_; } - uint32_t stub_key() const { return stub_key_; } - void set_stub_key(uint32_t stub_key) { stub_key_ = stub_key; } int32_t builtin_index() const { return builtin_index_; } void set_builtin_index(int32_t index) { builtin_index_ = index; } BailoutId osr_offset() const { return osr_offset_; } @@ -182,24 +176,24 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { // Code getters and setters. - template <typename T> - void SetCode(T code) { - code_ = CodeReference(code); - } + void SetCode(Handle<Code> code) { code_ = code; } + + void SetWasmCompilationResult(std::unique_ptr<wasm::WasmCompilationResult>); + std::unique_ptr<wasm::WasmCompilationResult> ReleaseWasmCompilationResult(); bool has_context() const; - Context* context() const; + Context context() const; bool has_native_context() const; - Context* native_context() const; + Context native_context() const; bool has_global_object() const; - JSGlobalObject* global_object() const; + JSGlobalObject global_object() const; // Accessors for the different compilation modes. bool IsOptimizing() const { return code_kind() == Code::OPTIMIZED_FUNCTION; } bool IsWasm() const { return code_kind() == Code::WASM_FUNCTION; } - bool IsStub() const { + bool IsNotOptimizedFunctionOrWasmFunction() const { return code_kind() != Code::OPTIMIZED_FUNCTION && code_kind() != Code::WASM_FUNCTION; } @@ -238,12 +232,14 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { struct InlinedFunctionHolder { Handle<SharedFunctionInfo> shared_info; + Handle<BytecodeArray> bytecode_array; InliningPosition position; InlinedFunctionHolder(Handle<SharedFunctionInfo> inlined_shared_info, + Handle<BytecodeArray> inlined_bytecode, SourcePosition pos) - : shared_info(inlined_shared_info) { + : shared_info(inlined_shared_info), bytecode_array(inlined_bytecode) { position.position = pos; // initialized when generating the deoptimization literals position.inlined_function_id = DeoptimizationData::kNotInlinedIndex; @@ -259,6 +255,7 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { // Returns the inlining id for source position tracking. int AddInlinedFunction(Handle<SharedFunctionInfo> inlined_function, + Handle<BytecodeArray> inlined_bytecode, SourcePosition pos); std::unique_ptr<char[]> GetDebugName() const; @@ -288,15 +285,21 @@ class V8_EXPORT_PRIVATE OptimizedCompilationInfo final { PoisoningMitigationLevel::kDontPoison; Code::Kind code_kind_; - uint32_t stub_key_ = 0; int32_t builtin_index_ = -1; + // We retain a reference the bytecode array specifically to ensure it doesn't + // get flushed while we are optimizing the code. + Handle<BytecodeArray> bytecode_array_; + Handle<SharedFunctionInfo> shared_info_; Handle<JSFunction> closure_; // The compiled code. - CodeReference code_; + Handle<Code> code_; + + // The WebAssembly compilation result, not published in the NativeModule yet. + std::unique_ptr<wasm::WasmCompilationResult> wasm_compilation_result_; // Entry point when compiling for OSR, {BailoutId::None} otherwise. BailoutId osr_offset_ = BailoutId::None(); |