Changeset 37747 in webkit for trunk/JavaScriptCore/kjs/JSGlobalObject.cpp
- Timestamp:
- Oct 20, 2008, 2:27:44 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/JSGlobalObject.cpp
r37684 r37747 201 201 // Prototypes 202 202 203 d()->functionPrototype = new (exec) FunctionPrototype(exec); 203 d()->functionPrototype = new (exec) FunctionPrototype(exec, FunctionPrototype::createStructureID(jsNull())); // The real prototype will be set once ObjectPrototype is created. 204 d()->prototypeFunctionStructure = PrototypeFunction::createStructureID(d()->functionPrototype); 205 d()->functionPrototype->addFunctionProperties(exec, d()->prototypeFunctionStructure.get()); 206 d()->objectPrototype = new (exec) ObjectPrototype(exec, ObjectPrototype::createStructureID(jsNull()), d()->prototypeFunctionStructure.get()); 207 d()->functionPrototype->structureID()->setPrototypeWithoutTransition(d()->objectPrototype); 208 209 d()->emptyObjectStructure = d()->objectPrototype->inheritorID(); 210 204 211 d()->functionStructure = JSFunction::createStructureID(d()->functionPrototype); 205 212 d()->callbackFunctionStructure = JSCallbackFunction::createStructureID(d()->functionPrototype); 206 d()->prototypeFunctionStructure = PrototypeFunction::createStructureID(d()->functionPrototype);207 d()->functionPrototype->addFunctionProperties(exec, d()->prototypeFunctionStructure.get());208 209 d()->objectPrototype = new (exec) ObjectPrototype(exec, ObjectPrototype::createStructureID(jsNull()), d()->prototypeFunctionStructure.get());210 d()->emptyObjectStructure = d()->objectPrototype->inheritorID();211 d()->functionPrototype->setPrototype(d()->objectPrototype);212 213 d()->argumentsStructure = Arguments::createStructureID(d()->objectPrototype); 213 214 d()->callbackConstructorStructure = JSCallbackConstructor::createStructureID(d()->objectPrototype); 214 215 d()->callbackObjectStructure = JSCallbackObject<JSObject>::createStructureID(d()->objectPrototype); 216 215 217 d()->arrayPrototype = new (exec) ArrayPrototype(ArrayPrototype::createStructureID(d()->objectPrototype)); 216 218 d()->arrayStructure = JSArray::createStructureID(d()->arrayPrototype); 217 219 d()->regExpMatchesArrayStructure = RegExpMatchesArray::createStructureID(d()->arrayPrototype); 220 218 221 d()->stringPrototype = new (exec) StringPrototype(exec, StringPrototype::createStructureID(d()->objectPrototype)); 219 222 d()->stringObjectStructure = StringObject::createStructureID(d()->stringPrototype); 223 220 224 d()->booleanPrototype = new (exec) BooleanPrototype(exec, BooleanPrototype::createStructureID(d()->objectPrototype), d()->prototypeFunctionStructure.get()); 221 225 d()->booleanObjectStructure = BooleanObject::createStructureID(d()->booleanPrototype); 226 222 227 d()->numberPrototype = new (exec) NumberPrototype(exec, NumberPrototype::createStructureID(d()->objectPrototype), d()->prototypeFunctionStructure.get()); 223 228 d()->numberObjectStructure = NumberObject::createStructureID(d()->numberPrototype); 229 224 230 d()->datePrototype = new (exec) DatePrototype(exec, DatePrototype::createStructureID(d()->objectPrototype)); 225 231 d()->dateStructure = DateInstance::createStructureID(d()->datePrototype); 232 226 233 d()->regExpPrototype = new (exec) RegExpPrototype(exec, RegExpPrototype::createStructureID(d()->objectPrototype), d()->prototypeFunctionStructure.get()); 227 234 d()->regExpStructure = RegExpObject::createStructureID(d()->regExpPrototype); 235 228 236 ErrorPrototype* errorPrototype = new (exec) ErrorPrototype(exec, ErrorPrototype::createStructureID(d()->objectPrototype), d()->prototypeFunctionStructure.get()); 229 237 d()->errorStructure = ErrorInstance::createStructureID(errorPrototype); … … 261 269 d()->URIErrorConstructor = new (exec) NativeErrorConstructor(exec, nativeErrorStructure, URIErrorPrototype); 262 270 263 d()->functionPrototype->putDirect(exec->propertyNames().constructor, functionConstructor, DontEnum);264 265 271 d()->objectPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, objectConstructor, DontEnum); 266 267 d()-> functionPrototype->putDirect(exec->propertyNames().constructor, functionConstructor, DontEnum);268 d()-> arrayPrototype->putDirect(exec->propertyNames().constructor, arrayConstructor, DontEnum);269 d()-> booleanPrototype->putDirect(exec->propertyNames().constructor, booleanConstructor, DontEnum);270 d()-> stringPrototype->putDirect(exec->propertyNames().constructor, stringConstructor, DontEnum);271 d()-> numberPrototype->putDirect(exec->propertyNames().constructor, numberConstructor, DontEnum);272 d()-> datePrototype->putDirect(exec->propertyNames().constructor, dateConstructor, DontEnum);273 d()->regExpPrototype->putDirect(exec->propertyNames().constructor, d()->regExpConstructor, DontEnum);274 errorPrototype->putDirect(exec->propertyNames().constructor, d()->errorConstructor, DontEnum); 272 d()->functionPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, functionConstructor, DontEnum); 273 d()->arrayPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, arrayConstructor, DontEnum); 274 d()->booleanPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, booleanConstructor, DontEnum); 275 d()->stringPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, stringConstructor, DontEnum); 276 d()->numberPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, numberConstructor, DontEnum); 277 d()->datePrototype->putDirectWithoutTransition(exec->propertyNames().constructor, dateConstructor, DontEnum); 278 d()->regExpPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, d()->regExpConstructor, DontEnum); 279 errorPrototype->putDirectWithoutTransition(exec->propertyNames().constructor, d()->errorConstructor, DontEnum); 280 275 281 evalErrorPrototype->putDirect(exec->propertyNames().constructor, d()->evalErrorConstructor, DontEnum); 276 282 rangeErrorPrototype->putDirect(exec->propertyNames().constructor, d()->rangeErrorConstructor, DontEnum); … … 284 290 // FIXME: These properties could be handled by a static hash table. 285 291 286 putDirect (Identifier(exec, "Object"), objectConstructor, DontEnum);287 putDirect (Identifier(exec, "Function"), functionConstructor, DontEnum);288 putDirect (Identifier(exec, "Array"), arrayConstructor, DontEnum);289 putDirect (Identifier(exec, "Boolean"), booleanConstructor, DontEnum);290 putDirect (Identifier(exec, "String"), stringConstructor, DontEnum);291 putDirect (Identifier(exec, "Number"), numberConstructor, DontEnum);292 putDirect (Identifier(exec, "Date"), dateConstructor, DontEnum);293 putDirect (Identifier(exec, "RegExp"), d()->regExpConstructor, DontEnum);294 putDirect (Identifier(exec, "Error"), d()->errorConstructor, DontEnum);295 putDirect (Identifier(exec, "EvalError"), d()->evalErrorConstructor);296 putDirect (Identifier(exec, "RangeError"), d()->rangeErrorConstructor);297 putDirect (Identifier(exec, "ReferenceError"), d()->referenceErrorConstructor);298 putDirect (Identifier(exec, "SyntaxError"), d()->syntaxErrorConstructor);299 putDirect (Identifier(exec, "TypeError"), d()->typeErrorConstructor);300 putDirect (Identifier(exec, "URIError"), d()->URIErrorConstructor);292 putDirectWithoutTransition(Identifier(exec, "Object"), objectConstructor, DontEnum); 293 putDirectWithoutTransition(Identifier(exec, "Function"), functionConstructor, DontEnum); 294 putDirectWithoutTransition(Identifier(exec, "Array"), arrayConstructor, DontEnum); 295 putDirectWithoutTransition(Identifier(exec, "Boolean"), booleanConstructor, DontEnum); 296 putDirectWithoutTransition(Identifier(exec, "String"), stringConstructor, DontEnum); 297 putDirectWithoutTransition(Identifier(exec, "Number"), numberConstructor, DontEnum); 298 putDirectWithoutTransition(Identifier(exec, "Date"), dateConstructor, DontEnum); 299 putDirectWithoutTransition(Identifier(exec, "RegExp"), d()->regExpConstructor, DontEnum); 300 putDirectWithoutTransition(Identifier(exec, "Error"), d()->errorConstructor, DontEnum); 301 putDirectWithoutTransition(Identifier(exec, "EvalError"), d()->evalErrorConstructor); 302 putDirectWithoutTransition(Identifier(exec, "RangeError"), d()->rangeErrorConstructor); 303 putDirectWithoutTransition(Identifier(exec, "ReferenceError"), d()->referenceErrorConstructor); 304 putDirectWithoutTransition(Identifier(exec, "SyntaxError"), d()->syntaxErrorConstructor); 305 putDirectWithoutTransition(Identifier(exec, "TypeError"), d()->typeErrorConstructor); 306 putDirectWithoutTransition(Identifier(exec, "URIError"), d()->URIErrorConstructor); 301 307 302 308 // Set global values. … … 313 319 314 320 d()->evalFunction = new (exec) GlobalEvalFunction(exec, GlobalEvalFunction::createStructureID(d()->functionPrototype), 1, exec->propertyNames().eval, globalFuncEval, this); 315 putDirectFunction (exec, d()->evalFunction, DontEnum);316 putDirectFunction (exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 2, Identifier(exec, "parseInt"), globalFuncParseInt), DontEnum);317 putDirectFunction (exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "parseFloat"), globalFuncParseFloat), DontEnum);318 putDirectFunction (exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "isNaN"), globalFuncIsNaN), DontEnum);319 putDirectFunction (exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "isFinite"), globalFuncIsFinite), DontEnum);320 putDirectFunction (exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "escape"), globalFuncEscape), DontEnum);321 putDirectFunction (exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "unescape"), globalFuncUnescape), DontEnum);322 putDirectFunction (exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "decodeURI"), globalFuncDecodeURI), DontEnum);323 putDirectFunction (exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "decodeURIComponent"), globalFuncDecodeURIComponent), DontEnum);324 putDirectFunction (exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "encodeURI"), globalFuncEncodeURI), DontEnum);325 putDirectFunction (exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "encodeURIComponent"), globalFuncEncodeURIComponent), DontEnum);321 putDirectFunctionWithoutTransition(exec, d()->evalFunction, DontEnum); 322 putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 2, Identifier(exec, "parseInt"), globalFuncParseInt), DontEnum); 323 putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "parseFloat"), globalFuncParseFloat), DontEnum); 324 putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "isNaN"), globalFuncIsNaN), DontEnum); 325 putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "isFinite"), globalFuncIsFinite), DontEnum); 326 putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "escape"), globalFuncEscape), DontEnum); 327 putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "unescape"), globalFuncUnescape), DontEnum); 328 putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "decodeURI"), globalFuncDecodeURI), DontEnum); 329 putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "decodeURIComponent"), globalFuncDecodeURIComponent), DontEnum); 330 putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "encodeURI"), globalFuncEncodeURI), DontEnum); 331 putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "encodeURIComponent"), globalFuncEncodeURIComponent), DontEnum); 326 332 #ifndef NDEBUG 327 putDirectFunction (exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "kjsprint"), globalFuncKJSPrint), DontEnum);333 putDirectFunctionWithoutTransition(exec, new (exec) PrototypeFunction(exec, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "kjsprint"), globalFuncKJSPrint), DontEnum); 328 334 #endif 329 335
Note:
See TracChangeset
for help on using the changeset viewer.