From 4df132a878342f646595c7d9bee7979388a1bd09 Mon Sep 17 00:00:00 2001 From: "yangguo@chromium.org" Date: Wed, 9 Apr 2014 12:33:51 +0000 Subject: [PATCH] Fix argument expectation Runtime_StringParseInt. R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/230693002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20614 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/runtime.cc | 2 +- test/mjsunit/regress/regress-parseint.js | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 test/mjsunit/regress/regress-parseint.js diff --git a/src/runtime.cc b/src/runtime.cc index a871538..557bfb0 100644 --- a/src/runtime.cc +++ b/src/runtime.cc @@ -6312,7 +6312,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringParseInt) { SealHandleScope shs(isolate); CONVERT_ARG_CHECKED(String, s, 0); - CONVERT_SMI_ARG_CHECKED(radix, 1); + CONVERT_NUMBER_CHECKED(int, radix, Int32, args[1]); s->TryFlatten(); diff --git a/test/mjsunit/regress/regress-parseint.js b/test/mjsunit/regress/regress-parseint.js new file mode 100644 index 0000000..05501f3 --- /dev/null +++ b/test/mjsunit/regress/regress-parseint.js @@ -0,0 +1,18 @@ +// 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 + +function f(string, radix) { + // Use a phi to force radix into heap number representation. + radix = (radix == 0) ? radix : (radix >> 0); + if (radix != 2) return NaN; + return %StringParseInt(string, radix); +} + +assertEquals(2, (-4294967294) >> 0); +assertEquals(3, f("11", -4294967294)); +assertEquals(NaN, f("11", -2147483650)); +%OptimizeFunctionOnNextCall(f); +assertEquals(3, f("11", -4294967294)); -- 2.7.4