summaryrefslogtreecommitdiff
path: root/jvmaccess
diff options
context:
space:
mode:
authorIvo Hinkelmann <ihi@openoffice.org>2009-04-23 10:42:05 +0000
committerIvo Hinkelmann <ihi@openoffice.org>2009-04-23 10:42:05 +0000
commit9bd213402bd9867baf564ea710f13302d5f8da90 (patch)
tree5325b2b429b8e9ee0ed297c4867398283ec2f3d6 /jvmaccess
parent8ae4080d469cba205117a6d9340069348c582fd5 (diff)
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
Diffstat (limited to 'jvmaccess')
-rw-r--r--jvmaccess/inc/jvmaccess/virtualmachine.hxx23
-rw-r--r--jvmaccess/source/virtualmachine.cxx59
2 files changed, 11 insertions, 71 deletions
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