< prev index next >

src/hotspot/cpu/x86/c1_Runtime1_x86.cpp

Print this page

1094 
1095           __ bind(slow_path);
1096           __ pop(rbx);
1097           __ pop(rdi);
1098         }
1099 
1100         __ enter();
1101         OopMap* map = save_live_registers(sasm, 2);
1102         int call_offset = __ call_RT(obj, noreg, CAST_FROM_FN_PTR(address, new_instance), klass);
1103         oop_maps = new OopMapSet();
1104         oop_maps->add_gc_map(call_offset, map);
1105         restore_live_registers_except_rax(sasm);
1106         __ verify_oop(obj);
1107         __ leave();
1108         __ ret(0);
1109 
1110         // rax,: new instance
1111       }
1112 
1113       break;
1114 










1115     case counter_overflow_id:
1116       {
1117         Register bci = rax, method = rbx;
1118         __ enter();
1119         OopMap* map = save_live_registers(sasm, 3);
1120         // Retrieve bci
1121         __ movl(bci, Address(rbp, 2*BytesPerWord));
1122         // And a pointer to the Method*
1123         __ movptr(method, Address(rbp, 3*BytesPerWord));
1124         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, counter_overflow), bci, method);
1125         oop_maps = new OopMapSet();
1126         oop_maps->add_gc_map(call_offset, map);
1127         restore_live_registers(sasm);
1128         __ leave();
1129         __ ret(0);
1130       }
1131       break;
1132 
1133     case new_type_array_id:
1134     case new_object_array_id:

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