Changeset 258478 in webkit


Ignore:
Timestamp:
Mar 15, 2020 3:16:52 AM (4 years ago)
Author:
ysuzuki@apple.com
Message:

Should not use variable-length-array (VLA)
https://bugs.webkit.org/show_bug.cgi?id=209043

Reviewed by Mark Lam.

PerformanceTests:

  • MediaTime/Configurations/Base.xcconfig:

Source/bmalloc:

  • Configurations/Base.xcconfig:

Source/JavaScriptCore:

This patch disables variable-length-array (VLA). If this feature uses user-input, user can
control the stack height consumed by C++ code. This patch avoids using VLA. To achieve that,

  1. We set -Wvla warning option to trigger warnings if it is used.
  2. Introduce MarkedJSValueRefArray for API. This replaces JSValueRef arguments[variableLength] use case. MarkedJSValueRefArray registers itself to JSC GC so that GC can mark it as a strong root.
  • API/JSContext.mm:

(+[JSContext currentArguments]):

  • API/JSValue.mm:

(-[JSValue callWithArguments:]):
(-[JSValue constructWithArguments:]):
(-[JSValue invokeMethod:withArguments:]):

  • API/MarkedJSValueRefArray.cpp: Added.

(JSC::MarkedJSValueRefArray::MarkedJSValueRefArray):
(JSC::MarkedJSValueRefArray::~MarkedJSValueRefArray):
(JSC::MarkedJSValueRefArray::visitAggregate):

  • API/MarkedJSValueRefArray.h: Added.
  • API/tests/minidom.c:

(print):

  • API/tests/testapi.cpp:

(TestAPI::markedJSValueArrayAndGC):
(testCAPIViaCpp):

  • Configurations/Base.xcconfig:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • heap/Heap.cpp:

(JSC::Heap::addCoreConstraints):
(JSC::Heap::addMarkedJSValueRefArray):

  • heap/Heap.h:
  • heap/MarkedSpace.h:

(JSC::MarkedSpace::activeWeakSetsBegin): Deleted.
(JSC::MarkedSpace::activeWeakSetsEnd): Deleted.
(JSC::MarkedSpace::newActiveWeakSetsBegin): Deleted.
(JSC::MarkedSpace::newActiveWeakSetsEnd): Deleted.

  • runtime/ArgList.h:

Source/WebCore:

  • Configurations/Base.xcconfig:
  • crypto/mac/SerializedCryptoKeyWrapMac.mm:

(WebCore::wrapSerializedCryptoKey):
(WebCore::unwrapSerializedCryptoKey):

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::getInternalformatParameter):

  • platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:

(WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices):

  • platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:

(WebCore::updateDisplayID):
(WebCore::ScreenDisplayCaptureSourceMac::screenCaptureDevices):

Source/WebCore/PAL:

  • Configurations/Base.xcconfig:

Source/WebInspectorUI:

  • Configurations/Base.xcconfig:

Source/WebKit:

  • Configurations/Base.xcconfig:
  • UIProcess/_WKTouchEventGenerator.mm:

(-[_WKTouchEventGenerator touchDown:touchCount:]):
(-[_WKTouchEventGenerator liftUp:touchCount:]):
(-[_WKTouchEventGenerator moveToPoints:touchCount:duration:]):

Source/WebKitLegacy/mac:

  • Configurations/Base.xcconfig:

Source/WTF:

  • Configurations/Base.xcconfig:
  • wtf/UUID.cpp:

(WTF::bootSessionUUIDString):

Tools:

  • ContentExtensionTester/Configurations/Base.xcconfig:
  • lldb/lldbWebKitTester/Configurations/Base.xcconfig:
Location:
trunk
Files:
2 added
37 edited

Legend:

