Created
September 21, 2012 10:14
-
-
Save xeno-by/3760764 to your computer and use it in GitHub Desktop.
Static state declared in reflective universes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
myke run C:\Projects\Kepler\sandbox\Test.scala | |
git: branch = ticket/6412, commit = c065bde5f5 Merge remote-tracking branch 'paulp/treecheckers' into 2.10.x (Paul Phillips, 20.09.2012 14:08:03 -07:00) | |
psi: filename = cmd.exe, arguments = /C c:\PROGRA~1\Java\JDK\bin\java.exe -cp "C:\Projects\Kepler\test\files\codelib\code.jar;C:\Projects\Kepler\lib\jline.jar;C:\Projects\Kepler\build\locker\lib\scala-partest.jar;C:\Projects\Kepler\lib\fjbg.jar;C:\Projects\Kepler\build\locker\classes\compiler;C:\Projects\Kepler\build\asm\classes;C:\Projects\Kepler\build\libs\forkjoin.jar;C:\Projects\Kepler\build\locker\classes\reflect;C:\Projects\Kepler\build\locker\classes\library" -Dscala.usejavacp=true -Dscala.repl.vids=1 -Dscala.repl.autoruncode=C:\Users\xeno.by/.scala_autorun -Dscala.repl.maxprintstring=0 scala.tools.nsc.Main -language:experimental.macros Test.scala, home = C:\Projects\Kepler\sandbox | |
psi: filename = cmd.exe, arguments = /C c:\PROGRA~1\Java\JDK\bin\java.exe -cp "C:\Projects\Kepler\test\files\codelib\code.jar;C:\Projects\Kepler\lib\jline.jar;C:\Projects\Kepler\build\locker\lib\scala-partest.jar;C:\Projects\Kepler\lib\fjbg.jar;C:\Projects\Kepler\build\locker\classes\compiler;C:\Projects\Kepler\build\asm\classes;C:\Projects\Kepler\build\libs\forkjoin.jar;C:\Projects\Kepler\build\locker\classes\reflect;C:\Projects\Kepler\build\locker\classes\library" -Dscala.usejavacp=true -Dscala.repl.vids=1 -Dscala.repl.autoruncode=C:\Users\xeno.by/.scala_autorun -Dscala.repl.maxprintstring=0 scala.tools.nsc.MainGenericRunner -language:experimental.macros Test , home = C:\Projects\Kepler\sandbox | |
############################################ | |
generated by https://gist.github.com/3760748 | |
############################################ | |
scala.reflect.internal.AnnotationCheckers | |
============== | |
variable annotationCheckers # managed by plugins, so it's not our responsibility | |
scala.reflect.internal.AnnotationInfos | |
============== | |
object Annotation | |
object AnnotationInfo | |
object ArrayAnnotArg | |
value ArrayArgument | |
object LiteralAnnotArg | |
value LiteralArgument | |
object NestedAnnotArg | |
value NestedArgument | |
object ScalaSigBytes | |
object UnmappableAnnotArg | |
object UnmappableAnnotation | |
scala.reflect.internal.BaseTypeSeqs | |
============== | |
value CyclicInheritance | |
value undetBaseTypeSeq # a small null object | |
scala.reflect.internal.BuildUtils | |
============== | |
value build | |
scala.reflect.internal.Constants | |
============== | |
object Constant | |
scala.reflect.internal.Definitions | |
============== | |
object definitions | |
scala.reflect.internal.FlagSets | |
============== | |
object Flag | |
value NoFlags | |
scala.reflect.internal.Kinds | |
============== | |
object KindErrors | |
value NoKindErrors | |
scala.reflect.internal.Names | |
============== | |
value HASH_MASK | |
value HASH_SIZE | |
value NAME_SIZE | |
variable chrs # an array of 128k chars | |
value nameDebug | |
variable nc | |
value termHashtable # an array of 32k names | |
value typeHashtable # an array of 32k names | |
scala.reflect.internal.Positions | |
============== | |
value NoPosition | |
lazy value posAssigner | |
scala.reflect.internal.Printers | |
============== | |
object ConsoleWriter | |
value footnoteIndex # wraps Map[Class[_], WeakHashMap[Any, Int]](). the number of possible Class[_] instances is limited to 2, so this map doesn't leak | |
value showOuterTests | |
scala.reflect.internal.Scopes | |
============== | |
object EmptyScope # cannot be entered, so its size won't grow uncontrollably | |
object Scope | |
value maxRecursions | |
scala.reflect.internal.StdCreators | |
============== | |
object FixedMirrorTreeCreator | |
object FixedMirrorTypeCreator | |
scala.reflect.internal.StdNames | |
============== | |
object binarynme | |
object compactify | |
object fulltpnme | |
value javanme | |
object nme | |
lazy value sn | |
object tpnme | |
scala.reflect.internal.SymbolTable | |
============== | |
value NoPeriod | |
value NoRunId | |
object SimpleNameOrdering | |
value gen | |
variable infoTransformers | |
variable per | |
object perRunCaches # dangerous are its uses, not the object itself | |
variable ph | |
variable phStack # number of phases is limited, so we're fine | |
value traceSymbolActivity | |
object traceSymbols # only activated when sys.props contains "scalac.debug.syms" | |
lazy value treeBuild | |
scala.reflect.internal.Symbols | |
============== | |
object CyclicReference | |
lazy value NoSymbol | |
object TypeHistory | |
value emptySymbolArray | |
variable ids # an integer, despite its name suggesting a collection | |
variable nextexid | |
!!!DANGER!!! value originalOwner # is only used in GenASM/GenJVM. presentation compiler doesn't track it. reflection shouldn't either. to do that we could use isCompilerUniverse. | |
variable recursionTable # only used in Symbol.info, is never unbalanced after Symbol.info returns | |
value symbolIsNonVariant | |
value symbolIsPossibleInRefinement | |
scala.reflect.internal.Trees | |
============== | |
object EmptyTree | |
lazy value EmptyTreeTypeSubstituter | |
object ImportSelector | |
object Modifiers | |
lazy value duplicator | |
object emptyValDef | |
variable nodeCount | |
value treeNodeCount # statistics is only enabled when explicitly asked to, so it's not a problem | |
scala.reflect.internal.TypeDebugging | |
============== | |
object typeDebug | |
scala.reflect.internal.Types | |
============== | |
value AnyDepth | |
object ApproximateDependentMap | |
object ErroneousCollector | |
object ErrorType | |
object GenPolyType | |
value GlbFailure | |
object HasTypeMember | |
object HasTypeParams | |
object IsDependentCollector | |
value LogPendingBaseTypesThreshold | |
value LogPendingSubTypesThreshold | |
value LogVolatileThreshold | |
object NoPrefix | |
object NoType | |
object RecoverableCyclicReference | |
object StripAnnotationsMap | |
object TypeConstraint | |
value TypeTagg | |
object UnmappableTree | |
object WildcardType | |
object adaptToNewRunMap # stateless | |
variable basetypeRecursions # integer | |
value boundsContainType | |
lazy value commonOwnerMapObj # non-growable footprint | |
object deAlias | |
object dropAllRefinements | |
object dropRepeatedParamType | |
object dropSingletonType | |
value emptySymCount # an immutable null object | |
value emptySymMap # an immutable null object | |
value emptySymbolSet # an immutable null object | |
value enableTypeVarExperimentals | |
variable explainSwitch | |
value glbResults # see lubResults | |
variable globalGlbDepth | |
value globalGlbLimit | |
variable indent | |
value initialUniquesCapacity | |
value intersectionWitness # looks safe, because it's weak, and it goes from List[Type] | |
value isTypeVar | |
!!!DANGER!!! value lubResults # is cleared upon exiting lub/glb, but leak through lub1/glb1 into isSubType, Infer and BaseTypeSeqs | |
value maxTostringRecursions # integer | |
value missingAliasException | |
lazy value numericHiBound | |
lazy value numericLoBound | |
value pendingBaseTypes # is kept balanced in baseTypeOfNonClassTypeRef via a try/finally block | |
value pendingSubTypes # is kept balanced in isSubType via a try/finally block | |
value pendingVolatiles # is kept balanced in isVolatile via a try/finally block | |
value printLubs | |
value propagateParameterBoundsToTypeVars | |
value traceTypeVars | |
value shorthands # immutable | |
variable skolemizationLevel | |
variable subsametypeRecursions # integer | |
object toDeBruijn | |
variable tostringRecursions # integer | |
value typeContainsTypeVar | |
value typeHasAnnotations | |
value typeIsAny | |
value typeIsErroneous | |
value typeIsError | |
value typeIsExistentiallyBound | |
value typeIsHigherKinded | |
value typeIsNonClassType | |
value typeIsNotNull | |
value typeIsNothing | |
value typeIsSubTypeOfSerializable | |
value typeListIsEmpty | |
object typeVarToOriginMap # stateless | |
!!!DANGER!!! lazy value undoLog # is leaking | |
variable uniqueRunId | |
!!!DANGER!!! variable uniques # is leaking | |
object unwrapToClass # stateless | |
object unwrapToStableClass # stateless | |
object unwrapWrapperTypes # stateless | |
value verifyLubs | |
variable volatileRecursions # integer | |
object wildcardToTypeVarMap # stateless | |
scala.reflect.internal.transform.Transforms | |
============== | |
value erasureLazy # stateless except for a few constants | |
value refChecksLazy # stateless | |
value uncurryLazy # stateless | |
scala.reflect.runtime.JavaMirrors | |
============== | |
lazy value mirrors # WeakHashMap[ClassLoader, WeakReference[JavaMirror]]. might leak weak references, adding several dozens of bytes to a footprint of an active classloader. seems reasonable. | |
lazy value rootMirror # a single object | |
lazy value rootToLoader # WeakHashMap[Symbol, ClassLoader]. prevents classloaders from being collected if there are symbols loaded by these classloaders. reasonable. | |
lazy value syntheticCoreClasses # immutable | |
scala.reflect.runtime.SynchronizedOps | |
============== | |
lazy value nameLock | |
scala.reflect.runtime.SynchronizedTypes | |
============== | |
object indentLock | |
object indentLock | |
object lubglbLock | |
object lubglbLock | |
object subsametypeLock | |
object subsametypeLock | |
object toStringLock | |
object toStringLock | |
object uniqueLock | |
object uniqueLock |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
https://gist.github.com/3760748