diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
commit | 32761a6cee1d0dee366b885b7b9c777e67885688 (patch) | |
tree | d6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/runtime/Error.h | |
parent | a4e969f4965059196ca948db781e52f7cfebf19e (diff) | |
download | WebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz |
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/JavaScriptCore/runtime/Error.h')
-rw-r--r-- | Source/JavaScriptCore/runtime/Error.h | 204 |
1 files changed, 95 insertions, 109 deletions
diff --git a/Source/JavaScriptCore/runtime/Error.h b/Source/JavaScriptCore/runtime/Error.h index 032986981..bec5dd756 100644 --- a/Source/JavaScriptCore/runtime/Error.h +++ b/Source/JavaScriptCore/runtime/Error.h @@ -23,122 +23,108 @@ #ifndef Error_h #define Error_h -#include "ErrorInstance.h" #include "InternalFunction.h" #include "Interpreter.h" #include "JSObject.h" #include <stdint.h> - namespace JSC { -class ExecState; -class VM; -class JSGlobalObject; -class JSObject; -class SourceCode; -class Structure; - -// ExecState wrappers. -JSObject* createError(ExecState*, const String&, ErrorInstance::SourceAppender); -JSObject* createEvalError(ExecState*, const String&, ErrorInstance::SourceAppender); -JSObject* createRangeError(ExecState*, const String&, ErrorInstance::SourceAppender); -JSObject* createReferenceError(ExecState*, const String&, ErrorInstance::SourceAppender); -JSObject* createSyntaxError(ExecState*, const String&, ErrorInstance::SourceAppender); -JSObject* createTypeError(ExecState*, const String&, ErrorInstance::SourceAppender, RuntimeType); -JSObject* createNotEnoughArgumentsError(ExecState*, ErrorInstance::SourceAppender); -JSObject* createURIError(ExecState*, const String&, ErrorInstance::SourceAppender); -JSObject* createOutOfMemoryError(ExecState*, ErrorInstance::SourceAppender); - - -JS_EXPORT_PRIVATE JSObject* createError(ExecState*, const String&); -JS_EXPORT_PRIVATE JSObject* createEvalError(ExecState*, const String&); -JS_EXPORT_PRIVATE JSObject* createRangeError(ExecState*, const String&); -JS_EXPORT_PRIVATE JSObject* createReferenceError(ExecState*, const String&); -JS_EXPORT_PRIVATE JSObject* createSyntaxError(ExecState*, const String&); -JS_EXPORT_PRIVATE JSObject* createTypeError(ExecState*); -JS_EXPORT_PRIVATE JSObject* createTypeError(ExecState*, const String&); -JS_EXPORT_PRIVATE JSObject* createNotEnoughArgumentsError(ExecState*); -JS_EXPORT_PRIVATE JSObject* createURIError(ExecState*, const String&); -JS_EXPORT_PRIVATE JSObject* createOutOfMemoryError(ExecState*); - - -bool addErrorInfoAndGetBytecodeOffset(ExecState*, VM&, JSObject*, bool, CallFrame*&, unsigned&); - -bool hasErrorInfo(ExecState*, JSObject* error); -JS_EXPORT_PRIVATE void addErrorInfo(ExecState*, JSObject*, bool); -JSObject* addErrorInfo(ExecState*, JSObject* error, int line, const SourceCode&); - -// Methods to throw Errors. - -// Convenience wrappers, create an throw an exception with a default message. -JS_EXPORT_PRIVATE JSObject* throwConstructorCannotBeCalledAsFunctionTypeError(ExecState*, const char* constructorName); -JS_EXPORT_PRIVATE JSObject* throwTypeError(ExecState*); -JS_EXPORT_PRIVATE JSObject* throwSyntaxError(ExecState*); -JS_EXPORT_PRIVATE JSObject* throwSyntaxError(ExecState*, const String& errorMessage); -inline JSObject* throwRangeError(ExecState* state, const String& errorMessage) { return state->vm().throwException(state, createRangeError(state, errorMessage)); } - -// Convenience wrappers, wrap result as an EncodedJSValue. -inline void throwVMError(ExecState* exec, Exception* exception) { exec->vm().throwException(exec, exception); } -inline EncodedJSValue throwVMError(ExecState* exec, JSValue error) { return JSValue::encode(exec->vm().throwException(exec, error)); } -inline EncodedJSValue throwVMTypeError(ExecState* exec) { return JSValue::encode(throwTypeError(exec)); } -inline EncodedJSValue throwVMTypeError(ExecState* exec, const String& errorMessage) { return JSValue::encode(throwTypeError(exec, errorMessage)); } -inline EncodedJSValue throwVMRangeError(ExecState* state, const String& errorMessage) { return JSValue::encode(throwRangeError(state, errorMessage)); } - -class StrictModeTypeErrorFunction : public InternalFunction { -private: - StrictModeTypeErrorFunction(VM& vm, Structure* structure, const String& message) - : InternalFunction(vm, structure) - , m_message(message) - { - } - - static void destroy(JSCell*); - -public: - typedef InternalFunction Base; - - static StrictModeTypeErrorFunction* create(VM& vm, Structure* structure, const String& message) - { - StrictModeTypeErrorFunction* function = new (NotNull, allocateCell<StrictModeTypeErrorFunction>(vm.heap)) StrictModeTypeErrorFunction(vm, structure, message); - function->finishCreation(vm, String()); - return function; - } - - static EncodedJSValue JSC_HOST_CALL constructThrowTypeError(ExecState* exec) - { - throwTypeError(exec, static_cast<StrictModeTypeErrorFunction*>(exec->callee())->m_message); - return JSValue::encode(jsNull()); - } - - static ConstructType getConstructData(JSCell*, ConstructData& constructData) - { - constructData.native.function = constructThrowTypeError; - return ConstructTypeHost; - } - - static EncodedJSValue JSC_HOST_CALL callThrowTypeError(ExecState* exec) - { - throwTypeError(exec, static_cast<StrictModeTypeErrorFunction*>(exec->callee())->m_message); - return JSValue::encode(jsNull()); - } - - static CallType getCallData(JSCell*, CallData& callData) - { - callData.native.function = callThrowTypeError; - return CallTypeHost; - } - - DECLARE_INFO; - - static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype) - { - return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), info()); - } - -private: - String m_message; -}; + class ExecState; + class VM; + class JSGlobalObject; + class JSObject; + class SourceCode; + class Structure; + + // Methods to create a range of internal errors. + JSObject* createError(JSGlobalObject*, const String&); + JSObject* createEvalError(JSGlobalObject*, const String&); + JSObject* createRangeError(JSGlobalObject*, const String&); + JSObject* createReferenceError(JSGlobalObject*, const String&); + JSObject* createSyntaxError(JSGlobalObject*, const String&); + JSObject* createTypeError(JSGlobalObject*, const String&); + JSObject* createNotEnoughArgumentsError(JSGlobalObject*); + JSObject* createURIError(JSGlobalObject*, const String&); + // ExecState wrappers. + JS_EXPORT_PRIVATE JSObject* createError(ExecState*, const String&); + JSObject* createEvalError(ExecState*, const String&); + JS_EXPORT_PRIVATE JSObject* createRangeError(ExecState*, const String&); + JS_EXPORT_PRIVATE JSObject* createReferenceError(ExecState*, const String&); + JS_EXPORT_PRIVATE JSObject* createSyntaxError(ExecState*, const String&); + JS_EXPORT_PRIVATE JSObject* createTypeError(ExecState*, const String&); + JS_EXPORT_PRIVATE JSObject* createNotEnoughArgumentsError(ExecState*); + JSObject* createURIError(ExecState*, const String&); + + // Methods to add + bool hasErrorInfo(ExecState*, JSObject* error); + // ExecState wrappers. + JSObject* addErrorInfo(ExecState*, JSObject* error, int line, const SourceCode&); + + // Methods to throw Errors. + + // Convenience wrappers, create an throw an exception with a default message. + JS_EXPORT_PRIVATE JSObject* throwTypeError(ExecState*); + JS_EXPORT_PRIVATE JSObject* throwSyntaxError(ExecState*); + + // Convenience wrappers, wrap result as an EncodedJSValue. + inline EncodedJSValue throwVMError(ExecState* exec, JSValue error) { return JSValue::encode(exec->vm().throwException(exec, error)); } + inline EncodedJSValue throwVMTypeError(ExecState* exec) { return JSValue::encode(throwTypeError(exec)); } + + class StrictModeTypeErrorFunction : public InternalFunction { + private: + StrictModeTypeErrorFunction(VM& vm, Structure* structure, const String& message) + : InternalFunction(vm, structure) + , m_message(message) + { + } + + static void destroy(JSCell*); + + public: + typedef InternalFunction Base; + + static StrictModeTypeErrorFunction* create(VM& vm, Structure* structure, const String& message) + { + StrictModeTypeErrorFunction* function = new (NotNull, allocateCell<StrictModeTypeErrorFunction>(vm.heap)) StrictModeTypeErrorFunction(vm, structure, message); + function->finishCreation(vm, String()); + return function; + } + + static EncodedJSValue JSC_HOST_CALL constructThrowTypeError(ExecState* exec) + { + throwTypeError(exec, static_cast<StrictModeTypeErrorFunction*>(exec->callee())->m_message); + return JSValue::encode(jsNull()); + } + + static ConstructType getConstructData(JSCell*, ConstructData& constructData) + { + constructData.native.function = constructThrowTypeError; + return ConstructTypeHost; + } + + static EncodedJSValue JSC_HOST_CALL callThrowTypeError(ExecState* exec) + { + throwTypeError(exec, static_cast<StrictModeTypeErrorFunction*>(exec->callee())->m_message); + return JSValue::encode(jsNull()); + } + + static CallType getCallData(JSCell*, CallData& callData) + { + callData.native.function = callThrowTypeError; + return CallTypeHost; + } + + DECLARE_INFO; + + static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype) + { + return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), info()); + } + + private: + String m_message; + }; } // namespace JSC |