1202 1203 case predicate_failed_trap_id: 1204 { 1205 StubFrame f(sasm, "predicate_failed_trap", dont_gc_arguments); 1206 1207 OopMap* map = save_live_registers(sasm); 1208 1209 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, predicate_failed_trap)); 1210 oop_maps = new OopMapSet(); 1211 oop_maps->add_gc_map(call_offset, map); 1212 restore_live_registers(sasm); 1213 __ leave(); 1214 DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob(); 1215 assert(deopt_blob != NULL, "deoptimization blob must have been created"); 1216 1217 __ far_jump(RuntimeAddress(deopt_blob->unpack_with_reexecution())); 1218 } 1219 break; 1220 1221 default: 1222 // DMS CHECK: This code should be fixed in JDK workspace, because it fails 1223 // with assert during vm intialization rather than insert a call 1224 // to unimplemented_entry 1225 { StubFrame f(sasm, "unimplemented entry", dont_gc_arguments); 1226 __ mov(r0, (int)id); 1227 __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, unimplemented_entry), r0); 1228 __ should_not_reach_here(); 1229 } 1230 break; 1231 } 1232 } 1233 1234 1235 return oop_maps; 1236 } 1237 1238 #undef __ 1239 1240 const char *Runtime1::pd_name_for_address(address entry) { Unimplemented(); return 0; } | 1202 1203 case predicate_failed_trap_id: 1204 { 1205 StubFrame f(sasm, "predicate_failed_trap", dont_gc_arguments); 1206 1207 OopMap* map = save_live_registers(sasm); 1208 1209 int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, predicate_failed_trap)); 1210 oop_maps = new OopMapSet(); 1211 oop_maps->add_gc_map(call_offset, map); 1212 restore_live_registers(sasm); 1213 __ leave(); 1214 DeoptimizationBlob* deopt_blob = SharedRuntime::deopt_blob(); 1215 assert(deopt_blob != NULL, "deoptimization blob must have been created"); 1216 1217 __ far_jump(RuntimeAddress(deopt_blob->unpack_with_reexecution())); 1218 } 1219 break; 1220 1221 default: 1222 // FIXME: For unhandled trap_id this code fails with assert during vm intialization 1223 // rather than insert a call to unimplemented_entry 1224 { StubFrame f(sasm, "unimplemented entry", dont_gc_arguments); 1225 __ mov(r0, (int)id); 1226 __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, unimplemented_entry), r0); 1227 __ should_not_reach_here(); 1228 } 1229 break; 1230 } 1231 } 1232 1233 1234 return oop_maps; 1235 } 1236 1237 #undef __ 1238 1239 const char *Runtime1::pd_name_for_address(address entry) { Unimplemented(); return 0; } |