AbstractBuildContext.getSourceContents() cache/reuse returned value
diff --git a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/builder/AbstractBuildContext.java b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/builder/AbstractBuildContext.java
index 11ebf23..3f1fb68 100644
--- a/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/builder/AbstractBuildContext.java
+++ b/core/plugins/org.eclipse.dltk.core/model/org/eclipse/dltk/internal/core/builder/AbstractBuildContext.java
@@ -106,11 +106,16 @@
 		return (IFile) module.getResource();
 	}
 
+	private String sourceContents;
+
 	/*
 	 * @see org.eclipse.dltk.compiler.env.IModuleSource#getSourceContents()
 	 */
 	public String getSourceContents() {
-		return new String(getContents());
+		if (sourceContents == null) {
+			sourceContents = new String(getContents());
+		}
+		return sourceContents;
 	}
 
 	/*