Changeset 77113 in webkit for trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
- Timestamp:
- Jan 30, 2011, 10:56:20 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
r77098 r77113 81 81 static const int preferredScriptCheckTimeInterval = 1000; 82 82 83 template <typename T> static inline void markIfNeeded(MarkStack& markStack, WriteBarrier<T>*v)84 { 85 if ( *v)83 static inline void markIfNeeded(MarkStack& markStack, JSValue v) 84 { 85 if (v) 86 86 markStack.append(v); 87 87 } … … 89 89 static inline void markIfNeeded(MarkStack& markStack, const RefPtr<Structure>& s) 90 90 { 91 if (s && s->storedPrototype())92 mark Stack.append(s->storedPrototypeSlot());91 if (s) 92 markIfNeeded(markStack, s->storedPrototype()); 93 93 } 94 94 … … 203 203 // Prototypes 204 204 205 d()->functionPrototype .set(exec->globalData(), this, new (exec) FunctionPrototype(exec, this, FunctionPrototype::createStructure(jsNull()))); // The real prototype will be set once ObjectPrototype is created.206 d()->prototypeFunctionStructure = PrototypeFunction::createStructure(d()->functionPrototype .get());207 d()->internalFunctionStructure = InternalFunction::createStructure(d()->functionPrototype .get());205 d()->functionPrototype = new (exec) FunctionPrototype(exec, this, FunctionPrototype::createStructure(jsNull())); // The real prototype will be set once ObjectPrototype is created. 206 d()->prototypeFunctionStructure = PrototypeFunction::createStructure(d()->functionPrototype); 207 d()->internalFunctionStructure = InternalFunction::createStructure(d()->functionPrototype); 208 208 NativeFunctionWrapper* callFunction = 0; 209 209 NativeFunctionWrapper* applyFunction = 0; 210 210 d()->functionPrototype->addFunctionProperties(exec, this, d()->prototypeFunctionStructure.get(), &callFunction, &applyFunction); 211 d()->callFunction .set(exec->globalData(), this, callFunction);212 d()->applyFunction .set(exec->globalData(), this, applyFunction);213 d()->objectPrototype .set(exec->globalData(), this, new (exec) ObjectPrototype(exec, this, ObjectPrototype::createStructure(jsNull()), d()->prototypeFunctionStructure.get()));214 d()->functionPrototype->structure()->setPrototypeWithoutTransition(d()->objectPrototype .get());211 d()->callFunction = callFunction; 212 d()->applyFunction = applyFunction; 213 d()->objectPrototype = new (exec) ObjectPrototype(exec, this, ObjectPrototype::createStructure(jsNull()), d()->prototypeFunctionStructure.get()); 214 d()->functionPrototype->structure()->setPrototypeWithoutTransition(d()->objectPrototype); 215 215 216 216 d()->emptyObjectStructure = d()->objectPrototype->inheritorID(); 217 217 218 d()->functionStructure = JSFunction::createStructure(d()->functionPrototype .get());219 d()->callbackFunctionStructure = JSCallbackFunction::createStructure(d()->functionPrototype .get());220 d()->argumentsStructure = Arguments::createStructure(d()->objectPrototype .get());221 d()->callbackConstructorStructure = JSCallbackConstructor::createStructure(d()->objectPrototype .get());222 d()->callbackObjectStructure = JSCallbackObject<JSObjectWithGlobalObject>::createStructure(d()->objectPrototype .get());223 224 d()->arrayPrototype .set(exec->globalData(), this, new (exec) ArrayPrototype(this, ArrayPrototype::createStructure(d()->objectPrototype.get())));225 d()->arrayStructure = JSArray::createStructure(d()->arrayPrototype .get());226 d()->regExpMatchesArrayStructure = RegExpMatchesArray::createStructure(d()->arrayPrototype .get());227 228 d()->stringPrototype .set(exec->globalData(), this, new (exec) StringPrototype(exec, this, StringPrototype::createStructure(d()->objectPrototype.get())));229 d()->stringObjectStructure = StringObject::createStructure(d()->stringPrototype .get());230 231 d()->booleanPrototype .set(exec->globalData(), this, new (exec) BooleanPrototype(exec, this, BooleanPrototype::createStructure(d()->objectPrototype.get()), d()->prototypeFunctionStructure.get()));232 d()->booleanObjectStructure = BooleanObject::createStructure(d()->booleanPrototype .get());233 234 d()->numberPrototype .set(exec->globalData(), this, new (exec) NumberPrototype(exec, this, NumberPrototype::createStructure(d()->objectPrototype.get()), d()->prototypeFunctionStructure.get()));235 d()->numberObjectStructure = NumberObject::createStructure(d()->numberPrototype .get());236 237 d()->datePrototype .set(exec->globalData(), this, new (exec) DatePrototype(exec, this, DatePrototype::createStructure(d()->objectPrototype.get())));238 d()->dateStructure = DateInstance::createStructure(d()->datePrototype .get());239 240 d()->regExpPrototype .set(exec->globalData(), this, new (exec) RegExpPrototype(exec, this, RegExpPrototype::createStructure(d()->objectPrototype.get()), d()->prototypeFunctionStructure.get()));241 d()->regExpStructure = RegExpObject::createStructure(d()->regExpPrototype .get());242 243 d()->methodCallDummy .set(exec->globalData(), this, constructEmptyObject(exec));244 245 ErrorPrototype* errorPrototype = new (exec) ErrorPrototype(exec, this, ErrorPrototype::createStructure(d()->objectPrototype .get()), d()->prototypeFunctionStructure.get());218 d()->functionStructure = JSFunction::createStructure(d()->functionPrototype); 219 d()->callbackFunctionStructure = JSCallbackFunction::createStructure(d()->functionPrototype); 220 d()->argumentsStructure = Arguments::createStructure(d()->objectPrototype); 221 d()->callbackConstructorStructure = JSCallbackConstructor::createStructure(d()->objectPrototype); 222 d()->callbackObjectStructure = JSCallbackObject<JSObjectWithGlobalObject>::createStructure(d()->objectPrototype); 223 224 d()->arrayPrototype = new (exec) ArrayPrototype(this, ArrayPrototype::createStructure(d()->objectPrototype)); 225 d()->arrayStructure = JSArray::createStructure(d()->arrayPrototype); 226 d()->regExpMatchesArrayStructure = RegExpMatchesArray::createStructure(d()->arrayPrototype); 227 228 d()->stringPrototype = new (exec) StringPrototype(exec, this, StringPrototype::createStructure(d()->objectPrototype)); 229 d()->stringObjectStructure = StringObject::createStructure(d()->stringPrototype); 230 231 d()->booleanPrototype = new (exec) BooleanPrototype(exec, this, BooleanPrototype::createStructure(d()->objectPrototype), d()->prototypeFunctionStructure.get()); 232 d()->booleanObjectStructure = BooleanObject::createStructure(d()->booleanPrototype); 233 234 d()->numberPrototype = new (exec) NumberPrototype(exec, this, NumberPrototype::createStructure(d()->objectPrototype), d()->prototypeFunctionStructure.get()); 235 d()->numberObjectStructure = NumberObject::createStructure(d()->numberPrototype); 236 237 d()->datePrototype = new (exec) DatePrototype(exec, this, DatePrototype::createStructure(d()->objectPrototype)); 238 d()->dateStructure = DateInstance::createStructure(d()->datePrototype); 239 240 d()->regExpPrototype = new (exec) RegExpPrototype(exec, this, RegExpPrototype::createStructure(d()->objectPrototype), d()->prototypeFunctionStructure.get()); 241 d()->regExpStructure = RegExpObject::createStructure(d()->regExpPrototype); 242 243 d()->methodCallDummy = constructEmptyObject(exec); 244 245 ErrorPrototype* errorPrototype = new (exec) ErrorPrototype(exec, this, ErrorPrototype::createStructure(d()->objectPrototype), d()->prototypeFunctionStructure.get()); 246 246 d()->errorStructure = ErrorInstance::createStructure(errorPrototype); 247 247 248 248 // Constructors 249 249 250 JSCell* objectConstructor = new (exec) ObjectConstructor(exec, this, ObjectConstructor::createStructure(d()->functionPrototype .get()), d()->objectPrototype.get(), d()->prototypeFunctionStructure.get());251 JSCell* functionConstructor = new (exec) FunctionConstructor(exec, this, FunctionConstructor::createStructure(d()->functionPrototype .get()), d()->functionPrototype.get());252 JSCell* arrayConstructor = new (exec) ArrayConstructor(exec, this, ArrayConstructor::createStructure(d()->functionPrototype .get()), d()->arrayPrototype.get(), d()->prototypeFunctionStructure.get());253 JSCell* stringConstructor = new (exec) StringConstructor(exec, this, StringConstructor::createStructure(d()->functionPrototype .get()), d()->prototypeFunctionStructure.get(), d()->stringPrototype.get());254 JSCell* booleanConstructor = new (exec) BooleanConstructor(exec, this, BooleanConstructor::createStructure(d()->functionPrototype .get()), d()->booleanPrototype.get());255 JSCell* numberConstructor = new (exec) NumberConstructor(exec, this, NumberConstructor::createStructure(d()->functionPrototype .get()), d()->numberPrototype.get());256 JSCell* dateConstructor = new (exec) DateConstructor(exec, this, DateConstructor::createStructure(d()->functionPrototype .get()), d()->prototypeFunctionStructure.get(), d()->datePrototype.get());257 258 d()->regExpConstructor .set(exec->globalData(), this, new (exec) RegExpConstructor(exec, this, RegExpConstructor::createStructure(d()->functionPrototype.get()), d()->regExpPrototype.get()));259 260 d()->errorConstructor .set(exec->globalData(), this, new (exec) ErrorConstructor(exec, this, ErrorConstructor::createStructure(d()->functionPrototype.get()), errorPrototype));250 JSCell* objectConstructor = new (exec) ObjectConstructor(exec, this, ObjectConstructor::createStructure(d()->functionPrototype), d()->objectPrototype, d()->prototypeFunctionStructure.get()); 251 JSCell* functionConstructor = new (exec) FunctionConstructor(exec, this, FunctionConstructor::createStructure(d()->functionPrototype), d()->functionPrototype); 252 JSCell* arrayConstructor = new (exec) ArrayConstructor(exec, this, ArrayConstructor::createStructure(d()->functionPrototype), d()->arrayPrototype, d()->prototypeFunctionStructure.get()); 253 JSCell* stringConstructor = new (exec) StringConstructor(exec, this, StringConstructor::createStructure(d()->functionPrototype), d()->prototypeFunctionStructure.get(), d()->stringPrototype); 254 JSCell* booleanConstructor = new (exec) BooleanConstructor(exec, this, BooleanConstructor::createStructure(d()->functionPrototype), d()->booleanPrototype); 255 JSCell* numberConstructor = new (exec) NumberConstructor(exec, this, NumberConstructor::createStructure(d()->functionPrototype), d()->numberPrototype); 256 JSCell* dateConstructor = new (exec) DateConstructor(exec, this, DateConstructor::createStructure(d()->functionPrototype), d()->prototypeFunctionStructure.get(), d()->datePrototype); 257 258 d()->regExpConstructor = new (exec) RegExpConstructor(exec, this, RegExpConstructor::createStructure(d()->functionPrototype), d()->regExpPrototype); 259 260 d()->errorConstructor = new (exec) ErrorConstructor(exec, this, ErrorConstructor::createStructure(d()->functionPrototype), errorPrototype); 261 261 262 262 RefPtr<Structure> nativeErrorPrototypeStructure = NativeErrorPrototype::createStructure(errorPrototype); 263 RefPtr<Structure> nativeErrorStructure = NativeErrorConstructor::createStructure(d()->functionPrototype .get());264 d()->evalErrorConstructor .set(exec->globalData(), this, new (exec) NativeErrorConstructor(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "EvalError"));265 d()->rangeErrorConstructor .set(exec->globalData(), this, new (exec) NativeErrorConstructor(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "RangeError"));266 d()->referenceErrorConstructor .set(exec->globalData(), this, new (exec) NativeErrorConstructor(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "ReferenceError"));267 d()->syntaxErrorConstructor .set(exec->globalData(), this, new (exec) NativeErrorConstructor(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "SyntaxError"));268 d()->typeErrorConstructor .set(exec->globalData(), this, new (exec) NativeErrorConstructor(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "TypeError"));269 d()->URIErrorConstructor .set(exec->globalData(), this, new (exec) NativeErrorConstructor(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "URIError"));270 271 d()->objectPrototype->putDirectFunctionWithoutTransition(exec-> globalData(), exec->propertyNames().constructor, objectConstructor, DontEnum);272 d()->functionPrototype->putDirectFunctionWithoutTransition(exec-> globalData(), exec->propertyNames().constructor, functionConstructor, DontEnum);273 d()->arrayPrototype->putDirectFunctionWithoutTransition(exec-> globalData(), exec->propertyNames().constructor, arrayConstructor, DontEnum);274 d()->booleanPrototype->putDirectFunctionWithoutTransition(exec-> globalData(), exec->propertyNames().constructor, booleanConstructor, DontEnum);275 d()->stringPrototype->putDirectFunctionWithoutTransition(exec-> globalData(), exec->propertyNames().constructor, stringConstructor, DontEnum);276 d()->numberPrototype->putDirectFunctionWithoutTransition(exec-> globalData(), exec->propertyNames().constructor, numberConstructor, DontEnum);277 d()->datePrototype->putDirectFunctionWithoutTransition(exec-> globalData(), exec->propertyNames().constructor, dateConstructor, DontEnum);278 d()->regExpPrototype->putDirectFunctionWithoutTransition(exec-> globalData(), exec->propertyNames().constructor, d()->regExpConstructor.get(), DontEnum);279 errorPrototype->putDirectFunctionWithoutTransition(exec-> globalData(), exec->propertyNames().constructor, d()->errorConstructor.get(), DontEnum);263 RefPtr<Structure> nativeErrorStructure = NativeErrorConstructor::createStructure(d()->functionPrototype); 264 d()->evalErrorConstructor = new (exec) NativeErrorConstructor(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "EvalError"); 265 d()->rangeErrorConstructor = new (exec) NativeErrorConstructor(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "RangeError"); 266 d()->referenceErrorConstructor = new (exec) NativeErrorConstructor(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "ReferenceError"); 267 d()->syntaxErrorConstructor = new (exec) NativeErrorConstructor(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "SyntaxError"); 268 d()->typeErrorConstructor = new (exec) NativeErrorConstructor(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "TypeError"); 269 d()->URIErrorConstructor = new (exec) NativeErrorConstructor(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "URIError"); 270 271 d()->objectPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, objectConstructor, DontEnum); 272 d()->functionPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, functionConstructor, DontEnum); 273 d()->arrayPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, arrayConstructor, DontEnum); 274 d()->booleanPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, booleanConstructor, DontEnum); 275 d()->stringPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, stringConstructor, DontEnum); 276 d()->numberPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, numberConstructor, DontEnum); 277 d()->datePrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, dateConstructor, DontEnum); 278 d()->regExpPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, d()->regExpConstructor, DontEnum); 279 errorPrototype->putDirectFunctionWithoutTransition(exec->propertyNames().constructor, d()->errorConstructor, DontEnum); 280 280 281 281 // Set global constructors … … 283 283 // FIXME: These properties could be handled by a static hash table. 284 284 285 putDirectFunctionWithoutTransition( exec->globalData(),Identifier(exec, "Object"), objectConstructor, DontEnum);286 putDirectFunctionWithoutTransition( exec->globalData(),Identifier(exec, "Function"), functionConstructor, DontEnum);287 putDirectFunctionWithoutTransition( exec->globalData(),Identifier(exec, "Array"), arrayConstructor, DontEnum);288 putDirectFunctionWithoutTransition( exec->globalData(),Identifier(exec, "Boolean"), booleanConstructor, DontEnum);289 putDirectFunctionWithoutTransition( exec->globalData(),Identifier(exec, "String"), stringConstructor, DontEnum);290 putDirectFunctionWithoutTransition( exec->globalData(),Identifier(exec, "Number"), numberConstructor, DontEnum);291 putDirectFunctionWithoutTransition( exec->globalData(),Identifier(exec, "Date"), dateConstructor, DontEnum);292 putDirectFunctionWithoutTransition( exec->globalData(), Identifier(exec, "RegExp"), d()->regExpConstructor.get(), DontEnum);293 putDirectFunctionWithoutTransition( exec->globalData(), Identifier(exec, "Error"), d()->errorConstructor.get(), DontEnum);294 putDirectFunctionWithoutTransition( exec->globalData(), Identifier(exec, "EvalError"), d()->evalErrorConstructor.get(), DontEnum);295 putDirectFunctionWithoutTransition( exec->globalData(), Identifier(exec, "RangeError"), d()->rangeErrorConstructor.get(), DontEnum);296 putDirectFunctionWithoutTransition( exec->globalData(), Identifier(exec, "ReferenceError"), d()->referenceErrorConstructor.get(), DontEnum);297 putDirectFunctionWithoutTransition( exec->globalData(), Identifier(exec, "SyntaxError"), d()->syntaxErrorConstructor.get(), DontEnum);298 putDirectFunctionWithoutTransition( exec->globalData(), Identifier(exec, "TypeError"), d()->typeErrorConstructor.get(), DontEnum);299 putDirectFunctionWithoutTransition( exec->globalData(), Identifier(exec, "URIError"), d()->URIErrorConstructor.get(), DontEnum);285 putDirectFunctionWithoutTransition(Identifier(exec, "Object"), objectConstructor, DontEnum); 286 putDirectFunctionWithoutTransition(Identifier(exec, "Function"), functionConstructor, DontEnum); 287 putDirectFunctionWithoutTransition(Identifier(exec, "Array"), arrayConstructor, DontEnum); 288 putDirectFunctionWithoutTransition(Identifier(exec, "Boolean"), booleanConstructor, DontEnum); 289 putDirectFunctionWithoutTransition(Identifier(exec, "String"), stringConstructor, DontEnum); 290 putDirectFunctionWithoutTransition(Identifier(exec, "Number"), numberConstructor, DontEnum); 291 putDirectFunctionWithoutTransition(Identifier(exec, "Date"), dateConstructor, DontEnum); 292 putDirectFunctionWithoutTransition(Identifier(exec, "RegExp"), d()->regExpConstructor, DontEnum); 293 putDirectFunctionWithoutTransition(Identifier(exec, "Error"), d()->errorConstructor, DontEnum); 294 putDirectFunctionWithoutTransition(Identifier(exec, "EvalError"), d()->evalErrorConstructor, DontEnum); 295 putDirectFunctionWithoutTransition(Identifier(exec, "RangeError"), d()->rangeErrorConstructor, DontEnum); 296 putDirectFunctionWithoutTransition(Identifier(exec, "ReferenceError"), d()->referenceErrorConstructor, DontEnum); 297 putDirectFunctionWithoutTransition(Identifier(exec, "SyntaxError"), d()->syntaxErrorConstructor, DontEnum); 298 putDirectFunctionWithoutTransition(Identifier(exec, "TypeError"), d()->typeErrorConstructor, DontEnum); 299 putDirectFunctionWithoutTransition(Identifier(exec, "URIError"), d()->URIErrorConstructor, DontEnum); 300 300 301 301 // Set global values. 302 302 GlobalPropertyInfo staticGlobals[] = { 303 GlobalPropertyInfo(Identifier(exec, "Math"), new (exec) MathObject(exec, this, MathObject::createStructure(d()->objectPrototype .get())), DontEnum | DontDelete),303 GlobalPropertyInfo(Identifier(exec, "Math"), new (exec) MathObject(exec, this, MathObject::createStructure(d()->objectPrototype)), DontEnum | DontDelete), 304 304 GlobalPropertyInfo(Identifier(exec, "NaN"), jsNaN(), DontEnum | DontDelete | ReadOnly), 305 305 GlobalPropertyInfo(Identifier(exec, "Infinity"), jsNumber(Inf), DontEnum | DontDelete | ReadOnly), 306 306 GlobalPropertyInfo(Identifier(exec, "undefined"), jsUndefined(), DontEnum | DontDelete | ReadOnly), 307 GlobalPropertyInfo(Identifier(exec, "JSON"), new (exec) JSONObject(this, JSONObject::createStructure(d()->objectPrototype .get())), DontEnum | DontDelete)307 GlobalPropertyInfo(Identifier(exec, "JSON"), new (exec) JSONObject(this, JSONObject::createStructure(d()->objectPrototype)), DontEnum | DontDelete) 308 308 }; 309 309 … … 312 312 // Set global functions. 313 313 314 d()->evalFunction .set(exec->globalData(), this, new (exec) GlobalEvalFunction(exec, this, GlobalEvalFunction::createStructure(d()->functionPrototype.get()), 1, exec->propertyNames().eval, globalFuncEval, this));315 putDirectFunctionWithoutTransition(exec, d()->evalFunction .get(), DontEnum);314 d()->evalFunction = new (exec) GlobalEvalFunction(exec, this, GlobalEvalFunction::createStructure(d()->functionPrototype), 1, exec->propertyNames().eval, globalFuncEval, this); 315 putDirectFunctionWithoutTransition(exec, d()->evalFunction, DontEnum); 316 316 putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, this, d()->prototypeFunctionStructure.get(), 2, Identifier(exec, "parseInt"), globalFuncParseInt), DontEnum); 317 317 putDirectFunctionWithoutTransition(exec, new (exec) NativeFunctionWrapper(exec, this, d()->prototypeFunctionStructure.get(), 1, Identifier(exec, "parseFloat"), globalFuncParseFloat), DontEnum); … … 337 337 338 338 JSObject* oldLastInPrototypeChain = lastInPrototypeChain(this); 339 JSObject* objectPrototype = d()->objectPrototype .get();339 JSObject* objectPrototype = d()->objectPrototype; 340 340 if (oldLastInPrototypeChain != objectPrototype) 341 341 oldLastInPrototypeChain->setPrototype(objectPrototype); … … 350 350 (*it)->markAggregate(markStack); 351 351 352 markIfNeeded(markStack, &d()->regExpConstructor);353 markIfNeeded(markStack, &d()->errorConstructor);354 markIfNeeded(markStack, &d()->evalErrorConstructor);355 markIfNeeded(markStack, &d()->rangeErrorConstructor);356 markIfNeeded(markStack, &d()->referenceErrorConstructor);357 markIfNeeded(markStack, &d()->syntaxErrorConstructor);358 markIfNeeded(markStack, &d()->typeErrorConstructor);359 markIfNeeded(markStack, &d()->URIErrorConstructor);360 361 markIfNeeded(markStack, &d()->evalFunction);362 markIfNeeded(markStack, &d()->callFunction);363 markIfNeeded(markStack, &d()->applyFunction);364 365 markIfNeeded(markStack, &d()->objectPrototype);366 markIfNeeded(markStack, &d()->functionPrototype);367 markIfNeeded(markStack, &d()->arrayPrototype);368 markIfNeeded(markStack, &d()->booleanPrototype);369 markIfNeeded(markStack, &d()->stringPrototype);370 markIfNeeded(markStack, &d()->numberPrototype);371 markIfNeeded(markStack, &d()->datePrototype);372 markIfNeeded(markStack, &d()->regExpPrototype);373 374 markIfNeeded(markStack, &d()->methodCallDummy);352 markIfNeeded(markStack, d()->regExpConstructor); 353 markIfNeeded(markStack, d()->errorConstructor); 354 markIfNeeded(markStack, d()->evalErrorConstructor); 355 markIfNeeded(markStack, d()->rangeErrorConstructor); 356 markIfNeeded(markStack, d()->referenceErrorConstructor); 357 markIfNeeded(markStack, d()->syntaxErrorConstructor); 358 markIfNeeded(markStack, d()->typeErrorConstructor); 359 markIfNeeded(markStack, d()->URIErrorConstructor); 360 361 markIfNeeded(markStack, d()->evalFunction); 362 markIfNeeded(markStack, d()->callFunction); 363 markIfNeeded(markStack, d()->applyFunction); 364 365 markIfNeeded(markStack, d()->objectPrototype); 366 markIfNeeded(markStack, d()->functionPrototype); 367 markIfNeeded(markStack, d()->arrayPrototype); 368 markIfNeeded(markStack, d()->booleanPrototype); 369 markIfNeeded(markStack, d()->stringPrototype); 370 markIfNeeded(markStack, d()->numberPrototype); 371 markIfNeeded(markStack, d()->datePrototype); 372 markIfNeeded(markStack, d()->regExpPrototype); 373 374 markIfNeeded(markStack, d()->methodCallDummy); 375 375 376 376 markIfNeeded(markStack, d()->errorStructure); … … 397 397 // Outside the execution of global code, when our variables are torn off, 398 398 // we can mark the torn-off array. 399 markStack. deprecatedAppendValues(d()->registerArray.get(), d()->registerArraySize);399 markStack.appendValues(d()->registerArray.get(), d()->registerArraySize); 400 400 } else if (d()->registers) { 401 401 // During execution of global code, when our variables are in the register file, 402 402 // the symbol table tells us how many variables there are, and registers 403 403 // points to where they end, and the registers used for execution begin. 404 markStack. deprecatedAppendValues(d()->registers - symbolTable().size(), symbolTable().size());404 markStack.appendValues(d()->registers - symbolTable().size(), symbolTable().size()); 405 405 } 406 406 }
Note:
See TracChangeset
for help on using the changeset viewer.