Index: src/lithium.h |
diff --git a/src/lithium.h b/src/lithium.h |
index 170e5c89bcee9e7cfa510753d005d668114c0c26..ab34453beff6015a37dc9a00afc02e4251f93414 100644 |
--- a/src/lithium.h |
+++ b/src/lithium.h |
@@ -527,6 +527,7 @@ class LEnvironment: public ZoneObject { |
deoptimization_index_(Safepoint::kNoDeoptimizationIndex), |
translation_index_(-1), |
ast_id_(ast_id), |
+ translation_size_(value_count), |
parameter_count_(parameter_count), |
pc_offset_(-1), |
values_(value_count, zone), |
@@ -544,6 +545,7 @@ class LEnvironment: public ZoneObject { |
int deoptimization_index() const { return deoptimization_index_; } |
int translation_index() const { return translation_index_; } |
BailoutId ast_id() const { return ast_id_; } |
+ int translation_size() const { return translation_size_; } |
int parameter_count() const { return parameter_count_; } |
int pc_offset() const { return pc_offset_; } |
LOperand** spilled_registers() const { return spilled_registers_; } |
@@ -553,6 +555,7 @@ class LEnvironment: public ZoneObject { |
const ZoneList<LOperand*>* values() const { return &values_; } |
LEnvironment* outer() const { return outer_; } |
HEnterInlined* entry() { return entry_; } |
+ Zone* zone() const { return zone_; } |
void AddValue(LOperand* operand, |
Representation representation, |
@@ -560,11 +563,11 @@ class LEnvironment: public ZoneObject { |
values_.Add(operand, zone()); |
if (representation.IsSmiOrTagged()) { |
ASSERT(!is_uint32); |
- is_tagged_.Add(values_.length() - 1); |
+ is_tagged_.Add(values_.length() - 1, zone()); |
} |
if (is_uint32) { |
- is_uint32_.Add(values_.length() - 1); |
+ is_uint32_.Add(values_.length() - 1, zone()); |
} |
} |
@@ -596,8 +599,6 @@ class LEnvironment: public ZoneObject { |
void PrintTo(StringStream* stream); |
- Zone* zone() const { return zone_; } |
- |
private: |
Handle<JSFunction> closure_; |
FrameType frame_type_; |
@@ -605,11 +606,15 @@ class LEnvironment: public ZoneObject { |
int deoptimization_index_; |
int translation_index_; |
BailoutId ast_id_; |
+ int translation_size_; |
int parameter_count_; |
int pc_offset_; |
+ |
+ // Value array: [parameters] [locals] [expression stack] [de-materialized]. |
+ // |>--------- translation_size ---------<| |
ZoneList<LOperand*> values_; |
- BitVector is_tagged_; |
- BitVector is_uint32_; |
+ GrowableBitVector is_tagged_; |
+ GrowableBitVector is_uint32_; |
// Allocation index indexed arrays of spill slot operands for registers |
// that are also in spill slots at an OSR entry. NULL for environments |
@@ -619,7 +624,6 @@ class LEnvironment: public ZoneObject { |
LEnvironment* outer_; |
HEnterInlined* entry_; |
- |
Zone* zone_; |
}; |