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),
|
||||
pc_offset_(-1),
|
||||
values_(value_count),
|
||||
representations_(value_count),
|
||||
is_tagged_(value_count),
|
||||
spilled_registers_(NULL),
|
||||
spilled_double_registers_(NULL),
|
||||
outer_(outer) {
|
||||
@ -475,11 +475,13 @@ class LEnvironment: public ZoneObject {
|
||||
|
||||
void AddValue(LOperand* operand, Representation representation) {
|
||||
values_.Add(operand);
|
||||
representations_.Add(representation);
|
||||
if (representation.IsTagged()) {
|
||||
is_tagged_.Add(values_.length() - 1);
|
||||
}
|
||||
}
|
||||
|
||||
bool HasTaggedValueAt(int index) const {
|
||||
return representations_[index].IsTagged();
|
||||
return is_tagged_.Contains(index);
|
||||
}
|
||||
|
||||
void Register(int deoptimization_index,
|
||||
@ -514,7 +516,7 @@ class LEnvironment: public ZoneObject {
|
||||
int parameter_count_;
|
||||
int pc_offset_;
|
||||
ZoneList<LOperand*> values_;
|
||||
ZoneList<Representation> representations_;
|
||||
BitVector is_tagged_;
|
||||
|
||||
// Allocation index indexed arrays of spill slot operands for registers
|
||||
// that are also in spill slots at an OSR entry. NULL for environments
|
||||
|
Loading…
Reference in New Issue
Block a user