74 void C2HandleAnonOMOwnerStub::emit(C2_MacroAssembler& masm) {
75 __ bind(entry());
76 Register mon = monitor();
77 Register t = tmp();
78 assert(t != noreg, "need tmp register");
79
80 // Fix owner to be the current thread.
81 __ str(rthread, Address(mon, ObjectMonitor::owner_offset()));
82
83 // Pop owner object from lock-stack.
84 __ ldrw(t, Address(rthread, JavaThread::lock_stack_top_offset()));
85 __ subw(t, t, oopSize);
86 #ifdef ASSERT
87 __ str(zr, Address(rthread, t));
88 #endif
89 __ strw(t, Address(rthread, JavaThread::lock_stack_top_offset()));
90
91 __ b(continuation());
92 }
93
94 #undef __
|
74 void C2HandleAnonOMOwnerStub::emit(C2_MacroAssembler& masm) {
75 __ bind(entry());
76 Register mon = monitor();
77 Register t = tmp();
78 assert(t != noreg, "need tmp register");
79
80 // Fix owner to be the current thread.
81 __ str(rthread, Address(mon, ObjectMonitor::owner_offset()));
82
83 // Pop owner object from lock-stack.
84 __ ldrw(t, Address(rthread, JavaThread::lock_stack_top_offset()));
85 __ subw(t, t, oopSize);
86 #ifdef ASSERT
87 __ str(zr, Address(rthread, t));
88 #endif
89 __ strw(t, Address(rthread, JavaThread::lock_stack_top_offset()));
90
91 __ b(continuation());
92 }
93
94 int C2LoadNKlassStub::max_size() const {
95 return 8;
96 }
97
98 void C2LoadNKlassStub::emit(C2_MacroAssembler& masm) {
99 __ bind(entry());
100 Register d = dst();
101 __ ldr(d, Address(d, OM_OFFSET_NO_MONITOR_VALUE_TAG(header)));
102 __ b(continuation());
103 }
104
105 #undef __
|