subanark
public java v1 · immutable //Puts a value into an array case IASTORE: case LASTORE: case FASTORE: case DASTORE: case AASTORE: case BASTORE: case CASTORE: case SASTORE: { int arrayFlagPtr = methodStacks[ip][methodStacks[ip].length-3]; Flags arrayFlags = types.get(arrayFlagPtr); arrayFlags = arrayFlags.asNonConstant(); if(arrayFlags == null) { System.err.println("Error: array cannot be changed"); System.err.println(getCodeLocation(code,instructionHandle,method,clazz)); return false; } Flags typeFlags = types.get(methodStacks[ip][methodStacks[ip].length-1]); typeFlags = typeFlags.as(arrayFlags.getInner()); if(typeFlags == null) { System.err.println("Error: value not compadible with array values"); System.err.println(getCodeLocation(code,instructionHandle,method,clazz)); return false; } //if(pass == 0) popPushNextInstruction(ip, ip+1,instruction.consumeStack(constPool)); pendingInstructions.push(ip+1); break; }