< prev index next >

src/cpu/s390/vm/methodHandles_s390.cpp

Print this page
rev 12776 : 8177458: [s390] (jdk10) build broken after 8155672
Reviewed-by:


  56 }
  57 
  58 
  59 #ifdef ASSERT
  60 static int check_nonzero(const char* xname, int x) {
  61   assert(x != 0, "%s should be nonzero", xname);
  62   return x;
  63 }
  64 #define NONZERO(x) check_nonzero(#x, x)
  65 #else
  66 #define NONZERO(x) (x)
  67 #endif
  68 
  69 #ifdef ASSERT
  70 void MethodHandles::verify_klass(MacroAssembler* _masm,
  71                                  Register obj_reg, SystemDictionary::WKID klass_id,
  72                                  Register temp_reg, Register temp2_reg,
  73                                  const char* error_message) {
  74 
  75   InstanceKlass** klass_addr = SystemDictionary::well_known_klass_addr(klass_id);
  76   KLass* klass = SystemDictionary::well_known_klass(klass_id);
  77 
  78   assert(temp_reg != Z_R0 && // Is used as base register!
  79          temp_reg != noreg && temp2_reg != noreg, "need valid registers!");
  80 
  81   NearLabel L_ok, L_bad;
  82 
  83   BLOCK_COMMENT("verify_klass {");
  84 
  85   __ verify_oop(obj_reg);
  86   __ compareU64_and_branch(obj_reg, (intptr_t)0L, Assembler::bcondEqual, L_bad);
  87   __ load_klass(temp_reg, obj_reg);
  88   // klass_addr is a klass in allstatic SystemDictionaryHandles. Can't get GCed.
  89   __ load_const_optimized(temp2_reg, (address)klass_addr);
  90   __ z_lg(temp2_reg, Address(temp2_reg));
  91   __ compareU64_and_branch(temp_reg, temp2_reg, Assembler::bcondEqual, L_ok);
  92 
  93   intptr_t super_check_offset = klass->super_check_offset();
  94   __ z_lg(temp_reg, Address(temp_reg, super_check_offset));
  95   __ compareU64_and_branch(temp_reg, temp2_reg, Assembler::bcondEqual, L_ok);
  96   __ BIND(L_bad);




  56 }
  57 
  58 
  59 #ifdef ASSERT
  60 static int check_nonzero(const char* xname, int x) {
  61   assert(x != 0, "%s should be nonzero", xname);
  62   return x;
  63 }
  64 #define NONZERO(x) check_nonzero(#x, x)
  65 #else
  66 #define NONZERO(x) (x)
  67 #endif
  68 
  69 #ifdef ASSERT
  70 void MethodHandles::verify_klass(MacroAssembler* _masm,
  71                                  Register obj_reg, SystemDictionary::WKID klass_id,
  72                                  Register temp_reg, Register temp2_reg,
  73                                  const char* error_message) {
  74 
  75   InstanceKlass** klass_addr = SystemDictionary::well_known_klass_addr(klass_id);
  76   Klass* klass = SystemDictionary::well_known_klass(klass_id);
  77 
  78   assert(temp_reg != Z_R0 && // Is used as base register!
  79          temp_reg != noreg && temp2_reg != noreg, "need valid registers!");
  80 
  81   NearLabel L_ok, L_bad;
  82 
  83   BLOCK_COMMENT("verify_klass {");
  84 
  85   __ verify_oop(obj_reg);
  86   __ compareU64_and_branch(obj_reg, (intptr_t)0L, Assembler::bcondEqual, L_bad);
  87   __ load_klass(temp_reg, obj_reg);
  88   // klass_addr is a klass in allstatic SystemDictionaryHandles. Can't get GCed.
  89   __ load_const_optimized(temp2_reg, (address)klass_addr);
  90   __ z_lg(temp2_reg, Address(temp2_reg));
  91   __ compareU64_and_branch(temp_reg, temp2_reg, Assembler::bcondEqual, L_ok);
  92 
  93   intptr_t super_check_offset = klass->super_check_offset();
  94   __ z_lg(temp_reg, Address(temp_reg, super_check_offset));
  95   __ compareU64_and_branch(temp_reg, temp2_reg, Assembler::bcondEqual, L_ok);
  96   __ BIND(L_bad);


< prev index next >