summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2013-02-07 14:10:47 +0100
committerEugene Burmako <xeno.by@gmail.com>2013-02-11 19:18:28 +0100
commit735634f1d634d2d6a2f8ed44f2e6185adc46c695 (patch)
tree20f12021a675434e36a23fd3444de91cd9e6225e
parent5b37cfb19a41fc1b775dbdaf247e765fb6d245e0 (diff)
downloadscala-735634f1d634d2d6a2f8ed44f2e6185adc46c695.tar.gz
scala-735634f1d634d2d6a2f8ed44f2e6185adc46c695.tar.bz2
scala-735634f1d634d2d6a2f8ed44f2e6185adc46c695.zip
initializes lazy vals and inner objects in advance
As discussed at http://groups.google.com/group/scala-internals/browse_thread/thread/97840ba4fd37b52e, `synchronized(this)` employed by lazy val and inner object initialization is an excellent way to deadlock yourself in the foot. Imagine a thread, which grabs a reflection GIL and then calls one of those lazy vals / objects that reflection exposes (e.g. a companion module of an innocently looking SingleType case class). Then imagine another thread, which calls something else in SymbolTable, grabbing symbol table's monitor, and then tries to get a reflection GIL to do something non-trivial. Hello, we've just arrived at a deadlock. Since, as discussed in the aforementioned thread, there's no easy way to change lazy vals / inner objects in reflection to use GIL instead of synchronizing on this, I bit the bullet and manually initialized all things with deferred initialization defined in reflect.runtime.SymbolTable. The list of all things `$lzycompute` has been mined by a simple Python script, then I copy/pasted that list into `JavaUniverse.scala` and went ahead forcing objects and lazy vals mentioned there. Notably, I've been able to force all lazy vals in Definitions.scala. There are some todos left, but I suggest we move forward without securing them, because the 2.10.1-RC1 release date is very close, so we'd better have a 95% solution instead of keeping reflection thread-unsafe. Though here's the list of todo lazy vals for the reference: * BaseTypeSeq.maxDepth * WeakTypeTag.tpe * AnnotationInfo.forcedInfo For each of those lazy vals we need to make sure that their initializers never call back into themselves. Otherwise, there's a danger of a deadlock.
-rw-r--r--src/reflect/scala/reflect/internal/Definitions.scala2
-rw-r--r--src/reflect/scala/reflect/internal/Symbols.scala2
-rw-r--r--src/reflect/scala/reflect/internal/Types.scala4
-rw-r--r--src/reflect/scala/reflect/runtime/JavaMirrors.scala14
-rw-r--r--src/reflect/scala/reflect/runtime/JavaUniverse.scala1024
5 files changed, 1041 insertions, 5 deletions
diff --git a/src/reflect/scala/reflect/internal/Definitions.scala b/src/reflect/scala/reflect/internal/Definitions.scala
index 52873dea12..7a3bdff1f8 100644
--- a/src/reflect/scala/reflect/internal/Definitions.scala
+++ b/src/reflect/scala/reflect/internal/Definitions.scala
@@ -1189,7 +1189,7 @@ trait Definitions extends api.StandardDefinitions {
/** Is the symbol that of a parent which is added during parsing? */
lazy val isPossibleSyntheticParent = ProductClass.toSet[Symbol] + ProductRootClass + SerializableClass
- private lazy val boxedValueClassesSet = boxedClass.values.toSet[Symbol] + BoxedUnitClass
+ lazy val boxedValueClassesSet = boxedClass.values.toSet[Symbol] + BoxedUnitClass
/** Is symbol a value class? */
def isPrimitiveValueClass(sym: Symbol) = ScalaValueClasses contains sym
diff --git a/src/reflect/scala/reflect/internal/Symbols.scala b/src/reflect/scala/reflect/internal/Symbols.scala
index 43832eba7f..0a600432fd 100644
--- a/src/reflect/scala/reflect/internal/Symbols.scala
+++ b/src/reflect/scala/reflect/internal/Symbols.scala
@@ -108,7 +108,7 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
def setter: Symbol = setter(owner)
}
- private[Symbols] case class SymbolKind(accurate: String, sanitized: String, abbreviation: String)
+ case class SymbolKind(accurate: String, sanitized: String, abbreviation: String)
/** The class for all symbols */
abstract class Symbol protected[Symbols] (initOwner: Symbol, initPos: Position, initName: Name)
diff --git a/src/reflect/scala/reflect/internal/Types.scala b/src/reflect/scala/reflect/internal/Types.scala
index fb493fabd8..0afbdc56c8 100644
--- a/src/reflect/scala/reflect/internal/Types.scala
+++ b/src/reflect/scala/reflect/internal/Types.scala
@@ -3930,8 +3930,8 @@ trait Types extends api.Types { self: SymbolTable =>
/** @PP: Unable to see why these apparently constant types should need vals
* in every TypeConstraint, I lifted them out.
*/
- private lazy val numericLoBound = IntClass.tpe
- private lazy val numericHiBound = intersectionType(List(ByteClass.tpe, CharClass.tpe), ScalaPackageClass)
+ lazy val numericLoBound = IntClass.tpe
+ lazy val numericHiBound = intersectionType(List(ByteClass.tpe, CharClass.tpe), ScalaPackageClass)
/** A class expressing upper and lower bounds constraints of type variables,
* as well as their instantiations.
diff --git a/src/reflect/scala/reflect/runtime/JavaMirrors.scala b/src/reflect/scala/reflect/runtime/JavaMirrors.scala
index 48d887b5c6..ac968b8e3f 100644
--- a/src/reflect/scala/reflect/runtime/JavaMirrors.scala
+++ b/src/reflect/scala/reflect/runtime/JavaMirrors.scala
@@ -26,7 +26,7 @@ import scala.reflect.internal.util.Collections._
private[reflect] trait JavaMirrors extends internal.SymbolTable with api.JavaUniverse with TwoWayCaches { thisUniverse: SymbolTable =>
- private lazy val mirrors = new WeakHashMap[ClassLoader, WeakReference[JavaMirror]]()
+ lazy val mirrors = new WeakHashMap[ClassLoader, WeakReference[JavaMirror]]()
private def createMirror(owner: Symbol, cl: ClassLoader): Mirror = {
val jm = new JavaMirror(owner, cl)
@@ -68,6 +68,18 @@ private[reflect] trait JavaMirrors extends internal.SymbolTable with api.JavaUni
override lazy val EmptyPackage = new EmptyPackage with SynchronizedTermSymbol
override lazy val EmptyPackageClass = new EmptyPackageClass with SynchronizedModuleClassSymbol
+ override def init() = {
+ super.init()
+
+ // see an explanation of this in JavaUniverse.init()
+ RootPackage
+ RootClass
+ EmptyPackage
+ EmptyPackageClass
+ unpickler
+ rootLoader
+ }
+
/** The lazy type for root.
*/
override lazy val rootLoader = new LazyType with FlagAgnosticCompleter {
diff --git a/src/reflect/scala/reflect/runtime/JavaUniverse.scala b/src/reflect/scala/reflect/runtime/JavaUniverse.scala
index 7321214a65..cee243fb29 100644
--- a/src/reflect/scala/reflect/runtime/JavaUniverse.scala
+++ b/src/reflect/scala/reflect/runtime/JavaUniverse.scala
@@ -27,6 +27,1030 @@ class JavaUniverse extends internal.SymbolTable with ReflectSetup with runtime.S
def init() {
definitions.init()
+
+ // workaround for http://groups.google.com/group/scala-internals/browse_thread/thread/97840ba4fd37b52e
+ // constructors are by definition single-threaded, so we initialize all lazy vals (and local object) in advance
+ // in order to avoid deadlocks later (e.g. one thread holds a global reflection lock and waits for definitions.Something to initialize,
+ // whereas another thread holds a definitions.Something initialization lock and needs a global reflection lock to complete the initialization)
+
+ // the list of lzycompute methods is mined by a simple python script
+ // #!/usr/bin/env python
+ // import os, sys, re, glob, fnmatch
+ // from subprocess import check_call, check_output
+ // root = check_output(["git", "rev-parse", "--show-toplevel"]).strip()
+ // root = os.path.join(root, "build/quick/classes/reflect/scala/reflect")
+ // classfiles = []
+ // for container, dirnames, filenames in os.walk(root):
+ // for filename in fnmatch.filter(filenames, '*.class'):
+ // classfiles.append(os.path.join(container, filename))
+ // for classfile in classfiles:
+ // blob = open(classfile).read()
+ // for found in re.findall(r"[\w\$]+\$lzycompute", blob):
+ // print found, "in", classfile[len(root) + 1:]
+
+
+ // ======== Exprs ========
+ // NOFORCE: tree$lzycompute in api/Exprs$ExprImpl.class
+ // NOFORCE: staticType$lzycompute in api/Exprs$ExprImpl.class
+ // NOFORCE: value$lzycompute in api/Exprs$ExprImpl.class
+ // FORCE: Expr$lzycompute in api/Universe.class
+ // FORCE: FixedMirrorTreeCreator$lzycompute in internal/SymbolTable.class
+ // probably not used by runtime reflection, but better be safe than sorry
+ Expr
+ FixedMirrorTreeCreator
+
+ // ======== Type tags ========
+ // FORCE: WeakTypeTag$lzycompute in api/Universe.class
+ // FORCE: TypeTag$lzycompute in api/Universe.class
+ // NOFORCE: tpe$lzycompute in api/TypeTags$WeakTypeTagImpl.class
+ // TODO: validate that scala-reflect never uses TypeTags itself (we have StdTags, but they are in compiler, so it should be okay)
+ // FORCE: tpe$lzycompute in api/TypeTags$PredefTypeTag.class
+ // FORCE: FixedMirrorTypeCreator$lzycompute in internal/SymbolTable.class
+ // probably not used by runtime reflection, but better be safe than sorry
+ WeakTypeTag
+ TypeTag
+ TypeTag.Byte.tpe
+ TypeTag.Short.tpe
+ TypeTag.Char.tpe
+ TypeTag.Int.tpe
+ TypeTag.Long.tpe
+ TypeTag.Float.tpe
+ TypeTag.Double.tpe
+ TypeTag.Boolean.tpe
+ TypeTag.Unit.tpe
+ TypeTag.Any.tpe
+ TypeTag.AnyVal.tpe
+ TypeTag.AnyRef.tpe
+ TypeTag.Object.tpe
+ TypeTag.Nothing.tpe
+ TypeTag.Null.tpe
+ FixedMirrorTypeCreator
+
+ // ======== Annotations ========
+ // NOFORCE: isTrivial$lzycompute in internal/AnnotationInfos$AnnotationInfo.class
+ // looks like isTrivial just calls into Type.isTrivial, which cannot go back to the calling annotationinfo, so we're safe from deadlocks
+ // NOFORCE: forcedInfo$lzycompute in internal/AnnotationInfos$LazyAnnotationInfo.class
+ // I can't immediately see that the completer cannot call into one of the methods of the calling AnnotationInfo
+ // TODO: leaving this as a todo and for now we're at a mercy of chance
+ // NOFORCE: encodedBytes$lzycompute in internal/AnnotationInfos$ScalaSigBytes.class
+ // NOFORCE: sevenBitsMayBeZero$lzycompute in internal/AnnotationInfos$ScalaSigBytes.class
+ // these are just bit/byte twiddling, they don't call into reflection at all
+ // FORCE: UnmappableAnnotArg$lzycompute in internal/SymbolTable.class
+ // FORCE: LiteralAnnotArg$lzycompute in internal/SymbolTable.class
+ // FORCE: ArrayAnnotArg$lzycompute in internal/SymbolTable.class
+ // FORCE: NestedAnnotArg$lzycompute in internal/SymbolTable.class
+ // FORCE: ScalaSigBytes$lzycompute in internal/SymbolTable.class
+ // FORCE: AnnotationInfo$lzycompute in internal/SymbolTable.class
+ // FORCE: Annotation$lzycompute in internal/SymbolTable.class
+ // FORCE: UnmappableAnnotation$lzycompute in internal/SymbolTable.class
+ // FORCE: ThrownException$lzycompute in internal/SymbolTable.class
+ UnmappableAnnotArg
+ LiteralAnnotArg
+ ArrayAnnotArg
+ NestedAnnotArg
+ ScalaSigBytes
+ AnnotationInfo
+ Annotation
+ UnmappableAnnotation
+ ThrownException
+
+ // ======== Importers ========
+ // NOFORCE: symMap$lzycompute in internal/Importers$StandardImporter.class
+ // NOFORCE: tpeMap$lzycompute in internal/Importers$StandardImporter.class
+ // NOFORCE: fixups$lzycompute in internal/Importers$StandardImporter.class
+ // NOFORCE: reverse$lzycompute in internal/Importers$StandardImporter.class
+ // these are simple constructors, which don't call into reflection
+ // actually the first three of those could be non-lazy
+
+ // ======== Mirrors ========
+ // NOFORCE: RootPackage$lzycompute in runtime/JavaMirrors$JavaMirror.class
+ // NOFORCE: RootClass$lzycompute in runtime/JavaMirrors$JavaMirror.class
+ // NOFORCE: EmptyPackage$lzycompute in runtime/JavaMirrors$JavaMirror.class
+ // NOFORCE: EmptyPackageClass$lzycompute in runtime/JavaMirrors$JavaMirror.class
+ // NOFORCE: RootPackage$lzycompute in internal/Mirrors$Roots.class
+ // NOFORCE: RootClass$lzycompute in internal/Mirrors$Roots.class
+ // NOFORCE: EmptyPackage$lzycompute in internal/Mirrors$Roots.class
+ // NOFORCE: EmptyPackageClass$lzycompute in internal/Mirrors$Roots.class
+ // NOFORCE: unpickler$lzycompute in runtime/JavaMirrors$JavaMirror.class
+ // NOFORCE: rootLoader$lzycompute in runtime/JavaMirrors$JavaMirror.class
+ // these are already forced in JavaMirror.init()
+ // NOFORCE: universe$lzycompute in runtime/package$.class
+ // that's the scala.reflect.runtime.universe
+ // FORCE: 5scala$reflect$runtime$JavaMirrors$$mirrors$lzycompute in runtime/JavaUniverse.class
+ rootMirror
+ mirrors
+
+ // ======== Names ========
+ // FORCE: tpnme$lzycompute in internal/SymbolTable.class
+ // FORCE: fulltpnme$lzycompute in internal/SymbolTable.class
+ // FORCE: binarynme$lzycompute in internal/SymbolTable.class
+ // FORCE: nme$lzycompute in internal/SymbolTable.class
+ // FORCE: sn$lzycompute in internal/SymbolTable.class
+ // FORCE: raw$lzycompute in internal/StdNames$TermNames.class
+ // FORCE: Ascala$reflect$internal$SymbolTable$$SimpleNameOrdering$lzycompute in internal/SymbolTable.class
+ // FORCE: 6scala$reflect$internal$StdNames$$compactify$lzycompute in internal/SymbolTable.class
+ // probably most of these are already initialized by definitions.init()
+ // but better be safe than sorry
+ // NOFORCE: GetClassLoader$lzycompute in internal/StdNames$MSILNames.class
+ // MSIL has been eol'd. probably we shouldn't care anymore
+ // runtime reflection doesn't support MSIL anyways
+ tpnme
+ fulltpnme
+ binarynme
+ nme
+ sn
+ nme.raw
+ lowPriorityNameOrdering
+ nme.flattenedName()
+
+ // ======== Attachments ========
+ // FORCE: BackquotedIdentifierAttachment$lzycompute in internal/SymbolTable.class
+ // FORCE: CompoundTypeTreeOriginalAttachment$lzycompute in internal/SymbolTable.class
+ // FORCE: MacroExpansionAttachment$lzycompute in internal/SymbolTable.class
+ // FORCE: SuppressMacroExpansionAttachment$lzycompute in internal/SymbolTable.class
+ // probably not used by runtime reflection
+ // but better be safe than sorry
+ BackquotedIdentifierAttachment
+ CompoundTypeTreeOriginalAttachment
+ MacroExpansionAttachment
+ SuppressMacroExpansionAttachment
+
+ // ======== TreeInfo ========
+ // NOFORCE: DynamicUpdate$lzycompute in internal/TreeInfo.class
+ // NOFORCE: DynamicApplication$lzycompute in internal/TreeInfo.class
+ // NOFORCE: DynamicApplicationNamed$lzycompute in internal/TreeInfo.class
+ // NOFORCE: MacroImplReference$lzycompute in internal/TreeInfo.class
+ // NOFORCE: StripCast$lzycompute in internal/TreeInfo.class
+ // NOFORCE: Applied$lzycompute in internal/TreeInfo.class
+ // NOFORCE: IsTrue$lzycompute in internal/TreeInfo.class
+ // NOFORCE: IsFalse$lzycompute in internal/TreeInfo.class
+ // NOFORCE: IsIf$lzycompute in internal/TreeInfo.class
+ // TreeInfo is never instantiated by runtime reflection
+
+ // ======== Miscellaneous ========
+ // FORCE: BooleanFlag$lzycompute in api/Universe.class
+ // FORCE: traceSymbols$lzycompute in internal/SymbolTable.class
+ // FORCE: perRunCaches$lzycompute in internal/SymbolTable.class
+ // FORCE: typeDebug$lzycompute in internal/SymbolTable.class
+ // FORCE: str$lzycompute in internal/TypeDebugging$typeDebug$.class
+ // FORCE: ConsoleWriter$lzycompute in internal/SymbolTable.class
+ // FORCE: settings$lzycompute in runtime/JavaUniverse.class
+ // NOFORCE: Lscala$reflect$internal$util$TraceSymbolActivity$$findErasurePhase$lzycompute in internal/SymbolTable$traceSymbols$.class
+ // NOFORCE: lineIndices$lzycompute in internal/util/BatchSourceFile.class
+ // NOFORCE: extension$lzycompute in io/AbstractFile.class
+ // NOFORCE: in_s$lzycompute in io/File.class
+ // NOFORCE: out_s$lzycompute in io/File.class
+ // NOFORCE: in$lzycompute in io/File.class
+ // NOFORCE: out$lzycompute in io/File.class
+ // NOFORCE: in$lzycompute in io/Streamable$Bytes$class.class
+ // noforced guys don't call into reflection, so even when not initialized they don't pose a deadlock threat
+ // FORCE: Scope$lzycompute in internal/SymbolTable.class
+ // FORCE: EmptyScope$lzycompute in internal/SymbolTable.class
+ // FORCE: Flag$lzycompute in internal/SymbolTable.class
+ // FORCE: KindErrors$lzycompute in internal/SymbolTable.class
+ BooleanFlag
+ traceSymbols
+ perRunCaches
+ typeDebug
+ typeDebug.str
+ ConsoleWriter
+ settings
+ Scope
+ EmptyScope
+ Flag
+ KindErrors
+
+ // ======== Transforms ========
+ // NOFORCE: ObjectArray$lzycompute in internal/transform/Erasure$ErasureMap.class
+ // NOFORCE: ErasedObject$lzycompute in internal/transform/Erasure$ErasureMap.class
+ // too much hassle to force those, and they cannot be called back from reflection => safe from deadlocks
+ // FORCE: GenericArray$lzycompute in internal/transform/Transforms$$anonfun$3$$anon$1.class
+ // FORCE: scalaErasure$lzycompute in internal/transform/Transforms$$anonfun$3$$anon$1.class
+ // FORCE: specialScalaErasure$lzycompute in internal/transform/Transforms$$anonfun$3$$anon$1.class
+ // FORCE: javaErasure$lzycompute in internal/transform/Transforms$$anonfun$3$$anon$1.class
+ // FORCE: verifiedJavaErasure$lzycompute in internal/transform/Transforms$$anonfun$3$$anon$1.class
+ // FORCE: boxingErasure$lzycompute in internal/transform/Transforms$$anonfun$3$$anon$1.class
+ refChecks
+ uncurry
+ erasure
+ erasure.GenericArray
+ erasure.scalaErasure
+ erasure.specialScalaErasure
+ erasure.javaErasure
+ erasure.verifiedJavaErasure
+ erasure.boxingErasure
+
+ // ======== Symbols ========
+ // FORCE: NoSymbol$lzycompute in internal/SymbolTable.class
+ // FORCE: 6scala$reflect$internal$Symbols$$TypeHistory$lzycompute in internal/SymbolTable.class
+ // FORCE: SymbolKind$lzycompute in internal/Symbols$Symbol.class
+ NoSymbol
+ definitions.AnyRefClass.info
+ SymbolKind
+
+ // ======== Trees ========
+ // FORCE: PackageDef$lzycompute in internal/SymbolTable.class
+ // FORCE: ClassDef$lzycompute in internal/SymbolTable.class
+ // FORCE: ModuleDef$lzycompute in internal/SymbolTable.class
+ // FORCE: ValDef$lzycompute in internal/SymbolTable.class
+ // FORCE: DefDef$lzycompute in internal/SymbolTable.class
+ // FORCE: TypeDef$lzycompute in internal/SymbolTable.class
+ // FORCE: LabelDef$lzycompute in internal/SymbolTable.class
+ // FORCE: ImportSelector$lzycompute in internal/SymbolTable.class
+ // FORCE: Import$lzycompute in internal/SymbolTable.class
+ // FORCE: Template$lzycompute in internal/SymbolTable.class
+ // FORCE: Block$lzycompute in internal/SymbolTable.class
+ // FORCE: CaseDef$lzycompute in internal/SymbolTable.class
+ // FORCE: Alternative$lzycompute in internal/SymbolTable.class
+ // FORCE: Star$lzycompute in internal/SymbolTable.class
+ // FORCE: Bind$lzycompute in internal/SymbolTable.class
+ // FORCE: UnApply$lzycompute in internal/SymbolTable.class
+ // FORCE: ArrayValue$lzycompute in internal/SymbolTable.class
+ // FORCE: Function$lzycompute in internal/SymbolTable.class
+ // FORCE: Assign$lzycompute in internal/SymbolTable.class
+ // FORCE: AssignOrNamedArg$lzycompute in internal/SymbolTable.class
+ // FORCE: If$lzycompute in internal/SymbolTable.class
+ // FORCE: Match$lzycompute in internal/SymbolTable.class
+ // FORCE: Return$lzycompute in internal/SymbolTable.class
+ // FORCE: Try$lzycompute in internal/SymbolTable.class
+ // FORCE: Throw$lzycompute in internal/SymbolTable.class
+ // FORCE: New$lzycompute in internal/SymbolTable.class
+ // FORCE: Typed$lzycompute in internal/SymbolTable.class
+ // FORCE: TypeApply$lzycompute in internal/SymbolTable.class
+ // FORCE: Apply$lzycompute in internal/SymbolTable.class
+ // FORCE: ApplyDynamic$lzycompute in internal/SymbolTable.class
+ // FORCE: Super$lzycompute in internal/SymbolTable.class
+ // FORCE: This$lzycompute in internal/SymbolTable.class
+ // FORCE: Select$lzycompute in internal/SymbolTable.class
+ // FORCE: Ident$lzycompute in internal/SymbolTable.class
+ // FORCE: ReferenceToBoxed$lzycompute in internal/SymbolTable.class
+ // FORCE: Literal$lzycompute in internal/SymbolTable.class
+ // FORCE: Annotated$lzycompute in internal/SymbolTable.class
+ // FORCE: SingletonTypeTree$lzycompute in internal/SymbolTable.class
+ // FORCE: SelectFromTypeTree$lzycompute in internal/SymbolTable.class
+ // FORCE: CompoundTypeTree$lzycompute in internal/SymbolTable.class
+ // FORCE: AppliedTypeTree$lzycompute in internal/SymbolTable.class
+ // FORCE: TypeBoundsTree$lzycompute in internal/SymbolTable.class
+ // FORCE: ExistentialTypeTree$lzycompute in internal/SymbolTable.class
+ // FORCE: TypeTree$lzycompute in internal/SymbolTable.class
+ // FORCE: Modifiers$lzycompute in internal/SymbolTable.class
+ // FORCE: Constant$lzycompute in internal/SymbolTable.class
+ // FORCE: treeBuild$lzycompute in internal/SymbolTable.class
+ // FORCE: posAssigner$lzycompute in internal/SymbolTable.class
+ // FORCE: NoMods$lzycompute in api/Universe.class
+ // FORCE: EmptyTree$lzycompute in internal/SymbolTable.class
+ // FORCE: emptyValDef$lzycompute in internal/SymbolTable.class
+ // FORCE: EmptyTreeTypeSubstituter$lzycompute in internal/SymbolTable.class
+ // FORCE: 3scala$reflect$internal$Trees$$duplicator$lzycompute in internal/SymbolTable.class
+ PackageDef
+ ClassDef
+ ModuleDef
+ ValDef
+ DefDef
+ TypeDef
+ LabelDef
+ ImportSelector
+ Import
+ Template
+ Block
+ CaseDef
+ Alternative
+ Star
+ Bind
+ UnApply
+ ArrayValue
+ Function
+ Assign
+ AssignOrNamedArg
+ If
+ Match
+ Return
+ Try
+ Throw
+ New
+ Typed
+ TypeApply
+ Apply
+ ApplyDynamic
+ Super
+ This
+ Select
+ Ident
+ ReferenceToBoxed
+ Literal
+ Annotated
+ SingletonTypeTree
+ SelectFromTypeTree
+ CompoundTypeTree
+ AppliedTypeTree
+ TypeBoundsTree
+ ExistentialTypeTree
+ TypeTree
+ Modifiers
+ Constant
+ treeBuild
+ posAssigner
+ NoMods
+ EmptyTree
+ emptyValDef
+ EmptyTreeTypeSubstituter
+ Literal(Constant(42)).duplicate
+
+ // ======== Types ========
+ // FORCE: undoLog$lzycompute in internal/SymbolTable.class
+ // FORCE: UnmappableTree$lzycompute in internal/SymbolTable.class
+ // FORCE: NotNullType$lzycompute in internal/SymbolTable.class
+ // FORCE: ErrorType$lzycompute in internal/SymbolTable.class
+ // FORCE: WildcardType$lzycompute in internal/SymbolTable.class
+ // FORCE: BoundedWildcardType$lzycompute in internal/SymbolTable.class
+ // FORCE: NoType$lzycompute in internal/SymbolTable.class
+ // FORCE: NoPrefix$lzycompute in internal/SymbolTable.class
+ // FORCE: ThisType$lzycompute in internal/SymbolTable.class
+ // FORCE: SingleType$lzycompute in internal/SymbolTable.class
+ // FORCE: SuperType$lzycompute in internal/SymbolTable.class
+ // FORCE: TypeBounds$lzycompute in internal/SymbolTable.class
+ // NOFORCE: annotationArgRewriter$1$lzycompute in internal/Types$AsSeenFromMap.class
+ // local object => not a problem
+ // FORCE: RefinedType$lzycompute in internal/SymbolTable.class
+ // FORCE: ClassInfoType$lzycompute in internal/SymbolTable.class
+ // FORCE: ConstantType$lzycompute in internal/SymbolTable.class
+ // FORCE: TypeRef$lzycompute in internal/SymbolTable.class
+ // FORCE: MethodType$lzycompute in internal/SymbolTable.class
+ // FORCE: NullaryMethodType$lzycompute in internal/SymbolTable.class
+ // FORCE: PolyType$lzycompute in internal/SymbolTable.class
+ // FORCE: ExistentialType$lzycompute in internal/SymbolTable.class
+ // FORCE: OverloadedType$lzycompute in internal/SymbolTable.class
+ // FORCE: AntiPolyType$lzycompute in internal/SymbolTable.class
+ // FORCE: HasTypeMember$lzycompute in internal/SymbolTable.class
+ // FORCE: HasTypeParams$lzycompute in internal/SymbolTable.class
+ // FORCE: TypeVar$lzycompute in internal/SymbolTable.class
+ // FORCE: AnnotatedType$lzycompute in internal/SymbolTable.class
+ // FORCE: NamedType$lzycompute in internal/SymbolTable.class
+ // FORCE: DeBruijnIndex$lzycompute in internal/SymbolTable.class
+ // FORCE: DeBruijnBinder$lzycompute in internal/SymbolTable.class
+ // FORCE: ErasedValueType$lzycompute in internal/SymbolTable.class
+ // FORCE: GenPolyType$lzycompute in internal/SymbolTable.class
+ // FORCE: normalizeAliases$lzycompute in internal/SymbolTable.class
+ // FORCE: dropSingletonType$lzycompute in internal/SymbolTable.class
+ // FORCE: dropAllRefinements$lzycompute in internal/SymbolTable.class
+ // FORCE: dropRepeatedParamType$lzycompute in internal/SymbolTable.class
+ // FORCE: toDeBruijn$lzycompute in internal/SymbolTable.class
+ // FORCE: numericLoBound$lzycompute in internal/SymbolTable.class
+ // FORCE: numericHiBound$lzycompute in internal/SymbolTable.class
+ // FORCE: TypeConstraint$lzycompute in internal/SymbolTable.class
+ // FORCE: unwrapToClass$lzycompute in internal/SymbolTable.class
+ // FORCE: unwrapToStableClass$lzycompute in internal/SymbolTable.class
+ // FORCE: unwrapWrapperTypes$lzycompute in internal/SymbolTable.class
+ // FORCE: IsDependentCollector$lzycompute in internal/SymbolTable.class
+ // FORCE: ApproximateDependentMap$lzycompute in internal/SymbolTable.class
+ // FORCE: StripAnnotationsMap$lzycompute in internal/SymbolTable.class
+ // FORCE: wildcardToTypeVarMap$lzycompute in internal/SymbolTable.class
+ // FORCE: typeVarToOriginMap$lzycompute in internal/SymbolTable.class
+ // FORCE: ErroneousCollector$lzycompute in internal/SymbolTable.class
+ // NOFORCE: scala$reflect$internal$Types$$commonOwnerMapObj$lzycompute in internal/SymbolTable.class
+ // not used in runtime reflection, overridden to provide thread-safety
+ // FORCE: RecoverableCyclicReference$lzycompute in internal/SymbolTable.class
+ // FORCE: CyclicReference$lzycompute in internal/SymbolTable.class
+ // NOFORCE: scala$reflect$internal$Types$ClassInfoType$$enterRefs$lzycompute in internal/Types$ClassInfoType.class
+ // not used in runtime reflection, only called by typer
+ // NOFORCE: Jscala$reflect$internal$Types$InstantiateDependentMap$$StableArg$lzycompute in internal/Types$InstantiateDependentMap.class
+ // NOFORCE: Dscala$reflect$internal$Types$InstantiateDependentMap$$Arg$lzycompute in internal/Types$InstantiateDependentMap.class
+ // don't call into reflection
+ // NOFORCE: trans$1$lzycompute in internal/Types$SubstSymMap.class
+ // NOFORCE: trans$2$lzycompute in internal/Types$SubstTypeMap.class
+ // NOFORCE: treeTrans$1$lzycompute in internal/Types$InstantiateDependentMap.class
+ // local objects => we're fine
+ // FORCE: adaptToNewRunMap$lzycompute in internal/SymbolTable.class
+ // NOFORCE?! maxDepth$lzycompute in internal/BaseTypeSeqs$BaseTypeSeq.class
+ // NOFORCE?! maxDepth$lzycompute in runtime/SynchronizedOps$$anon$4.class
+ // NOFORCE?! maxDepth$lzycompute in runtime/SynchronizedOps$SynchronizedBaseTypeSeq$$anon$3.class
+ // it's totally not obvious whether typeDepth, which is called by maxDepth,
+ // can or cannot indirectly call into one of the methods of the calling BaseTypeSeq
+ // TODO: leaving this for further investigation risking to get a deadlock for now
+ undoLog
+ UnmappableTree
+ NotNullType
+ ErrorType
+ WildcardType
+ BoundedWildcardType
+ NoType
+ NoPrefix
+ ThisType
+ SingleType
+ SuperType
+ TypeBounds
+ RefinedType
+ ClassInfoType
+ ConstantType
+ TypeRef
+ MethodType
+ NullaryMethodType
+ PolyType
+ ExistentialType
+ OverloadedType
+ AntiPolyType
+ HasTypeMember
+ HasTypeParams
+ TypeVar
+ AnnotatedType
+ NamedType
+ DeBruijnIndex
+ DeBruijnBinder
+ ErasedValueType
+ GenPolyType
+ normalizeAliases
+ dropSingletonType
+ dropAllRefinements
+ dropRepeatedParamType
+ toDeBruijn
+ numericLoBound
+ numericHiBound
+ TypeConstraint
+ unwrapToClass
+ unwrapToStableClass
+ unwrapWrapperTypes
+ IsDependentCollector
+ ApproximateDependentMap
+ StripAnnotationsMap
+ wildcardToTypeVarMap
+ typeVarToOriginMap
+ ErroneousCollector
+ RecoverableCyclicReference
+ CyclicReference
+ adaptToNewRunMap
+
+ // ======== JavaMirrors ========
+ // NOFORCE: assocs$lzycompute in runtime/JavaMirrors$JavaMirror$JavaAnnotationProxy.class
+ // NOFORCE: jconstr$lzycompute in runtime/JavaMirrors$JavaMirror$JavaConstructorMirror.class
+ // NOFORCE: jfield$lzycompute in runtime/JavaMirrors$JavaMirror$JavaFieldMirror.class
+ // NOFORCE: jmeth$lzycompute in runtime/JavaMirrors$JavaMirror$JavaMethodMirror.class
+ // NOFORCE: signature$lzycompute in runtime/JavaMirrors$JavaMirror$JavaTemplateMirror.class
+ // NOFORCE: PrimitiveClass$lzycompute in runtime/JavaMirrors$JavaMirror$toAnnotArg$.class
+ // NOFORCE: EnumClass$lzycompute in runtime/JavaMirrors$JavaMirror$toAnnotArg$.class
+ // NOFORCE: ArrayClass$lzycompute in runtime/JavaMirrors$JavaMirror$toAnnotArg$.class
+ // NOFORCE: AnnotationClass$lzycompute in runtime/JavaMirrors$JavaMirror$toAnnotArg$.class
+ // NOFORCE: ConstantArg$lzycompute in runtime/JavaMirrors$JavaMirror$toAnnotArg$.class
+ // NOFORCE: Cscala$reflect$runtime$JavaMirrors$JavaMirror$$toAnnotArg$lzycompute in runtime/JavaMirrors$JavaMirror.class
+ // NOFORCE: Lscala$reflect$runtime$JavaMirrors$JavaMirror$$JavaAnnotationProxy$lzycompute in runtime/JavaMirrors$JavaMirror.class
+ // NOFORCE: Bscala$reflect$runtime$TwoWayCaches$TwoWayCache$$SomeRef$lzycompute in runtime/TwoWayCaches$TwoWayCache.class
+ // NOFORCE: bytecodelessMethodOwners$lzycompute in runtime/JavaMirrors$JavaMirror.class
+ // NOFORCE: bytecodefulObjectMethods$lzycompute in runtime/JavaMirrors$JavaMirror.class
+ // functionality from JavaMirrors cannot be called from reflect.internal, so there's no danger of deadlock
+
+ // ======== Locks ========
+ // locks in runtime reflection look like `lazy val XXXlock = new Object`
+ // since initializers don't call into reflection, there's no problem in not forcing those lazy vals here
+
+ // ======== Definitions ========
+ // FORCE: definitions$lzycompute in internal/SymbolTable.class
+ // FORCE: JavaLangPackage$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: JavaLangPackageClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ScalaPackage$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ScalaPackageClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: RuntimePackage$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: RuntimePackageClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: JavaLangEnumClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: anyparam$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: anyvalparam$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: anyrefparam$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: AnyClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: AnyRefClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ObjectClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: AnyTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: AnyRefTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ObjectTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: AnyRefModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: AnyValClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: AnyValTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: RuntimeNothingClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: RuntimeNullClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: NothingClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: NullClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: NothingTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: NullTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ClassCastExceptionClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: IndexOutOfBoundsExceptionClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: InvocationTargetExceptionClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: MatchErrorClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: NonLocalReturnControlClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: $NullPointerExceptionClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ThrowableClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: UninitializedErrorClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: PartialFunctionClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: AbstractPartialFunctionClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SymbolClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: StringClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: StringModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ClassClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: DynamicClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SysPackage$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: UnqualifiedModules$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: UnqualifiedOwners$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: PredefModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: PredefModuleClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SpecializableModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: GroupOfSpecializable$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ConsoleModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ScalaRunTimeModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SymbolModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Symbol_apply$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: StringAddClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ArrowAssocClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: StringAdd_$plus$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: NotNullClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ScalaNumberClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: TraitSetterAnnotationClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: DelayedInitClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: TypeConstraintClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SingletonClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SerializableClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: JavaSerializableClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ComparableClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: CloneableClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: JavaCloneableClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: JavaNumberClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: RemoteInterfaceClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: RemoteExceptionClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ByNameParamClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: EqualsPatternClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: JavaRepeatedParamClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: RepeatedParamClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: MatchingStrategyClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ConsClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: IterableClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: IteratorClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ListClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SeqClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: StringBuilderClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: TraversableClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ListModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: List_apply$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: NilModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SeqModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: IteratorModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Iterator_apply$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ArrayModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ArrayModule_overloadedApply$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ArrayClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Array_apply$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Array_update$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Array_length$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Array_clone$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SoftReferenceClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: WeakReferenceClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: MethodClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: EmptyMethodCacheClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: MethodCacheClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ReflectPackage$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ReflectApiPackage$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ReflectRuntimePackage$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: PartialManifestClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: PartialManifestModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: FullManifestClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: FullManifestModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: OptManifestClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: NoManifest$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ExprsClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ExprClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ExprModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ClassTagModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ClassTagClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: TypeTagsClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: WeakTypeTagClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: WeakTypeTagModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: TypeTagClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: TypeTagModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ApiUniverseClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: JavaUniverseClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: MirrorClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: TypeCreatorClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: TreeCreatorClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: MacroContextClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: MacroImplAnnotation$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: StringContextClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ScalaSignatureAnnotation$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ScalaLongSignatureAnnotation$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: OptionClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: OptionModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Option_apply$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SomeClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: NoneModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SomeModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ProductClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: TupleClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: FunctionClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: AbstractFunctionClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ProductRootClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ObjectArray$lzycompute in internal/Definitions$DefinitionsClass.class
+ // NOFORCE: ComparatorClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // NOFORCE: ValueTypeClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // NOFORCE: DelegateClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // NOFORCE: Delegate_scalaCallerTargets$lzycompute in internal/Definitions$DefinitionsClass.class
+ // MSIL has been eol'd. probably we shouldn't care anymore
+ // runtime reflection doesn't support MSIL anyways
+ // FORCE: Any_$eq$eq$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Any_$bang$eq$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Any_equals$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Any_hashCode$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Any_toString$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Any_$hash$hash$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Any_getClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Any_isInstanceOf$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Any_asInstanceOf$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Object_$hash$hash$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Object_$eq$eq$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Object_$bang$eq$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Object_eq$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Object_ne$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Object_isInstanceOf$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Object_asInstanceOf$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Object_synchronized$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: String_$plus$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ObjectRefClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: VolatileObjectRefClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: RuntimeStaticsModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BoxesRunTimeModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BoxesRunTimeClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BoxedNumberClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BoxedCharacterClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BoxedBooleanClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BoxedByteClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BoxedShortClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BoxedIntClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BoxedLongClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BoxedFloatClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BoxedDoubleClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Boxes_isNumberOrBool$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Boxes_isNumber$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BoxedUnitClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BoxedUnitModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: AnnotationClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ClassfileAnnotationClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: StaticAnnotationClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BridgeClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ElidableMethodClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ImplicitNotFoundClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: MigrationAnnotationClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ScalaStrictFPAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SerializableAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SwitchClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: TailrecClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: VarargsClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: uncheckedStableClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: uncheckedVarianceClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BeanPropertyAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BooleanBeanPropertyAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: CloneableAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: CompileTimeOnlyAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: DeprecatedAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: DeprecatedNameAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: $DeprecatedInheritanceAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: DeprecatedOverridingAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: NativeAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: RemoteAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ScalaInlineClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ScalaNoInlineClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SerialVersionUIDAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SpecializedClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ThrowsClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: TransientAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: UncheckedClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: UnspecializedClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: VolatileAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BeanGetterTargetClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BeanSetterTargetClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: FieldTargetClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: GetterTargetClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ParamTargetClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: SetterTargetClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ClassTargetClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ObjectTargetClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: MethodTargetClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: LanguageFeatureAnnot$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: languageFeatureModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: experimentalModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: MacrosFeature$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: DynamicsFeature$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: PostfixOpsFeature$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ReflectiveCallsFeature$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ImplicitConversionsFeature$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: HigherKindsFeature$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ExistentialsFeature$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: metaAnnotations$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: AnnotationDefaultAttr$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: boxedClassValues$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: isUnbox$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: isBox$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: isPhantomClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: syntheticCoreClasses$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: syntheticCoreMethods$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: hijackedCoreClasses$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: symbolsNotPresentInBytecode$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: $isPossibleSyntheticParent$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: boxedValueClassesSet$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: abbrvTag$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: numericWeight$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: boxedModule$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: boxedClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: refClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: volatileRefClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: boxMethod$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: unboxMethod$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: UnitClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ByteClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ShortClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: CharClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: IntClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: LongClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: FloatClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: DoubleClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BooleanClass$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Boolean_and$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Boolean_or$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: Boolean_not$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: UnitTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ByteTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ShortTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: CharTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: IntTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: LongTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: FloatTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: DoubleTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: BooleanTpe$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ScalaNumericValueClasses$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ScalaValueClassesNoUnit$lzycompute in internal/Definitions$DefinitionsClass.class
+ // FORCE: ScalaValueClasses$lzycompute in internal/Definitions$DefinitionsClass.class
+ definitions.JavaLangPackage
+ definitions.JavaLangPackageClass
+ definitions.ScalaPackage
+ definitions.ScalaPackageClass
+ definitions.RuntimePackage
+ definitions.RuntimePackageClass
+ definitions.JavaLangEnumClass
+ definitions.anyparam
+ definitions.anyvalparam
+ definitions.anyrefparam
+ definitions.AnyClass
+ definitions.AnyRefClass
+ definitions.ObjectClass
+ definitions.AnyTpe
+ definitions.AnyRefTpe
+ definitions.ObjectTpe
+ // FIXME: definitions.AnyRefModule
+ definitions.AnyValClass
+ definitions.AnyValTpe
+ definitions.RuntimeNothingClass
+ definitions.RuntimeNullClass
+ definitions.NothingClass
+ definitions.NullClass
+ definitions.NothingTpe
+ definitions.NullTpe
+ definitions.ClassCastExceptionClass
+ definitions.IndexOutOfBoundsExceptionClass
+ definitions.InvocationTargetExceptionClass
+ definitions.MatchErrorClass
+ definitions.NonLocalReturnControlClass
+ definitions.NullPointerExceptionClass
+ definitions.ThrowableClass
+ definitions.UninitializedErrorClass
+ definitions.PartialFunctionClass
+ definitions.AbstractPartialFunctionClass
+ definitions.SymbolClass
+ definitions.StringClass
+ definitions.StringModule
+ definitions.ClassClass
+ definitions.DynamicClass
+ definitions.SysPackage
+ definitions.UnqualifiedModules
+ definitions.UnqualifiedOwners
+ definitions.PredefModule
+ definitions.PredefModuleClass
+ definitions.SpecializableModule
+ definitions.GroupOfSpecializable
+ definitions.ConsoleModule
+ definitions.ScalaRunTimeModule
+ definitions.SymbolModule
+ definitions.Symbol_apply
+ definitions.StringAddClass
+ definitions.ArrowAssocClass
+ definitions.StringAdd_$plus
+ definitions.NotNullClass
+ definitions.ScalaNumberClass
+ definitions.TraitSetterAnnotationClass
+ definitions.DelayedInitClass
+ definitions.TypeConstraintClass
+ definitions.SingletonClass
+ definitions.SerializableClass
+ definitions.JavaSerializableClass
+ definitions.ComparableClass
+ definitions.CloneableClass
+ definitions.JavaCloneableClass
+ definitions.JavaNumberClass
+ definitions.RemoteInterfaceClass
+ definitions.RemoteExceptionClass
+ definitions.ByNameParamClass
+ definitions.EqualsPatternClass
+ definitions.JavaRepeatedParamClass
+ definitions.RepeatedParamClass
+ // FIXME: definitions.MatchingStrategyClass
+ definitions.ConsClass
+ definitions.IterableClass
+ definitions.IteratorClass
+ definitions.ListClass
+ definitions.SeqClass
+ definitions.StringBuilderClass
+ definitions.TraversableClass
+ definitions.ListModule
+ definitions.List_apply
+ definitions.NilModule
+ definitions.SeqModule
+ definitions.IteratorModule
+ definitions.Iterator_apply
+ definitions.ArrayModule
+ definitions.ArrayModule_overloadedApply
+ definitions.ArrayClass
+ definitions.Array_apply
+ definitions.Array_update
+ definitions.Array_length
+ definitions.Array_clone
+ definitions.SoftReferenceClass
+ definitions.WeakReferenceClass
+ definitions.MethodClass
+ definitions.EmptyMethodCacheClass
+ definitions.MethodCacheClass
+ definitions.ReflectPackage
+ definitions.ReflectApiPackage
+ definitions.ReflectRuntimePackage
+ definitions.PartialManifestClass
+ definitions.PartialManifestModule
+ definitions.FullManifestClass
+ definitions.FullManifestModule
+ definitions.OptManifestClass
+ definitions.NoManifest
+ definitions.ExprsClass
+ definitions.ExprClass
+ definitions.ExprModule
+ definitions.ClassTagModule
+ definitions.ClassTagClass
+ definitions.TypeTagsClass
+ definitions.WeakTypeTagClass
+ definitions.WeakTypeTagModule
+ definitions.TypeTagClass
+ definitions.TypeTagModule
+ definitions.ApiUniverseClass
+ definitions.JavaUniverseClass
+ definitions.MirrorClass
+ definitions.TypeCreatorClass
+ definitions.TreeCreatorClass
+ definitions.MacroContextClass
+ definitions.MacroImplAnnotation
+ definitions.StringContextClass
+ definitions.ScalaSignatureAnnotation
+ definitions.ScalaLongSignatureAnnotation
+ definitions.OptionClass
+ definitions.OptionModule
+ definitions.Option_apply
+ definitions.SomeClass
+ definitions.NoneModule
+ definitions.SomeModule
+ definitions.ProductClass
+ definitions.TupleClass
+ definitions.FunctionClass
+ definitions.AbstractFunctionClass
+ definitions.ProductRootClass
+ definitions.ObjectArray
+ definitions.Any_$eq$eq
+ definitions.Any_$bang$eq
+ definitions.Any_equals
+ definitions.Any_hashCode
+ definitions.Any_toString
+ definitions.Any_$hash$hash
+ definitions.Any_getClass
+ definitions.Any_isInstanceOf
+ definitions.Any_asInstanceOf
+ definitions.Object_$hash$hash
+ definitions.Object_$eq$eq
+ definitions.Object_$bang$eq
+ definitions.Object_eq
+ definitions.Object_ne
+ definitions.Object_isInstanceOf
+ definitions.Object_asInstanceOf
+ definitions.Object_synchronized
+ definitions.String_$plus
+ definitions.ObjectRefClass
+ definitions.VolatileObjectRefClass
+ definitions.RuntimeStaticsModule
+ definitions.BoxesRunTimeModule
+ definitions.BoxesRunTimeClass
+ definitions.BoxedNumberClass
+ definitions.BoxedCharacterClass
+ definitions.BoxedBooleanClass
+ definitions.BoxedByteClass
+ definitions.BoxedShortClass
+ definitions.BoxedIntClass
+ definitions.BoxedLongClass
+ definitions.BoxedFloatClass
+ definitions.BoxedDoubleClass
+ definitions.Boxes_isNumberOrBool
+ definitions.Boxes_isNumber
+ definitions.BoxedUnitClass
+ definitions.BoxedUnitModule
+ definitions.AnnotationClass
+ definitions.ClassfileAnnotationClass
+ definitions.StaticAnnotationClass
+ definitions.BridgeClass
+ definitions.ElidableMethodClass
+ definitions.ImplicitNotFoundClass
+ definitions.MigrationAnnotationClass
+ definitions.ScalaStrictFPAttr
+ definitions.SerializableAttr
+ definitions.SwitchClass
+ definitions.TailrecClass
+ definitions.VarargsClass
+ definitions.uncheckedStableClass
+ definitions.uncheckedVarianceClass
+ definitions.BeanPropertyAttr
+ definitions.BooleanBeanPropertyAttr
+ definitions.CloneableAttr
+ definitions.CompileTimeOnlyAttr
+ definitions.DeprecatedAttr
+ definitions.DeprecatedNameAttr
+ definitions.DeprecatedInheritanceAttr
+ definitions.DeprecatedOverridingAttr
+ definitions.NativeAttr
+ definitions.RemoteAttr
+ definitions.ScalaInlineClass
+ definitions.ScalaNoInlineClass
+ definitions.SerialVersionUIDAttr
+ definitions.SpecializedClass
+ definitions.ThrowsClass
+ definitions.TransientAttr
+ definitions.UncheckedClass
+ definitions.UnspecializedClass
+ definitions.VolatileAttr
+ definitions.BeanGetterTargetClass
+ definitions.BeanSetterTargetClass
+ definitions.FieldTargetClass
+ definitions.GetterTargetClass
+ definitions.ParamTargetClass
+ definitions.SetterTargetClass
+ definitions.ClassTargetClass
+ definitions.ObjectTargetClass
+ definitions.MethodTargetClass
+ definitions.LanguageFeatureAnnot
+ definitions.languageFeatureModule
+ definitions.experimentalModule
+ definitions.MacrosFeature
+ definitions.DynamicsFeature
+ definitions.PostfixOpsFeature
+ definitions.ReflectiveCallsFeature
+ definitions.ImplicitConversionsFeature
+ definitions.HigherKindsFeature
+ definitions.ExistentialsFeature
+ definitions.metaAnnotations
+ definitions.AnnotationDefaultAttr
+ definitions.boxedClassValues
+ definitions.isUnbox
+ definitions.isBox
+ definitions.isPhantomClass
+ definitions.syntheticCoreClasses
+ definitions.syntheticCoreMethods
+ definitions.hijackedCoreClasses
+ definitions.symbolsNotPresentInBytecode
+ definitions.isPossibleSyntheticParent
+ definitions.boxedValueClassesSet
+ definitions.abbrvTag
+ definitions.numericWeight
+ definitions.boxedModule
+ definitions.boxedClass
+ definitions.refClass
+ definitions.volatileRefClass
+ definitions.boxMethod
+ definitions.unboxMethod
+ definitions.UnitClass
+ definitions.ByteClass
+ definitions.ShortClass
+ definitions.CharClass
+ definitions.IntClass
+ definitions.LongClass
+ definitions.FloatClass
+ definitions.DoubleClass
+ definitions.BooleanClass
+ definitions.Boolean_and
+ definitions.Boolean_or
+ definitions.Boolean_not
+ definitions.UnitTpe
+ definitions.ByteTpe
+ definitions.ShortTpe
+ definitions.CharTpe
+ definitions.IntTpe
+ definitions.LongTpe
+ definitions.FloatTpe
+ definitions.DoubleTpe
+ definitions.BooleanTpe
+ definitions.ScalaNumericValueClasses
+ definitions.ScalaValueClassesNoUnit
+ definitions.ScalaValueClasses
}
}