summaryrefslogtreecommitdiff
path: root/deps/v8/src/optimized-compilation-info.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/optimized-compilation-info.h')
-rw-r--r--deps/v8/src/optimized-compilation-info.h51
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();