Changeset 260735 in webkit


Ignore:
Timestamp:
Apr 26, 2020 5:37:15 PM (4 years ago)
Author:
Ross Kirsling
Message:

[JSC] Clearly distinguish isConstructor from getConstructData
https://bugs.webkit.org/show_bug.cgi?id=211053

Reviewed by Sam Weinig.

Follow-up to r260722. Remove the isConstructor overload that duplicates getConstructData
and clearly distinguish the usage of these two functions.

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:
  • runtime/JSCell.h:
  • runtime/JSCellInlines.h:

(JSC::JSCell::isConstructor):
Remove isConstructor overload.

  • runtime/JSBoundFunction.cpp:

(JSC::JSBoundFunction::create):
Don't use getConstructData if you don't need ConstructData.

  • runtime/ReflectObject.cpp:

(JSC::reflectObjectConstruct):
Use getConstructData if you need ConstructData.

  • API/JSObjectRef.cpp:

(JSObjectIsFunction):
Use isFunction (leftover spot from last patch).

Location:
trunk/Source/JavaScriptCore
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/API/JSObjectRef.cpp

    r260343 r260735  
    706706    VM& vm = globalObject->vm();
    707707    JSLockHolder locker(vm);
    708     CallData callData;
    709708    JSCell* cell = toJS(object);
    710     return cell->methodTable(vm)->getCallData(cell, callData) != CallType::None;
     709    return cell->isFunction(vm);
    711710}
    712711
  • trunk/Source/JavaScriptCore/ChangeLog

    r260733 r260735  
     12020-04-26  Ross Kirsling  <ross.kirsling@sony.com>
     2
     3        [JSC] Clearly distinguish isConstructor from getConstructData
     4        https://bugs.webkit.org/show_bug.cgi?id=211053
     5
     6        Reviewed by Sam Weinig.
     7
     8        Follow-up to r260722. Remove the isConstructor overload that duplicates getConstructData
     9        and clearly distinguish the usage of these two functions.
     10
     11        * runtime/JSCJSValue.h:
     12        * runtime/JSCJSValueInlines.h:
     13        * runtime/JSCell.h:
     14        * runtime/JSCellInlines.h:
     15        (JSC::JSCell::isConstructor):
     16        Remove isConstructor overload.
     17
     18        * runtime/JSBoundFunction.cpp:
     19        (JSC::JSBoundFunction::create):
     20        Don't use getConstructData if you don't need ConstructData.
     21
     22        * runtime/ReflectObject.cpp:
     23        (JSC::reflectObjectConstruct):
     24        Use getConstructData if you need ConstructData.
     25
     26        * API/JSObjectRef.cpp:
     27        (JSObjectIsFunction):
     28        Use isFunction (leftover spot from last patch).
     29
    1302020-04-26  Alexey Shvayka  <shvaikalesh@gmail.com>
    231
  • trunk/Source/JavaScriptCore/runtime/JSBoundFunction.cpp

    r258410 r260735  
    206206
    207207    bool isJSFunction = getJSFunction(targetFunction);
    208     ConstructData constructData;
    209     ConstructType constructType = JSC::getConstructData(vm, targetFunction, constructData);
    210     bool canConstruct = constructType != ConstructType::None;
     208    bool canConstruct = targetFunction->isConstructor(vm);
    211209
    212210    NativeExecutable* executable = vm.getBoundFunction(isJSFunction, canConstruct);
  • trunk/Source/JavaScriptCore/runtime/JSCJSValue.h

    r260722 r260735  
    236236    bool isFunction(VM&) const;
    237237    bool isConstructor(VM&) const;
    238     bool isConstructor(VM&, ConstructType&, ConstructData&) const;
    239238    bool isUndefined() const;
    240239    bool isNull() const;
  • trunk/Source/JavaScriptCore/runtime/JSCJSValueInlines.h

    r260722 r260735  
    888888        return false;
    889889    return asCell()->isConstructor(vm);
    890 }
    891 
    892 inline bool JSValue::isConstructor(VM& vm, ConstructType& constructType, ConstructData& constructData) const
    893 {
    894     if (!isCell())
    895         return false;
    896     return asCell()->isConstructor(vm, constructType, constructData);
    897890}
    898891
  • trunk/Source/JavaScriptCore/runtime/JSCell.h

    r260722 r260735  
    110110    bool isFunction(VM&);
    111111    bool isConstructor(VM&);
    112     bool isConstructor(VM&, ConstructType&, ConstructData&);
    113112    bool inherits(VM&, const ClassInfo*) const;
    114113    template<typename Target> bool inherits(VM&) const;
  • trunk/Source/JavaScriptCore/runtime/JSCellInlines.h

    r260722 r260735  
    243243inline bool JSCell::isConstructor(VM& vm)
    244244{
    245     ConstructType constructType;
    246     ConstructData constructData;
    247     return isConstructor(vm, constructType, constructData);
    248 }
    249 
    250 inline bool JSCell::isConstructor(VM& vm, ConstructType& constructType, ConstructData& constructData)
    251 {
    252     constructType = methodTable(vm)->getConstructData(this, constructData);
    253     return constructType != ConstructType::None;
     245    ConstructData ignoredConstructData;
     246    return methodTable(vm)->getConstructData(this, ignoredConstructData) != ConstructType::None;
    254247}
    255248
  • trunk/Source/JavaScriptCore/runtime/ReflectObject.cpp

    r251425 r260735  
    9898
    9999    ConstructData constructData;
    100     ConstructType constructType;
    101     if (!target.isConstructor(vm, constructType, constructData))
     100    ConstructType constructType = getConstructData(vm, target, constructData);
     101    if (constructType == ConstructType::None)
    102102        return JSValue::encode(throwTypeError(globalObject, scope, "Reflect.construct requires the first argument be a constructor"_s));
    103103
Note: See TracChangeset for help on using the changeset viewer.