< prev index next >

src/cpu/ppc/vm/methodHandles_ppc.cpp

Print this page




  54   }
  55   __ ld(klass_reg, java_lang_Class::klass_offset_in_bytes(), klass_reg);
  56 }
  57 
  58 #ifdef ASSERT
  59 static int check_nonzero(const char* xname, int x) {
  60   assert(x != 0, "%s should be nonzero", xname);
  61   return x;
  62 }
  63 #define NONZERO(x) check_nonzero(#x, x)
  64 #else //ASSERT
  65 #define NONZERO(x) (x)
  66 #endif //ASSERT
  67 
  68 #ifdef ASSERT
  69 void MethodHandles::verify_klass(MacroAssembler* _masm,
  70                                  Register obj_reg, SystemDictionary::WKID klass_id,
  71                                  Register temp_reg, Register temp2_reg,
  72                                  const char* error_message) {
  73   InstanceKlass** klass_addr = SystemDictionary::well_known_klass_addr(klass_id);
  74   KlassHandle klass = SystemDictionary::well_known_klass(klass_id);
  75   Label L_ok, L_bad;
  76   BLOCK_COMMENT("verify_klass {");
  77   __ verify_oop(obj_reg);
  78   __ cmpdi(CCR0, obj_reg, 0);
  79   __ beq(CCR0, L_bad);
  80   __ load_klass(temp_reg, obj_reg);
  81   __ load_const_optimized(temp2_reg, (address) klass_addr);
  82   __ ld(temp2_reg, 0, temp2_reg);
  83   __ cmpd(CCR0, temp_reg, temp2_reg);
  84   __ beq(CCR0, L_ok);
  85   __ ld(temp_reg, klass->super_check_offset(), temp_reg);
  86   __ cmpd(CCR0, temp_reg, temp2_reg);
  87   __ beq(CCR0, L_ok);
  88   __ BIND(L_bad);
  89   __ stop(error_message);
  90   __ BIND(L_ok);
  91   BLOCK_COMMENT("} verify_klass");
  92 }
  93 
  94 void MethodHandles::verify_ref_kind(MacroAssembler* _masm, int ref_kind, Register member_reg, Register temp) {




  54   }
  55   __ ld(klass_reg, java_lang_Class::klass_offset_in_bytes(), klass_reg);
  56 }
  57 
  58 #ifdef ASSERT
  59 static int check_nonzero(const char* xname, int x) {
  60   assert(x != 0, "%s should be nonzero", xname);
  61   return x;
  62 }
  63 #define NONZERO(x) check_nonzero(#x, x)
  64 #else //ASSERT
  65 #define NONZERO(x) (x)
  66 #endif //ASSERT
  67 
  68 #ifdef ASSERT
  69 void MethodHandles::verify_klass(MacroAssembler* _masm,
  70                                  Register obj_reg, SystemDictionary::WKID klass_id,
  71                                  Register temp_reg, Register temp2_reg,
  72                                  const char* error_message) {
  73   InstanceKlass** klass_addr = SystemDictionary::well_known_klass_addr(klass_id);
  74   Klass* klass = SystemDictionary::well_known_klass(klass_id);
  75   Label L_ok, L_bad;
  76   BLOCK_COMMENT("verify_klass {");
  77   __ verify_oop(obj_reg);
  78   __ cmpdi(CCR0, obj_reg, 0);
  79   __ beq(CCR0, L_bad);
  80   __ load_klass(temp_reg, obj_reg);
  81   __ load_const_optimized(temp2_reg, (address) klass_addr);
  82   __ ld(temp2_reg, 0, temp2_reg);
  83   __ cmpd(CCR0, temp_reg, temp2_reg);
  84   __ beq(CCR0, L_ok);
  85   __ ld(temp_reg, klass->super_check_offset(), temp_reg);
  86   __ cmpd(CCR0, temp_reg, temp2_reg);
  87   __ beq(CCR0, L_ok);
  88   __ BIND(L_bad);
  89   __ stop(error_message);
  90   __ BIND(L_ok);
  91   BLOCK_COMMENT("} verify_klass");
  92 }
  93 
  94 void MethodHandles::verify_ref_kind(MacroAssembler* _masm, int ref_kind, Register member_reg, Register temp) {


< prev index next >