I like the idea of this, but I¹m not sure it can be applied to Magik due
to the ability for methods to redefined and hence our PICs to be
invalidated. I¹ll have a look though, there might be a couple of places I
could try prototyping this.

Duncan.

On 23/07/2016, 00:25, "mlvm-dev on behalf of John Rose"
<mlvm-dev-boun...@openjdk.java.net on behalf of john.r.r...@oracle.com>
wrote:
>On May 31, 2016, at 12:41 PM, Mark Roos <mr...@roos.com> wrote:
>> 
>> It looks like, from some fine timing, that each time the Smalltalk
>>class changes there is a large amount
>> of time added to the call.  Which I would expect if there was a deopt
>>whenever a different GWT triggered.
>> There are 6 GWTs in this chain ( idleValue can be one of six Smalltalk
>>classes). 
>
>Has anybody on this list played with using a short @Stable array to
>represent a PIC?
>Editing the PIC would involve changing the array instead of recompiling a
>call site.
>
>The effect would be to preserve existing inlinings of the PIC site
>(unless they
>self-invalidate) but allow the PIC to update itself over time as new
>cases arise.
>Previously compiled uses of the PIC would stay optimized as-is.
>
>The @Stable array would always have a series of zero or more non-null
>entries,
>followed by at least one null entry.  The search in the @Stable array
>would inline
>and short-circuit over irrelevant PIC entries, if the pattern-matching
>logic were
>inlinable.  Entries could be as simple as @Stable 2-arrays of guard MH
>and target MH.
>(If they are objects, some care with TrustFinalFields would also be
>needed.)
>
>Using this technique would probably lead to fewer deopts.  The @Stable
>array could
>also be shared by several PIC sites, if that helps with footprint.
>
>class PIC {
>  @Stable final MethodHandle[][] cache = new MethodHandle[PIC_SIZE+1][];
>  // cache[0] = new MethodHandle[] { guard, target }, etc.
>  // cache[cache.length-1] is either null or some permanent catch-all
>logic
>}
>
>‹ John
>_______________________________________________
>mlvm-dev mailing list
>mlvm-dev@openjdk.java.net
>https://urldefense.proofpoint.com/v2/url?u=http-3A__mail.openjdk.java.net_
>mailman_listinfo_mlvm-2Ddev&d=CwIGaQ&c=IV_clAzoPDE253xZdHuilRgztyh_RiV3wUr
>LrDQYWSI&r=aV08z5NG4zOHLhrrnNlp8QUqO3qoRJCN9uQ9bkMSeqE&m=VNUQiU3bdwDRsoH6K
>VkNR_qOt5a2CDuOQTPk7SSpf5E&s=tOHi6W_nCiTp7Q_l9pyafMNesDW3zc0wOWk-v4sZkHc&e
>= 

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

Reply via email to