X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/14957cd040308e3eeec43d26bae5d76da13fcd85..217a6308cd6a1dc049a0bb69263bd4c91f91c4d0:/runtime/ExceptionHelpers.h diff --git a/runtime/ExceptionHelpers.h b/runtime/ExceptionHelpers.h index 5f1ec6f..72a563d 100644 --- a/runtime/ExceptionHelpers.h +++ b/runtime/ExceptionHelpers.h @@ -29,34 +29,55 @@ #ifndef ExceptionHelpers_h #define ExceptionHelpers_h -#include "JSValue.h" +#include "JSObject.h" namespace JSC { - class CodeBlock; - class ExecState; - class Identifier; - class JSGlobalData; - class JSGlobalObject; - class JSNotAnObjectErrorStub; - class JSObject; - class Node; - struct Instruction; - - JSObject* createInterruptedExecutionException(JSGlobalData*); - JSObject* createTerminatedExecutionException(JSGlobalData*); - JSObject* createStackOverflowError(ExecState*); - JSObject* createStackOverflowError(JSGlobalObject*); - JSObject* createOutOfMemoryError(JSGlobalObject*); - JSObject* createUndefinedVariableError(ExecState*, const Identifier&); - JSObject* createNotAnObjectError(ExecState*, JSValue); - JSObject* createInvalidParamError(ExecState*, const char* op, JSValue); - JSObject* createNotAConstructorError(ExecState*, JSValue); - JSObject* createNotAFunctionError(ExecState*, JSValue); - JSObject* createErrorForInvalidGlobalAssignment(ExecState*, const UString&); - - JSObject* throwOutOfMemoryError(ExecState*); - JSObject* throwStackOverflowError(ExecState*); +JSObject* createTerminatedExecutionException(VM*); +bool isTerminatedExecutionException(JSObject*); +JS_EXPORT_PRIVATE bool isTerminatedExecutionException(JSValue); + +JS_EXPORT_PRIVATE JSObject* createStackOverflowError(ExecState*); +JSObject* createStackOverflowError(JSGlobalObject*); +JSObject* createOutOfMemoryError(JSGlobalObject*); +JSObject* createUndefinedVariableError(ExecState*, const Identifier&); +JSObject* createNotAnObjectError(ExecState*, JSValue); +JSObject* createInvalidParamError(ExecState*, const char* op, JSValue); +JSObject* createNotAConstructorError(ExecState*, JSValue); +JSObject* createNotAFunctionError(ExecState*, JSValue); +JSObject* createErrorForInvalidGlobalAssignment(ExecState*, const String&); + +JSObject* throwOutOfMemoryError(ExecState*); +JSObject* throwStackOverflowError(ExecState*); +JSObject* throwTerminatedExecutionException(ExecState*); + + +class TerminatedExecutionError : public JSNonFinalObject { +private: + TerminatedExecutionError(VM& vm) + : JSNonFinalObject(vm, vm.terminatedExecutionErrorStructure.get()) + { + } + + static JSValue defaultValue(const JSObject*, ExecState*, PreferredPrimitiveType); + +public: + typedef JSNonFinalObject Base; + + static TerminatedExecutionError* create(VM& vm) + { + TerminatedExecutionError* error = new (NotNull, allocateCell(vm.heap)) TerminatedExecutionError(vm); + error->finishCreation(vm); + return error; + } + + static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype) + { + return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info); + } + + static JS_EXPORTDATA const ClassInfo s_info; +}; } // namespace JSC