Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 93f3d4272ced975f1613aebe6e6d80978530fc81
      
https://github.com/WebKit/WebKit/commit/93f3d4272ced975f1613aebe6e6d80978530fc81
  Author: Yusuke Suzuki <[email protected]>
  Date:   2023-01-30 (Mon, 30 Jan 2023)

  Changed paths:
    M Source/JavaScriptCore/wasm/WasmBBQPlan.cpp
    M Source/JavaScriptCore/wasm/WasmOMGPlan.cpp

  Log Message:
  -----------
  [JSC] Fix recursive call's wasm repatch
https://bugs.webkit.org/show_bug.cgi?id=251333
rdar://104795248

Reviewed by Tadeu Zagallo.

We had a long-standing bug that we failed to repatch the recursive self-calls.
This is because,

1. We first repatch our calls of BBQ / OMG callee. This will get entrypoint 
from CalleeGroup. But for the self call, this will get old one.
   So, we repatch with that.
2. Old Plan::.updateCallsitesToCallUs iterated all callees. But at that time, 
this newly created callee is not registered yet, so this does
   not update the (1)'s callsites.
3. Now, registers this new callee. So (1)'s callsites still point to the old 
callee's code for recursive calls.

But fortunately, we now factor out these iteration code etc. to 
CallsiteCollection. And we can easily register (1)'s callee to the repatch
target by just calling addCallsites before calling updateCallsitesToCallUs. 
This patch just does it.

* Source/JavaScriptCore/wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::work):
* Source/JavaScriptCore/wasm/WasmOMGPlan.cpp:
(JSC::Wasm::OMGPlan::work):

Canonical link: https://commits.webkit.org/259568@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to