# HG changeset patch # User Doug Simon # Date 1453994690 -3600 # Node ID 0dee85d7e73efd52408875fdd42bcec5970904ca # Parent 584975185d36db4453f2eee3225f0c01cbf8e0c7 defend against missing LocalVariableTable method attribute and missing slots in the table diff -r 584975185d36 -r 0dee85d7e73e graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Thu Jan 28 11:16:03 2016 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Thu Jan 28 16:24:50 2016 +0100 @@ -51,6 +51,7 @@ import jdk.vm.ci.meta.JavaConstant; import jdk.vm.ci.meta.JavaKind; import jdk.vm.ci.meta.Local; +import jdk.vm.ci.meta.LocalVariableTable; import jdk.vm.ci.meta.LocationIdentity; import jdk.vm.ci.meta.MetaAccessProvider; import jdk.vm.ci.meta.ResolvedJavaMethod; @@ -181,11 +182,16 @@ private boolean initNames(ResolvedJavaMethod method, int parameterCount) { names = new String[parameterCount]; int slotIdx = 0; - for (int i = 0; i < names.length; i++) { - names[i] = method.getLocalVariableTable().getLocal(slotIdx, 0).getName(); - - JavaKind kind = method.getSignature().getParameterKind(i); - slotIdx += kind.getSlotCount(); + LocalVariableTable localVariableTable = method.getLocalVariableTable(); + if (localVariableTable != null) { + for (int i = 0; i < names.length; i++) { + Local local = localVariableTable.getLocal(slotIdx, 0); + if (local != null) { + names[i] = local.getName(); + } + JavaKind kind = method.getSignature().getParameterKind(i); + slotIdx += kind.getSlotCount(); + } } return true; }