OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 var realms = [Realm.current(), Realm.create()]; | 5 var realms = [Realm.current(), Realm.create()]; |
6 | 6 |
7 // Check stack trace filtering across security contexts. | 7 // Check stack trace filtering across security contexts. |
8 var thrower_script = | 8 var thrower_script = |
9 "(function () { Realm.eval(Realm.current(), 'throw Error()') })"; | 9 "(function () { Realm.eval(Realm.current(), 'throw Error()') })"; |
10 Realm.shared = { | 10 Realm.shared = { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 Realm.shared.caller_1(f_1); \ | 63 Realm.shared.caller_1(f_1); \ |
64 "; | 64 "; |
65 | 65 |
66 Realm.eval(realms[1], script); | 66 Realm.eval(realms[1], script); |
67 assertSame(null, Realm.shared.result_0); | 67 assertSame(null, Realm.shared.result_0); |
68 assertSame(Realm.shared.caller_1, Realm.shared.result_1); | 68 assertSame(Realm.shared.caller_1, Realm.shared.result_1); |
69 | 69 |
70 Realm.eval(realms[0], script); | 70 Realm.eval(realms[0], script); |
71 assertSame(Realm.shared.caller_0, Realm.shared.result_0); | 71 assertSame(Realm.shared.caller_0, Realm.shared.result_0); |
72 assertSame(null, Realm.shared.result_1); | 72 assertSame(null, Realm.shared.result_1); |
| 73 |
| 74 |
| 75 // Check function constructor. |
| 76 var ctor_script = "Function.constructor"; |
| 77 var ctor_a_script = |
| 78 "(function() { return Function.constructor.apply(this, ['return 1;']); })"; |
| 79 var ctor_b_script = "Function.constructor.bind(this, 'return 1;')"; |
| 80 var ctor_c_script = |
| 81 "(function() { return Function.constructor.call(this, 'return 1;'); })"; |
| 82 Realm.shared = { |
| 83 ctor_0 : Realm.eval(realms[0], ctor_script), |
| 84 ctor_1 : Realm.eval(realms[1], ctor_script), |
| 85 ctor_a_0 : Realm.eval(realms[0], ctor_a_script), |
| 86 ctor_a_1 : Realm.eval(realms[1], ctor_a_script), |
| 87 ctor_b_0 : Realm.eval(realms[0], ctor_b_script), |
| 88 ctor_b_1 : Realm.eval(realms[1], ctor_b_script), |
| 89 ctor_c_0 : Realm.eval(realms[0], ctor_c_script), |
| 90 ctor_c_1 : Realm.eval(realms[1], ctor_c_script), |
| 91 } |
| 92 |
| 93 var script_0 = " \ |
| 94 var ctor_0 = Realm.shared.ctor_0; \ |
| 95 Realm.shared.direct_0 = ctor_0('return 1'); \ |
| 96 Realm.shared.indirect_0 = (function() { return ctor_0('return 1;'); })(); \ |
| 97 Realm.shared.apply_0 = ctor_0.apply(this, ['return 1']); \ |
| 98 Realm.shared.bind_0 = ctor_0.bind(this, 'return 1')(); \ |
| 99 Realm.shared.call_0 = ctor_0.call(this, 'return 1'); \ |
| 100 Realm.shared.a_0 = Realm.shared.ctor_a_0(); \ |
| 101 Realm.shared.b_0 = Realm.shared.ctor_b_0(); \ |
| 102 Realm.shared.c_0 = Realm.shared.ctor_c_0(); \ |
| 103 "; |
| 104 |
| 105 script = script_0 + script_0.replace(/_0/g, "_1"); |
| 106 |
| 107 Realm.eval(realms[0], script); |
| 108 assertSame(1, Realm.shared.direct_0()); |
| 109 assertSame(1, Realm.shared.indirect_0()); |
| 110 assertSame(1, Realm.shared.apply_0()); |
| 111 assertSame(1, Realm.shared.bind_0()); |
| 112 assertSame(1, Realm.shared.call_0()); |
| 113 assertSame(1, Realm.shared.a_0()); |
| 114 assertSame(1, Realm.shared.b_0()); |
| 115 assertSame(1, Realm.shared.c_0()); |
| 116 assertSame(undefined, Realm.shared.direct_1); |
| 117 assertSame(undefined, Realm.shared.indirect_1); |
| 118 assertSame(undefined, Realm.shared.apply_1); |
| 119 assertSame(undefined, Realm.shared.bind_1); |
| 120 assertSame(undefined, Realm.shared.call_1); |
| 121 assertSame(1, Realm.shared.a_1()); |
| 122 assertSame(undefined, Realm.shared.b_1); |
| 123 assertSame(1, Realm.shared.c_1()); |
| 124 |
| 125 Realm.eval(realms[1], script); |
| 126 assertSame(undefined, Realm.shared.direct_0); |
| 127 assertSame(undefined, Realm.shared.indirect_0); |
| 128 assertSame(undefined, Realm.shared.apply_0); |
| 129 assertSame(undefined, Realm.shared.bind_0); |
| 130 assertSame(undefined, Realm.shared.call_0); |
| 131 assertSame(1, Realm.shared.a_0()); |
| 132 assertSame(undefined, Realm.shared.b_0); |
| 133 assertSame(1, Realm.shared.c_1()); |
| 134 assertSame(1, Realm.shared.direct_1()); |
| 135 assertSame(1, Realm.shared.indirect_1()); |
| 136 assertSame(1, Realm.shared.apply_1()); |
| 137 assertSame(1, Realm.shared.bind_1()); |
| 138 assertSame(1, Realm.shared.call_1()); |
| 139 assertSame(1, Realm.shared.a_1()); |
| 140 assertSame(1, Realm.shared.b_1()); |
| 141 assertSame(1, Realm.shared.c_1()); |
OLD | NEW |