Changeset 60708 in webkit for trunk/JavaScriptCore/runtime/Error.cpp
- Timestamp:
- Jun 4, 2010, 2:38:38 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/Error.cpp
r54464 r60708 39 39 const char* expressionEndOffsetPropertyName = "expressionEndOffset"; 40 40 41 static 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 41 49 JSObject* Error::create(ExecState* exec, ErrorType type, const UString& message, int lineNumber, intptr_t sourceID, const UString& sourceURL) 42 50 { 43 JSObject* constructor;44 const char* name; 51 JSObject* error; 52 45 53 switch (type) { 46 54 case EvalError: 47 constructor = exec->lexicalGlobalObject()->evalErrorConstructor(); 48 name = "Evaluation error"; 55 error = constructNativeError(exec, message, exec->lexicalGlobalObject()->evalErrorConstructor(), "Evaluation error"); 49 56 break; 50 57 case RangeError: 51 constructor = exec->lexicalGlobalObject()->rangeErrorConstructor(); 52 name = "Range error"; 58 error = constructNativeError(exec, message, exec->lexicalGlobalObject()->rangeErrorConstructor(), "Range error"); 53 59 break; 54 60 case ReferenceError: 55 constructor = exec->lexicalGlobalObject()->referenceErrorConstructor(); 56 name = "Reference error"; 61 error = constructNativeError(exec, message, exec->lexicalGlobalObject()->referenceErrorConstructor(), "Reference error"); 57 62 break; 58 63 case SyntaxError: 59 constructor = exec->lexicalGlobalObject()->syntaxErrorConstructor(); 60 name = "Syntax error"; 64 error = constructNativeError(exec, message, exec->lexicalGlobalObject()->syntaxErrorConstructor(), "Syntax error"); 61 65 break; 62 66 case TypeError: 63 constructor = exec->lexicalGlobalObject()->typeErrorConstructor(); 64 name = "Type error"; 67 error = constructNativeError(exec, message, exec->lexicalGlobalObject()->typeErrorConstructor(), "Type error"); 65 68 break; 66 69 case URIError: 67 constructor = exec->lexicalGlobalObject()->URIErrorConstructor(); 68 name = "URI error"; 70 error = constructNativeError(exec, message, exec->lexicalGlobalObject()->URIErrorConstructor(), "URI error"); 69 71 break; 70 72 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); 74 83 } 75 76 MarkedArgumentBuffer args;77 if (message.isEmpty())78 args.append(jsString(exec, name));79 else80 args.append(jsString(exec, message));81 ConstructData constructData;82 ConstructType constructType = constructor->getConstructData(constructData);83 JSObject* error = construct(exec, constructor, constructType, constructData, args);84 84 85 85 if (lineNumber != -1)
Note:
See TracChangeset
for help on using the changeset viewer.