function ropify(a,b,c) { | |
return a + b + c; | |
} | |
noInline(ropify); | |
function ropify2(a,b,c) { | |
return a + b + c; | |
} | |
noInline(ropify2); | |
let test = new String("test"); | |
for (let i = 0; i < 100000; i++) { | |
if (ropify("a", "b", test) !== "abtest") | |
throw "wrong on warmup"; | |
} | |
String.prototype[Symbol.toPrimitive] = function() { return "changed"; } | |
if (ropify("a", "b", test) !== "abchanged") | |
throw "watchpoint didn't fire"; | |
// Test we don't start doing the wrong thing if the prototype chain has been mucked with. | |
for (let i = 0; i < 100000; i++) { | |
if (ropify2("a", "b", test) !== "abchanged") | |
throw "wrong on warmup"; | |
} |