diff --git a/src/main/java/com/aparapi/internal/instruction/ExpressionList.java b/src/main/java/com/aparapi/internal/instruction/ExpressionList.java index 4aa24b5028a0ba2b1bb4eac0f8b09f0b2526c1c0..c7d38b13445944ce97d6095f85c216711483c731 100644 --- a/src/main/java/com/aparapi/internal/instruction/ExpressionList.java +++ b/src/main/java/com/aparapi/internal/instruction/ExpressionList.java @@ -813,7 +813,8 @@ public class ExpressionList{ logger.fine("Scope block from " + startPc + " to " + (tail.getThisPC() + tail.getLength())); for (Instruction i = head; i != null; i = i.getNextPC()) { if (i.getThisPC() == startPc) { - final Instruction startInstruction = i.getRootExpr().getPrevExpr(); + final Instruction j = i.getRootExpr().getPrevExpr(); + final Instruction startInstruction = j == null ? i : j; logger.fine("Start = " + startInstruction); addAsComposites(ByteCode.COMPOSITE_ARBITRARY_SCOPE, startInstruction.getPrevExpr(), null); diff --git a/src/main/java/com/aparapi/internal/instruction/InstructionSet.java b/src/main/java/com/aparapi/internal/instruction/InstructionSet.java index cc331733f2696dffdd509c804ccd1d31cc63ee92..9fe5a71a74e1bb327066b78bd0d737cb55d48563 100644 --- a/src/main/java/com/aparapi/internal/instruction/InstructionSet.java +++ b/src/main/java/com/aparapi/internal/instruction/InstructionSet.java @@ -1276,7 +1276,7 @@ public class InstructionSet{ @Override public boolean isDeclaration() { LocalVariableInfo lvi = method.getLocalVariableTableEntry().getVariable(getThisPC() + getLength(), getLocalVariableTableIndex()); - return (lvi != null) && (lvi.getStart() == getThisPC() + getLength()); + return (lvi != null) && (lvi.getStart() == getThisPC() + getLength() || lvi.getStart() == getThisPC()); } @Override public String getDescription() {