< prev index next >

src/hotspot/share/jvmci/jvmciCodeInstaller.cpp

Print this page




1303   }
1304 }
1305 
1306 void CodeInstaller::site_Mark(CodeBuffer& buffer, jint pc_offset, Handle site, TRAPS) {
1307   Handle id_obj (THREAD, site_Mark::id(site));
1308 
1309   if (id_obj.not_null()) {
1310     if (!java_lang_boxing_object::is_instance(id_obj(), T_INT)) {
1311       JVMCI_ERROR("expected Integer id, got %s", id_obj->klass()->signature_name());
1312     }
1313     jint id = id_obj->int_field(java_lang_boxing_object::value_offset_in_bytes(T_INT));
1314 
1315     address pc = _instructions->start() + pc_offset;
1316 
1317     switch (id) {
1318       case UNVERIFIED_ENTRY:
1319         _offsets.set_value(CodeOffsets::Entry, pc_offset);
1320         break;
1321       case VERIFIED_ENTRY:
1322         _offsets.set_value(CodeOffsets::Verified_Entry, pc_offset);

1323         break;
1324       case OSR_ENTRY:
1325         _offsets.set_value(CodeOffsets::OSR_Entry, pc_offset);
1326         break;
1327       case EXCEPTION_HANDLER_ENTRY:
1328         _offsets.set_value(CodeOffsets::Exceptions, pc_offset);
1329         break;
1330       case DEOPT_HANDLER_ENTRY:
1331         _offsets.set_value(CodeOffsets::Deopt, pc_offset);
1332         break;
1333       case INVOKEVIRTUAL:
1334       case INVOKEINTERFACE:
1335       case INLINE_INVOKE:
1336       case INVOKESTATIC:
1337       case INVOKESPECIAL:
1338         _next_call_type = (MarkId) id;
1339         _invoke_mark_pc = pc;
1340         break;
1341       case POLL_NEAR:
1342       case POLL_FAR:


1303   }
1304 }
1305 
1306 void CodeInstaller::site_Mark(CodeBuffer& buffer, jint pc_offset, Handle site, TRAPS) {
1307   Handle id_obj (THREAD, site_Mark::id(site));
1308 
1309   if (id_obj.not_null()) {
1310     if (!java_lang_boxing_object::is_instance(id_obj(), T_INT)) {
1311       JVMCI_ERROR("expected Integer id, got %s", id_obj->klass()->signature_name());
1312     }
1313     jint id = id_obj->int_field(java_lang_boxing_object::value_offset_in_bytes(T_INT));
1314 
1315     address pc = _instructions->start() + pc_offset;
1316 
1317     switch (id) {
1318       case UNVERIFIED_ENTRY:
1319         _offsets.set_value(CodeOffsets::Entry, pc_offset);
1320         break;
1321       case VERIFIED_ENTRY:
1322         _offsets.set_value(CodeOffsets::Verified_Entry, pc_offset);
1323         _offsets.set_value(CodeOffsets::Verified_Value_Entry, pc_offset);
1324         break;
1325       case OSR_ENTRY:
1326         _offsets.set_value(CodeOffsets::OSR_Entry, pc_offset);
1327         break;
1328       case EXCEPTION_HANDLER_ENTRY:
1329         _offsets.set_value(CodeOffsets::Exceptions, pc_offset);
1330         break;
1331       case DEOPT_HANDLER_ENTRY:
1332         _offsets.set_value(CodeOffsets::Deopt, pc_offset);
1333         break;
1334       case INVOKEVIRTUAL:
1335       case INVOKEINTERFACE:
1336       case INLINE_INVOKE:
1337       case INVOKESTATIC:
1338       case INVOKESPECIAL:
1339         _next_call_type = (MarkId) id;
1340         _invoke_mark_pc = pc;
1341         break;
1342       case POLL_NEAR:
1343       case POLL_FAR:
< prev index next >