(L) Prelim RFR: 8132510: Replace ThreadLocalStorage with compiler/language-based thread-local variables

Thomas Stüfe thomas.stuefe at gmail.com
Wed Nov 11 16:47:00 UTC 2015


On Wed, Nov 11, 2015 at 5:36 PM, Thomas Stüfe <thomas.stuefe at gmail.com>
wrote:

> Hi David,
>
> I get build errors on all my platforms.
>
> I think the change misses #include "runtime/threadLocalStorage.hpp" in a
> couple of places, at least thread.cpp and possible also the os_xx_yy.cpp
> files.
>
>
Sorry, I have to correct myself. It is a linker error, I do not find the
implementations for the ThreadLocalStorage class methods anywhere. I
applied your patch atop a freshly synced hs-rt repo:

- .../hotspot $ hg log -l 3
changeset:   9317:3b23f69bc887 8132510__thread_davids_change qbase qtip tip
user:        stuefe
date:        Wed Nov 11 16:12:14 2015 +0100
summary:     imported patch 8132510__thread_davids_change

changeset:   9316:f17e5edbe761 qparent
user:        tschatzl
date:        Tue Nov 10 11:07:15 2015 +0100
summary:     8140689: Skip last young-only gc if nothing to do in the mixed
gc phase
Reviewed-by: mgerdin, drwhite

on AIX I get:

ld: 0711-317 ERROR: Undefined symbol: .ThreadLocalStorage::thread()
ld: 0711-317 ERROR: Undefined symbol: .ThreadLocalStorage::is_initialized()
ld: 0711-317 ERROR: Undefined symbol:
.ThreadLocalStorage::set_thread(Thread*)
ld: 0711-317 ERROR: Undefined symbol: .ThreadLocalStorage::init()

Am I building wrong?

Regards, Thomas



> Will take another look tomorrow.
>
> Thanks, Thomas
>
> On Wed, Nov 11, 2015 at 9:19 AM, David Holmes <david.holmes at oracle.com>
> wrote:
>
>> Hi Thomas,
>>
>> Okay here's the next revision:
>>
>> http://cr.openjdk.java.net/~dholmes/8132510/webrev.v5/
>>
>> I've reinstated a basic ThreadLocalStorage class which will only need two
>> implementations: a POSIX one, and a Windows one (still TBD). This class is
>> always initialized and ThreadLocalStorage::thread() is used from the signal
>> handlers (as today).
>>
>> For platforms that don't have __thread support they can define
>> USE_LIBRARY_BASED_TLS_ONLY at build time to only use the ThreadLocalStorage
>> implementation.
>>
>> Obviously still need to get some performance numbers.
>>
>> I'd appreciate it if you could retest AIX, though as all platforms
>> currently use pthread_get/setspecific I'm confident there will be no
>> platform issues.
>>
>> Thanks,
>> David
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/porters-dev/attachments/20151111/91416891/attachment.html>


More information about the porters-dev mailing list