Optimised ARM assembler loop

Edward Nevill Edward.Nevill at arm.com
Tue Feb 17 08:13:19 PST 2009

Hi all,


I have now completed converting the bytecodeInterpreterOpt.cpp in my previous email into hand crafted ARM assembler and uploaded to my PPA.


This gives approx 100% performance improvement over the original Zero.


I have conditionalised both sets of optimisations (the generic C optimisations and the Asm optimisations) so they only build on ARM.


The conditionalisation is in




# Not included in includeDB because it has no dependencies


# ECN - For the time being HOTSPOT_OPT only enabled for ARM


ifeq ($(ZERO_LIBARCH),arm)

Obj_Files += bytecodeInterpreter_arm.o





If you want to try out the generic optimisations uncomment the CFLAGS += -DHOTSPOT_OPT line.


Note: You will also need to update debian/rules or you wont even get the patches. Unconditionalise the lines


  ifneq (,$(filter $(DEB_HOST_ARCH),armel i386))
        debian/patches/zero-port-opt-new.diff \
(Of course, if you are running on an ARM platform you don't need to do this).


The main change was the addition of the the asm loop, however there were a few minor changes....

(note these are additional changes to those described in my previous document).


-          Added a rule to openjdk/hotspot/make/linux/makefiles/rules.make

o   This allows compilation of .S to .o

-          In openjdk/hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp

o   Added conditionalisation to turn HOTSPOT_OPT off when build jvmti

o   Changed run_opt so it no longer takes a strange 'bmb' argument and always returns 0

§  The adition is now always to re-execute the bytecode regardless of why it failed (eg exception etc). bytecodeInterpreterOpt.cpp is responsible for putting the world back in a state where the bytecode can be re-executed.


Sources available in...






Binaries available RSN,





IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium.  Thank you.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/zero-dev/attachments/20090217/351932ac/attachment.html 

More information about the zero-dev mailing list