for (int i = 0; i < EXCEPTION_MAX; i++) { if (ei.handlerLabels[i] != 0 && ei.currentFinally == null) { endCatch(ei, i, finallyStart); ei.exceptionStarts[i] = 0; ei.currentFinally = finallyBlock;
int[] handlerLabels = new int[EXCEPTION_MAX]; exceptionManager.pushExceptionInfo(node); if (catchTarget != null) { handlerLabels[JAVASCRIPT_EXCEPTION] = cfw.acquireLabel(); handlerLabels[FINALLY_EXCEPTION] = cfw.acquireLabel(); exceptionManager.setHandlers(handlerLabels, startLabel); if (child == catchTarget) { int catchLabel = getTargetLabel(catchTarget); exceptionManager.removeHandler(JAVASCRIPT_EXCEPTION, catchLabel); exceptionManager.removeHandler(EVALUATOR_EXCEPTION, catchLabel); exceptionManager.removeHandler(ECMAERROR_EXCEPTION, catchLabel); exceptionManager.removeHandler(THROWABLE_EXCEPTION, catchLabel); exceptionManager.popExceptionInfo();
int[] handlerLabels = new int[EXCEPTION_MAX]; exceptionManager.pushExceptionInfo(node); if (catchTarget != null) { handlerLabels[JAVASCRIPT_EXCEPTION] = cfw.acquireLabel(); handlerLabels[FINALLY_EXCEPTION] = cfw.acquireLabel(); exceptionManager.setHandlers(handlerLabels, startLabel); if (child == catchTarget) { int catchLabel = getTargetLabel(catchTarget); exceptionManager.removeHandler(JAVASCRIPT_EXCEPTION, catchLabel); exceptionManager.removeHandler(EVALUATOR_EXCEPTION, catchLabel); exceptionManager.removeHandler(ECMAERROR_EXCEPTION, catchLabel); exceptionManager.removeHandler(THROWABLE_EXCEPTION, catchLabel); exceptionManager.popExceptionInfo();
int[] handlerLabels = new int[EXCEPTION_MAX]; exceptionManager.pushExceptionInfo(node); if (catchTarget != null) { handlerLabels[JAVASCRIPT_EXCEPTION] = cfw.acquireLabel(); handlerLabels[FINALLY_EXCEPTION] = cfw.acquireLabel(); exceptionManager.setHandlers(handlerLabels, startLabel); if (child == catchTarget) { int catchLabel = getTargetLabel(catchTarget); exceptionManager.removeHandler(JAVASCRIPT_EXCEPTION, catchLabel); exceptionManager.removeHandler(EVALUATOR_EXCEPTION, catchLabel); exceptionManager.removeHandler(ECMAERROR_EXCEPTION, catchLabel); exceptionManager.removeHandler(THROWABLE_EXCEPTION, catchLabel); exceptionManager.popExceptionInfo();
int[] handlerLabels = new int[EXCEPTION_MAX]; exceptionManager.pushExceptionInfo(node); if (catchTarget != null) { handlerLabels[JAVASCRIPT_EXCEPTION] = cfw.acquireLabel(); handlerLabels[FINALLY_EXCEPTION] = cfw.acquireLabel(); exceptionManager.setHandlers(handlerLabels, startLabel); if (child == catchTarget) { int catchLabel = getTargetLabel(catchTarget); exceptionManager.removeHandler(JAVASCRIPT_EXCEPTION, catchLabel); exceptionManager.removeHandler(EVALUATOR_EXCEPTION, catchLabel); exceptionManager.removeHandler(ECMAERROR_EXCEPTION, catchLabel); exceptionManager.removeHandler(THROWABLE_EXCEPTION, catchLabel); exceptionManager.popExceptionInfo();
for (int i = 0; i < EXCEPTION_MAX; i++) { if (ei.handlerLabels[i] != 0 && ei.currentFinally == null) { endCatch(ei, i, finallyStart); ei.exceptionStarts[i] = 0; ei.currentFinally = finallyBlock;
for (int i = 0; i < EXCEPTION_MAX; i++) { if (ei.handlerLabels[i] != 0 && ei.currentFinally == null) { endCatch(ei, i, finallyStart); ei.exceptionStarts[i] = 0; ei.currentFinally = finallyBlock;
fBlock.resetTargets(); Node child = fBlock.getFirstChild(); exceptionManager.markInlineFinallyStart(fBlock, finallyStart); while (child != null) { generateStatement(child); child = child.getNext(); exceptionManager.markInlineFinallyEnd(fBlock, finallyEnd);
fBlock.resetTargets(); Node child = fBlock.getFirstChild(); exceptionManager.markInlineFinallyStart(fBlock, finallyStart); while (child != null) { generateStatement(child); child = child.getNext(); exceptionManager.markInlineFinallyEnd(fBlock, finallyEnd);
fBlock.resetTargets(); Node child = fBlock.getFirstChild(); exceptionManager.markInlineFinallyStart(fBlock, finallyStart); while (child != null) { generateStatement(child); child = child.getNext(); exceptionManager.markInlineFinallyEnd(fBlock, finallyEnd);
for (int i = 0; i < EXCEPTION_MAX; i++) { if (ei.handlerLabels[i] != 0 && ei.currentFinally == null) { endCatch(ei, i, finallyStart); ei.exceptionStarts[i] = 0; ei.currentFinally = finallyBlock;
fBlock.resetTargets(); Node child = fBlock.getFirstChild(); exceptionManager.markInlineFinallyStart(fBlock, finallyStart); while (child != null) { generateStatement(child); child = child.getNext(); exceptionManager.markInlineFinallyEnd(fBlock, finallyEnd);
/** * Remove an exception handler for the top try block. * * @param exceptionType one of the integer constants representing an * exception type * @param endLabel a label representing the end of the last bytecode * that should be handled by the exception * @returns the label of the exception handler associated with the * exception type */ int removeHandler(int exceptionType, int endLabel) { ExceptionInfo top = getTop(); if (top.handlerLabels[exceptionType] != 0) { int handlerLabel = top.handlerLabels[exceptionType]; endCatch(top, exceptionType, endLabel); top.handlerLabels[exceptionType] = 0; return handlerLabel; } return 0; }
/** * Remove an exception handler for the top try block. * * @param exceptionType one of the integer constants representing an * exception type * @param endLabel a label representing the end of the last bytecode * that should be handled by the exception * @returns the label of the exception handler associated with the * exception type */ int removeHandler(int exceptionType, int endLabel) { ExceptionInfo top = getTop(); if (top.handlerLabels[exceptionType] != 0) { int handlerLabel = top.handlerLabels[exceptionType]; endCatch(top, exceptionType, endLabel); top.handlerLabels[exceptionType] = 0; return handlerLabel; } return 0; }
/** * Remove an exception handler for the top try block. * * @param exceptionType one of the integer constants representing an * exception type * @param endLabel a label representing the end of the last bytecode * that should be handled by the exception * @returns the label of the exception handler associated with the * exception type */ int removeHandler(int exceptionType, int endLabel) { ExceptionInfo top = getTop(); if (top.handlerLabels[exceptionType] != 0) { int handlerLabel = top.handlerLabels[exceptionType]; endCatch(top, exceptionType, endLabel); top.handlerLabels[exceptionType] = 0; return handlerLabel; } return 0; }
/** * Remove an exception handler for the top try block. * * @param exceptionType one of the integer constants representing an * exception type * @param endLabel a label representing the end of the last bytecode * that should be handled by the exception * @returns the label of the exception handler associated with the * exception type */ int removeHandler(int exceptionType, int endLabel) { ExceptionInfo top = getTop(); if (top.handlerLabels[exceptionType] != 0) { int handlerLabel = top.handlerLabels[exceptionType]; endCatch(top, exceptionType, endLabel); top.handlerLabels[exceptionType] = 0; return handlerLabel; } return 0; }
/** * Register multiple exception handlers for the top try block. If the * exception type maps to a zero label, then it is ignored. * * @param handlerLabels a map from integer constants representing an * exception type to the label of the exception * handler * @param startLabel the label where all of the exception handling * begins */ void setHandlers(int[] handlerLabels, int startLabel) { ExceptionInfo top = getTop(); for (int i = 0; i < handlerLabels.length; i++) { if (handlerLabels[i] != 0) { addHandler(i, handlerLabels[i], startLabel); } } }
/** * Register multiple exception handlers for the top try block. If the * exception type maps to a zero label, then it is ignored. * * @param handlerLabels a map from integer constants representing an * exception type to the label of the exception * handler * @param startLabel the label where all of the exception handling * begins */ void setHandlers(int[] handlerLabels, int startLabel) { ExceptionInfo top = getTop(); for (int i = 0; i < handlerLabels.length; i++) { if (handlerLabels[i] != 0) { addHandler(i, handlerLabels[i], startLabel); } } }
/** * Register multiple exception handlers for the top try block. If the * exception type maps to a zero label, then it is ignored. * * @param handlerLabels a map from integer constants representing an * exception type to the label of the exception * handler * @param startLabel the label where all of the exception handling * begins */ void setHandlers(int[] handlerLabels, int startLabel) { ExceptionInfo top = getTop(); for (int i = 0; i < handlerLabels.length; i++) { if (handlerLabels[i] != 0) { addHandler(i, handlerLabels[i], startLabel); } } }
/** * Register multiple exception handlers for the top try block. If the * exception type maps to a zero label, then it is ignored. * * @param handlerLabels a map from integer constants representing an * exception type to the label of the exception * handler * @param startLabel the label where all of the exception handling * begins */ void setHandlers(int[] handlerLabels, int startLabel) { ExceptionInfo top = getTop(); for (int i = 0; i < handlerLabels.length; i++) { if (handlerLabels[i] != 0) { addHandler(i, handlerLabels[i], startLabel); } } }