< prev index next >

src/hotspot/cpu/x86/c1_Runtime1_x86.cpp

Print this page

1082 
1083           __ bind(slow_path);
1084           __ pop(rbx);
1085           __ pop(rdi);
1086         }
1087 
1088         __ enter();
1089         OopMap* map = save_live_registers(sasm, 2);
1090         int call_offset = __ call_RT(obj, noreg, CAST_FROM_FN_PTR(address, new_instance), klass);
1091         oop_maps = new OopMapSet();
1092         oop_maps->add_gc_map(call_offset, map);
1093         restore_live_registers_except_rax(sasm);
1094         __ verify_oop(obj);
1095         __ leave();
1096         __ ret(0);
1097 
1098         // rax,: new instance
1099       }
1100 
1101       break;
1102 










1103     case counter_overflow_id:
1104       {
1105         Register bci = rax, method = rbx;
1106         __ enter();
1107         OopMap* map = save_live_registers(sasm, 3);
1108         // Retrieve bci
1109         __ movl(bci, Address(rbp, 2*BytesPerWord));
1110         // And a pointer to the Method*
1111         __ movptr(method, Address(rbp, 3*BytesPerWord));
1112         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, counter_overflow), bci, method);
1113         oop_maps = new OopMapSet();
1114         oop_maps->add_gc_map(call_offset, map);
1115         restore_live_registers(sasm);
1116         __ leave();
1117         __ ret(0);
1118       }
1119       break;
1120 
1121     case new_type_array_id:
1122     case new_object_array_id:

1082 
1083           __ bind(slow_path);
1084           __ pop(rbx);
1085           __ pop(rdi);
1086         }
1087 
1088         __ enter();
1089         OopMap* map = save_live_registers(sasm, 2);
1090         int call_offset = __ call_RT(obj, noreg, CAST_FROM_FN_PTR(address, new_instance), klass);
1091         oop_maps = new OopMapSet();
1092         oop_maps->add_gc_map(call_offset, map);
1093         restore_live_registers_except_rax(sasm);
1094         __ verify_oop(obj);
1095         __ leave();
1096         __ ret(0);
1097 
1098         // rax,: new instance
1099       }
1100 
1101       break;
1102 #ifdef _LP64
1103     case load_klass_id:
1104       {
1105         StubFrame f(sasm, "load_klass", dont_gc_arguments);
1106         sasm->save_live_registers_no_oop_map(true);
1107         f.load_argument(0, c_rarg0); // obj
1108         __ call_VM_leaf(CAST_FROM_FN_PTR(address, oopDesc::load_nklass_runtime), c_rarg0);
1109         sasm->restore_live_registers_except_rax(true);
1110       }
1111       break;
1112 #endif
1113     case counter_overflow_id:
1114       {
1115         Register bci = rax, method = rbx;
1116         __ enter();
1117         OopMap* map = save_live_registers(sasm, 3);
1118         // Retrieve bci
1119         __ movl(bci, Address(rbp, 2*BytesPerWord));
1120         // And a pointer to the Method*
1121         __ movptr(method, Address(rbp, 3*BytesPerWord));
1122         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, counter_overflow), bci, method);
1123         oop_maps = new OopMapSet();
1124         oop_maps->add_gc_map(call_offset, map);
1125         restore_live_registers(sasm);
1126         __ leave();
1127         __ ret(0);
1128       }
1129       break;
1130 
1131     case new_type_array_id:
1132     case new_object_array_id:
< prev index next >