Index: src/factory.cc |
diff --git a/src/factory.cc b/src/factory.cc |
index 29e396b8db4c002d472a6aa8012e7e1326976166..af419ef5fcb747b2063999dfff291ab79a90443e 100644 |
--- a/src/factory.cc |
+++ b/src/factory.cc |
@@ -1008,7 +1008,7 @@ Handle<Object> Factory::NewNumber(double value, |
// We need to distinguish the minus zero value and this cannot be |
// done after conversion to int. Doing this by comparing bit |
// patterns is faster than using fpclassify() et al. |
- if (IsMinusZero(value)) return NewHeapNumber(-0.0, pretenure); |
+ if (IsMinusZero(value)) return NewHeapNumber(-0.0, IMMUTABLE, pretenure); |
int int_value = FastD2I(value); |
if (value == int_value && Smi::IsValid(int_value)) { |
@@ -1016,15 +1016,15 @@ Handle<Object> Factory::NewNumber(double value, |
} |
// Materialize the value in the heap. |
- return NewHeapNumber(value, pretenure); |
+ return NewHeapNumber(value, IMMUTABLE, pretenure); |
} |
Handle<Object> Factory::NewNumberFromInt(int32_t value, |
PretenureFlag pretenure) { |
if (Smi::IsValid(value)) return handle(Smi::FromInt(value), isolate()); |
- // Bypass NumberFromDouble to avoid various redundant checks. |
- return NewHeapNumber(FastI2D(value), pretenure); |
+ // Bypass NewNumber to avoid various redundant checks. |
+ return NewHeapNumber(FastI2D(value), IMMUTABLE, pretenure); |
} |
@@ -1034,15 +1034,17 @@ Handle<Object> Factory::NewNumberFromUint(uint32_t value, |
if (int32v >= 0 && Smi::IsValid(int32v)) { |
return handle(Smi::FromInt(int32v), isolate()); |
} |
- return NewHeapNumber(FastUI2D(value), pretenure); |
+ return NewHeapNumber(FastUI2D(value), IMMUTABLE, pretenure); |
} |
Handle<HeapNumber> Factory::NewHeapNumber(double value, |
+ MutableMode mode, |
PretenureFlag pretenure) { |
CALL_HEAP_FUNCTION( |
isolate(), |
- isolate()->heap()->AllocateHeapNumber(value, pretenure), HeapNumber); |
+ isolate()->heap()->AllocateHeapNumber(value, mode, pretenure), |
+ HeapNumber); |
} |