summaryrefslogtreecommitdiffstats
path: root/doc/src/snippets/code
ModeNameSize
-rw-r--r--doc.src.qtscripttools.qdoc1583logstatsplain
-rw-r--r--doc_src_activeqt-dumpcpp.qdoc1971logstatsplain
-rw-r--r--doc_src_appicon.qdoc1762logstatsplain
-rw-r--r--doc_src_assistant-manual.qdoc4345logstatsplain
-rw-r--r--doc_src_atomic-operations.qdoc2141logstatsplain
-rw-r--r--doc_src_compiler-notes.qdoc1606logstatsplain
-rw-r--r--doc_src_containers.qdoc5074logstatsplain
-rw-r--r--doc_src_coordsys.qdoc2252logstatsplain
-rw-r--r--doc_src_debug.qdoc1838logstatsplain
-rw-r--r--doc_src_deployment.qdoc10858logstatsplain
-rw-r--r--doc_src_designer-manual.qdoc3305logstatsplain
-rw-r--r--doc_src_dnd.qdoc2142logstatsplain
-rw-r--r--doc_src_emb-charinput.qdoc1817logstatsplain
-rw-r--r--doc_src_emb-crosscompiling.qdoc2144logstatsplain
-rw-r--r--doc_src_emb-envvars.qdoc2208logstatsplain
-rw-r--r--doc_src_emb-features.qdoc1683logstatsplain
-rw-r--r--doc_src_emb-fonts.qdoc1554logstatsplain
-rw-r--r--doc_src_emb-install.qdoc2086logstatsplain
-rw-r--r--doc_src_emb-performance.qdoc1901logstatsplain
-rw-r--r--doc_src_emb-pointer.qdoc2437logstatsplain
-rw-r--r--doc_src_emb-qvfb.qdoc3355logstatsplain
-rw-r--r--doc_src_emb-running.qdoc2284logstatsplain
-rw-r--r--doc_src_emb-vnc.qdoc1904logstatsplain
-rw-r--r--doc_src_examples_activeqt_comapp.qdoc2389logstatsplain
-rw-r--r--doc_src_examples_activeqt_dotnet.qdoc1598logstatsplain
-rw-r--r--doc_src_examples_activeqt_menus.qdoc1716logstatsplain
-rw-r--r--doc_src_examples_application.qdoc1585logstatsplain
-rw-r--r--doc_src_examples_arrowpad.qdoc1659logstatsplain
-rw-r--r--doc_src_examples_containerextension.qdoc1575logstatsplain
-rw-r--r--doc_src_examples_customwidgetplugin.qdoc1575logstatsplain
-rw-r--r--doc_src_examples_dropsite.qdoc1539logstatsplain
-rw-r--r--doc_src_examples_editabletreemodel.qdoc1638logstatsplain
-rw-r--r--doc_src_examples_hellotr.qdoc1920logstatsplain
-rw-r--r--doc_src_examples_icons.qdoc1680logstatsplain
-rw-r--r--doc_src_examples_imageviewer.qdoc1839logstatsplain
-rw-r--r--doc_src_examples_qtscriptcustomclass.qdoc2009logstatsplain
-rw-r--r--doc_src_examples_simpledommodel.qdoc2004logstatsplain
-rw-r--r--doc_src_examples_simpletreemodel.qdoc1997logstatsplain
-rw-r--r--doc_src_examples_svgalib.qdoc1546logstatsplain
-rw-r--r--doc_src_examples_taskmenuextension.qdoc1575logstatsplain
-rw-r--r--doc_src_examples_textfinder.qdoc1627logstatsplain
-rw-r--r--doc_src_examples_trollprint.qdoc2443logstatsplain
-rw-r--r--doc_src_examples_tutorial.qdoc1570logstatsplain
-rw-r--r--doc_src_examples_worldtimeclockplugin.qdoc1575logstatsplain
-rw-r--r--doc_src_exportedfunctions.qdoc1785logstatsplain
-rw-r--r--doc_src_gpl.qdoc36805logstatsplain
-rw-r--r--doc_src_graphicsview.qdoc2964logstatsplain
-rw-r--r--doc_src_groups.qdoc1981logstatsplain
-rw-r--r--doc_src_i18n.qdoc4802logstatsplain
-rw-r--r--doc_src_installation.qdoc5025logstatsplain
-rw-r--r--doc_src_introtodbus.qdoc1684logstatsplain
-rw-r--r--doc_src_layout.qdoc3939logstatsplain
-rw-r--r--doc_src_lgpl.qdoc27963logstatsplain
-rw-r--r--doc_src_licenses.qdoc6782logstatsplain
-rw-r--r--doc_src_linguist-manual.qdoc4942logstatsplain
-rw-r--r--doc_src_mac-differences.qdoc2477logstatsplain
-rw-r--r--doc_src_moc.qdoc2920logstatsplain
-rw-r--r--doc_src_model-view-programming.qdoc2140logstatsplain
-rw-r--r--doc_src_modules.qdoc1520logstatsplain
-rw-r--r--doc_src_objecttrees.qdoc1709logstatsplain
-rw-r--r--doc_src_phonon-api.qdoc6002logstatsplain
-rw-r--r--doc_src_phonon.qdoc1602logstatsplain
-rw-r--r--doc_src_platform-notes.qdoc2244logstatsplain
-rw-r--r--doc_src_plugins-howto.qdoc2576logstatsplain
-rw-r--r--doc_src_porting-qsa.qdoc4517logstatsplain
-rw-r--r--doc_src_porting4-canvas.qdoc3831logstatsplain
-rw-r--r--doc_src_porting4-designer.qdoc4003logstatsplain
-rw-r--r--doc_src_porting4.qdoc7376logstatsplain
-rw-r--r--doc_src_properties.qdoc3077logstatsplain
-rw-r--r--doc_src_q3asciidict.qdoc2921logstatsplain
-rw-r--r--doc_src_q3dict.qdoc2148logstatsplain
-rw-r--r--doc_src_q3intdict.qdoc2701logstatsplain
-rw-r--r--doc_src_q3memarray.qdoc2984logstatsplain
-rw-r--r--doc_src_q3ptrdict.qdoc3017logstatsplain
-rw-r--r--doc_src_q3ptrlist.qdoc3291logstatsplain
-rw-r--r--doc_src_q3valuelist.qdoc3398logstatsplain
-rw-r--r--doc_src_q3valuestack.qdoc1704logstatsplain
-rw-r--r--doc_src_q3valuevector.qdoc3124logstatsplain
-rw-r--r--doc_src_qalgorithms.qdoc7689logstatsplain
-rw-r--r--doc_src_qaxcontainer.qdoc1571logstatsplain
-rw-r--r--doc_src_qaxserver.qdoc5013logstatsplain
-rw-r--r--doc_src_qcache.qdoc1754logstatsplain
-rw-r--r--doc_src_qdbusadaptors.qdoc7471logstatsplain
-rw-r--r--doc_src_qiterator.qdoc7471logstatsplain
-rw-r--r--doc_src_qmake-manual.qdoc14240logstatsplain
-rw-r--r--doc_src_qnamespace.qdoc2062logstatsplain
-rw-r--r--doc_src_qpair.qdoc1702logstatsplain
-rw-r--r--doc_src_qplugin.qdoc1830logstatsplain
-rw-r--r--doc_src_qset.qdoc3548logstatsplain
-rw-r--r--doc_src_qsignalspy.qdoc2554logstatsplain
-rw-r--r--doc_src_qt-conf.qdoc1620logstatsplain
-rw-r--r--doc_src_qt-embedded-displaymanagement.qdoc2231logstatsplain
-rw-r--r--doc_src_qt3support.qdoc1567logstatsplain
-rw-r--r--doc_src_qt3to4.qdoc1882logstatsplain
-rw-r--r--doc_src_qt4-accessibility.qdoc2877logstatsplain
-rw-r--r--doc_src_qt4-arthur.qdoc3520logstatsplain
-rw-r--r--doc_src_qt4-intro.qdoc2674logstatsplain
-rw-r--r--doc_src_qt4-mainwindow.qdoc2903logstatsplain
-rw-r--r--doc_src_qt4-sql.qdoc1762logstatsplain
-rw-r--r--doc_src_qt4-styles.qdoc2522logstatsplain
-rw-r--r--doc_src_qt4-tulip.qdoc4677logstatsplain
-rw-r--r--doc_src_qtcore.qdoc1528logstatsplain
-rw-r--r--doc_src_qtdbus.qdoc1557logstatsplain
-rw-r--r--doc_src_qtdesigner.qdoc8178logstatsplain
-rw-r--r--doc_src_qtestevent.qdoc1725logstatsplain
-rw-r--r--doc_src_qtestlib.qdoc3462logstatsplain
-rw-r--r--doc_src_qtgui.qdoc1527logstatsplain
-rw-r--r--doc_src_qthelp.qdoc4852logstatsplain
-rw-r--r--doc_src_qtmac-as-native.qdoc1545logstatsplain
-rw-r--r--doc_src_qtmultimedia.qdoc1569logstatsplain
-rw-r--r--doc_src_qtnetwork.qdoc1563logstatsplain
-rw-r--r--doc_src_qtopengl.qdoc1561logstatsplain
-rw-r--r--doc_src_qtscript.qdoc24058logstatsplain
-rw-r--r--doc_src_qtscriptextensions.qdoc1685logstatsplain
-rw-r--r--doc_src_qtsql.qdoc1555logstatsplain
-rw-r--r--doc_src_qtsvg.qdoc1555logstatsplain
-rw-r--r--doc_src_qttest.qdoc1565logstatsplain
-rw-r--r--doc_src_qtuiloader.qdoc1567logstatsplain
-rw-r--r--doc_src_qtxml.qdoc2716logstatsplain
-rw-r--r--doc_src_qtxmlpatterns.qdoc6502logstatsplain
-rw-r--r--doc_src_qvarlengtharray.qdoc1974logstatsplain
-rw-r--r--doc_src_rcc.qdoc1533logstatsplain
-rw-r--r--doc_src_resources.qdoc2110logstatsplain
-rw-r--r--doc_src_richtext.qdoc2255logstatsplain
-rw-r--r--doc_src_session.qdoc1516logstatsplain
-rw-r--r--doc_src_sql-driver.qdoc6306logstatsplain
-rw-r--r--doc_src_styles.qdoc4621logstatsplain
-rw-r--r--doc_src_stylesheet.qdoc39252logstatsplain
-rw-r--r--doc_src_symbian-introduction.qdoc1807logstatsplain
-rw-r--r--doc_src_uic.qdoc1641logstatsplain
-rw-r--r--doc_src_unicode.qdoc1716logstatsplain
-rw-r--r--doc_src_unix-signal-handlers.qdoc3680logstatsplain
-rw-r--r--doc_src_wince-customization.qdoc3080logstatsplain
-rw-r--r--doc_src_wince-introduction.qdoc1553logstatsplain
-rw-r--r--doc_src_wince-opengl.qdoc1595logstatsplain
-rw-r--r--src.gui.text.qtextdocumentwriter.cpp1616logstatsplain
-rw-r--r--src.qdbus.qdbuspendingcall.cpp2162logstatsplain
-rw-r--r--src.qdbus.qdbuspendingreply.cpp2111logstatsplain
-rw-r--r--src.scripttools.qscriptenginedebugger.cpp1654logstatsplain
-rw-r--r--src_activeqt_container_qaxbase.cpp4668logstatsplain
-rw-r--r--src_activeqt_container_qaxscript.cpp1701logstatsplain
-rw-r--r--src_activeqt_control_qaxbindable.cpp2446logstatsplain
-rw-r--r--src_activeqt_control_qaxfactory.cpp5087logstatsplain
-rw-r--r--src_corelib_codecs_qtextcodec.cpp2235logstatsplain
-rw-r--r--src_corelib_codecs_qtextcodecplugin.cpp1840logstatsplain
-rw-r--r--src_corelib_concurrent_qfuture.cpp1910logstatsplain
-rw-r--r--src_corelib_concurrent_qfuturesynchronizer.cpp1786logstatsplain
-rw-r--r--src_corelib_concurrent_qfuturewatcher.cpp1794logstatsplain
-rw-r--r--src_corelib_concurrent_qtconcurrentexception.cpp2012logstatsplain
-rw-r--r--src_corelib_concurrent_qtconcurrentfilter.cpp4869logstatsplain
-rw-r--r--src_corelib_concurrent_qtconcurrentmap.cpp4882logstatsplain
-rw-r--r--src_corelib_concurrent_qtconcurrentrun.cpp3018logstatsplain
-rw-r--r--src_corelib_concurrent_qthreadpool.cpp1813logstatsplain
-rw-r--r--src_corelib_global_qglobal.cpp9278logstatsplain
-rw-r--r--src_corelib_io_qabstractfileengine.cpp3240logstatsplain
-rw-r--r--src_corelib_io_qdatastream.cpp3038logstatsplain
-rw-r--r--src_corelib_io_qdir.cpp4104logstatsplain
-rw-r--r--src_corelib_io_qdiriterator.cpp1693logstatsplain
-rw-r--r--src_corelib_io_qfile.cpp2077logstatsplain
-rw-r--r--src_corelib_io_qfileinfo.cpp4060logstatsplain
-rw-r--r--src_corelib_io_qiodevice.cpp2482logstatsplain
-rw-r--r--src_corelib_io_qprocess.cpp3058logstatsplain
-rw-r--r--src_corelib_io_qsettings.cpp7131logstatsplain
-rw-r--r--src_corelib_io_qtemporaryfile.cpp1757logstatsplain
-rw-r--r--src_corelib_io_qtextstream.cpp2871logstatsplain
-rw-r--r--src_corelib_io_qurl.cpp2439logstatsplain
-rw-r--r--src_corelib_kernel_qabstracteventdispatcher.cpp1545logstatsplain
-rw-r--r--src_corelib_kernel_qabstractitemmodel.cpp1795logstatsplain
-rw-r--r--src_corelib_kernel_qcoreapplication.cpp2941logstatsplain
-rw-r--r--src_corelib_kernel_qmetaobject.cpp3775logstatsplain
-rw-r--r--src_corelib_kernel_qmetatype.cpp2509logstatsplain
-rw-r--r--src_corelib_kernel_qmimedata.cpp2748logstatsplain
-rw-r--r--src_corelib_kernel_qobject.cpp9133logstatsplain
-rw-r--r--src_corelib_kernel_qsystemsemaphore.cpp2171logstatsplain
-rw-r--r--src_corelib_kernel_qtimer.cpp1707logstatsplain
-rw-r--r--src_corelib_kernel_qvariant.cpp3783logstatsplain
-rw-r--r--src_corelib_plugin_qlibrary.cpp2195logstatsplain
-rw-r--r--src_corelib_plugin_quuid.cpp1650logstatsplain
-rw-r--r--src_corelib_statemachine_qstatemachine.cpp1845logstatsplain
-rw-r--r--src_corelib_thread_qatomic.cpp2396logstatsplain
-rw-r--r--src_corelib_thread_qmutex.cpp3813logstatsplain
-rw-r--r--src_corelib_thread_qmutexpool.cpp1826logstatsplain
-rw-r--r--src_corelib_thread_qreadwritelock.cpp2259logstatsplain
-rw-r--r--src_corelib_thread_qsemaphore.cpp2558logstatsplain
-rw-r--r--src_corelib_thread_qthread.cpp1745logstatsplain
-rw-r--r--src_corelib_thread_qwaitcondition_unix.cpp2129logstatsplain
-rw-r--r--src_corelib_tools_qbitarray.cpp3938logstatsplain
-rw-r--r--src_corelib_tools_qbytearray.cpp8270logstatsplain
-rw-r--r--src_corelib_tools_qdatetime.cpp4006logstatsplain
-rw-r--r--src_corelib_tools_qeasingcurve.cpp1551logstatsplain
-rw-r--r--src_corelib_tools_qhash.cpp5791logstatsplain
-rw-r--r--src_corelib_tools_qlinkedlist.cpp4299logstatsplain
-rw-r--r--src_corelib_tools_qlistdata.cpp5352logstatsplain
-rw-r--r--src_corelib_tools_qlocale.cpp3009logstatsplain
-rw-r--r--src_corelib_tools_qmap.cpp6254logstatsplain
-rw-r--r--src_corelib_tools_qpoint.cpp2943logstatsplain
-rw-r--r--src_corelib_tools_qqueue.cpp1645logstatsplain
-rw-r--r--src_corelib_tools_qrect.cpp1672logstatsplain
-rw-r--r--src_corelib_tools_qregexp.cpp5766logstatsplain
-rw-r--r--src_corelib_tools_qscopedpointer.cpp3925logstatsplain
-rw-r--r--src_corelib_tools_qsize.cpp2688logstatsplain
-rw-r--r--src_corelib_tools_qstring.cpp2302logstatsplain
-rw-r--r--src_corelib_tools_qtimeline.cpp2004logstatsplain
-rw-r--r--src_corelib_tools_qvector.cpp4119logstatsplain
-rw-r--r--src_corelib_xml_qxmlstream.cpp1926logstatsplain
-rw-r--r--src_gui_accessible_qaccessible.cpp1653logstatsplain
-rw-r--r--src_gui_dialogs_qabstractprintdialog.cpp1619logstatsplain
-rw-r--r--src_gui_dialogs_qfiledialog.cpp3536logstatsplain
-rw-r--r--src_gui_dialogs_qfontdialog.cpp2497logstatsplain
-rw-r--r--src_gui_dialogs_qmessagebox.cpp3999logstatsplain
-rw-r--r--src_gui_dialogs_qwizard.cpp2404logstatsplain
-rw-r--r--src_gui_effects_qgraphicseffect.cpp2677logstatsplain
-rw-r--r--src_gui_embedded_qcopchannel_qws.cpp2075logstatsplain
-rw-r--r--src_gui_embedded_qmouse_qws.cpp1556logstatsplain
-rw-r--r--src_gui_embedded_qmousetslib_qws.cpp1624logstatsplain
-rw-r--r--src_gui_embedded_qscreen_qws.cpp1605logstatsplain
-rw-r--r--src_gui_embedded_qtransportauth_qws.cpp2329logstatsplain
-rw-r--r--src_gui_embedded_qwindowsystem_qws.cpp2595logstatsplain
-rw-r--r--src_gui_graphicsview_qgraphicsgridlayout.cpp1872logstatsplain
-rw-r--r--src_gui_graphicsview_qgraphicsitem.cpp6397logstatsplain
-rw-r--r--src_gui_graphicsview_qgraphicslinearlayout.cpp1864logstatsplain
-rw-r--r--src_gui_graphicsview_qgraphicsproxywidget.cpp2485logstatsplain
-rw-r--r--src_gui_graphicsview_qgraphicsscene.cpp3308logstatsplain
-rw-r--r--src_gui_graphicsview_qgraphicssceneevent.cpp1545logstatsplain
-rw-r--r--src_gui_graphicsview_qgraphicsview.cpp3434logstatsplain
-rw-r--r--src_gui_graphicsview_qgraphicswidget.cpp2071logstatsplain
-rw-r--r--src_gui_image_qbitmap.cpp1619logstatsplain
-rw-r--r--src_gui_image_qicon.cpp2192logstatsplain
-rw-r--r--src_gui_image_qimage.cpp2293logstatsplain
-rw-r--r--src_gui_image_qimagereader.cpp1966logstatsplain
-rw-r--r--src_gui_image_qimagewriter.cpp1905logstatsplain
-rw-r--r--src_gui_image_qmovie.cpp1695logstatsplain
-rw-r--r--src_gui_image_qpixmap.cpp1795logstatsplain
-rw-r--r--src_gui_image_qpixmapcache.cpp1911logstatsplain
-rw-r--r--src_gui_image_qpixmapfilter.cpp2070logstatsplain
-rw-r--r--src_gui_itemviews_qabstractitemview.cpp1829logstatsplain
-rw-r--r--src_gui_itemviews_qdatawidgetmapper.cpp2106logstatsplain
-rw-r--r--src_gui_itemviews_qitemeditorfactory.cpp2046logstatsplain
-rw-r--r--src_gui_itemviews_qitemselectionmodel.cpp1693logstatsplain
-rw-r--r--src_gui_itemviews_qstandarditemmodel.cpp2456logstatsplain
-rw-r--r--src_gui_itemviews_qtablewidget.cpp1588logstatsplain
-rw-r--r--src_gui_itemviews_qtreewidget.cpp1787logstatsplain
-rw-r--r--src_gui_kernel_qaction.cpp1798logstatsplain
-rw-r--r--src_gui_kernel_qapplication.cpp4056logstatsplain
-rw-r--r--src_gui_kernel_qapplication_x11.cpp1664logstatsplain
-rw-r--r--src_gui_kernel_qclipboard.cpp1750logstatsplain
-rw-r--r--src_gui_kernel_qevent.cpp1802logstatsplain
-rw-r--r--src_gui_kernel_qformlayout.cpp2525logstatsplain
-rw-r--r--src_gui_kernel_qkeysequence.cpp1910logstatsplain
-rw-r--r--src_gui_kernel_qlayout.cpp2024logstatsplain
-rw-r--r--src_gui_kernel_qlayoutitem.cpp1814logstatsplain
-rw-r--r--src_gui_kernel_qshortcut.cpp2012logstatsplain
-rw-r--r--src_gui_kernel_qshortcutmap.cpp1532logstatsplain
-rw-r--r--src_gui_kernel_qsound.cpp1614logstatsplain
-rw-r--r--src_gui_kernel_qwidget.cpp3041logstatsplain
-rw-r--r--src_gui_painting_qbrush.cpp1725logstatsplain
-rw-r--r--src_gui_painting_qcolor.cpp1750logstatsplain
-rw-r--r--src_gui_painting_qdrawutil.cpp2340logstatsplain
-rw-r--r--src_gui_painting_qmatrix.cpp1756logstatsplain
-rw-r--r--src_gui_painting_qpainter.cpp5210logstatsplain
-rw-r--r--src_gui_painting_qpainterpath.cpp3401logstatsplain
-rw-r--r--src_gui_painting_qpen.cpp2239logstatsplain
-rw-r--r--src_gui_painting_qregion.cpp1920logstatsplain
-rw-r--r--src_gui_painting_qregion_unix.cpp1842logstatsplain
-rw-r--r--src_gui_painting_qtransform.cpp2068logstatsplain
-rw-r--r--src_gui_qproxystyle.cpp2525logstatsplain
-rw-r--r--src_gui_styles_qstyle.cpp1587logstatsplain
-rw-r--r--src_gui_styles_qstyleoption.cpp1895logstatsplain
-rw-r--r--src_gui_text_qfont.cpp1903logstatsplain
-rw-r--r--src_gui_text_qfontmetrics.cpp1811logstatsplain
-rw-r--r--src_gui_text_qsyntaxhighlighter.cpp3619logstatsplain
-rw-r--r--src_gui_text_qtextcursor.cpp2228logstatsplain
-rw-r--r--src_gui_text_qtextdocument.cpp1731logstatsplain
-rw-r--r--src_gui_text_qtextlayout.cpp2006logstatsplain
-rw-r--r--src_gui_util_qcompleter.cpp2065logstatsplain
-rw-r--r--src_gui_util_qdesktopservices.cpp1891logstatsplain
-rw-r--r--src_gui_util_qundostack.cpp3165logstatsplain
-rw-r--r--src_gui_widgets_qabstractbutton.cpp1813logstatsplain
-rw-r--r--src_gui_widgets_qabstractspinbox.cpp1663logstatsplain
-rw-r--r--src_gui_widgets_qcalendarwidget.cpp2079logstatsplain
-rw-r--r--src_gui_widgets_qcheckbox.cpp1572logstatsplain
-rw-r--r--src_gui_widgets_qdatetimeedit.cpp2060logstatsplain
-rw-r--r--src_gui_widgets_qdockwidget.cpp1723logstatsplain
-rw-r--r--src_gui_widgets_qframe.cpp1668logstatsplain
-rw-r--r--src_gui_widgets_qgroupbox.cpp1544logstatsplain
-rw-r--r--src_gui_widgets_qlabel.cpp2124logstatsplain
-rw-r--r--src_gui_widgets_qlineedit.cpp1723logstatsplain
-rw-r--r--src_gui_widgets_qmainwindow.cpp1992logstatsplain
-rw-r--r--src_gui_widgets_qmenu.cpp1936logstatsplain
-rw-r--r--src_gui_widgets_qmenubar.cpp1593logstatsplain
-rw-r--r--src_gui_widgets_qplaintextedit.cpp1786logstatsplain
-rw-r--r--src_gui_widgets_qpushbutton.cpp1568logstatsplain
-rw-r--r--src_gui_widgets_qradiobutton.cpp1584logstatsplain
-rw-r--r--src_gui_widgets_qrubberband.cpp2056logstatsplain
-rw-r--r--src_gui_widgets_qscrollarea.cpp1736logstatsplain
-rw-r--r--src_gui_widgets_qspinbox.cpp1870logstatsplain
-rw-r--r--src_gui_widgets_qsplashscreen.cpp1804logstatsplain
-rw-r--r--src_gui_widgets_qsplitter.cpp1701logstatsplain
-rw-r--r--src_gui_widgets_qstatusbar.cpp1561logstatsplain
-rw-r--r--src_gui_widgets_qtextbrowser.cpp1611logstatsplain
-rw-r--r--src_gui_widgets_qtextedit.cpp1839logstatsplain
-rw-r--r--src_gui_widgets_qvalidator.cpp3995logstatsplain
-rw-r--r--src_gui_widgets_qworkspace.cpp1612logstatsplain
-rw-r--r--src_network_access_qftp.cpp2477logstatsplain
-rw-r--r--src_network_access_qhttp.cpp3035logstatsplain
-rw-r--r--src_network_access_qnetworkaccessmanager.cpp2223logstatsplain
-rw-r--r--src_network_access_qnetworkdiskcache.cpp2314logstatsplain
-rw-r--r--src_network_access_qnetworkreply.cpp1905logstatsplain
-rw-r--r--src_network_access_qnetworkrequest.cpp1582logstatsplain
-rw-r--r--src_network_kernel_qhostaddress.cpp1651logstatsplain
-rw-r--r--src_network_kernel_qhostinfo.cpp2542logstatsplain
-rw-r--r--src_network_kernel_qnetworkproxy.cpp1802logstatsplain
-rw-r--r--src_network_socket_qabstractsocket.cpp2072logstatsplain
-rw-r--r--src_network_socket_qlocalsocket_unix.cpp1725logstatsplain
-rw-r--r--src_network_socket_qnativesocketengine.cpp2025logstatsplain
-rw-r--r--src_network_socket_qtcpserver.cpp1552logstatsplain
-rw-r--r--src_network_socket_qudpsocket.cpp2124logstatsplain
-rw-r--r--src_network_ssl_qsslcertificate.cpp1751logstatsplain
-rw-r--r--src_network_ssl_qsslconfiguration.cpp1639logstatsplain
-rw-r--r--src_network_ssl_qsslsocket.cpp3112logstatsplain
-rw-r--r--src_opengl_qgl.cpp4317logstatsplain
-rw-r--r--src_opengl_qglcolormap.cpp1953logstatsplain
-rw-r--r--src_opengl_qglpixelbuffer.cpp1893logstatsplain
-rw-r--r--src_opengl_qglshaderprogram.cpp2787logstatsplain
-rw-r--r--src_qdbus_qdbusabstractinterface.cpp2176logstatsplain
-rw-r--r--src_qdbus_qdbusargument.cpp4876logstatsplain
-rw-r--r--src_qdbus_qdbuscontext.cpp2142logstatsplain
-rw-r--r--src_qdbus_qdbusinterface.cpp1900logstatsplain
-rw-r--r--src_qdbus_qdbusmetatype.cpp1544logstatsplain
-rw-r--r--src_qdbus_qdbusreply.cpp1798logstatsplain
-rw-r--r--src_qt3support_canvas_q3canvas.cpp2807logstatsplain
-rw-r--r--src_qt3support_dialogs_q3filedialog.cpp6146logstatsplain
-rw-r--r--src_qt3support_dialogs_q3progressdialog.cpp2393logstatsplain
-rw-r--r--src_qt3support_itemviews_q3iconview.cpp2937logstatsplain
-rw-r--r--src_qt3support_itemviews_q3listview.cpp3007logstatsplain
-rw-r--r--src_qt3support_itemviews_q3table.cpp2638logstatsplain
-rw-r--r--src_qt3support_network_q3dns.cpp2561logstatsplain
-rw-r--r--src_qt3support_network_q3ftp.cpp2717logstatsplain
-rw-r--r--src_qt3support_network_q3http.cpp2834logstatsplain
-rw-r--r--src_qt3support_network_q3localfs.cpp1614logstatsplain
-rw-r--r--src_qt3support_network_q3networkprotocol.cpp1679logstatsplain
-rw-r--r--src_qt3support_network_q3socket.cpp1557logstatsplain
-rw-r--r--src_qt3support_network_q3socketdevice.cpp1567logstatsplain
-rw-r--r--src_qt3support_network_q3url.cpp2220logstatsplain
-rw-r--r--src_qt3support_network_q3urloperator.cpp2299logstatsplain
-rw-r--r--src_qt3support_other_q3accel.cpp2596logstatsplain
-rw-r--r--src_qt3support_other_q3mimefactory.cpp2121logstatsplain
-rw-r--r--src_qt3support_other_q3process.cpp1658logstatsplain
-rw-r--r--src_qt3support_other_q3process_unix.cpp1586logstatsplain
-rw-r--r--src_qt3support_painting_q3paintdevicemetrics.cpp1610logstatsplain
-rw-r--r--src_qt3support_painting_q3painter.cpp1600logstatsplain
-rw-r--r--src_qt3support_painting_q3picture.cpp1780logstatsplain
-rw-r--r--src_qt3support_sql_q3databrowser.cpp1653logstatsplain
-rw-r--r--src_qt3support_sql_q3datatable.cpp1655logstatsplain
-rw-r--r--src_qt3support_sql_q3dataview.cpp1557logstatsplain
-rw-r--r--src_qt3support_sql_q3sqlcursor.cpp3691logstatsplain
-rw-r--r--src_qt3support_sql_q3sqlform.cpp2315logstatsplain
-rw-r--r--src_qt3support_sql_q3sqlmanager_p.cpp1831logstatsplain
-rw-r--r--src_qt3support_sql_q3sqlpropertymap.cpp2402logstatsplain
-rw-r--r--src_qt3support_sql_q3sqlselectcursor.cpp1768logstatsplain
-rw-r--r--src_qt3support_text_q3simplerichtext.cpp1567logstatsplain
-rw-r--r--src_qt3support_text_q3textbrowser.cpp1569logstatsplain
-rw-r--r--src_qt3support_text_q3textedit.cpp2325logstatsplain
-rw-r--r--src_qt3support_text_q3textstream.cpp2045logstatsplain
-rw-r--r--src_qt3support_tools_q3cstring.cpp2502logstatsplain
-rw-r--r--src_qt3support_tools_q3deepcopy.cpp2753logstatsplain
-rw-r--r--src_qt3support_tools_q3garray.cpp2062logstatsplain
-rw-r--r--src_qt3support_tools_q3signal.cpp1994logstatsplain
-rw-r--r--src_qt3support_widgets_q3combobox.cpp1843logstatsplain
-rw-r--r--src_qt3support_widgets_q3datetimeedit.cpp2193logstatsplain
-rw-r--r--src_qt3support_widgets_q3dockarea.cpp1566logstatsplain
-rw-r--r--src_qt3support_widgets_q3dockwindow.cpp1603logstatsplain
-rw-r--r--src_qt3support_widgets_q3gridview.cpp1610logstatsplain
-rw-r--r--src_qt3support_widgets_q3header.cpp1692logstatsplain
-rw-r--r--src_qt3support_widgets_q3mainwindow.cpp2400logstatsplain
-rw-r--r--src_qt3support_widgets_q3scrollview.cpp3046logstatsplain
-rw-r--r--src_qt3support_widgets_q3whatsthis.cpp1566logstatsplain
-rw-r--r--src_qtestlib_qtestcase.cpp4583logstatsplain
-rw-r--r--src_script_qscriptable.cpp1886logstatsplain
-rw-r--r--src_script_qscriptclass.cpp1799logstatsplain
-rw-r--r--src_script_qscriptcontext.cpp2239logstatsplain
-rw-r--r--src_script_qscriptengine.cpp8075logstatsplain
-rw-r--r--src_script_qscriptengineagent.cpp1616logstatsplain
-rw-r--r--src_script_qscriptvalue.cpp2656logstatsplain
-rw-r--r--src_script_qscriptvalueiterator.cpp2100logstatsplain
-rw-r--r--src_sql_kernel_qsqldatabase.cpp3790logstatsplain
-rw-r--r--src_sql_kernel_qsqldriver.cpp2054logstatsplain
-rw-r--r--src_sql_kernel_qsqlerror.cpp1641logstatsplain
-rw-r--r--src_sql_kernel_qsqlindex.cpp1655logstatsplain
-rw-r--r--src_sql_kernel_qsqlquery.cpp2201logstatsplain
-rw-r--r--src_sql_kernel_qsqlresult.cpp2418logstatsplain
-rw-r--r--src_sql_models_qsqlquerymodel.cpp1717logstatsplain
-rw-r--r--src_svg_qgraphicssvgitem.cpp1857logstatsplain
-rw-r--r--src_xml_dom_qdom.cpp5120logstatsplain
-rw-r--r--src_xml_sax_qxml.cpp1588logstatsplain
-rw-r--r--src_xmlpatterns_api_qabstracturiresolver.cpp1545logstatsplain
-rw-r--r--src_xmlpatterns_api_qabstractxmlforwarditerator.cpp1574logstatsplain
-rw-r--r--src_xmlpatterns_api_qabstractxmlnodemodel.cpp2039logstatsplain
-rw-r--r--src_xmlpatterns_api_qabstractxmlreceiver.cpp1661logstatsplain
-rw-r--r--src_xmlpatterns_api_qsimplexmlnodemodel.cpp1999logstatsplain
-rw-r--r--src_xmlpatterns_api_qxmlformatter.cpp1692logstatsplain
-rw-r--r--src_xmlpatterns_api_qxmlname.cpp1744logstatsplain
-rw-r--r--src_xmlpatterns_api_qxmlquery.cpp5230logstatsplain
-rw-r--r--src_xmlpatterns_api_qxmlresultitems.cpp1818logstatsplain
-rw-r--r--src_xmlpatterns_api_qxmlserializer.cpp1661logstatsplain
-rw-r--r--tools_assistant_compat_lib_qassistantclient.cpp2219logstatsplain
-rw-r--r--tools_designer_src_lib_extension_default_extensionfactory.cpp2540logstatsplain
-rw-r--r--tools_designer_src_lib_extension_extension.cpp1858logstatsplain
-rw-r--r--tools_designer_src_lib_extension_qextensionmanager.cpp1957logstatsplain
-rw-r--r--tools_designer_src_lib_sdk_abstractformeditor.cpp1808logstatsplain
-rw-r--r--tools_designer_src_lib_sdk_abstractformwindow.cpp2098logstatsplain
-rw-r--r--tools_designer_src_lib_sdk_abstractformwindowcursor.cpp1707logstatsplain
-rw-r--r--tools_designer_src_lib_sdk_abstractformwindowmanager.cpp1772logstatsplain
-rw-r--r--tools_designer_src_lib_sdk_abstractobjectinspector.cpp1808logstatsplain
-rw-r--r--tools_designer_src_lib_sdk_abstractpropertyeditor.cpp2215logstatsplain
-rw-r--r--tools_designer_src_lib_sdk_abstractwidgetbox.cpp2051logstatsplain
-rw-r--r--tools_designer_src_lib_uilib_abstractformbuilder.cpp1932logstatsplain
-rw-r--r--tools_designer_src_lib_uilib_formbuilder.cpp2080logstatsplain
-rw-r--r--tools_patternist_qapplicationargumentparser.cpp1531logstatsplain
-rw-r--r--tools_shared_qtgradienteditor_qtgradientdialog.cpp2587logstatsplain
-rw-r--r--tools_shared_qtpropertybrowser_qtpropertybrowser.cpp2744logstatsplain
-rw-r--r--tools_shared_qtpropertybrowser_qtvariantproperty.cpp1803logstatsplain
-rw-r--r--tools_shared_qttoolbardialog_qttoolbardialog.cpp1729logstatsplain
ass="hl opt">); SET_TOP(x); if (x != NULL) DISPATCH(); break; TARGET(INPLACE_TRUE_DIVIDE) w = POP(); v = TOP(); x = PyNumber_InPlaceTrueDivide(v, w); Py_DECREF(v); Py_DECREF(w); SET_TOP(x); if (x != NULL) DISPATCH(); break; TARGET(INPLACE_FLOOR_DIVIDE) w = POP(); v = TOP(); x = PyNumber_InPlaceFloorDivide(v, w); Py_DECREF(v); Py_DECREF(w); SET_TOP(x); if (x != NULL) DISPATCH(); break; TARGET(INPLACE_MODULO) w = POP(); v = TOP(); x = PyNumber_InPlaceRemainder(v, w); Py_DECREF(v); Py_DECREF(w); SET_TOP(x); if (x != NULL) DISPATCH(); break; TARGET(INPLACE_ADD) w = POP(); v = TOP(); if (PyUnicode_CheckExact(v) && PyUnicode_CheckExact(w)) { x = unicode_concatenate(v, w, f, next_instr); /* unicode_concatenate consumed the ref to v */ goto skip_decref_v; } else { x = PyNumber_InPlaceAdd(v, w); } Py_DECREF(v); skip_decref_v: Py_DECREF(w); SET_TOP(x); if (x != NULL) DISPATCH(); break; TARGET(INPLACE_SUBTRACT) w = POP(); v = TOP(); x = PyNumber_InPlaceSubtract(v, w); Py_DECREF(v); Py_DECREF(w); SET_TOP(x); if (x != NULL) DISPATCH(); break; TARGET(INPLACE_LSHIFT) w = POP(); v = TOP(); x = PyNumber_InPlaceLshift(v, w); Py_DECREF(v); Py_DECREF(w); SET_TOP(x); if (x != NULL) DISPATCH(); break; TARGET(INPLACE_RSHIFT) w = POP(); v = TOP(); x = PyNumber_InPlaceRshift(v, w); Py_DECREF(v); Py_DECREF(w); SET_TOP(x); if (x != NULL) DISPATCH(); break; TARGET(INPLACE_AND) w = POP(); v = TOP(); x = PyNumber_InPlaceAnd(v, w); Py_DECREF(v); Py_DECREF(w); SET_TOP(x); if (x != NULL) DISPATCH(); break; TARGET(INPLACE_XOR) w = POP(); v = TOP(); x = PyNumber_InPlaceXor(v, w); Py_DECREF(v); Py_DECREF(w); SET_TOP(x); if (x != NULL) DISPATCH(); break; TARGET(INPLACE_OR) w = POP(); v = TOP(); x = PyNumber_InPlaceOr(v, w); Py_DECREF(v); Py_DECREF(w); SET_TOP(x); if (x != NULL) DISPATCH(); break; TARGET(STORE_SUBSCR) w = TOP(); v = SECOND(); u = THIRD(); STACKADJ(-3); /* v[w] = u */ err = PyObject_SetItem(v, w, u); Py_DECREF(u); Py_DECREF(v); Py_DECREF(w); if (err == 0) DISPATCH(); break; TARGET(DELETE_SUBSCR) w = TOP(); v = SECOND(); STACKADJ(-2); /* del v[w] */ err = PyObject_DelItem(v, w); Py_DECREF(v); Py_DECREF(w); if (err == 0) DISPATCH(); break; TARGET(PRINT_EXPR) v = POP(); w = PySys_GetObject("displayhook"); if (w == NULL) { PyErr_SetString(PyExc_RuntimeError, "lost sys.displayhook"); err = -1; x = NULL; } if (err == 0) { x = PyTuple_Pack(1, v); if (x == NULL) err = -1; } if (err == 0) { w = PyEval_CallObject(w, x); Py_XDECREF(w); if (w == NULL) err = -1; } Py_DECREF(v); Py_XDECREF(x); break; #ifdef CASE_TOO_BIG default: switch (opcode) { #endif TARGET(RAISE_VARARGS) v = w = NULL; switch (oparg) { case 2: v = POP(); /* cause */ case 1: w = POP(); /* exc */ case 0: /* Fallthrough */ why = do_raise(w, v); break; default: PyErr_SetString(PyExc_SystemError, "bad RAISE_VARARGS oparg"); why = WHY_EXCEPTION; break; } break; TARGET(STORE_LOCALS) x = POP(); v = f->f_locals; Py_XDECREF(v); f->f_locals = x; DISPATCH(); TARGET(RETURN_VALUE) retval = POP(); why = WHY_RETURN; goto fast_block_end; TARGET(YIELD_VALUE) retval = POP(); f->f_stacktop = stack_pointer; why = WHY_YIELD; /* Put aside the current exception state and restore that of the calling frame. This only serves when "yield" is used inside an except handler. */ SWAP_EXC_STATE(); goto fast_yield; TARGET(POP_EXCEPT) { PyTryBlock *b = PyFrame_BlockPop(f); if (b->b_type != EXCEPT_HANDLER) { PyErr_SetString(PyExc_SystemError, "popped block is not an except handler"); why = WHY_EXCEPTION; break; } UNWIND_EXCEPT_HANDLER(b); } DISPATCH(); TARGET(POP_BLOCK) { PyTryBlock *b = PyFrame_BlockPop(f); UNWIND_BLOCK(b); } DISPATCH(); PREDICTED(END_FINALLY); TARGET(END_FINALLY) v = POP(); if (PyLong_Check(v)) { why = (enum why_code) PyLong_AS_LONG(v); assert(why != WHY_YIELD); if (why == WHY_RETURN || why == WHY_CONTINUE) retval = POP(); if (why == WHY_SILENCED) { /* An exception was silenced by 'with', we must manually unwind the EXCEPT_HANDLER block which was created when the exception was caught, otherwise the stack will be in an inconsistent state. */ PyTryBlock *b = PyFrame_BlockPop(f); assert(b->b_type == EXCEPT_HANDLER); UNWIND_EXCEPT_HANDLER(b); why = WHY_NOT; } } else if (PyExceptionClass_Check(v)) { w = POP(); u = POP(); PyErr_Restore(v, w, u); why = WHY_RERAISE; break; } else if (v != Py_None) { PyErr_SetString(PyExc_SystemError, "'finally' pops bad exception"); why = WHY_EXCEPTION; } Py_DECREF(v); break; TARGET(LOAD_BUILD_CLASS) x = PyDict_GetItemString(f->f_builtins, "__build_class__"); if (x == NULL) { PyErr_SetString(PyExc_ImportError, "__build_class__ not found"); break; } Py_INCREF(x); PUSH(x); break; TARGET(STORE_NAME) w = GETITEM(names, oparg); v = POP(); if ((x = f->f_locals) != NULL) { if (PyDict_CheckExact(x)) err = PyDict_SetItem(x, w, v); else err = PyObject_SetItem(x, w, v); Py_DECREF(v); if (err == 0) DISPATCH(); break; } PyErr_Format(PyExc_SystemError, "no locals found when storing %R", w); break; TARGET(DELETE_NAME) w = GETITEM(names, oparg); if ((x = f->f_locals) != NULL) { if ((err = PyObject_DelItem(x, w)) != 0) format_exc_check_arg(PyExc_NameError, NAME_ERROR_MSG, w); break; } PyErr_Format(PyExc_SystemError, "no locals when deleting %R", w); break; PREDICTED_WITH_ARG(UNPACK_SEQUENCE); TARGET(UNPACK_SEQUENCE) v = POP(); if (PyTuple_CheckExact(v) && PyTuple_GET_SIZE(v) == oparg) { PyObject **items = \ ((PyTupleObject *)v)->ob_item; while (oparg--) { w = items[oparg]; Py_INCREF(w); PUSH(w); } Py_DECREF(v); DISPATCH(); } else if (PyList_CheckExact(v) && PyList_GET_SIZE(v) == oparg) { PyObject **items = \ ((PyListObject *)v)->ob_item; while (oparg--) { w = items[oparg]; Py_INCREF(w); PUSH(w); } } else if (unpack_iterable(v, oparg, -1, stack_pointer + oparg)) { STACKADJ(oparg); } else { /* unpack_iterable() raised an exception */ why = WHY_EXCEPTION; } Py_DECREF(v); break; TARGET(UNPACK_EX) { int totalargs = 1 + (oparg & 0xFF) + (oparg >> 8); v = POP(); if (unpack_iterable(v, oparg & 0xFF, oparg >> 8, stack_pointer + totalargs)) { stack_pointer += totalargs; } else { why = WHY_EXCEPTION; } Py_DECREF(v); break; } TARGET(STORE_ATTR) w = GETITEM(names, oparg); v = TOP(); u = SECOND(); STACKADJ(-2); err = PyObject_SetAttr(v, w, u); /* v.w = u */ Py_DECREF(v); Py_DECREF(u); if (err == 0) DISPATCH(); break; TARGET(DELETE_ATTR) w = GETITEM(names, oparg); v = POP(); err = PyObject_SetAttr(v, w, (PyObject *)NULL); /* del v.w */ Py_DECREF(v); break; TARGET(STORE_GLOBAL) w = GETITEM(names, oparg); v = POP(); err = PyDict_SetItem(f->f_globals, w, v); Py_DECREF(v); if (err == 0) DISPATCH(); break; TARGET(DELETE_GLOBAL) w = GETITEM(names, oparg); if ((err = PyDict_DelItem(f->f_globals, w)) != 0) format_exc_check_arg( PyExc_NameError, GLOBAL_NAME_ERROR_MSG, w); break; TARGET(LOAD_NAME) w = GETITEM(names, oparg); if ((v = f->f_locals) == NULL) { PyErr_Format(PyExc_SystemError, "no locals when loading %R", w); why = WHY_EXCEPTION; break; } if (PyDict_CheckExact(v)) { x = PyDict_GetItem(v, w); Py_XINCREF(x); } else { x = PyObject_GetItem(v, w); if (x == NULL && PyErr_Occurred()) { if (!PyErr_ExceptionMatches( PyExc_KeyError)) break; PyErr_Clear(); } } if (x == NULL) { x = PyDict_GetItem(f->f_globals, w); if (x == NULL) { x = PyDict_GetItem(f->f_builtins, w); if (x == NULL) { format_exc_check_arg( PyExc_NameError, NAME_ERROR_MSG, w); break; } } Py_INCREF(x); } PUSH(x); DISPATCH(); TARGET(LOAD_GLOBAL) w = GETITEM(names, oparg); if (PyUnicode_CheckExact(w)) { /* Inline the PyDict_GetItem() calls. WARNING: this is an extreme speed hack. Do not try this at home. */ long hash = ((PyUnicodeObject *)w)->hash; if (hash != -1) { PyDictObject *d; PyDictEntry *e; d = (PyDictObject *)(f->f_globals); e = d->ma_lookup(d, w, hash); if (e == NULL) { x = NULL; break; } x = e->me_value; if (x != NULL) { Py_INCREF(x); PUSH(x); DISPATCH(); } d = (PyDictObject *)(f->f_builtins); e = d->ma_lookup(d, w, hash); if (e == NULL) { x = NULL; break; } x = e->me_value; if (x != NULL) { Py_INCREF(x); PUSH(x); DISPATCH(); } goto load_global_error; } } /* This is the un-inlined version of the code above */ x = PyDict_GetItem(f->f_globals, w); if (x == NULL) { x = PyDict_GetItem(f->f_builtins, w); if (x == NULL) { load_global_error: format_exc_check_arg( PyExc_NameError, GLOBAL_NAME_ERROR_MSG, w); break; } } Py_INCREF(x); PUSH(x); DISPATCH(); TARGET(DELETE_FAST) x = GETLOCAL(oparg); if (x != NULL) { SETLOCAL(oparg, NULL); DISPATCH(); } format_exc_check_arg( PyExc_UnboundLocalError, UNBOUNDLOCAL_ERROR_MSG, PyTuple_GetItem(co->co_varnames, oparg) ); break; TARGET(LOAD_CLOSURE) x = freevars[oparg]; Py_INCREF(x); PUSH(x); if (x != NULL) DISPATCH(); break; TARGET(LOAD_DEREF) x = freevars[oparg]; w = PyCell_Get(x); if (w != NULL) { PUSH(w); DISPATCH(); } err = -1; /* Don't stomp existing exception */ if (PyErr_Occurred()) break; if (oparg < PyTuple_GET_SIZE(co->co_cellvars)) { v = PyTuple_GET_ITEM(co->co_cellvars, oparg); format_exc_check_arg( PyExc_UnboundLocalError, UNBOUNDLOCAL_ERROR_MSG, v); } else { v = PyTuple_GET_ITEM(co->co_freevars, oparg - PyTuple_GET_SIZE(co->co_cellvars)); format_exc_check_arg(PyExc_NameError, UNBOUNDFREE_ERROR_MSG, v); } break; TARGET(STORE_DEREF) w = POP(); x = freevars[oparg]; PyCell_Set(x, w); Py_DECREF(w); DISPATCH(); TARGET(BUILD_TUPLE) x = PyTuple_New(oparg); if (x != NULL) { for (; --oparg >= 0;) { w = POP(); PyTuple_SET_ITEM(x, oparg, w); } PUSH(x); DISPATCH(); } break; TARGET(BUILD_LIST) x = PyList_New(oparg); if (x != NULL) { for (; --oparg >= 0;) { w = POP(); PyList_SET_ITEM(x, oparg, w); } PUSH(x); DISPATCH(); } break; TARGET(BUILD_SET) x = PySet_New(NULL); if (x != NULL) { for (; --oparg >= 0;) { w = POP(); if (err == 0) err = PySet_Add(x, w); Py_DECREF(w); } if (err != 0) { Py_DECREF(x); break; } PUSH(x); DISPATCH(); } break; TARGET(BUILD_MAP) x = _PyDict_NewPresized((Py_ssize_t)oparg); PUSH(x); if (x != NULL) DISPATCH(); break; TARGET(STORE_MAP) w = TOP(); /* key */ u = SECOND(); /* value */ v = THIRD(); /* dict */ STACKADJ(-2); assert (PyDict_CheckExact(v)); err = PyDict_SetItem(v, w, u); /* v[w] = u */ Py_DECREF(u); Py_DECREF(w); if (err == 0) DISPATCH(); break; TARGET(MAP_ADD) w = TOP(); /* key */ u = SECOND(); /* value */ STACKADJ(-2); v = stack_pointer[-oparg]; /* dict */ assert (PyDict_CheckExact(v)); err = PyDict_SetItem(v, w, u); /* v[w] = u */ Py_DECREF(u); Py_DECREF(w); if (err == 0) { PREDICT(JUMP_ABSOLUTE); DISPATCH(); } break; TARGET(LOAD_ATTR) w = GETITEM(names, oparg); v = TOP(); x = PyObject_GetAttr(v, w); Py_DECREF(v); SET_TOP(x); if (x != NULL) DISPATCH(); break; TARGET(COMPARE_OP) w = POP(); v = TOP(); x = cmp_outcome(oparg, v, w); Py_DECREF(v); Py_DECREF(w); SET_TOP(x); if (x == NULL) break; PREDICT(POP_JUMP_IF_FALSE); PREDICT(POP_JUMP_IF_TRUE); DISPATCH(); TARGET(IMPORT_NAME) w = GETITEM(names, oparg); x = PyDict_GetItemString(f->f_builtins, "__import__"); if (x == NULL) { PyErr_SetString(PyExc_ImportError, "__import__ not found"); break; } Py_INCREF(x); v = POP(); u = TOP(); if (PyLong_AsLong(u) != -1 || PyErr_Occurred()) w = PyTuple_Pack(5, w, f->f_globals, f->f_locals == NULL ? Py_None : f->f_locals, v, u); else w = PyTuple_Pack(4, w, f->f_globals, f->f_locals == NULL ? Py_None : f->f_locals, v); Py_DECREF(v); Py_DECREF(u); if (w == NULL) { u = POP(); Py_DECREF(x); x = NULL; break; } READ_TIMESTAMP(intr0); v = x; x = PyEval_CallObject(v, w); Py_DECREF(v); READ_TIMESTAMP(intr1); Py_DECREF(w); SET_TOP(x); if (x != NULL) DISPATCH(); break; TARGET(IMPORT_STAR) v = POP(); PyFrame_FastToLocals(f); if ((x = f->f_locals) == NULL) { PyErr_SetString(PyExc_SystemError, "no locals found during 'import *'"); break; } READ_TIMESTAMP(intr0); err = import_all_from(x, v); READ_TIMESTAMP(intr1); PyFrame_LocalsToFast(f, 0); Py_DECREF(v); if (err == 0) DISPATCH(); break; TARGET(IMPORT_FROM) w = GETITEM(names, oparg); v = TOP(); READ_TIMESTAMP(intr0); x = import_from(v, w); READ_TIMESTAMP(intr1); PUSH(x); if (x != NULL) DISPATCH(); break; TARGET(JUMP_FORWARD) JUMPBY(oparg); FAST_DISPATCH(); PREDICTED_WITH_ARG(POP_JUMP_IF_FALSE); TARGET(POP_JUMP_IF_FALSE) w = POP(); if (w == Py_True) { Py_DECREF(w); FAST_DISPATCH(); } if (w == Py_False) { Py_DECREF(w); JUMPTO(oparg); FAST_DISPATCH(); } err = PyObject_IsTrue(w); Py_DECREF(w); if (err > 0) err = 0; else if (err == 0) JUMPTO(oparg); else break; DISPATCH(); PREDICTED_WITH_ARG(POP_JUMP_IF_TRUE); TARGET(POP_JUMP_IF_TRUE) w = POP(); if (w == Py_False) { Py_DECREF(w); FAST_DISPATCH(); } if (w == Py_True) { Py_DECREF(w); JUMPTO(oparg); FAST_DISPATCH(); } err = PyObject_IsTrue(w); Py_DECREF(w); if (err > 0) { err = 0; JUMPTO(oparg); } else if (err == 0) ; else break; DISPATCH(); TARGET(JUMP_IF_FALSE_OR_POP) w = TOP(); if (w == Py_True) { STACKADJ(-1); Py_DECREF(w); FAST_DISPATCH(); } if (w == Py_False) { JUMPTO(oparg); FAST_DISPATCH(); } err = PyObject_IsTrue(w); if (err > 0) { STACKADJ(-1); Py_DECREF(w); err = 0; } else if (err == 0) JUMPTO(oparg); else break; DISPATCH(); TARGET(JUMP_IF_TRUE_OR_POP) w = TOP(); if (w == Py_False) { STACKADJ(-1); Py_DECREF(w); FAST_DISPATCH(); } if (w == Py_True) { JUMPTO(oparg); FAST_DISPATCH(); } err = PyObject_IsTrue(w); if (err > 0) { err = 0; JUMPTO(oparg); } else if (err == 0) { STACKADJ(-1); Py_DECREF(w); } else break; DISPATCH(); PREDICTED_WITH_ARG(JUMP_ABSOLUTE); TARGET(JUMP_ABSOLUTE) JUMPTO(oparg); #if FAST_LOOPS /* Enabling this path speeds-up all while and for-loops by bypassing the per-loop checks for signals. By default, this should be turned-off because it prevents detection of a control-break in tight loops like "while 1: pass". Compile with this option turned-on when you need the speed-up and do not need break checking inside tight loops (ones that contain only instructions ending with FAST_DISPATCH). */ FAST_DISPATCH(); #else DISPATCH(); #endif TARGET(GET_ITER) /* before: [obj]; after [getiter(obj)] */ v = TOP(); x = PyObject_GetIter(v); Py_DECREF(v); if (x != NULL) { SET_TOP(x); PREDICT(FOR_ITER); DISPATCH(); } STACKADJ(-1); break; PREDICTED_WITH_ARG(FOR_ITER); TARGET(FOR_ITER) /* before: [iter]; after: [iter, iter()] *or* [] */ v = TOP(); x = (*v->ob_type->tp_iternext)(v); if (x != NULL) { PUSH(x); PREDICT(STORE_FAST); PREDICT(UNPACK_SEQUENCE); DISPATCH(); } if (PyErr_Occurred()) { if (!PyErr_ExceptionMatches( PyExc_StopIteration)) break; PyErr_Clear(); } /* iterator ended normally */ x = v = POP(); Py_DECREF(v); JUMPBY(oparg); DISPATCH(); TARGET(BREAK_LOOP) why = WHY_BREAK; goto fast_block_end; TARGET(CONTINUE_LOOP) retval = PyLong_FromLong(oparg); if (!retval) { x = NULL; break; } why = WHY_CONTINUE; goto fast_block_end; TARGET_WITH_IMPL(SETUP_LOOP, _setup_finally) TARGET_WITH_IMPL(SETUP_EXCEPT, _setup_finally) TARGET(SETUP_FINALLY) _setup_finally: /* NOTE: If you add any new block-setup opcodes that are not try/except/finally handlers, you may need to update the PyGen_NeedsFinalizing() function. */ PyFrame_BlockSetup(f, opcode, INSTR_OFFSET() + oparg, STACK_LEVEL()); DISPATCH(); TARGET(SETUP_WITH) { static PyObject *exit, *enter; w = TOP(); x = special_lookup(w, "__exit__", &exit); if (!x) break; SET_TOP(x); u = special_lookup(w, "__enter__", &enter); Py_DECREF(w); if (!u) { x = NULL; break; } x = PyObject_CallFunctionObjArgs(u, NULL); Py_DECREF(u); if (!x) break; /* Setup the finally block before pushing the result of __enter__ on the stack. */ PyFrame_BlockSetup(f, SETUP_FINALLY, INSTR_OFFSET() + oparg, STACK_LEVEL()); PUSH(x); DISPATCH(); } TARGET(WITH_CLEANUP) { /* At the top of the stack are 1-3 values indicating how/why we entered the finally clause: - TOP = None - (TOP, SECOND) = (WHY_{RETURN,CONTINUE}), retval - TOP = WHY_*; no retval below it - (TOP, SECOND, THIRD) = exc_info() (FOURTH, FITH, SIXTH) = previous exception for EXCEPT_HANDLER Below them is EXIT, the context.__exit__ bound method. In the last case, we must call EXIT(TOP, SECOND, THIRD) otherwise we must call EXIT(None, None, None) In the first two cases, we remove EXIT from the stack, leaving the rest in the same order. In the third case, we shift the bottom 3 values of the stack down, and replace the empty spot with NULL. In addition, if the stack represents an exception, *and* the function call returns a 'true' value, we push WHY_SILENCED onto the stack. END_FINALLY will then not re-raise the exception. (But non-local gotos should still be resumed.) */ PyObject *exit_func; u = TOP(); if (u == Py_None) { (void)POP(); exit_func = TOP(); SET_TOP(u); v = w = Py_None; } else if (PyLong_Check(u)) { (void)POP(); switch(PyLong_AsLong(u)) { case WHY_RETURN: case WHY_CONTINUE: /* Retval in TOP. */ exit_func = SECOND(); SET_SECOND(TOP()); SET_TOP(u); break; default: exit_func = TOP(); SET_TOP(u); break; } u = v = w = Py_None; } else { PyObject *tp, *exc, *tb; PyTryBlock *block; v = SECOND(); w = THIRD(); tp = FOURTH(); exc = PEEK(5); tb = PEEK(6); exit_func = PEEK(7); SET_VALUE(7, tb); SET_VALUE(6, exc); SET_VALUE(5, tp); /* UNWIND_EXCEPT_HANDLER will pop this off. */ SET_FOURTH(NULL); /* We just shifted the stack down, so we have to tell the except handler block that the values are lower than it expects. */ block = &f->f_blockstack[f->f_iblock - 1]; assert(block->b_type == EXCEPT_HANDLER); block->b_level--; } /* XXX Not the fastest way to call it... */ x = PyObject_CallFunctionObjArgs(exit_func, u, v, w, NULL); Py_DECREF(exit_func); if (x == NULL) break; /* Go to error exit */ if (u != Py_None) err = PyObject_IsTrue(x); else err = 0; Py_DECREF(x); if (err < 0) break; /* Go to error exit */ else if (err > 0) { err = 0; /* There was an exception and a True return */ PUSH(PyLong_FromLong((long) WHY_SILENCED)); } PREDICT(END_FINALLY); break; } TARGET(CALL_FUNCTION) { PyObject **sp; PCALL(PCALL_ALL); sp = stack_pointer; #ifdef WITH_TSC x = call_function(&sp, oparg, &intr0, &intr1); #else x = call_function(&sp, oparg); #endif stack_pointer = sp; PUSH(x); if (x != NULL) DISPATCH(); break; } TARGET_WITH_IMPL(CALL_FUNCTION_VAR, _call_function_var_kw) TARGET_WITH_IMPL(CALL_FUNCTION_KW, _call_function_var_kw) TARGET(CALL_FUNCTION_VAR_KW) _call_function_var_kw: { int na = oparg & 0xff; int nk = (oparg>>8) & 0xff; int flags = (opcode - CALL_FUNCTION) & 3; int n = na + 2 * nk; PyObject **pfunc, *func, **sp; PCALL(PCALL_ALL); if (flags & CALL_FLAG_VAR) n++; if (flags & CALL_FLAG_KW) n++; pfunc = stack_pointer - n - 1; func = *pfunc; if (PyMethod_Check(func) && PyMethod_GET_SELF(func) != NULL) { PyObject *self = PyMethod_GET_SELF(func); Py_INCREF(self); func = PyMethod_GET_FUNCTION(func); Py_INCREF(func); Py_DECREF(*pfunc); *pfunc = self; na++; n++; } else Py_INCREF(func); sp = stack_pointer; READ_TIMESTAMP(intr0); x = ext_do_call(func, &sp, flags, na, nk); READ_TIMESTAMP(intr1); stack_pointer = sp; Py_DECREF(func); while (stack_pointer > pfunc) { w = POP(); Py_DECREF(w); } PUSH(x); if (x != NULL) DISPATCH(); break; } TARGET_WITH_IMPL(MAKE_CLOSURE, _make_function) TARGET(MAKE_FUNCTION) _make_function: { int posdefaults = oparg & 0xff; int kwdefaults = (oparg>>8) & 0xff; int num_annotations = (oparg >> 16) & 0x7fff; v = POP(); /* code object */ x = PyFunction_New(v, f->f_globals); Py_DECREF(v); if (x != NULL && opcode == MAKE_CLOSURE) { v = POP(); if (PyFunction_SetClosure(x, v) != 0) { /* Can't happen unless bytecode is corrupt. */ why = WHY_EXCEPTION; } Py_DECREF(v); } if (x != NULL && num_annotations > 0) { Py_ssize_t name_ix; u = POP(); /* names of args with annotations */ v = PyDict_New(); if (v == NULL) { Py_DECREF(x); x = NULL; break; } name_ix = PyTuple_Size(u); assert(num_annotations == name_ix+1); while (name_ix > 0) { --name_ix; t = PyTuple_GET_ITEM(u, name_ix); w = POP(); /* XXX(nnorwitz): check for errors */ PyDict_SetItem(v, t, w); Py_DECREF(w); } if (PyFunction_SetAnnotations(x, v) != 0) { /* Can't happen unless PyFunction_SetAnnotations changes. */ why = WHY_EXCEPTION; } Py_DECREF(v); Py_DECREF(u); } /* XXX Maybe this should be a separate opcode? */ if (x != NULL && posdefaults > 0) { v = PyTuple_New(posdefaults); if (v == NULL) { Py_DECREF(x); x = NULL; break; } while (--posdefaults >= 0) { w = POP(); PyTuple_SET_ITEM(v, posdefaults, w); } if (PyFunction_SetDefaults(x, v) != 0) { /* Can't happen unless PyFunction_SetDefaults changes. */ why = WHY_EXCEPTION; } Py_DECREF(v); } if (x != NULL && kwdefaults > 0) { v = PyDict_New(); if (v == NULL) { Py_DECREF(x); x = NULL; break; } while (--kwdefaults >= 0) { w = POP(); /* default value */ u = POP(); /* kw only arg name */ /* XXX(nnorwitz): check for errors */ PyDict_SetItem(v, u, w); Py_DECREF(w); Py_DECREF(u); } if (PyFunction_SetKwDefaults(x, v) != 0) { /* Can't happen unless PyFunction_SetKwDefaults changes. */ why = WHY_EXCEPTION; } Py_DECREF(v); } PUSH(x); break; } TARGET(BUILD_SLICE) if (oparg == 3) w = POP(); else w = NULL; v = POP(); u = TOP(); x = PySlice_New(u, v, w); Py_DECREF(u); Py_DECREF(v); Py_XDECREF(w); SET_TOP(x); if (x != NULL) DISPATCH(); break; TARGET(EXTENDED_ARG) opcode = NEXTOP(); oparg = oparg<<16 | NEXTARG(); goto dispatch_opcode; #if USE_COMPUTED_GOTOS _unknown_opcode: #endif default: fprintf(stderr, "XXX lineno: %d, opcode: %d\n", PyFrame_GetLineNumber(f), opcode); PyErr_SetString(PyExc_SystemError, "unknown opcode"); why = WHY_EXCEPTION; break; #ifdef CASE_TOO_BIG } #endif } /* switch */ on_error: READ_TIMESTAMP(inst1); /* Quickly continue if no error occurred */ if (why == WHY_NOT) { if (err == 0 && x != NULL) { #ifdef CHECKEXC /* This check is expensive! */ if (PyErr_Occurred()) fprintf(stderr, "XXX undetected error\n"); else { #endif READ_TIMESTAMP(loop1); continue; /* Normal, fast path */ #ifdef CHECKEXC } #endif } why = WHY_EXCEPTION; x = Py_None; err = 0; } /* Double-check exception status */ if (why == WHY_EXCEPTION || why == WHY_RERAISE) { if (!PyErr_Occurred()) { PyErr_SetString(PyExc_SystemError, "error return without exception set"); why = WHY_EXCEPTION; } } #ifdef CHECKEXC else { /* This check is expensive! */ if (PyErr_Occurred()) { char buf[128]; sprintf(buf, "Stack unwind with exception " "set and why=%d", why); Py_FatalError(buf); } } #endif /* Log traceback info if this is a real exception */ if (why == WHY_EXCEPTION) { PyTraceBack_Here(f); if (tstate->c_tracefunc != NULL) call_exc_trace(tstate->c_tracefunc, tstate->c_traceobj, f); } /* For the rest, treat WHY_RERAISE as WHY_EXCEPTION */ if (why == WHY_RERAISE) why = WHY_EXCEPTION; /* Unwind stacks if a (pseudo) exception occurred */ fast_block_end: while (why != WHY_NOT && f->f_iblock > 0) { /* Peek at the current block. */ PyTryBlock *b = &f->f_blockstack[f->f_iblock - 1]; assert(why != WHY_YIELD); if (b->b_type == SETUP_LOOP && why == WHY_CONTINUE) { why = WHY_NOT; JUMPTO(PyLong_AS_LONG(retval)); Py_DECREF(retval); break; } /* Now we have to pop the block. */ f->f_iblock--; if (b->b_type == EXCEPT_HANDLER) { UNWIND_EXCEPT_HANDLER(b); continue; } UNWIND_BLOCK(b); if (b->b_type == SETUP_LOOP && why == WHY_BREAK) { why = WHY_NOT; JUMPTO(b->b_handler); break; } if (why == WHY_EXCEPTION && (b->b_type == SETUP_EXCEPT || b->b_type == SETUP_FINALLY)) { PyObject *exc, *val, *tb; int handler = b->b_handler; /* Beware, this invalidates all b->b_* fields */ PyFrame_BlockSetup(f, EXCEPT_HANDLER, -1, STACK_LEVEL()); PUSH(tstate->exc_traceback); PUSH(tstate->exc_value); if (tstate->exc_type != NULL) { PUSH(tstate->exc_type); } else { Py_INCREF(Py_None); PUSH(Py_None); } PyErr_Fetch(&exc, &val, &tb); /* Make the raw exception data available to the handler, so a program can emulate the Python main loop. */ PyErr_NormalizeException( &exc, &val, &tb); PyException_SetTraceback(val, tb); Py_INCREF(exc); tstate->exc_type = exc; Py_INCREF(val); tstate->exc_value = val; tstate->exc_traceback = tb; if (tb == NULL) tb = Py_None; Py_INCREF(tb); PUSH(tb); PUSH(val); PUSH(exc); why = WHY_NOT; JUMPTO(handler); break; } if (b->b_type == SETUP_FINALLY) { if (why & (WHY_RETURN | WHY_CONTINUE)) PUSH(retval); PUSH(PyLong_FromLong((long)why)); why = WHY_NOT; JUMPTO(b->b_handler); break; } } /* unwind stack */ /* End the loop if we still have an error (or return) */ if (why != WHY_NOT) break; READ_TIMESTAMP(loop1); } /* main loop */ assert(why != WHY_YIELD); /* Pop remaining stack entries. */ while (!EMPTY()) { v = POP(); Py_XDECREF(v); } if (why != WHY_RETURN) retval = NULL; fast_yield: if (tstate->use_tracing) { if (tstate->c_tracefunc) { if (why == WHY_RETURN || why == WHY_YIELD) { if (call_trace(tstate->c_tracefunc, tstate->c_traceobj, f, PyTrace_RETURN, retval)) { Py_XDECREF(retval); retval = NULL; why = WHY_EXCEPTION; } } else if (why == WHY_EXCEPTION) { call_trace_protected(tstate->c_tracefunc, tstate->c_traceobj, f, PyTrace_RETURN, NULL); } } if (tstate->c_profilefunc) { if (why == WHY_EXCEPTION) call_trace_protected(tstate->c_profilefunc, tstate->c_profileobj, f, PyTrace_RETURN, NULL); else if (call_trace(tstate->c_profilefunc, tstate->c_profileobj, f, PyTrace_RETURN, retval)) { Py_XDECREF(retval); retval = NULL; why = WHY_EXCEPTION; } } } /* pop frame */ exit_eval_frame: Py_LeaveRecursiveCall(); tstate->frame = f->f_back; return retval; } /* This is gonna seem *real weird*, but if you put some other code between PyEval_EvalFrame() and PyEval_EvalCodeEx() you will need to adjust the test in the if statements in Misc/gdbinit (pystack and pystackv). */ PyObject * PyEval_EvalCodeEx(PyCodeObject *co, PyObject *globals, PyObject *locals, PyObject **args, int argcount, PyObject **kws, int kwcount, PyObject **defs, int defcount, PyObject *kwdefs, PyObject *closure) { register PyFrameObject *f; register PyObject *retval = NULL; register PyObject **fastlocals, **freevars; PyThreadState *tstate = PyThreadState_GET(); PyObject *x, *u; int total_args = co->co_argcount + co->co_kwonlyargcount; if (globals == NULL) { PyErr_SetString(PyExc_SystemError, "PyEval_EvalCodeEx: NULL globals"); return NULL; } assert(tstate != NULL); assert(globals != NULL); f = PyFrame_New(tstate, co, globals, locals); if (f == NULL) return NULL; fastlocals = f->f_localsplus; freevars = f->f_localsplus + co->co_nlocals; if (total_args || co->co_flags & (CO_VARARGS | CO_VARKEYWORDS)) { int i; int n = argcount; PyObject *kwdict = NULL; if (co->co_flags & CO_VARKEYWORDS) { kwdict = PyDict_New(); if (kwdict == NULL) goto fail; i = total_args; if (co->co_flags & CO_VARARGS) i++; SETLOCAL(i, kwdict); } if (argcount > co->co_argcount) { if (!(co->co_flags & CO_VARARGS)) { PyErr_Format(PyExc_TypeError, "%U() takes %s %d " "positional argument%s (%d given)", co->co_name, defcount ? "at most" : "exactly", co->co_argcount, co->co_argcount == 1 ? "" : "s", argcount + kwcount); goto fail; } n = co->co_argcount; } for (i = 0; i < n; i++) { x = args[i]; Py_INCREF(x); SETLOCAL(i, x); } if (co->co_flags & CO_VARARGS) { u = PyTuple_New(argcount - n); if (u == NULL) goto fail; SETLOCAL(total_args, u); for (i = n; i < argcount; i++) { x = args[i]; Py_INCREF(x); PyTuple_SET_ITEM(u, i-n, x); } } for (i = 0; i < kwcount; i++) { PyObject **co_varnames; PyObject *keyword = kws[2*i]; PyObject *value = kws[2*i + 1]; int j; if (keyword == NULL || !PyUnicode_Check(keyword)) { PyErr_Format(PyExc_TypeError, "%U() keywords must be strings", co->co_name); goto fail; } /* Speed hack: do raw pointer compares. As names are normally interned this should almost always hit. */ co_varnames = ((PyTupleObject *)(co->co_varnames))->ob_item; for (j = 0; j < total_args; j++) { PyObject *nm = co_varnames[j]; if (nm == keyword) goto kw_found; } /* Slow fallback, just in case */ for (j = 0; j < total_args; j++) { PyObject *nm = co_varnames[j]; int cmp = PyObject_RichCompareBool( keyword, nm, Py_EQ); if (cmp > 0) goto kw_found; else if (cmp < 0) goto fail; } if (j >= total_args && kwdict == NULL) { PyErr_Format(PyExc_TypeError, "%U() got an unexpected " "keyword argument '%S'", co->co_name, keyword); goto fail; } PyDict_SetItem(kwdict, keyword, value); continue; kw_found: if (GETLOCAL(j) != NULL) { PyErr_Format(PyExc_TypeError, "%U() got multiple " "values for keyword " "argument '%S'", co->co_name, keyword); goto fail; } Py_INCREF(value); SETLOCAL(j, value); } if (co->co_kwonlyargcount > 0) { for (i = co->co_argcount; i < total_args; i++) { PyObject *name; if (GETLOCAL(i) != NULL) continue; name = PyTuple_GET_ITEM(co->co_varnames, i); if (kwdefs != NULL) { PyObject *def = PyDict_GetItem(kwdefs, name); if (def) { Py_INCREF(def); SETLOCAL(i, def); continue; } } PyErr_Format(PyExc_TypeError, "%U() needs keyword-only argument %S", co->co_name, name); goto fail; } } if (argcount < co->co_argcount) { int m = co->co_argcount - defcount; for (i = argcount; i < m; i++) { if (GETLOCAL(i) == NULL) { int j, given = 0; for (j = 0; j < co->co_argcount; j++) if (GETLOCAL(j)) given++; PyErr_Format(PyExc_TypeError, "%U() takes %s %d " "argument%s " "(%d given)", co->co_name, ((co->co_flags & CO_VARARGS) || defcount) ? "at least" : "exactly", m, m == 1 ? "" : "s", given); goto fail; } } if (n > m) i = n - m; else i = 0; for (; i < defcount; i++) { if (GETLOCAL(m+i) == NULL) { PyObject *def = defs[i]; Py_INCREF(def); SETLOCAL(m+i, def); } } } } else if (argcount > 0 || kwcount > 0) { PyErr_Format(PyExc_TypeError, "%U() takes no arguments (%d given)", co->co_name, argcount + kwcount); goto fail; } /* Allocate and initialize storage for cell vars, and copy free vars into frame. This isn't too efficient right now. */ if (PyTuple_GET_SIZE(co->co_cellvars)) { int i, j, nargs, found; Py_UNICODE *cellname, *argname; PyObject *c; nargs = total_args; if (co->co_flags & CO_VARARGS) nargs++; if (co->co_flags & CO_VARKEYWORDS) nargs++; /* Initialize each cell var, taking into account cell vars that are initialized from arguments. Should arrange for the compiler to put cellvars that are arguments at the beginning of the cellvars list so that we can march over it more efficiently? */ for (i = 0; i < PyTuple_GET_SIZE(co->co_cellvars); ++i) { cellname = PyUnicode_AS_UNICODE( PyTuple_GET_ITEM(co->co_cellvars, i)); found = 0; for (j = 0; j < nargs; j++) { argname = PyUnicode_AS_UNICODE( PyTuple_GET_ITEM(co->co_varnames, j)); if (Py_UNICODE_strcmp(cellname, argname) == 0) { c = PyCell_New(GETLOCAL(j)); if (c == NULL) goto fail; GETLOCAL(co->co_nlocals + i) = c; found = 1; break; } } if (found == 0) { c = PyCell_New(NULL); if (c == NULL) goto fail; SETLOCAL(co->co_nlocals + i, c); } } } if (PyTuple_GET_SIZE(co->co_freevars)) { int i; for (i = 0; i < PyTuple_GET_SIZE(co->co_freevars); ++i) { PyObject *o = PyTuple_GET_ITEM(closure, i); Py_INCREF(o); freevars[PyTuple_GET_SIZE(co->co_cellvars) + i] = o; } } if (co->co_flags & CO_GENERATOR) { /* Don't need to keep the reference to f_back, it will be set * when the generator is resumed. */ Py_XDECREF(f->f_back); f->f_back = NULL; PCALL(PCALL_GENERATOR); /* Create a new generator that owns the ready to run frame * and return that as the value. */ return PyGen_New(f); } retval = PyEval_EvalFrameEx(f,0); fail: /* Jump here from prelude on failure */ /* decref'ing the frame can cause __del__ methods to get invoked, which can call back into Python. While we're done with the current Python frame (f), the associated C stack is still in use, so recursion_depth must be boosted for the duration. */ assert(tstate != NULL); ++tstate->recursion_depth; Py_DECREF(f); --tstate->recursion_depth; return retval; } static PyObject * special_lookup(PyObject *o, char *meth, PyObject **cache) { PyObject *res; res = _PyObject_LookupSpecial(o, meth, cache); if (res == NULL && !PyErr_Occurred()) { PyErr_SetObject(PyExc_AttributeError, *cache); return NULL; } return res; } /* Logic for the raise statement (too complicated for inlining). This *consumes* a reference count to each of its arguments. */ static enum why_code do_raise(PyObject *exc, PyObject *cause) { PyObject *type = NULL, *value = NULL; if (exc == NULL) { /* Reraise */ PyThreadState *tstate = PyThreadState_GET(); PyObject *tb; type = tstate->exc_type; value = tstate->exc_value; tb = tstate->exc_traceback; if (type == Py_None) { PyErr_SetString(PyExc_RuntimeError, "No active exception to reraise"); return WHY_EXCEPTION; } Py_XINCREF(type); Py_XINCREF(value); Py_XINCREF(tb); PyErr_Restore(type, value, tb); return WHY_RERAISE; } /* We support the following forms of raise: raise raise <instance> raise <type> */ if (PyExceptionClass_Check(exc)) { type = exc; value = PyObject_CallObject(exc, NULL); if (value == NULL) goto raise_error; } else if (PyExceptionInstance_Check(exc)) { value = exc; type = PyExceptionInstance_Class(exc); Py_INCREF(type); } else { /* Not something you can raise. You get an exception anyway, just not what you specified :-) */ Py_DECREF(exc); PyErr_SetString(PyExc_TypeError, "exceptions must derive from BaseException"); goto raise_error; } if (cause) { PyObject *fixed_cause; if (PyExceptionClass_Check(cause)) { fixed_cause = PyObject_CallObject(cause, NULL); if (fixed_cause == NULL) goto raise_error; Py_DECREF(cause); } else if (PyExceptionInstance_Check(cause)) { fixed_cause = cause; } else { PyErr_SetString(PyExc_TypeError, "exception causes must derive from " "BaseException"); goto raise_error; } PyException_SetCause(value, fixed_cause); } PyErr_SetObject(type, value); /* PyErr_SetObject incref's its arguments */ Py_XDECREF(value); Py_XDECREF(type); return WHY_EXCEPTION; raise_error: Py_XDECREF(value); Py_XDECREF(type); Py_XDECREF(cause); return WHY_EXCEPTION; } /* Iterate v argcnt times and store the results on the stack (via decreasing sp). Return 1 for success, 0 if error. If argcntafter == -1, do a simple unpack. If it is >= 0, do an unpack with a variable target. */ static int unpack_iterable(PyObject *v, int argcnt, int argcntafter, PyObject **sp) { int i = 0, j = 0; Py_ssize_t ll = 0; PyObject *it; /* iter(v) */ PyObject *w; PyObject *l = NULL; /* variable list */ assert(v != NULL); it = PyObject_GetIter(v); if (it == NULL) goto Error; for (; i < argcnt; i++) { w = PyIter_Next(it); if (w == NULL) { /* Iterator done, via error or exhaustion. */ if (!PyErr_Occurred()) { PyErr_Format(PyExc_ValueError, "need more than %d value%s to unpack", i, i == 1 ? "" : "s"); } goto Error; } *--sp = w; } if (argcntafter == -1) { /* We better have exhausted the iterator now. */ w = PyIter_Next(it); if (w == NULL) { if (PyErr_Occurred()) goto Error; Py_DECREF(it); return 1; } Py_DECREF(w); PyErr_Format(PyExc_ValueError, "too many values to unpack " "(expected %d)", argcnt); goto Error; } l = PySequence_List(it); if (l == NULL) goto Error; *--sp = l; i++; ll = PyList_GET_SIZE(l); if (ll < argcntafter) { PyErr_Format(PyExc_ValueError, "need more than %zd values to unpack", argcnt + ll); goto Error; } /* Pop the "after-variable" args off the list. */ for (j = argcntafter; j > 0; j--, i++) { *--sp = PyList_GET_ITEM(l, ll - j); } /* Resize the list. */ Py_SIZE(l) = ll - argcntafter; Py_DECREF(it); return 1; Error: for (; i > 0; i--, sp++) Py_DECREF(*sp); Py_XDECREF(it); return 0; } #ifdef LLTRACE static int prtrace(PyObject *v, char *str) { printf("%s ", str); if (PyObject_Print(v, stdout, 0) != 0) PyErr_Clear(); /* Don't know what else to do */ printf("\n"); return 1; } #endif static void call_exc_trace(Py_tracefunc func, PyObject *self, PyFrameObject *f) { PyObject *type, *value, *traceback, *arg; int err; PyErr_Fetch(&type, &value, &traceback); if (value == NULL) { value = Py_None; Py_INCREF(value); } arg = PyTuple_Pack(3, type, value, traceback); if (arg == NULL) { PyErr_Restore(type, value, traceback); return; } err = call_trace(func, self, f, PyTrace_EXCEPTION, arg); Py_DECREF(arg); if (err == 0) PyErr_Restore(type, value, traceback); else { Py_XDECREF(type); Py_XDECREF(value); Py_XDECREF(traceback); } } static int call_trace_protected(Py_tracefunc func, PyObject *obj, PyFrameObject *frame, int what, PyObject *arg) { PyObject *type, *value, *traceback; int err; PyErr_Fetch(&type, &value, &traceback); err = call_trace(func, obj, frame, what, arg); if (err == 0) { PyErr_Restore(type, value, traceback); return 0; } else { Py_XDECREF(type); Py_XDECREF(value); Py_XDECREF(traceback); return -1; } } static int call_trace(Py_tracefunc func, PyObject *obj, PyFrameObject *frame, int what, PyObject *arg) { register PyThreadState *tstate = frame->f_tstate; int result; if (tstate->tracing) return 0; tstate->tracing++; tstate->use_tracing = 0; result = func(obj, frame, what, arg); tstate->use_tracing = ((tstate->c_tracefunc != NULL) || (tstate->c_profilefunc != NULL)); tstate->tracing--; return result; } PyObject * _PyEval_CallTracing(PyObject *func, PyObject *args) { PyFrameObject *frame = PyEval_GetFrame(); PyThreadState *tstate = frame->f_tstate; int save_tracing = tstate->tracing; int save_use_tracing = tstate->use_tracing; PyObject *result; tstate->tracing = 0; tstate->use_tracing = ((tstate->c_tracefunc != NULL) || (tstate->c_profilefunc != NULL)); result = PyObject_Call(func, args, NULL); tstate->tracing = save_tracing; tstate->use_tracing = save_use_tracing; return result; } /* See Objects/lnotab_notes.txt for a description of how tracing works. */ static int maybe_call_line_trace(Py_tracefunc func, PyObject *obj, PyFrameObject *frame, int *instr_lb, int *instr_ub, int *instr_prev) { int result = 0; int line = frame->f_lineno; /* If the last instruction executed isn't in the current instruction window, reset the window. */ if (frame->f_lasti < *instr_lb || frame->f_lasti >= *instr_ub) { PyAddrPair bounds; line = _PyCode_CheckLineNumber(frame->f_code, frame->f_lasti, &bounds); *instr_lb = bounds.ap_lower; *instr_ub = bounds.ap_upper; } /* If the last instruction falls at the start of a line or if it represents a jump backwards, update the frame's line number and call the trace function. */ if (frame->f_lasti == *instr_lb || frame->f_lasti < *instr_prev) { frame->f_lineno = line; result = call_trace(func, obj, frame, PyTrace_LINE, Py_None); } *instr_prev = frame->f_lasti; return result; } void PyEval_SetProfile(Py_tracefunc func, PyObject *arg) { PyThreadState *tstate = PyThreadState_GET(); PyObject *temp = tstate->c_profileobj; Py_XINCREF(arg); tstate->c_profilefunc = NULL; tstate->c_profileobj = NULL; /* Must make sure that tracing is not ignored if 'temp' is freed */ tstate->use_tracing = tstate->c_tracefunc != NULL; Py_XDECREF(temp); tstate->c_profilefunc = func; tstate->c_profileobj = arg; /* Flag that tracing or profiling is turned on */ tstate->use_tracing = (func != NULL) || (tstate->c_tracefunc != NULL); } void PyEval_SetTrace(Py_tracefunc func, PyObject *arg) { PyThreadState *tstate = PyThreadState_GET(); PyObject *temp = tstate->c_traceobj; _Py_TracingPossible += (func != NULL) - (tstate->c_tracefunc != NULL); Py_XINCREF(arg); tstate->c_tracefunc = NULL; tstate->c_traceobj = NULL; /* Must make sure that profiling is not ignored if 'temp' is freed */ tstate->use_tracing = tstate->c_profilefunc != NULL; Py_XDECREF(temp); tstate->c_tracefunc = func; tstate->c_traceobj = arg; /* Flag that tracing or profiling is turned on */ tstate->use_tracing = ((func != NULL) || (tstate->c_profilefunc != NULL)); } PyObject * PyEval_GetBuiltins(void) { PyFrameObject *current_frame = PyEval_GetFrame(); if (current_frame == NULL) return PyThreadState_GET()->interp->builtins; else return current_frame->f_builtins; } PyObject * PyEval_GetLocals(void) { PyFrameObject *current_frame = PyEval_GetFrame(); if (current_frame == NULL) return NULL; PyFrame_FastToLocals(current_frame); return current_frame->f_locals; } PyObject * PyEval_GetGlobals(void) { PyFrameObject *current_frame = PyEval_GetFrame(); if (current_frame == NULL) return NULL; else return current_frame->f_globals; } PyFrameObject * PyEval_GetFrame(void) { PyThreadState *tstate = PyThreadState_GET(); return _PyThreadState_GetFrame(tstate); } int PyEval_MergeCompilerFlags(PyCompilerFlags *cf) { PyFrameObject *current_frame = PyEval_GetFrame(); int result = cf->cf_flags != 0; if (current_frame != NULL) { const int codeflags = current_frame->f_code->co_flags; const int compilerflags = codeflags & PyCF_MASK; if (compilerflags) { result = 1; cf->cf_flags |= compilerflags; } #if 0 /* future keyword */ if (codeflags & CO_GENERATOR_ALLOWED) { result = 1; cf->cf_flags |= CO_GENERATOR_ALLOWED; } #endif } return result; } /* External interface to call any callable object. The arg must be a tuple or NULL. The kw must be a dict or NULL. */ PyObject * PyEval_CallObjectWithKeywords(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; if (arg == NULL) { arg = PyTuple_New(0); if (arg == NULL) return NULL; } else if (!PyTuple_Check(arg)) { PyErr_SetString(PyExc_TypeError, "argument list must be a tuple"); return NULL; } else Py_INCREF(arg); if (kw != NULL && !PyDict_Check(kw)) { PyErr_SetString(PyExc_TypeError, "keyword list must be a dictionary"); Py_DECREF(arg); return NULL; } result = PyObject_Call(func, arg, kw); Py_DECREF(arg); return result; } const char * PyEval_GetFuncName(PyObject *func) { if (PyMethod_Check(func)) return PyEval_GetFuncName(PyMethod_GET_FUNCTION(func)); else if (PyFunction_Check(func)) return _PyUnicode_AsString(((PyFunctionObject*)func)->func_name); else if (PyCFunction_Check(func)) return ((PyCFunctionObject*)func)->m_ml->ml_name; else return func->ob_type->tp_name; } const char * PyEval_GetFuncDesc(PyObject *func) { if (PyMethod_Check(func)) return "()"; else if (PyFunction_Check(func)) return "()"; else if (PyCFunction_Check(func)) return "()"; else return " object"; } static void err_args(PyObject *func, int flags, int nargs) { if (flags & METH_NOARGS) PyErr_Format(PyExc_TypeError, "%.200s() takes no arguments (%d given)", ((PyCFunctionObject *)func)->m_ml->ml_name, nargs); else PyErr_Format(PyExc_TypeError, "%.200s() takes exactly one argument (%d given)", ((PyCFunctionObject *)func)->m_ml->ml_name, nargs); } #define C_TRACE(x, call) \ if (tstate->use_tracing && tstate->c_profilefunc) { \ if (call_trace(tstate->c_profilefunc, \ tstate->c_profileobj, \ tstate->frame, PyTrace_C_CALL, \ func)) { \ x = NULL; \ } \ else { \ x = call; \ if (tstate->c_profilefunc != NULL) { \ if (x == NULL) { \ call_trace_protected(tstate->c_profilefunc, \ tstate->c_profileobj, \ tstate->frame, PyTrace_C_EXCEPTION, \ func); \ /* XXX should pass (type, value, tb) */ \ } else { \ if (call_trace(tstate->c_profilefunc, \ tstate->c_profileobj, \ tstate->frame, PyTrace_C_RETURN, \ func)) { \ Py_DECREF(x); \ x = NULL; \ } \ } \ } \ } \ } else { \ x = call; \ } static PyObject * call_function(PyObject ***pp_stack, int oparg #ifdef WITH_TSC , uint64* pintr0, uint64* pintr1 #endif ) { int na = oparg & 0xff; int nk = (oparg>>8) & 0xff; int n = na + 2 * nk; PyObject **pfunc = (*pp_stack) - n - 1; PyObject *func = *pfunc; PyObject *x, *w; /* Always dispatch PyCFunction first, because these are presumed to be the most frequent callable object. */ if (PyCFunction_Check(func) && nk == 0) { int flags = PyCFunction_GET_FLAGS(func); PyThreadState *tstate = PyThreadState_GET(); PCALL(PCALL_CFUNCTION); if (flags & (METH_NOARGS | METH_O)) { PyCFunction meth = PyCFunction_GET_FUNCTION(func); PyObject *self = PyCFunction_GET_SELF(func); if (flags & METH_NOARGS && na == 0) { C_TRACE(x, (*meth)(self,NULL)); } else if (flags & METH_O && na == 1) { PyObject *arg = EXT_POP(*pp_stack); C_TRACE(x, (*meth)(self,arg)); Py_DECREF(arg); } else { err_args(func, flags, na); x = NULL; } } else { PyObject *callargs; callargs = load_args(pp_stack, na); READ_TIMESTAMP(*pintr0); C_TRACE(x, PyCFunction_Call(func,callargs,NULL)); READ_TIMESTAMP(*pintr1); Py_XDECREF(callargs); } } else { if (PyMethod_Check(func) && PyMethod_GET_SELF(func) != NULL) { /* optimize access to bound methods */ PyObject *self = PyMethod_GET_SELF(func); PCALL(PCALL_METHOD); PCALL(PCALL_BOUND_METHOD); Py_INCREF(self); func = PyMethod_GET_FUNCTION(func); Py_INCREF(func); Py_DECREF(*pfunc); *pfunc = self; na++; n++; } else Py_INCREF(func); READ_TIMESTAMP(*pintr0); if (PyFunction_Check(func)) x = fast_function(func, pp_stack, n, na, nk); else x = do_call(func, pp_stack, na, nk); READ_TIMESTAMP(*pintr1); Py_DECREF(func); } /* Clear the stack of the function object. Also removes the arguments in case they weren't consumed already (fast_function() and err_args() leave them on the stack). */ while ((*pp_stack) > pfunc) { w = EXT_POP(*pp_stack); Py_DECREF(w); PCALL(PCALL_POP); } return x; } /* The fast_function() function optimize calls for which no argument tuple is necessary; the objects are passed directly from the stack. For the simplest case -- a function that takes only positional arguments and is called with only positional arguments -- it inlines the most primitive frame setup code from PyEval_EvalCodeEx(), which vastly reduces the checks that must be done before evaluating the frame. */ static PyObject * fast_function(PyObject *func, PyObject ***pp_stack, int n, int na, int nk) { PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); PyObject *globals = PyFunction_GET_GLOBALS(func); PyObject *argdefs = PyFunction_GET_DEFAULTS(func); PyObject *kwdefs = PyFunction_GET_KW_DEFAULTS(func); PyObject **d = NULL; int nd = 0; PCALL(PCALL_FUNCTION); PCALL(PCALL_FAST_FUNCTION); if (argdefs == NULL && co->co_argcount == n && co->co_kwonlyargcount == 0 && nk==0 && co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { PyFrameObject *f; PyObject *retval = NULL; PyThreadState *tstate = PyThreadState_GET(); PyObject **fastlocals, **stack; int i; PCALL(PCALL_FASTER_FUNCTION); assert(globals != NULL); /* XXX Perhaps we should create a specialized PyFrame_New() that doesn't take locals, but does take builtins without sanity checking them. */ assert(tstate != NULL); f = PyFrame_New(tstate, co, globals, NULL); if (f == NULL) return NULL; fastlocals = f->f_localsplus; stack = (*pp_stack) - n; for (i = 0; i < n; i++) { Py_INCREF(*stack); fastlocals[i] = *stack++; } retval = PyEval_EvalFrameEx(f,0); ++tstate->recursion_depth; Py_DECREF(f); --tstate->recursion_depth; return retval; } if (argdefs != NULL) { d = &PyTuple_GET_ITEM(argdefs, 0); nd = Py_SIZE(argdefs); } return PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, (*pp_stack)-n, na, (*pp_stack)-2*nk, nk, d, nd, kwdefs, PyFunction_GET_CLOSURE(func)); } static PyObject * update_keyword_args(PyObject *orig_kwdict, int nk, PyObject ***pp_stack, PyObject *func) { PyObject *kwdict = NULL; if (orig_kwdict == NULL) kwdict = PyDict_New(); else { kwdict = PyDict_Copy(orig_kwdict); Py_DECREF(orig_kwdict); } if (kwdict == NULL) return NULL; while (--nk >= 0) { int err; PyObject *value = EXT_POP(*pp_stack); PyObject *key = EXT_POP(*pp_stack); if (PyDict_GetItem(kwdict, key) != NULL) { PyErr_Format(PyExc_TypeError, "%.200s%s got multiple values " "for keyword argument '%U'", PyEval_GetFuncName(func), PyEval_GetFuncDesc(func), key); Py_DECREF(key); Py_DECREF(value); Py_DECREF(kwdict); return NULL; } err = PyDict_SetItem(kwdict, key, value); Py_DECREF(key); Py_DECREF(value); if (err) { Py_DECREF(kwdict); return NULL; } } return kwdict; } static PyObject * update_star_args(int nstack, int nstar, PyObject *stararg, PyObject ***pp_stack) { PyObject *callargs, *w; callargs = PyTuple_New(nstack + nstar); if (callargs == NULL) { return NULL; } if (nstar) { int i; for (i = 0; i < nstar; i++) { PyObject *a = PyTuple_GET_ITEM(stararg, i); Py_INCREF(a); PyTuple_SET_ITEM(callargs, nstack + i, a); } } while (--nstack >= 0) { w = EXT_POP(*pp_stack); PyTuple_SET_ITEM(callargs, nstack, w); } return callargs; } static PyObject * load_args(PyObject ***pp_stack, int na) { PyObject *args = PyTuple_New(na); PyObject *w; if (args == NULL) return NULL; while (--na >= 0) { w = EXT_POP(*pp_stack); PyTuple_SET_ITEM(args, na, w); } return args; } static PyObject * do_call(PyObject *func, PyObject ***pp_stack, int na, int nk) { PyObject *callargs = NULL; PyObject *kwdict = NULL; PyObject *result = NULL; if (nk > 0) { kwdict = update_keyword_args(NULL, nk, pp_stack, func); if (kwdict == NULL) goto call_fail; } callargs = load_args(pp_stack, na); if (callargs == NULL) goto call_fail; #ifdef CALL_PROFILE /* At this point, we have to look at the type of func to update the call stats properly. Do it here so as to avoid exposing the call stats machinery outside ceval.c */ if (PyFunction_Check(func)) PCALL(PCALL_FUNCTION); else if (PyMethod_Check(func)) PCALL(PCALL_METHOD); else if (PyType_Check(func)) PCALL(PCALL_TYPE); else if (PyCFunction_Check(func)) PCALL(PCALL_CFUNCTION); else PCALL(PCALL_OTHER); #endif if (PyCFunction_Check(func)) { PyThreadState *tstate = PyThreadState_GET(); C_TRACE(result, PyCFunction_Call(func, callargs, kwdict)); } else result = PyObject_Call(func, callargs, kwdict); call_fail: Py_XDECREF(callargs); Py_XDECREF(kwdict); return result; } static PyObject * ext_do_call(PyObject *func, PyObject ***pp_stack, int flags, int na, int nk) { int nstar = 0; PyObject *callargs = NULL; PyObject *stararg = NULL; PyObject *kwdict = NULL; PyObject *result = NULL; if (flags & CALL_FLAG_KW) { kwdict = EXT_POP(*pp_stack); if (!PyDict_Check(kwdict)) { PyObject *d; d = PyDict_New(); if (d == NULL) goto ext_call_fail; if (PyDict_Update(d, kwdict) != 0) { Py_DECREF(d); /* PyDict_Update raises attribute * error (percolated from an attempt * to get 'keys' attribute) instead of * a type error if its second argument * is not a mapping. */ if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Format(PyExc_TypeError, "%.200s%.200s argument after ** " "must be a mapping, not %.200s", PyEval_GetFuncName(func), PyEval_GetFuncDesc(func), kwdict->ob_type->tp_name); } goto ext_call_fail; } Py_DECREF(kwdict); kwdict = d; } } if (flags & CALL_FLAG_VAR) { stararg = EXT_POP(*pp_stack); if (!PyTuple_Check(stararg)) { PyObject *t = NULL; t = PySequence_Tuple(stararg); if (t == NULL) { if (PyErr_ExceptionMatches(PyExc_TypeError)) { PyErr_Format(PyExc_TypeError, "%.200s%.200s argument after * " "must be a sequence, not %200s", PyEval_GetFuncName(func), PyEval_GetFuncDesc(func), stararg->ob_type->tp_name); } goto ext_call_fail; } Py_DECREF(stararg); stararg = t; } nstar = PyTuple_GET_SIZE(stararg); } if (nk > 0) { kwdict = update_keyword_args(kwdict, nk, pp_stack, func); if (kwdict == NULL) goto ext_call_fail; } callargs = update_star_args(na, nstar, stararg, pp_stack); if (callargs == NULL) goto ext_call_fail; #ifdef CALL_PROFILE /* At this point, we have to look at the type of func to update the call stats properly. Do it here so as to avoid