| Index: runtime/vm/deopt_instructions.h
|
| diff --git a/runtime/vm/deopt_instructions.h b/runtime/vm/deopt_instructions.h
|
| index 6583010cc92c05c5de6bdb91a77c7366eb818073..f2927f5fe2bd80474d7cc4e262b30cc4893ca008 100644
|
| --- a/runtime/vm/deopt_instructions.h
|
| +++ b/runtime/vm/deopt_instructions.h
|
| @@ -98,7 +98,7 @@ class DeoptContext {
|
| return (deopt_flags_ & flag) != 0;
|
| }
|
|
|
| - RawDeoptInfo* deopt_info() const { return deopt_info_; }
|
| + RawTypedData* deopt_info() const { return deopt_info_; }
|
|
|
| // Fills the destination frame but defers materialization of
|
| // objects.
|
| @@ -206,7 +206,7 @@ class DeoptContext {
|
|
|
| RawCode* code_;
|
| RawArray* object_table_;
|
| - RawDeoptInfo* deopt_info_;
|
| + RawTypedData* deopt_info_;
|
| bool dest_frame_is_allocated_;
|
| intptr_t* dest_frame_;
|
| intptr_t dest_frame_size_;
|
| @@ -257,7 +257,6 @@ class DeoptInstr : public ZoneAllocated {
|
| kCallerFp,
|
| kCallerPp,
|
| kCallerPc,
|
| - kSuffix,
|
| kMaterializedObjectRef,
|
| kMaterializeObject
|
| };
|
| @@ -285,10 +284,6 @@ class DeoptInstr : public ZoneAllocated {
|
| return (kind() == other.kind()) && (source_index() == other.source_index());
|
| }
|
|
|
| - // Decode the payload of a suffix command. Return the suffix length and
|
| - // set the output parameter info_number to the index of the shared suffix.
|
| - static intptr_t DecodeSuffix(intptr_t source_index, intptr_t* info_number);
|
| -
|
| // Get the code and return address which is encoded in this
|
| // kRetAfterAddress deopt instruction.
|
| static uword GetRetAddress(DeoptInstr* instr,
|
| @@ -457,7 +452,7 @@ class DeoptInfoBuilder : public ValueObject {
|
| // Returns the index of the next stack slot. Used for verification.
|
| intptr_t EmitMaterializationArguments(intptr_t dest_index);
|
|
|
| - RawDeoptInfo* CreateDeoptInfo(const Array& deopt_table);
|
| + RawTypedData* CreateDeoptInfo(const Array& deopt_table);
|
|
|
| // Mark the actual start of the frame description after all materialization
|
| // instructions were emitted. Used for verification purposes.
|
| @@ -508,6 +503,8 @@ class DeoptInfoBuilder : public ValueObject {
|
| // stored in an Array in the heap. It consists of triples of (PC offset,
|
| // info, reason). Elements of each entry are stored consecutively in the
|
| // array.
|
| +// TODO(vegorov): consider compressing the whole table into a single TypedData
|
| +// object.
|
| class DeoptTable : public AllStatic {
|
| public:
|
| // Return the array size in elements for a given number of table entries.
|
| @@ -517,7 +514,7 @@ class DeoptTable : public AllStatic {
|
| static void SetEntry(const Array& table,
|
| intptr_t index,
|
| const Smi& offset,
|
| - const DeoptInfo& info,
|
| + const TypedData& info,
|
| const Smi& reason_and_flags);
|
|
|
| // Return the length of the table in entries.
|
| @@ -528,7 +525,7 @@ class DeoptTable : public AllStatic {
|
| static void GetEntry(const Array& table,
|
| intptr_t index,
|
| Smi* offset,
|
| - DeoptInfo* info,
|
| + TypedData* info,
|
| Smi* reason_and_flags);
|
|
|
| static RawSmi* EncodeReasonAndFlags(ICData::DeoptReasonId reason,
|
|
|