Chromium Code Reviews| Index: test/mjsunit/regress/regress-1412.js |
| diff --git a/test/mjsunit/bugs/bug-1412.js b/test/mjsunit/regress/regress-1412.js |
| similarity index 66% |
| rename from test/mjsunit/bugs/bug-1412.js |
| rename to test/mjsunit/regress/regress-1412.js |
| index 8e700d5f6cc1d5125be8aa12a6b4c005d36a5ff8..4b4fee61df61aa64906a32d7020e1020fdf37d23 100644 |
| --- a/test/mjsunit/bugs/bug-1412.js |
| +++ b/test/mjsunit/regress/regress-1412.js |
| @@ -25,10 +25,35 @@ |
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| -function f() { "use strict"; print(this); } |
| +// Test that the apply with arguments optimization passes values |
| +// unchanged to strict mode functions. |
|
Rico
2011/05/31 10:31:15
unchanged to strict mode functions -> unchanged to
Mads Ager (chromium)
2011/05/31 10:33:22
Done.
|
| -function g() { assertEquals(void 0, f.apply(undefined, arguments)); } |
| +// Flags: --allow-natives-syntax |
| -for (var i = 0; i < 10; i++) g(); |
| -%OptimizeFunctionOnNextCall(g); |
| -g(); |
| +function strict() { "use strict"; return this; } |
| + |
| +function test_strict() { |
| + assertEquals(void 0, strict.apply(undefined, arguments)); |
| + assertEquals(42, strict.apply(42, arguments)); |
| + assertEquals("asdf", strict.apply("asdf", arguments)); |
| +} |
| + |
| +for (var i = 0; i < 10; i++) test_strict(); |
| +%OptimizeFunctionOnNextCall(test_strict); |
| +test_strict(); |
| + |
| +function test_builtin(receiver) { |
| + Object.prototype.valueOf.apply(receiver, arguments); |
| +} |
| + |
| +for (var i = 0; i < 10; i++) test_builtin(this); |
| +%OptimizeFunctionOnNextCall(test_builtin); |
| +test_builtin(this); |
| + |
| +var exception = false; |
| +try { |
| + test_builtin(undefined); |
| +} catch(e) { |
| + exception = true; |
| +} |
| +assertTrue(exception); |