Changeset 10076 in webkit for trunk/JavaScriptCore/kjs/nodes.cpp
- Timestamp:
- Aug 6, 2005, 11:17:49 PM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/nodes.cpp
r9929 r10076 278 278 ScopeChain chain = exec->context().imp()->scopeChain(); 279 279 280 Value result; 281 while (!chain.isEmpty()) { 280 assert(!chain.isEmpty()); 281 282 PropertySlot slot; 283 do { 282 284 ObjectImp *o = chain.top(); 283 284 if (o->getProperty(exec, ident, result)) 285 return result; 285 if (o->getPropertySlot(exec, ident, slot)) 286 return slot.getValue(exec, ident); 286 287 287 288 chain.pop(); 288 } 289 290 UString m = I18N_NOOP("Can't find variable: ") + ident.ustring(); 291 Object err = Error::create(exec, ReferenceError, m.ascii()); 292 exec->setException(err); 293 return err; 289 } while (!chain.isEmpty()); 290 291 return Reference(Null(), ident).getValue(exec); 294 292 } 295 293 … … 298 296 ScopeChain chain = exec->context().imp()->scopeChain(); 299 297 300 while (!chain.isEmpty()) { 298 assert(!chain.isEmpty()); 299 300 PropertySlot slot; 301 do { 301 302 ObjectImp *o = chain.top(); 302 303 //cout << "Resolve: looking at '" << ident.ascii() << "'" 304 // << " in " << (void*)o << " " << o->classInfo()->className << endl; 305 if (o->hasProperty(exec,ident)) { 306 //cout << "Resolve: FOUND '" << ident.ascii() << "'" 307 // << " in " << (void*)o << " " << o->classInfo()->className << endl; 303 if (o->getPropertySlot(exec, ident, slot)) 308 304 return Reference(o, ident); 309 }310 305 311 306 chain.pop(); 312 } 313 314 // identifier not found 315 //cout << "Resolve: didn't find '" << ident.ascii() << "'" << endl; 307 } while (!chain.isEmpty()); 308 316 309 return Reference(Null(), ident); 317 310 } … … 530 523 Value AccessorNode1::evaluate(ExecState *exec) 531 524 { 532 return evaluateReference(exec).getValue(exec); 525 Value v1 = expr1->evaluate(exec); 526 KJS_CHECKEXCEPTIONVALUE 527 Value v2 = expr2->evaluate(exec); 528 KJS_CHECKEXCEPTIONVALUE 529 Object o = v1.toObject(exec); 530 unsigned i; 531 if (v2.toUInt32(i)) 532 return o.get(exec, i); 533 534 String s = v2.toString(exec); 535 return o.get(exec, Identifier(s.value())); 533 536 } 534 537 … … 567 570 Value AccessorNode2::evaluate(ExecState *exec) 568 571 { 569 return evaluateReference(exec).getValue(exec); 572 Value v = expr->evaluate(exec); 573 KJS_CHECKEXCEPTIONVALUE 574 Object o = v.toObject(exec); 575 return o.get(exec, ident); 576 570 577 } 571 578
Note:
See TracChangeset
for help on using the changeset viewer.