diff options
Diffstat (limited to 'chromium/v8/src/compiler/js-create-lowering.cc')
-rw-r--r-- | chromium/v8/src/compiler/js-create-lowering.cc | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/chromium/v8/src/compiler/js-create-lowering.cc b/chromium/v8/src/compiler/js-create-lowering.cc index df5c8d07df1..20033636edc 100644 --- a/chromium/v8/src/compiler/js-create-lowering.cc +++ b/chromium/v8/src/compiler/js-create-lowering.cc @@ -905,8 +905,17 @@ Node* JSCreateLowering::AllocateFastLiteral( site_context->ExitScope(current_site, boilerplate_object); } else if (property_details.representation().IsDouble()) { // Allocate a mutable HeapNumber box and store the value into it. - value = effect = AllocateMutableHeapNumber( - Handle<HeapNumber>::cast(boilerplate_value)->value(), + Callable callable = CodeFactory::AllocateMutableHeapNumber(isolate()); + CallDescriptor* desc = Linkage::GetStubCallDescriptor( + isolate(), jsgraph()->zone(), callable.descriptor(), 0, + CallDescriptor::kNoFlags, Operator::kNoThrow); + value = effect = graph()->NewNode( + common()->Call(desc), jsgraph()->HeapConstant(callable.code()), + jsgraph()->NoContextConstant(), effect, control); + effect = graph()->NewNode( + simplified()->StoreField(AccessBuilder::ForHeapNumberValue()), + value, jsgraph()->Constant( + Handle<HeapNumber>::cast(boilerplate_value)->value()), effect, control); } else if (property_details.representation().IsSmi()) { // Ensure that value is stored as smi. @@ -1028,23 +1037,6 @@ Node* JSCreateLowering::AllocateFastLiteralElements( return builder.Finish(); } -Node* JSCreateLowering::AllocateMutableHeapNumber(double value, Node* effect, - Node* control) { - // TODO(turbofan): Support inline allocation of MutableHeapNumber - // (requires proper alignment on Allocate, and Begin/FinishRegion). - Callable callable = CodeFactory::AllocateMutableHeapNumber(isolate()); - CallDescriptor* desc = Linkage::GetStubCallDescriptor( - isolate(), jsgraph()->zone(), callable.descriptor(), 0, - CallDescriptor::kNoFlags, Operator::kNoThrow); - Node* result = effect = graph()->NewNode( - common()->Call(desc), jsgraph()->HeapConstant(callable.code()), - jsgraph()->NoContextConstant(), effect, control); - effect = graph()->NewNode( - simplified()->StoreField(AccessBuilder::ForHeapNumberValue()), result, - jsgraph()->Constant(value), effect, control); - return result; -} - MaybeHandle<LiteralsArray> JSCreateLowering::GetSpecializationLiterals( Node* node) { Node* const closure = NodeProperties::GetValueInput(node, 0); |