src/cpu/x86/vm/x86_32.ad
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
hotspot Cdiff src/cpu/x86/vm/x86_32.ad
src/cpu/x86/vm/x86_32.ad
Print this page
rev 10047 : 8147386: assert(size == calc_size) failed: incorrect size calculattion x86_32.ad
Summary: incorrect offset used in spill code for vectors
Reviewed-by:
*** 966,983 ****
int dst_offset_size = (dst_offset == 0) ? 0 : ((dst_offset < 0x80) ? 1 : 4);
switch (ireg) {
case Op_VecS:
calc_size = 3+src_offset_size + 3+dst_offset_size;
break;
! case Op_VecD:
calc_size = 3+src_offset_size + 3+dst_offset_size;
! src_offset += 4;
! dst_offset += 4;
! src_offset_size = (src_offset == 0) ? 0 : ((src_offset < 0x80) ? 1 : 4);
! dst_offset_size = (dst_offset == 0) ? 0 : ((dst_offset < 0x80) ? 1 : 4);
calc_size += 3+src_offset_size + 3+dst_offset_size;
break;
case Op_VecX:
case Op_VecY:
case Op_VecZ:
calc_size = 6 + 6 + 5+src_offset_size + 5+dst_offset_size;
break;
--- 966,984 ----
int dst_offset_size = (dst_offset == 0) ? 0 : ((dst_offset < 0x80) ? 1 : 4);
switch (ireg) {
case Op_VecS:
calc_size = 3+src_offset_size + 3+dst_offset_size;
break;
! case Op_VecD: {
calc_size = 3+src_offset_size + 3+dst_offset_size;
! int tmp_src_offset = src_offset + 4;
! int tmp_dst_offset = dst_offset + 4;
! src_offset_size = (tmp_src_offset == 0) ? 0 : ((tmp_src_offset < 0x80) ? 1 : 4);
! dst_offset_size = (tmp_dst_offset == 0) ? 0 : ((tmp_dst_offset < 0x80) ? 1 : 4);
calc_size += 3+src_offset_size + 3+dst_offset_size;
break;
+ }
case Op_VecX:
case Op_VecY:
case Op_VecZ:
calc_size = 6 + 6 + 5+src_offset_size + 5+dst_offset_size;
break;
*** 1018,1028 ****
break;
default:
ShouldNotReachHere();
}
int size = __ offset() - offset;
! assert(size == calc_size, "incorrect size calculattion");
return size;
#ifndef PRODUCT
} else if (!do_size) {
switch (ireg) {
case Op_VecS:
--- 1019,1029 ----
break;
default:
ShouldNotReachHere();
}
int size = __ offset() - offset;
! assert(size == calc_size, "incorrect size calculation");
return size;
#ifndef PRODUCT
} else if (!do_size) {
switch (ireg) {
case Op_VecS:
src/cpu/x86/vm/x86_32.ad
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File