Changeset 163851 in webkit for trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp
- Timestamp:
- Feb 10, 2014, 6:41:46 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp
r163844 r163851 304 304 compilePhantom(); 305 305 break; 306 case ToThis: 307 compileToThis(); 308 break; 306 309 case ValueAdd: 307 310 compileValueAdd(); … … 888 891 { 889 892 DFG_NODE_DO_TO_CHILDREN(m_graph, m_node, speculate); 893 } 894 895 void compileToThis() 896 { 897 LValue value = lowJSValue(m_node->child1()); 898 899 LBasicBlock isCellCase = FTL_NEW_BLOCK(m_out, ("ToThis is cell case")); 900 LBasicBlock slowCase = FTL_NEW_BLOCK(m_out, ("ToThis slow case")); 901 LBasicBlock continuation = FTL_NEW_BLOCK(m_out, ("ToThis continuation")); 902 903 m_out.branch(isCell(value), isCellCase, slowCase); 904 905 LBasicBlock lastNext = m_out.appendTo(isCellCase, slowCase); 906 ValueFromBlock fastResult = m_out.anchor(value); 907 m_out.branch(isType(value, FinalObjectType), continuation, slowCase); 908 909 m_out.appendTo(slowCase, continuation); 910 J_JITOperation_EJ function; 911 if (m_graph.isStrictModeFor(m_node->codeOrigin)) 912 function = operationToThisStrict; 913 else 914 function = operationToThis; 915 ValueFromBlock slowResult = m_out.anchor( 916 vmCall(m_out.operation(function), m_callFrame, value)); 917 m_out.jump(continuation); 918 919 m_out.appendTo(continuation, lastNext); 920 setJSValue(m_out.phi(m_out.int64, fastResult, slowResult)); 890 921 } 891 922
Note:
See TracChangeset
for help on using the changeset viewer.