summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/compiler/string-from-code-point.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/compiler/string-from-code-point.js')
-rw-r--r--deps/v8/test/mjsunit/compiler/string-from-code-point.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/compiler/string-from-code-point.js b/deps/v8/test/mjsunit/compiler/string-from-code-point.js
new file mode 100644
index 0000000000..165ea0c234
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/string-from-code-point.js
@@ -0,0 +1,32 @@
+// Copyright 2018 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 --opt --noalways-opt
+
+// Test that String.fromCodePoint() properly identifies zeros.
+(function() {
+ function foo(x) {
+ return String.fromCodePoint(x);
+ }
+
+ assertEquals("\u0000", foo(0));
+ assertEquals("\u0000", foo(-0));
+ %OptimizeFunctionOnNextCall(foo);
+ assertEquals("\u0000", foo(0));
+ assertEquals("\u0000", foo(-0));
+ assertOptimized(foo);
+
+ // Now passing anything outside the valid code point
+ // range should invalidate the optimized code.
+ assertThrows(_ => foo(-1));
+ assertUnoptimized(foo);
+
+ // And TurboFan should not inline the builtin anymore
+ // from now on (aka no deoptimization loop).
+ %OptimizeFunctionOnNextCall(foo);
+ assertEquals("\u0000", foo(0));
+ assertEquals("\u0000", foo(-0));
+ assertThrows(_ => foo(-1));
+ assertOptimized(foo);
+})();