summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2009-10-21 13:19:33 +0000
committerIulian Dragos <jaguarul@gmail.com>2009-10-21 13:19:33 +0000
commit70bc8f93c56d6ac2390bbae8a0ab173926240549 (patch)
treec6b3fef1fa2b95607732b28187be3cd89654e025
parent58651079b710013873372f12a451146b640581c7 (diff)
downloadscala-70bc8f93c56d6ac2390bbae8a0ab173926240549.tar.gz
scala-70bc8f93c56d6ac2390bbae8a0ab173926240549.tar.bz2
scala-70bc8f93c56d6ac2390bbae8a0ab173926240549.zip
Made Platform methods inlineable and allow the ...
Made Platform methods inlineable and allow the optimiser to load code for methods that have the @inline attribute
-rw-r--r--src/compiler/scala/tools/nsc/backend/opt/Inliners.scala3
-rw-r--r--src/library/scala/compat/Platform.scala7
2 files changed, 9 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala b/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
index 487e66fc9e..a93d6b1a34 100644
--- a/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
+++ b/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
@@ -390,7 +390,8 @@ abstract class Inliners extends SubComponent {
if (settings.debug.value) log("shouldLoad: " + receiver + "." + method)
((method.isFinal && isMonadMethod(method) && isHigherOrderMethod(method))
|| (receiver.enclosingPackage == definitions.ScalaRunTimeModule.enclosingPackage)
- || (receiver == definitions.PredefModule.moduleClass))
+ || (receiver == definitions.PredefModule.moduleClass)
+ || (method.hasAnnotation(ScalaInlineAttr)))
}
/** Cache whether a method calls private members. */
diff --git a/src/library/scala/compat/Platform.scala b/src/library/scala/compat/Platform.scala
index 8c1d84771a..9bbfba25bc 100644
--- a/src/library/scala/compat/Platform.scala
+++ b/src/library/scala/compat/Platform.scala
@@ -26,6 +26,7 @@ object Platform {
* @param destPos ..
* @param length ..
*/
+ @inline
def arraycopy(src: AnyRef, srcPos: Int, dest: AnyRef, destPos: Int, length: Int) {
System.arraycopy(src, srcPos, dest, destPos, length)
}
@@ -37,19 +38,25 @@ object Platform {
* @param length ..
* @return ..
*/
+ @inline
def createArray(elemClass: Class[_], length: Int): AnyRef =
java.lang.reflect.Array.newInstance(elemClass, length)
+ @inline
def arrayclear(arr: Array[Int]) { java.util.Arrays.fill(arr, 0) }
+ @inline
def getClassForName(name: String): Class[_] = java.lang.Class.forName(name)
val EOL = System.getProperty("line.separator", "\n")
+ @inline
def currentTime: Long = System.currentTimeMillis()
+ @inline
def collectGarbage: Unit = System.gc()
/** The name of the default character set encoding as a string */
+ @inline
def defaultCharsetName: String = java.nio.charset.Charset.defaultCharset.name
}