From: hpayer@chromium.org Date: Fri, 28 Feb 2014 11:07:10 +0000 (+0000) Subject: Fix representation generalization for doubles. X-Git-Tag: upstream/4.7.83~10537 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=38ca2629be7a4da06f178fdb50a71bee422a5d86;p=platform%2Fupstream%2Fv8.git Fix representation generalization for doubles. BUG= R=verwaest@chromium.org Review URL: https://codereview.chromium.org/184393002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19599 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/property-details.h b/src/property-details.h index 7bc553a..3405bd9 100644 --- a/src/property-details.h +++ b/src/property-details.h @@ -138,7 +138,7 @@ class Representation { ASSERT(kind_ != kExternal); ASSERT(other.kind_ != kExternal); - if (IsHeapObject()) return other.IsDouble() || other.IsNone(); + if (IsHeapObject()) return other.IsNone(); if (kind_ == kUInteger8 && other.kind_ == kInteger8) return false; if (kind_ == kUInteger16 && other.kind_ == kInteger16) return false; return kind_ > other.kind_; diff --git a/test/mjsunit/regress/regress-347909.js b/test/mjsunit/regress/regress-347909.js new file mode 100644 index 0000000..90a8e6a --- /dev/null +++ b/test/mjsunit/regress/regress-347909.js @@ -0,0 +1,19 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --allow-natives-syntax + +var a = {y:1.5}; +a.y = 0; +var b = a.y; +a.y = {}; +var d = 1; +function f() { + d = 0; + return {y: b}; +} +f(); +f(); +%OptimizeFunctionOnNextCall(f); +f();