comparison src/cpu/x86/vm/assembler_x86.cpp @ 5984:fd09f2d8283e

7157141: crash in 64 bit with corrupted oops Reviewed-by: kvn, iveresov
author never
date Mon, 02 Apr 2012 16:05:56 -0700
parents fd8114661503
children 6759698e3140
comparison
equal deleted inserted replaced
5977:e02867d10860 5984:fd09f2d8283e
526 526
527 case REP8(0xB8): // movl/q r, #32/#64(oop?) 527 case REP8(0xB8): // movl/q r, #32/#64(oop?)
528 if (which == end_pc_operand) return ip + (is_64bit ? 8 : 4); 528 if (which == end_pc_operand) return ip + (is_64bit ? 8 : 4);
529 // these asserts are somewhat nonsensical 529 // these asserts are somewhat nonsensical
530 #ifndef _LP64 530 #ifndef _LP64
531 assert(which == imm_operand || which == disp32_operand, ""); 531 assert(which == imm_operand || which == disp32_operand,
532 err_msg("which %d is_64_bit %d ip " INTPTR_FORMAT, which, is_64bit, ip));
532 #else 533 #else
533 assert((which == call32_operand || which == imm_operand) && is_64bit || 534 assert((which == call32_operand || which == imm_operand) && is_64bit ||
534 which == narrow_oop_operand && !is_64bit, ""); 535 which == narrow_oop_operand && !is_64bit,
536 err_msg("which %d is_64_bit %d ip " INTPTR_FORMAT, which, is_64bit, ip));
535 #endif // _LP64 537 #endif // _LP64
536 return ip; 538 return ip;
537 539
538 case 0x69: // imul r, a, #32 540 case 0x69: // imul r, a, #32
539 case 0xC7: // movl a, #32(oop?) 541 case 0xC7: // movl a, #32(oop?)