Mercurial > hg > truffle
comparison src/cpu/x86/vm/c1_MacroAssembler_x86.cpp @ 4947:fd8114661503
7125136: SIGILL on linux amd64 in gc/ArrayJuggle/Juggle29
Summary: For C2 moved saving EBP after ESP adjustment. For C1 generated 5 byte nop instruction first if needed.
Reviewed-by: never, twisti, azeemj
author | kvn |
---|---|
date | Wed, 15 Feb 2012 21:37:49 -0800 |
parents | 069ab3f976d3 |
children | 33df1aeaebbf da91efe96a93 |
comparison
equal
deleted
inserted
replaced
4946:69333a2fbae2 | 4947:fd8114661503 |
---|---|
379 inline_cache_check(receiver, ic_klass); | 379 inline_cache_check(receiver, ic_klass); |
380 } | 380 } |
381 | 381 |
382 | 382 |
383 void C1_MacroAssembler::verified_entry() { | 383 void C1_MacroAssembler::verified_entry() { |
384 if (C1Breakpoint || VerifyFPU || !UseStackBanging) { | |
385 // Verified Entry first instruction should be 5 bytes long for correct | |
386 // patching by patch_verified_entry(). | |
387 // | |
388 // C1Breakpoint and VerifyFPU have one byte first instruction. | |
389 // Also first instruction will be one byte "push(rbp)" if stack banging | |
390 // code is not generated (see build_frame() above). | |
391 // For all these cases generate long instruction first. | |
392 fat_nop(); | |
393 } | |
384 if (C1Breakpoint)int3(); | 394 if (C1Breakpoint)int3(); |
385 // build frame | 395 // build frame |
386 verify_FPU(0, "method_entry"); | 396 verify_FPU(0, "method_entry"); |
387 } | 397 } |
388 | 398 |