Index: runtime/vm/deopt_instructions.h |
diff --git a/runtime/vm/deopt_instructions.h b/runtime/vm/deopt_instructions.h |
index 79c206e3a88bef172348039c1695881632d4796b..acbf92bb57892d79d0cbd1145af2721175cddb7f 100644 |
--- a/runtime/vm/deopt_instructions.h |
+++ b/runtime/vm/deopt_instructions.h |
@@ -23,6 +23,7 @@ class StackFrame; |
class TimelineEvent; |
// Holds all data relevant for execution of deoptimization instructions. |
+// Structure is allocated in C-heap. |
class DeoptContext { |
public: |
enum DestFrameOptions { |
@@ -30,12 +31,14 @@ class DeoptContext { |
kDestIsAllocated // Write deopt frame to a buffer. |
}; |
+ // If 'deoptimizing_code' is false, only frame is being deoptimized. |
DeoptContext(const StackFrame* frame, |
const Code& code, |
DestFrameOptions dest_options, |
fpu_register_t* fpu_registers, |
intptr_t* cpu_registers, |
- bool is_lazy_deopt); |
+ bool is_lazy_deopt, |
+ bool deoptimizing_code); |
virtual ~DeoptContext(); |
// Returns the offset of the dest fp from the dest sp. Used in |
@@ -97,6 +100,8 @@ class DeoptContext { |
bool is_lazy_deopt() const { return is_lazy_deopt_; } |
+ bool deoptimizing_code() const { return deoptimizing_code_; } |
+ |
ICData::DeoptReasonId deopt_reason() const { return deopt_reason_; } |
bool HasDeoptFlag(ICData::DeoptFlags flag) { |
return (deopt_flags_ & flag) != 0; |
@@ -232,6 +237,7 @@ class DeoptContext { |
DeferredObject** deferred_objects_; |
const bool is_lazy_deopt_; |
+ const bool deoptimizing_code_; |
DISALLOW_COPY_AND_ASSIGN(DeoptContext); |
}; |