Changeset 124406 in webkit for trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
- Timestamp:
- Aug 1, 2012, 9:49:25 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
r120244 r124406 203 203 } 204 204 205 ArgumentListNode* ArrayNode::toArgumentList(JSGlobalData* globalData, int lineNumber ) const205 ArgumentListNode* ArrayNode::toArgumentList(JSGlobalData* globalData, int lineNumber, int columnNumber) const 206 206 { 207 207 ASSERT(!m_elision && !m_optional); … … 209 209 if (!ptr) 210 210 return 0; 211 ArgumentListNode* head = new (globalData) ArgumentListNode(lineNumber, ptr->value()); 211 JSTokenLocation location; 212 location.line = lineNumber; 213 location.column = columnNumber; 214 ArgumentListNode* head = new (globalData) ArgumentListNode(location, ptr->value()); 212 215 ArgumentListNode* tail = head; 213 216 ptr = ptr->next(); 214 217 for (; ptr; ptr = ptr->next()) { 215 218 ASSERT(!ptr->elision()); 216 tail = new (globalData) ArgumentListNode(l ineNumber, tail, ptr->value());219 tail = new (globalData) ArgumentListNode(location, tail, ptr->value()); 217 220 } 218 221 return head; … … 537 540 ASSERT(m_args->m_listNode->m_next->m_expr->isSimpleArray()); 538 541 ASSERT(!m_args->m_listNode->m_next->m_next); 539 m_args->m_listNode = static_cast<ArrayNode*>(m_args->m_listNode->m_next->m_expr)->toArgumentList(generator.globalData(), 0 );542 m_args->m_listNode = static_cast<ArrayNode*>(m_args->m_listNode->m_next->m_expr)->toArgumentList(generator.globalData(), 0, 0); 540 543 RefPtr<RegisterID> realFunction = generator.emitMove(generator.tempDestination(dst), base.get()); 541 544 CallArguments callArguments(generator, m_args); … … 1128 1131 RefPtr<Label> beforeElse = generator.newLabel(); 1129 1132 RefPtr<Label> afterElse = generator.newLabel(); 1133 1134 generator.emitDebugHook(WillExecuteStatement, lineNo(), lineNo(), columnNo()); 1130 1135 1131 1136 if (m_logical->hasConditionContextCodegen()) { … … 1386 1391 RegisterID* ConstStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID*) 1387 1392 { 1388 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1393 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1389 1394 return generator.emitNode(m_next); 1390 1395 } … … 1429 1434 RegisterID* EmptyStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1430 1435 { 1431 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1436 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1432 1437 return dst; 1433 1438 } … … 1437 1442 RegisterID* DebuggerStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1438 1443 { 1439 generator.emitDebugHook(DidReachBreakpoint, firstLine(), lastLine() );1444 generator.emitDebugHook(DidReachBreakpoint, firstLine(), lastLine(), column()); 1440 1445 return dst; 1441 1446 } … … 1446 1451 { 1447 1452 ASSERT(m_expr); 1448 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1453 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1449 1454 return generator.emitNode(dst, m_expr); 1450 1455 } … … 1455 1460 { 1456 1461 ASSERT(m_expr); 1457 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1462 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1458 1463 return generator.emitNode(m_expr); 1459 1464 } … … 1463 1468 RegisterID* IfNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1464 1469 { 1465 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1470 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1466 1471 1467 1472 RefPtr<Label> afterThen = generator.newLabel(); … … 1487 1492 RegisterID* IfElseNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1488 1493 { 1489 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1494 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1490 1495 1491 1496 RefPtr<Label> beforeElse = generator.newLabel(); … … 1523 1528 generator.emitLabel(topOfLoop.get()); 1524 1529 generator.emitLoopHint(); 1525 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());1526 1530 1527 1531 RefPtr<RegisterID> result = generator.emitNode(dst, m_statement); 1528 1532 1529 1533 generator.emitLabel(scope->continueTarget()); 1530 generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo());1534 generator.emitDebugHook(WillExecuteStatement, lastLine(), lastLine(), column()); 1531 1535 if (m_expr->hasConditionContextCodegen()) 1532 1536 generator.emitNodeInConditionContext(m_expr, topOfLoop.get(), scope->breakTarget(), false); … … 1547 1551 RefPtr<Label> topOfLoop = generator.newLabel(); 1548 1552 1549 generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo() );1553 generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo(), m_expr->columnNo()); 1550 1554 if (m_expr->hasConditionContextCodegen()) 1551 1555 generator.emitNodeInConditionContext(m_expr, topOfLoop.get(), scope->breakTarget(), true); … … 1561 1565 1562 1566 generator.emitLabel(scope->continueTarget()); 1563 generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo());1567 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1564 1568 1565 1569 if (m_expr->hasConditionContextCodegen()) … … 1582 1586 RefPtr<LabelScope> scope = generator.newLabelScope(LabelScope::Loop); 1583 1587 1584 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1588 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1585 1589 1586 1590 if (m_expr1) … … 1603 1607 1604 1608 generator.emitLabel(scope->continueTarget()); 1605 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1609 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1606 1610 if (m_expr3) 1607 1611 generator.emitNode(generator.ignoredResult(), m_expr3); … … 1630 1634 return emitThrowReferenceError(generator, "Left side of for-in statement is not a reference."); 1631 1635 1632 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1636 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1633 1637 1634 1638 if (m_init) … … 1693 1697 generator.emitLabel(scope->continueTarget()); 1694 1698 generator.emitNextPropertyName(propertyName, base.get(), i.get(), size.get(), iter.get(), loopStart.get()); 1695 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1699 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1696 1700 generator.emitLabel(scope->breakTarget()); 1697 1701 return dst; … … 1703 1707 RegisterID* ContinueNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1704 1708 { 1705 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1709 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1706 1710 1707 1711 LabelScope* scope = generator.continueTarget(m_ident); … … 1717 1721 RegisterID* BreakNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1718 1722 { 1719 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1723 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1720 1724 1721 1725 LabelScope* scope = generator.breakTarget(m_ident); … … 1730 1734 RegisterID* ReturnNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1731 1735 { 1732 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1736 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1733 1737 ASSERT(generator.codeType() == FunctionCode); 1734 1738 … … 1746 1750 generator.emitLabel(l0.get()); 1747 1751 } 1748 generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine() );1752 generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine(), column()); 1749 1753 return generator.emitReturn(r0); 1750 1754 } … … 1754 1758 RegisterID* WithNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1755 1759 { 1756 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1760 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1757 1761 1758 1762 RefPtr<RegisterID> scope = generator.newTemporary(); … … 1919 1923 RegisterID* SwitchNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1920 1924 { 1921 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1925 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1922 1926 1923 1927 RefPtr<LabelScope> scope = generator.newLabelScope(LabelScope::Switch); … … 1934 1938 RegisterID* LabelNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1935 1939 { 1936 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1940 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1937 1941 1938 1942 ASSERT(!generator.breakTarget(m_name)); … … 1949 1953 RegisterID* ThrowNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1950 1954 { 1951 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1955 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1952 1956 1953 1957 if (dst == generator.ignoredResult()) … … 1966 1970 // optimizer knows they may be jumped to from anywhere. 1967 1971 1968 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1972 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1969 1973 1970 1974 RefPtr<Label> tryStartLabel = generator.newLabel(); … … 2023 2027 RegisterID* ProgramNode::emitBytecode(BytecodeGenerator& generator, RegisterID*) 2024 2028 { 2025 generator.emitDebugHook(WillExecuteProgram, firstLine(), lastLine() );2029 generator.emitDebugHook(WillExecuteProgram, firstLine(), lastLine(), column()); 2026 2030 2027 2031 RefPtr<RegisterID> dstRegister = generator.newTemporary(); … … 2029 2033 emitStatementsBytecode(generator, dstRegister.get()); 2030 2034 2031 generator.emitDebugHook(DidExecuteProgram, firstLine(), lastLine() );2035 generator.emitDebugHook(DidExecuteProgram, firstLine(), lastLine(), column()); 2032 2036 generator.emitEnd(dstRegister.get()); 2033 2037 return 0; … … 2038 2042 RegisterID* EvalNode::emitBytecode(BytecodeGenerator& generator, RegisterID*) 2039 2043 { 2040 generator.emitDebugHook(WillExecuteProgram, firstLine(), lastLine() );2044 generator.emitDebugHook(WillExecuteProgram, firstLine(), lastLine(), column()); 2041 2045 2042 2046 RefPtr<RegisterID> dstRegister = generator.newTemporary(); … … 2044 2048 emitStatementsBytecode(generator, dstRegister.get()); 2045 2049 2046 generator.emitDebugHook(DidExecuteProgram, firstLine(), lastLine() );2050 generator.emitDebugHook(DidExecuteProgram, firstLine(), lastLine(), column()); 2047 2051 generator.emitEnd(dstRegister.get()); 2048 2052 return 0; … … 2053 2057 RegisterID* FunctionBodyNode::emitBytecode(BytecodeGenerator& generator, RegisterID*) 2054 2058 { 2055 generator.emitDebugHook(DidEnterCallFrame, firstLine(), lastLine() );2059 generator.emitDebugHook(DidEnterCallFrame, firstLine(), lastLine(), column()); 2056 2060 emitStatementsBytecode(generator, generator.ignoredResult()); 2057 2061 … … 2069 2073 if (!returnNode) { 2070 2074 RegisterID* r0 = generator.isConstructor() ? generator.thisRegister() : generator.emitLoad(0, jsUndefined()); 2071 generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine() );2075 generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine(), column()); 2072 2076 generator.emitReturn(r0); 2073 2077 return 0;
Note:
See TracChangeset
for help on using the changeset viewer.