for (int i = 0; i < nofArgs; i++) {
for (int i = 0; (!vstack.isEmpty() && (i < nofArgs)); i++) {
    public final void visit_invokevirtual(VmConstMethodRef methodRef) {        //TODO: port to orp-style        vstack.push(eContext);        methodRef.resolve(loader);        final VmMethod mts = methodRef.getResolvedVmMethod();        final int nofArgs = mts.getNoArguments();        for (int i = 0; i < nofArgs; i++) {            //TODO: check parameter type            Item v = vstack.popItem();            v.release(eContext);        }        if (mts.isStatic()) { throw new IncompatibleClassChangeError(                "Static method in invokevirtual"); }        final VmInstanceMethod method = (VmInstanceMethod) mts;        final int tibOffset = method.getTibOffset();        final int argSlotCount = Signature.getArgSlotCount(methodRef                .getSignature());        /* Get objectref -> S0 */        os.writeMOV(INTSIZE, S0, SP, argSlotCount * slotSize);        /* Get VMT of objectef -> S0 */        os.writeMOV(INTSIZE, S0, S0, ObjectLayout.TIB_SLOT * slotSize);        /* Get entry in VMT -> EAX */        os.writeMOV(INTSIZE, EAX, S0, (VmArray.DATA_OFFSET + tibOffset)                * slotSize);        /* Now invoke the method */        helper.invokeJavaMethod(methodRef.getSignature());        pushReturnValue(methodRef.getSignature());    }