Changeset 13833 in webkit for trunk/JavaScriptCore/kjs
- Timestamp:
- Apr 11, 2006, 10:31:37 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/object_object.cpp
r13821 r13833 170 170 171 171 // ECMA 15.2.2 172 JSObject *ObjectObjectImp::construct(ExecState *exec, const List &args)172 JSObject* ObjectObjectImp::construct(ExecState* exec, const List& args) 173 173 { 174 // if no arguments have been passed ... 175 if (args.isEmpty()) { 176 JSObject *proto = exec->lexicalInterpreter()->builtinObjectPrototype(); 177 JSObject *result(new JSObject(proto)); 178 return result; 179 } 180 181 JSValue *arg = *(args.begin()); 182 if (JSObject *obj = arg->getObject()) 183 return obj; 184 174 JSValue* arg = args[0]; 185 175 switch (arg->type()) { 186 176 case StringType: 187 177 case BooleanType: 188 178 case NumberType: 189 return arg->toObject(exec); 190 default: 191 assert(!"unhandled switch case in ObjectConstructor"); 179 case ObjectType: 180 return arg->toObject(exec); 192 181 case NullType: 193 182 case UndefinedType: 194 return new JSObject(exec->lexicalInterpreter()->builtinObjectPrototype()); 183 return new JSObject(exec->lexicalInterpreter()->builtinObjectPrototype()); 184 default: 185 ASSERT_NOT_REACHED(); 186 return 0; 195 187 } 196 188 } 197 189 198 JSValue *ObjectObjectImp::callAsFunction(ExecState *exec, JSObject */*thisObj*/, const List &args)190 JSValue* ObjectObjectImp::callAsFunction(ExecState* exec, JSObject* /*thisObj*/, const List &args) 199 191 { 200 JSValue *result; 201 202 List argList; 203 // Construct a new Object 204 if (args.isEmpty()) { 205 result = construct(exec,argList); 206 } else { 207 JSValue *arg = args[0]; 208 if (arg->isUndefinedOrNull()) { 209 argList.append(arg); 210 result = construct(exec,argList); 211 } else 212 result = arg->toObject(exec); 213 } 214 return result; 192 return construct(exec, args); 215 193 } 216 194
Note:
See TracChangeset
for help on using the changeset viewer.