summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlorch <lorch@epfl.ch>2008-07-14 13:28:06 +0000
committerlorch <lorch@epfl.ch>2008-07-14 13:28:06 +0000
commit66a97fea14a5c6e248b86ce00dc6198623825894 (patch)
treee43dccd28d9cd492e476f2016e7ff2ae5ad75981
parent78b4ab415c3ae43726abeac74da525359ad01d4b (diff)
downloadscala-66a97fea14a5c6e248b86ce00dc6198623825894.tar.gz
scala-66a97fea14a5c6e248b86ce00dc6198623825894.tar.bz2
scala-66a97fea14a5c6e248b86ce00dc6198623825894.zip
Seperate compilation (Part 2 of 2): scalac
Validated by Lukas Rytz
-rw-r--r--lib/msil.jar.desired.sha12
-rw-r--r--src/build/msil.xml4
-rw-r--r--src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala22
3 files changed, 19 insertions, 9 deletions
diff --git a/lib/msil.jar.desired.sha1 b/lib/msil.jar.desired.sha1
index 439cc788c7..1ecdd55331 100644
--- a/lib/msil.jar.desired.sha1
+++ b/lib/msil.jar.desired.sha1
@@ -1 +1 @@
-0ddc1d99705e2202fd07212fc6eaf46266229d4f ?msil.jar
+85e623e19ac0cdb0e3ec99e194b74397c8cdfc0c ?msil.jar
diff --git a/src/build/msil.xml b/src/build/msil.xml
index 825c890b0b..e020537a46 100644
--- a/src/build/msil.xml
+++ b/src/build/msil.xml
@@ -158,7 +158,7 @@ PACKED MSIL BUILD (MSIL-PACK)
<target name="msil-pack.lib" depends="msil-pack.start">
<mkdir dir="${build-msil-pack.dir}/lib"/>
<pathconvert property="ilasm.infiles" pathsep=" ">
- <fileset dir="${build-msil.dir}/library" includes="*.msil"/>
+ <fileset dir="${build-msil.dir}/library" includes="**/*.msil"/>
</pathconvert>
<property name="msil-pack-lib.file" value="${build-msil-pack.dir}/lib/predef.dll"/>
<!-- spawn="true" will prevent the ilasm command from printing anything to
@@ -166,7 +166,7 @@ PACKED MSIL BUILD (MSIL-PACK)
<exec executable="${ilasm.cmd}"
vmlauncher="no">
<!-- spawn="true" -->
- <arg line="${ilasm.args}${msil-pack-lib.file} ${ilasm.infiles}"/>
+ <arg line="${ilasm.args}${msil-pack-lib.file} ${ilasm.infiles}"/>
</exec>
</target>
diff --git a/src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala b/src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala
index 5ff1123d78..d6d7f5eef4 100644
--- a/src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala
+++ b/src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala
@@ -7,9 +7,8 @@
package scala.tools.nsc.backend.msil
-import java.io.File
+import java.io.{File, IOException}
import java.nio.{ByteBuffer, ByteOrder}
-import java.io.IOException
import scala.collection.mutable.{Map, HashMap, HashSet, Stack}
import scala.tools.nsc.symtab._
@@ -217,6 +216,7 @@ abstract class GenMSIL extends SubComponent {
var assemName: String = _
var firstSourceName = ""
var outDir: File = _
+ var srcPath: File = _
var moduleName: String = _
def initAssembly() {
@@ -244,6 +244,8 @@ abstract class GenMSIL extends SubComponent {
outDir = new File(settings.outdir.value)
+ srcPath = new File(settings.sourcepath.value)
+
val assemblyName = new AssemblyName()
assemblyName.Name = assemName
massembly = AssemblyBuilderFactory.DefineDynamicAssembly(assemblyName)
@@ -449,11 +451,11 @@ abstract class GenMSIL extends SubComponent {
code.Emit(OpCodes.Ret)
}
createTypes()
- val filename = new File(outDir, assemName + ".msil").getPath()
+ val filename = outDir.getPath()
if (settings.debug.value)
log("Output path: " + filename)
try {
- massembly.Save(filename)
+ massembly.Save(filename, srcPath.getPath())
val ilasm = Properties.msilILasm
if (ilasm != "") {
val generatedFiles = List.fromArray(massembly.GetGeneratedFiles)
@@ -475,9 +477,14 @@ abstract class GenMSIL extends SubComponent {
private def createTypes() {
for (sym <- classes.keys) {
+ val iclass = classes(sym)
+ val tBuilder = types(sym.asInstanceOf[clrTypes.global.Symbol]).asInstanceOf[TypeBuilder]
+
if (settings.debug.value)
- log("Calling CreatType for " + sym + ", " + types(sym.asInstanceOf[clrTypes.global.Symbol]))
- types(sym.asInstanceOf[clrTypes.global.Symbol]).asInstanceOf[TypeBuilder].CreateType()
+ log("Calling CreatType for " + sym + ", " + tBuilder.toString)
+
+ tBuilder.CreateType()
+ tBuilder.setSourceFilepath(iclass.cunit.source.file.path)
}
}
@@ -2210,6 +2217,8 @@ abstract class GenMSIL extends SubComponent {
MOBJECT,
MsilType.EmptyTypes)
+ val iclass = classes(sym)
+
for (m <- sym.tpe.nonPrivateMembers
if m.owner != definitions.ObjectClass && !m.hasFlag(Flags.PROTECTED) &&
m.isMethod && !m.isClassConstructor && !m.isStaticMember && !m.hasFlag(Flags.CASE))
@@ -2245,6 +2254,7 @@ abstract class GenMSIL extends SubComponent {
addSymtabAttribute(sym.sourceModule, mirrorTypeBuilder)
mirrorTypeBuilder.CreateType()
+ mirrorTypeBuilder.setSourceFilepath(iclass.cunit.source.file.path)
}