On 12/11/2015 11:51 PM, Thomas Stüfe wrote:
Hi David,

builds and works on both variants (with and without
USE_LIBRARY_BASED_TLS_ONLY) on AIX and Linux ppc.

Great - thanks!

Small nitpicks:

- I probably would have implemented Thread::current() using
Thread::current_or_null().

I can do that. I presume the compiler will be smart enough. :)

- Also, instead of using the "raw" ThreadLocalStorage::thread(), I would
have liked a Thread::current_safe() or similar.

That's a reasonable suggestion too - I was influenced by existing usage, but could change it.

I'll send out the formal RFR once I have checked performance and done more testing.

Thanks,
David

Kind Regards, Thomas


On Wed, Nov 11, 2015 at 9:23 PM, David Holmes <[email protected]
<mailto:[email protected]>> wrote:

    Sorry Thomas the all important:

    src/os/posix/vm/threadLocalStorage_posix.cpp

    was missing from the webrev. Now adding.

    David
    -----

    On 12/11/2015 2:47 AM, Thomas Stüfe wrote:


        On Wed, Nov 11, 2015 at 5:36 PM, Thomas Stüfe
        <[email protected] <mailto:[email protected]>
        <mailto:[email protected]
        <mailto:[email protected]>>> 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
             <[email protected] <mailto:[email protected]>
        <mailto:[email protected]
        <mailto:[email protected]>>> 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




Reply via email to