| Index: test/mjsunit/bitwise-operations-bools.js
 | 
| diff --git a/test/mjsunit/compiler/load-elimination.js b/test/mjsunit/bitwise-operations-bools.js
 | 
| similarity index 53%
 | 
| copy from test/mjsunit/compiler/load-elimination.js
 | 
| copy to test/mjsunit/bitwise-operations-bools.js
 | 
| index e019508c65ebdc9eb08e03979f81b70633f55319..6c7da110b05da32d62ec73b7ac9d80337d8678be 100644
 | 
| --- a/test/mjsunit/compiler/load-elimination.js
 | 
| +++ b/test/mjsunit/bitwise-operations-bools.js
 | 
| @@ -25,82 +25,70 @@
 | 
|  // (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 --load-elimination
 | 
| +// Test bitwise operations with booleans.
 | 
|  
 | 
| -// Test local load elimination of redundant loads and stores.
 | 
| +var t = 1;
 | 
|  
 | 
| -function B(x, y) {
 | 
| -  this.x = x;
 | 
| -  this.y = y;
 | 
| -  return this;
 | 
| +function testFalseLeftHandSide() {
 | 
| +  var b;
 | 
| +  if (t) b = false;
 | 
| +  assertEquals(b | 1, 1);
 | 
| +  assertEquals(b & 1, 0);
 | 
| +  assertEquals(b ^ 1, 1);
 | 
| +  assertEquals(b << 1, 0);
 | 
| +  assertEquals(b >> 1, 0);
 | 
| +  assertEquals(b >>> 1, 0);
 | 
|  }
 | 
|  
 | 
| -function test_load() {
 | 
| -  var a = new B(1, 2);
 | 
| -  return a.x + a.x + a.x + a.x;
 | 
| +function testFalseRightHandSide() {
 | 
| +  if (t) b = false;
 | 
| +  assertEquals(1 |   b, 1);
 | 
| +  assertEquals(1 &   b, 0);
 | 
| +  assertEquals(1 ^   b, 1);
 | 
| +  assertEquals(1 <<  b, 1);
 | 
| +  assertEquals(1 >>  b, 1);
 | 
| +  assertEquals(1 >>> b, 1);
 | 
|  }
 | 
|  
 | 
| -function test_store_load() {
 | 
| -  var a = new B(1, 2);
 | 
| -  a.x = 4;
 | 
| -  var f = a.x;
 | 
| -  a.x = 5;
 | 
| -  var g = a.x;
 | 
| -  a.x = 6;
 | 
| -  var h = a.x;
 | 
| -  a.x = 7;
 | 
| -  return f + g + h + a.x;
 | 
| +function testTrueLeftHandSide() {
 | 
| +  if (t) b = true;
 | 
| +  assertEquals(b | 1, 1);
 | 
| +  assertEquals(b & 1, 1);
 | 
| +  assertEquals(b ^ 1, 0);
 | 
| +  assertEquals(b << 1, 2);
 | 
| +  assertEquals(b >> 1, 0);
 | 
| +  assertEquals(b >>> 1, 0);
 | 
|  }
 | 
|  
 | 
| -function test_nonaliasing_store1() {
 | 
| -  var a = new B(2, 3), b = new B(3, 4);
 | 
| -  b.x = 4;
 | 
| -  var f = a.x;
 | 
| -  b.x = 5;
 | 
| -  var g = a.x;
 | 
| -  b.x = 6;
 | 
| -  var h = a.x;
 | 
| -  b.x = 7;
 | 
| -  return f + g + h + a.x;
 | 
| +function testTrueRightHandSide() {
 | 
| +  if (t) b = true;
 | 
| +  assertEquals(1 |   b, 1);
 | 
| +  assertEquals(1 &   b, 1);
 | 
| +  assertEquals(1 ^   b, 0);
 | 
| +  assertEquals(1 <<  b, 2);
 | 
| +  assertEquals(1 >>  b, 0);
 | 
| +  assertEquals(1 >>> b, 0);
 | 
|  }
 | 
|  
 | 
| -function killall() {
 | 
| -  try { } catch(e) { }
 | 
| +function testBothSides() {
 | 
| +  if (t) a = true;
 | 
| +  if (t) b = false;
 | 
| +  assertEquals(a |   b, 1);
 | 
| +  assertEquals(a &   b, 0);
 | 
| +  assertEquals(a ^   b, 1);
 | 
| +  assertEquals(a <<  b, 1);
 | 
| +  assertEquals(a >>  b, 1);
 | 
| +  assertEquals(a >>> b, 1);
 | 
|  }
 | 
|  
 | 
| -%NeverOptimizeFunction(killall);
 | 
|  
 | 
| -function test_store_load_kill() {
 | 
| -  var a = new B(1, 2);
 | 
| -  a.x = 4;
 | 
| -  var f = a.x;
 | 
| -  a.x = 5;
 | 
| -  var g = a.x;
 | 
| -  killall();
 | 
| -  a.x = 6;
 | 
| -  var h = a.x;
 | 
| -  a.x = 7;
 | 
| -  return f + g + h + a.x;
 | 
| -}
 | 
| -
 | 
| -function test_store_store() {
 | 
| -  var a = new B(6, 7);
 | 
| -  a.x = 7;
 | 
| -  a.x = 7;
 | 
| -  a.x = 7;
 | 
| -  a.x = 7;
 | 
| -  return a.x;
 | 
| -}
 | 
| -
 | 
| -function test(x, f) {
 | 
| -  assertEquals(x, f());
 | 
| -  assertEquals(x, f());
 | 
| -  %OptimizeFunctionOnNextCall(f);
 | 
| -  assertEquals(x, f());
 | 
| -}
 | 
| -
 | 
| -test(4, test_load);
 | 
| -test(22, test_store_load);
 | 
| -test(8, test_nonaliasing_store1);
 | 
| -test(22, test_store_load_kill);
 | 
| -test(7, test_store_store);
 | 
| +testFalseLeftHandSide();
 | 
| +testFalseRightHandSide();
 | 
| +testTrueLeftHandSide();
 | 
| +testTrueRightHandSide();
 | 
| +testFalseLeftHandSide();
 | 
| +testFalseRightHandSide();
 | 
| +testTrueLeftHandSide();
 | 
| +testTrueRightHandSide();
 | 
| +testBothSides();
 | 
| +testBothSides();
 | 
| 
 |