--- a/src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp Fri Jul 26 10:52:47 2019 +0200
+++ b/src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp Mon Jul 29 11:14:06 2019 +0200
@@ -50,10 +50,6 @@
#include "jvmci/jvmciJavaClasses.hpp"
#endif
-#ifdef BUILTIN_SIM
-#include "../../../../../../simulator/simulator.hpp"
-#endif
-
#define __ masm->
const int StackAlignmentInSlots = StackAlignmentInBytes / VMRegImpl::stack_slot_size;
@@ -342,7 +338,7 @@
__ mov(c_rarg0, rmethod);
__ mov(c_rarg1, lr);
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::fixup_callers_callsite)));
- __ blrt(rscratch1, 2, 0, 0);
+ __ blr(rscratch1);
__ maybe_isb();
__ pop_CPU_state();
@@ -662,71 +658,6 @@
__ br(rscratch1);
}
-#ifdef BUILTIN_SIM
-static void generate_i2c_adapter_name(char *result, int total_args_passed, const BasicType *sig_bt)
-{
- strcpy(result, "i2c(");
- int idx = 4;
- for (int i = 0; i < total_args_passed; i++) {
- switch(sig_bt[i]) {
- case T_BOOLEAN:
- result[idx++] = 'Z';
- break;
- case T_CHAR:
- result[idx++] = 'C';
- break;
- case T_FLOAT:
- result[idx++] = 'F';
- break;
- case T_DOUBLE:
- assert((i < (total_args_passed - 1)) && (sig_bt[i+1] == T_VOID),
- "double must be followed by void");
- i++;
- result[idx++] = 'D';
- break;
- case T_BYTE:
- result[idx++] = 'B';
- break;
- case T_SHORT:
- result[idx++] = 'S';
- break;
- case T_INT:
- result[idx++] = 'I';
- break;
- case T_LONG:
- assert((i < (total_args_passed - 1)) && (sig_bt[i+1] == T_VOID),
- "long must be followed by void");
- i++;
- result[idx++] = 'L';
- break;
- case T_OBJECT:
- result[idx++] = 'O';
- break;
- case T_ARRAY:
- result[idx++] = '[';
- break;
- case T_ADDRESS:
- result[idx++] = 'P';
- break;
- case T_NARROWOOP:
- result[idx++] = 'N';
- break;
- case T_METADATA:
- result[idx++] = 'M';
- break;
- case T_NARROWKLASS:
- result[idx++] = 'K';
- break;
- default:
- result[idx++] = '?';
- break;
- }
- }
- result[idx++] = ')';
- result[idx] = '\0';
-}
-#endif
-
// ---------------------------------------------------------------
AdapterHandlerEntry* SharedRuntime::generate_i2c2i_adapters(MacroAssembler *masm,
int total_args_passed,
@@ -735,20 +666,7 @@
const VMRegPair *regs,
AdapterFingerPrint* fingerprint) {
address i2c_entry = __ pc();
-#ifdef BUILTIN_SIM
- char *name = NULL;
- AArch64Simulator *sim = NULL;
- size_t len = 65536;
- if (NotifySimulator) {
- name = NEW_C_HEAP_ARRAY(char, len, mtInternal);
- }
-
- if (name) {
- generate_i2c_adapter_name(name, total_args_passed, sig_bt);
- sim = AArch64Simulator::get_current(UseSimulatorCache, DisableBCCheck);
- sim->notifyCompile(name, i2c_entry);
- }
-#endif
+
gen_i2c_adapter(masm, total_args_passed, comp_args_on_stack, sig_bt, regs);
address c2i_unverified_entry = __ pc();
@@ -790,15 +708,6 @@
address c2i_entry = __ pc();
-#ifdef BUILTIN_SIM
- if (name) {
- name[0] = 'c';
- name[2] = 'i';
- sim->notifyCompile(name, c2i_entry);
- FREE_C_HEAP_ARRAY(char, name, mtInternal);
- }
-#endif
-
// Class initialization barrier for static methods
address c2i_no_clinit_check_entry = NULL;
if (VM_Version::supports_fast_class_init_checks()) {
@@ -1219,8 +1128,7 @@
assert((unsigned)gpargs < 256, "eek!");
assert((unsigned)fpargs < 32, "eek!");
__ lea(rscratch1, RuntimeAddress(dest));
- if (UseBuiltinSim) __ mov(rscratch2, (gpargs << 6) | (fpargs << 2) | type);
- __ blrt(rscratch1, rscratch2);
+ __ blr(rscratch1);
__ maybe_isb();
}
}
@@ -1341,24 +1249,6 @@
BasicType* in_sig_bt,
VMRegPair* in_regs,
BasicType ret_type) {
-#ifdef BUILTIN_SIM
- if (NotifySimulator) {
- // Names are up to 65536 chars long. UTF8-coded strings are up to
- // 3 bytes per character. We concatenate three such strings.
- // Yes, I know this is ridiculous, but it's debug code and glibc
- // allocates large arrays very efficiently.
- size_t len = (65536 * 3) * 3;
- char *name = new char[len];
-
- strncpy(name, method()->method_holder()->name()->as_utf8(), len);
- strncat(name, ".", len);
- strncat(name, method()->name()->as_utf8(), len);
- strncat(name, method()->signature()->as_utf8(), len);
- AArch64Simulator::get_current(UseSimulatorCache, DisableBCCheck)->notifyCompile(name, __ pc());
- delete[] name;
- }
-#endif
-
if (method->is_method_handle_intrinsic()) {
vmIntrinsics::ID iid = method->intrinsic_id();
intptr_t start = (intptr_t)__ pc();
@@ -1623,11 +1513,6 @@
// Frame is now completed as far as size and linkage.
int frame_complete = ((intptr_t)__ pc()) - start;
- // record entry into native wrapper code
- if (NotifySimulator) {
- __ notify(Assembler::method_entry);
- }
-
// We use r20 as the oop handle for the receiver/klass
// It is callee save so it survives the call to native
@@ -2089,11 +1974,6 @@
__ cbnz(rscratch1, exception_pending);
}
- // record exit from native wrapper code
- if (NotifySimulator) {
- __ notify(Assembler::method_reentry);
- }
-
// We're done
__ ret(lr);
@@ -2208,7 +2088,7 @@
} else {
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans_and_transition)));
}
- __ blrt(rscratch1, 1, 0, 1);
+ __ blr(rscratch1);
__ maybe_isb();
// Restore any method result value
restore_native_result(masm, ret_type, stack_slots);
@@ -2305,14 +2185,6 @@
OopMap* map = NULL;
OopMapSet *oop_maps = new OopMapSet();
-#ifdef BUILTIN_SIM
- AArch64Simulator *simulator;
- if (NotifySimulator) {
- simulator = AArch64Simulator::get_current(UseSimulatorCache, DisableBCCheck);
- simulator->notifyCompile(const_cast<char*>("SharedRuntime::deopt_blob"), __ pc());
- }
-#endif
-
// -------------
// This code enters when returning to a de-optimized nmethod. A return
// address has been pushed on the the stack, and return values are in
@@ -2401,7 +2273,7 @@
__ lea(rscratch1,
RuntimeAddress(CAST_FROM_FN_PTR(address,
Deoptimization::uncommon_trap)));
- __ blrt(rscratch1, 2, 0, MacroAssembler::ret_type_integral);
+ __ blr(rscratch1);
__ bind(retaddr);
oop_maps->add_gc_map( __ pc()-start, map->deep_copy());
@@ -2493,7 +2365,7 @@
__ mov(c_rarg0, rthread);
__ mov(c_rarg1, rcpool);
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::fetch_unroll_info)));
- __ blrt(rscratch1, 1, 0, 1);
+ __ blr(rscratch1);
__ bind(retaddr);
// Need to have an oopmap that tells fetch_unroll_info where to
@@ -2633,7 +2505,7 @@
__ mov(c_rarg0, rthread);
__ movw(c_rarg1, rcpool); // second arg: exec_mode
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::unpack_frames)));
- __ blrt(rscratch1, 2, 0, 0);
+ __ blr(rscratch1);
// Set an oopmap for the call site
// Use the same PC we used for the last java frame
@@ -2666,12 +2538,6 @@
_deopt_blob->set_implicit_exception_uncommon_trap_offset(implicit_exception_uncommon_trap_offset);
}
#endif
-#ifdef BUILTIN_SIM
- if (NotifySimulator) {
- unsigned char *base = _deopt_blob->code_begin();
- simulator->notifyRelocate(start, base - start);
- }
-#endif
}
uint SharedRuntime::out_preserve_stack_slots() {
@@ -2687,14 +2553,6 @@
CodeBuffer buffer("uncommon_trap_blob", 2048, 1024);
MacroAssembler* masm = new MacroAssembler(&buffer);
-#ifdef BUILTIN_SIM
- AArch64Simulator *simulator;
- if (NotifySimulator) {
- simulator = AArch64Simulator::get_current(UseSimulatorCache, DisableBCCheck);
- simulator->notifyCompile(const_cast<char*>("SharedRuntime:uncommon_trap_blob"), __ pc());
- }
-#endif
-
assert(SimpleRuntimeFrame::framesize % 4 == 0, "sp not 16-byte aligned");
address start = __ pc();
@@ -2733,7 +2591,7 @@
__ lea(rscratch1,
RuntimeAddress(CAST_FROM_FN_PTR(address,
Deoptimization::uncommon_trap)));
- __ blrt(rscratch1, 2, 0, MacroAssembler::ret_type_integral);
+ __ blr(rscratch1);
__ bind(retaddr);
// Set an oopmap for the call site
@@ -2856,7 +2714,7 @@
__ mov(c_rarg0, rthread);
__ movw(c_rarg1, (unsigned)Deoptimization::Unpack_uncommon_trap);
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, Deoptimization::unpack_frames)));
- __ blrt(rscratch1, 2, 0, MacroAssembler::ret_type_integral);
+ __ blr(rscratch1);
// Set an oopmap for the call site
// Use the same PC we used for the last java frame
@@ -2876,13 +2734,6 @@
_uncommon_trap_blob = UncommonTrapBlob::create(&buffer, oop_maps,
SimpleRuntimeFrame::framesize >> 1);
-
-#ifdef BUILTIN_SIM
- if (NotifySimulator) {
- unsigned char *base = _deopt_blob->code_begin();
- simulator->notifyRelocate(start, base - start);
- }
-#endif
}
#endif // COMPILER2_OR_JVMCI
@@ -2932,7 +2783,7 @@
// Do the call
__ mov(c_rarg0, rthread);
__ lea(rscratch1, RuntimeAddress(call_ptr));
- __ blrt(rscratch1, 1, 0, 1);
+ __ blr(rscratch1);
__ bind(retaddr);
// Set an oopmap for the call site. This oopmap will map all
@@ -3037,7 +2888,7 @@
__ mov(c_rarg0, rthread);
__ lea(rscratch1, RuntimeAddress(destination));
- __ blrt(rscratch1, 1, 0, 1);
+ __ blr(rscratch1);
__ bind(retaddr);
}
@@ -3169,7 +3020,7 @@
__ set_last_Java_frame(sp, noreg, the_pc, rscratch1);
__ mov(c_rarg0, rthread);
__ lea(rscratch1, RuntimeAddress(CAST_FROM_FN_PTR(address, OptoRuntime::handle_exception_C)));
- __ blrt(rscratch1, 1, 0, MacroAssembler::ret_type_integral);
+ __ blr(rscratch1);
__ maybe_isb();
// Set an oopmap for the call site. This oopmap will only be used if we