mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-16 14:55:47 +00:00
In Interpreter.interpret THROW/JTHROW switch cases do not use result variable to hold temporary values to throw, use locally declared "Object exception" for that as result should only be used for value of Interpreter.interpret
This commit is contained in:
parent
88848ef677
commit
5024940d53
@ -2190,20 +2190,22 @@ public class Interpreter extends LabelTable {
|
||||
case TokenStream.UNDEFINED :
|
||||
stack[++stackTop] = Undefined.instance;
|
||||
break;
|
||||
case TokenStream.THROW :
|
||||
result = stack[stackTop];
|
||||
if (result == DBL_MRK)
|
||||
result = doubleWrap(sDbl[stackTop]);
|
||||
case TokenStream.THROW : {
|
||||
Object exception = stack[stackTop];
|
||||
if (exception == DBL_MRK)
|
||||
exception = doubleWrap(sDbl[stackTop]);
|
||||
--stackTop;
|
||||
throw new JavaScriptException(result);
|
||||
case TokenStream.JTHROW :
|
||||
result = stack[stackTop];
|
||||
// No need to check for DBL_MRK: result is Exception
|
||||
throw new JavaScriptException(exception);
|
||||
}
|
||||
case TokenStream.JTHROW : {
|
||||
Object exception = stack[stackTop];
|
||||
// No need to check for DBL_MRK: exception must be Exception
|
||||
--stackTop;
|
||||
if (result instanceof JavaScriptException)
|
||||
throw (JavaScriptException)result;
|
||||
if (exception instanceof JavaScriptException)
|
||||
throw (JavaScriptException)exception;
|
||||
else
|
||||
throw (RuntimeException)result;
|
||||
throw (RuntimeException)exception;
|
||||
}
|
||||
case TokenStream.ENTERWITH : {
|
||||
Object lhs = stack[stackTop];
|
||||
if (lhs == DBL_MRK) lhs = doubleWrap(sDbl[stackTop]);
|
||||
|
Loading…
Reference in New Issue
Block a user