OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
700 function(f, x, y, o) { return %_CallFunction(o, x, y, f) }, | 700 function(f, x, y, o) { return %_CallFunction(o, x, y, f) }, |
701 function(f, x, y, o) { return %Call(o, x, y, f) }, | 701 function(f, x, y, o) { return %Call(o, x, y, f) }, |
702 function(f, x, y, o) { return %Apply(f, o, [null, x, y, null], 1, 2) }, | 702 function(f, x, y, o) { return %Apply(f, o, [null, x, y, null], 1, 2) }, |
703 function(f, x, y, o) { return %Apply(f, o, arguments, 2, 2) }, | 703 function(f, x, y, o) { return %Apply(f, o, arguments, 2, 2) }, |
704 function(f, x, y, o) { if (typeof o == "object") return o.f(x, y) }, | 704 function(f, x, y, o) { if (typeof o == "object") return o.f(x, y) }, |
705 function(f, x, y, o) { if (typeof o == "object") return o["f"](x, y) }, | 705 function(f, x, y, o) { if (typeof o == "object") return o["f"](x, y) }, |
706 function(f, x, y, o) { if (typeof o == "object") return (1, o).f(x, y) }, | 706 function(f, x, y, o) { if (typeof o == "object") return (1, o).f(x, y) }, |
707 function(f, x, y, o) { if (typeof o == "object") return (1, o)["f"](x, y) }, | 707 function(f, x, y, o) { if (typeof o == "object") return (1, o)["f"](x, y) }, |
708 ] | 708 ] |
709 var receivers = [o, global_object, undefined, null, 2, "bla", true] | 709 var receivers = [o, global_object, undefined, null, 2, "bla", true] |
710 var expectedNonStricts = [o, global_object, global_object, global_object] | 710 var expectedSloppies = [o, global_object, global_object, global_object] |
711 | 711 |
712 for (var t = 0; t < traps.length; ++t) { | 712 for (var t = 0; t < traps.length; ++t) { |
713 for (var i = 0; i < creates.length; ++i) { | 713 for (var i = 0; i < creates.length; ++i) { |
714 for (var j = 0; j < binds.length; ++j) { | 714 for (var j = 0; j < binds.length; ++j) { |
715 for (var k = 0; k < calls.length; ++k) { | 715 for (var k = 0; k < calls.length; ++k) { |
716 for (var m = 0; m < receivers.length; ++m) { | 716 for (var m = 0; m < receivers.length; ++m) { |
717 for (var n = 0; n < receivers.length; ++n) { | 717 for (var n = 0; n < receivers.length; ++n) { |
718 var bound = receivers[m] | 718 var bound = receivers[m] |
719 var receiver = receivers[n] | 719 var receiver = receivers[n] |
720 var func = binds[j](creates[i](traps[t]), bound, 31, 11) | 720 var func = binds[j](creates[i](traps[t]), bound, 31, 11) |
721 var expected = j > 0 ? bound : receiver | 721 var expected = j > 0 ? bound : receiver |
722 var expectedNonStrict = expectedNonStricts[j > 0 ? m : n] | 722 var expectedSloppy = expectedSloppies[j > 0 ? m : n] |
723 o.f = func | 723 o.f = func |
724 global_object.f = func | 724 global_object.f = func |
725 var x = calls[k](func, 11, 31, receiver) | 725 var x = calls[k](func, 11, 31, receiver) |
726 if (x !== undefined) { | 726 if (x !== undefined) { |
727 assertEquals(42, x.result) | 727 assertEquals(42, x.result) |
728 if (calls[k].length < 4) | 728 if (calls[k].length < 4) |
729 assertSame(x.strict ? undefined : global_object, x.receiver) | 729 assertSame(x.strict ? undefined : global_object, x.receiver) |
730 else if (x.strict) | 730 else if (x.strict) |
731 assertSame(expected, x.receiver) | 731 assertSame(expected, x.receiver) |
732 else if (expectedNonStrict === undefined) | 732 else if (expectedSloppy === undefined) |
733 assertSame(expected, x.receiver.valueOf()) | 733 assertSame(expected, x.receiver.valueOf()) |
734 else | 734 else |
735 assertSame(expectedNonStrict, x.receiver) | 735 assertSame(expectedSloppy, x.receiver) |
736 } | 736 } |
737 } | 737 } |
738 } | 738 } |
739 } | 739 } |
740 } | 740 } |
741 } | 741 } |
742 } | 742 } |
743 } | 743 } |
744 | 744 |
745 TestCalls() | 745 TestCalls() |
(...skipping 19 matching lines...) Expand all Loading... |
765 with (this) { | 765 with (this) { |
766 assertEquals(this, fp()); | 766 assertEquals(this, fp()); |
767 assertEquals(this, gp()); | 767 assertEquals(this, gp()); |
768 } | 768 } |
769 | 769 |
770 with ({}) { | 770 with ({}) { |
771 assertEquals(Realm.shared.fg, fp()); | 771 assertEquals(Realm.shared.fg, fp()); |
772 assertEquals(Realm.shared.gg, gp()); | 772 assertEquals(Realm.shared.gg, gp()); |
773 } | 773 } |
774 } | 774 } |
OLD | NEW |