bug in MacroAssembler::check_method_handle_type for x86

Christian Thalinger christian.thalinger at oracle.com
Wed Mar 21 08:17:18 PDT 2012


John, I think there is a bug in MacroAssembler::check_method_handle_type for x86 (with meth-lazy):

    Address basic_type_addr(temp_reg, delayed_value(java_lang_invoke_MethodTypeForm::basicType_offset_in_bytes, temp2_reg));
    cmp_heap_oop(mtype_reg, basic_type_addr);
    if (did_push)  pop(temp2_reg);
    bind(success);
  } else {
    jcc(Assembler::notEqual, wrong_method_type);
  }

There seems to be a missing jcc:

    Address basic_type_addr(temp_reg, delayed_value(java_lang_invoke_MethodTypeForm::basicType_offset_in_bytes, temp2_reg));
    cmp_heap_oop(mtype_reg, basic_type_addr);
    if (did_push)  pop(temp2_reg);
+   jcc(Assembler::notEqual, wrong_method_type);
    bind(success);
  } else {
    jcc(Assembler::notEqual, wrong_method_type);
  }

-- Chris


More information about the mlvm-dev mailing list