Mercurial > hg > graal-jvmci-8
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 // ------------------------------------------------------------------ |