Ignore:
Timestamp:
Jan 4, 2010, 11:18:31 AM (15 years ago)
Author:
[email protected]
Message:

https://bugs.webkit.org/show_bug.cgi?id=33158
Refactor JSC API entry/exit to use RAII instead of copy/pasting code.
Make it easier to change set of actions taken when passing across the API boundary.

Reviewed by Sam "Shimmey Shimmey" Weinig.

  • API/APIShims.h: Added.

(JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
(JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
(JSC::APIEntryShim::APIEntryShim):
(JSC::APICallbackShim::APICallbackShim):
(JSC::APICallbackShim::~APICallbackShim):

  • API/JSBase.cpp:

(JSEvaluateScript):
(JSCheckScriptSyntax):
(JSGarbageCollect):
(JSReportExtraMemoryCost):

  • API/JSCallbackConstructor.cpp:

(JSC::constructJSCallback):

  • API/JSCallbackFunction.cpp:

(JSC::JSCallbackFunction::call):

  • API/JSCallbackObjectFunctions.h:

(JSC::::init):
(JSC::::getOwnPropertySlot):
(JSC::::put):
(JSC::::deleteProperty):
(JSC::::construct):
(JSC::::hasInstance):
(JSC::::call):
(JSC::::getOwnPropertyNames):
(JSC::::toNumber):
(JSC::::toString):
(JSC::::staticValueGetter):
(JSC::::callbackGetter):

  • API/JSContextRef.cpp:
  • API/JSObjectRef.cpp:

(JSObjectMake):
(JSObjectMakeFunctionWithCallback):
(JSObjectMakeConstructor):
(JSObjectMakeFunction):
(JSObjectMakeArray):
(JSObjectMakeDate):
(JSObjectMakeError):
(JSObjectMakeRegExp):
(JSObjectGetPrototype):
(JSObjectSetPrototype):
(JSObjectHasProperty):
(JSObjectGetProperty):
(JSObjectSetProperty):
(JSObjectGetPropertyAtIndex):
(JSObjectSetPropertyAtIndex):
(JSObjectDeleteProperty):
(JSObjectCallAsFunction):
(JSObjectCallAsConstructor):
(JSObjectCopyPropertyNames):
(JSPropertyNameArrayRelease):
(JSPropertyNameAccumulatorAddName):

  • API/JSValueRef.cpp:

(JSValueGetType):
(JSValueIsUndefined):
(JSValueIsNull):
(JSValueIsBoolean):
(JSValueIsNumber):
(JSValueIsString):
(JSValueIsObject):
(JSValueIsObjectOfClass):
(JSValueIsEqual):
(JSValueIsStrictEqual):
(JSValueIsInstanceOfConstructor):
(JSValueMakeUndefined):
(JSValueMakeNull):
(JSValueMakeBoolean):
(JSValueMakeNumber):
(JSValueMakeString):
(JSValueToBoolean):
(JSValueToNumber):
(JSValueToStringCopy):
(JSValueToObject):
(JSValueProtect):
(JSValueUnprotect):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/API/JSValueRef.cpp

    r51801 r52751  
    2929#include <wtf/Platform.h>
    3030#include "APICast.h"
     31#include "APIShims.h"
    3132#include "JSCallbackObject.h"
    3233
     
    4243#include <algorithm> // for std::min
    4344
    44 JSType JSValueGetType(JSContextRef ctx, JSValueRef value)
    45 {
    46     JSC::ExecState* exec = toJS(ctx);
    47     exec->globalData().heap.registerThread();
    48     JSC::JSLock lock(exec);
    49 
    50     JSC::JSValue jsValue = toJS(exec, value);
     45using namespace JSC;
     46
     47::JSType JSValueGetType(JSContextRef ctx, JSValueRef value)
     48{
     49    ExecState* exec = toJS(ctx);
     50    APIEntryShim entryShim(exec);
     51
     52    JSValue jsValue = toJS(exec, value);
    5153
    5254    if (jsValue.isUndefined())
     
    6466}
    6567
    66 using namespace JSC; // placed here to avoid conflict between JSC::JSType and JSType, above.
    67 
    6868bool JSValueIsUndefined(JSContextRef ctx, JSValueRef value)
    6969{
    7070    ExecState* exec = toJS(ctx);
    71     exec->globalData().heap.registerThread();
    72     JSLock lock(exec);
     71    APIEntryShim entryShim(exec);
    7372
    7473    JSValue jsValue = toJS(exec, value);
     
    7978{
    8079    ExecState* exec = toJS(ctx);
    81     exec->globalData().heap.registerThread();
    82     JSLock lock(exec);
     80    APIEntryShim entryShim(exec);
    8381
    8482    JSValue jsValue = toJS(exec, value);
     
    8987{
    9088    ExecState* exec = toJS(ctx);
    91     exec->globalData().heap.registerThread();
    92     JSLock lock(exec);
     89    APIEntryShim entryShim(exec);
    9390
    9491    JSValue jsValue = toJS(exec, value);
     
    9996{
    10097    ExecState* exec = toJS(ctx);
    101     exec->globalData().heap.registerThread();
    102     JSLock lock(exec);
     98    APIEntryShim entryShim(exec);
    10399
    104100    JSValue jsValue = toJS(exec, value);
     
    109105{
    110106    ExecState* exec = toJS(ctx);
    111     exec->globalData().heap.registerThread();
    112     JSLock lock(exec);
     107    APIEntryShim entryShim(exec);
    113108
    114109    JSValue jsValue = toJS(exec, value);
     
    119114{
    120115    ExecState* exec = toJS(ctx);
    121     exec->globalData().heap.registerThread();
    122     JSLock lock(exec);
     116    APIEntryShim entryShim(exec);
    123117
    124118    JSValue jsValue = toJS(exec, value);
     
    129123{
    130124    ExecState* exec = toJS(ctx);
    131     exec->globalData().heap.registerThread();
    132     JSLock lock(exec);
     125    APIEntryShim entryShim(exec);
    133126
    134127    JSValue jsValue = toJS(exec, value);
     
    146139{
    147140    ExecState* exec = toJS(ctx);
    148     exec->globalData().heap.registerThread();
    149     JSLock lock(exec);
     141    APIEntryShim entryShim(exec);
    150142
    151143    JSValue jsA = toJS(exec, a);
     
    164156{
    165157    ExecState* exec = toJS(ctx);
    166     exec->globalData().heap.registerThread();
    167     JSLock lock(exec);
     158    APIEntryShim entryShim(exec);
    168159
    169160    JSValue jsA = toJS(exec, a);
     
    176167{
    177168    ExecState* exec = toJS(ctx);
    178     exec->globalData().heap.registerThread();
    179     JSLock lock(exec);
     169    APIEntryShim entryShim(exec);
    180170
    181171    JSValue jsValue = toJS(exec, value);
     
    196186{
    197187    ExecState* exec = toJS(ctx);
    198     exec->globalData().heap.registerThread();
    199     JSLock lock(exec);
     188    APIEntryShim entryShim(exec);
    200189
    201190    return toRef(exec, jsUndefined());
     
    205194{
    206195    ExecState* exec = toJS(ctx);
    207     exec->globalData().heap.registerThread();
    208     JSLock lock(exec);
     196    APIEntryShim entryShim(exec);
    209197
    210198    return toRef(exec, jsNull());
     
    214202{
    215203    ExecState* exec = toJS(ctx);
    216     exec->globalData().heap.registerThread();
    217     JSLock lock(exec);
     204    APIEntryShim entryShim(exec);
    218205
    219206    return toRef(exec, jsBoolean(value));
     
    223210{
    224211    ExecState* exec = toJS(ctx);
    225     exec->globalData().heap.registerThread();
    226     JSLock lock(exec);
     212    APIEntryShim entryShim(exec);
    227213
    228214    return toRef(exec, jsNumber(exec, value));
     
    232218{
    233219    ExecState* exec = toJS(ctx);
    234     exec->globalData().heap.registerThread();
    235     JSLock lock(exec);
     220    APIEntryShim entryShim(exec);
    236221
    237222    return toRef(exec, jsString(exec, string->ustring()));
     
    241226{
    242227    ExecState* exec = toJS(ctx);
    243     exec->globalData().heap.registerThread();
    244     JSLock lock(exec);
     228    APIEntryShim entryShim(exec);
    245229
    246230    JSValue jsValue = toJS(exec, value);
     
    251235{
    252236    ExecState* exec = toJS(ctx);
    253     exec->globalData().heap.registerThread();
    254     JSLock lock(exec);
     237    APIEntryShim entryShim(exec);
    255238
    256239    JSValue jsValue = toJS(exec, value);
     
    269252{
    270253    ExecState* exec = toJS(ctx);
    271     exec->globalData().heap.registerThread();
    272     JSLock lock(exec);
     254    APIEntryShim entryShim(exec);
    273255
    274256    JSValue jsValue = toJS(exec, value);
     
    287269{
    288270    ExecState* exec = toJS(ctx);
    289     exec->globalData().heap.registerThread();
    290     JSLock lock(exec);
     271    APIEntryShim entryShim(exec);
    291272
    292273    JSValue jsValue = toJS(exec, value);
     
    305286{
    306287    ExecState* exec = toJS(ctx);
    307     exec->globalData().heap.registerThread();
    308     JSLock lock(exec);
     288    APIEntryShim entryShim(exec);
    309289
    310290    JSValue jsValue = toJSForGC(exec, value);
     
    315295{
    316296    ExecState* exec = toJS(ctx);
    317     exec->globalData().heap.registerThread();
    318     JSLock lock(exec);
     297    APIEntryShim entryShim(exec);
    319298
    320299    JSValue jsValue = toJSForGC(exec, value);
Note: See TracChangeset for help on using the changeset viewer.