[Webkit-unassigned] [Bug 158083] LLInt should support other types of prototype GetById caching.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Jun 10 22:41:19 PDT 2016


https://bugs.webkit.org/show_bug.cgi?id=158083

--- Comment #43 from Caio Lima <ticaiolima at gmail.com> ---
(In reply to comment #42)
> (In reply to comment #41)
> > Hi Guys,
> > 
> > I am trying to inline the customs getter function call but I am facing a
> > weird error.
> > 
> > When I set the cache Up, I put into pc[5] the pointer of the Custom Function
> > "GetValueFunc".
> > 
> > When I try to load it into a register in LowLevelInterpreter64.asm, its
> > content is not the same. I am doing the following operations:
> > 
> > loadisFromInstruction(5, t1)
> > PrepareForCCall
> > //load the arguments
> > cCall4(t0)
> > //retrun retrieving and dispatch
> > 
> > I debugged the value present into t1 (in my architecture is the rsi) and it
> > is not corresponding to the pointer setted in setup. To test if call was
> > working, I manually set rsi with the value of the function address and the
> > function was called, however some arguments were incorrect the pointers.
> > 
> > I tried load the function pointer using:
> > loadpFromInstruction(5, t1)
> > 
> > And had no success too.
> > 
> > Is anything I am doing wrong to get the pc[] elements as pointer?
> Can you post the patch that you think should work?
> What architecture are you on?

Hi Saam. I just discovered that some pseudo-register are mapped to the same physical register (e.g t1 = a0 in my architecture). I fixed the register usage and it is working now in my architecture.

Now the problem I am facing is that the "typedef EncodedJSValue (*GetValueFunc)(ExecState*, EncodedJSValue thisValue, PropertyName, JSObject* slotBase)" requires a PropertyName and I don't know how can I pass it in the inlined assembly.

My current assembly is this one:

_llint_op_get_by_id_proto_custom:
    traceExecution()
    loadisFromInstruction(2, t0)
    loadConstantOrVariableCell(t0, t3, .opGetByIdProtoCustomSlow)
    loadi JSCell::m_structureID[t3], t1
    loadisFromInstruction(4, t2)
    bineq t2, t1, .opGetByIdProtoCustomSlow
    loadpFromInstruction(6, a1)
    loadpFromInstruction(5, t0)
    push t2
    push PC
    push PB
    prepareStateForCCall()
    move cfr, a0
    move 0, a2 # I am testing with CustomGetter function and this parameter is ignored
    move a1, a3
    cCall4(t0)
    restoreStateAfterCCall()
    pop PB
    pop PC
    pop t2
    storeq r0, [cfr, t2, 8]
    valueProfile(r0, 8, t1)
    dispatch(9)

.opGetByIdProtoCustomSlow:
    callSlowPath(_llint_slow_path_get_by_id)
    dispatch(9)

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20160611/a07c31a8/attachment.html>


More information about the webkit-unassigned mailing list