From 9bd213402bd9867baf564ea710f13302d5f8da90 Mon Sep 17 00:00:00 2001 From: Ivo Hinkelmann Date: Thu, 23 Apr 2009 10:42:05 +0000 Subject: CWS-TOOLING: integrate CWS dbaperf1 2009-04-02 09:12:25 +0200 oj r270372 : CWS-TOOLING: rebase CWS dbaperf1 to trunk@270033 (milestone: DEV300:m45) 2009-03-17 10:20:34 +0100 oj r269577 : add parameter 2009-03-17 10:20:05 +0100 oj r269576 : add parameter 2009-03-12 12:32:24 +0100 oj r269387 : add missing ++ 2009-03-11 12:53:35 +0100 oj r269315 : compile error 2009-03-06 08:52:11 +0100 oj r268968 : #i99264# remove duplicate code 2009-03-06 08:20:08 +0100 oj r268966 : add missingheader 2009-03-06 08:17:41 +0100 oj r268965 : add header 2009-03-06 08:15:07 +0100 oj r268964 : #i99708# remove duplicate code 2009-03-06 07:24:11 +0100 oj r268963 : #i99708# remove duplicate code 2009-03-06 07:22:24 +0100 oj r268962 : #i99708# use tenary operator 2009-03-06 07:19:21 +0100 oj r268961 : remove unused rtl_logs 2009-03-06 07:15:55 +0100 oj r268960 : #i99708# extract getLength from for loop 2009-03-06 07:15:35 +0100 oj r268959 : #i99708# extract getLength from for loop 2009-03-06 07:14:57 +0100 oj r268958 : remove unused rtl_logs 2009-03-06 07:13:01 +0100 oj r268957 : insert DBG_ helper 2009-03-06 07:12:17 +0100 oj r268956 : remove unused rtl_logs 2009-03-06 07:10:26 +0100 oj r268955 : remove unused rtl_logs 2009-03-06 07:04:51 +0100 oj r268954 : #i99708# use tenary operator 2009-03-05 12:04:46 +0100 oj r268895 : comment RTL_LOG out 2009-03-05 09:05:07 +0100 oj r268874 : add rtl logfile 2009-03-04 14:21:18 +0100 oj r268828 : #i99708# make static inplace and some method calls in for loop removed 2009-03-04 14:20:34 +0100 oj r268827 : #i99708# impl double check pattern for getInfohelper 2009-03-02 09:31:42 +0100 oj r268636 : add rtl logfile 2009-03-02 08:18:37 +0100 oj r268633 : add rtl logfile 2009-02-27 11:22:16 +0100 oj r268570 : #i99709# change algorithm for marking objects 2009-02-27 11:17:04 +0100 oj r268568 : #i99708# some improvements to load forms, controls faster and replacement of size() call with !empty() which is much faster 2009-02-24 10:09:35 +0100 sb r268383 : #i99290# no longer care to set a sensible context class loader for native threads attached to the VM 2009-02-23 13:44:04 +0100 oj r268354 : #i76606# seekrow changes 2009-02-23 12:27:30 +0100 oj r268349 : deleted 2009-02-20 15:14:23 +0100 oj r268325 : #i76606# some code changes 2009-02-19 14:15:25 +0100 oj r268284 : #i76606# use of simple prep stmt instead of full blown rowset, when source and dest connection are the same use insert into ... ( select ... ) 2009-02-19 11:27:55 +0100 oj r268265 : #i76606# insert some RTL_LOG and setObject impl 2009-02-18 14:45:37 +0100 oj r268222 : #i99363# insert RTL_LOG 2009-02-18 14:45:18 +0100 oj r268221 : #i99363# insert RTL_LOG 2009-02-18 11:14:54 +0100 oj r268207 : #i99363# call some impl_ methods to avoid duplicate cechCache calls 2009-02-18 11:10:47 +0100 oj r268206 : #i99363# make isCount inline 2009-02-18 10:33:22 +0100 oj r268203 : #i99363# use bookmarkable if available and inserted some RTL_LOG 2009-02-18 10:32:57 +0100 oj r268202 : #i99363# use bookmarkable if available and inserted some RTL_LOG 2009-02-17 07:29:05 +0100 oj r267843 : #i96897# remove some dll public 2009-02-16 15:01:04 +0100 oj r267816 : #i96897# remove some dll public 2009-02-16 14:25:53 +0100 oj r267810 : #i99264# remove duplicate code 2009-02-16 14:25:33 +0100 oj r267809 : #i99264# remove duplicate code 2009-02-16 14:24:59 +0100 oj r267808 : #i99264# remove duplicate code 2009-02-13 10:56:17 +0100 oj r267703 : #i99191# comment the contextclassloader 2009-02-13 10:32:40 +0100 oj r267700 : reduce call to resultset meta data 2009-02-13 10:27:31 +0100 oj r267699 : reduce call to resultset meta data 2009-02-13 10:27:08 +0100 oj r267698 : reduce call to resultset meta data --- jvmaccess/inc/jvmaccess/virtualmachine.hxx | 23 +++++------- jvmaccess/source/virtualmachine.cxx | 59 +----------------------------- 2 files changed, 11 insertions(+), 71 deletions(-) (limited to 'jvmaccess') diff --git a/jvmaccess/inc/jvmaccess/virtualmachine.hxx b/jvmaccess/inc/jvmaccess/virtualmachine.hxx index 978d0c9c4420..d5300fa2b67e 100644 --- a/jvmaccess/inc/jvmaccess/virtualmachine.hxx +++ b/jvmaccess/inc/jvmaccess/virtualmachine.hxx @@ -130,14 +130,16 @@ public: thread that has called JNI_CreateJavaVM in case the virtual machine has been started via the JNI Invocation API, and it must not already have called DetachCurrentThread; or it must be executing native code called - from a "primordial" virtual machine). This environment pointer is used - to obtain a reference to the thread's current context class loader - (java.lang.Thread.getCurrentClassLoader). If later a native thread is - attached to the virtual machine, that thread's context class loader - would be null, so the AttachGuard first of all sets it to the saved - value. In a nutshell, this means that all native threads attached to - the virtual machine use the context class loader of the "initial Java - thread." + from a "primordial" virtual machine). This environment pointer was + formerly used to obtain a reference to the thread's current context + class loader (java.lang.Thread.getCurrentClassLoader; if later a native + thread was attached to the virtual machine, that thread's context class + loader would be null, so the AttachGuard first of all set it to the + saved value; this feature has been removed again for performance reasons + and because the default context class loader is often not useful, so + that code relying on a context class loader has to set one explicitly, + anyway). This parameter is currently unused (but may be used again in + the future). */ VirtualMachine(JavaVM * pVm, int nVersion, bool bDestroy, JNIEnv * pMainThreadEnv); @@ -148,10 +150,6 @@ private: virtual ~VirtualMachine(); - void acquireInitialContextClassLoader(JNIEnv * pEnv); - - void releaseInitialContextClassLoader() const; - JNIEnv * attachThread(bool * pAttached) const; void detachThread() const; @@ -159,7 +157,6 @@ private: JavaVM * m_pVm; jint m_nVersion; bool m_bDestroy; - jobject m_aInitialContextClassLoader; friend class AttachGuard; // to access attachThread, detachThread }; diff --git a/jvmaccess/source/virtualmachine.cxx b/jvmaccess/source/virtualmachine.cxx index c047195629bc..b6d6043e1e6a 100644 --- a/jvmaccess/source/virtualmachine.cxx +++ b/jvmaccess/source/virtualmachine.cxx @@ -71,17 +71,15 @@ VirtualMachine::VirtualMachine(JavaVM * pVm, int nVersion, bool bDestroy, JNIEnv * pMainThreadEnv): m_pVm(pVm), m_nVersion(nVersion), m_bDestroy(bDestroy) { + (void) pMainThreadEnv; // avoid warnings #ifdef SOLAR_JAVA OSL_ENSURE(pVm != 0 && nVersion >= JNI_VERSION_1_2 && pMainThreadEnv != 0, "bad parameter"); #endif - - acquireInitialContextClassLoader(pMainThreadEnv); } VirtualMachine::~VirtualMachine() { - releaseInitialContextClassLoader(); if (m_bDestroy) { // Do not destroy the VM. Under Java 1.3, the AWT event loop thread is @@ -95,48 +93,6 @@ VirtualMachine::~VirtualMachine() } } -void VirtualMachine::acquireInitialContextClassLoader(JNIEnv * pEnv) -{ -#ifdef SOLAR_JAVA - jclass aClass = pEnv->FindClass("java/lang/Thread"); - jmethodID aMethod1 = pEnv->GetStaticMethodID(aClass, "currentThread", - "()Ljava/lang/Thread;"); - jobject aThread = pEnv->CallStaticObjectMethod(aClass, aMethod1); - jmethodID aMethod2 = pEnv->GetMethodID(aClass, "getContextClassLoader", - "()Ljava/lang/ClassLoader;"); - jobject aClassLoader = pEnv->CallObjectMethod(aThread, aMethod2); - OSL_ENSURE(!pEnv->ExceptionCheck(), "JNI: exception occured"); - pEnv->ExceptionClear(); - if (aClassLoader == 0) - m_aInitialContextClassLoader = 0; - else - { - m_aInitialContextClassLoader = pEnv->NewGlobalRef(aClassLoader); - OSL_ENSURE(m_aInitialContextClassLoader != 0, - "JNI: NewGlobalRef failed"); - } -#endif -} - -void VirtualMachine::releaseInitialContextClassLoader() const -{ -#ifdef SOLAR_JAVA - if (m_aInitialContextClassLoader != 0) - { - JNIEnv * pEnv; - jint n = m_pVm->AttachCurrentThread(reinterpret_cast< void ** >(&pEnv), - 0); - OSL_ENSURE(n == JNI_OK, "JNI: AttachCurrentThread failed"); - if (n == JNI_OK) - { - pEnv->DeleteGlobalRef(m_aInitialContextClassLoader); - n = m_pVm->DetachCurrentThread(); - OSL_ENSURE(n == JNI_OK, "JNI: DetachCurrentThread failed"); - } - } -#endif -} - JNIEnv * VirtualMachine::attachThread(bool * pAttached) const { #ifndef SOLAR_JAVA @@ -153,19 +109,6 @@ JNIEnv * VirtualMachine::attachThread(bool * pAttached) const if (m_pVm->AttachCurrentThread(reinterpret_cast< void ** >(&pEnv), 0) != JNI_OK) return 0; - if (m_aInitialContextClassLoader != 0) - { - jclass aClass = pEnv->FindClass("java/lang/Thread"); - jmethodID aMethod1 = pEnv->GetStaticMethodID( - aClass, "currentThread", "()Ljava/lang/Thread;"); - jobject aThread = pEnv->CallStaticObjectMethod(aClass, aMethod1); - jmethodID aMethod2 = pEnv->GetMethodID( - aClass, "setContextClassLoader", "(Ljava/lang/ClassLoader;)V"); - pEnv->CallVoidMethod(aThread, aMethod2, - m_aInitialContextClassLoader); - OSL_ENSURE(!pEnv->ExceptionCheck(), "JNI: exception occured"); - pEnv->ExceptionClear(); - } *pAttached = true; } else -- cgit v1.2.3