From f42d50ab33a829322618181375cb6c5f2e71118a Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Thu, 9 Feb 2017 21:38:48 -0500 Subject: various smaller changes --- stage1/KeyLockedLazyCache.scala | 8 ++++++++ stage1/Stage1Lib.scala | 5 ++--- stage1/resolver.scala | 5 +++-- 3 files changed, 13 insertions(+), 5 deletions(-) (limited to 'stage1') diff --git a/stage1/KeyLockedLazyCache.scala b/stage1/KeyLockedLazyCache.scala index 2047b81..aac32a3 100644 --- a/stage1/KeyLockedLazyCache.scala +++ b/stage1/KeyLockedLazyCache.scala @@ -10,7 +10,11 @@ final private[cbt] class KeyLockedLazyCache[T <: AnyRef]( val hashMap: java.util.Map[AnyRef,AnyRef], logger: Option[Logger] ){ + final val seen = new ThreadLocal[collection.mutable.Set[AnyRef]](){ + override protected def initialValue = collection.mutable.Set[AnyRef](); + } def get( key: AnyRef, value: => T ): T = { + seen.get.add( key ); val lockableKey = hashMap.synchronized{ if( ! (hashMap containsKey key) ){ val lockableKey = new LockableKey @@ -35,6 +39,10 @@ final private[cbt] class KeyLockedLazyCache[T <: AnyRef]( } } def update( key: AnyRef, value: T ): T = { + assert( + !seen.get.contains( key ), + "Thread tries to update cache key after observing it: " + key + ) val lockableKey = hashMap get key lockableKey.synchronized{ hashMap.put( lockableKey, value ) diff --git a/stage1/Stage1Lib.scala b/stage1/Stage1Lib.scala index ad4b2d0..f73995e 100644 --- a/stage1/Stage1Lib.scala +++ b/stage1/Stage1Lib.scala @@ -100,7 +100,7 @@ class Stage1Lib( logger: Logger ) extends BaseLib{ trapExitCode{ val c = classLoader.loadClass(cls) val m = c.getMethod( "main", classOf[Array[String]] ) - val instance = + val instance = if(!fakeInstance) null else c.newInstance assert( fakeInstance || (m.getModifiers & java.lang.reflect.Modifier.STATIC) > 0, @@ -421,8 +421,7 @@ class Stage1Lib( logger: Logger ) extends BaseLib{ val dependencies = dependency.dependencies val dependencyClassLoader: ClassLoader = { if( dependency.dependencies.isEmpty ){ - // wrap for caching - new cbt.URLClassLoader( ClassPath(), ClassLoader.getSystemClassLoader().getParent() ) + NailgunLauncher.jdkClassLoader } else if( dependencies.size == 1 ){ classLoaderRecursion( dependencies.head, latest, cache ) } else{ diff --git a/stage1/resolver.scala b/stage1/resolver.scala index 4a39d14..e6e4588 100644 --- a/stage1/resolver.scala +++ b/stage1/resolver.scala @@ -140,6 +140,7 @@ case class Dependencies( dependencies: Seq[Dependency] )(implicit val logger: Lo def moduleKey = this.getClass.getName ++ "(" ++ dependencies.map(_.moduleKey).mkString(", ") ++ ")" def targetClasspath = ClassPath() def exportedClasspath = ClassPath() + override def show: String = this.getClass.getSimpleName + "( " + dependencies.map(_.show).mkString(", ") + " )" } case class PostBuildDependency(target: File, _dependencies: Seq[DependencyImplementation])(implicit val logger: Logger, val transientCache: java.util.Map[AnyRef,AnyRef]) extends DependencyImplementation{ @@ -223,13 +224,13 @@ case class BoundMavenDependency( version != "" && version != null && !version.startsWith(" ") && !version.endsWith(" "), s"not a valid version: '$version'" ) - override def show: String = this.getClass.getSimpleName ++ "(" ++ mavenDependency.serialize ++ ")" + override def show: String = this.getClass.getSimpleName ++ "(" ++ mavenDependency.serialize ++ ")" override final lazy val lastModified = classpath.strings.map(new File(_).lastModified).max private val groupPath = groupId.split("\\.").mkString("/") protected[cbt] def basePath(useClassifier: Boolean) = s"/$groupPath/$artifactId/$version/$artifactId-$version" ++ (if (useClassifier) classifier.name.map("-"++_).getOrElse("") else "") - + //private def coursierJarFile = userHome++"/.coursier/cache/v1/https/repo1.maven.org/maven2"++basePath++".jar" def exportedJars = Seq( jar ) -- cgit v1.2.3