Save zone memory in LEnvironment by using a bit vector.
We don't need to store the full representation for each value. Instead a bit to indicate tagged/untagged is enough. Review URL: http://codereview.chromium.org/9104042 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10572 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
86a0e828dc
commit
b2ead52688
@ -453,7 +453,7 @@ class LEnvironment: public ZoneObject {
|
|||||||
parameter_count_(parameter_count),
|
parameter_count_(parameter_count),
|
||||||
pc_offset_(-1),
|
pc_offset_(-1),
|
||||||
values_(value_count),
|
values_(value_count),
|
||||||
representations_(value_count),
|
is_tagged_(value_count),
|
||||||
spilled_registers_(NULL),
|
spilled_registers_(NULL),
|
||||||
spilled_double_registers_(NULL),
|
spilled_double_registers_(NULL),
|
||||||
outer_(outer) {
|
outer_(outer) {
|
||||||
@ -475,11 +475,13 @@ class LEnvironment: public ZoneObject {
|
|||||||
|
|
||||||
void AddValue(LOperand* operand, Representation representation) {
|
void AddValue(LOperand* operand, Representation representation) {
|
||||||
values_.Add(operand);
|
values_.Add(operand);
|
||||||
representations_.Add(representation);
|
if (representation.IsTagged()) {
|
||||||
|
is_tagged_.Add(values_.length() - 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HasTaggedValueAt(int index) const {
|
bool HasTaggedValueAt(int index) const {
|
||||||
return representations_[index].IsTagged();
|
return is_tagged_.Contains(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Register(int deoptimization_index,
|
void Register(int deoptimization_index,
|
||||||
@ -514,7 +516,7 @@ class LEnvironment: public ZoneObject {
|
|||||||
int parameter_count_;
|
int parameter_count_;
|
||||||
int pc_offset_;
|
int pc_offset_;
|
||||||
ZoneList<LOperand*> values_;
|
ZoneList<LOperand*> values_;
|
||||||
ZoneList<Representation> representations_;
|
BitVector is_tagged_;
|
||||||
|
|
||||||
// Allocation index indexed arrays of spill slot operands for registers
|
// Allocation index indexed arrays of spill slot operands for registers
|
||||||
// that are also in spill slots at an OSR entry. NULL for environments
|
// that are also in spill slots at an OSR entry. NULL for environments
|
||||||
|
Loading…
Reference in New Issue
Block a user