Changeset 47022 in webkit for trunk/JavaScriptCore/runtime/JSGlobalObject.cpp
- Timestamp:
- Aug 10, 2009, 9:35:02 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/JSGlobalObject.cpp
r46963 r47022 81 81 static const int preferredScriptCheckTimeInterval = 1000; 82 82 83 static inline void markIfNeeded( JSValue v)84 { 85 if (v && !v.marked())86 v.mark();87 } 88 89 static inline void markIfNeeded( const RefPtr<Structure>& s)83 static inline void markIfNeeded(MarkStack& markStack, JSValue v) 84 { 85 if (v) 86 markStack.append(v); 87 } 88 89 static inline void markIfNeeded(MarkStack& markStack, const RefPtr<Structure>& s) 90 90 { 91 91 if (s) 92 s->mark ();92 s->markAggregate(markStack); 93 93 } 94 94 … … 358 358 } 359 359 360 void JSGlobalObject::mark ()361 { 362 JSVariableObject::mark ();360 void JSGlobalObject::markChildren(MarkStack& markStack) 361 { 362 JSVariableObject::markChildren(markStack); 363 363 364 364 HashSet<ProgramCodeBlock*>::const_iterator end = codeBlocks().end(); 365 365 for (HashSet<ProgramCodeBlock*>::const_iterator it = codeBlocks().begin(); it != end; ++it) 366 (*it)->mark ();366 (*it)->markAggregate(markStack); 367 367 368 368 RegisterFile& registerFile = globalData()->interpreter->registerFile(); 369 369 if (registerFile.globalObject() == this) 370 registerFile.markGlobals( &globalData()->heap);371 372 markIfNeeded( d()->regExpConstructor);373 markIfNeeded( d()->errorConstructor);374 markIfNeeded( d()->evalErrorConstructor);375 markIfNeeded( d()->rangeErrorConstructor);376 markIfNeeded( d()->referenceErrorConstructor);377 markIfNeeded( d()->syntaxErrorConstructor);378 markIfNeeded( d()->typeErrorConstructor);379 markIfNeeded( d()->URIErrorConstructor);380 381 markIfNeeded( d()->evalFunction);382 markIfNeeded( d()->callFunction);383 markIfNeeded( d()->applyFunction);384 385 markIfNeeded( d()->objectPrototype);386 markIfNeeded( d()->functionPrototype);387 markIfNeeded( d()->arrayPrototype);388 markIfNeeded( d()->booleanPrototype);389 markIfNeeded( d()->stringPrototype);390 markIfNeeded( d()->numberPrototype);391 markIfNeeded( d()->datePrototype);392 markIfNeeded( d()->regExpPrototype);393 394 markIfNeeded( d()->methodCallDummy);395 396 markIfNeeded( d()->errorStructure);370 registerFile.markGlobals(markStack, &globalData()->heap); 371 372 markIfNeeded(markStack, d()->regExpConstructor); 373 markIfNeeded(markStack, d()->errorConstructor); 374 markIfNeeded(markStack, d()->evalErrorConstructor); 375 markIfNeeded(markStack, d()->rangeErrorConstructor); 376 markIfNeeded(markStack, d()->referenceErrorConstructor); 377 markIfNeeded(markStack, d()->syntaxErrorConstructor); 378 markIfNeeded(markStack, d()->typeErrorConstructor); 379 markIfNeeded(markStack, d()->URIErrorConstructor); 380 381 markIfNeeded(markStack, d()->evalFunction); 382 markIfNeeded(markStack, d()->callFunction); 383 markIfNeeded(markStack, d()->applyFunction); 384 385 markIfNeeded(markStack, d()->objectPrototype); 386 markIfNeeded(markStack, d()->functionPrototype); 387 markIfNeeded(markStack, d()->arrayPrototype); 388 markIfNeeded(markStack, d()->booleanPrototype); 389 markIfNeeded(markStack, d()->stringPrototype); 390 markIfNeeded(markStack, d()->numberPrototype); 391 markIfNeeded(markStack, d()->datePrototype); 392 markIfNeeded(markStack, d()->regExpPrototype); 393 394 markIfNeeded(markStack, d()->methodCallDummy); 395 396 markIfNeeded(markStack, d()->errorStructure); 397 397 398 398 // No need to mark the other structures, because their prototypes are all … … 404 404 405 405 size_t size = d()->registerArraySize; 406 for (size_t i = 0; i < size; ++i) { 407 Register& r = registerArray[i]; 408 if (!r.marked()) 409 r.mark(); 410 } 406 markStack.appendValues(reinterpret_cast<JSValue*>(registerArray), size); 411 407 } 412 408
Note:
See TracChangeset
for help on using the changeset viewer.