|  | // 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 g1(i) { | 
|  | var x = i * 1; | 
|  | return (x >>> 0) % 1000000000000; | 
|  | } | 
|  |  | 
|  | function g2(i) { | 
|  | var x = i * 1; | 
|  | return ((x >>> 0) % 1000000000000) | 0; | 
|  | } | 
|  |  | 
|  | function test1() { | 
|  | assertEquals(2294967296, g1(-2000000000)); | 
|  | assertEquals(2294967295, g1(-2000000001)); | 
|  | assertEquals(2294967290, g1(-2000000006)); | 
|  |  | 
|  | assertEquals(2147483651, g1(-2147483645)); | 
|  | assertEquals(2147483650, g1(-2147483646)); | 
|  | assertEquals(2147483649, g1(-2147483647)); | 
|  | assertEquals(2147483648, g1(-2147483648)); | 
|  | assertEquals(2147483647, g1(-2147483649)); | 
|  |  | 
|  | assertEquals(3000000000, g1(3000000000)); | 
|  | assertEquals(3000000001, g1(3000000001)); | 
|  | assertEquals(3000000002, g1(3000000002)); | 
|  |  | 
|  | assertEquals(4000000000, g1(4000000000)); | 
|  | assertEquals(4000400001, g1(4000400001)); | 
|  | assertEquals(4000400002, g1(4000400002)); | 
|  |  | 
|  | assertEquals(3, g1(4294967299)); | 
|  | assertEquals(2, g1(4294967298)); | 
|  | assertEquals(1, g1(4294967297)); | 
|  | assertEquals(0, g1(4294967296)); | 
|  | assertEquals(4294967295, g1(4294967295)); | 
|  | assertEquals(4294967294, g1(4294967294)); | 
|  | assertEquals(4294967293, g1(4294967293)); | 
|  | assertEquals(4294967292, g1(4294967292)); | 
|  | } | 
|  |  | 
|  | %NeverOptimizeFunction(test1); | 
|  | test1(); | 
|  |  | 
|  | function test2() { | 
|  | assertEquals(-2000000000, g2(-2000000000)); | 
|  | assertEquals(-2000000001, g2(-2000000001)); | 
|  | assertEquals(-2000000006, g2(-2000000006)); | 
|  |  | 
|  | assertEquals(-2147483645, g2(-2147483645)); | 
|  | assertEquals(-2147483646, g2(-2147483646)); | 
|  | assertEquals(-2147483647, g2(-2147483647)); | 
|  | assertEquals(-2147483648, g2(-2147483648)); | 
|  | assertEquals(2147483647, g2(-2147483649)); | 
|  |  | 
|  | assertEquals(-1294967296, g2(3000000000)); | 
|  | assertEquals(-1294967295, g2(3000000001)); | 
|  | assertEquals(-1294967294, g2(3000000002)); | 
|  |  | 
|  | assertEquals(-294967296, g2(4000000000)); | 
|  | assertEquals(-294567295, g2(4000400001)); | 
|  | assertEquals(-294567294, g2(4000400002)); | 
|  |  | 
|  | assertEquals(3, g2(4294967299)); | 
|  | assertEquals(2, g2(4294967298)); | 
|  | assertEquals(1, g2(4294967297)); | 
|  | assertEquals(0, g2(4294967296)); | 
|  | assertEquals(-1, g2(4294967295)); | 
|  | assertEquals(-2, g2(4294967294)); | 
|  | assertEquals(-3, g2(4294967293)); | 
|  | assertEquals(-4, g2(4294967292)); | 
|  | } | 
|  |  | 
|  | %NeverOptimizeFunction(test2); | 
|  | test2(); |