Bug 832670 - Don't verify barriers when unwinding frames that finished in JM, r=billm.

This commit is contained in:
Brian Hackett 2013-02-05 09:44:52 -07:00
parent 84fbd821c3
commit e62502b424
2 changed files with 26 additions and 1 deletions

View File

@ -0,0 +1,24 @@
gczeal(4);
eval("(function() { " + "\
for ( var CHARCODE = 1024; CHARCODE < 65536; CHARCODE+= 1234 ) {\
unescape( '%u'+(ToUnicodeString(CHARCODE)).substring(0,3) )\
}\
function ToUnicodeString( n ) {\
var string = ToHexString(n);\
return string;\
}\
function ToHexString( n ) {\
var hex = new Array();\
for ( var mag = 1; Math.pow(16,mag) <= n ; mag++ ) {}\
for ( index = 0, mag -= 1; mag > 0; index++, mag-- ) {\
hex[index] = Math.floor( n / Math.pow(16,mag) );\
var string ='';\
string <<= 'A';\
string += hex[index];\
}\
if ( 'var MYVAR=Number.NEGATIVE_INFINITY;MYVAR++;MYVAR' )\
string = '0' + string;\
return string;\
}\
" + " })();");

View File

@ -3334,6 +3334,8 @@ END_CASE(JSOP_ARRAYPUSH)
Probes::exitScript(cx, script, script->function(), regs.fp());
regs.fp()->setFinishedInInterpreter();
gc::MaybeVerifyBarriers(cx, true);
#ifdef JS_METHODJIT
/*
* This path is used when it's guaranteed the method can be finished
@ -3342,7 +3344,6 @@ END_CASE(JSOP_ARRAYPUSH)
leave_on_safe_point:
#endif
gc::MaybeVerifyBarriers(cx, true);
return interpReturnOK ? Interpret_Ok : Interpret_Error;
}