Changeset 172820 in webkit for trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
- Timestamp:
- Aug 20, 2014, 6:03:20 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
r172794 r172820 140 140 141 141 RegisterID* result = generator.moveToDestinationIfNeeded(dst, generator.thisRegister()); 142 if (generator. isProfilingTypesWithHighFidelity()) {143 generator.emitProfileType sWithHighFidelity(generator.thisRegister(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);142 if (generator.vm()->typeProfiler()) { 143 generator.emitProfileType(generator.thisRegister(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 144 144 static const unsigned thisLength = 4; 145 generator.emit HighFidelityTypeProfilingExpressionInfo(position(), JSTextPosition(-1, position().offset + thisLength, -1));145 generator.emitTypeProfilerExpressionInfo(position(), JSTextPosition(-1, position().offset + thisLength, -1)); 146 146 } 147 147 return result; … … 160 160 if (dst == generator.ignoredResult()) 161 161 return 0; 162 if (generator. isProfilingTypesWithHighFidelity()) {163 generator.emitProfileType sWithHighFidelity(local.get(), ProfileTypesBytecodeHasGlobalID, nullptr);164 generator.emit HighFidelityTypeProfilingExpressionInfo(m_position, JSTextPosition(-1, m_position.offset + m_ident.length(), -1));162 if (generator.vm()->typeProfiler()) { 163 generator.emitProfileType(local.get(), ProfileTypeBytecodeHasGlobalID, nullptr); 164 generator.emitTypeProfilerExpressionInfo(m_position, JSTextPosition(-1, m_position.offset + m_ident.length(), -1)); 165 165 } 166 166 return generator.moveToDestinationIfNeeded(dst, local.get()); … … 172 172 RegisterID* finalDest = generator.finalDestination(dst); 173 173 RegisterID* result = generator.emitGetFromScope(finalDest, scope.get(), m_ident, ThrowIfNotFound); 174 if (generator. isProfilingTypesWithHighFidelity()) {175 generator.emitProfileType sWithHighFidelity(finalDest, ProfileTypesBytecodeGetFromScope, &m_ident);176 generator.emit HighFidelityTypeProfilingExpressionInfo(m_position, JSTextPosition(-1, m_position.offset + m_ident.length(), -1));174 if (generator.vm()->typeProfiler()) { 175 generator.emitProfileType(finalDest, ProfileTypeBytecodeGetFromScope, &m_ident); 176 generator.emitTypeProfilerExpressionInfo(m_position, JSTextPosition(-1, m_position.offset + m_ident.length(), -1)); 177 177 } 178 178 return result; … … 394 394 RegisterID* finalDest = generator.finalDestination(dst); 395 395 RegisterID* ret = generator.emitGetByVal(finalDest, base.get(), property); 396 if (generator. isProfilingTypesWithHighFidelity()) {397 generator.emitProfileType sWithHighFidelity(finalDest, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);398 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());396 if (generator.vm()->typeProfiler()) { 397 generator.emitProfileType(finalDest, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 398 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 399 399 } 400 400 return ret; … … 420 420 RegisterID* finalDest = generator.finalDestination(dst); 421 421 RegisterID* ret = generator.emitGetById(finalDest, base, m_ident); 422 if (generator. isProfilingTypesWithHighFidelity()) {423 generator.emitProfileType sWithHighFidelity(finalDest, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);424 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());422 if (generator.vm()->typeProfiler()) { 423 generator.emitProfileType(finalDest, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 424 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 425 425 } 426 426 return ret; … … 504 504 generator.emitLoad(callArguments.thisRegister(), jsUndefined()); 505 505 RegisterID* ret = generator.emitCall(returnValue.get(), func.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd()); 506 if (generator. isProfilingTypesWithHighFidelity()) {507 generator.emitProfileType sWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);508 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());506 if (generator.vm()->typeProfiler()) { 507 generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 508 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 509 509 } 510 510 return ret; … … 525 525 // local variable, then it's not one of our built-in constructors. 526 526 RegisterID* ret = generator.emitCall(returnValue.get(), func.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd()); 527 if (generator. isProfilingTypesWithHighFidelity()) {528 generator.emitProfileType sWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);529 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());527 if (generator.vm()->typeProfiler()) { 528 generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 529 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 530 530 } 531 531 return ret; … … 541 541 generator.emitGetFromScope(func.get(), callArguments.thisRegister(), m_ident, ThrowIfNotFound); 542 542 RegisterID* ret = generator.emitCall(returnValue.get(), func.get(), expectedFunction, callArguments, divot(), divotStart(), divotEnd()); 543 if (generator. isProfilingTypesWithHighFidelity()) {544 generator.emitProfileType sWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);545 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());543 if (generator.vm()->typeProfiler()) { 544 generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 545 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 546 546 } 547 547 return ret; … … 560 560 generator.emitMove(callArguments.thisRegister(), base.get()); 561 561 RegisterID* ret = generator.emitCall(returnValue.get(), function.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd()); 562 if (generator. isProfilingTypesWithHighFidelity()) {563 generator.emitProfileType sWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);564 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());562 if (generator.vm()->typeProfiler()) { 563 generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 564 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 565 565 } 566 566 return ret; … … 578 578 generator.emitGetById(function.get(), callArguments.thisRegister(), m_ident); 579 579 RegisterID* ret = generator.emitCall(returnValue.get(), function.get(), NoExpectedFunction, callArguments, divot(), divotStart(), divotEnd()); 580 if (generator. isProfilingTypesWithHighFidelity()) {581 generator.emitProfileType sWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);582 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());580 if (generator.vm()->typeProfiler()) { 581 generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 582 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 583 583 } 584 584 return ret; … … 652 652 generator.emitLabel(end.get()); 653 653 } 654 if (generator. isProfilingTypesWithHighFidelity()) {655 generator.emitProfileType sWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);656 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());654 if (generator.vm()->typeProfiler()) { 655 generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 656 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 657 657 } 658 658 return returnValue.get(); … … 766 766 generator.emitLabel(end.get()); 767 767 } 768 if (generator. isProfilingTypesWithHighFidelity()) {769 generator.emitProfileType sWithHighFidelity(returnValue.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);770 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());768 if (generator.vm()->typeProfiler()) { 769 generator.emitProfileType(returnValue.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 770 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 771 771 } 772 772 return returnValue.get(); … … 803 803 generator.emitReadOnlyExceptionIfNeeded(); 804 804 localReg = generator.emitMove(generator.tempDestination(dst), localReg); 805 } else if (local.isCaptured() || generator. isProfilingTypesWithHighFidelity()) {805 } else if (local.isCaptured() || generator.vm()->typeProfiler()) { 806 806 RefPtr<RegisterID> tempDst = generator.finalDestination(dst); 807 807 ASSERT(dst != localReg); … … 811 811 emitIncOrDec(generator, tempDstSrc.get(), m_operator); 812 812 generator.emitMove(localReg, tempDstSrc.get()); 813 if (generator. isProfilingTypesWithHighFidelity())814 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());813 if (generator.vm()->typeProfiler()) 814 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 815 815 return tempDst.get(); 816 816 } … … 823 823 RefPtr<RegisterID> oldValue = emitPostIncOrDec(generator, generator.finalDestination(dst), value.get(), m_operator); 824 824 generator.emitPutToScope(scope.get(), ident, value.get(), ThrowIfNotFound); 825 if (generator. isProfilingTypesWithHighFidelity()) {826 generator.emitProfileType sWithHighFidelity(value.get(), ProfileTypesBytecodePutToScope, &ident);827 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());825 if (generator.vm()->typeProfiler()) { 826 generator.emitProfileType(value.get(), ProfileTypeBytecodePutToScope, &ident); 827 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 828 828 } 829 829 … … 849 849 generator.emitExpressionInfo(divot(), divotStart(), divotEnd()); 850 850 generator.emitPutByVal(base.get(), property.get(), value.get()); 851 if (generator. isProfilingTypesWithHighFidelity()) {852 generator.emitProfileType sWithHighFidelity(value.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);853 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());851 if (generator.vm()->typeProfiler()) { 852 generator.emitProfileType(value.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 853 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 854 854 } 855 855 return generator.moveToDestinationIfNeeded(dst, oldValue); … … 873 873 generator.emitExpressionInfo(divot(), divotStart(), divotEnd()); 874 874 generator.emitPutById(base.get(), ident, value.get()); 875 if (generator. isProfilingTypesWithHighFidelity()) {876 generator.emitProfileType sWithHighFidelity(value.get(), ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);877 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());875 if (generator.vm()->typeProfiler()) { 876 generator.emitProfileType(value.get(), ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 877 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 878 878 } 879 879 return generator.moveToDestinationIfNeeded(dst, oldValue); … … 993 993 generator.emitReadOnlyExceptionIfNeeded(); 994 994 localReg = generator.emitMove(generator.tempDestination(dst), localReg); 995 } else if (local.isCaptured() || generator. isProfilingTypesWithHighFidelity()) {995 } else if (local.isCaptured() || generator.vm()->typeProfiler()) { 996 996 RefPtr<RegisterID> tempDst = generator.tempDestination(dst); 997 997 generator.emitMove(tempDst.get(), localReg); 998 998 emitIncOrDec(generator, tempDst.get(), m_operator); 999 999 generator.emitMove(localReg, tempDst.get()); 1000 if (generator. isProfilingTypesWithHighFidelity())1001 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());1000 if (generator.vm()->typeProfiler()) 1001 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 1002 1002 return generator.moveToDestinationIfNeeded(dst, tempDst.get()); 1003 1003 } … … 1011 1011 emitIncOrDec(generator, value.get(), m_operator); 1012 1012 generator.emitPutToScope(scope.get(), ident, value.get(), ThrowIfNotFound); 1013 if (generator. isProfilingTypesWithHighFidelity()) {1014 generator.emitProfileType sWithHighFidelity(value.get(), ProfileTypesBytecodePutToScope, &ident);1015 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());1013 if (generator.vm()->typeProfiler()) { 1014 generator.emitProfileType(value.get(), ProfileTypeBytecodePutToScope, &ident); 1015 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 1016 1016 } 1017 1017 return generator.moveToDestinationIfNeeded(dst, value.get()); … … 1034 1034 generator.emitExpressionInfo(divot(), divotStart(), divotEnd()); 1035 1035 generator.emitPutByVal(base.get(), property.get(), value); 1036 if (generator. isProfilingTypesWithHighFidelity()) {1037 generator.emitProfileType sWithHighFidelity(value, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);1038 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());1036 if (generator.vm()->typeProfiler()) { 1037 generator.emitProfileType(value, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 1038 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 1039 1039 } 1040 1040 return generator.moveToDestinationIfNeeded(dst, propDst.get()); … … 1056 1056 generator.emitExpressionInfo(divot(), divotStart(), divotEnd()); 1057 1057 generator.emitPutById(base.get(), ident, value); 1058 if (generator. isProfilingTypesWithHighFidelity()) {1059 generator.emitProfileType sWithHighFidelity(value, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);1060 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());1058 if (generator.vm()->typeProfiler()) { 1059 generator.emitProfileType(value, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 1060 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 1061 1061 } 1062 1062 return generator.moveToDestinationIfNeeded(dst, propDst.get()); … … 1507 1507 1508 1508 if (local.isCaptured() 1509 || generator. isProfilingTypesWithHighFidelity()1509 || generator.vm()->typeProfiler() 1510 1510 || generator.leftHandSideNeedsCopy(m_rightHasAssignments, m_right->isPure(generator))) { 1511 1511 RefPtr<RegisterID> result = generator.newTemporary(); … … 1514 1514 generator.emitMove(local.get(), result.get()); 1515 1515 generator.invalidateForInContextForLocal(local.get()); 1516 if (generator. isProfilingTypesWithHighFidelity())1517 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());1516 if (generator.vm()->typeProfiler()) 1517 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 1518 1518 return generator.moveToDestinationIfNeeded(dst, result.get()); 1519 1519 } … … 1529 1529 RefPtr<RegisterID> result = emitReadModifyAssignment(generator, generator.finalDestination(dst, value.get()), value.get(), m_right, m_operator, OperandTypes(ResultType::unknownType(), m_right->resultDescriptor()), this); 1530 1530 RegisterID* returnResult = generator.emitPutToScope(scope.get(), m_ident, result.get(), ThrowIfNotFound); 1531 if (generator. isProfilingTypesWithHighFidelity()) {1532 generator.emitProfileType sWithHighFidelity(result.get(), ProfileTypesBytecodePutToScope, &m_ident);1533 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());1531 if (generator.vm()->typeProfiler()) { 1532 generator.emitProfileType(result.get(), ProfileTypeBytecodePutToScope, &m_ident); 1533 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 1534 1534 } 1535 1535 return returnResult; … … 1545 1545 return generator.emitNode(dst, m_right); 1546 1546 } 1547 if (local.isCaptured() || generator. isProfilingTypesWithHighFidelity()) {1547 if (local.isCaptured() || generator.vm()->typeProfiler()) { 1548 1548 RefPtr<RegisterID> tempDst = generator.tempDestination(dst); 1549 1549 generator.emitNode(tempDst.get(), m_right); 1550 1550 generator.emitMove(local.get(), tempDst.get()); 1551 1551 generator.invalidateForInContextForLocal(local.get()); 1552 if (generator. isProfilingTypesWithHighFidelity())1553 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());1552 if (generator.vm()->typeProfiler()) 1553 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 1554 1554 return generator.moveToDestinationIfNeeded(dst, tempDst.get()); 1555 1555 } … … 1567 1567 generator.emitExpressionInfo(divot(), divotStart(), divotEnd()); 1568 1568 RegisterID* returnResult = generator.emitPutToScope(scope.get(), m_ident, result.get(), generator.isStrictMode() ? ThrowIfNotFound : DoNotThrowIfNotFound); 1569 if (generator. isProfilingTypesWithHighFidelity()) {1570 generator.emitProfileType sWithHighFidelity(result.get(), ProfileTypesBytecodePutToScope, &m_ident);1571 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());1569 if (generator.vm()->typeProfiler()) { 1570 generator.emitProfileType(result.get(), ProfileTypeBytecodePutToScope, &m_ident); 1571 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 1572 1572 } 1573 1573 return returnResult; … … 1584 1584 RegisterID* forwardResult = (dst == generator.ignoredResult()) ? result : generator.moveToDestinationIfNeeded(generator.tempDestination(result), result); 1585 1585 generator.emitPutById(base.get(), m_ident, forwardResult); 1586 if (generator. isProfilingTypesWithHighFidelity()) {1587 generator.emitProfileType sWithHighFidelity(forwardResult, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);1588 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());1586 if (generator.vm()->typeProfiler()) { 1587 generator.emitProfileType(forwardResult, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 1588 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 1589 1589 } 1590 1590 return generator.moveToDestinationIfNeeded(dst, forwardResult); … … 1603 1603 generator.emitExpressionInfo(divot(), divotStart(), divotEnd()); 1604 1604 RegisterID* ret = generator.emitPutById(base.get(), m_ident, updatedValue); 1605 if (generator. isProfilingTypesWithHighFidelity()) {1606 generator.emitProfileType sWithHighFidelity(updatedValue, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);1607 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());1605 if (generator.vm()->typeProfiler()) { 1606 generator.emitProfileType(updatedValue, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 1607 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 1608 1608 } 1609 1609 return ret; … … 1629 1629 RegisterID* forwardResult = (dst == generator.ignoredResult()) ? result : generator.moveToDestinationIfNeeded(generator.tempDestination(result), result); 1630 1630 generator.emitPutByVal(base.get(), property.get(), forwardResult); 1631 if (generator. isProfilingTypesWithHighFidelity()) {1632 generator.emitProfileType sWithHighFidelity(forwardResult, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);1633 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());1631 if (generator.vm()->typeProfiler()) { 1632 generator.emitProfileType(forwardResult, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 1633 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 1634 1634 } 1635 1635 return generator.moveToDestinationIfNeeded(dst, forwardResult); … … 1649 1649 generator.emitExpressionInfo(divot(), divotStart(), divotEnd()); 1650 1650 generator.emitPutByVal(base.get(), property.get(), updatedValue); 1651 if (generator. isProfilingTypesWithHighFidelity()) {1652 generator.emitProfileType sWithHighFidelity(updatedValue, ProfileTypesBytecodeDoesNotHaveGlobalID, nullptr);1653 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());1651 if (generator.vm()->typeProfiler()) { 1652 generator.emitProfileType(updatedValue, ProfileTypeBytecodeDoesNotHaveGlobalID, nullptr); 1653 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 1654 1654 } 1655 1655 … … 1677 1677 1678 1678 // FIXME: Maybe call emitExpressionInfo here. 1679 if (local.isCaptured() || generator. isProfilingTypesWithHighFidelity()) {1679 if (local.isCaptured() || generator.vm()->typeProfiler()) { 1680 1680 RefPtr<RegisterID> tempDst = generator.newTemporary(); 1681 1681 generator.emitNode(tempDst.get(), m_init); … … 1787 1787 RegisterID* EmptyVarExpression::emitBytecode(BytecodeGenerator& generator, RegisterID*) 1788 1788 { 1789 if (!generator. isProfilingTypesWithHighFidelity())1789 if (!generator.vm()->typeProfiler()) 1790 1790 return nullptr; 1791 1791 1792 1792 if (Local local = generator.local(m_ident)) 1793 generator.emitProfileType sWithHighFidelity(local.get(), ProfileTypesBytecodeHasGlobalID, nullptr);1793 generator.emitProfileType(local.get(), ProfileTypeBytecodeHasGlobalID, nullptr); 1794 1794 else { 1795 1795 RefPtr<RegisterID> scope = generator.emitResolveScope(generator.newTemporary(), m_ident); 1796 1796 RefPtr<RegisterID> value = generator.emitGetFromScope(generator.newTemporary(), scope.get(), m_ident, DoNotThrowIfNotFound); 1797 generator.emitProfileType sWithHighFidelity(value.get(), ProfileTypesBytecodeGetFromScope, &m_ident);1798 } 1799 1800 generator.emit HighFidelityTypeProfilingExpressionInfo(position(), JSTextPosition(-1, position().offset + m_ident.length(), -1));1797 generator.emitProfileType(value.get(), ProfileTypeBytecodeGetFromScope, &m_ident); 1798 } 1799 1800 generator.emitTypeProfilerExpressionInfo(position(), JSTextPosition(-1, position().offset + m_ident.length(), -1)); 1801 1801 1802 1802 // It's safe to return null here because this node will always be a child node of VarStatementNode which ignores our return value. … … 2277 2277 2278 2278 RefPtr<RegisterID> returnRegister = m_value ? generator.emitNode(dst, m_value) : generator.emitLoad(dst, jsUndefined()); 2279 if (generator. isProfilingTypesWithHighFidelity()) {2280 generator.emitProfileType sWithHighFidelity(returnRegister.get(), ProfileTypesBytecodeFunctionReturnStatement, nullptr);2281 generator.emit HighFidelityTypeProfilingExpressionInfo(divotStart(), divotEnd());2279 if (generator.vm()->typeProfiler()) { 2280 generator.emitProfileType(returnRegister.get(), ProfileTypeBytecodeFunctionReturnStatement, nullptr); 2281 generator.emitTypeProfilerExpressionInfo(divotStart(), divotEnd()); 2282 2282 } 2283 2283 if (generator.scopeDepth()) { … … 2608 2608 void FunctionBodyNode::emitBytecode(BytecodeGenerator& generator, RegisterID*) 2609 2609 { 2610 if (generator. isProfilingTypesWithHighFidelity()) {2610 if (generator.vm()->typeProfiler()) { 2611 2611 for (size_t i = 0; i < m_parameters->size(); i++) { 2612 2612 // FIXME: Handle Destructuring assignments into arguments. … … 2615 2615 BindingNode* parameter = static_cast<BindingNode*>(m_parameters->at(i)); 2616 2616 RegisterID reg(CallFrame::argumentOffset(i)); 2617 generator.emitProfileType sWithHighFidelity(®, ProfileTypesBytecodeFunctionArgument, nullptr);2618 generator.emit HighFidelityTypeProfilingExpressionInfo(parameter->divotStart(), parameter->divotEnd());2617 generator.emitProfileType(®, ProfileTypeBytecodeFunctionArgument, nullptr); 2618 generator.emitTypeProfilerExpressionInfo(parameter->divotStart(), parameter->divotEnd()); 2619 2619 } 2620 2620 } … … 2636 2636 if (!returnNode) { 2637 2637 RegisterID* r0 = generator.isConstructor() ? generator.thisRegister() : generator.emitLoad(0, jsUndefined()); 2638 if (generator. isProfilingTypesWithHighFidelity())2639 generator.emitProfileType sWithHighFidelity(r0, ProfileTypesBytecodeFunctionReturnStatement, nullptr); // Do not emit expression info for this profile because it's not in the user's source code.2638 if (generator.vm()->typeProfiler()) 2639 generator.emitProfileType(r0, ProfileTypeBytecodeFunctionReturnStatement, nullptr); // Do not emit expression info for this profile because it's not in the user's source code. 2640 2640 ASSERT(startOffset() >= lineStartOffset()); 2641 2641 generator.emitDebugHook(WillLeaveCallFrame, lastLine(), startOffset(), lineStartOffset());
Note:
See TracChangeset
for help on using the changeset viewer.