diff options
author | Timothy J Fontaine <tjfontaine@gmail.com> | 2014-01-28 17:16:28 -0800 |
---|---|---|
committer | Timothy J Fontaine <tjfontaine@gmail.com> | 2014-01-28 17:16:28 -0800 |
commit | 95b8a75d5e471cc539cb9f3639cd1cbe098e5633 (patch) | |
tree | 7145f0218dc38c0bc9378ec882a0e0aab8da650d /deps | |
parent | fc26fd6b388796a09767bf698ddda5b5ff7c9e96 (diff) | |
download | node-new-95b8a75d5e471cc539cb9f3639cd1cbe098e5633.tar.gz |
v8: Upgrade to 3.22.24.19
Diffstat (limited to 'deps')
-rw-r--r-- | deps/v8/src/hydrogen-instructions.cc | 16 | ||||
-rw-r--r-- | deps/v8/src/hydrogen-instructions.h | 2 | ||||
-rw-r--r-- | deps/v8/src/version.cc | 2 | ||||
-rw-r--r-- | deps/v8/test/mjsunit/regress-333594.js | 42 | ||||
-rw-r--r-- | deps/v8/test/mjsunit/regress/regress-334708.js | 42 |
5 files changed, 92 insertions, 12 deletions
diff --git a/deps/v8/src/hydrogen-instructions.cc b/deps/v8/src/hydrogen-instructions.cc index 206ab7e2ac..ee3468e8aa 100644 --- a/deps/v8/src/hydrogen-instructions.cc +++ b/deps/v8/src/hydrogen-instructions.cc @@ -1371,7 +1371,6 @@ HValue* HUnaryMathOperation::Canonicalize() { if (op() == kMathFloor) { HValue* val = value(); - if (val->IsChange()) val = HChange::cast(val)->value(); if (val->IsDiv() && (val->UseCount() == 1)) { HDiv* hdiv = HDiv::cast(val); HValue* left = hdiv->left(); @@ -1410,17 +1409,8 @@ HValue* HUnaryMathOperation::Canonicalize() { } HMathFloorOfDiv* instr = HMathFloorOfDiv::New(block()->zone(), context(), new_left, new_right); - // Replace this HMathFloor instruction by the new HMathFloorOfDiv. instr->InsertBefore(this); - ReplaceAllUsesWith(instr); - Kill(); - // We know the division had no other uses than this HMathFloor. Delete it. - // Dead code elimination will deal with |left| and |right| if - // appropriate. - hdiv->DeleteAndReplaceWith(NULL); - - // Return NULL to remove this instruction from the graph. - return NULL; + return instr; } } return this; @@ -2463,6 +2453,7 @@ HConstant::HConstant(Handle<Object> handle, Representation r) has_smi_value_ = has_int32_value_ && Smi::IsValid(int32_value_); double_value_ = n; has_double_value_ = true; + // TODO(titzer): if this heap number is new space, tenure a new one. } else { is_internalized_string_ = handle->IsInternalizedString(); } @@ -2661,6 +2652,9 @@ void HConstant::PrintDataTo(StringStream* stream) { } else { handle(Isolate::Current())->ShortPrint(stream); } + if (!is_not_in_new_space_) { + stream->Add("[new space] "); + } } diff --git a/deps/v8/src/hydrogen-instructions.h b/deps/v8/src/hydrogen-instructions.h index 1703ddedd5..da5cdeced4 100644 --- a/deps/v8/src/hydrogen-instructions.h +++ b/deps/v8/src/hydrogen-instructions.h @@ -1472,6 +1472,8 @@ class HReturn V8_FINAL : public HTemplateControlInstruction<0, 3> { DECLARE_INSTRUCTION_WITH_CONTEXT_FACTORY_P1(HReturn, HValue*); virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { + // TODO(titzer): require an Int32 input for faster returns. + if (index == 2) return Representation::Smi(); return Representation::Tagged(); } diff --git a/deps/v8/src/version.cc b/deps/v8/src/version.cc index dfda1a3ba6..fa89770466 100644 --- a/deps/v8/src/version.cc +++ b/deps/v8/src/version.cc @@ -35,7 +35,7 @@ #define MAJOR_VERSION 3 #define MINOR_VERSION 22 #define BUILD_NUMBER 24 -#define PATCH_LEVEL 17 +#define PATCH_LEVEL 19 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) #define IS_CANDIDATE_VERSION 0 diff --git a/deps/v8/test/mjsunit/regress-333594.js b/deps/v8/test/mjsunit/regress-333594.js new file mode 100644 index 0000000000..6f6dbaafcd --- /dev/null +++ b/deps/v8/test/mjsunit/regress-333594.js @@ -0,0 +1,42 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Flags: --allow-natives-syntax + +var a = { x: 1.1 }; +a.x = 0; +var G = a.x; +var o = { x: {} }; + +function func() { + return {x: G}; +} + +func(); +func(); +%OptimizeFunctionOnNextCall(func); +assertEquals(0, func().x); diff --git a/deps/v8/test/mjsunit/regress/regress-334708.js b/deps/v8/test/mjsunit/regress/regress-334708.js new file mode 100644 index 0000000000..f0291bbdab --- /dev/null +++ b/deps/v8/test/mjsunit/regress/regress-334708.js @@ -0,0 +1,42 @@ +// Copyright 2014 the V8 project authors. All rights reserved. +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Flags: --allow-natives-syntax + +function foo(x, y) { + return Math.floor(x / y); +} + +function bar(x, y) { + return foo(x + 1, y + 1); +} + +foo(16, "4"); + +bar(64, 2); +%OptimizeFunctionOnNextCall(bar); +bar(64, 2); |