Index: test/mjsunit/math-round.js |
diff --git a/test/mjsunit/math-round.js b/test/mjsunit/math-round.js |
index 1366557f6b8b3bbccf9b4d4a2156442706dba405..9fba720d4603e3a6c2edd69ddb88c2a9d3e8f996 100644 |
--- a/test/mjsunit/math-round.js |
+++ b/test/mjsunit/math-round.js |
@@ -1,4 +1,4 @@ |
-// Copyright 2010 the V8 project authors. All rights reserved. |
+// Copyright 2010, 2011 the V8 project authors. All rights reserved. |
Kevin Millikin (Chromium)
2011/08/02 10:24:14
We just update the copyright date to 2011, not a r
|
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
@@ -44,6 +44,22 @@ testRound(Infinity, Infinity); |
testRound(-Infinity, -Infinity); |
testRound(NaN, NaN); |
+// Ensure that a negative zero coming from Math.round is properly |
+// handled by other ops that take unboxed doubles. See cr7514040. |
+function roundsum(i,n) { |
+ var ret = Math.round(n); |
+ while (--i > 0) { |
+ ret += Math.round(n); |
+ } |
+ return ret; |
+} |
+assertEquals(-0, roundsum(1000,-0)); |
+%OptimizeFunctionOnNextCall(roundsum); |
+// It seems that %OptimizeFunctionOnNextCall doesn't always work! Here |
+// we push iterations up to a large number to ensure that we try to |
+// unbox doubles as much as possible. |
+assertEquals(-0, roundsum(1000000,-0)); |
+ |
testRound(1, 0.5); |
testRound(1, 0.7); |
testRound(1, 1); |