From 8a1d92f5c22848209f4011d248b06b42d95be927 Mon Sep 17 00:00:00 2001 From: "mstarzinger@chromium.org" Date: Tue, 5 Nov 2013 09:32:39 +0000 Subject: [PATCH] Fix double-boxing issue when materializing captured objects. R=verwaest@chromium.org TEST=mjsunit/compiler/escape-analysis-representation Review URL: https://codereview.chromium.org/57783003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17468 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/deoptimizer.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc index 84e80b9..96871d6 100644 --- a/src/deoptimizer.cc +++ b/src/deoptimizer.cc @@ -1620,10 +1620,10 @@ Handle Deoptimizer::MaterializeNextHeapObject() { Handle::cast(MaterializeNextValue()), Representation::Tagged()); switch (map->instance_type()) { case HEAP_NUMBER_TYPE: { - Handle object = isolate_->factory()->NewHeapNumber(0.0); + // Reuse the HeapNumber value directly as it is already properly + // tagged and skip materializing the HeapNumber explicitly. + Handle object = MaterializeNextValue(); materialized_objects_->Add(object); - Handle number = MaterializeNextValue(); - object->set_value(number->Number()); materialization_value_index_ += kDoubleSize / kPointerSize - 1; break; } -- 2.7.4