RtalkTest examination

Christian Thalinger christian.thalinger at oracle.com
Wed Aug 31 07:08:39 PDT 2011


Tom was looking into a bug with his bimorphic inlining patch and said something about massive inlining with RtalkTest so I thought I also give it a shot.

One thing I can say for sure:  massive inlining and huge methods!

We get a lot like:

  @ 115   java.lang.invoke.MethodHandle::asSpreader (13 bytes)   NodeCountInliningCutoff
  @ 60   ri.core.rtalk.RtFixedObjects::getNil (5 bytes)   size > DesiredMethodLimit

I think the thing Tom as was a method like e.g.:

  79216  390             rtPbc.r184::block$1 (49 bytes)

It seems it does recursive inlining of this pattern:

                                @ 3   java.lang.invoke.MethodHandle::invokeExact (7 bytes)   inline (hot)
                                  @ 3   ri.core.rtalk.RtCallSite::test (16 bytes)   inline (hot)
                                    @ 1   ri.core.rtalk.RtObject::classField (5 bytes)   inline (hot)
                                @ 10   java.lang.invoke.MethodHandle::invokeExact (12 bytes)   inline (hot)
                                  @ 5   java.lang.invoke.MethodHandleImpl::selectAlternative (10 bytes)   inline (hot)
                                @ 23   java.lang.invoke.MethodHandle::invokeExact (30 bytes)   inline (hot)
                                @ 23   java.lang.invoke.MethodHandle::invokeExact (8 bytes)   inline (hot)
                                  @ 1   rtPbc.r192::invoke (10 bytes)   inline (hot)
                                    @ 4   ri.core.rtalk.RtFixedObjects::getTrue (5 bytes)   inline (hot)
                                      @ 1   ri.core.rtalk.RtFixedObjects::getFixedAsRtObject (8 bytes)   inline (hot)
                                        @ 1   ri.core.rtalk.RtFixedObjects::getFixedObject (8 bytes)   inline (hot)
                                          @ 4   ri.core.container.OrderedMap::getValueAt (9 bytes)   inline (hot)
                                            @ 5   java.util.ArrayList::get (11 bytes)   inline (hot)
                                              @ 2   java.util.ArrayList::rangeCheck (22 bytes)   inline (hot)
                                              @ 7   java.util.ArrayList::elementData (7 bytes)   inline (hot)

Is that your GWT chains?  If so, these are either a little too long or we have a bug somewhere.

-- Christian


More information about the mlvm-dev mailing list