Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 9d453e3d623cbed559e7d31195b5c7840b9b679b
https://github.com/WebKit/WebKit/commit/9d453e3d623cbed559e7d31195b5c7840b9b679b
Author: Keith Miller <[email protected]>
Date: 2026-01-08 (Thu, 08 Jan 2026)
Changed paths:
M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
M Source/JavaScriptCore/Sources.txt
M Source/JavaScriptCore/jit/AssemblyHelpers.h
M Source/JavaScriptCore/jit/BaselineJITRegisters.h
M Source/JavaScriptCore/jit/CCallHelpers.h
M Source/JavaScriptCore/jit/GPRInfo.h
M Source/JavaScriptCore/jit/JIT.h
M Source/JavaScriptCore/jit/JITArithmetic.cpp
M Source/JavaScriptCore/jit/JITPropertyAccess.cpp
M Source/JavaScriptCore/jit/RegisterSet.h
M Source/JavaScriptCore/lol/LOLJIT.cpp
M Source/JavaScriptCore/lol/LOLJIT.h
A Source/JavaScriptCore/lol/LOLJITOperations.cpp
A Source/JavaScriptCore/lol/LOLJITOperations.h
M Source/JavaScriptCore/lol/LOLRegisterAllocator.h
Log Message:
-----------
[LOL] Add support for resolve/put_to_scope
https://bugs.webkit.org/show_bug.cgi?id=305063
rdar://167709636
Reviewed by Yusuke Suzuki.
This patch is somewhat complicated since the scope resolution/access
bytecodes go through multiple thunks, which makes generating the
correct fast paths tricky.
I also had to make new operations for scope slow paths. The existing
slow paths were reading values from the stack directly which we want to
avoid. Although, after bug 1 below maybe that's less of an issue since
we'll essentially have to flush the operands for exceptions anyway.
Additionally there were a number of bugs that were uncovered now that
we support enough bytecodes to trigger some interesting edge cases:
1) We have to silentSpill a def's GPR when it aliases a use. This is
because the slow path could throw. This is not normally a problem but
we could catch that exception in the same frame we threw from. In
that case the use wouldn't have been flushed properly and we would
see a stale value.
2) emitLoadCharacterString was clobbering the source and used regT1
without taking it as a parameter. I copied it and changed the behavior
to avoid allocating an extra scratch register in every other case.
3) I had written the comparison operators incorrectly as for some of the
constant cases they would compare backwards.
4) get_from_scope would end up clobbering the scope before jumping to
the slow path, which would result in using the globalObject as the
scope when it should've been a different object.
Canonical link: https://commits.webkit.org/305289@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications