Changeset 34851 in webkit for trunk/JavaScriptCore/kjs/nodes.cpp
- Timestamp:
- Jun 28, 2008, 8:50:49 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/nodes.cpp
r34843 r34851 48 48 namespace KJS { 49 49 50 static inline UString::Rep* rep(const Identifier& ident)51 {52 return ident.ustring().rep();53 }54 55 50 // ------------------------------ Node ----------------------------------------- 56 51 57 52 #ifndef NDEBUG 53 58 54 #ifndef LOG_CHANNEL_PREFIX 59 55 #define LOG_CHANNEL_PREFIX Log 60 56 #endif 57 61 58 static WTFLogChannel LogKJSNodeLeaks = { 0x00000000, "", WTFLogChannelOn }; 62 59 … … 100 97 --count; 101 98 } 99 102 100 #endif 103 101 … … 215 213 } 216 214 217 static inline int currentSourceId(ExecState* exec) KJS_FAST_CALL;218 static inline int currentSourceId(ExecState*)219 {220 ASSERT_NOT_REACHED();221 return 0;222 }223 224 static inline const UString currentSourceURL(ExecState* exec) KJS_FAST_CALL;225 static inline const UString currentSourceURL(ExecState*)226 {227 ASSERT_NOT_REACHED();228 return UString();229 }230 231 215 RegisterID* Node::emitThrowError(CodeGenerator& generator, ErrorType e, const char* msg) 232 216 { … … 346 330 // ------------------------------ ArrayNode ------------------------------------ 347 331 348 349 332 RegisterID* ArrayNode::emitCode(CodeGenerator& generator, RegisterID* dst) 350 333 { 351 RefPtr<RegisterID> newArray = generator.emitNewArray(generator.tempDestination(dst)); 334 // FIXME: Should we put all of this code into emitNewArray? 335 352 336 unsigned length = 0; 353 354 RegisterID* value; 355 for (ElementNode* n = m_element.get(); n; n = n->m_next.get()) { 356 value = generator.emitNode(n->m_node.get()); 357 length += n->m_elision; 358 generator.emitPutByIndex(newArray.get(), length++, value); 359 } 360 361 value = generator.emitLoad(generator.newTemporary(), jsNumber(generator.globalExec(), m_elision + length)); 362 generator.emitPutById(newArray.get(), generator.propertyNames().length, value); 363 364 return generator.moveToDestinationIfNeeded(dst, newArray.get()); 337 ElementNode* firstPutElement; 338 for (firstPutElement = m_element.get(); firstPutElement; firstPutElement = firstPutElement->next()) { 339 if (firstPutElement->elision()) 340 break; 341 ++length; 342 } 343 344 if (!firstPutElement && !m_elision) 345 return generator.emitNewArray(generator.finalDestination(dst), m_element.get()); 346 347 RefPtr<RegisterID> array = generator.emitNewArray(generator.tempDestination(dst), m_element.get()); 348 349 for (ElementNode* n = firstPutElement; n; n = n->next()) { 350 RegisterID* value = generator.emitNode(n->value()); 351 length += n->elision(); 352 generator.emitPutByIndex(array.get(), length++, value); 353 } 354 355 if (m_elision) { 356 RegisterID* value = generator.emitLoad(generator.newTemporary(), jsNumber(generator.globalExec(), m_elision + length)); 357 generator.emitPutById(array.get(), generator.propertyNames().length, value); 358 } 359 360 return generator.moveToDestinationIfNeeded(dst, array.get()); 365 361 } 366 362 … … 371 367 if (m_list) 372 368 return generator.emitNode(dst, m_list.get()); 373 else 374 return generator.emitNewObject(generator.finalDestination(dst)); 369 return generator.emitNewObject(generator.finalDestination(dst)); 375 370 } 376 371
Note:
See TracChangeset
for help on using the changeset viewer.