Index: runtime/vm/code_descriptors.h |
diff --git a/runtime/vm/code_descriptors.h b/runtime/vm/code_descriptors.h |
index 796f2901d45a0e7441999c5ae2f4d68e92917a88..ebe15cf913797ff453338972b5d99ad75db95556 100644 |
--- a/runtime/vm/code_descriptors.h |
+++ b/runtime/vm/code_descriptors.h |
@@ -15,59 +15,29 @@ namespace dart { |
class DescriptorList : public ZoneAllocated { |
public: |
- struct PcDesc { |
- intptr_t pc_offset; // PC offset value of the descriptor. |
- RawPcDescriptors::Kind kind; // Descriptor kind (kDeopt, kOther). |
- intptr_t deopt_id; // Deoptimization id. |
- intptr_t data; // Token position or deopt reason. |
- intptr_t try_index; // Try block index of PC or deopt array index. |
- void SetTokenPos(intptr_t value) { data = value; } |
- intptr_t TokenPos() const { return data; } |
- void SetDeoptReason(ICData::DeoptReasonId value) { data = value; } |
- ICData::DeoptReasonId DeoptReason() const { |
- ASSERT((0 <= data) && (data < ICData::kDeoptNumReasons)); |
- return static_cast<ICData::DeoptReasonId>(data); |
- } |
- }; |
- |
explicit DescriptorList(intptr_t initial_capacity) |
- : list_(initial_capacity), has_try_index_(false) {} |
- ~DescriptorList() { } |
+ : encoded_data_(initial_capacity), |
+ prev_pc_offset(0), |
+ prev_deopt_id(0), |
+ prev_token_pos(0) {} |
- intptr_t Length() const { |
- return list_.length(); |
- } |
- |
- intptr_t PcOffset(intptr_t index) const { |
- return list_[index].pc_offset; |
- } |
- RawPcDescriptors::Kind Kind(intptr_t index) const { |
- return list_[index].kind; |
- } |
- intptr_t DeoptId(intptr_t index) const { |
- return list_[index].deopt_id; |
- } |
- intptr_t TokenPos(intptr_t index) const { |
- return list_[index].TokenPos(); |
- } |
- ICData::DeoptReasonId DeoptReason(intptr_t index) const { |
- return list_[index].DeoptReason(); |
- } |
- intptr_t TryIndex(intptr_t index) const { |
- return (has_try_index_) ? list_[index].try_index : -1; |
- } |
+ ~DescriptorList() { } |
void AddDescriptor(RawPcDescriptors::Kind kind, |
intptr_t pc_offset, |
intptr_t deopt_id, |
- intptr_t token_index, |
+ intptr_t token_pos, |
intptr_t try_index); |
RawPcDescriptors* FinalizePcDescriptors(uword entry_point); |
private: |
- GrowableArray<struct PcDesc> list_; |
- bool has_try_index_; |
+ GrowableArray<uint8_t> encoded_data_; |
+ |
+ intptr_t prev_pc_offset; |
+ intptr_t prev_deopt_id; |
+ intptr_t prev_token_pos; |
+ |
DISALLOW_COPY_AND_ASSIGN(DescriptorList); |
}; |