On 02/01/2012 10:44 PM, Mark Roos wrote:
> This may be a little much to ask but...   These bytecodes take about 
> 20ns per cycle to run on
> my 2.8 GHz mac using jdk8-B23 without TieredCompile.  Does this seem 
> reasonable given the number of indy calls?
> The GWT depth on the method sends is 1
>
> thanks
> mark
>
>    LABEL <56>  LABEL 1
> <56>  aload 4
> <58>  aload 3
> <59>  astore 1
> <60>  aload 1
>    INDY (asm) <61>  ["at:"] RtCallSite, (6) {RtTestCases class 
> benchmarkLoop, 19}
> <66>  astore 1
> <67>  aload 1
> <68>  astore 5
>    INDY (asm) <70>  ["41"] ConstantCallSite, (6) {dummy}
> <75>  aload 4
> <77>  astore 1
> <78>  aload 1
>    INDY (asm) <79>  ["increment:"] RtCallSite, (6) {RtTestCases class 
> benchmarkLoop, 23}
> <84>  astore 1
>    LABEL <85>  LABEL 0
> <85>  aload 4
> <87>  astore 1
>    INDY (asm) <88>  ["41000000"] ConstantCallSite, (6) {dummy}
> <93>  aload 1
>    INDY (asm) <94>  ["<="] RtCallSite, (6) {RtTestCases class 
> benchmarkLoop, 24}
> <99>  astore 1
> <100>  aload 1
> <101>  getstatic ri/core/rtalk/RtObject _true Lri/core/rtalk/RtObject;
>    JUMP <104>  if_acmpeq LABEL 1

Without the descriptors of invokedynamic and the code of the BSM, it's 
hard to tell.

Anyway, you can optimize the last instructions, <= should return a boolean
so the sequence should be:

ldc 41000000
aload 1
indy <= (ILObject;)Z
if_eq LABEL 1

for that you have to propagate types, from root to leafs to type the 
return type
of invokedynamic with the expected type (the condition of an if is a 
boolean)
an from leafs to root (the first argument of <= is an int).

cheers,
Rémi

_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to