private void invokeinterface(String className, String methodName, String descriptor, String returnType, String[] parameterTypes) { // TODO: validate stack int pop = 1 + parameterTypes.length; for (String argument : parameterTypes) { if (argument.equals("D") || argument.equals("J")) { pop++; } } int method = constPool.addInterfaceMethodEntry(className, methodName, descriptor); writeByte(Opcode.INVOKEINTERFACE); writeShort(method); writeByte(pop); writeByte(0); currentOffset += 5; if (returnType.equals("V")) { advanceFrame(currentFrame.pop(pop)); } else { advanceFrame(currentFrame.pop(pop).push(returnType)); } }
private void invokeinterface(String className, String methodName, String descriptor, String returnType, String[] parameterTypes) { // TODO: validate stack int pop = 1 + parameterTypes.length; for (String argument : parameterTypes) { if (argument.equals("D") || argument.equals("J")) { pop++; } } int method = constPool.addInterfaceMethodEntry(className, methodName, descriptor); writeByte(Opcode.INVOKEINTERFACE); writeShort(method); writeByte(pop); writeByte(0); currentOffset += 5; if (returnType.equals("V")) { advanceFrame(currentFrame.pop(pop)); } else { advanceFrame(currentFrame.pop(pop).push(returnType)); } }
private void invokeinterface(String className, String methodName, String descriptor, String returnType, String[] parameterTypes) { // TODO: validate stack int pop = 1 + parameterTypes.length; for (String argument : parameterTypes) { if (argument.equals("D") || argument.equals("J")) { pop++; } } int method = constPool.addInterfaceMethodEntry(className, methodName, descriptor); writeByte(Opcode.INVOKEINTERFACE); writeShort(method); writeByte(pop); writeByte(0); currentOffset += 5; if (returnType.equals("V")) { advanceFrame(currentFrame.pop(pop)); } else { advanceFrame(currentFrame.pop(pop).push(returnType)); } }
private void invokeinterface(String className, String methodName, String descriptor, String returnType, String[] parameterTypes) { // TODO: validate stack int pop = 1 + parameterTypes.length; for (String argument : parameterTypes) { if (argument.equals("D") || argument.equals("J")) { pop++; } } int method = constPool.addInterfaceMethodEntry(className, methodName, descriptor); writeByte(Opcode.INVOKEINTERFACE); writeShort(method); writeByte(pop); writeByte(0); currentOffset += 5; if (returnType.equals("V")) { advanceFrame(currentFrame.pop(pop)); } else { advanceFrame(currentFrame.pop(pop).push(returnType)); } }
private void invokeinterface(String className, String methodName, String descriptor, String returnType, String[] parameterTypes) { // TODO: validate stack int pop = 1 + parameterTypes.length; for (String argument : parameterTypes) { if (argument.equals("D") || argument.equals("J")) { pop++; } } int method = constPool.addInterfaceMethodEntry(className, methodName, descriptor); writeByte(Opcode.INVOKEINTERFACE); writeShort(method); writeByte(pop); writeByte(0); currentOffset += 5; if (returnType.equals("V")) { advanceFrame(currentFrame.pop(pop)); } else { advanceFrame(currentFrame.pop(pop).push(returnType)); } }