Ignore:
Timestamp:
Jun 4, 2010, 2:38:38 PM (15 years ago)
Author:
[email protected]
Message:

Bug 40187 - Change function signature of NativeConstructor to match NativeFunction

Reviewed by Oliver Hunt.

Mostly for consistency, but constructor & args arguments are redundant,
and this will help if we wish to be able to JIT calls to more constructors.

JavaScriptCore:

  • API/JSCallbackConstructor.cpp:

(JSC::constructJSCallback):

  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h:

(JSC::::construct):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::executeConstruct):

  • interpreter/Interpreter.h:
  • jit/JITStubs.cpp:

(JSC::DEFINE_STUB_FUNCTION):

  • runtime/ArrayConstructor.cpp:

(JSC::constructWithArrayConstructor):

  • runtime/BooleanConstructor.cpp:

(JSC::constructWithBooleanConstructor):

  • runtime/ConstructData.cpp:

(JSC::construct):

  • runtime/ConstructData.h:
  • runtime/DateConstructor.cpp:

(JSC::constructWithDateConstructor):

  • runtime/Error.cpp:

(JSC::constructNativeError):
(JSC::Error::create):

  • runtime/ErrorConstructor.cpp:

(JSC::constructWithErrorConstructor):

  • runtime/FunctionConstructor.cpp:

(JSC::constructWithFunctionConstructor):

  • runtime/NativeErrorConstructor.cpp:

(JSC::constructWithNativeErrorConstructor):

  • runtime/NativeErrorConstructor.h:

(JSC::NativeErrorConstructor::errorStructure):

  • runtime/NumberConstructor.cpp:

(JSC::constructWithNumberConstructor):

  • runtime/ObjectConstructor.cpp:

(JSC::constructWithObjectConstructor):

  • runtime/RegExpConstructor.cpp:

(JSC::constructWithRegExpConstructor):

  • runtime/StringConstructor.cpp:

(JSC::constructWithStringConstructor):

WebCore:

  • bindings/js/JSArrayBufferConstructor.cpp:

(WebCore::constructCanvasArrayBuffer):

  • bindings/js/JSAudioConstructor.cpp:

(WebCore::constructAudio):

  • bindings/js/JSEventSourceConstructor.cpp:

(WebCore::constructEventSource):

  • bindings/js/JSFloatArrayConstructor.cpp:

(WebCore::constructCanvasFloatArray):

  • bindings/js/JSImageConstructor.cpp:

(WebCore::constructImage):

  • bindings/js/JSInt16ArrayConstructor.cpp:

(WebCore::constructCanvasShortArray):

  • bindings/js/JSInt32ArrayConstructor.cpp:

(WebCore::constructCanvasIntArray):

  • bindings/js/JSInt8ArrayConstructor.cpp:

(WebCore::constructCanvasByteArray):

  • bindings/js/JSMessageChannelConstructor.cpp:

(WebCore::JSMessageChannelConstructor::construct):

  • bindings/js/JSMessageChannelConstructor.h:
  • bindings/js/JSOptionConstructor.cpp:

(WebCore::constructHTMLOptionElement):

  • bindings/js/JSSharedWorkerConstructor.cpp:

(WebCore::constructSharedWorker):

  • bindings/js/JSUint16ArrayConstructor.cpp:

(WebCore::constructCanvasUnsignedShortArray):

  • bindings/js/JSUint32ArrayConstructor.cpp:

(WebCore::constructCanvasUnsignedIntArray):

  • bindings/js/JSUint8ArrayConstructor.cpp:

(WebCore::constructCanvasUnsignedByteArray):

  • bindings/js/JSWebKitCSSMatrixConstructor.cpp:

(WebCore::constructWebKitCSSMatrix):

  • bindings/js/JSWebKitPointConstructor.cpp:

(WebCore::constructWebKitPoint):

  • bindings/js/JSWebSocketConstructor.cpp:

(WebCore::constructWebSocket):

  • bindings/js/JSWorkerConstructor.cpp:

(WebCore::constructWorker):

  • bindings/js/JSXMLHttpRequestConstructor.cpp:

