comparison src/os_cpu/solaris_x86/vm/assembler_solaris_x86.cpp @ 7430:d02120b7a34f

8004250: replace AbstractAssembler a_byte/a_long with emit_int8/emit_int32 Reviewed-by: jrose, kvn, twisti Contributed-by: Morris Meyer <morris.meyer@oracle.com>
author twisti
date Thu, 20 Dec 2012 18:53:44 -0800
parents cd3d6a6b95d9
children
comparison
equal deleted inserted replaced
7429:a46457045d66 7430:d02120b7a34f
114 int segment = NOT_LP64(Assembler::GS_segment) LP64_ONLY(Assembler::FS_segment); 114 int segment = NOT_LP64(Assembler::GS_segment) LP64_ONLY(Assembler::FS_segment);
115 // Try to emit a Solaris-specific fast TSD/TLS accessor. 115 // Try to emit a Solaris-specific fast TSD/TLS accessor.
116 ThreadLocalStorage::pd_tlsAccessMode tlsMode = ThreadLocalStorage::pd_getTlsAccessMode (); 116 ThreadLocalStorage::pd_tlsAccessMode tlsMode = ThreadLocalStorage::pd_getTlsAccessMode ();
117 if (tlsMode == ThreadLocalStorage::pd_tlsAccessIndirect) { // T1 117 if (tlsMode == ThreadLocalStorage::pd_tlsAccessIndirect) { // T1
118 // Use thread as a temporary: mov r, gs:[0]; mov r, [r+tlsOffset] 118 // Use thread as a temporary: mov r, gs:[0]; mov r, [r+tlsOffset]
119 emit_byte (segment); 119 emit_int8 (segment);
120 // ExternalAddress doesn't work because it can't take NULL 120 // ExternalAddress doesn't work because it can't take NULL
121 AddressLiteral null(0, relocInfo::none); 121 AddressLiteral null(0, relocInfo::none);
122 movptr (thread, null); 122 movptr (thread, null);
123 movptr(thread, Address(thread, ThreadLocalStorage::pd_getTlsOffset())) ; 123 movptr(thread, Address(thread, ThreadLocalStorage::pd_getTlsOffset())) ;
124 return ; 124 return ;
125 } else 125 } else
126 if (tlsMode == ThreadLocalStorage::pd_tlsAccessDirect) { // T2 126 if (tlsMode == ThreadLocalStorage::pd_tlsAccessDirect) { // T2
127 // mov r, gs:[tlsOffset] 127 // mov r, gs:[tlsOffset]
128 emit_byte (segment); 128 emit_int8 (segment);
129 AddressLiteral tls_off((address)ThreadLocalStorage::pd_getTlsOffset(), relocInfo::none); 129 AddressLiteral tls_off((address)ThreadLocalStorage::pd_getTlsOffset(), relocInfo::none);
130 movptr (thread, tls_off); 130 movptr (thread, tls_off);
131 return ; 131 return ;
132 } 132 }
133 133