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>.
(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