Mercurial > hg > truffle
comparison src/share/vm/ci/ciObject.cpp @ 4137:04b9a2566eec
Merge with hsx23/hotspot.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sat, 17 Dec 2011 21:40:27 +0100 |
parents | 46f211fe010c c26de9aef2ed |
children | e522a00b91aa |
comparison
equal
deleted
inserted
replaced
3737:9dc19b7d89a3 | 4137:04b9a2566eec |
---|---|
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 // ------------------------------------------------------------------ |