| 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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 assertFalse(proto === Object.prototype); | 89 assertFalse(proto === Object.prototype); |
| 90 assertTrue(proto === otherObject.prototype); | 90 assertTrue(proto === otherObject.prototype); |
| 91 | 91 |
| 92 // Check function constructor. | 92 // Check function constructor. |
| 93 var ctor_script = "Function"; | 93 var ctor_script = "Function"; |
| 94 var ctor_a_script = | 94 var ctor_a_script = |
| 95 "(function() { return Function.apply(this, ['return 1;']); })"; | 95 "(function() { return Function.apply(this, ['return 1;']); })"; |
| 96 var ctor_b_script = "Function.bind(this, 'return 1;')"; | 96 var ctor_b_script = "Function.bind(this, 'return 1;')"; |
| 97 var ctor_c_script = | 97 var ctor_c_script = |
| 98 "(function() { return Function.call(this, 'return 1;'); })"; | 98 "(function() { return Function.call(this, 'return 1;'); })"; |
| 99 // Also check Promise constructor. |
| 100 var promise_ctor_script = "Promise"; |
| 99 Realm.shared = { | 101 Realm.shared = { |
| 100 ctor_0 : Realm.eval(realms[0], ctor_script), | 102 ctor_0 : Realm.eval(realms[0], ctor_script), |
| 101 ctor_1 : Realm.eval(realms[1], ctor_script), | 103 ctor_1 : Realm.eval(realms[1], ctor_script), |
| 102 ctor_a_0 : Realm.eval(realms[0], ctor_a_script), | 104 ctor_a_0 : Realm.eval(realms[0], ctor_a_script), |
| 103 ctor_a_1 : Realm.eval(realms[1], ctor_a_script), | 105 ctor_a_1 : Realm.eval(realms[1], ctor_a_script), |
| 104 ctor_b_0 : Realm.eval(realms[0], ctor_b_script), | 106 ctor_b_0 : Realm.eval(realms[0], ctor_b_script), |
| 105 ctor_b_1 : Realm.eval(realms[1], ctor_b_script), | 107 ctor_b_1 : Realm.eval(realms[1], ctor_b_script), |
| 106 ctor_c_0 : Realm.eval(realms[0], ctor_c_script), | 108 ctor_c_0 : Realm.eval(realms[0], ctor_c_script), |
| 107 ctor_c_1 : Realm.eval(realms[1], ctor_c_script), | 109 ctor_c_1 : Realm.eval(realms[1], ctor_c_script), |
| 110 promise_ctor_0 : Realm.eval(realms[0], promise_ctor_script), |
| 111 promise_ctor_1 : Realm.eval(realms[1], promise_ctor_script), |
| 108 } | 112 } |
| 109 var script_0 = " \ | 113 var script_0 = " \ |
| 110 var ctor_0 = Realm.shared.ctor_0; \ | 114 var ctor_0 = Realm.shared.ctor_0; \ |
| 115 var promise_ctor_0 = Realm.shared.promise_ctor_0; \ |
| 111 Realm.shared.direct_0 = ctor_0('return 1'); \ | 116 Realm.shared.direct_0 = ctor_0('return 1'); \ |
| 112 Realm.shared.indirect_0 = (function() { return ctor_0('return 1;'); })(); \ | 117 Realm.shared.indirect_0 = (function() { return ctor_0('return 1;'); })(); \ |
| 113 Realm.shared.apply_0 = ctor_0.apply(this, ['return 1']); \ | 118 Realm.shared.apply_0 = ctor_0.apply(this, ['return 1']); \ |
| 114 Realm.shared.bind_0 = ctor_0.bind(this, 'return 1')(); \ | 119 Realm.shared.bind_0 = ctor_0.bind(this, 'return 1')(); \ |
| 115 Realm.shared.call_0 = ctor_0.call(this, 'return 1'); \ | 120 Realm.shared.call_0 = ctor_0.call(this, 'return 1'); \ |
| 116 Realm.shared.proxy_0 = new Proxy(ctor_0, {})('return 1'); \ | 121 Realm.shared.proxy_0 = new Proxy(ctor_0, {})('return 1'); \ |
| 117 Realm.shared.reflect_0 = Reflect.apply(ctor_0, this, ['return 1']); \ | 122 Realm.shared.reflect_0 = Reflect.apply(ctor_0, this, ['return 1']); \ |
| 118 Realm.shared.a_0 = Realm.shared.ctor_a_0(); \ | 123 Realm.shared.a_0 = Realm.shared.ctor_a_0(); \ |
| 119 Realm.shared.b_0 = Realm.shared.ctor_b_0(); \ | 124 Realm.shared.b_0 = Realm.shared.ctor_b_0(); \ |
| 120 Realm.shared.c_0 = Realm.shared.ctor_c_0(); \ | 125 Realm.shared.c_0 = Realm.shared.ctor_c_0(); \ |
| 126 Realm.shared.p_0 = new promise_ctor_0((res,rej) => res(1)); \ |
| 121 "; | 127 "; |
| 122 script = script_0 + script_0.replace(/_0/g, "_1"); | 128 script = script_0 + script_0.replace(/_0/g, "_1"); |
| 123 Realm.eval(realms[0], script); | 129 Realm.eval(realms[0], script); |
| 124 assertSame(1, Realm.shared.direct_0()); | 130 assertSame(1, Realm.shared.direct_0()); |
| 125 assertSame(1, Realm.shared.indirect_0()); | 131 assertSame(1, Realm.shared.indirect_0()); |
| 126 assertSame(1, Realm.shared.apply_0()); | 132 assertSame(1, Realm.shared.apply_0()); |
| 127 assertSame(1, Realm.shared.bind_0()); | 133 assertSame(1, Realm.shared.bind_0()); |
| 128 assertSame(1, Realm.shared.call_0()); | 134 assertSame(1, Realm.shared.call_0()); |
| 129 assertSame(1, Realm.shared.proxy_0()); | 135 assertSame(1, Realm.shared.proxy_0()); |
| 130 assertSame(1, Realm.shared.reflect_0()); | 136 assertSame(1, Realm.shared.reflect_0()); |
| 131 assertSame(1, Realm.shared.a_0()); | 137 assertSame(1, Realm.shared.a_0()); |
| 132 assertSame(1, Realm.shared.b_0()); | 138 assertSame(1, Realm.shared.b_0()); |
| 133 assertSame(1, Realm.shared.c_0()); | 139 assertSame(1, Realm.shared.c_0()); |
| 140 assertInstanceof(Realm.shared.p_0, Realm.shared.promise_ctor_0); |
| 134 assertSame(undefined, Realm.shared.direct_1); | 141 assertSame(undefined, Realm.shared.direct_1); |
| 135 assertSame(undefined, Realm.shared.indirect_1); | 142 assertSame(undefined, Realm.shared.indirect_1); |
| 136 assertSame(undefined, Realm.shared.apply_1); | 143 assertSame(undefined, Realm.shared.apply_1); |
| 137 assertSame(undefined, Realm.shared.bind_1); | 144 assertSame(undefined, Realm.shared.bind_1); |
| 138 assertSame(undefined, Realm.shared.call_1); | 145 assertSame(undefined, Realm.shared.call_1); |
| 139 assertSame(undefined, Realm.shared.proxy_1); | 146 assertSame(undefined, Realm.shared.proxy_1); |
| 140 assertSame(undefined, Realm.shared.reflect_1); | 147 assertSame(undefined, Realm.shared.reflect_1); |
| 141 assertSame(undefined, Realm.shared.a_1); | 148 assertSame(undefined, Realm.shared.a_1); |
| 142 assertSame(undefined, Realm.shared.b_1); | 149 assertSame(undefined, Realm.shared.b_1); |
| 143 assertSame(undefined, Realm.shared.c_1); | 150 assertSame(undefined, Realm.shared.c_1); |
| 151 assertSame(undefined, Realm.shared.p_1); |
| 144 Realm.eval(realms[1], script); | 152 Realm.eval(realms[1], script); |
| 145 assertSame(undefined, Realm.shared.direct_0); | 153 assertSame(undefined, Realm.shared.direct_0); |
| 146 assertSame(undefined, Realm.shared.indirect_0); | 154 assertSame(undefined, Realm.shared.indirect_0); |
| 147 assertSame(undefined, Realm.shared.apply_0); | 155 assertSame(undefined, Realm.shared.apply_0); |
| 148 assertSame(undefined, Realm.shared.bind_0); | 156 assertSame(undefined, Realm.shared.bind_0); |
| 149 assertSame(undefined, Realm.shared.call_0); | 157 assertSame(undefined, Realm.shared.call_0); |
| 150 assertSame(undefined, Realm.shared.proxy_0); | 158 assertSame(undefined, Realm.shared.proxy_0); |
| 151 assertSame(undefined, Realm.shared.reflect_0); | 159 assertSame(undefined, Realm.shared.reflect_0); |
| 152 assertSame(undefined, Realm.shared.a_0); | 160 assertSame(undefined, Realm.shared.a_0); |
| 153 assertSame(undefined, Realm.shared.b_0); | 161 assertSame(undefined, Realm.shared.b_0); |
| 154 assertSame(undefined, Realm.shared.c_0); | 162 assertSame(undefined, Realm.shared.c_0); |
| 163 assertSame(undefined, Realm.shared.p_0); |
| 155 assertSame(1, Realm.shared.direct_1()); | 164 assertSame(1, Realm.shared.direct_1()); |
| 156 assertSame(1, Realm.shared.indirect_1()); | 165 assertSame(1, Realm.shared.indirect_1()); |
| 157 assertSame(1, Realm.shared.apply_1()); | 166 assertSame(1, Realm.shared.apply_1()); |
| 158 assertSame(1, Realm.shared.bind_1()); | 167 assertSame(1, Realm.shared.bind_1()); |
| 159 assertSame(1, Realm.shared.call_1()); | 168 assertSame(1, Realm.shared.call_1()); |
| 160 assertSame(1, Realm.shared.proxy_1()); | 169 assertSame(1, Realm.shared.proxy_1()); |
| 161 assertSame(1, Realm.shared.reflect_1()); | 170 assertSame(1, Realm.shared.reflect_1()); |
| 162 assertSame(1, Realm.shared.a_1()); | 171 assertSame(1, Realm.shared.a_1()); |
| 163 assertSame(1, Realm.shared.b_1()); | 172 assertSame(1, Realm.shared.b_1()); |
| 164 assertSame(1, Realm.shared.c_1()); | 173 assertSame(1, Realm.shared.c_1()); |
| 174 assertInstanceof(Realm.shared.p_1, Realm.shared.promise_ctor_1); |
| OLD | NEW |