comparison src/cpu/x86/vm/c1_LIRAssembler_x86.cpp @ 17980:0bf37f737702

8032410: compiler/uncommontrap/TestStackBangRbp.java times out on Solaris-Sparc V9 Summary: make compiled code bang the stack by the worst case size of the interpreter frame at deoptimization points. Reviewed-by: twisti, kvn
author roland
date Tue, 01 Apr 2014 09:36:49 +0200
parents 876390ee9b6f
children 52b4284cb496
comparison
equal deleted inserted replaced
17978:ad51f24671c2 17980:0bf37f737702
286 // rcx: osr buffer 286 // rcx: osr buffer
287 // 287 //
288 288
289 // build frame 289 // build frame
290 ciMethod* m = compilation()->method(); 290 ciMethod* m = compilation()->method();
291 __ build_frame(initial_frame_size_in_bytes()); 291 __ build_frame(initial_frame_size_in_bytes(), bang_size_in_bytes());
292 292
293 // OSR buffer is 293 // OSR buffer is
294 // 294 //
295 // locals[nlocals-1..0] 295 // locals[nlocals-1..0]
296 // monitors[0..number_of_locks] 296 // monitors[0..number_of_locks]
374 __ mov_metadata(reg, o); 374 __ mov_metadata(reg, o);
375 patching_epilog(patch, lir_patch_normal, reg, info); 375 patching_epilog(patch, lir_patch_normal, reg, info);
376 } 376 }
377 377
378 // This specifies the rsp decrement needed to build the frame 378 // This specifies the rsp decrement needed to build the frame
379 int LIR_Assembler::initial_frame_size_in_bytes() { 379 int LIR_Assembler::initial_frame_size_in_bytes() const {
380 // if rounding, must let FrameMap know! 380 // if rounding, must let FrameMap know!
381 381
382 // The frame_map records size in slots (32bit word) 382 // The frame_map records size in slots (32bit word)
383 383
384 // subtract two words to account for return address and link 384 // subtract two words to account for return address and link