(WebCore::constructXMLHttpRequest):

  • bindings/js/JSXSLTProcessorConstructor.cpp:

(WebCore::constructXSLTProcessor):

  • bindings/scripts/CodeGeneratorJS.pm:
  • bridge/runtime_object.cpp:

(JSC::Bindings::callRuntimeConstructor):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/runtime/Error.cpp

    r54464 r60708  
    3939const char* expressionEndOffsetPropertyName = "expressionEndOffset";
    4040
     41static JSObject* constructNativeError(ExecState* exec, const UString& message, NativeErrorConstructor* constructor, const char* name)
     42{
     43    ErrorInstance* object = new (exec) ErrorInstance(constructor->errorStructure());
     44    JSString* messageString = message.isEmpty() ? jsString(exec, name) : jsString(exec, message);
     45    object->putDirect(exec->propertyNames().message, messageString);
     46    return object;
     47}
     48
    4149JSObject* Error::create(ExecState* exec, ErrorType type, const UString& message, int lineNumber, intptr_t sourceID, const UString& sourceURL)
    4250{
    43     JSObject* constructor;
    44     const char* name;
     51    JSObject* error;
     52
    4553    switch (type) {
    4654        case EvalError:
    47             constructor = exec->lexicalGlobalObject()->evalErrorConstructor();
    48             name = "Evaluation error";
     55            error = constructNativeError(exec, message, exec->lexicalGlobalObject()->evalErrorConstructor(), "Evaluation error");
    4956            break;
    5057        case RangeError:
    51             constructor = exec->lexicalGlobalObject()->rangeErrorConstructor();
    52             name = "Range error";
     58            error = constructNativeError(exec, message, exec->lexicalGlobalObject()->rangeErrorConstructor(), "Range error");
    5359            break;
    5460        case ReferenceError:
    55             constructor = exec->lexicalGlobalObject()->referenceErrorConstructor();
    56             name = "Reference error";
     61            error = constructNativeError(exec, message, exec->lexicalGlobalObject()->referenceErrorConstructor(), "Reference error");
    5762            break;
    5863        case SyntaxError:
    59             constructor = exec->lexicalGlobalObject()->syntaxErrorConstructor();
    60             name = "Syntax error";
     64            error = constructNativeError(exec, message, exec->lexicalGlobalObject()->syntaxErrorConstructor(), "Syntax error");
    6165            break;
    6266        case TypeError:
    63             constructor = exec->lexicalGlobalObject()->typeErrorConstructor();
    64             name = "Type error";
     67            error = constructNativeError(exec, message, exec->lexicalGlobalObject()->typeErrorConstructor(), "Type error");
    6568            break;
    6669        case URIError:
    67             constructor = exec->lexicalGlobalObject()->URIErrorConstructor();
    68             name = "URI error";
     70            error = constructNativeError(exec, message, exec->lexicalGlobalObject()->URIErrorConstructor(), "URI error");
    6971            break;
    7072        default:
    71             constructor = exec->lexicalGlobalObject()->errorConstructor();
    72             name = "Error";
    73             break;
     73            JSObject* constructor = exec->lexicalGlobalObject()->errorConstructor();
     74            const char* name = "Error";
     75            MarkedArgumentBuffer args;
     76            if (message.isEmpty())
     77                args.append(jsString(exec, name));
     78            else
     79                args.append(jsString(exec, message));
     80            ConstructData constructData;
     81            ConstructType constructType = constructor->getConstructData(constructData);
     82            error = construct(exec, constructor, constructType, constructData, args);
    7483    }
    75 
    76     MarkedArgumentBuffer args;
    77     if (message.isEmpty())
    78         args.append(jsString(exec, name));
    79     else
    80         args.append(jsString(exec, message));
    81     ConstructData constructData;
    82     ConstructType constructType = constructor->getConstructData(constructData);
    83     JSObject* error = construct(exec, constructor, constructType, constructData, args);
    8484
    8585    if (lineNumber != -1)
Note: See TracChangeset for help on using the changeset viewer.