FPushClsMethod*: write ActRec fully in JIT
commitc772a3d73bb63e18ac870c7418e806e624385bcb
authorJan Oravec <jan@fb.com>
Wed, 31 Jul 2019 05:42:23 +0000 (30 22:42 -0700)
committerHhvm Bot <hhvm-bot@users.noreply.github.com>
Wed, 31 Jul 2019 05:46:30 +0000 (30 22:46 -0700)
tree028c3cdf3b76f752e29b201b41c8d95dd0217210
parent45dd6c7796a5c62377e0498b76fe646ffe622897
FPushClsMethod*: write ActRec fully in JIT

Summary:
Do not write function pointer and class context or `$this` in LookupClsMethod.
Instead, return the function pointer and use `prepareToCallUnknown()` standard
mechanism to write ActRec.

Previously, LookupClsMethod was responsible for forwarding `$this` if the
target method was non-static and it was called from an instance method in the
same class hierarchy. This behavior will be removed and this diff handles it by
returning nullptr from LookupClsMethod and exiting to the interpreter.

Reviewed By: ricklavoie

Differential Revision: D16572538

fbshipit-source-id: 2a3d80183922e0fbc81cdaf84dd01ffef0a30617
hphp/doc/ir.specification
hphp/runtime/vm/jit/call-spec.cpp
hphp/runtime/vm/jit/extra-data.h
hphp/runtime/vm/jit/frame-state.cpp
hphp/runtime/vm/jit/irgen-call.cpp
hphp/runtime/vm/jit/irlower-lookup-method.cpp
hphp/runtime/vm/jit/memory-effects.cpp
hphp/runtime/vm/jit/native-calls.cpp
hphp/runtime/vm/jit/refcount-opts.cpp
hphp/runtime/vm/jit/translator-runtime.cpp
hphp/runtime/vm/jit/translator-runtime.h