Index: src/factory.cc |
diff --git a/src/factory.cc b/src/factory.cc |
index 355e24fd6a13b7bb119aa1821bf085dca668b804..795946bffb15644f60ab6dcbe7ce9ee5d3797571 100644 |
--- a/src/factory.cc |
+++ b/src/factory.cc |
@@ -1071,10 +1071,12 @@ Handle<Object> Factory::NewNumberFromInt(int32_t value, |
Handle<Object> Factory::NewNumberFromUint(uint32_t value, |
- PretenureFlag pretenure) { |
- CALL_HEAP_FUNCTION( |
- isolate(), |
- isolate()->heap()->NumberFromUint32(value, pretenure), Object); |
+ PretenureFlag pretenure) { |
+ int32_t int32v = static_cast<int32_t>(value); |
+ if (int32v >= 0 && Smi::IsValid(int32v)) { |
+ return handle(Smi::FromInt(int32v), isolate()); |
+ } |
+ return NewHeapNumber(FastUI2D(value), pretenure); |
} |
@@ -1397,9 +1399,7 @@ Handle<Code> Factory::NewCode(const CodeDesc& desc, |
code->CopyFrom(desc); |
#ifdef VERIFY_HEAP |
- if (FLAG_verify_heap) { |
- code->Verify(); |
- } |
+ if (FLAG_verify_heap) code->ObjectVerify(); |
#endif |
return code; |
} |