| description( |
| "This test checks that implicit reentry to global code through a getter does not clobber the calling register file." |
| ); |
| |
| var testVar = "FAIL"; |
| function testGlobalCode(test) { |
| document.write("<script>"+test+"<"+"/script>"); |
| } |
| var testObject = { |
| get getterTest(){ testGlobalCode("var a, b, c, d; testVar = 'PASS';"); }, |
| set setterTest(x){ testGlobalCode("var e, f, g, h; testVar = 'PASS';"); }, |
| toString: function() { testGlobalCode("var i, j, k, l; testVar = 'PASS';"); return ''; }, |
| valueOf: function() { testGlobalCode("var m, n, o, p; testVar = 'PASS';"); return 0; }, |
| toStringTest: function() { "" + this; }, |
| valueOfTest: function() { 0 * this; } |
| }; |
| |
| shouldBe("testObject.getterTest; testVar;", '"PASS"'); |
| var testVar = "FAIL"; |
| shouldBe("testObject.setterTest = 1; testVar;", '"PASS"'); |
| var testVar = "FAIL"; |
| shouldBe("testObject.toStringTest(); testVar;", '"PASS"'); |
| var testVar = "FAIL"; |
| shouldBe("testObject.valueOfTest(); testVar;", '"PASS"'); |