final char ch = signature.charAt(signature.length() - 1); if (ch == 'V') {  } else if ((ch == 'J') || (ch == 'D')) {  stackMgr.writePUSH64(JvmType.SignatureToType(ch), Register.EAX, Register.EDX); } else {  stackMgr.writePUSH(JvmType.SignatureToType(ch), Register.EAX);
final int returnType = JvmType.getReturnType(signature); assertCondition(signature.endsWith("V") == (returnType == JvmType.VOID), "Return type");  switch (returnType) { case JvmType.VOID:  break; case JvmType.DOUBLE: case JvmType.LONG:  stackMgr.writePUSH64(returnType, Register.EAX, Register.EDX); break; default:  stackMgr.writePUSH(returnType, Register.EAX);
    public final void invokeJavaMethod(String signature) {        os.writeCALL(Register.EAX, context.getVmMethodNativeCodeField()                .getOffset());        //writeJumpTableCALL(X86JumpTable.VM_INVOKE_OFS);        final char ch = signature.charAt(signature.length() - 1);        if (ch == 'V') {            /** No return value */        } else if ((ch == 'J') || (ch == 'D')) {            /** Wide return value */            stackMgr.writePUSH64(JvmType.SignatureToType(ch), Register.EAX, Register.EDX);        } else {            /** Normal return value */            stackMgr.writePUSH(JvmType.SignatureToType(ch), Register.EAX);        }    }