| Index: test/mjsunit/math-floor-of-div.js
|
| ===================================================================
|
| --- test/mjsunit/math-floor-of-div.js (revision 13153)
|
| +++ test/mjsunit/math-floor-of-div.js (working copy)
|
| @@ -25,7 +25,7 @@
|
| // (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 --nouse_inlining
|
| +// Flags: --allow-natives-syntax --nouse_inlining --enable_sudiv
|
|
|
| // Use this function as reference. Make sure it is not inlined.
|
| function div(a, b) {
|
| @@ -184,7 +184,7 @@
|
| %OptimizeFunctionOnNextCall(test_div);
|
| test_div();
|
|
|
| -// Test for negative zero and overflow.
|
| +// Test for negative zero, overflow and division by 0.
|
| // Separate the tests to prevent deoptimizations from making the other optimized
|
| // test unreachable.
|
|
|
| @@ -197,20 +197,34 @@
|
|
|
| function test_div_deopt_minus_zero() {
|
| var zero_in_array = [0];
|
| - assertTrue(IsNegativeZero(Math.floor((zero_in_array[0] | 0) / -1)));
|
| + for (var i = 0; i < 2; ++i) {
|
| + assertTrue(IsNegativeZero(Math.floor((zero_in_array[0] | 0) / -1)));
|
| + }
|
| }
|
|
|
| function test_div_deopt_overflow() {
|
| // We box the value in an array to avoid constant propagation.
|
| var min_int_in_array = [-2147483648];
|
| - // We use '| 0' to force the representation to int32.
|
| - assertEquals(-min_int_in_array[0],
|
| - Math.floor((min_int_in_array[0] | 0) / -1));
|
| + for (var i = 0; i < 2; ++i) {
|
| + // We use '| 0' to force the representation to int32.
|
| + assertEquals(-min_int_in_array[0],
|
| + Math.floor((min_int_in_array[0] | 0) / -1));
|
| + }
|
| }
|
|
|
| +function test_div_deopt_div_by_zero() {
|
| + for (var i = 0; i < 2; ++i) {
|
| + assertEquals(div(i, 0),
|
| + Math.floor(i / 0));
|
| + }
|
| +}
|
| +
|
| test_div_deopt_minus_zero();
|
| test_div_deopt_overflow();
|
| +test_div_deopt_div_by_zero();
|
| %OptimizeFunctionOnNextCall(test_div_deopt_minus_zero);
|
| %OptimizeFunctionOnNextCall(test_div_deopt_overflow);
|
| +%OptimizeFunctionOnNextCall(test_div_deopt_div_by_zero);
|
| test_div_deopt_minus_zero();
|
| test_div_deopt_overflow();
|
| +test_div_deopt_div_by_zero();
|
|
|