summaryrefslogtreecommitdiff
path: root/src/main/scala
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2017-10-22 19:33:59 -0700
committerLi Haoyi <haoyi.sg@gmail.com>2017-10-22 19:33:59 -0700
commitd57ad0b63b54076d9182fdb75df9e38c8b30b58c (patch)
tree2df0a7b201676df1460915023ef48e4b4a0fd9df /src/main/scala
parent3bfac52e0f81dfcdaf892d631ff14d7e9f9190cc (diff)
downloadmill-d57ad0b63b54076d9182fdb75df9e38c8b30b58c.tar.gz
mill-d57ad0b63b54076d9182fdb75df9e38c8b30b58c.tar.bz2
mill-d57ad0b63b54076d9182fdb75df9e38c8b30b58c.zip
Move to caching based on label instead of Target object
`anonTriple` test currently fails, because both `AnonTriple.down` and `AnonTriple.down.inputs(0)` end up picking up the same label...
Diffstat (limited to 'src/main/scala')
-rw-r--r--src/main/scala/forge/Evaluator.scala9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/main/scala/forge/Evaluator.scala b/src/main/scala/forge/Evaluator.scala
index b0c8bf12..f341c9cb 100644
--- a/src/main/scala/forge/Evaluator.scala
+++ b/src/main/scala/forge/Evaluator.scala
@@ -9,7 +9,7 @@ import scala.collection.mutable
class Evaluator(workspacePath: jnio.Path,
enclosingBase: DefCtx){
- val resultCache = mutable.Map.empty[Target[_], (Int, Any)]
+ val resultCache = mutable.Map.empty[String, (Int, Any)]
def evaluate(targets: Seq[Target[_]]): Evaluator.Results = {
jnio.Files.createDirectories(workspacePath)
@@ -27,17 +27,20 @@ class Evaluator(workspacePath: jnio.Path,
)
deleteRec(targetDestPath)
targetDestPath
+
case None => jnio.Files.createTempDirectory(null)
}
val inputsHash = inputResults.hashCode
- resultCache.get(target) match{
+ target.defCtx.staticEnclosing.flatMap(resultCache.get) match{
case Some((hash, res)) if hash == inputsHash && !target.dirty =>
results(target) = res
case _ =>
evaluated.append(target)
val res = target.evaluate(new Args(inputResults, targetDestPath))
- resultCache(target) = (inputsHash, res)
+ for(label <- target.defCtx.staticEnclosing) {
+ resultCache(label) = (inputsHash, res)
+ }
results(target) = res
}