try{} catch (x) {} var callStack = []; function currentFunc() { return callStack[0]; } function reportFailure () { var funcName = currentFunc(); // play with the result to cause a SEGV. var prefix = (funcName) ? funcName : ""; // Use OSR to compile the function at the end of the first run. for (var i=0; i < 50; i++) ; } callStack[0] = 'test'; // Run and compile with a string as result of currentFunc. reportFailure(); callStack[0] = undefined; // Use previously compiled code with the string assumption. reportFailure();