Source code

Revision control

Copy as Markdown

Other Tools

const thisGlobal = this;
const otherGlobalSameCompartment = newGlobal({sameCompartmentAs: thisGlobal});
const otherGlobalNewCompartment = newGlobal({newCompartment: true});
const globals = [thisGlobal, otherGlobalSameCompartment, otherGlobalNewCompartment];
function testProperties(global, count) {
let {object: source, transplant} = transplantableObject();
// Create a bunch properties on |source|, which force allocation of dynamic
// slots.
for (let i = 0; i < count; i++) {
source["foo" + i] = i;
}
// Calling |transplant| transplants the object and then returns undefined.
transplant(global);
// Check the properties were copied over to the swapped object.
for (let i = 0; i < count; i++) {
assertEq(source["foo" + i], i);
}
}
for (let global of globals) {
for (let count of [0, 10, 30]) {
testProperties(global, count);
}
}