Index: src/lithium.h |
=================================================================== |
--- src/lithium.h (revision 9327) |
+++ src/lithium.h (working copy) |
@@ -407,9 +407,18 @@ |
class LPointerMap: public ZoneObject { |
public: |
explicit LPointerMap(int position) |
- : pointer_operands_(8), position_(position), lithium_position_(-1) { } |
+ : pointer_operands_(8), |
+ untagged_operands_(0), |
+ position_(position), |
+ lithium_position_(-1) { } |
- const ZoneList<LOperand*>* operands() const { return &pointer_operands_; } |
+ const ZoneList<LOperand*>* GetNormalizedOperands() { |
+ for (int i = 0; i < untagged_operands_.length(); ++i) { |
+ RemovePointer(untagged_operands_[i]); |
+ } |
+ untagged_operands_.Clear(); |
+ return &pointer_operands_; |
+ } |
int position() const { return position_; } |
int lithium_position() const { return lithium_position_; } |
@@ -419,10 +428,13 @@ |
} |
void RecordPointer(LOperand* op); |
+ void RemovePointer(LOperand* op); |
+ void RecordUntagged(LOperand* op); |
void PrintTo(StringStream* stream); |
private: |
ZoneList<LOperand*> pointer_operands_; |
+ ZoneList<LOperand*> untagged_operands_; |
int position_; |
int lithium_position_; |
}; |