diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-11-04 19:47:01 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-11-04 19:47:01 +0000 |
commit | f28ac70f5a5d9e7186f129c0e736c29d0efe4491 (patch) | |
tree | 56c12e122215f8fe429ce80cd8ed3952c7ad64d7 /libjava/java | |
parent | 2c6bcdbf388c45a82197e8ac20f8a32996aedc9c (diff) | |
download | ppe42-gcc-f28ac70f5a5d9e7186f129c0e736c29d0efe4491.tar.gz ppe42-gcc-f28ac70f5a5d9e7186f129c0e736c29d0efe4491.zip |
* java/lang/natClass.cc (method_cache_count): Removed.
(_Jv_FindMethodInCache): Don't loop looking for the hash entry.
(_Jv_AddMethodToCache): Don't loop.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30397 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java')
-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 f7c598dac5e..2d4c956668c 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); } |