comparison src/share/vm/ci/ciObject.cpp @ 3905:c26de9aef2ed

7071307: MethodHandle bimorphic inlining should consider the frequency Reviewed-by: twisti, roland, kvn, iveresov
author never
date Fri, 02 Sep 2011 20:58:21 -0700
parents 28a9fe9534ea
children 04b9a2566eec da91efe96a93
comparison
equal deleted inserted replaced
3902:11a4af030e4b 3905:c26de9aef2ed
192 192
193 // ------------------------------------------------------------------ 193 // ------------------------------------------------------------------
194 // ciObject::should_be_constant() 194 // ciObject::should_be_constant()
195 bool ciObject::should_be_constant() { 195 bool ciObject::should_be_constant() {
196 if (ScavengeRootsInCode >= 2) return true; // force everybody to be a constant 196 if (ScavengeRootsInCode >= 2) return true; // force everybody to be a constant
197 if (!JavaObjectsInPerm && !is_null_object()) { 197 if (is_null_object()) return true;
198
199 ciEnv* env = CURRENT_ENV;
200 if (!JavaObjectsInPerm) {
198 // We want Strings and Classes to be embeddable by default since 201 // We want Strings and Classes to be embeddable by default since
199 // they used to be in the perm world. Not all Strings used to be 202 // they used to be in the perm world. Not all Strings used to be
200 // embeddable but there's no easy way to distinguish the interned 203 // embeddable but there's no easy way to distinguish the interned
201 // from the regulars ones so just treat them all that way. 204 // from the regulars ones so just treat them all that way.
202 ciEnv* env = CURRENT_ENV;
203 if (klass() == env->String_klass() || klass() == env->Class_klass()) { 205 if (klass() == env->String_klass() || klass() == env->Class_klass()) {
204 return true; 206 return true;
205 } 207 }
206 } 208 }
209 if (EnableInvokeDynamic &&
210 (klass()->is_subclass_of(env->MethodHandle_klass()) ||
211 klass()->is_subclass_of(env->CallSite_klass()))) {
212 assert(ScavengeRootsInCode >= 1, "must be");
213 // We want to treat these aggressively.
214 return true;
215 }
216
207 return handle() == NULL || is_perm(); 217 return handle() == NULL || is_perm();
208 } 218 }
209 219
210 220
211 // ------------------------------------------------------------------ 221 // ------------------------------------------------------------------