comparison src/cpu/x86/vm/graalRuntime_x86.cpp @ 9590:5f9c41cd3b1e

replaced monitorenter/monitorexit assembler stubs with compiled stubs (GRAAL-81)
author Doug Simon <doug.simon@oracle.com>
date Mon, 06 May 2013 22:37:00 +0200
parents d84ea522800e
children 0381c7937e7a
comparison
equal deleted inserted replaced
9582:7df076e74e8e 9590:5f9c41cd3b1e
695 __ leave(); 695 __ leave();
696 __ ret(0); 696 __ ret(0);
697 break; 697 break;
698 } 698 }
699 699
700 case monitorenter_id: {
701 Register obj = j_rarg0;
702 Register lock = j_rarg1;
703 {
704 GraalStubFrame f(sasm, "monitorenter", dont_gc_arguments);
705 OopMap* map = save_live_registers(sasm, 2, save_fpu_registers);
706
707 // Called with store_parameter and not C abi
708 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorenter), obj, lock);
709
710 oop_maps = new OopMapSet();
711 oop_maps->add_gc_map(call_offset, map);
712 restore_live_registers(sasm, save_fpu_registers);
713 }
714 __ ret(0);
715 break;
716 }
717 case monitorexit_id: {
718 Register obj = j_rarg0;
719 Register lock = j_rarg1;
720 {
721 GraalStubFrame f(sasm, "monitorexit", dont_gc_arguments);
722 OopMap* map = save_live_registers(sasm, 2, save_fpu_registers);
723
724 // note: really a leaf routine but must setup last java sp
725 // => use call_RT for now (speed can be improved by
726 // doing last java sp setup manually)
727 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), obj, lock);
728
729 oop_maps = new OopMapSet();
730 oop_maps->add_gc_map(call_offset, map);
731 restore_live_registers(sasm, save_fpu_registers);
732 }
733 __ ret(0);
734 break;
735 }
736 case wb_pre_call_id: { 700 case wb_pre_call_id: {
737 Register obj = j_rarg0; 701 Register obj = j_rarg0;
738 { 702 {
739 GraalStubFrame f(sasm, "graal_wb_pre_call", dont_gc_arguments); 703 GraalStubFrame f(sasm, "graal_wb_pre_call", dont_gc_arguments);
740 OopMap* map = save_live_registers(sasm, 2, save_fpu_registers); 704 OopMap* map = save_live_registers(sasm, 2, save_fpu_registers);