diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2009-10-21 13:19:33 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2009-10-21 13:19:33 +0000 |
commit | 70bc8f93c56d6ac2390bbae8a0ab173926240549 (patch) | |
tree | c6b3fef1fa2b95607732b28187be3cd89654e025 | |
parent | 58651079b710013873372f12a451146b640581c7 (diff) | |
download | scala-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.scala | 3 | ||||
-rw-r--r-- | src/library/scala/compat/Platform.scala | 7 |
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 } |