Changeset 59064 in webkit for trunk/JavaScriptCore/bytecode
- Timestamp:
- May 9, 2010, 6:41:07 PM (15 years ago)
- Location:
- trunk/JavaScriptCore/bytecode
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/bytecode/CodeBlock.cpp
r58986 r59064 90 90 } 91 91 92 static UString regexpToSourceString(RegExp* regExp) 93 { 94 char postfix[5] = { '/', 0, 0, 0, 0 }; 95 int index = 1; 96 if (regExp->global()) 97 postfix[index++] = 'g'; 98 if (regExp->ignoreCase()) 99 postfix[index++] = 'i'; 100 if (regExp->multiline()) 101 postfix[index] = 'm'; 102 103 return makeString("/", regExp->pattern(), postfix); 104 } 105 106 static CString regexpName(int re, RegExp* regexp) 107 { 108 return makeString(regexpToSourceString(regexp), "(@re", UString::from(re), ")").UTF8String(); 109 } 110 92 111 static UString pointerToSourceString(void* p) 93 112 { … … 350 369 } 351 370 371 if (m_rareData && !m_rareData->m_regexps.isEmpty()) { 372 printf("\nm_regexps:\n"); 373 size_t i = 0; 374 do { 375 printf(" re%u = %s\n", static_cast<unsigned>(i), regexpToSourceString(m_rareData->m_regexps[i].get()).ascii()); 376 ++i; 377 } while (i < m_rareData->m_regexps.size()); 378 } 379 352 380 #if ENABLE(JIT) 353 381 if (!m_globalResolveInfos.isEmpty() || !m_structureStubInfos.isEmpty()) … … 485 513 int argc = (++it)->u.operand; 486 514 printf("[%4d] new_array\t %s, %s, %d\n", location, registerName(exec, dst).data(), registerName(exec, argv).data(), argc); 515 break; 516 } 517 case op_new_regexp: { 518 int r0 = (++it)->u.operand; 519 int re0 = (++it)->u.operand; 520 printf("[%4d] new_regexp\t %s, %s\n", location, registerName(exec, r0).data(), regexpName(re0, regexp(re0)).data()); 487 521 break; 488 522 } … … 1696 1730 if (m_rareData) { 1697 1731 m_rareData->m_exceptionHandlers.shrinkToFit(); 1732 m_rareData->m_regexps.shrinkToFit(); 1698 1733 m_rareData->m_immediateSwitchJumpTables.shrinkToFit(); 1699 1734 m_rareData->m_characterSwitchJumpTables.shrinkToFit(); -
trunk/JavaScriptCore/bytecode/CodeBlock.h
r57955 r59064 459 459 FunctionExecutable* functionExpr(int index) { return m_functionExprs[index].get(); } 460 460 461 unsigned addRegExp(RegExp* r) { createRareDataIfNecessary(); unsigned size = m_rareData->m_regexps.size(); m_rareData->m_regexps.append(r); return size; } 462 RegExp* regexp(int index) const { ASSERT(m_rareData); return m_rareData->m_regexps[index].get(); } 463 464 461 465 // Jump Tables 462 466 … … 553 557 Vector<HandlerInfo> m_exceptionHandlers; 554 558 559 // Rare Constants 560 Vector<RefPtr<RegExp> > m_regexps; 561 555 562 // Jump Tables 556 563 Vector<SimpleJumpTable> m_immediateSwitchJumpTables; -
trunk/JavaScriptCore/bytecode/Opcode.h
r58986 r59064 47 47 macro(op_new_object, 2) \ 48 48 macro(op_new_array, 4) \ 49 macro(op_new_regexp, 3) \ 49 50 macro(op_mov, 3) \ 50 51 \
Note:
See TracChangeset
for help on using the changeset viewer.