76 #ifdef _LP64
77 int C2HandleAnonOMOwnerStub::max_size() const {
78 // Max size of stub has been determined by testing with 0, in which case
79 // C2CodeStubList::emit() will throw an assertion and report the actual size that
80 // is needed.
81 return DEBUG_ONLY(36) NOT_DEBUG(21);
82 }
83
84 void C2HandleAnonOMOwnerStub::emit(C2_MacroAssembler& masm) {
85 __ bind(entry());
86 Register mon = monitor();
87 Register t = tmp();
88 __ movptr(Address(mon, OM_OFFSET_NO_MONITOR_VALUE_TAG(owner)), r15_thread);
89 __ subl(Address(r15_thread, JavaThread::lock_stack_top_offset()), oopSize);
90 #ifdef ASSERT
91 __ movl(t, Address(r15_thread, JavaThread::lock_stack_top_offset()));
92 __ movptr(Address(r15_thread, t), 0);
93 #endif
94 __ jmp(continuation());
95 }
96 #endif
97
98 #undef __
|
76 #ifdef _LP64
77 int C2HandleAnonOMOwnerStub::max_size() const {
78 // Max size of stub has been determined by testing with 0, in which case
79 // C2CodeStubList::emit() will throw an assertion and report the actual size that
80 // is needed.
81 return DEBUG_ONLY(36) NOT_DEBUG(21);
82 }
83
84 void C2HandleAnonOMOwnerStub::emit(C2_MacroAssembler& masm) {
85 __ bind(entry());
86 Register mon = monitor();
87 Register t = tmp();
88 __ movptr(Address(mon, OM_OFFSET_NO_MONITOR_VALUE_TAG(owner)), r15_thread);
89 __ subl(Address(r15_thread, JavaThread::lock_stack_top_offset()), oopSize);
90 #ifdef ASSERT
91 __ movl(t, Address(r15_thread, JavaThread::lock_stack_top_offset()));
92 __ movptr(Address(r15_thread, t), 0);
93 #endif
94 __ jmp(continuation());
95 }
96
97 int C2LoadNKlassStub::max_size() const {
98 return 10;
99 }
100
101 void C2LoadNKlassStub::emit(C2_MacroAssembler& masm) {
102 __ bind(entry());
103 Register d = dst();
104 __ movq(d, Address(d, OM_OFFSET_NO_MONITOR_VALUE_TAG(header)));
105 __ jmp(continuation());
106 }
107 #endif
108
109 #undef __
|