From b2ead5268807faf6a7da48512e178a33a14e0d0e Mon Sep 17 00:00:00 2001 From: "fschneider@chromium.org" Date: Tue, 31 Jan 2012 17:19:19 +0000 Subject: [PATCH] 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 --- src/lithium.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/lithium.h b/src/lithium.h index 6d2fbbf90f..4987b5a4cd 100644 --- a/src/lithium.h +++ b/src/lithium.h @@ -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 values_; - ZoneList 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