Unmodified
Added
Removed
  • trunk/PerformanceTests/ChangeLog

    r256731 r258478  
     12020-03-15  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        Should not use variable-length-array (VLA)
     4        https://bugs.webkit.org/show_bug.cgi?id=209043
     5
     6        Reviewed by Mark Lam.
     7
     8        * MediaTime/Configurations/Base.xcconfig:
     9
    1102020-02-17  Don Olmstead  <don.olmstead@sony.com>
    211
  • trunk/PerformanceTests/MediaTime/Configurations/Base.xcconfig

    r257755 r258478  
    8383GCC_WARN_UNUSED_VARIABLE = YES;
    8484PREBINDING = NO;
    85 WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough;
     85WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wvla;
    8686HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/usr/local/include $(DSTROOT)/usr/local/include icu $(HEADER_SEARCH_PATHS);
    8787
  • trunk/Source/JavaScriptCore/API/JSContext.mm

    r251425 r258478  
    233233        JSContext *context = [JSContext currentContext];
    234234        size_t count = entry->argumentCount;
    235         JSValue * argumentArray[count];
    236         for (size_t i =0; i < count; ++i)
    237             argumentArray[i] = [JSValue valueWithJSValueRef:entry->arguments[i] inContext:context];
    238         entry->currentArguments = [[NSArray alloc] initWithObjects:argumentArray count:count];
     235        NSMutableArray *arguments = [[NSMutableArray alloc] initWithCapacity:count];
     236        for (size_t i = 0; i < count; ++i)
     237            [arguments setObject:[JSValue valueWithJSValueRef:entry->arguments[i] inContext:context] atIndexedSubscript:i];
     238        entry->currentArguments = arguments;
    239239    }
    240240
  • trunk/Source/JavaScriptCore/API/JSValue.mm

    r251425 r258478  
    3737#import "JSValuePrivate.h"
    3838#import "JSWrapperMap.h"
     39#import "MarkedJSValueRefArray.h"
    3940#import "ObjcRuntimeExtras.h"
    4041#import "JSCInlines.h"
     
    473474- (JSValue *)callWithArguments:(NSArray *)argumentArray
    474475{
     476    JSC::JSGlobalObject* globalObject = toJS([_context JSGlobalContextRef]);
     477    JSC::VM& vm = globalObject->vm();
     478    JSC::JSLockHolder locker(vm);
     479
    475480    NSUInteger argumentCount = [argumentArray count];
    476     JSValueRef arguments[argumentCount];
     481    JSC::MarkedJSValueRefArray arguments([_context JSGlobalContextRef], argumentCount);
    477482    for (unsigned i = 0; i < argumentCount; ++i)
    478483        arguments[i] = objectToValue(_context, [argumentArray objectAtIndex:i]);
     
    483488        return [_context valueFromNotifyException:exception];
    484489
    485     JSValueRef result = JSObjectCallAsFunction([_context JSGlobalContextRef], object, 0, argumentCount, arguments, &exception);
     490    JSValueRef result = JSObjectCallAsFunction([_context JSGlobalContextRef], object, 0, argumentCount, arguments.data(), &exception);
    486491    if (exception)
    487492        return [_context valueFromNotifyException:exception];
     
    492497- (JSValue *)constructWithArguments:(NSArray *)argumentArray
    493498{
     499    JSC::JSGlobalObject* globalObject = toJS([_context JSGlobalContextRef]);
     500    JSC::VM& vm = globalObject->vm();
     501    JSC::JSLockHolder locker(vm);
     502
    494503    NSUInteger argumentCount = [argumentArray count];
    495     JSValueRef arguments[argumentCount];
     504    JSC::MarkedJSValueRefArray arguments([_context JSGlobalContextRef], argumentCount);
    496505    for (unsigned i = 0; i < argumentCount; ++i)
    497506        arguments[i] = objectToValue(_context, [argumentArray objectAtIndex:i]);
     
    502511        return [_context valueFromNotifyException:exception];
    503512
    504     JSObjectRef result = JSObjectCallAsConstructor([_context JSGlobalContextRef], object, argumentCount, arguments, &exception);
     513    JSObjectRef result = JSObjectCallAsConstructor([_context JSGlobalContextRef], object, argumentCount, arguments.data(), &exception);
    505514    if (exception)
    506515        return [_context valueFromNotifyException:exception];
     
    511520- (JSValue *)invokeMethod:(NSString *)method withArguments:(NSArray *)arguments
    512521{
     522    JSC::JSGlobalObject* globalObject = toJS([_context JSGlobalContextRef]);
     523    JSC::VM& vm = globalObject->vm();
     524    JSC::JSLockHolder locker(vm);
     525
    513526    NSUInteger argumentCount = [arguments count];
    514     JSValueRef argumentArray[argumentCount];
     527    JSC::MarkedJSValueRefArray argumentArray([_context JSGlobalContextRef], argumentCount);
    515528    for (unsigned i = 0; i < argumentCount; ++i)
    516529        argumentArray[i] = objectToValue(_context, [arguments objectAtIndex:i]);
     
    530543        return [_context valueFromNotifyException:exception];
    531544
    532     JSValueRef result = JSObjectCallAsFunction([_context JSGlobalContextRef], object, thisObject, argumentCount, argumentArray, &exception);
     545    JSValueRef result = JSObjectCallAsFunction([_context JSGlobalContextRef], object, thisObject, argumentCount, argumentArray.data(), &exception);
    533546    if (exception)
    534547        return [_context valueFromNotifyException:exception];
  • trunk/Source/JavaScriptCore/API/tests/minidom.c

    r245430 r258478  
    8989        JSStringRef string = JSValueToStringCopy(context, arguments[0], exception);
    9090        size_t numChars = JSStringGetMaximumUTF8CStringSize(string);
    91         char stringUTF8[numChars];
     91        char* stringUTF8 = (char*)malloc(numChars);
    9292        JSStringGetUTF8CString(string, stringUTF8, numChars);
    9393        printf("%s\n", stringUTF8);
    9494        JSStringRelease(string);
     95        free(stringUTF8);
    9596    }
    9697   
  • trunk/Source/JavaScriptCore/API/tests/testapi.cpp

    r253236 r258478  
    3030#include "JSGlobalObjectInlines.h"
    3131#include "JSObject.h"
     32#include "MarkedJSValueRefArray.h"
    3233
    3334#include <JavaScriptCore/JSContextRefPrivate.h>
     
    4344extern "C" void configureJSCForTesting();
    4445extern "C" int testCAPIViaCpp(const char* filter);
     46extern "C" void JSSynchronousGarbageCollectForDebugging(JSContextRef);
    4547
    4648class APIString {
     
    145147    void promiseEarlyHandledRejections();
    146148    void topCallFrameAccess();
     149    void markedJSValueArrayAndGC();
    147150
    148151    int failed() const { return m_failed; }
     
    621624}
    622625
     626void TestAPI::markedJSValueArrayAndGC()
     627{
     628    auto testMarkedJSValueArray = [&](unsigned count) {
     629        auto* globalObject = toJS(context);
     630        JSC::JSLockHolder locker(globalObject->vm());
     631        JSC::MarkedJSValueRefArray values(context, count);
     632        for (unsigned index = 0; index < count; ++index) {
     633            String target = makeString("Prefix", index);
     634            auto holder = OpaqueJSString::tryCreate(target);
     635            JSValueRef string = JSValueMakeString(context, holder.get());
     636            values[index] = string;
     637        }
     638        JSSynchronousGarbageCollectForDebugging(context);
     639        bool ok = true;
     640        for (unsigned index = 0; index < count; ++index) {
     641            String target = makeString("Prefix", index);
     642            auto holder = OpaqueJSString::tryCreate(target);
     643            JSValueRef string = JSValueMakeString(context, holder.get());
     644            if (!JSValueIsStrictEqual(context, values[index], string))
     645                ok = false;
     646        }
     647        check(ok, "Held JSString should be alive and correct.");
     648    };
     649    testMarkedJSValueArray(4);
     650    testMarkedJSValueArray(1000);
     651}
     652
    623653void configureJSCForTesting()
    624654{
     
    660690    RUN(promiseUnhandledRejectionFromUnhandledRejectionCallback());
    661691    RUN(promiseEarlyHandledRejections());
     692    RUN(markedJSValueArrayAndGC());
    662693
    663694    if (tasks.isEmpty()) {
  • trunk/Source/JavaScriptCore/ChangeLog

    r258463 r258478  
     12020-03-15  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        Should not use variable-length-array (VLA)
     4        https://bugs.webkit.org/show_bug.cgi?id=209043
     5
     6        Reviewed by Mark Lam.
     7
     8        This patch disables variable-length-array (VLA). If this feature uses user-input, user can
     9        control the stack height consumed by C++ code. This patch avoids using VLA. To achieve that,
     10
     11            1. We set `-Wvla` warning option to trigger warnings if it is used.
     12            2. Introduce MarkedJSValueRefArray for API. This replaces `JSValueRef arguments[variableLength]` use case.
     13               MarkedJSValueRefArray registers itself to JSC GC so that GC can mark it as a strong root.
     14
     15        * API/JSContext.mm:
     16        (+[JSContext currentArguments]):
     17        * API/JSValue.mm:
     18        (-[JSValue callWithArguments:]):
     19        (-[JSValue constructWithArguments:]):
     20        (-[JSValue invokeMethod:withArguments:]):
     21        * API/MarkedJSValueRefArray.cpp: Added.
     22        (JSC::MarkedJSValueRefArray::MarkedJSValueRefArray):
     23        (JSC::MarkedJSValueRefArray::~MarkedJSValueRefArray):
     24        (JSC::MarkedJSValueRefArray::visitAggregate):
     25        * API/MarkedJSValueRefArray.h: Added.
     26        * API/tests/minidom.c:
     27        (print):
     28        * API/tests/testapi.cpp:
     29        (TestAPI::markedJSValueArrayAndGC):
     30        (testCAPIViaCpp):
     31        * Configurations/Base.xcconfig:
     32        * JavaScriptCore.xcodeproj/project.pbxproj:
     33        * Sources.txt:
     34        * heap/Heap.cpp:
     35        (JSC::Heap::addCoreConstraints):
     36        (JSC::Heap::addMarkedJSValueRefArray):
     37        * heap/Heap.h:
     38        * heap/MarkedSpace.h:
     39        (JSC::MarkedSpace::activeWeakSetsBegin): Deleted.
     40        (JSC::MarkedSpace::activeWeakSetsEnd): Deleted.
     41        (JSC::MarkedSpace::newActiveWeakSetsBegin): Deleted.
     42        (JSC::MarkedSpace::newActiveWeakSetsEnd): Deleted.
     43        * runtime/ArgList.h:
     44
    1452020-03-14  Saam Barati  <sbarati@apple.com>
    246
  • trunk/Source/JavaScriptCore/Configurations/Base.xcconfig

    r257755 r258478  
    9999CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
    100100PREBINDING = NO;
    101 WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough;
     101WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wvla;
    102102
    103103HEADER_SEARCH_PATHS = . "${BUILT_PRODUCTS_DIR}/usr/local/include" $(HEADER_SEARCH_PATHS);
  • trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r258344 r258478  
    18501850                E3C8ED4323A1DBCB00131958 /* IsoInlinedHeapCellType.h in Headers */ = {isa = PBXBuildFile; fileRef = E3C8ED4223A1DBC500131958 /* IsoInlinedHeapCellType.h */; };
    18511851                E3D239C91B829C1C00BBEF67 /* JSModuleEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = E3D239C71B829C1C00BBEF67 /* JSModuleEnvironment.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1852                E3D3515F241B89D7008DC16E /* MarkedJSValueRefArray.h in Headers */ = {isa = PBXBuildFile; fileRef = E3D3515D241B89CE008DC16E /* MarkedJSValueRefArray.h */; };
    18521853                E3D877741E65C0A000BE945A /* BytecodeDumper.h in Headers */ = {isa = PBXBuildFile; fileRef = E3D877721E65C08900BE945A /* BytecodeDumper.h */; };
    18531854                E3EE137621FBD43500D83C4B /* ErrorType.h in Headers */ = {isa = PBXBuildFile; fileRef = E3EE137421FBD43400D83C4B /* ErrorType.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    50275028                E3D264291D38C042000BE174 /* BytecodeRewriter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BytecodeRewriter.cpp; sourceTree = "<group>"; };
    50285029                E3D2642A1D38C042000BE174 /* BytecodeRewriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BytecodeRewriter.h; sourceTree = "<group>"; };
     5030                E3D3515D241B89CE008DC16E /* MarkedJSValueRefArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MarkedJSValueRefArray.h; sourceTree = "<group>"; };
     5031                E3D3515E241B89CF008DC16E /* MarkedJSValueRefArray.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MarkedJSValueRefArray.cpp; sourceTree = "<group>"; };
    50295032                E3D877711E65C08900BE945A /* BytecodeDumper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BytecodeDumper.cpp; sourceTree = "<group>"; };
    50305033                E3D877721E65C08900BE945A /* BytecodeDumper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BytecodeDumper.h; sourceTree = "<group>"; };
     
    64126415                                86E3C60C167BAB87006D760A /* JSWrapperMap.h */,
    64136416                                86E3C60B167BAB87006D760A /* JSWrapperMap.mm */,
     6417                                E3D3515E241B89CF008DC16E /* MarkedJSValueRefArray.cpp */,
     6418                                E3D3515D241B89CE008DC16E /* MarkedJSValueRefArray.h */,
    64146419                                86F3EEB9168CCF750077B92A /* ObjCCallbackFunction.h */,
    64156420                                86F3EEBA168CCF750077B92A /* ObjCCallbackFunction.mm */,
     
    99649969                                0F7C5FB81D888A0C0044F5E2 /* MarkedBlockInlines.h in Headers */,
    99659970                                141448CB13A176EC00F5BA1A /* MarkedBlockSet.h in Headers */,
     9971                                E3D3515F241B89D7008DC16E /* MarkedJSValueRefArray.h in Headers */,
    99669972                                14D2F3DB139F4BE200491031 /* MarkedSpace.h in Headers */,
    99679973                                0F7DF1351E2970DC0095951B /* MarkedSpaceInlines.h in Headers */,
  • trunk/Source/JavaScriptCore/Sources.txt

    r258344 r258478  
    4141API/JSWeakPrivate.cpp
    4242API/JSWeakValue.cpp
     43API/MarkedJSValueRefArray.cpp
    4344API/OpaqueJSString.cpp
    4445
  • trunk/Source/JavaScriptCore/heap/Heap.cpp

    r258344 r258478  
    5959#include "MachineStackMarker.h"
    6060#include "MarkStackMergingConstraint.h"
     61#include "MarkedJSValueRefArray.h"
    6162#include "MarkedSpaceInlines.h"
    6263#include "MarkingConstraintSet.h"
     
    27592760            }
    27602761
     2762            m_markedJSValueRefArrays.forEach([&] (MarkedJSValueRefArray* array) {
     2763                array->visitAggregate(slotVisitor);
     2764            });
     2765
    27612766            {
    27622767                SetRootMarkReasonScope rootScope(slotVisitor, SlotVisitor::RootMarkReason::VMExceptions);
     
    30033008}
    30043009
     3010
     3011void Heap::addMarkedJSValueRefArray(MarkedJSValueRefArray* array)
     3012{
     3013    m_markedJSValueRefArrays.append(array);
     3014}
     3015
    30053016void Heap::runTaskInParallel(RefPtr<SharedTask<void(SlotVisitor&)>> task)
    30063017{
  • trunk/Source/JavaScriptCore/heap/Heap.h

    r254087 r258478  
    7474class MarkStackArray;
    7575class MarkStackMergingConstraint;
     76class MarkedJSValueRefArray;
    7677class BlockDirectory;
    7778class MarkedArgumentBuffer;
     
    241242
    242243    HashSet<MarkedArgumentBuffer*>& markListSet();
     244    void addMarkedJSValueRefArray(MarkedJSValueRefArray*);
    243245   
    244246    template<typename Functor> void forEachProtectedCell(const Functor&);
     
    618620    ProtectCountSet m_protectedValues;
    619621    std::unique_ptr<HashSet<MarkedArgumentBuffer*>> m_markListSet;
     622    SentinelLinkedList<MarkedJSValueRefArray, BasicRawSentinelNode<MarkedJSValueRefArray>> m_markedJSValueRefArrays;
    620623
    621624    std::unique_ptr<MachineThreads> m_machineThreads;
  • trunk/Source/JavaScriptCore/heap/MarkedSpace.h

    r252452 r258478  
    174174    bool isMarking() const { return m_isMarking; }
    175175   
    176     WeakSet* activeWeakSetsBegin() { return m_activeWeakSets.begin(); }
    177     WeakSet* activeWeakSetsEnd() { return m_activeWeakSets.end(); }
    178     WeakSet* newActiveWeakSetsBegin() { return m_newActiveWeakSets.begin(); }
    179     WeakSet* newActiveWeakSetsEnd() { return m_newActiveWeakSets.end(); }
    180    
    181176    void dumpBits(PrintStream& = WTF::dataFile());
    182177   
  • trunk/Source/JavaScriptCore/runtime/ArgList.h

    r254735 r258478  
    3737public:
    3838    using Base = RecordOverflow;
    39     static const size_t inlineCapacity = 8;
     39    static constexpr size_t inlineCapacity = 8;
    4040    typedef HashSet<MarkedArgumentBuffer*> ListSet;
    4141
  • trunk/Source/WTF/ChangeLog

    r258447 r258478  
     12020-03-15  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        Should not use variable-length-array (VLA)
     4        https://bugs.webkit.org/show_bug.cgi?id=209043
     5
     6        Reviewed by Mark Lam.
     7
     8        * Configurations/Base.xcconfig:
     9        * wtf/UUID.cpp:
     10        (WTF::bootSessionUUIDString):
     11
    1122020-03-13  Myles C. Maxfield  <mmaxfield@apple.com>
    213
  • trunk/Source/WTF/Configurations/Base.xcconfig

    r257755 r258478  
    9898GCC_WARN_UNUSED_VARIABLE = YES;
    9999PREBINDING = NO;
    100 WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough;
     100WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wvla;
    101101HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)$(WTF_INSTALL_PATH_PREFIX)/usr/local/include $(DSTROOT)$(WTF_INSTALL_PATH_PREFIX)/usr/local/include $(inherited);
    102102SYSTEM_HEADER_SEARCH_PATHS = $(SDK_DIR)$(WTF_INSTALL_PATH_PREFIX)/usr/local/include $(inherited);
  • trunk/Source/WTF/wtf/UUID.cpp

    r256030 r258478  
    7171    static std::once_flag onceKey;
    7272    std::call_once(onceKey, [] {
    73         size_t uuidLength = 37;
    74         char uuid[uuidLength];
     73        constexpr size_t maxUUIDLength = 37;
     74        char uuid[maxUUIDLength];
     75        size_t uuidLength = maxUUIDLength;
    7576        if (sysctlbyname("kern.bootsessionuuid", uuid, &uuidLength, nullptr, 0))
    7677            return;
  • trunk/Source/WebCore/ChangeLog

    r258476 r258478  
     12020-03-15  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        Should not use variable-length-array (VLA)
     4        https://bugs.webkit.org/show_bug.cgi?id=209043
     5
     6        Reviewed by Mark Lam.
     7
     8        * Configurations/Base.xcconfig:
     9        * crypto/mac/SerializedCryptoKeyWrapMac.mm:
     10        (WebCore::wrapSerializedCryptoKey):
     11        (WebCore::unwrapSerializedCryptoKey):
     12        * html/canvas/WebGL2RenderingContext.cpp:
     13        (WebCore::WebGL2RenderingContext::getInternalformatParameter):
     14        * platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:
     15        (WebCore::CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices):
     16        * platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
     17        (WebCore::updateDisplayID):
     18        (WebCore::ScreenDisplayCaptureSourceMac::screenCaptureDevices):
     19
    1202020-03-14  Brent Fulgham  <bfulgham@apple.com>
    221
  • trunk/Source/WebCore/Configurations/Base.xcconfig

    r257755 r258478  
    8989GCC_WARN_UNUSED_FUNCTION = YES;
    9090GCC_WARN_UNUSED_VARIABLE = YES;
    91 WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wno-unknown-warning-option;
     91WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wvla -Wno-unknown-warning-option;
    9292
    9393TARGET_MAC_OS_X_VERSION_MAJOR = $(TARGET_MAC_OS_X_VERSION_MAJOR$(MACOSX_DEPLOYMENT_TARGET:suffix:identifier));
  • trunk/Source/WebCore/PAL/ChangeLog

    r258359 r258478  
     12020-03-15  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        Should not use variable-length-array (VLA)
     4        https://bugs.webkit.org/show_bug.cgi?id=209043
     5
     6        Reviewed by Mark Lam.
     7
     8        * Configurations/Base.xcconfig:
     9
    1102020-03-12  Per Arne Vollan  <pvollan@apple.com>
    211
  • trunk/Source/WebCore/PAL/Configurations/Base.xcconfig

    r257755 r258478  
    8989GCC_WARN_UNUSED_FUNCTION = YES;
    9090GCC_WARN_UNUSED_VARIABLE = YES;
    91 WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wno-unknown-warning-option;
     91WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wvla -Wno-unknown-warning-option;
    9292
    9393TARGET_MAC_OS_X_VERSION_MAJOR = $(TARGET_MAC_OS_X_VERSION_MAJOR$(MACOSX_DEPLOYMENT_TARGET:suffix:identifier));
  • trunk/Source/WebCore/crypto/mac/SerializedCryptoKeyWrapMac.mm

    r247117 r258478  
    221221
    222222    Vector<uint8_t> encryptedKey(key.size());
    223     size_t tagLength = 16;
    224     uint8_t tag[tagLength];
     223    constexpr size_t maxTagLength = 16;
     224    size_t tagLength = maxTagLength;
     225    uint8_t tag[maxTagLength];
    225226
    226227    ALLOW_DEPRECATED_DECLARATIONS_BEGIN
     
    288289    kek.shrink(kekSize);
    289290
    290     size_t tagLength = 16;
    291     uint8_t actualTag[tagLength];
     291    constexpr size_t maxTagLength = 16;
     292    size_t tagLength = maxTagLength;
     293    uint8_t actualTag[maxTagLength];
    292294
    293295    key.resize(encryptedKey.size());
  • trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp

    r257799 r258478  
    394394    m_context->getInternalformativ(target, internalformat, GraphicsContextGL::NUM_SAMPLE_COUNTS, 1, &numValues);
    395395
    396     GCGLint params[numValues];
    397     m_context->getInternalformativ(target, internalformat, pname, numValues, params);
     396    Vector<GCGLint> params(numValues);
     397    m_context->getInternalformativ(target, internalformat, pname, numValues, params.data());
    398398#else
    399399    // On desktop OpenGL 4.1 or below we must emulate glGetInternalformativ.
     
    424424    // the value of GL_NUM_SAMPLE_COUNTS will be zero for such formats.
    425425    numValues = isIntegerFormat(internalformat) ? 0 : samples.size();
    426     GCGLint params[numValues];
     426    Vector<GCGLint> params(numValues);
    427427    for (size_t i = 0; i < static_cast<size_t>(numValues); ++i)
    428428        params[i] = samples[i];
    429429#endif
    430430
    431     return Int32Array::tryCreate(params, numValues);
     431    return Int32Array::tryCreate(params.data(), numValues);
    432432}
    433433
  • trunk/Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp

    r251992 r258478  
    168168
    169169    size_t deviceCount = dataSize / sizeof(AudioObjectID);
    170     AudioObjectID deviceIDs[deviceCount];
    171     err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &address, 0, nullptr, &dataSize, deviceIDs);
     170    Vector<AudioObjectID> deviceIDs(deviceCount);
     171    err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &address, 0, nullptr, &dataSize, deviceIDs.data());
    172172    if (err) {
    173173        LOG(Media, "CoreAudioCaptureDeviceManager::refreshAudioCaptureDevices(%p) failed to get device list %d (%.4s)", this, (int)err, (char*)&err);
  • trunk/Source/WebCore/platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm

    r248190 r258478  
    6363    }
    6464
    65     CGDirectDisplayID activeDisplays[displayCount];
    66     err = CGGetActiveDisplayList(displayCount, &(activeDisplays[0]), &displayCount);
     65    Vector<CGDirectDisplayID> activeDisplays(displayCount);
     66    err = CGGetActiveDisplayList(displayCount, activeDisplays.data(), &displayCount);
    6767    if (err) {
    6868        RELEASE_LOG(Media, "CGGetActiveDisplayList() returned error %d when trying to get the active display list", static_cast<int>(err));
     
    320320    }
    321321
    322     CGDirectDisplayID activeDisplays[displayCount];
    323     err = CGGetActiveDisplayList(displayCount, &(activeDisplays[0]), &displayCount);
     322    Vector<CGDirectDisplayID> activeDisplays(displayCount);
     323    err = CGGetActiveDisplayList(displayCount, activeDisplays.data(), &displayCount);
    324324    if (err) {
    325325        RELEASE_LOG(Media, "CGGetActiveDisplayList() returned error %d when trying to get the active display list", (int)err);
  • trunk/Source/WebInspectorUI/ChangeLog

    r258246 r258478  
     12020-03-15  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        Should not use variable-length-array (VLA)
     4        https://bugs.webkit.org/show_bug.cgi?id=209043
     5
     6        Reviewed by Mark Lam.
     7
     8        * Configurations/Base.xcconfig:
     9
    1102020-03-10  Devin Rousso  <drousso@apple.com>
    211
  • trunk/Source/WebInspectorUI/Configurations/Base.xcconfig

    r256108 r258478  
    6565GCC_WARN_UNUSED_FUNCTION = YES;
    6666GCC_WARN_UNUSED_VARIABLE = YES
    67 WARNING_CFLAGS = -Wall -W -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wformat-security -Wmissing-format-attribute -Wpointer-arith -Wwrite-strings -Wno-unused-parameter -Wexit-time-destructors;
     67WARNING_CFLAGS = -Wall -W -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wformat-security -Wmissing-format-attribute -Wpointer-arith -Wwrite-strings -Wno-unused-parameter -Wexit-time-destructors -Wvla;
    6868
    6969ENGINEERING_BUILD_DEFINES = $(ENGINEERING_BUILD_DEFINES_$(ENGINEERING_BUILD));
  • trunk/Source/WebKit/ChangeLog

    r258477 r258478  
     12020-03-15  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        Should not use variable-length-array (VLA)
     4        https://bugs.webkit.org/show_bug.cgi?id=209043
     5
     6        Reviewed by Mark Lam.
     7
     8        * Configurations/Base.xcconfig:
     9        * UIProcess/_WKTouchEventGenerator.mm:
     10        (-[_WKTouchEventGenerator touchDown:touchCount:]):
     11        (-[_WKTouchEventGenerator liftUp:touchCount:]):
     12        (-[_WKTouchEventGenerator moveToPoints:touchCount:duration:]):
     13
    1142020-03-14  Brady Eidson  <beidson@apple.com>
    215
  • trunk/Source/WebKit/Configurations/Base.xcconfig

    r257755 r258478  
    8787OTHER_MIGFLAGS = -F$(BUILT_PRODUCTS_DIR);
    8888PREBINDING = NO;
    89 WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat-security -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wno-unused-parameter -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough;
     89WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat-security -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wno-unused-parameter -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wvla;
    9090
    9191TARGET_MAC_OS_X_VERSION_MAJOR = $(TARGET_MAC_OS_X_VERSION_MAJOR$(MACOSX_DEPLOYMENT_TARGET:suffix:identifier));
  • trunk/Source/WebKit/UIProcess/_WKTouchEventGenerator.mm

    r246513 r258478  
    295295    touchCount = std::min(touchCount, HIDMaxTouchCount);
    296296
    297     CGPoint locations[touchCount];
     297    Vector<CGPoint> locations(touchCount);
    298298
    299299    for (NSUInteger index = 0; index < touchCount; ++index)
    300300        locations[index] = location;
    301301   
    302     [self touchDownAtPoints:locations touchCount:touchCount];
     302    [self touchDownAtPoints:locations.data() touchCount:touchCount];
    303303}
    304304
     
    328328    touchCount = std::min(touchCount, HIDMaxTouchCount);
    329329
    330     CGPoint locations[touchCount];
     330    Vector<CGPoint> locations(touchCount);
    331331
    332332    for (NSUInteger index = 0; index < touchCount; ++index)
    333333        locations[index] = location;
    334334   
    335     [self liftUpAtPoints:locations touchCount:touchCount];
     335    [self liftUpAtPoints:locations.data() touchCount:touchCount];
    336336}
    337337
     
    345345    touchCount = std::min(touchCount, HIDMaxTouchCount);
    346346
    347     CGPoint startLocations[touchCount];
    348     CGPoint nextLocations[touchCount];
     347    Vector<CGPoint> startLocations(touchCount);
     348    Vector<CGPoint> nextLocations(touchCount);
    349349
    350350    CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent();
     
    362362            nextLocations[i] = calculateNextCurveLocation(startLocations[i], newLocations[i], interval);
    363363        }
    364         [self _updateTouchPoints:nextLocations count:touchCount];
     364        [self _updateTouchPoints:nextLocations.data() count:touchCount];
    365365
    366366        delayBetweenMove(eventIndex++, elapsed);
  • trunk/Source/WebKitLegacy/mac/ChangeLog

    r258379 r258478  
     12020-03-15  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        Should not use variable-length-array (VLA)
     4        https://bugs.webkit.org/show_bug.cgi?id=209043
     5
     6        Reviewed by Mark Lam.
     7
     8        * Configurations/Base.xcconfig:
     9
    1102020-03-12  Brent Fulgham  <bfulgham@apple.com>
    211
  • trunk/Source/WebKitLegacy/mac/Configurations/Base.xcconfig

    r257755 r258478  
    8989CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
    9090PREBINDING = NO;
    91 WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat-security -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wno-unused-parameter -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough;
     91WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat-security -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wno-unused-parameter -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wvla;
    9292
    9393TARGET_MAC_OS_X_VERSION_MAJOR = $(TARGET_MAC_OS_X_VERSION_MAJOR$(MACOSX_DEPLOYMENT_TARGET:suffix:identifier));
  • trunk/Source/bmalloc/ChangeLog

    r258460 r258478  
     12020-03-15  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        Should not use variable-length-array (VLA)
     4        https://bugs.webkit.org/show_bug.cgi?id=209043
     5
     6        Reviewed by Mark Lam.
     7
     8        * Configurations/Base.xcconfig:
     9
    1102020-03-13  Saam Barati  <sbarati@apple.com>
    211
  • trunk/Source/bmalloc/Configurations/Base.xcconfig

    r257755 r258478  
    9595GCC_WARN_UNUSED_VARIABLE = YES;
    9696PREBINDING = NO;
    97 WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough;
     97WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wvla;
    9898
    9999TARGET_MAC_OS_X_VERSION_MAJOR = $(TARGET_MAC_OS_X_VERSION_MAJOR$(MACOSX_DEPLOYMENT_TARGET:suffix:identifier));
  • trunk/Tools/ChangeLog

    r258458 r258478  
     12020-03-15  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        Should not use variable-length-array (VLA)
     4        https://bugs.webkit.org/show_bug.cgi?id=209043
     5
     6        Reviewed by Mark Lam.
     7
     8        * ContentExtensionTester/Configurations/Base.xcconfig:
     9        * lldb/lldbWebKitTester/Configurations/Base.xcconfig:
     10
    1112020-03-13  Alex Christensen  <achristensen@webkit.org>
    212
  • trunk/Tools/ContentExtensionTester/Configurations/Base.xcconfig

    r257755 r258478  
    6666GCC_WARN_UNUSED_FUNCTION = YES;
    6767GCC_WARN_UNUSED_VARIABLE = YES;
    68 WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough;
     68WARNING_CFLAGS = -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wvla;
    6969
    7070TARGET_MAC_OS_X_VERSION_MAJOR = $(TARGET_MAC_OS_X_VERSION_MAJOR$(MACOSX_DEPLOYMENT_TARGET:suffix:identifier));
  • trunk/Tools/lldb/lldbWebKitTester/Configurations/Base.xcconfig

    r257755 r258478  
    8383GCC_WARN_UNUSED_FUNCTION = YES;
    8484GCC_WARN_UNUSED_VARIABLE = NO;
    85 WARNING_CFLAGS = -Wcast-qual -Wchar-subscripts -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough;
     85WARNING_CFLAGS = -Wcast-qual -Wchar-subscripts -Wextra-tokens -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -Wvla;
    8686
    8787HEADER_SEARCH_PATHS = ${BUILT_PRODUCTS_DIR}/usr/local/include;
Note: See TracChangeset for help on using the changeset viewer.