diff options
author | Tom Tromey <tromey@cygnus.com> | 1999-11-04 19:47:01 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 1999-11-04 19:47:01 +0000 |
commit | 397f674e7fc336d69263e009b088fab16dbfdd12 (patch) | |
tree | 56c12e122215f8fe429ce80cd8ed3952c7ad64d7 /libjava/java/lang/natClass.cc | |
parent | 3442c71cfc49a8891c68f5c9c33e86283e20109b (diff) | |
download | gcc-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/lang/natClass.cc')
-rw-r--r-- | libjava/java/lang/natClass.cc | 44 |
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); } |