Chromium Code Reviews| Index: src/hydrogen-instructions.h |
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
| index 65a9c959887a2eb926c918a95cc2fcd805047359..d800e3094f919191bdbde3c52bfc3a1dad88424e 100644 |
| --- a/src/hydrogen-instructions.h |
| +++ b/src/hydrogen-instructions.h |
| @@ -3251,7 +3251,7 @@ class HConstant: public HTemplateInstruction<0> { |
| Handle<Object> handle() { |
| if (handle_.is_null()) { |
| - handle_ = FACTORY->NewNumber(double_value_, TENURED); |
| + handle_ = FACTORY->NewNumber(double_value_, pretenure()); |
| } |
| ALLOW_HANDLE_DEREF(Isolate::Current(), "smi check"); |
| ASSERT(has_int32_value_ || !handle_->IsSmi()); |
| @@ -3265,10 +3265,15 @@ class HConstant: public HTemplateInstruction<0> { |
| std::isnan(double_value_)); |
| } |
| - bool InNewSpace() { |
| - if (handle().is_null()) return false; |
| - ALLOW_HANDLE_DEREF(isolate(), "using raw address"); |
| - return isolate()->heap()->InNewSpace(*handle()); |
| + bool InNewSpace() const { |
| + if (!handle_.is_null()) { |
| + ALLOW_HANDLE_DEREF(isolate(), "using raw address"); |
| + return isolate()->heap()->InNewSpace(*handle_); |
| + } |
| + // If the handle wasn't created yet, then we have a number. |
| + // If the handle is created it'll be tenured in old space. |
| + ASSERT(pretenure() == TENURED); |
| + return false; |
| } |
| bool ImmortalImmovable() const { |
| @@ -3406,6 +3411,8 @@ class HConstant: public HTemplateInstruction<0> { |
| // HeapObject the constant originated from or is null. If the |
| // constant is non-numeric, handle_ always points to a valid |
| // constant HeapObject. |
| + static PretenureFlag pretenure() { return TENURED; } |
|
Michael Starzinger
2013/04/29 11:16:44
I don't understand this function, wouldn't a comme
|
| + |
| Handle<Object> handle_; |
| UniqueValueId unique_id_; |