Changeset 124729 in webkit for trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
- Timestamp:
- Aug 5, 2012, 8:16:46 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
r124413 r124729 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); … … 1386 1389 RegisterID* ConstStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID*) 1387 1390 { 1388 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1391 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1389 1392 return generator.emitNode(m_next); 1390 1393 } … … 1429 1432 RegisterID* EmptyStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1430 1433 { 1431 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1434 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1432 1435 return dst; 1433 1436 } … … 1437 1440 RegisterID* DebuggerStatementNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1438 1441 { 1439 generator.emitDebugHook(DidReachBreakpoint, firstLine(), lastLine() );1442 generator.emitDebugHook(DidReachBreakpoint, firstLine(), lastLine(), column()); 1440 1443 return dst; 1441 1444 } … … 1446 1449 { 1447 1450 ASSERT(m_expr); 1448 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1451 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1449 1452 return generator.emitNode(dst, m_expr); 1450 1453 } … … 1455 1458 { 1456 1459 ASSERT(m_expr); 1457 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1460 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1458 1461 return generator.emitNode(m_expr); 1459 1462 } … … 1463 1466 RegisterID* IfNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1464 1467 { 1465 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1468 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1466 1469 1467 1470 RefPtr<Label> afterThen = generator.newLabel(); … … 1487 1490 RegisterID* IfElseNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1488 1491 { 1489 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1492 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1490 1493 1491 1494 RefPtr<Label> beforeElse = generator.newLabel(); … … 1523 1526 generator.emitLabel(topOfLoop.get()); 1524 1527 generator.emitLoopHint(); 1525 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine());1526 1528 generator.emitDebugHook(WillExecuteStatement, lastLine(), lastLine(), column()); 1529 1527 1530 RefPtr<RegisterID> result = generator.emitNode(dst, m_statement); 1528 1531 1529 1532 generator.emitLabel(scope->continueTarget()); 1530 generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo());1533 generator.emitDebugHook(WillExecuteStatement, lastLine(), lastLine(), column()); 1531 1534 if (m_expr->hasConditionContextCodegen()) 1532 1535 generator.emitNodeInConditionContext(m_expr, topOfLoop.get(), scope->breakTarget(), false); … … 1547 1550 RefPtr<Label> topOfLoop = generator.newLabel(); 1548 1551 1549 generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo() );1552 generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo(), m_expr->columnNo()); 1550 1553 if (m_expr->hasConditionContextCodegen()) 1551 1554 generator.emitNodeInConditionContext(m_expr, topOfLoop.get(), scope->breakTarget(), true); … … 1561 1564 1562 1565 generator.emitLabel(scope->continueTarget()); 1563 generator.emitDebugHook(WillExecuteStatement, m_expr->lineNo(), m_expr->lineNo());1566 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1564 1567 1565 1568 if (m_expr->hasConditionContextCodegen()) … … 1582 1585 RefPtr<LabelScope> scope = generator.newLabelScope(LabelScope::Loop); 1583 1586 1584 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1587 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1585 1588 1586 1589 if (m_expr1) … … 1603 1606 1604 1607 generator.emitLabel(scope->continueTarget()); 1605 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1608 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1606 1609 if (m_expr3) 1607 1610 generator.emitNode(generator.ignoredResult(), m_expr3); … … 1630 1633 return emitThrowReferenceError(generator, "Left side of for-in statement is not a reference."); 1631 1634 1632 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1635 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1633 1636 1634 1637 if (m_init) … … 1693 1696 generator.emitLabel(scope->continueTarget()); 1694 1697 generator.emitNextPropertyName(propertyName, base.get(), i.get(), size.get(), iter.get(), loopStart.get()); 1695 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1698 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1696 1699 generator.emitLabel(scope->breakTarget()); 1697 1700 return dst; … … 1703 1706 RegisterID* ContinueNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1704 1707 { 1705 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1708 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1706 1709 1707 1710 LabelScope* scope = generator.continueTarget(m_ident); … … 1717 1720 RegisterID* BreakNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1718 1721 { 1719 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1722 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1720 1723 1721 1724 LabelScope* scope = generator.breakTarget(m_ident); … … 1730 1733 RegisterID* ReturnNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1731 1734 { 1732 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1735 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1733 1736 ASSERT(generator.codeType() == FunctionCode); 1734 1737 … … 1746 1749 generator.emitLabel(l0.get()); 1747 1750 } 1748 generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine() );1751 generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine(), column()); 1749 1752 return generator.emitReturn(r0); 1750 1753 } … … 1754 1757 RegisterID* WithNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1755 1758 { 1756 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1759 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1757 1760 1758 1761 RefPtr<RegisterID> scope = generator.newTemporary(); … … 1919 1922 RegisterID* SwitchNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1920 1923 { 1921 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1924 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1922 1925 1923 1926 RefPtr<LabelScope> scope = generator.newLabelScope(LabelScope::Switch); … … 1934 1937 RegisterID* LabelNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1935 1938 { 1936 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1939 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1937 1940 1938 1941 ASSERT(!generator.breakTarget(m_name)); … … 1949 1952 RegisterID* ThrowNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst) 1950 1953 { 1951 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1954 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1952 1955 1953 1956 if (dst == generator.ignoredResult()) … … 1966 1969 // optimizer knows they may be jumped to from anywhere. 1967 1970 1968 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine() );1971 generator.emitDebugHook(WillExecuteStatement, firstLine(), lastLine(), column()); 1969 1972 1970 1973 RefPtr<Label> tryStartLabel = generator.newLabel(); … … 2023 2026 RegisterID* ProgramNode::emitBytecode(BytecodeGenerator& generator, RegisterID*) 2024 2027 { 2025 generator.emitDebugHook(WillExecuteProgram, firstLine(), lastLine() );2028 generator.emitDebugHook(WillExecuteProgram, firstLine(), lastLine(), column()); 2026 2029 2027 2030 RefPtr<RegisterID> dstRegister = generator.newTemporary(); … … 2029 2032 emitStatementsBytecode(generator, dstRegister.get()); 2030 2033 2031 generator.emitDebugHook(DidExecuteProgram, firstLine(), lastLine() );2034 generator.emitDebugHook(DidExecuteProgram, firstLine(), lastLine(), column()); 2032 2035 generator.emitEnd(dstRegister.get()); 2033 2036 return 0; … … 2038 2041 RegisterID* EvalNode::emitBytecode(BytecodeGenerator& generator, RegisterID*) 2039 2042 { 2040 generator.emitDebugHook(WillExecuteProgram, firstLine(), lastLine() );2043 generator.emitDebugHook(WillExecuteProgram, firstLine(), lastLine(), column()); 2041 2044 2042 2045 RefPtr<RegisterID> dstRegister = generator.newTemporary(); … … 2044 2047 emitStatementsBytecode(generator, dstRegister.get()); 2045 2048 2046 generator.emitDebugHook(DidExecuteProgram, firstLine(), lastLine() );2049 generator.emitDebugHook(DidExecuteProgram, firstLine(), lastLine(), column()); 2047 2050 generator.emitEnd(dstRegister.get()); 2048 2051 return 0; … … 2053 2056 RegisterID* FunctionBodyNode::emitBytecode(BytecodeGenerator& generator, RegisterID*) 2054 2057 { 2055 generator.emitDebugHook(DidEnterCallFrame, firstLine(), lastLine() );2058 generator.emitDebugHook(DidEnterCallFrame, firstLine(), lastLine(), column()); 2056 2059 emitStatementsBytecode(generator, generator.ignoredResult()); 2057 2060 … … 2069 2072 if (!returnNode) { 2070 2073 RegisterID* r0 = generator.isConstructor() ? generator.thisRegister() : generator.emitLoad(0, jsUndefined()); 2071 generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine() );2074 generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine(), column()); 2072 2075 generator.emitReturn(r0); 2073 2076 return 0;
Note:
See TracChangeset
for help on using the changeset viewer.