Mercurial > hg > graal-jvmci-8
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) { |