aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
authorTom Tromey <tromey@cygnus.com>1999-11-04 19:47:01 +0000
committerTom Tromey <tromey@gcc.gnu.org>1999-11-04 19:47:01 +0000
commit397f674e7fc336d69263e009b088fab16dbfdd12 (patch)
tree56c12e122215f8fe429ce80cd8ed3952c7ad64d7 /libjava/java
parent3442c71cfc49a8891c68f5c9c33e86283e20109b (diff)
downloadgcc-397f674e7fc336d69263e009b088fab16dbfdd12.zip
gcc-397f674e7fc336d69263e009b088fab16dbfdd12.tar.gz
gcc-397f674e7fc336d69263e009b088fab16dbfdd12.tar.bz2
natClass.cc (method_cache_count): Removed.
* java/lang/natClass.cc (method_cache_count): Removed. (_Jv_FindMethodInCache): Don't loop looking for the hash entry. (_Jv_AddMethodToCache): Don't loop. From-SVN: r30397
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/lang/natClass.cc44
1 files changed, 13 insertions, 31 deletions
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc
index f7c598d..2d4c956 100644
--- a/libjava/java/lang/natClass.cc
+++ b/libjava/java/lang/natClass.cc
@@ -515,28 +515,21 @@ struct _Jv_mcache {
};
static _Jv_mcache method_cache[MCACHE_SIZE];
-static int method_cache_count;
-static void*
+static void *
_Jv_FindMethodInCache (jclass klass,
_Jv_Utf8Const *name,
_Jv_Utf8Const *signature)
{
- for (int index = name->hash % MCACHE_SIZE;
- method_cache[index].klass != NULL;
- index = (index+1) % MCACHE_SIZE)
- {
- _Jv_mcache *mc = (method_cache+index);
- _Jv_Method *m = mc->method;
-
- if (mc->klass == klass
- && m != NULL // thread safe check
- && _Jv_equalUtf8Consts (m->name, name)
- && _Jv_equalUtf8Consts (m->signature, signature))
- {
- return mc->method->ncode;
- }
- }
+ int index = name->hash & MCACHE_SIZE;
+ _Jv_mcache *mc = method_cache + index;
+ _Jv_Method *m = mc->method;
+
+ if (mc->klass == klass
+ && m != NULL // thread safe check
+ && _Jv_equalUtf8Consts (m->name, name)
+ && _Jv_equalUtf8Consts (m->signature, signature))
+ return mc->method->ncode;
return NULL;
}
@@ -546,22 +539,11 @@ _Jv_AddMethodToCache (jclass klass,
{
_Jv_MonitorEnter (&ClassClass);
- if (method_cache_count > MCACHE_SIZE*2/3)
- {
- for (int i = 0; i < MCACHE_SIZE; i++)
- method_cache[i].klass = 0;
- }
+ int index = method->name->hash & MCACHE_SIZE;
- for (int index = method->name->hash % MCACHE_SIZE;
- method_cache[index].klass != NULL;
- index = (index+1) % MCACHE_SIZE)
- {
- method_cache[index].method = method;
- method_cache[index].klass = klass;
- }
+ method_cache[index].method = method;
+ method_cache[index].klass = klass;
- method_cache_count += 1;
-
_Jv_MonitorExit (&ClassClass);
}