Index: src/lithium-allocator.h |
=================================================================== |
--- src/lithium-allocator.h (revision 6167) |
+++ src/lithium-allocator.h (working copy) |
@@ -482,7 +482,11 @@ |
class InstructionSummary: public ZoneObject { |
public: |
InstructionSummary() |
- : output_operand_(NULL), input_count_(0), operands_(4), is_call_(false) {} |
+ : output_operand_(NULL), |
+ input_count_(0), |
+ operands_(4), |
+ is_call_(false), |
+ is_save_doubles_(false) {} |
// Output operands. |
LOperand* Output() const { return output_operand_; } |
@@ -510,11 +514,15 @@ |
void MarkAsCall() { is_call_ = true; } |
bool IsCall() const { return is_call_; } |
+ void MarkAsSaveDoubles() { is_save_doubles_ = true; } |
+ bool IsSaveDoubles() const { return is_save_doubles_; } |
+ |
private: |
LOperand* output_operand_; |
int input_count_; |
ZoneList<LOperand*> operands_; |
bool is_call_; |
+ bool is_save_doubles_; |
}; |
// Representation of the non-empty interval [start,end[. |
@@ -824,6 +832,9 @@ |
// Marks the current instruction as a call. |
void MarkAsCall(); |
+ // Marks the current instruction as requiring saving double registers. |
+ void MarkAsSaveDoubles(); |
+ |
// Checks whether the value of a given virtual register is tagged. |
bool HasTaggedValue(int virtual_register) const; |