Bug 163099

Summary: [JSC] Clean up callOperation APIs
Product: WebKit Reporter: Yusuke Suzuki <ysuzuki>
Component: JavaScriptCoreAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: saam
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   

Description Yusuke Suzuki 2016-10-06 21:18:11 PDT
From Saam's idea. https://bugs.webkit.org/show_bug.cgi?id=162978#c3

class Call {
      struct Argument {
              Argument(GPRReg);
              Argument(JSValueRegs);
              Argument(immediate type: int32/int64/pointer); 
      }
      Type m_resultType;
      Vector<Arguments> m_arguments;
      FunctionPtr m_function;
};

and then have a function like:
setupCallWithExecState(const Call& call);

And API should correctly construct the frame according to Vector<Arguments>.
Comment 1 Saam Barati 2016-10-06 22:42:20 PDT
(In reply to comment #0)
> From Saam's idea. https://bugs.webkit.org/show_bug.cgi?id=162978#c3
> 
> class Call {
>       struct Argument {
>               Argument(GPRReg);
>               Argument(JSValueRegs);
>               Argument(immediate type: int32/int64/pointer); 
>       }
>       Type m_resultType;
>       Vector<Arguments> m_arguments;
>       FunctionPtr m_function;
> };
> 
> and then have a function like:
> setupCallWithExecState(const Call& call);
> 
> And API should correctly construct the frame according to Vector<Arguments>.

Thinking about it more, we'd probably want to encode if the first argument is ExecState or not since we have some operations that don't take ExecState