summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-09-22 06:09:29 +0000
committerPaul Phillips <paulp@improving.org>2010-09-22 06:09:29 +0000
commit03cd602835e373f47b7c8de55b063a0cc0838eaf (patch)
treeafd6d057f51d34d2bcc08c0eab243cbb4bbd34b4 /lib
parent567968ab8e93e8afcfbb7a7f5a709b80d8ca0827 (diff)
downloadscala-03cd602835e373f47b7c8de55b063a0cc0838eaf.tar.gz
scala-03cd602835e373f47b7c8de55b063a0cc0838eaf.tar.bz2
scala-03cd602835e373f47b7c8de55b063a0cc0838eaf.zip
Found the following inefficiencies in fjbg:
ldc being used instead of bipush or sipush. The cheaper instructions were only being used when the argument was typed as byte or short, but an Int in the byte or short range can as easily use them. This also saves an entry in the constant pool. iconst_n not being used except on Ints. Same issue in reverse: pushing short 3 on the stack is cheaper with iconst_3 than with sipush. Example: class A { def f1: Int = 100 // was ldc #X, now bipush 100 def f2: Int = 5000 // was ldc #X, now sipush 5000 def f3: Byte = 2 // was bipush 2, now iconst_2 def f4: Short = 2 // was sipush 2, now iconst_2 } Review by dragos.
Diffstat (limited to 'lib')
-rw-r--r--lib/fjbg.jar.desired.sha12
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/fjbg.jar.desired.sha1 b/lib/fjbg.jar.desired.sha1
index 7e1cb1c13e..862868d030 100644
--- a/lib/fjbg.jar.desired.sha1
+++ b/lib/fjbg.jar.desired.sha1
@@ -1 +1 @@
-b73c0c9115d83849bada9a5c361f77745da22e0d ?fjbg.jar
+3997a32211461f0f7de1e4eb37e964cd134ea003 ?fjbg.jar