# HG changeset patch # User Andreas Woess # Date 1329173226 -3600 # Node ID c47ca28d164a8c66fa292f19f8d088ac7d5f4e7e # Parent 7e5d8d1c74a105c9e0b9bf8aca92bc0e48665c51 Create exception dispatch even if catch type is not initialized yet. Previously, when there were multiple exception handlers, and an uninitialized catch type was preceding another (initialized) catch type, no exception dispatch would be created. This could lead to a deopt every time one of the later exceptions was thrown. diff -r 7e5d8d1c74a1 -r c47ca28d164a graal/com.oracle.max.graal.java/src/com/oracle/max/graal/java/GraphBuilderPhase.java --- a/graal/com.oracle.max.graal.java/src/com/oracle/max/graal/java/GraphBuilderPhase.java Tue Feb 14 12:29:11 2012 +0100 +++ b/graal/com.oracle.max.graal.java/src/com/oracle/max/graal/java/GraphBuilderPhase.java Mon Feb 13 23:47:06 2012 +0100 @@ -1446,7 +1446,7 @@ if (config.eagerResolving()) { catchType = lookupType(block.handler.catchTypeCPI(), INSTANCEOF); } - boolean initialized = (catchType instanceof RiResolvedType) && ((RiResolvedType) catchType).isInitialized(); + boolean initialized = (catchType instanceof RiResolvedType); if (initialized && config.getSkippedExceptionTypes() != null) { RiResolvedType resolvedCatchType = (RiResolvedType) catchType; for (RiResolvedType skippedType : config.getSkippedExceptionTypes()) {