comparison src/share/vm/c1/c1_LIRAssembler.cpp @ 1579:e9ff18c4ace7

Merge
author jrose
date Wed, 02 Jun 2010 22:45:42 -0700
parents c18cbe5936b8 61b2245abf36
children 4a665be40fd3
comparison
equal deleted inserted replaced
1562:dfe27f03244a 1579:e9ff18c4ace7
299 compilation()->add_exception_handlers_for_pco(pc_offset, info->exception_handlers()); 299 compilation()->add_exception_handlers_for_pco(pc_offset, info->exception_handlers());
300 } 300 }
301 } 301 }
302 302
303 303
304 void LIR_Assembler::add_call_info(int pc_offset, CodeEmitInfo* cinfo, bool is_method_handle_invoke) { 304 void LIR_Assembler::add_call_info(int pc_offset, CodeEmitInfo* cinfo) {
305 flush_debug_info(pc_offset); 305 flush_debug_info(pc_offset);
306 cinfo->record_debug_info(compilation()->debug_info_recorder(), pc_offset, is_method_handle_invoke); 306 cinfo->record_debug_info(compilation()->debug_info_recorder(), pc_offset);
307 if (cinfo->exception_handlers() != NULL) { 307 if (cinfo->exception_handlers() != NULL) {
308 compilation()->add_exception_handlers_for_pco(pc_offset, cinfo->exception_handlers()); 308 compilation()->add_exception_handlers_for_pco(pc_offset, cinfo->exception_handlers());
309 } 309 }
310 } 310 }
311 311
410 } 410 }
411 411
412 412
413 void LIR_Assembler::emit_call(LIR_OpJavaCall* op) { 413 void LIR_Assembler::emit_call(LIR_OpJavaCall* op) {
414 verify_oop_map(op->info()); 414 verify_oop_map(op->info());
415
416 // JSR 292
417 // Preserve the SP over MethodHandle call sites.
418 if (op->is_method_handle_invoke()) {
419 preserve_SP(op);
420 }
421 415
422 if (os::is_MP()) { 416 if (os::is_MP()) {
423 // must align calls sites, otherwise they can't be updated atomically on MP hardware 417 // must align calls sites, otherwise they can't be updated atomically on MP hardware
424 align_call(op->code()); 418 align_call(op->code());
425 } 419 }
440 break; 434 break;
441 case lir_virtual_call: 435 case lir_virtual_call:
442 vtable_call(op); 436 vtable_call(op);
443 break; 437 break;
444 default: ShouldNotReachHere(); 438 default: ShouldNotReachHere();
445 }
446
447 if (op->is_method_handle_invoke()) {
448 restore_SP(op);
449 } 439 }
450 440
451 #if defined(X86) && defined(TIERED) 441 #if defined(X86) && defined(TIERED)
452 // C2 leave fpu stack dirty clean it 442 // C2 leave fpu stack dirty clean it
453 if (UseSSE < 2) { 443 if (UseSSE < 2) {