src/cpu/x86/vm/stubGenerator_x86_32.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7118863 Cdiff src/cpu/x86/vm/stubGenerator_x86_32.cpp

src/cpu/x86/vm/stubGenerator_x86_32.cpp

Print this page

        

*** 1372,1383 **** // one less register, because needed values are on the argument stack. // __ check_klass_subtype_fast_path(sub_klass, *super_klass*, temp, // L_success, L_failure, NULL); assert_different_registers(sub_klass, temp); ! int sc_offset = (klassOopDesc::header_size() * HeapWordSize + ! Klass::secondary_super_cache_offset_in_bytes()); // if the pointers are equal, we are done (e.g., String[] elements) __ cmpptr(sub_klass, super_klass_addr); LOCAL_JCC(Assembler::equal, L_success); --- 1372,1382 ---- // one less register, because needed values are on the argument stack. // __ check_klass_subtype_fast_path(sub_klass, *super_klass*, temp, // L_success, L_failure, NULL); assert_different_registers(sub_klass, temp); ! int sc_offset = Klass::secondary_super_cache_offset_in_bytes(); // if the pointers are equal, we are done (e.g., String[] elements) __ cmpptr(sub_klass, super_klass_addr); LOCAL_JCC(Assembler::equal, L_success);
*** 1785,1796 **** // 32 30 24 16 8 2 0 // // array_tag: typeArray = 0x3, objArray = 0x2, non-array = 0x0 // ! int lh_offset = klassOopDesc::header_size() * HeapWordSize + ! Klass::layout_helper_offset_in_bytes(); Address src_klass_lh_addr(rcx_src_klass, lh_offset); // Handle objArrays completely differently... jint objArray_lh = Klass::array_layout_helper(T_OBJECT); __ cmpl(src_klass_lh_addr, objArray_lh); --- 1784,1794 ---- // 32 30 24 16 8 2 0 // // array_tag: typeArray = 0x3, objArray = 0x2, non-array = 0x0 // ! int lh_offset = Klass::layout_helper_offset_in_bytes(); Address src_klass_lh_addr(rcx_src_klass, lh_offset); // Handle objArrays completely differently... jint objArray_lh = Klass::array_layout_helper(T_OBJECT); __ cmpl(src_klass_lh_addr, objArray_lh);
*** 1912,1925 **** __ BIND(L_checkcast_copy); // live at this point: rcx_src_klass, dst[_pos], src[_pos] { // Handy offsets: ! int ek_offset = (klassOopDesc::header_size() * HeapWordSize + ! objArrayKlass::element_klass_offset_in_bytes()); ! int sco_offset = (klassOopDesc::header_size() * HeapWordSize + ! Klass::super_check_offset_offset_in_bytes()); Register rsi_dst_klass = rsi; Register rdi_temp = rdi; assert(rsi_dst_klass == src_pos, "expected alias w/ src_pos"); assert(rdi_temp == dst_pos, "expected alias w/ dst_pos"); --- 1910,1921 ---- __ BIND(L_checkcast_copy); // live at this point: rcx_src_klass, dst[_pos], src[_pos] { // Handy offsets: ! int ek_offset = objArrayKlass::element_klass_offset_in_bytes(); ! int sco_offset = Klass::super_check_offset_offset_in_bytes(); Register rsi_dst_klass = rsi; Register rdi_temp = rdi; assert(rsi_dst_klass == src_pos, "expected alias w/ src_pos"); assert(rdi_temp == dst_pos, "expected alias w/ dst_pos");
src/cpu/x86/vm/stubGenerator_x86_32.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File