More performance explorations
forax at univ-mlv.fr
Fri Jun 3 06:29:59 PDT 2011
On 06/03/2011 04:37 AM, John Rose wrote:
> Thanks; I'll look at your dump later tonight.
> If the problem is friction from interface casts, we can probably
> remove them. It's hard to figure out how they are getting in, though.
> It happens when IRubyObject interconverts with Object. Are you doing
> it, or is it coming from inside the java.lang.invoke classes? That's
> the first question. It probably comes from an asType, but some asType
> calls are implicit within the 292 API. What asType calls
> (was convertArguments) are in your code?
> Key fact: asType/convertArguments used to allow interfaces a free
> unchecked pass into and out of Object. Now only explicitCastArguments
> does this. If you convert between an interface and Object, you'll get
> a real checkcast (and a potential CCE) from asType.
> Try changing convertArguments globally to explicitCastArguments and
> see what happens.
Semantically there aren't equivalent but it should not be a problem
if you don't use asType to do an unboxing conversions
e.g. Integer or Object -> int
if the object is null asType throws a NPE but explicitCastArguments
> -- John
More information about the mlvm-dev