Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d7deeb4d678e012b7665d53198f3d80952fffdd6
      
https://github.com/WebKit/WebKit/commit/d7deeb4d678e012b7665d53198f3d80952fffdd6
  Author: Jer Noble <[email protected]>
  Date:   2025-11-07 (Fri, 07 Nov 2025)

  Changed paths:
    M Source/JavaScriptCore/API/JSValueRef.cpp
    M Source/JavaScriptCore/CMakeLists.txt
    M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
    M Source/JavaScriptCore/dfg/DFGOperations.cpp
    M Source/JavaScriptCore/runtime/BrandedStructure.h
    M Source/JavaScriptCore/runtime/IntlNumberFormatInlines.h
    M Source/JavaScriptCore/runtime/JSBigInt.h
    A Source/JavaScriptCore/runtime/JSBigIntInlines.h
    M Source/JavaScriptCore/runtime/JSCJSValue.cpp
    M Source/JavaScriptCore/runtime/JSCJSValue.h
    A Source/JavaScriptCore/runtime/JSCJSValueCellInlines.h
    M Source/JavaScriptCore/runtime/JSCJSValueInlines.h
    M Source/JavaScriptCore/runtime/JSCellButterfly.h
    M Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h
    M Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h
    M Source/JavaScriptCore/runtime/JSObject.h
    M Source/JavaScriptCore/runtime/JSObjectInlines.h
    M Source/JavaScriptCore/runtime/JSString.h
    M Source/JavaScriptCore/runtime/NumberConstructor.cpp
    M Source/JavaScriptCore/runtime/ObjectConstructor.h
    M Source/JavaScriptCore/runtime/PropertyDescriptor.h
    M Source/JavaScriptCore/runtime/ToNativeFromValue.h
    M Source/JavaScriptCore/runtime/WriteBarrier.h
    M Source/JavaScriptCore/runtime/WriteBarrierInlines.h
    M Source/WebCore/bindings/js/DOMWrapperWorld.cpp
    M Source/WebCore/bindings/js/DOMWrapperWorld.h
    M Source/WebCore/bindings/js/JSRTCRtpSFrameTransformCustom.cpp

  Log Message:
  -----------
  [JSC] Mark inlined JSValue methods with `inline` keyword (and fix a bunch of 
things that break when that happens)
rdar://164200123
https://bugs.webkit.org/show_bug.cgi?id=302121

Reviewed by Keith Miller.

Clients of JSC can face "missing symbol" linker errors for inlined methods when 
the
correct *Inlines.h headers are not included, and that task is made much, much 
more difficult when
the inlined methods aren't marked as "inline". Adding the "inline" keyword 
causes the compiler to
throw an error when that symbol is referenced, making it much easier to notice 
a missing *Inlines.h
header at compile time.

Also, adding the "inline" keyword to inlined JSValue methods causes a _ton_ of 
compiler errors.

It's not entirely clear how this ever worked; those inlined methods must have 
successfully been linked
against accidentally (which ironically defeats the purpose of inlining) by the 
linker so long as some
other cpp file in the same unified compilation file included the right 
Inlines.h header.

Another problem within JSC is that there are circular dependencies between 
headers; inlined methods
depend upon a type which is defined by a header that first includes the 
*Inlines.h header, causing
complicated compile errors in unrelated code.

To resolve all of these issues, all the externally defined inline functions in 
JSCJSValue.h are now
correctly attributed with "inline", have comments declaring the header file 
containing the definition
of that inlined method, and in some cases the Inlines.h headers have been 
broken up into smaller
headers with fewer include requirements.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to