Changeset 77151 in webkit for trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
- Timestamp:
- Jan 31, 2011, 12:07:21 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
r77113 r77151 81 81 static const int preferredScriptCheckTimeInterval = 1000; 82 82 83 static inline void markIfNeeded(MarkStack& markStack, JSValuev)84 { 85 if ( v)83 template <typename T> static inline void markIfNeeded(MarkStack& markStack, WriteBarrier<T>* 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 )92 mark IfNeeded(markStack, s->storedPrototype());91 if (s && s->storedPrototype()) 92 markStack.append(s->storedPrototypeSlot()); 93 93 } 94 94 … … 203 203 // Prototypes 204 204 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 );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()); 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 = 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 );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()); 215 215 216 216 d()->emptyObjectStructure = d()->objectPrototype->inheritorID(); 217 217 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());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()); 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 ), 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);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)); 261 261 262 262 RefPtr<Structure> nativeErrorPrototypeStructure = NativeErrorPrototype::createStructure(errorPrototype); 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);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); 280 280 281 281 // Set global constructors … … 283 283 // FIXME: These properties could be handled by a static hash table. 284 284 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);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); 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 )), DontEnum | DontDelete),303 GlobalPropertyInfo(Identifier(exec, "Math"), new (exec) MathObject(exec, this, MathObject::createStructure(d()->objectPrototype.get())), 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 )), DontEnum | DontDelete)307 GlobalPropertyInfo(Identifier(exec, "JSON"), new (exec) JSONObject(this, JSONObject::createStructure(d()->objectPrototype.get())), DontEnum | DontDelete) 308 308 }; 309 309 … … 312 312 // Set global functions. 313 313 314 d()->evalFunction = new (exec) GlobalEvalFunction(exec, this, GlobalEvalFunction::createStructure(d()->functionPrototype), 1, exec->propertyNames().eval, globalFuncEval, this);315 putDirectFunctionWithoutTransition(exec, d()->evalFunction , DontEnum);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); 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 ;339 JSObject* objectPrototype = d()->objectPrototype.get(); 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. appendValues(d()->registerArray.get(), d()->registerArraySize);399 markStack.deprecatedAppendValues(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. appendValues(d()->registers - symbolTable().size(), symbolTable().size());404 markStack.deprecatedAppendValues(d()->registers - symbolTable().size(), symbolTable().size()); 405 405 } 406 406 }
Note:
See TracChangeset
for help on using the changeset viewer.