[ParseableInterface] Add ‘forwarding modules’

A ‘forwarding module’ is a YAML file that’s meant to stand in for a .swiftmodule file and provide an up-to-date description of its dependencies, always using modification times.

When a ‘prebuilt module’ is first loaded, we verify that it’s up-to-date by hashing all of its dependencies. Since this is orders of magnitude slower than reading mtimes, we’ll install a `forwarding module` containing the mtimes of the now-validated dependencies.
This commit is contained in:
Harlan Haskins
2019-02-13 17:36:55 -08:00
parent 67a447f15f
commit 366bbf48b9
17 changed files with 1315 additions and 703 deletions

View File

@@ -14,7 +14,7 @@
// RUN: %target-swift-ide-test -print-module -module-to-print SmokeTest -I %t -source-filename x -print-interface > %t/SmokeTest.txt
// RUN: %FileCheck %s < %t/SmokeTest.txt
// RUN: %FileCheck -check-prefix NEGATIVE %s < %t/SmokeTest.txt
// RUN: llvm-bcanalyzer -dump %t/SmokeTest.swiftmodule | not grep FILE_DEPENDENCY
// RUN: llvm-bcanalyzer -dump %t/SmokeTest.swiftmodule | grep FILE_DEPENDENCY
// CHECK-LABEL: public class TestClass
public class TestClass {