[jira] [Commented] (HDFS-10257) Quick Thread Local Storage set-up has a small flaw
[ https://issues.apache.org/jira/browse/HDFS-10257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15285256#comment-15285256 ] Stephen Bovy commented on HDFS-10257: - Hi Chris; I got the build to work by disabling the error message for : GENERATED_JAVAH And commenting out its usage find_package(JNI REQUIRED) if (NOT GENERATED_JAVAH) # Must identify where the generated headers have been placed #MESSAGE(FATAL_ERROR "You must set the CMake variable GENERATED_JAVAH") endif (NOT GENERATED_JAVAH) include_directories( #${GENERATED_JAVAH} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${JNI_INCLUDE_DIRS} main/native main/native/libhdfs ${OS_DIR} ) I would like to find out what this variable is for? Is this something that has to be pre-defined OR is it something that is supposed to be created by the build process? From: Steve and Grace Bovy [mailto:sg.b...@ca.rr.com] Sent: Monday, May 16, 2016 11:24 AM To: 'Chris Nauroth (JIRA)' <j...@apache.org> Subject: RE: [jira] [Commented] (HDFS-10257) Quick Thread Local Storage set-up has a small flaw So I tried using >> cmake.<<<<< And I got >> You must set the CMake variable GENERATED_JAVAH So how to is use cmake on a stand-alone basis (without maven) to build libhdfs I guess I need a shell script for set-up purposes ??? What do I need to set ?? It should not be that difficult [root@sandbox src]# cmake . -- The C compiler identification is GNU 4.4.7 -- The CXX compiler identification is GNU 4.4.7 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done JAVA_HOME=, JAVA_JVM_LIBRARY=/usr/lib/jvm/java/jre/lib/amd64/server/libjvm.so JAVA_INCLUDE_PATH=/usr/lib/jvm/java/include, JAVA_INCLUDE_PATH2=/usr/lib/jvm/java/include/linux Located all JNI components successfully. -- Performing Test HAVE_BETTER_TLS -- Performing Test HAVE_BETTER_TLS - Success -- Performing Test HAVE_INTEL_SSE_INTRINSICS -- Performing Test HAVE_INTEL_SSE_INTRINSICS - Success -- Looking for dlopen in dl -- Looking for dlopen in dl - found -- Found JNI: /usr/lib/jvm/java/jre/lib/amd64/libjawt.so CMake Error at CMakeLists.txt:84 (MESSAGE): You must set the CMake variable GENERATED_JAVAH -- Configuring incomplete, errors occurred! See also "/root/hadoop-2.7.2-src/hadoop-hdfs-project/hadoop-hdfs/src/CMakeFiles/CMakeOutput.log". [root@sandbox src]# > Quick Thread Local Storage set-up has a small flaw > -- > > Key: HDFS-10257 > URL: https://issues.apache.org/jira/browse/HDFS-10257 > Project: Hadoop HDFS > Issue Type: Bug > Components: libhdfs >Affects Versions: 2.6.4 > Environment: Linux >Reporter: Stephen Bovy >Priority: Minor > Original Estimate: 72h > Remaining Estimate: 72h > > In jni_helper.c in the getJNIEnvfunction > The “THREAD_LOCAL_STORAGE_SET_QUICK(env);” Macro is in the wrong > location; > It should precede the “threadLocalStorageSet(env)” as follows :: > THREAD_LOCAL_STORAGE_SET_QUICK(env); > if (threadLocalStorageSet(env)) { > return NULL; > } > AND IN “thread_local_storage.h” the macro: > “THREAD_LOCAL_STORAGE_SET_QUICK” > should be as follows :: > #ifdef HAVE_BETTER_TLS > #define THREAD_LOCAL_STORAGE_GET_QUICK() \ > static __thread JNIEnv *quickTlsEnv = NULL; \ > { \ > if (quickTlsEnv) { \ > return quickTlsEnv; \ > } \ > } > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) \ > { \ > quickTlsEnv = (env); \ > return env; > } > #else > #define THREAD_LOCAL_STORAGE_GET_QUICK() > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) > #endif -- This message was sent by Atlassian JIRA (v6.3.4#6332) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-10257) Quick Thread Local Storage set-up has a small flaw
[ https://issues.apache.org/jira/browse/HDFS-10257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15285003#comment-15285003 ] Stephen Bovy commented on HDFS-10257: - So I tried using >> cmake.< And I got >> You must set the CMake variable GENERATED_JAVAH So how to is use cmake on a stand-alone basis (without maven) to build libhdfs I guess I need a shell script for set-up purposes ??? What do I need to set ?? It should not be that difficult [root@sandbox src]# cmake . -- The C compiler identification is GNU 4.4.7 -- The CXX compiler identification is GNU 4.4.7 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done JAVA_HOME=, JAVA_JVM_LIBRARY=/usr/lib/jvm/java/jre/lib/amd64/server/libjvm.so JAVA_INCLUDE_PATH=/usr/lib/jvm/java/include, JAVA_INCLUDE_PATH2=/usr/lib/jvm/java/include/linux Located all JNI components successfully. -- Performing Test HAVE_BETTER_TLS -- Performing Test HAVE_BETTER_TLS - Success -- Performing Test HAVE_INTEL_SSE_INTRINSICS -- Performing Test HAVE_INTEL_SSE_INTRINSICS - Success -- Looking for dlopen in dl -- Looking for dlopen in dl - found -- Found JNI: /usr/lib/jvm/java/jre/lib/amd64/libjawt.so CMake Error at CMakeLists.txt:84 (MESSAGE): You must set the CMake variable GENERATED_JAVAH -- Configuring incomplete, errors occurred! See also "/root/hadoop-2.7.2-src/hadoop-hdfs-project/hadoop-hdfs/src/CMakeFiles/CMakeOutput.log". [root@sandbox src]# > Quick Thread Local Storage set-up has a small flaw > -- > > Key: HDFS-10257 > URL: https://issues.apache.org/jira/browse/HDFS-10257 > Project: Hadoop HDFS > Issue Type: Bug > Components: libhdfs >Affects Versions: 2.6.4 > Environment: Linux >Reporter: Stephen Bovy >Priority: Minor > Original Estimate: 72h > Remaining Estimate: 72h > > In jni_helper.c in the getJNIEnvfunction > The “THREAD_LOCAL_STORAGE_SET_QUICK(env);” Macro is in the wrong > location; > It should precede the “threadLocalStorageSet(env)” as follows :: > THREAD_LOCAL_STORAGE_SET_QUICK(env); > if (threadLocalStorageSet(env)) { > return NULL; > } > AND IN “thread_local_storage.h” the macro: > “THREAD_LOCAL_STORAGE_SET_QUICK” > should be as follows :: > #ifdef HAVE_BETTER_TLS > #define THREAD_LOCAL_STORAGE_GET_QUICK() \ > static __thread JNIEnv *quickTlsEnv = NULL; \ > { \ > if (quickTlsEnv) { \ > return quickTlsEnv; \ > } \ > } > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) \ > { \ > quickTlsEnv = (env); \ > return env; > } > #else > #define THREAD_LOCAL_STORAGE_GET_QUICK() > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) > #endif -- This message was sent by Atlassian JIRA (v6.3.4#6332) - To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org
[jira] [Commented] (HDFS-10257) Quick Thread Local Storage set-up has a small flaw
[ https://issues.apache.org/jira/browse/HDFS-10257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15233213#comment-15233213 ] Colin Patrick McCabe commented on HDFS-10257: - No need to be ashamed! It's good to have more people looking at the code and getting more familiar with it. > Quick Thread Local Storage set-up has a small flaw > -- > > Key: HDFS-10257 > URL: https://issues.apache.org/jira/browse/HDFS-10257 > Project: Hadoop HDFS > Issue Type: Bug > Components: libhdfs >Affects Versions: 2.6.4 > Environment: Linux >Reporter: Stephen Bovy >Priority: Minor > Original Estimate: 72h > Remaining Estimate: 72h > > In jni_helper.c in the getJNIEnvfunction > The “THREAD_LOCAL_STORAGE_SET_QUICK(env);” Macro is in the wrong > location; > It should precede the “threadLocalStorageSet(env)” as follows :: > THREAD_LOCAL_STORAGE_SET_QUICK(env); > if (threadLocalStorageSet(env)) { > return NULL; > } > AND IN “thread_local_storage.h” the macro: > “THREAD_LOCAL_STORAGE_SET_QUICK” > should be as follows :: > #ifdef HAVE_BETTER_TLS > #define THREAD_LOCAL_STORAGE_GET_QUICK() \ > static __thread JNIEnv *quickTlsEnv = NULL; \ > { \ > if (quickTlsEnv) { \ > return quickTlsEnv; \ > } \ > } > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) \ > { \ > quickTlsEnv = (env); \ > return env; > } > #else > #define THREAD_LOCAL_STORAGE_GET_QUICK() > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) > #endif -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HDFS-10257) Quick Thread Local Storage set-up has a small flaw
[ https://issues.apache.org/jira/browse/HDFS-10257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15232929#comment-15232929 ] Stephen Bovy commented on HDFS-10257: - Yes, it shames me that I forgot about this. > Quick Thread Local Storage set-up has a small flaw > -- > > Key: HDFS-10257 > URL: https://issues.apache.org/jira/browse/HDFS-10257 > Project: Hadoop HDFS > Issue Type: Bug > Components: libhdfs >Affects Versions: 2.6.4 > Environment: Linux >Reporter: Stephen Bovy >Priority: Minor > Original Estimate: 72h > Remaining Estimate: 72h > > In jni_helper.c in the getJNIEnvfunction > The “THREAD_LOCAL_STORAGE_SET_QUICK(env);” Macro is in the wrong > location; > It should precede the “threadLocalStorageSet(env)” as follows :: > THREAD_LOCAL_STORAGE_SET_QUICK(env); > if (threadLocalStorageSet(env)) { > return NULL; > } > AND IN “thread_local_storage.h” the macro: > “THREAD_LOCAL_STORAGE_SET_QUICK” > should be as follows :: > #ifdef HAVE_BETTER_TLS > #define THREAD_LOCAL_STORAGE_GET_QUICK() \ > static __thread JNIEnv *quickTlsEnv = NULL; \ > { \ > if (quickTlsEnv) { \ > return quickTlsEnv; \ > } \ > } > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) \ > { \ > quickTlsEnv = (env); \ > return env; > } > #else > #define THREAD_LOCAL_STORAGE_GET_QUICK() > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) > #endif -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HDFS-10257) Quick Thread Local Storage set-up has a small flaw
[ https://issues.apache.org/jira/browse/HDFS-10257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15232916#comment-15232916 ] Colin Patrick McCabe commented on HDFS-10257: - Thanks for following up, guys. I agree that we need the pthread destructor to avoid leaking memory. > Quick Thread Local Storage set-up has a small flaw > -- > > Key: HDFS-10257 > URL: https://issues.apache.org/jira/browse/HDFS-10257 > Project: Hadoop HDFS > Issue Type: Bug > Components: libhdfs >Affects Versions: 2.6.4 > Environment: Linux >Reporter: Stephen Bovy >Priority: Minor > Original Estimate: 72h > Remaining Estimate: 72h > > In jni_helper.c in the getJNIEnvfunction > The “THREAD_LOCAL_STORAGE_SET_QUICK(env);” Macro is in the wrong > location; > It should precede the “threadLocalStorageSet(env)” as follows :: > THREAD_LOCAL_STORAGE_SET_QUICK(env); > if (threadLocalStorageSet(env)) { > return NULL; > } > AND IN “thread_local_storage.h” the macro: > “THREAD_LOCAL_STORAGE_SET_QUICK” > should be as follows :: > #ifdef HAVE_BETTER_TLS > #define THREAD_LOCAL_STORAGE_GET_QUICK() \ > static __thread JNIEnv *quickTlsEnv = NULL; \ > { \ > if (quickTlsEnv) { \ > return quickTlsEnv; \ > } \ > } > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) \ > { \ > quickTlsEnv = (env); \ > return env; > } > #else > #define THREAD_LOCAL_STORAGE_GET_QUICK() > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) > #endif -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HDFS-10257) Quick Thread Local Storage set-up has a small flaw
[ https://issues.apache.org/jira/browse/HDFS-10257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15226718#comment-15226718 ] Stephen Bovy commented on HDFS-10257: - Thanks Chris; You are correct; I forgot about the thread attach/detach requirements > Quick Thread Local Storage set-up has a small flaw > -- > > Key: HDFS-10257 > URL: https://issues.apache.org/jira/browse/HDFS-10257 > Project: Hadoop HDFS > Issue Type: Bug > Components: libhdfs >Affects Versions: 2.6.4 > Environment: Linux >Reporter: Stephen Bovy >Priority: Minor > Original Estimate: 72h > Remaining Estimate: 72h > > In jni_helper.c in the getJNIEnvfunction > The “THREAD_LOCAL_STORAGE_SET_QUICK(env);” Macro is in the wrong > location; > It should precede the “threadLocalStorageSet(env)” as follows :: > THREAD_LOCAL_STORAGE_SET_QUICK(env); > if (threadLocalStorageSet(env)) { > return NULL; > } > AND IN “thread_local_storage.h” the macro: > “THREAD_LOCAL_STORAGE_SET_QUICK” > should be as follows :: > #ifdef HAVE_BETTER_TLS > #define THREAD_LOCAL_STORAGE_GET_QUICK() \ > static __thread JNIEnv *quickTlsEnv = NULL; \ > { \ > if (quickTlsEnv) { \ > return quickTlsEnv; \ > } \ > } > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) \ > { \ > quickTlsEnv = (env); \ > return env; > } > #else > #define THREAD_LOCAL_STORAGE_GET_QUICK() > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) > #endif -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HDFS-10257) Quick Thread Local Storage set-up has a small flaw
[ https://issues.apache.org/jira/browse/HDFS-10257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15226681#comment-15226681 ] Chris Nauroth commented on HDFS-10257: -- I disagree with the proposed change. Even when we use {{__thread}} to avoid mutex contention, we still have a reliance on the pthreads destructor function to detach the thread from the JVM. This happens in os/posix/thread_local_storage.c. According to the documentation of [{{pthread_key_create}}|http://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_key_create.html], the destructor function is only called if there is a non-null value associated with the TLS key. bq. At thread exit, if a key value has a non-NULL destructor pointer, and the thread has a non-NULL value associated with that key, the value of the key is set to NULL, and then the function pointed to is called with the previously associated value as its sole argument. Therefore, we still need to call {{threadLocalStorageSet}} to make sure a value is associated with the key and it can be accessed by the thread destructor. Please let me know if I missed something or perhaps misunderstood some subtlety of pthreads. > Quick Thread Local Storage set-up has a small flaw > -- > > Key: HDFS-10257 > URL: https://issues.apache.org/jira/browse/HDFS-10257 > Project: Hadoop HDFS > Issue Type: Bug > Components: libhdfs >Affects Versions: 2.6.4 > Environment: Linux >Reporter: Stephen Bovy >Priority: Minor > Original Estimate: 72h > Remaining Estimate: 72h > > In jni_helper.c in the getJNIEnvfunction > The “THREAD_LOCAL_STORAGE_SET_QUICK(env);” Macro is in the wrong > location; > It should precede the “threadLocalStorageSet(env)” as follows :: > THREAD_LOCAL_STORAGE_SET_QUICK(env); > if (threadLocalStorageSet(env)) { > return NULL; > } > AND IN “thread_local_storage.h” the macro: > “THREAD_LOCAL_STORAGE_SET_QUICK” > should be as follows :: > #ifdef HAVE_BETTER_TLS > #define THREAD_LOCAL_STORAGE_GET_QUICK() \ > static __thread JNIEnv *quickTlsEnv = NULL; \ > { \ > if (quickTlsEnv) { \ > return quickTlsEnv; \ > } \ > } > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) \ > { \ > quickTlsEnv = (env); \ > return env; > } > #else > #define THREAD_LOCAL_STORAGE_GET_QUICK() > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) > #endif -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HDFS-10257) Quick Thread Local Storage set-up has a small flaw
[ https://issues.apache.org/jira/browse/HDFS-10257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15225669#comment-15225669 ] Stephen Bovy commented on HDFS-10257: - When someone wants to use "HAVE_BETTER_TLS" (quick thread local storage) The code should not execute ""threadLocalStorageSet" because it is not needed and not required. The changes I recommended would fix this First the MACRO "THREAD_LOCAL_STORAGE_SET_QUICK" should be changed so that after quickTlsEnv = (env); is set Then we should return env; Secondly the order for invoking the MACRO should be changed THREAD_LOCAL_STORAGE_SET_QUICK(env); if (threadLocalStorageSet(env)) { return NULL; } > Quick Thread Local Storage set-up has a small flaw > -- > > Key: HDFS-10257 > URL: https://issues.apache.org/jira/browse/HDFS-10257 > Project: Hadoop HDFS > Issue Type: Bug > Components: libhdfs >Affects Versions: 2.6.4 > Environment: Linux >Reporter: Stephen Bovy >Priority: Minor > Original Estimate: 72h > Remaining Estimate: 72h > > In jni_helper.c in the getJNIEnvfunction > The “THREAD_LOCAL_STORAGE_SET_QUICK(env);” Macro is in the wrong > location; > It should precede the “threadLocalStorageSet(env)” as follows :: > THREAD_LOCAL_STORAGE_SET_QUICK(env); > if (threadLocalStorageSet(env)) { > return NULL; > } > AND IN “thread_local_storage.h” the macro: > “THREAD_LOCAL_STORAGE_SET_QUICK” > should be as follows :: > #ifdef HAVE_BETTER_TLS > #define THREAD_LOCAL_STORAGE_GET_QUICK() \ > static __thread JNIEnv *quickTlsEnv = NULL; \ > { \ > if (quickTlsEnv) { \ > return quickTlsEnv; \ > } \ > } > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) \ > { \ > quickTlsEnv = (env); \ > return env; > } > #else > #define THREAD_LOCAL_STORAGE_GET_QUICK() > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) > #endif -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HDFS-10257) Quick Thread Local Storage set-up has a small flaw
[ https://issues.apache.org/jira/browse/HDFS-10257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15225659#comment-15225659 ] Stephen Bovy commented on HDFS-10257: - Thanks for your quick reply :) The problem is "threadLocalStorageSet" should not be executed when someone wants to use "HAVE_BETTER_TLS" The changes I recommended would fix this > Quick Thread Local Storage set-up has a small flaw > -- > > Key: HDFS-10257 > URL: https://issues.apache.org/jira/browse/HDFS-10257 > Project: Hadoop HDFS > Issue Type: Bug > Components: libhdfs >Affects Versions: 2.6.4 > Environment: Linux >Reporter: Stephen Bovy >Priority: Minor > Original Estimate: 72h > Remaining Estimate: 72h > > In jni_helper.c in the getJNIEnvfunction > The “THREAD_LOCAL_STORAGE_SET_QUICK(env);” Macro is in the wrong > location; > It should precede the “threadLocalStorageSet(env)” as follows :: > THREAD_LOCAL_STORAGE_SET_QUICK(env); > if (threadLocalStorageSet(env)) { > return NULL; > } > AND IN “thread_local_storage.h” the macro: > “THREAD_LOCAL_STORAGE_SET_QUICK” > should be as follows :: > #ifdef HAVE_BETTER_TLS > #define THREAD_LOCAL_STORAGE_GET_QUICK() \ > static __thread JNIEnv *quickTlsEnv = NULL; \ > { \ > if (quickTlsEnv) { \ > return quickTlsEnv; \ > } \ > } > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) \ > { \ > quickTlsEnv = (env); \ > return env; > } > #else > #define THREAD_LOCAL_STORAGE_GET_QUICK() > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) > #endif -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (HDFS-10257) Quick Thread Local Storage set-up has a small flaw
[ https://issues.apache.org/jira/browse/HDFS-10257?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15225641#comment-15225641 ] Colin Patrick McCabe commented on HDFS-10257: - Can you explain why you think this is a flaw? If the {{threadLocalStorageSet}} function fails, I don't think we want the data lingering in the other TLS location. > Quick Thread Local Storage set-up has a small flaw > -- > > Key: HDFS-10257 > URL: https://issues.apache.org/jira/browse/HDFS-10257 > Project: Hadoop HDFS > Issue Type: Bug > Components: libhdfs >Affects Versions: 2.6.4 > Environment: Linux >Reporter: Stephen Bovy >Priority: Minor > Original Estimate: 72h > Remaining Estimate: 72h > > In jni_helper.c in the getJNIEnvfunction > The “THREAD_LOCAL_STORAGE_SET_QUICK(env);” Macro is in the wrong > location; > It should precede the “threadLocalStorageSet(env)” as follows :: > THREAD_LOCAL_STORAGE_SET_QUICK(env); > if (threadLocalStorageSet(env)) { > return NULL; > } > AND IN “thread_local_storage.h” the macro: > “THREAD_LOCAL_STORAGE_SET_QUICK” > should be as follows :: > #ifdef HAVE_BETTER_TLS > #define THREAD_LOCAL_STORAGE_GET_QUICK() \ > static __thread JNIEnv *quickTlsEnv = NULL; \ > { \ > if (quickTlsEnv) { \ > return quickTlsEnv; \ > } \ > } > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) \ > { \ > quickTlsEnv = (env); \ > return env; > } > #else > #define THREAD_LOCAL_STORAGE_GET_QUICK() > #define THREAD_LOCAL_STORAGE_SET_QUICK(env) > #endif -- This message was sent by Atlassian JIRA (v6.3.4#6332)