| Index: test/mjsunit/bugs/bug-proto.js
|
| diff --git a/src/marking-thread.h b/test/mjsunit/bugs/bug-proto.js
|
| similarity index 59%
|
| copy from src/marking-thread.h
|
| copy to test/mjsunit/bugs/bug-proto.js
|
| index 9efa3af13262165972abf179defac6f83fed4ac9..149088e9de96997a03bf03dc112d1c86ff5faacc 100644
|
| --- a/src/marking-thread.h
|
| +++ b/test/mjsunit/bugs/bug-proto.js
|
| @@ -25,47 +25,38 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -#ifndef V8_MARKING_THREAD_H_
|
| -#define V8_MARKING_THREAD_H_
|
| +var realmA = Realm.current();
|
| +var realmB = Realm.create();
|
| +assertEquals(0, realmA);
|
| +assertEquals(1, realmB);
|
| +
|
| +// The global objects match the realms' this binding.
|
| +assertSame(this, Realm.global(realmA));
|
| +assertSame(Realm.eval(realmB, "this"), Realm.global(realmB));
|
| +assertFalse(this === Realm.global(realmB));
|
| +
|
| +// The global object is not accessible cross-realm.
|
| +var x = 3;
|
| +Realm.shared = this;
|
| +assertThrows("Realm.eval(realmB, 'x')");
|
| +assertSame(undefined, Realm.eval(realmB, "this.x"));
|
| +assertSame(undefined, Realm.eval(realmB, "Realm.shared.x"));
|
| +
|
| +Realm.eval(realmB, "Realm.global(0).y = 1");
|
| +assertThrows("y");
|
| +assertSame(undefined, this.y);
|
| +
|
| +// Can get or set other objects' properties cross-realm.
|
| +var p = {a: 1};
|
| +var o = {__proto__: p, b: 2};
|
| +Realm.shared = o;
|
| +assertSame(1, Realm.eval(realmB, "Realm.shared.a"));
|
| +assertSame(2, Realm.eval(realmB, "Realm.shared.b"));
|
| +
|
| +// Cannot get or set a prototype cross-realm.
|
| +assertSame(undefined, Realm.eval(realmB, "Realm.shared.__proto__"));
|
| +
|
| +Realm.eval(realmB, "Realm.shared.__proto__ = {c: 3}");
|
| +assertSame(1, o.a);
|
| +assertSame(undefined, o.c);
|
|
|
| -#include "atomicops.h"
|
| -#include "flags.h"
|
| -#include "platform.h"
|
| -#include "v8utils.h"
|
| -
|
| -#include "spaces.h"
|
| -
|
| -#include "heap.h"
|
| -
|
| -namespace v8 {
|
| -namespace internal {
|
| -
|
| -class MarkingThread : public Thread {
|
| - public:
|
| - explicit MarkingThread(Isolate* isolate);
|
| -
|
| - void Run();
|
| - void Stop();
|
| - void StartMarking();
|
| - void WaitForMarkingThread();
|
| -
|
| - ~MarkingThread() {
|
| - delete start_marking_semaphore_;
|
| - delete end_marking_semaphore_;
|
| - delete stop_semaphore_;
|
| - }
|
| -
|
| - private:
|
| - Isolate* isolate_;
|
| - Heap* heap_;
|
| - Semaphore* start_marking_semaphore_;
|
| - Semaphore* end_marking_semaphore_;
|
| - Semaphore* stop_semaphore_;
|
| - volatile AtomicWord stop_thread_;
|
| - int id_;
|
| - static Atomic32 id_counter_;
|
| -};
|
| -
|
| -} } // namespace v8::internal
|
| -
|
| -#endif // V8_MARKING_THREAD_H_
|
|
|