< prev index next >

src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp

Print this page
rev 50535 : [mq]: rename_IN_ROOT


2103     Label ok;
2104     push(1 << rscratch1->encoding(), sp); // cmpptr trashes rscratch1
2105     cmpptr(rheapbase, ExternalAddress((address)Universe::narrow_ptrs_base_addr()));
2106     br(Assembler::EQ, ok);
2107     stop(msg);
2108     bind(ok);
2109     pop(1 << rscratch1->encoding(), sp);
2110   }
2111 #endif
2112 }
2113 #endif
2114 
2115 void MacroAssembler::resolve_jobject(Register value, Register thread, Register tmp) {
2116   Label done, not_weak;
2117   cbz(value, done);           // Use NULL as-is.
2118 
2119   STATIC_ASSERT(JNIHandles::weak_tag_mask == 1u);
2120   tbz(r0, 0, not_weak);    // Test for jweak tag.
2121 
2122   // Resolve jweak.
2123   access_load_at(T_OBJECT, IN_ROOT | ON_PHANTOM_OOP_REF, value,
2124                  Address(value, -JNIHandles::weak_tag_value), tmp, thread);
2125   verify_oop(value);
2126   b(done);
2127 
2128   bind(not_weak);
2129   // Resolve (untagged) jobject.
2130   access_load_at(T_OBJECT, IN_CONCURRENT_ROOT, value, Address(value, 0), tmp,
2131                  thread);
2132   verify_oop(value);
2133   bind(done);
2134 }
2135 
2136 void MacroAssembler::stop(const char* msg) {
2137   address ip = pc();
2138   pusha();
2139   mov(c_rarg0, (address)msg);
2140   mov(c_rarg1, (address)ip);
2141   mov(c_rarg2, sp);
2142   mov(c_rarg3, CAST_FROM_FN_PTR(address, MacroAssembler::debug64));
2143   // call(c_rarg3);




2103     Label ok;
2104     push(1 << rscratch1->encoding(), sp); // cmpptr trashes rscratch1
2105     cmpptr(rheapbase, ExternalAddress((address)Universe::narrow_ptrs_base_addr()));
2106     br(Assembler::EQ, ok);
2107     stop(msg);
2108     bind(ok);
2109     pop(1 << rscratch1->encoding(), sp);
2110   }
2111 #endif
2112 }
2113 #endif
2114 
2115 void MacroAssembler::resolve_jobject(Register value, Register thread, Register tmp) {
2116   Label done, not_weak;
2117   cbz(value, done);           // Use NULL as-is.
2118 
2119   STATIC_ASSERT(JNIHandles::weak_tag_mask == 1u);
2120   tbz(r0, 0, not_weak);    // Test for jweak tag.
2121 
2122   // Resolve jweak.
2123   access_load_at(T_OBJECT, IN_NATIVE | ON_PHANTOM_OOP_REF, value,
2124                  Address(value, -JNIHandles::weak_tag_value), tmp, thread);
2125   verify_oop(value);
2126   b(done);
2127 
2128   bind(not_weak);
2129   // Resolve (untagged) jobject.
2130   access_load_at(T_OBJECT, IN_CONCURRENT_ROOT, value, Address(value, 0), tmp,
2131                  thread);
2132   verify_oop(value);
2133   bind(done);
2134 }
2135 
2136 void MacroAssembler::stop(const char* msg) {
2137   address ip = pc();
2138   pusha();
2139   mov(c_rarg0, (address)msg);
2140   mov(c_rarg1, (address)ip);
2141   mov(c_rarg2, sp);
2142   mov(c_rarg3, CAST_FROM_FN_PTR(address, MacroAssembler::debug64));
2143   // call(c_rarg3);


< prev index next >