diff options
author | Georg Brandl <georg@python.org> | 2011-06-19 09:45:13 +0200 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2011-06-19 09:45:13 +0200 |
commit | a275a0c40bc4dcd48f52e04e056d03cecb73e973 (patch) | |
tree | 142f5c6af5cb5348bc19010cdef29216bbc748a1 /tests | |
parent | 8e50a30370b1ad58d8ec308d5ee7d4e7d153bc4a (diff) | |
parent | 0466a590eaf5face40a52d2ea245dc3f061723ef (diff) | |
download | pygments-a275a0c40bc4dcd48f52e04e056d03cecb73e973.tar.gz |
Merge with https://bitbucket.org/dvarrazzo/pygments-postgres
Diffstat (limited to 'tests')
-rw-r--r-- | tests/examplefiles/as3_test.as | 4 | ||||
-rw-r--r-- | tests/examplefiles/example.nim | 1010 | ||||
-rw-r--r-- | tests/examplefiles/example_file.fy | 128 | ||||
-rw-r--r-- | tests/examplefiles/nemerle_sample.n | 85 | ||||
-rw-r--r-- | tests/examplefiles/objc_example.m | 14 | ||||
-rw-r--r-- | tests/examplefiles/squid.conf | 55 | ||||
-rw-r--r-- | tests/examplefiles/test.awk | 121 | ||||
-rw-r--r-- | tests/examplefiles/test.ec | 605 | ||||
-rw-r--r-- | tests/examplefiles/test.eh | 315 | ||||
-rw-r--r-- | tests/examplefiles/test.groovy | 97 | ||||
-rw-r--r-- | tests/examplefiles/test.pypylog | 1839 | ||||
-rw-r--r-- | tests/examplefiles/test.rb | 3 | ||||
-rw-r--r-- | tests/test_basic_api.py | 14 | ||||
-rw-r--r-- | tests/test_examplefiles.py | 2 |
14 files changed, 4264 insertions, 28 deletions
diff --git a/tests/examplefiles/as3_test.as b/tests/examplefiles/as3_test.as index 7e19f887..d6b08424 100644 --- a/tests/examplefiles/as3_test.as +++ b/tests/examplefiles/as3_test.as @@ -7,7 +7,7 @@ private static const ADD_SONG:uint = 1; private static const SONG_DETAIL:uint = 2; - private var playList:PlayList = new PlayList(); + private var playList:PlayList = new PlayList.<T>(); private function initApp():void { @@ -24,7 +24,7 @@ } - private function sortList(sortField:SortProperty):void + private function sortList(sortField:SortProperty.<T>):void { // Make all the sort type buttons enabled. // The active one will be grayed-out below diff --git a/tests/examplefiles/example.nim b/tests/examplefiles/example.nim new file mode 100644 index 00000000..319da016 --- /dev/null +++ b/tests/examplefiles/example.nim @@ -0,0 +1,1010 @@ +import glib2, gtk2, gdk2, gtksourceview, dialogs, os, pango, osproc, strutils +import pegs, streams +import settings, types, cfg, search + +{.push callConv:cdecl.} + +const + NimrodProjectExt = ".nimprj" + +var win: types.MainWin +win.Tabs = @[] + +search.win = addr(win) + +var lastSession: seq[string] = @[] + +var confParseFail = False # This gets set to true + # When there is an error parsing the config + +# Load the settings +try: + win.settings = cfg.load(lastSession) +except ECFGParse: + # TODO: Make the dialog show the exception + confParseFail = True + win.settings = cfg.defaultSettings() +except EIO: + win.settings = cfg.defaultSettings() + +proc getProjectTab(): int = + for i in 0..high(win.tabs): + if win.tabs[i].filename.endswith(NimrodProjectExt): return i + +proc saveTab(tabNr: int, startpath: string) = + if tabNr < 0: return + if win.Tabs[tabNr].saved: return + var path = "" + if win.Tabs[tabNr].filename == "": + path = ChooseFileToSave(win.w, startpath) + # dialogs.nim STOCK_OPEN instead of STOCK_SAVE + else: + path = win.Tabs[tabNr].filename + + if path != "": + var buffer = PTextBuffer(win.Tabs[tabNr].buffer) + # Get the text from the TextView + var startIter: TTextIter + buffer.getStartIter(addr(startIter)) + + var endIter: TTextIter + buffer.getEndIter(addr(endIter)) + + var text = buffer.getText(addr(startIter), addr(endIter), False) + # Save it to a file + var f: TFile + if open(f, path, fmWrite): + f.write(text) + f.close() + + win.tempStuff.lastSaveDir = splitFile(path).dir + + # Change the tab name and .Tabs.filename etc. + win.Tabs[tabNr].filename = path + win.Tabs[tabNr].saved = True + var name = extractFilename(path) + + var cTab = win.Tabs[tabNr] + cTab.label.setText(name) + else: + error(win.w, "Unable to write to file") + +proc saveAllTabs() = + for i in 0..high(win.tabs): + saveTab(i, os.splitFile(win.tabs[i].filename).dir) + +# GTK Events +# -- w(PWindow) +proc destroy(widget: PWidget, data: pgpointer) {.cdecl.} = + # gather some settings + win.settings.VPanedPos = PPaned(win.sourceViewTabs.getParent()).getPosition() + win.settings.winWidth = win.w.allocation.width + win.settings.winHeight = win.w.allocation.height + + # save the settings + win.save() + # then quit + main_quit() + +proc delete_event(widget: PWidget, event: PEvent, user_data: pgpointer): bool = + var quit = True + for i in low(win.Tabs)..len(win.Tabs)-1: + if not win.Tabs[i].saved: + var askSave = dialogNewWithButtons("", win.w, 0, + STOCK_SAVE, RESPONSE_ACCEPT, STOCK_CANCEL, + RESPONSE_CANCEL, + "Close without saving", RESPONSE_REJECT, nil) + askSave.setTransientFor(win.w) + # TODO: Make this dialog look better + var label = labelNew(win.Tabs[i].filename & + " is unsaved, would you like to save it ?") + PBox(askSave.vbox).pack_start(label, False, False, 0) + label.show() + + var resp = askSave.run() + gtk2.destroy(PWidget(askSave)) + case resp + of RESPONSE_ACCEPT: + saveTab(i, os.splitFile(win.tabs[i].filename).dir) + quit = True + of RESPONSE_CANCEL: + quit = False + break + of RESPONSE_REJECT: + quit = True + else: + quit = False + break + + # If False is returned the window will close + return not quit + +proc windowState_Changed(widget: PWidget, event: PEventWindowState, + user_data: pgpointer) = + win.settings.winMaximized = (event.newWindowState and + WINDOW_STATE_MAXIMIZED) != 0 + +# -- SourceView(PSourceView) & SourceBuffer +proc updateStatusBar(buffer: PTextBuffer){.cdecl.} = + # Incase this event gets fired before + # bottomBar is initialized + if win.bottomBar != nil and not win.tempStuff.stopSBUpdates: + var iter: TTextIter + + win.bottomBar.pop(0) + buffer.getIterAtMark(addr(iter), buffer.getInsert()) + var row = getLine(addr(iter)) + 1 + var col = getLineOffset(addr(iter)) + discard win.bottomBar.push(0, "Line: " & $row & " Column: " & $col) + +proc cursorMoved(buffer: PTextBuffer, location: PTextIter, + mark: PTextMark, user_data: pgpointer){.cdecl.} = + updateStatusBar(buffer) + +proc onCloseTab(btn: PButton, user_data: PWidget) = + if win.sourceViewTabs.getNPages() > 1: + var tab = win.sourceViewTabs.pageNum(user_data) + win.sourceViewTabs.removePage(tab) + + win.Tabs.delete(tab) + +proc onSwitchTab(notebook: PNotebook, page: PNotebookPage, pageNum: guint, + user_data: pgpointer) = + if win.Tabs.len()-1 >= pageNum: + win.w.setTitle("Aporia IDE - " & win.Tabs[pageNum].filename) + +proc createTabLabel(name: string, t_child: PWidget): tuple[box: PWidget, + label: PLabel] = + var box = hboxNew(False, 0) + var label = labelNew(name) + var closebtn = buttonNew() + closeBtn.setLabel(nil) + var iconSize = iconSizeFromName("tabIconSize") + if iconSize == 0: + iconSize = iconSizeRegister("tabIconSize", 10, 10) + var image = imageNewFromStock(STOCK_CLOSE, iconSize) + discard gSignalConnect(closebtn, "clicked", G_Callback(onCloseTab), t_child) + closebtn.setImage(image) + gtk2.setRelief(closebtn, RELIEF_NONE) + box.packStart(label, True, True, 0) + box.packEnd(closebtn, False, False, 0) + box.showAll() + return (box, label) + +proc changed(buffer: PTextBuffer, user_data: pgpointer) = + # Update the 'Line & Column' + #updateStatusBar(buffer) + + # Change the tabs state to 'unsaved' + # and add '*' to the Tab Name + var current = win.SourceViewTabs.getCurrentPage() + var name = "" + if win.Tabs[current].filename == "": + win.Tabs[current].saved = False + name = "Untitled *" + else: + win.Tabs[current].saved = False + name = extractFilename(win.Tabs[current].filename) & " *" + + var cTab = win.Tabs[current] + cTab.label.setText(name) + +# Other(Helper) functions + +proc initSourceView(SourceView: var PWidget, scrollWindow: var PScrolledWindow, + buffer: var PSourceBuffer) = + # This gets called by addTab + # Each tabs creates a new SourceView + # SourceScrolledWindow(ScrolledWindow) + scrollWindow = scrolledWindowNew(nil, nil) + scrollWindow.setPolicy(POLICY_AUTOMATIC, POLICY_AUTOMATIC) + scrollWindow.show() + + # SourceView(gtkSourceView) + SourceView = sourceViewNew(buffer) + PSourceView(SourceView).setInsertSpacesInsteadOfTabs(True) + PSourceView(SourceView).setIndentWidth(win.settings.indentWidth) + PSourceView(SourceView).setShowLineNumbers(win.settings.showLineNumbers) + PSourceView(SourceView).setHighlightCurrentLine( + win.settings.highlightCurrentLine) + PSourceView(SourceView).setShowRightMargin(win.settings.rightMargin) + PSourceView(SourceView).setAutoIndent(win.settings.autoIndent) + + var font = font_description_from_string(win.settings.font) + SourceView.modifyFont(font) + + scrollWindow.add(SourceView) + SourceView.show() + + buffer.setHighlightMatchingBrackets( + win.settings.highlightMatchingBrackets) + + # UGLY workaround for yet another compiler bug: + discard gsignalConnect(buffer, "mark-set", + GCallback(aporia.cursorMoved), nil) + discard gsignalConnect(buffer, "changed", GCallback(aporia.changed), nil) + + # -- Set the syntax highlighter scheme + buffer.setScheme(win.scheme) + +proc addTab(name, filename: string) = + ## Adds a tab, if filename is not "" reads the file. And sets + ## the tabs SourceViews text to that files contents. + assert(win.nimLang != nil) + var buffer: PSourceBuffer = sourceBufferNew(win.nimLang) + + if filename != nil and filename != "": + var lang = win.langMan.guessLanguage(filename, nil) + if lang != nil: + buffer.setLanguage(lang) + else: + buffer.setHighlightSyntax(False) + + var nam = name + if nam == "": nam = "Untitled" + if filename == "": nam.add(" *") + elif filename != "" and name == "": + # Disable the undo/redo manager. + buffer.begin_not_undoable_action() + + # Load the file. + var file: string = readFile(filename) + if file != nil: + buffer.set_text(file, len(file)) + + # Enable the undo/redo manager. + buffer.end_not_undoable_action() + + # Get the name.ext of the filename, for the tabs title + nam = extractFilename(filename) + + # Init the sourceview + var sourceView: PWidget + var scrollWindow: PScrolledWindow + initSourceView(sourceView, scrollWindow, buffer) + + var (TabLabel, labelText) = createTabLabel(nam, scrollWindow) + # Add a tab + discard win.SourceViewTabs.appendPage(scrollWindow, TabLabel) + + var nTab: Tab + nTab.buffer = buffer + nTab.sourceView = sourceView + nTab.label = labelText + nTab.saved = (filename != "") + nTab.filename = filename + win.Tabs.add(nTab) + + PTextView(SourceView).setBuffer(nTab.buffer) + +# GTK Events Contd. +# -- TopMenu & TopBar + +proc newFile(menuItem: PMenuItem, user_data: pgpointer) = + addTab("", "") + win.sourceViewTabs.setCurrentPage(win.Tabs.len()-1) + +proc openFile(menuItem: PMenuItem, user_data: pgpointer) = + var startpath = "" + var currPage = win.SourceViewTabs.getCurrentPage() + if currPage <% win.tabs.len: + startpath = os.splitFile(win.tabs[currPage].filename).dir + + if startpath.len == 0: + # Use lastSavePath as the startpath + startpath = win.tempStuff.lastSaveDir + if startpath.len == 0: + startpath = os.getHomeDir() + + var files = ChooseFilesToOpen(win.w, startpath) + if files.len() > 0: + for f in items(files): + try: + addTab("", f) + except EIO: + error(win.w, "Unable to read from file") + # Switch to the newly created tab + win.sourceViewTabs.setCurrentPage(win.Tabs.len()-1) + +proc saveFile_Activate(menuItem: PMenuItem, user_data: pgpointer) = + var current = win.SourceViewTabs.getCurrentPage() + saveTab(current, os.splitFile(win.tabs[current].filename).dir) + +proc saveFileAs_Activate(menuItem: PMenuItem, user_data: pgpointer) = + var current = win.SourceViewTabs.getCurrentPage() + var (filename, saved) = (win.Tabs[current].filename, win.Tabs[current].saved) + + win.Tabs[current].saved = False + win.Tabs[current].filename = "" + saveTab(current, os.splitFile(filename).dir) + # If the user cancels the save file dialog. Restore the previous filename + # and saved state + if win.Tabs[current].filename == "": + win.Tabs[current].filename = filename + win.Tabs[current].saved = saved + +proc undo(menuItem: PMenuItem, user_data: pgpointer) = + var current = win.SourceViewTabs.getCurrentPage() + if win.Tabs[current].buffer.canUndo(): + win.Tabs[current].buffer.undo() + +proc redo(menuItem: PMenuItem, user_data: pgpointer) = + var current = win.SourceViewTabs.getCurrentPage() + if win.Tabs[current].buffer.canRedo(): + win.Tabs[current].buffer.redo() + +proc find_Activate(menuItem: PMenuItem, user_data: pgpointer) = + # Get the selected text, and set the findEntry to it. + var currentTab = win.SourceViewTabs.getCurrentPage() + var insertIter: TTextIter + win.Tabs[currentTab].buffer.getIterAtMark(addr(insertIter), + win.Tabs[currentTab].buffer.getInsert()) + var insertOffset = addr(insertIter).getOffset() + + var selectIter: TTextIter + win.Tabs[currentTab].buffer.getIterAtMark(addr(selectIter), + win.Tabs[currentTab].buffer.getSelectionBound()) + var selectOffset = addr(selectIter).getOffset() + + if insertOffset != selectOffset: + var text = win.Tabs[currentTab].buffer.getText(addr(insertIter), + addr(selectIter), false) + win.findEntry.setText(text) + + win.findBar.show() + win.findEntry.grabFocus() + win.replaceEntry.hide() + win.replaceLabel.hide() + win.replaceBtn.hide() + win.replaceAllBtn.hide() + +proc replace_Activate(menuitem: PMenuItem, user_data: pgpointer) = + win.findBar.show() + win.findEntry.grabFocus() + win.replaceEntry.show() + win.replaceLabel.show() + win.replaceBtn.show() + win.replaceAllBtn.show() + +proc settings_Activate(menuitem: PMenuItem, user_data: pgpointer) = + settings.showSettings(win) + +proc viewBottomPanel_Toggled(menuitem: PCheckMenuItem, user_data: pgpointer) = + win.settings.bottomPanelVisible = menuitem.itemGetActive() + if win.settings.bottomPanelVisible: + win.bottomPanelTabs.show() + else: + win.bottomPanelTabs.hide() + +var + pegLineError = peg"{[^(]*} '(' {\d+} ', ' \d+ ') Error:' \s* {.*}" + pegLineWarning = peg"{[^(]*} '(' {\d+} ', ' \d+ ') ' ('Warning:'/'Hint:') \s* {.*}" + pegOtherError = peg"'Error:' \s* {.*}" + pegSuccess = peg"'Hint: operation successful'.*" + +proc addText(textView: PTextView, text: string, colorTag: PTextTag = nil) = + if text != nil: + var iter: TTextIter + textView.getBuffer().getEndIter(addr(iter)) + + if colorTag == nil: + textView.getBuffer().insert(addr(iter), text, len(text)) + else: + textView.getBuffer().insertWithTags(addr(iter), text, len(text), colorTag, + nil) + +proc createColor(textView: PTextView, name, color: string): PTextTag = + var tagTable = textView.getBuffer().getTagTable() + result = tagTable.tableLookup(name) + if result == nil: + result = textView.getBuffer().createTag(name, "foreground", color, nil) + +when not defined(os.findExe): + proc findExe(exe: string): string = + ## returns "" if the exe cannot be found + result = addFileExt(exe, os.exeExt) + if ExistsFile(result): return + var path = os.getEnv("PATH") + for candidate in split(path, pathSep): + var x = candidate / result + if ExistsFile(x): return x + result = "" + +proc GetCmd(cmd, filename: string): string = + var f = quoteIfContainsWhite(filename) + if cmd =~ peg"\s* '$' y'findExe' '(' {[^)]+} ')' {.*}": + var exe = quoteIfContainsWhite(findExe(matches[0])) + if exe.len == 0: exe = matches[0] + result = exe & " " & matches[1] % f + else: + result = cmd % f + +proc showBottomPanel() = + if not win.settings.bottomPanelVisible: + win.bottomPanelTabs.show() + win.settings.bottomPanelVisible = true + PCheckMenuItem(win.viewBottomPanelMenuItem).itemSetActive(true) + # Scroll to the end of the TextView + # This is stupid, it works sometimes... it's random + var endIter: TTextIter + win.outputTextView.getBuffer().getEndIter(addr(endIter)) + discard win.outputTextView.scrollToIter( + addr(endIter), 0.25, False, 0.0, 0.0) + +proc compileRun(currentTab: int, shouldRun: bool) = + if win.Tabs[currentTab].filename.len == 0: return + # Clear the outputTextView + win.outputTextView.getBuffer().setText("", 0) + + var outp = osProc.execProcess(GetCmd(win.settings.nimrodCmd, + win.Tabs[currentTab].filename)) + # Colors + var normalTag = createColor(win.outputTextView, "normalTag", "#3d3d3d") + var errorTag = createColor(win.outputTextView, "errorTag", "red") + var warningTag = createColor(win.outputTextView, "warningTag", "darkorange") + var successTag = createColor(win.outputTextView, "successTag", "darkgreen") + for x in outp.splitLines(): + if x =~ pegLineError / pegOtherError: + win.outputTextView.addText("\n" & x, errorTag) + elif x=~ pegSuccess: + win.outputTextView.addText("\n" & x, successTag) + + # Launch the process + if shouldRun: + var filename = changeFileExt(win.Tabs[currentTab].filename, os.ExeExt) + var output = "\n" & osProc.execProcess(filename) + win.outputTextView.addText(output) + elif x =~ pegLineWarning: + win.outputTextView.addText("\n" & x, warningTag) + else: + win.outputTextView.addText("\n" & x, normalTag) + showBottomPanel() + +proc CompileCurrent_Activate(menuitem: PMenuItem, user_data: pgpointer) = + saveFile_Activate(nil, nil) + compileRun(win.SourceViewTabs.getCurrentPage(), false) + +proc CompileRunCurrent_Activate(menuitem: PMenuItem, user_data: pgpointer) = + saveFile_Activate(nil, nil) + compileRun(win.SourceViewTabs.getCurrentPage(), true) + +proc CompileProject_Activate(menuitem: PMenuItem, user_data: pgpointer) = + saveAllTabs() + compileRun(getProjectTab(), false) + +proc CompileRunProject_Activate(menuitem: PMenuItem, user_data: pgpointer) = + saveAllTabs() + compileRun(getProjectTab(), true) + +proc RunCustomCommand(cmd: string) = + saveFile_Activate(nil, nil) + var currentTab = win.SourceViewTabs.getCurrentPage() + if win.Tabs[currentTab].filename.len == 0 or cmd.len == 0: return + # Clear the outputTextView + win.outputTextView.getBuffer().setText("", 0) + var outp = osProc.execProcess(GetCmd(cmd, win.Tabs[currentTab].filename)) + var normalTag = createColor(win.outputTextView, "normalTag", "#3d3d3d") + for x in outp.splitLines(): + win.outputTextView.addText("\n" & x, normalTag) + showBottomPanel() + +proc RunCustomCommand1(menuitem: PMenuItem, user_data: pgpointer) = + RunCustomCommand(win.settings.customCmd1) + +proc RunCustomCommand2(menuitem: PMenuItem, user_data: pgpointer) = + RunCustomCommand(win.settings.customCmd2) + +proc RunCustomCommand3(menuitem: PMenuItem, user_data: pgpointer) = + RunCustomCommand(win.settings.customCmd3) + +# -- FindBar + +proc nextBtn_Clicked(button: PButton, user_data: pgpointer) = findText(True) +proc prevBtn_Clicked(button: PButton, user_data: pgpointer) = findText(False) + +proc replaceBtn_Clicked(button: PButton, user_data: pgpointer) = + var currentTab = win.SourceViewTabs.getCurrentPage() + var start, theEnd: TTextIter + if not win.Tabs[currentTab].buffer.getSelectionBounds( + addr(start), addr(theEnd)): + # If no text is selected, try finding a match. + findText(True) + if not win.Tabs[currentTab].buffer.getSelectionBounds( + addr(start), addr(theEnd)): + # No match + return + + # Remove the text + win.Tabs[currentTab].buffer.delete(addr(start), addr(theEnd)) + # Insert the replacement + var text = getText(win.replaceEntry) + win.Tabs[currentTab].buffer.insert(addr(start), text, len(text)) + +proc replaceAllBtn_Clicked(button: PButton, user_data: pgpointer) = + var find = getText(win.findEntry) + var replace = getText(win.replaceEntry) + discard replaceAll(find, replace) + +proc closeBtn_Clicked(button: PButton, user_data: pgpointer) = + win.findBar.hide() + +proc caseSens_Changed(radiomenuitem: PRadioMenuitem, user_data: pgpointer) = + win.settings.search = "casesens" +proc caseInSens_Changed(radiomenuitem: PRadioMenuitem, user_data: pgpointer) = + win.settings.search = "caseinsens" +proc style_Changed(radiomenuitem: PRadioMenuitem, user_data: pgpointer) = + win.settings.search = "style" +proc regex_Changed(radiomenuitem: PRadioMenuitem, user_data: pgpointer) = + win.settings.search = "regex" +proc peg_Changed(radiomenuitem: PRadioMenuitem, user_data: pgpointer) = + win.settings.search = "peg" + +proc extraBtn_Clicked(button: PButton, user_data: pgpointer) = + var extraMenu = menuNew() + var group: PGSList + + var caseSensMenuItem = radio_menu_item_new(group, "Case sensitive") + extraMenu.append(caseSensMenuItem) + discard signal_connect(caseSensMenuItem, "toggled", + SIGNAL_FUNC(caseSens_Changed), nil) + caseSensMenuItem.show() + group = caseSensMenuItem.ItemGetGroup() + + var caseInSensMenuItem = radio_menu_item_new(group, "Case insensitive") + extraMenu.append(caseInSensMenuItem) + discard signal_connect(caseInSensMenuItem, "toggled", + SIGNAL_FUNC(caseInSens_Changed), nil) + caseInSensMenuItem.show() + group = caseInSensMenuItem.ItemGetGroup() + + var styleMenuItem = radio_menu_item_new(group, "Style insensitive") + extraMenu.append(styleMenuItem) + discard signal_connect(styleMenuItem, "toggled", + SIGNAL_FUNC(style_Changed), nil) + styleMenuItem.show() + group = styleMenuItem.ItemGetGroup() + + var regexMenuItem = radio_menu_item_new(group, "Regex") + extraMenu.append(regexMenuItem) + discard signal_connect(regexMenuItem, "toggled", + SIGNAL_FUNC(regex_Changed), nil) + regexMenuItem.show() + group = regexMenuItem.ItemGetGroup() + + var pegMenuItem = radio_menu_item_new(group, "Pegs") + extraMenu.append(pegMenuItem) + discard signal_connect(pegMenuItem, "toggled", + SIGNAL_FUNC(peg_Changed), nil) + pegMenuItem.show() + + # Make the correct radio button active + case win.settings.search + of "casesens": + PCheckMenuItem(caseSensMenuItem).ItemSetActive(True) + of "caseinsens": + PCheckMenuItem(caseInSensMenuItem).ItemSetActive(True) + of "style": + PCheckMenuItem(styleMenuItem).ItemSetActive(True) + of "regex": + PCheckMenuItem(regexMenuItem).ItemSetActive(True) + of "peg": + PCheckMenuItem(pegMenuItem).ItemSetActive(True) + + extraMenu.popup(nil, nil, nil, nil, 0, get_current_event_time()) + +# GUI Initialization + +proc createAccelMenuItem(toolsMenu: PMenu, accGroup: PAccelGroup, + label: string, acc: gint, + action: proc (i: PMenuItem, p: pgpointer)) = + var result = menu_item_new(label) + result.addAccelerator("activate", accGroup, acc, 0, ACCEL_VISIBLE) + ToolsMenu.append(result) + show(result) + discard signal_connect(result, "activate", SIGNAL_FUNC(action), nil) + +proc createSeparator(menu: PMenu) = + var sep = separator_menu_item_new() + menu.append(sep) + sep.show() + +proc initTopMenu(MainBox: PBox) = + # Create a accelerator group, used for shortcuts + # like CTRL + S in SaveMenuItem + var accGroup = accel_group_new() + add_accel_group(win.w, accGroup) + + # TopMenu(MenuBar) + var TopMenu = menuBarNew() + + # FileMenu + var FileMenu = menuNew() + + var NewMenuItem = menu_item_new("New") # New + FileMenu.append(NewMenuItem) + show(NewMenuItem) + discard signal_connect(NewMenuItem, "activate", + SIGNAL_FUNC(newFile), nil) + + createSeparator(FileMenu) + + var OpenMenuItem = menu_item_new("Open...") # Open... + # CTRL + O + OpenMenuItem.add_accelerator("activate", accGroup, + KEY_o, CONTROL_MASK, ACCEL_VISIBLE) + FileMenu.append(OpenMenuItem) + show(OpenMenuItem) + discard signal_connect(OpenMenuItem, "activate", + SIGNAL_FUNC(aporia.openFile), nil) + + var SaveMenuItem = menu_item_new("Save") # Save + # CTRL + S + SaveMenuItem.add_accelerator("activate", accGroup, + KEY_s, CONTROL_MASK, ACCEL_VISIBLE) + FileMenu.append(SaveMenuItem) + show(SaveMenuItem) + discard signal_connect(SaveMenuItem, "activate", + SIGNAL_FUNC(saveFile_activate), nil) + + var SaveAsMenuItem = menu_item_new("Save As...") # Save as... + + SaveAsMenuItem.add_accelerator("activate", accGroup, + KEY_s, CONTROL_MASK or gdk2.SHIFT_MASK, ACCEL_VISIBLE) + FileMenu.append(SaveAsMenuItem) + show(SaveAsMenuItem) + discard signal_connect(SaveAsMenuItem, "activate", + SIGNAL_FUNC(saveFileAs_Activate), nil) + + var FileMenuItem = menuItemNewWithMnemonic("_File") + + FileMenuItem.setSubMenu(FileMenu) + FileMenuItem.show() + TopMenu.append(FileMenuItem) + + # Edit menu + var EditMenu = menuNew() + + var UndoMenuItem = menu_item_new("Undo") # Undo + EditMenu.append(UndoMenuItem) + show(UndoMenuItem) + discard signal_connect(UndoMenuItem, "activate", + SIGNAL_FUNC(aporia.undo), nil) + + var RedoMenuItem = menu_item_new("Redo") # Undo + EditMenu.append(RedoMenuItem) + show(RedoMenuItem) + discard signal_connect(RedoMenuItem, "activate", + SIGNAL_FUNC(aporia.redo), nil) + + createSeparator(EditMenu) + + var FindMenuItem = menu_item_new("Find") # Find + FindMenuItem.add_accelerator("activate", accGroup, + KEY_f, CONTROL_MASK, ACCEL_VISIBLE) + EditMenu.append(FindMenuItem) + show(FindMenuItem) + discard signal_connect(FindMenuItem, "activate", + SIGNAL_FUNC(aporia.find_Activate), nil) + + var ReplaceMenuItem = menu_item_new("Replace") # Replace + ReplaceMenuItem.add_accelerator("activate", accGroup, + KEY_h, CONTROL_MASK, ACCEL_VISIBLE) + EditMenu.append(ReplaceMenuItem) + show(ReplaceMenuItem) + discard signal_connect(ReplaceMenuItem, "activate", + SIGNAL_FUNC(aporia.replace_Activate), nil) + + createSeparator(EditMenu) + + var SettingsMenuItem = menu_item_new("Settings...") # Settings + EditMenu.append(SettingsMenuItem) + show(SettingsMenuItem) + discard signal_connect(SettingsMenuItem, "activate", + SIGNAL_FUNC(aporia.Settings_Activate), nil) + + var EditMenuItem = menuItemNewWithMnemonic("_Edit") + + EditMenuItem.setSubMenu(EditMenu) + EditMenuItem.show() + TopMenu.append(EditMenuItem) + + # View menu + var ViewMenu = menuNew() + + win.viewBottomPanelMenuItem = check_menu_item_new("Bottom Panel") + PCheckMenuItem(win.viewBottomPanelMenuItem).itemSetActive( + win.settings.bottomPanelVisible) + win.viewBottomPanelMenuItem.add_accelerator("activate", accGroup, + KEY_f9, CONTROL_MASK, ACCEL_VISIBLE) + ViewMenu.append(win.viewBottomPanelMenuItem) + show(win.viewBottomPanelMenuItem) + discard signal_connect(win.viewBottomPanelMenuItem, "toggled", + SIGNAL_FUNC(aporia.viewBottomPanel_Toggled), nil) + + var ViewMenuItem = menuItemNewWithMnemonic("_View") + + ViewMenuItem.setSubMenu(ViewMenu) + ViewMenuItem.show() + TopMenu.append(ViewMenuItem) + + + # Tools menu + var ToolsMenu = menuNew() + + createAccelMenuItem(ToolsMenu, accGroup, "Compile current file", + KEY_F4, aporia.CompileCurrent_Activate) + createAccelMenuItem(ToolsMenu, accGroup, "Compile & run current file", + KEY_F5, aporia.CompileRunCurrent_Activate) + createSeparator(ToolsMenu) + createAccelMenuItem(ToolsMenu, accGroup, "Compile project", + KEY_F8, aporia.CompileProject_Activate) + createAccelMenuItem(ToolsMenu, accGroup, "Compile & run project", + KEY_F9, aporia.CompileRunProject_Activate) + createSeparator(ToolsMenu) + createAccelMenuItem(ToolsMenu, accGroup, "Run custom command 1", + KEY_F1, aporia.RunCustomCommand1) + createAccelMenuItem(ToolsMenu, accGroup, "Run custom command 2", + KEY_F2, aporia.RunCustomCommand2) + createAccelMenuItem(ToolsMenu, accGroup, "Run custom command 3", + KEY_F3, aporia.RunCustomCommand3) + + var ToolsMenuItem = menuItemNewWithMnemonic("_Tools") + + ToolsMenuItem.setSubMenu(ToolsMenu) + ToolsMenuItem.show() + TopMenu.append(ToolsMenuItem) + + # Help menu + MainBox.packStart(TopMenu, False, False, 0) + TopMenu.show() + +proc initToolBar(MainBox: PBox) = + # TopBar(ToolBar) + var TopBar = toolbarNew() + TopBar.setStyle(TOOLBAR_ICONS) + + var NewFileItem = TopBar.insertStock(STOCK_NEW, "New File", + "New File", SIGNAL_FUNC(aporia.newFile), nil, 0) + TopBar.appendSpace() + var OpenItem = TopBar.insertStock(STOCK_OPEN, "Open", + "Open", SIGNAL_FUNC(aporia.openFile), nil, -1) + var SaveItem = TopBar.insertStock(STOCK_SAVE, "Save", + "Save", SIGNAL_FUNC(saveFile_Activate), nil, -1) + TopBar.appendSpace() + var UndoItem = TopBar.insertStock(STOCK_UNDO, "Undo", + "Undo", SIGNAL_FUNC(aporia.undo), nil, -1) + var RedoItem = TopBar.insertStock(STOCK_REDO, "Redo", + "Redo", SIGNAL_FUNC(aporia.redo), nil, -1) + + MainBox.packStart(TopBar, False, False, 0) + TopBar.show() + +proc initSourceViewTabs() = + win.SourceViewTabs = notebookNew() + #win.sourceViewTabs.dragDestSet(DEST_DEFAULT_DROP, nil, 0, ACTION_MOVE) + discard win.SourceViewTabs.signalConnect( + "switch-page", SIGNAL_FUNC(onSwitchTab), nil) + #discard win.SourceViewTabs.signalConnect( + # "drag-drop", SIGNAL_FUNC(svTabs_DragDrop), nil) + #discard win.SourceViewTabs.signalConnect( + # "drag-data-received", SIGNAL_FUNC(svTabs_DragDataRecv), nil) + #discard win.SourceViewTabs.signalConnect( + # "drag-motion", SIGNAL_FUNC(svTabs_DragMotion), nil) + win.SourceViewTabs.set_scrollable(True) + + win.SourceViewTabs.show() + if lastSession.len != 0: + for i in 0 .. len(lastSession)-1: + var splitUp = lastSession[i].split('|') + var (filename, offset) = (splitUp[0], splitUp[1]) + addTab("", filename) + + var iter: TTextIter + win.Tabs[i].buffer.getIterAtOffset(addr(iter), offset.parseInt()) + win.Tabs[i].buffer.moveMarkByName("insert", addr(iter)) + win.Tabs[i].buffer.moveMarkByName("selection_bound", addr(iter)) + + # TODO: Fix this..... :( + discard PTextView(win.Tabs[i].sourceView). + scrollToIter(addr(iter), 0.25, true, 0.0, 0.0) + else: + addTab("", "") + + # This doesn't work :\ + win.Tabs[0].sourceView.grabFocus() + + +proc initBottomTabs() = + win.bottomPanelTabs = notebookNew() + if win.settings.bottomPanelVisible: + win.bottomPanelTabs.show() + + # output tab + var tabLabel = labelNew("Output") + var outputTab = vboxNew(False, 0) + discard win.bottomPanelTabs.appendPage(outputTab, tabLabel) + # Compiler tabs, gtktextview + var outputScrolledWindow = scrolledwindowNew(nil, nil) + outputScrolledWindow.setPolicy(POLICY_AUTOMATIC, POLICY_AUTOMATIC) + outputTab.packStart(outputScrolledWindow, true, true, 0) + outputScrolledWindow.show() + + win.outputTextView = textviewNew() + outputScrolledWindow.add(win.outputTextView) + win.outputTextView.show() + + outputTab.show() + +proc initTAndBP(MainBox: PBox) = + # This init's the HPaned, which splits the sourceViewTabs + # and the BottomPanelTabs + initSourceViewTabs() + initBottomTabs() + + var TAndBPVPaned = vpanedNew() + tandbpVPaned.pack1(win.sourceViewTabs, resize=True, shrink=False) + tandbpVPaned.pack2(win.bottomPanelTabs, resize=False, shrink=False) + MainBox.packStart(TAndBPVPaned, True, True, 0) + tandbpVPaned.setPosition(win.settings.VPanedPos) + TAndBPVPaned.show() + +proc initFindBar(MainBox: PBox) = + # Create a fixed container + win.findBar = HBoxNew(False, 0) + win.findBar.setSpacing(4) + + # Add a Label 'Find' + var findLabel = labelNew("Find:") + win.findBar.packStart(findLabel, False, False, 0) + findLabel.show() + + # Add a (find) text entry + win.findEntry = entryNew() + win.findBar.packStart(win.findEntry, False, False, 0) + discard win.findEntry.signalConnect("activate", SIGNAL_FUNC( + aporia.nextBtn_Clicked), nil) + win.findEntry.show() + var rq: TRequisition + win.findEntry.sizeRequest(addr(rq)) + + # Make the (find) text entry longer + win.findEntry.set_size_request(190, rq.height) + + # Add a Label 'Replace' + # - This Is only shown, when the 'Search & Replace'(CTRL + H) is shown + win.replaceLabel = labelNew("Replace:") + win.findBar.packStart(win.replaceLabel, False, False, 0) + #replaceLabel.show() + + # Add a (replace) text entry + # - This Is only shown, when the 'Search & Replace'(CTRL + H) is shown + win.replaceEntry = entryNew() + win.findBar.packStart(win.replaceEntry, False, False, 0) + #win.replaceEntry.show() + var rq1: TRequisition + win.replaceEntry.sizeRequest(addr(rq1)) + + # Make the (replace) text entry longer + win.replaceEntry.set_size_request(100, rq1.height) + + # Find next button + var nextBtn = buttonNew("Next") + win.findBar.packStart(nextBtn, false, false, 0) + discard nextBtn.signalConnect("clicked", + SIGNAL_FUNC(aporia.nextBtn_Clicked), nil) + nextBtn.show() + var nxtBtnRq: TRequisition + nextBtn.sizeRequest(addr(nxtBtnRq)) + + # Find previous button + var prevBtn = buttonNew("Previous") + win.findBar.packStart(prevBtn, false, false, 0) + discard prevBtn.signalConnect("clicked", + SIGNAL_FUNC(aporia.prevBtn_Clicked), nil) + prevBtn.show() + + # Replace button + # - This Is only shown, when the 'Search & Replace'(CTRL + H) is shown + win.replaceBtn = buttonNew("Replace") + win.findBar.packStart(win.replaceBtn, false, false, 0) + discard win.replaceBtn.signalConnect("clicked", + SIGNAL_FUNC(aporia.replaceBtn_Clicked), nil) + #replaceBtn.show() + + # Replace all button + # - this Is only shown, when the 'Search & Replace'(CTRL + H) is shown + win.replaceAllBtn = buttonNew("Replace All") + win.findBar.packStart(win.replaceAllBtn, false, false, 0) + discard win.replaceAllBtn.signalConnect("clicked", + SIGNAL_FUNC(aporia.replaceAllBtn_Clicked), nil) + #replaceAllBtn.show() + + # Right side ... + + # Close button - With a close stock image + var closeBtn = buttonNew() + var closeImage = imageNewFromStock(STOCK_CLOSE, ICON_SIZE_SMALL_TOOLBAR) + var closeBox = hboxNew(False, 0) + closeBtn.add(closeBox) + closeBox.show() + closeBox.add(closeImage) + closeImage.show() + discard closeBtn.signalConnect("clicked", + SIGNAL_FUNC(aporia.closeBtn_Clicked), nil) + win.findBar.packEnd(closeBtn, False, False, 2) + closeBtn.show() + + # Extra button - When clicked shows a menu with options like 'Use regex' + var extraBtn = buttonNew() + var extraImage = imageNewFromStock(STOCK_PROPERTIES, ICON_SIZE_SMALL_TOOLBAR) + + var extraBox = hboxNew(False, 0) + extraBtn.add(extraBox) + extraBox.show() + extraBox.add(extraImage) + extraImage.show() + discard extraBtn.signalConnect("clicked", + SIGNAL_FUNC(aporia.extraBtn_Clicked), nil) + win.findBar.packEnd(extraBtn, False, False, 0) + extraBtn.show() + + MainBox.packStart(win.findBar, False, False, 0) + win.findBar.show() + +proc initStatusBar(MainBox: PBox) = + win.bottomBar = statusbarNew() + MainBox.packStart(win.bottomBar, False, False, 0) + win.bottomBar.show() + + discard win.bottomBar.push(0, "Line: 0 Column: 0") + +proc initControls() = + # Load up the language style + win.langMan = languageManagerGetDefault() + var langpaths: array[0..1, cstring] = + [cstring(os.getApplicationDir() / langSpecs), nil] + win.langMan.setSearchPath(addr(langpaths)) + var nimLang = win.langMan.getLanguage("nimrod") + win.nimLang = nimLang + + # Load the scheme + var schemeMan = schemeManagerGetDefault() + var schemepaths: array[0..1, cstring] = + [cstring(os.getApplicationDir() / styles), nil] + schemeMan.setSearchPath(addr(schemepaths)) + win.scheme = schemeMan.getScheme(win.settings.colorSchemeID) + + # Window + win.w = windowNew(gtk2.WINDOW_TOPLEVEL) + win.w.setDefaultSize(win.settings.winWidth, win.settings.winHeight) + win.w.setTitle("Aporia IDE") + if win.settings.winMaximized: win.w.maximize() + + win.w.show() # The window has to be shown before + # setting the position of the VPaned so that + # it gets set correctly, when the window is maximized. + + discard win.w.signalConnect("destroy", SIGNAL_FUNC(aporia.destroy), nil) + discard win.w.signalConnect("delete_event", + SIGNAL_FUNC(aporia.delete_event), nil) + discard win.w.signalConnect("window-state-event", + SIGNAL_FUNC(aporia.windowState_Changed), nil) + + # MainBox (vbox) + var MainBox = vboxNew(False, 0) + win.w.add(MainBox) + + initTopMenu(MainBox) + initToolBar(MainBox) + initTAndBP(MainBox) + initFindBar(MainBox) + initStatusBar(MainBox) + + MainBox.show() + if confParseFail: + dialogs.warning(win.w, "Error parsing config file, using default settings.") + +nimrod_init() +initControls() +main() + diff --git a/tests/examplefiles/example_file.fy b/tests/examplefiles/example_file.fy new file mode 100644 index 00000000..43e80c1d --- /dev/null +++ b/tests/examplefiles/example_file.fy @@ -0,0 +1,128 @@ +class Person { + def initialize: @name age: @age { + """ + This is a docstring for the Person constructor method. + Docstrings usually are multi-line, like this one. + """ + } + + def to_s { + # return is optional in this case, but we use it nontheless + return "Person with name: #{@name inspect} and age: #{@age}" + } +} + +class PersonWithCity : Person { + def initialize: @name age: @age city: @city { + } + + def to_s { + super to_s ++ " living in: #{@city inspect}" + } +} + +p1 = Person new: "Johnny Jackson" age: 42 +p1 println # prints: Person with name: "Johnny Jackson" and age: 42 + +p2 = PersonWithCity new: "John Appleseed" age: 55 city: "New York" +p2 println # prints: Person with name: "John Appleseed" age: 55 living in: "New York" + +array = [1,2,3, "foo", 'bar] +hash = <['foo => "bar", 'bar => 42]> +tuple = (1,2,"hello","world") +block = |x, y| { + x + y println +} +block call: [4,2] + +0b010101 & 0b00101 to_s: 2 . println +0xFF & 0xAB to_s: 16 . println +0o77 > 0o76 println +123.123 + 0.222 println + +x = 0 +try { + 10 / x println +} catch ZeroDivisionError => e { + x = 3 + retry +} finally { + "Finally, done!" println +} + +def a_method: arg1 with_default_arg: arg2 (42) { + arg1 * arg2 println +} + +a_method: 42 +a_method: 42 with_default_arg: 85 + +class ClassWithClassMethod { + def self class_method1 { + 'works + } + + def ClassWithClassMethod class_method2 { + 'this_as_well + } +} + +ClassWithClassMethod class_method1 println +ClassWithClassMethod class_method2 println + +def another_method: block { + 1 upto: 10 . map: block +} + +# local returns +another_method: |x| { return_local x * 2 } . inspect println + + +# pattern matching: +class PatternMatching { + def match_it: obj { + match obj { + case String -> "It's a String!" println + case Fixnum -> "It's a Number!" println + case _ -> "Aything else!" println + } + } + + def match_with_extract: str { + match str { + # m holds the MatchData object, m1 & m2 the first and second matches + case /^(.*) : (.*)$/ -> |m, m1, m2| + "First match: #{m1}" println + "Second match: #{m2}" println + } + } +} + +pm = PatternMatching new +pm match_it: "foo" +pm match_it: 42 +pm match_it: 'foo + +pm match_with_extract: "Hello : World!" + + +# calling ruby methods: +[3, 2, 1] reverse() each() |a| { puts(a) } +"Hello" sub("ll", "y") println +[3, 2, 1] map() |a| { a * 2 } inject(0) |s i| { s + i } println + +# test symbol highlighting +['foo] +['foo?!] +{'foo} +{'foo!?} +{'foo:bar?!=&/:} +('foo) + +# future sends +42 @ to_s class println +42 @ to_s: 16 . value println + +# async sends +42 @@ println +42 @@ upto: 100 diff --git a/tests/examplefiles/nemerle_sample.n b/tests/examplefiles/nemerle_sample.n new file mode 100644 index 00000000..2c05033a --- /dev/null +++ b/tests/examplefiles/nemerle_sample.n @@ -0,0 +1,85 @@ +using System; + +namespace Demo.Ns +{ + /// sample class + public class ClassSample : Base + { + /* sample multiline comment */ +#region region sample + fieldSample : int; +#endregion + + public virtual someMethod(str : string) : list[double] + { + def x = "simple string"; + def x = $"simple $splice string $(spliceMethod())"; + def x = <# + recursive <# string #> sample + #>; + def x = $<# + recursive $splice <# string #> sample + #>; + + def localFunc(arg) + { + arg + 1; + } + + match (localFunc(2)) + { + | 3 => "ok"; + | _ => "fail"; + } + + using (x = SomeObject()) + { + foreach (item in someCollection) + { + def i = try + { + int.Parse(item) + } + catch + { + | _ is FormatException => 0; + } + when (i > 0xff) + unless (i < 555L) + WriteLine(i); + + } + } + protected override overrideSample() : void + {} + + private privateSample() : void + {} + + public abstract abstractSample() : void + {} + } + + } + + module ModuleSample + { + } + + variant RgbColor { + | Red + | Yellow + | Green + | Different { + red : float; + green : float; + blue : float; + } + } + + macro sampleMacro(expr) + syntax ("write", expr) + { + <[ WriteLine($expr) ]> + } +} diff --git a/tests/examplefiles/objc_example.m b/tests/examplefiles/objc_example.m index c2a1c414..cb5c0975 100644 --- a/tests/examplefiles/objc_example.m +++ b/tests/examplefiles/objc_example.m @@ -1,5 +1,19 @@ #import "Somefile.h" +@implementation ABC + +- (id)a:(B)b { + return 1; +} + +@end + +@implementation ABC + +- (void)xyz; + +@end + NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys: @"quattuor", @"four", @"quinque", @"five", @"sex", @"six", nil]; diff --git a/tests/examplefiles/squid.conf b/tests/examplefiles/squid.conf index 31e611d6..833d4fca 100644 --- a/tests/examplefiles/squid.conf +++ b/tests/examplefiles/squid.conf @@ -1,27 +1,30 @@ -# First, a comment block for the deafult conf: +# Some multiline comments -# TAG: buffered_logs on|off -# cache.log log file is written with stdio functions, and as such -# it can be buffered or unbuffered. By default it will be unbuffered. -# Buffering it can speed up the writing slightly (though you are -# unlikely to need to worry unless you run with tons of debugging -# enabled in which case performance will suffer badly anyway..). -# -#Default: -# buffered_logs off - -# Now, a slightly useful (but in no way complete) set of options: - -cache_peer upstream1.example.com parent 8080 0 no-query proxy-only round-robin -cache_peer upstream2.example.com parent 3128 0 no-query proxy-only round-robin -never_direct allow all -never_direct allow CONNECT - -acl myclients src 127.0.0.1 -http_access allow myclients - -acl mynet src 192.168.0.0/255.255.0.0 -no_cache deny mynet - -acl mynetlocal dst 192.168.0.0/255.255.0.0 -always_direct allow mynetlocal +acl manager proto cache_object +acl localhost src 127.0.0.1/32 ::1 +acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 +acl SSL_ports port 443 +acl Safe_ports port 80 # http +acl Safe_ports port 21 # ftp +acl Safe_ports port 443 # https +acl Safe_ports port 70 # gopher +acl Safe_ports port 210 # wais +acl Safe_ports port 1025-65535 # unregistered ports +acl Safe_ports port 280 # http-mgmt +acl Safe_ports port 488 # gss-http +acl Safe_ports port 591 # filemaker +acl Safe_ports port 777 # multiling http +acl CONNECT method CONNECT +http_access allow manager localhost +http_access deny manager +http_access deny !Safe_ports +http_access deny CONNECT !SSL_ports +http_access allow localhost +http_access deny all +http_port 3128 +hierarchy_stoplist cgi-bin ? +coredump_dir /var/spool/squid3 +refresh_pattern ^ftp: 1440 20% 10080 +refresh_pattern ^gopher: 1440 0% 1440 +refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 +refresh_pattern . 0 20% 4320 diff --git a/tests/examplefiles/test.awk b/tests/examplefiles/test.awk new file mode 100644 index 00000000..9f0e3ec9 --- /dev/null +++ b/tests/examplefiles/test.awk @@ -0,0 +1,121 @@ +#!/bin/awk -f + +BEGIN { + # It is not possible to define output file names here because + # FILENAME is not define in the BEGIN section + n = ""; + printf "Generating data files ..."; + network_max_bandwidth_in_byte = 10000000; + network_max_packet_per_second = 1000000; + last3 = 0; + last4 = 0; + last5 = 0; + last6 = 0; +} +{ + if ($1 ~ /Average/) + { # Skip the Average values + n = ""; + next; + } + + if ($2 ~ /all/) + { # This is the cpu info + print $3 > FILENAME".cpu.user.dat"; +# print $4 > FILENAME".cpu.nice.dat"; + print $5 > FILENAME".cpu.system.dat"; +# print $6 > FILENAME".cpu.iowait.dat"; + print $7 > FILENAME".cpu.idle.dat"; + print 100-$7 > FILENAME".cpu.busy.dat"; + } + if ($2 ~ /eth0/) + { # This is the eth0 network info + if ($3 > network_max_packet_per_second) + print last3 > FILENAME".net.rxpck.dat"; # Total number of packets received per second. + else + { + last3 = $3; + print $3 > FILENAME".net.rxpck.dat"; # Total number of packets received per second. + } + if ($4 > network_max_packet_per_second) + print last4 > FILENAME".net.txpck.dat"; # Total number of packets transmitted per second. + else + { + last4 = $4; + print $4 > FILENAME".net.txpck.dat"; # Total number of packets transmitted per second. + } + if ($5 > network_max_bandwidth_in_byte) + print last5 > FILENAME".net.rxbyt.dat"; # Total number of bytes received per second. + else + { + last5 = $5; + print $5 > FILENAME".net.rxbyt.dat"; # Total number of bytes received per second. + } + if ($6 > network_max_bandwidth_in_byte) + print last6 > FILENAME".net.txbyt.dat"; # Total number of bytes transmitted per second. + else + { + last6 = $6; + print $6 > FILENAME".net.txbyt.dat"; # Total number of bytes transmitted per second. + } +# print $7 > FILENAME".net.rxcmp.dat"; # Number of compressed packets received per second (for cslip etc.). +# print $8 > FILENAME".net.txcmp.dat"; # Number of compressed packets transmitted per second. +# print $9 > FILENAME".net.rxmcst.dat"; # Number of multicast packets received per second. + } + + # Detect which is the next info to be parsed + if ($2 ~ /proc|cswch|tps|kbmemfree|totsck/) + { + n = $2; + } + + # Only get lines with numbers (real data !) + if ($2 ~ /[0-9]/) + { + if (n == "proc/s") + { # This is the proc/s info + print $2 > FILENAME".proc.dat"; +# n = ""; + } + if (n == "cswch/s") + { # This is the context switches per second info + print $2 > FILENAME".ctxsw.dat"; +# n = ""; + } + if (n == "tps") + { # This is the disk info + print $2 > FILENAME".disk.tps.dat"; # total transfers per second + print $3 > FILENAME".disk.rtps.dat"; # read requests per second + print $4 > FILENAME".disk.wtps.dat"; # write requests per second + print $5 > FILENAME".disk.brdps.dat"; # block reads per second + print $6 > FILENAME".disk.bwrps.dat"; # block writes per second +# n = ""; + } + if (n == "kbmemfree") + { # This is the mem info + print $2 > FILENAME".mem.kbmemfree.dat"; # Amount of free memory available in kilobytes. + print $3 > FILENAME".mem.kbmemused.dat"; # Amount of used memory in kilobytes. This does not take into account memory used by the kernel itself. + print $4 > FILENAME".mem.memused.dat"; # Percentage of used memory. +# It appears the kbmemshrd has been removed from the sysstat output - ntolia +# print $X > FILENAME".mem.kbmemshrd.dat"; # Amount of memory shared by the system in kilobytes. Always zero with 2.4 kernels. +# print $5 > FILENAME".mem.kbbuffers.dat"; # Amount of memory used as buffers by the kernel in kilobytes. + print $6 > FILENAME".mem.kbcached.dat"; # Amount of memory used to cache data by the kernel in kilobytes. +# print $7 > FILENAME".mem.kbswpfree.dat"; # Amount of free swap space in kilobytes. +# print $8 > FILENAME".mem.kbswpused.dat"; # Amount of used swap space in kilobytes. + print $9 > FILENAME".mem.swpused.dat"; # Percentage of used swap space. +# n = ""; + } + if (n == "totsck") + { # This is the socket info + print $2 > FILENAME".sock.totsck.dat"; # Total number of used sockets. + print $3 > FILENAME".sock.tcpsck.dat"; # Number of TCP sockets currently in use. +# print $4 > FILENAME".sock.udpsck.dat"; # Number of UDP sockets currently in use. +# print $5 > FILENAME".sock.rawsck.dat"; # Number of RAW sockets currently in use. +# print $6 > FILENAME".sock.ip-frag.dat"; # Number of IP fragments currently in use. +# n = ""; + } + } +} +END { + print " '" FILENAME "' done."; +} diff --git a/tests/examplefiles/test.ec b/tests/examplefiles/test.ec new file mode 100644 index 00000000..37868b52 --- /dev/null +++ b/tests/examplefiles/test.ec @@ -0,0 +1,605 @@ +namespace gui; + +import "Window" + +public struct AnchorValue +{ + AnchorValueType type; + + union + { + int distance; + float percent; + }; + property int + { + set { distance = value; type = offset; } + get { return distance; } + } + property double + { + set { percent = (float) value; type = relative; } + get { return (double) percent; } + } + + char * OnGetString(char * stringOutput, void * fieldData, bool * needClass) + { + if(type == offset) + { + sprintf(stringOutput, "%d", distance); + } + else if(type == relative) + { + int c; + int last = 0; + sprintf(stringOutput, "%f", percent); + c = strlen(stringOutput)-1; + for( ; c >= 0; c--) + { + if(stringOutput[c] != '0') + last = Max(last, c); + if(stringOutput[c] == '.') + { + if(last == c) + { + stringOutput[c+1] = '0'; + stringOutput[c+2] = 0; + } + else + stringOutput[last+1] = 0; + break; + } + } + } + if(needClass) *needClass = false; + return stringOutput; + } + + bool OnGetDataFromString(char * stringOutput) + { + char * end; + if(strchr(stringOutput, '.')) + { + float percent = (float)strtod(stringOutput, &end); + + if(end != stringOutput) + { + this.percent = percent; + type = relative; + return true; + } + } + else if(stringOutput[0]) + { + int distance = strtol(stringOutput, &end, 0); + if(end != stringOutput) + { + this.distance = distance; + type = offset; + return true; + } + } + else + { + distance = 0; + type = 0; + } + return false; + } +}; + +public struct MiddleAnchorValue +{ + AnchorValueType type; + + union + { + int distance; + float percent; + }; + property int + { + set { distance = value; type = none; } + get { return distance; } + } + property double + { + set { percent = (float) value; type = middleRelative; } + get { return (double) percent; } + } + + char * OnGetString(char * stringOutput, void * fieldData, bool * needClass) + { + if(type == middleRelative) + { + int c; + int last = 0; + sprintf(stringOutput, "%f", percent); + c = strlen(stringOutput)-1; + for( ; c >= 0; c--) + { + if(stringOutput[c] != '0') + last = Max(last, c); + if(stringOutput[c] == '.') + { + if(last == c) + { + stringOutput[c+1] = '0'; + stringOutput[c+2] = 0; + } + else + stringOutput[last+1] = 0; + break; + } + } + } + else if(type == none && distance) + { + sprintf(stringOutput, "%d", distance); + } + if(needClass) *needClass = false; + return stringOutput; + } + + bool OnGetDataFromString(char * stringOutput) + { + if(strchr(stringOutput, '.')) + { + percent = (float)strtod(stringOutput, null); + type = middleRelative; + } + else + { + distance = strtol(stringOutput, null, 0); + type = none; + } + return true; + } +}; + +public enum AnchorValueType { none, offset, relative, middleRelative, cascade, vTiled, hTiled }; + +public struct Anchor +{ + union { AnchorValue left; MiddleAnchorValue horz; }; + union { AnchorValue top; MiddleAnchorValue vert; }; + AnchorValue right, bottom; + + char * OnGetString(char * stringOutput, void * fieldData, bool * needClass) + { + char tempString[256]; + char * anchorValue; + bool subNeedClass; + + tempString[0] = '\0'; + anchorValue = left.OnGetString(tempString, null, &subNeedClass); + if(anchorValue[0]) { if(stringOutput[0]) strcat(stringOutput, ", "); strcat(stringOutput, "left = "); strcat(stringOutput, anchorValue); } + + //if(((!left.type && !right.type) && horz.distance) || horz.type == middleRelative) + if(!right.type && ((!left.type && horz.distance) || horz.type == middleRelative)) + { + tempString[0] = '\0'; + anchorValue = horz.OnGetString(tempString, null, &subNeedClass); + if(anchorValue[0]) { if(stringOutput[0]) strcat(stringOutput, ", "); strcat(stringOutput, "horz = "); strcat(stringOutput, anchorValue); } + } + + tempString[0] = '\0'; + anchorValue = top.OnGetString(tempString, null, &subNeedClass); + if(anchorValue[0]) { if(stringOutput[0]) strcat(stringOutput, ", "); strcat(stringOutput, "top = "); strcat(stringOutput, anchorValue); } + + tempString[0] = '\0'; + anchorValue = right.OnGetString(tempString, null, &subNeedClass); + if(anchorValue[0]) { if(stringOutput[0]) strcat(stringOutput, ", "); strcat(stringOutput, "right = "); strcat(stringOutput, anchorValue); } + + // if(((!top.type && !bottom.type) && vert.distance) || vert.type == middleRelative) + if(!bottom.type && ((!top.type && vert.distance) || vert.type == middleRelative)) + { + tempString[0] = '\0'; + anchorValue = vert.OnGetString(tempString, null, &subNeedClass); + if(anchorValue[0]) { if(stringOutput[0]) strcat(stringOutput, ", "); strcat(stringOutput, "vert = "); strcat(stringOutput, anchorValue); } + } + + tempString[0] = '\0'; + anchorValue = bottom.OnGetString(tempString, null, &subNeedClass); + if(anchorValue[0]) { if(stringOutput[0]) strcat(stringOutput, ", "); strcat(stringOutput, "bottom = "); strcat(stringOutput, anchorValue); } + + return stringOutput; + } + + bool OnGetDataFromString(char * string) + { + this = Anchor {}; + return class::OnGetDataFromString(string); + } + + bool OnSaveEdit(DropBox dropBox, void * object) + { + return dropBox.Save(); + } + + Window OnEdit(Window listBox, Window master, int x, int y, int w, int h, Window control) + { + char * string = ""; + AnchorDropBox comboBox + { + editText = true; + parent = listBox; + master = master; + position = Point { x, y }; + //clientSize = Size { h = h }; + //size.w = w; + size = { w, h }; + anchorValue = this; + control = control; + borderStyle = 0; + }; + + comboBox.Create(); + + { + char tempString[MAX_F_STRING] = ""; + bool needClass = false; + char * result = OnGetString(tempString, null, &needClass); + if(result) string = result; + } + comboBox.contents = string; + return comboBox; + } +}; + +private class AnchorButton : Button +{ + toggle = true, bevel = false; + + void OnRedraw(Surface surface) + { + int cw = clientSize.w; + int ch = clientSize.h; + + surface.SetForeground(black); + if(checked) + { + surface.SetBackground(Color { 85,85,85 }); + surface.Area(0,0, cw-1, ch-1); + } + else + surface.LineStipple(0xAAAA); + + surface.Rectangle(0,0,cw-1,ch-1); + + if(active) + { + surface.LineStipple(0xAAAA); + surface.Rectangle(2,2,cw-3,ch-3); + } + } + + bool AnchorEditor::NotifyClicked(Button button, int x, int y, Modifiers mods) + { + AnchorDropBox anchorDropBox = (AnchorDropBox)master; + Anchor anchor = anchorDropBox.anchorValue; + Window control = anchorDropBox.control; + DataBox dropMaster = (DataBox)anchorDropBox.master; + int id = button.id; + + switch(id) + { + case 0: anchor.left.type = button.checked ? offset : none; break; + case 1: anchor.top.type = button.checked ? offset : none; break; + case 2: anchor.right.type = button.checked ? offset : none; break; + case 3: anchor.bottom.type = button.checked ? offset : none; break; + } + + if(anchor.horz.type == middleRelative && (id == 0 || id == 2)) + { + anchorDropBox.relButtons[0].checked = false; + anchorDropBox.relButtons[2].checked = false; + } + if(anchor.vert.type == middleRelative && (id == 1 || id == 3)) + { + anchorDropBox.relButtons[1].checked = false; + anchorDropBox.relButtons[3].checked = false; + } + anchorDropBox.relButtons[id].checked = false; + + //anchor.horz.type = none; + //anchor.vert.type = none; + + { + int vpw, vph; + int x,y,w,h; + Window parent = control.parent; + + // Fix Anchor + x = control.position.x; + y = control.position.y; + w = control.size.w; + h = control.size.h; + + vpw = parent.clientSize.w; + vph = parent.clientSize.h; + if(control.nonClient) + { + vpw = parent.size.w; + vph = parent.size.h; + } + else if(((BorderBits)control.borderStyle).fixed) + { + if(!control.dontScrollHorz && parent.scrollArea.w) vpw = parent.scrollArea.w; + if(!control.dontScrollVert && parent.scrollArea.h) vph = parent.scrollArea.h; + } + + if(anchor.left.type == offset) anchor.left.distance = x; + else if(anchor.left.type == relative) anchor.left.percent = (float)x / vpw; + if(anchor.top.type == offset) anchor.top.distance = y; + else if(anchor.top.type == relative) anchor.top.percent = (float)y / vph; + if(anchor.right.type == offset) anchor.right.distance = vpw - (x + w); + //else if(anchor.right.type == relative) anchor.right.percent = (float) (x + w) / vpw; + else if(anchor.right.type == relative) anchor.right.percent = (float) (vpw - (x + w)) / vpw; + if(anchor.bottom.type == offset) anchor.bottom.distance = vph - (y + h); + //else if(anchor.bottom.type == relative) anchor.bottom.percent = (float) (y + h) / vph; + else if(anchor.bottom.type == relative) anchor.bottom.percent = (float) (vph - (y + h)) / vph; + + if(!anchor.left.type && !anchor.right.type) + { + anchor.horz.distance = (x + w / 2) - (vpw / 2); + //anchor.horz.type = anchor.horz.distance ? offset : 0; + } + else if(anchor.horz.type == middleRelative) anchor.horz.percent = (float) ((x + w / 2) - (vpw / 2)) / vpw; + if(!anchor.top.type && !anchor.bottom.type) + { + anchor.vert.distance = (y + h / 2) - (vph / 2); + //anchor.vert.type = anchor.vert.distance ? offset : 0; + } + else if(anchor.vert.type == middleRelative) anchor.vert.percent = (float)((y + h / 2) - (vph / 2)) / vph; + } + + { + char tempString[1024] = ""; + bool needClass = false; + char * string = anchor.OnGetString(tempString, null, &needClass); + anchorDropBox.contents = string; + } + + dropMaster.SetData(&anchor, false); + anchorDropBox.anchorValue = anchor; + return true; + } +} + +private class AnchorRelButton : Button +{ + toggle = true; + bevel = false; + text = "%"; + //bevelOver = true; + + void OnRedraw(Surface surface) + { + int cw = clientSize.w; + int ch = clientSize.h; + + if(checked) + { + surface.SetForeground(black); + } + else + { + surface.SetForeground(Color{170,170,170}); + } + surface.WriteText(5,2, "%", 1); + + if(active) + { + surface.LineStipple(0xAAAA); + surface.Rectangle(3,3,cw-4,ch-4); + } + } + + bool AnchorEditor::NotifyClicked(Button button, int x, int y, Modifiers mods) + { + AnchorDropBox anchorDropBox = (AnchorDropBox)master; + Anchor anchor = anchorDropBox.anchorValue; + Window control = anchorDropBox.control; + DataBox dropMaster = (DataBox)anchorDropBox.master; + int id = button.id; + + if((id == 0 || id == 2) && ((!anchor.left.type && !anchor.right.type) || anchor.left.type == middleRelative)) + { + if(button.checked) anchor.horz.type = middleRelative; else anchor.horz.type = none; + anchorDropBox.relButtons[(id + 2)%4].checked = button.checked; + } + else if((id == 1 || id == 3) && ((!anchor.top.type && !anchor.bottom.type) || anchor.top.type == middleRelative)) + { + if(button.checked) anchor.vert.type = middleRelative; else anchor.vert.type = none; + anchorDropBox.relButtons[(id + 2)%4].checked = button.checked; + } + else + { + switch(id) + { + case 0: anchor.left.type = button.checked ? relative : (anchor.left.type ? offset : none); break; + case 1: anchor.top.type = button.checked ? relative : (anchor.top.type ? offset : none); break; + case 2: anchor.right.type = button.checked ? relative : (anchor.right.type ? offset : none); break; + case 3: anchor.bottom.type = button.checked ? relative : (anchor.bottom.type ? offset : none); break; + } + anchorDropBox.buttons[id].checked = true; + if(anchor.horz.type == middleRelative) anchor.horz.type = none; + if(anchor.vert.type == middleRelative) anchor.vert.type = none; + } + + { + int vpw, vph; + int x,y,w,h; + Window parent = control.parent; + + // Fix Anchor + x = control.position.x; + y = control.position.y; + w = control.size.w; + h = control.size.h; + + vpw = parent.clientSize.w; + vph = parent.clientSize.h; + if(control.nonClient) + { + vpw = parent.size.w; + vph = parent.size.h; + } + else if(((BorderBits)control.borderStyle).fixed) + { + if(!control.dontScrollHorz && parent.scrollArea.w) vpw = parent.scrollArea.w; + if(!control.dontScrollVert && parent.scrollArea.h) vph = parent.scrollArea.h; + } + + if(anchor.left.type == offset) anchor.left.distance = x; + else if(anchor.left.type == relative) anchor.left.percent = (float)x / vpw; + if(anchor.top.type == offset) anchor.top.distance = y; + else if(anchor.top.type == relative) anchor.top.percent = (float)y / vph; + if(anchor.right.type == offset) anchor.right.distance = vpw - (x + w); + //else if(anchor.right.type == relative) anchor.right.percent = (float) (x + w) / vpw; + else if(anchor.right.type == relative) anchor.right.percent = (float) (vpw - (x + w)) / vpw; + if(anchor.bottom.type == offset) anchor.bottom.distance = vph - (y + h); + //else if(anchor.bottom.type == relative) anchor.bottom.percent = (float) (y + h) / vph; + else if(anchor.bottom.type == relative) anchor.bottom.percent = (float) (vph - (y + h)) / vph; + + if(!anchor.left.type && !anchor.right.type) + { + anchor.horz.distance = (x + w / 2) - (vpw / 2); + //anchor.horz.type = anchor.horz.distance ? offset : none; + } + else if(anchor.horz.type == middleRelative) anchor.horz.percent = (float) ((x + w / 2) - (vpw / 2)) / vpw; + if(!anchor.top.type && !anchor.bottom.type) + { + anchor.vert.distance = (y + h / 2) - (vph / 2); + //anchor.vert.type = anchor.vert.distance ? offset : none; + } + else if(anchor.vert.type == middleRelative) anchor.vert.percent = (float)((y + h / 2) - (vph / 2)) / vph; + } + + { + char tempString[1024] = ""; + bool needClass = false; + char * string = anchor.OnGetString(tempString, null, &needClass); + anchorDropBox.contents = string; + } + + dropMaster.SetData(&anchor, false); + anchorDropBox.anchorValue = anchor; + return true; + } +} + +private class AnchorEditor : Window +{ + interim = true; + borderStyle = deepContour; + size.h = 92; + + bool OnKeyDown(Key key, unichar ch) + { + if(key == escape) + return master.OnKeyDown(key, ch); + return true; + } +} + +private class AnchorDropBox : DropBox +{ + Anchor anchorValue; + Window control; + Button relButtons[4], buttons[4]; + + AnchorEditor anchorEditor + { + master = this; + autoCreate = false; + }; + + Window OnDropDown() + { + int c; + Button + { + anchorEditor, + anchor = Anchor { left = 28, top = 28, right = 28, bottom = 28 }, + inactive = true, disabled = true + }; + for(c = 0; c<4; c++) + { + Button button = buttons[c] = AnchorButton + { + anchorEditor, id = c, + size = Size { (c%2)?10:28, (c%2)?28:10 } + }; + Button relButton = relButtons[c] = AnchorRelButton + { + anchorEditor, id = c; + }; + + switch(c) + { + case 0: + if(anchorValue.left.type && anchorValue.left.type != middleRelative) button.checked = true; + if(anchorValue.left.type == relative || anchorValue.horz.type == middleRelative) relButton.checked = true; + + button.anchor = Anchor { left = 0 }; + relButton.anchor = Anchor { left = 5, vert = 16 }; + break; + case 1: + if(anchorValue.top.type && anchorValue.top.type != middleRelative) button.checked = true; + if(anchorValue.top.type == relative || anchorValue.vert.type == middleRelative) relButton.checked = true; + + button.anchor = Anchor { top = 0 }; + relButton.anchor = Anchor { top = 5, horz = 16 }; + break; + case 2: + if(anchorValue.right.type && anchorValue.right.type != middleRelative) button.checked = true; + if(anchorValue.right.type == relative || anchorValue.horz.type == middleRelative) relButton.checked = true; + + button.anchor = Anchor { right = 0 }; + relButton.anchor = Anchor { right = 5, vert = 16 }; + break; + case 3: + if(anchorValue.bottom.type && anchorValue.bottom.type != middleRelative) button.checked = true; + if(anchorValue.bottom.type == relative || anchorValue.vert.type == middleRelative) relButton.checked = true; + + button.anchor = Anchor { bottom = 0 }; + relButton.anchor = Anchor { bottom = 5, horz = 16 }; + break; + } + } + anchorEditor.Create(); + return anchorEditor; + } + + void OnCloseDropDown(Window anchorEditor) + { + // TOFIX: Patch for update bug + master.Update(null); + anchorEditor.Destroy(0); + } + + bool DataBox::NotifyTextEntry(AnchorDropBox dropBox, char * string, bool save) + { + Anchor anchor = dropBox.anchorValue; + Window control = dropBox.control; + + if(save) + { + if(anchor.OnGetDataFromString(string)) + { + SetData(&anchor, false); + dropBox.anchorValue = anchor; + } + } + else + { + char tempString[1024] = ""; + bool needClass = false; + char * string = anchor.OnGetString(tempString, null, &needClass); + dropBox.contents = string; + } + return true; + } +} diff --git a/tests/examplefiles/test.eh b/tests/examplefiles/test.eh new file mode 100644 index 00000000..1ed173fb --- /dev/null +++ b/tests/examplefiles/test.eh @@ -0,0 +1,315 @@ +/* A Bison parser, made by GNU Bison 2.0. */ + +/* Skeleton parser for Yacc-like parsing with Bison, + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + IDENTIFIER = 258, + CONSTANT = 259, + STRING_LITERAL = 260, + SIZEOF = 261, + PTR_OP = 262, + INC_OP = 263, + DEC_OP = 264, + LEFT_OP = 265, + RIGHT_OP = 266, + LE_OP = 267, + GE_OP = 268, + EQ_OP = 269, + NE_OP = 270, + AND_OP = 271, + OR_OP = 272, + MUL_ASSIGN = 273, + DIV_ASSIGN = 274, + MOD_ASSIGN = 275, + ADD_ASSIGN = 276, + SUB_ASSIGN = 277, + LEFT_ASSIGN = 278, + RIGHT_ASSIGN = 279, + AND_ASSIGN = 280, + XOR_ASSIGN = 281, + OR_ASSIGN = 282, + TYPE_NAME = 283, + TYPEDEF = 284, + EXTERN = 285, + STATIC = 286, + AUTO = 287, + REGISTER = 288, + CHAR = 289, + SHORT = 290, + INT = 291, + UINT = 292, + INT64 = 293, + LONG = 294, + SIGNED = 295, + UNSIGNED = 296, + FLOAT = 297, + DOUBLE = 298, + CONST = 299, + VOLATILE = 300, + VOID = 301, + VALIST = 302, + STRUCT = 303, + UNION = 304, + ENUM = 305, + ELLIPSIS = 306, + CASE = 307, + DEFAULT = 308, + IF = 309, + SWITCH = 310, + WHILE = 311, + DO = 312, + FOR = 313, + GOTO = 314, + CONTINUE = 315, + BREAK = 316, + RETURN = 317, + IFX = 318, + ELSE = 319, + CLASS = 320, + THISCLASS = 321, + CLASS_NAME = 322, + PROPERTY = 323, + SETPROP = 324, + GETPROP = 325, + NEWOP = 326, + RENEW = 327, + DELETE = 328, + EXT_DECL = 329, + EXT_STORAGE = 330, + IMPORT = 331, + DEFINE = 332, + VIRTUAL = 333, + EXT_ATTRIB = 334, + PUBLIC = 335, + PRIVATE = 336, + TYPED_OBJECT = 337, + ANY_OBJECT = 338, + _INCREF = 339, + EXTENSION = 340, + ASM = 341, + TYPEOF = 342, + WATCH = 343, + STOPWATCHING = 344, + FIREWATCHERS = 345, + WATCHABLE = 346, + CLASS_DESIGNER = 347, + CLASS_NO_EXPANSION = 348, + CLASS_FIXED = 349, + ISPROPSET = 350, + CLASS_DEFAULT_PROPERTY = 351, + PROPERTY_CATEGORY = 352, + CLASS_DATA = 353, + CLASS_PROPERTY = 354, + SUBCLASS = 355, + NAMESPACE = 356, + NEW0OP = 357, + RENEW0 = 358, + VAARG = 359, + DBTABLE = 360, + DBFIELD = 361, + DBINDEX = 362, + DATABASE_OPEN = 363 + }; +#endif +#define IDENTIFIER 258 +#define CONSTANT 259 +#define STRING_LITERAL 260 +#define SIZEOF 261 +#define PTR_OP 262 +#define INC_OP 263 +#define DEC_OP 264 +#define LEFT_OP 265 +#define RIGHT_OP 266 +#define LE_OP 267 +#define GE_OP 268 +#define EQ_OP 269 +#define NE_OP 270 +#define AND_OP 271 +#define OR_OP 272 +#define MUL_ASSIGN 273 +#define DIV_ASSIGN 274 +#define MOD_ASSIGN 275 +#define ADD_ASSIGN 276 +#define SUB_ASSIGN 277 +#define LEFT_ASSIGN 278 +#define RIGHT_ASSIGN 279 +#define AND_ASSIGN 280 +#define XOR_ASSIGN 281 +#define OR_ASSIGN 282 +#define TYPE_NAME 283 +#define TYPEDEF 284 +#define EXTERN 285 +#define STATIC 286 +#define AUTO 287 +#define REGISTER 288 +#define CHAR 289 +#define SHORT 290 +#define INT 291 +#define UINT 292 +#define INT64 293 +#define LONG 294 +#define SIGNED 295 +#define UNSIGNED 296 +#define FLOAT 297 +#define DOUBLE 298 +#define CONST 299 +#define VOLATILE 300 +#define VOID 301 +#define VALIST 302 +#define STRUCT 303 +#define UNION 304 +#define ENUM 305 +#define ELLIPSIS 306 +#define CASE 307 +#define DEFAULT 308 +#define IF 309 +#define SWITCH 310 +#define WHILE 311 +#define DO 312 +#define FOR 313 +#define GOTO 314 +#define CONTINUE 315 +#define BREAK 316 +#define RETURN 317 +#define IFX 318 +#define ELSE 319 +#define CLASS 320 +#define THISCLASS 321 +#define CLASS_NAME 322 +#define PROPERTY 323 +#define SETPROP 324 +#define GETPROP 325 +#define NEWOP 326 +#define RENEW 327 +#define DELETE 328 +#define EXT_DECL 329 +#define EXT_STORAGE 330 +#define IMPORT 331 +#define DEFINE 332 +#define VIRTUAL 333 +#define EXT_ATTRIB 334 +#define PUBLIC 335 +#define PRIVATE 336 +#define TYPED_OBJECT 337 +#define ANY_OBJECT 338 +#define _INCREF 339 +#define EXTENSION 340 +#define ASM 341 +#define TYPEOF 342 +#define WATCH 343 +#define STOPWATCHING 344 +#define FIREWATCHERS 345 +#define WATCHABLE 346 +#define CLASS_DESIGNER 347 +#define CLASS_NO_EXPANSION 348 +#define CLASS_FIXED 349 +#define ISPROPSET 350 +#define CLASS_DEFAULT_PROPERTY 351 +#define PROPERTY_CATEGORY 352 +#define CLASS_DATA 353 +#define CLASS_PROPERTY 354 +#define SUBCLASS 355 +#define NAMESPACE 356 +#define NEW0OP 357 +#define RENEW0 358 +#define VAARG 359 +#define DBTABLE 360 +#define DBFIELD 361 +#define DBINDEX 362 +#define DATABASE_OPEN 363 + + + + +#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) +#line 42 "grammar.y" +typedef union YYSTYPE { + SpecifierType specifierType; + int i; + AccessMode declMode; + Identifier id; + Expression exp; + Specifier specifier; + OldList * list; + Enumerator enumerator; + Declarator declarator; + Pointer pointer; + Initializer initializer; + InitDeclarator initDeclarator; + TypeName typeName; + Declaration declaration; + Statement stmt; + FunctionDefinition function; + External external; + Context context; + AsmField asmField; + + Instantiation instance; + MembersInit membersInit; + MemberInit memberInit; + ClassFunction classFunction; + ClassDefinition _class; + ClassDef classDef; + PropertyDef prop; + char * string; + Symbol symbol; + PropertyWatch propertyWatch; + TemplateParameter templateParameter; + TemplateArgument templateArgument; + TemplateDatatype templateDatatype; + + DBTableEntry dbtableEntry; + DBIndexItem dbindexItem; + DBTableDef dbtableDef; +} YYSTYPE; +/* Line 1318 of yacc.c. */ +#line 293 "grammar.eh" +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +extern YYSTYPE yylval; + +#if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED) +typedef struct YYLTYPE +{ + int first_line; + int first_column; + int last_line; + int last_column; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +# define YYLTYPE_IS_DECLARED 1 +# define YYLTYPE_IS_TRIVIAL 1 +#endif + +extern YYLTYPE yylloc; + + diff --git a/tests/examplefiles/test.groovy b/tests/examplefiles/test.groovy new file mode 100644 index 00000000..903863d2 --- /dev/null +++ b/tests/examplefiles/test.groovy @@ -0,0 +1,97 @@ +// This source code comes from http://www.odelia-technologies.com/node/200 + +package com.odelia.groovy.simpleworkflow + + +class SimpleWorkflowEngine { + def workflowMap = [:] + def context = [:] + def beforeActivityName = 'beforeActivity' + def afterActivityName = 'afterActivity' + + SimpleWorkflowEngine(workflow, context = [:]) { + this.context = context + parseWorkflow(workflow) + } + + def parseWorkflow(workflow) { + workflowMap = new WorkflowParser().parse(workflow) + } + + def getActivityValue(activity) { + assert activity instanceof String + if (!workflowMap[activity]) + throw new RuntimeException("$activity activity doesn't exist") + workflowMap[activity] + } + + def execute(activity, pause) { + if (workflowMap[beforeActivityName]) { + getActivityValue(beforeActivityName)(context, activity) + } + + def activityValue = getActivityValue(activity) + + // Determine the next activity to execute + def nextActivity + switch (activityValue) { + case String: nextActivity = activityValue; break + case Closure: nextActivity = activityValue(context); break + case Class: nextActivity = activityValue.newInstance()(context) + } + + if (workflowMap[afterActivityName]) { + getActivityValue(afterActivityName)(context, activity, nextActivity) + } + + if (!pause && nextActivity) + call(nextActivity) + else + nextActivity + } + + def call(activity) { + execute(activity, false) + } + + def nextActivity(activity) { + execute(activity, true) + } + + static void main(String[] args) { + if (args.size() != 2) { + println 'Usage: com.odelia.groovy.simpleworkflow.SimpleWorkflowEngine <dsl_filename> <activity_name>' + return + } + SimpleWorkflowEngine.newInstance(new File(args[0]))(args[1]) + } + +} + +private class WorkflowParser { + def map = [:] + + def methodMissing(String name, args) { + map[name] = args[0] + } + + def parse(Closure wf) { + wf.delegate = this + wf.resolveStrategy = Closure.DELEGATE_FIRST + wf() + map + } + + def workflow = { it -> + it.delegate = this + it.resolveStrategy = Closure.DELEGATE_FIRST + it() + } + + def parse(File workflowDef) { + def binding = new Binding([workflow: workflow]) + def shell = new GroovyShell(binding) + shell.evaluate(workflowDef) + map + } +}
\ No newline at end of file diff --git a/tests/examplefiles/test.pypylog b/tests/examplefiles/test.pypylog new file mode 100644 index 00000000..f85030cb --- /dev/null +++ b/tests/examplefiles/test.pypylog @@ -0,0 +1,1839 @@ +[5ed621f277b8] {jit-backend-counts +[5ed621f309bc] jit-backend-counts} +[5ed622c957b0] {jit-log-opt-loop +# Loop 0 : loop with 145 ops +[p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, f11, p12, p13, p14, p15, i16, f17, i18, i19, i20, i21, i22, i23, i24, i25, i26, f27, i28, f29, f30] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 0) +i32 = int_gt(i18, 0) +guard_true(i32, descr=<Guard3>) [p1, p0, p5, p2, p3, p4, p6, p7, p8, p9, p10, p12, p13, p14, p15, i16, f17, f11] +i33 = int_add(i19, i20) +i35 = int_sub(i18, 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #128 STORE_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #131 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #134 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #137 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #140 BINARY_MULTIPLY', 0) +setfield_gc(p5, i33, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_current 8>) +setfield_gc(p5, i35, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_remaining 16>) +i36 = int_mul_ovf(i21, i22) +guard_no_overflow(, descr=<Guard4>) [p1, p0, p12, p15, i36, p2, p3, p4, p5, p14, p6, p7, p8, p9, p10, p13, i19, None, f17, f11] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #141 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #144 BINARY_ADD', 0) +i38 = int_add_ovf(i36, i19) +guard_no_overflow(, descr=<Guard5>) [p1, p0, i38, p2, p3, p4, p5, p14, p6, p7, p8, p9, p10, p12, p13, p15, i36, i19, None, f17, f11] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #145 BINARY_SUBSCR', 0) +i40 = int_lt(i38, 0) +guard_false(i40, descr=<Guard6>) [p1, p0, p14, i38, i23, p2, p3, p4, p5, p6, p7, p8, p9, p10, p12, p13, p15, None, i19, None, f17, f11] +i41 = int_lt(i38, i23) +guard_true(i41, descr=<Guard7>) [p1, p0, p14, i38, p2, p3, p4, p5, p6, p7, p8, p9, p10, p12, p13, p15, None, i19, None, f17, f11] +f42 = getarrayitem_raw(i24, i38, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #146 STORE_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #149 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #152 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #155 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #158 BINARY_SUBTRACT', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #159 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #162 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #163 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #166 BINARY_ADD', 0) +i43 = int_add_ovf(i25, i19) +guard_no_overflow(, descr=<Guard8>) [p1, p0, i43, p2, p3, p4, p5, p14, p6, p7, p8, p9, p10, p12, p13, p15, f42, i25, None, i19, None, None, f11] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #167 BINARY_SUBSCR', 0) +i45 = int_lt(i43, 0) +guard_false(i45, descr=<Guard9>) [p1, p0, p14, i43, i23, p2, p3, p4, p5, p6, p7, p8, p9, p10, p12, p13, p15, f42, None, None, i19, None, None, f11] +i46 = int_lt(i43, i23) +guard_true(i46, descr=<Guard10>) [p1, p0, p14, i43, p2, p3, p4, p5, p6, p7, p8, p9, p10, p12, p13, p15, f42, None, None, i19, None, None, f11] +f47 = getarrayitem_raw(i24, i43, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #168 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #171 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #174 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #177 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #178 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #181 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #182 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #185 BINARY_ADD', 0) +i48 = int_add_ovf(i26, i19) +guard_no_overflow(, descr=<Guard11>) [p1, p0, i48, p2, p3, p4, p5, p14, p6, p7, p8, p9, p10, p12, p13, p15, i26, f47, f42, None, None, i19, None, None, f11] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #186 BINARY_SUBSCR', 0) +i50 = int_lt(i48, 0) +guard_false(i50, descr=<Guard12>) [p1, p0, p14, i48, i23, p2, p3, p4, p5, p6, p7, p8, p9, p10, p12, p13, p15, None, f47, f42, None, None, i19, None, None, f11] +i51 = int_lt(i48, i23) +guard_true(i51, descr=<Guard13>) [p1, p0, p14, i48, p2, p3, p4, p5, p6, p7, p8, p9, p10, p12, p13, p15, None, f47, f42, None, None, i19, None, None, f11] +f52 = getarrayitem_raw(i24, i48, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #187 BINARY_ADD', 0) +f53 = float_add(f47, f52) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #188 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #191 BINARY_MULTIPLY', 0) +f54 = float_mul(f53, f27) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #192 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #195 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #198 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #201 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #202 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #205 BINARY_ADD', 0) +i55 = int_add_ovf(i28, i19) +guard_no_overflow(, descr=<Guard14>) [p1, p0, i55, p2, p3, p4, p5, p14, p6, p7, p8, p9, p10, p12, p13, p15, f54, i28, None, None, f42, None, None, i19, None, None, f11] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #206 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #209 BINARY_SUBTRACT', 0) +i57 = int_sub_ovf(i55, 1) +guard_no_overflow(, descr=<Guard15>) [p1, p0, i57, p2, p3, p4, p5, p14, p6, p7, p8, p9, p10, p12, p13, p15, i55, f54, None, None, None, f42, None, None, i19, None, None, f11] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #210 BINARY_SUBSCR', 0) +i59 = int_lt(i57, 0) +guard_false(i59, descr=<Guard16>) [p1, p0, p14, i57, i23, p2, p3, p4, p5, p6, p7, p8, p9, p10, p12, p13, p15, None, f54, None, None, None, f42, None, None, i19, None, None, f11] +i60 = int_lt(i57, i23) +guard_true(i60, descr=<Guard17>) [p1, p0, p14, i57, p2, p3, p4, p5, p6, p7, p8, p9, p10, p12, p13, p15, None, f54, None, None, None, f42, None, None, i19, None, None, f11] +f61 = getarrayitem_raw(i24, i57, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #211 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #214 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #217 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #220 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #221 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #224 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #225 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #228 BINARY_ADD', 0) +i63 = int_add_ovf(i55, 1) +guard_no_overflow(, descr=<Guard18>) [p1, p0, i63, p2, p3, p4, p5, p14, p6, p7, p8, p9, p10, p12, p13, p15, f61, i55, f54, None, None, None, f42, None, None, i19, None, None, f11] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #229 BINARY_SUBSCR', 0) +i64 = int_lt(i63, i23) +guard_true(i64, descr=<Guard19>) [p1, p0, p14, i63, p2, p3, p4, p5, p6, p7, p8, p9, p10, p12, p13, p15, f61, None, f54, None, None, None, f42, None, None, i19, None, None, f11] +f65 = getarrayitem_raw(i24, i63, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #230 BINARY_ADD', 0) +f66 = float_add(f61, f65) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #231 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #234 BINARY_MULTIPLY', 0) +f67 = float_mul(f66, f29) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #235 BINARY_ADD', 0) +f68 = float_add(f54, f67) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #236 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #239 BINARY_MULTIPLY', 0) +f69 = float_mul(f68, f30) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #240 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #243 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #246 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #249 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #250 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #253 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #254 STORE_SUBSCR', 0) +i70 = int_lt(i55, i23) +guard_true(i70, descr=<Guard20>) [p1, p0, p14, i55, p2, p3, p4, p5, p6, p7, p8, p9, p10, p12, p13, p15, f69, None, None, None, None, None, None, f42, None, None, i19, None, None, f11] +setarrayitem_raw(i24, i55, f69, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #255 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #258 LOAD_GLOBAL', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #261 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #264 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #267 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #270 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #271 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #274 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #275 BINARY_SUBSCR', 0) +f71 = getarrayitem_raw(i24, i55, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #276 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #279 BINARY_SUBTRACT', 0) +f72 = float_sub(f71, f42) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #280 CALL_FUNCTION', 0) +i73 = force_token() +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #0 LOAD_FAST', 1) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #3 LOAD_FAST', 1) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #6 BINARY_MULTIPLY', 1) +f74 = float_mul(f72, f72) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #7 RETURN_VALUE', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #283 INPLACE_ADD', 0) +f75 = float_add(f11, f74) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #284 STORE_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #287 JUMP_ABSOLUTE', 0) +i77 = getfield_raw(38968960, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i79 = int_sub(i77, 26) +setfield_raw(38968960, i79, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i81 = int_lt(i79, 0) +guard_false(i81, descr=<Guard21>) [p1, p0, p2, p3, p4, p5, p6, p7, p8, p9, p10, p12, p13, p14, p15, f75, None, None, None, None, None, None, None, f42, None, None, i19, None, None, None] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 0) +jump(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, f75, p12, p13, p14, p15, i19, f42, i35, i33, i20, i21, i22, i23, i24, i25, i26, f27, i36, f29, f30, descr=<Loop0>) +[5ed622d5187e] jit-log-opt-loop} +[5ed622e116d0] {jit-log-opt-loop +# Loop 1 : entry bridge with 188 ops +[p0, p1, p2, p3, i4, p5, i6, i7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 0) +guard_value(i4, 2, descr=<Guard22>) [i4, p1, p0, p2, p3, p5, i6, i7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26] +guard_class(p9, 19861240, descr=<Guard23>) [p1, p0, p9, p2, p3, p5, i6, p8, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26] +i29 = getfield_gc(p9, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_remaining 16>) +i31 = int_gt(i29, 0) +guard_true(i31, descr=<Guard24>) [p1, p0, p9, p2, p3, p5, i6, p8, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26] +i32 = getfield_gc(p9, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_current 8>) +i33 = getfield_gc(p9, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_step 24>) +i34 = int_add(i32, i33) +i36 = int_sub(i29, 1) +setfield_gc(p9, i34, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_current 8>) +setfield_gc(p9, i36, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_remaining 16>) +guard_value(i6, 0, descr=<Guard25>) [i6, p1, p0, p2, p3, p5, p8, p9, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24, p25, p26, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #128 STORE_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #131 LOAD_FAST', 0) +guard_nonnull_class(p23, 19886912, descr=<Guard26>) [p1, p0, p23, p2, p3, p5, p8, p9, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p24, p26, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #134 LOAD_FAST', 0) +guard_nonnull_class(p24, ConstClass(W_IntObject), descr=<Guard27>) [p1, p0, p24, p2, p3, p5, p8, p9, p23, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p26, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #137 LOAD_FAST', 0) +guard_nonnull_class(p21, ConstClass(W_IntObject), descr=<Guard28>) [p1, p0, p21, p2, p3, p5, p8, p9, p23, p24, p12, p13, p14, p15, p16, p17, p18, p19, p20, p22, p26, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #140 BINARY_MULTIPLY', 0) +i41 = getfield_gc_pure(p24, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i42 = getfield_gc_pure(p21, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i43 = int_mul_ovf(i41, i42) +guard_no_overflow(, descr=<Guard29>) [p1, p0, p21, p24, i43, p2, p3, p5, p8, p9, p23, p13, p14, p15, p16, p17, p18, p19, p20, p22, p26, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #141 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #144 BINARY_ADD', 0) +i44 = int_add_ovf(i43, i32) +guard_no_overflow(, descr=<Guard30>) [p1, p0, i44, p2, p3, p5, p8, p9, p23, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p24, p26, i43, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #145 BINARY_SUBSCR', 0) +i45 = getfield_gc(p23, descr=<SignedFieldDescr pypy.module.array.interp_array.W_ArrayTyped.inst_len 32>) +i47 = int_lt(i44, 0) +guard_false(i47, descr=<Guard31>) [p1, p0, p23, i44, i45, p2, p3, p5, p8, p9, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p24, p26, None, i32] +i49 = int_lt(i44, i45) +guard_true(i49, descr=<Guard32>) [p1, p0, p23, i44, p2, p3, p5, p8, p9, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p24, p26, None, i32] +i50 = getfield_gc(p23, descr=<NonGcPtrFieldDescr pypy.module.array.interp_array.W_ArrayTyped.inst_buffer 24>) +f51 = getarrayitem_raw(i50, i44, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #146 STORE_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #149 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #152 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #155 LOAD_CONST', 0) +guard_value(p2, ConstPtr(ptr52), descr=<Guard33>) [p1, p0, p2, p3, p5, p8, p9, p23, p24, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, f51, None, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #158 BINARY_SUBTRACT', 0) +i54 = int_sub_ovf(i41, 1) +guard_no_overflow(, descr=<Guard34>) [p1, p0, p24, i54, p3, p5, p8, p9, p23, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, f51, None, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #159 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #162 BINARY_MULTIPLY', 0) +i55 = int_mul_ovf(i54, i42) +guard_no_overflow(, descr=<Guard35>) [p1, p0, p21, i55, p3, p5, p8, p9, p23, p13, p14, p15, p16, p17, p18, p19, p20, p22, p24, i54, f51, None, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #163 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #166 BINARY_ADD', 0) +i56 = int_add_ovf(i55, i32) +guard_no_overflow(, descr=<Guard36>) [p1, p0, i56, p3, p5, p8, p9, p23, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p24, i55, None, f51, None, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #167 BINARY_SUBSCR', 0) +i58 = int_lt(i56, 0) +guard_false(i58, descr=<Guard37>) [p1, p0, p23, i56, i45, p3, p5, p8, p9, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p24, None, None, f51, None, i32] +i59 = int_lt(i56, i45) +guard_true(i59, descr=<Guard38>) [p1, p0, p23, i56, p3, p5, p8, p9, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p24, None, None, f51, None, i32] +f60 = getarrayitem_raw(i50, i56, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #168 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #171 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #174 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #177 BINARY_ADD', 0) +i62 = int_add_ovf(i41, 1) +guard_no_overflow(, descr=<Guard39>) [p1, p0, p24, i62, p3, p5, p8, p9, p23, p14, p15, p16, p17, p18, p19, p20, p21, p22, f60, None, None, f51, None, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #178 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #181 BINARY_MULTIPLY', 0) +i63 = int_mul_ovf(i62, i42) +guard_no_overflow(, descr=<Guard40>) [p1, p0, p21, i63, p3, p5, p8, p9, p23, p14, p15, p16, p17, p18, p19, p20, p22, p24, i62, f60, None, None, f51, None, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #182 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #185 BINARY_ADD', 0) +i64 = int_add_ovf(i63, i32) +guard_no_overflow(, descr=<Guard41>) [p1, p0, i64, p3, p5, p8, p9, p23, p14, p15, p16, p17, p18, p19, p20, p21, p22, p24, i63, None, f60, None, None, f51, None, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #186 BINARY_SUBSCR', 0) +i66 = int_lt(i64, 0) +guard_false(i66, descr=<Guard42>) [p1, p0, p23, i64, i45, p3, p5, p8, p9, p14, p15, p16, p17, p18, p19, p20, p21, p22, p24, None, None, f60, None, None, f51, None, i32] +i67 = int_lt(i64, i45) +guard_true(i67, descr=<Guard43>) [p1, p0, p23, i64, p3, p5, p8, p9, p14, p15, p16, p17, p18, p19, p20, p21, p22, p24, None, None, f60, None, None, f51, None, i32] +f68 = getarrayitem_raw(i50, i64, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #187 BINARY_ADD', 0) +f69 = float_add(f60, f68) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #188 LOAD_FAST', 0) +guard_nonnull_class(p18, 19800744, descr=<Guard44>) [p1, p0, p18, p3, p5, p8, p9, p14, p15, p16, p17, p19, p20, p21, p22, p23, p24, f69, None, None, None, None, None, f51, None, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #191 BINARY_MULTIPLY', 0) +f71 = getfield_gc_pure(p18, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f72 = float_mul(f69, f71) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #192 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #195 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #198 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #201 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #202 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #205 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #206 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #209 BINARY_SUBTRACT', 0) +i74 = int_sub(i44, 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #210 BINARY_SUBSCR', 0) +i76 = int_lt(i74, 0) +guard_false(i76, descr=<Guard45>) [p1, p0, p23, i74, i45, p3, p5, p8, p9, p14, p15, p16, p17, p18, p19, p20, p21, p22, p24, f72, None, None, None, None, None, None, f51, None, i32] +i77 = int_lt(i74, i45) +guard_true(i77, descr=<Guard46>) [p1, p0, p23, i74, p3, p5, p8, p9, p14, p15, p16, p17, p18, p19, p20, p21, p22, p24, f72, None, None, None, None, None, None, f51, None, i32] +f78 = getarrayitem_raw(i50, i74, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #211 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #214 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #217 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #220 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #221 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #224 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #225 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #228 BINARY_ADD', 0) +i80 = int_add(i44, 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #229 BINARY_SUBSCR', 0) +i81 = int_lt(i80, i45) +guard_true(i81, descr=<Guard47>) [p1, p0, p23, i80, p3, p5, p8, p9, p15, p16, p17, p18, p19, p20, p21, p22, p24, f78, f72, None, None, None, None, None, None, f51, None, i32] +f82 = getarrayitem_raw(i50, i80, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #230 BINARY_ADD', 0) +f83 = float_add(f78, f82) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #231 LOAD_FAST', 0) +guard_nonnull_class(p17, 19800744, descr=<Guard48>) [p1, p0, p17, p3, p5, p8, p9, p15, p16, p18, p19, p20, p21, p22, p23, p24, f83, None, f72, None, None, None, None, None, None, f51, None, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #234 BINARY_MULTIPLY', 0) +f85 = getfield_gc_pure(p17, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f86 = float_mul(f83, f85) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #235 BINARY_ADD', 0) +f87 = float_add(f72, f86) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #236 LOAD_FAST', 0) +guard_nonnull_class(p19, 19800744, descr=<Guard49>) [p1, p0, p19, p3, p5, p8, p9, p15, p16, p17, p18, p20, p21, p22, p23, p24, f87, None, None, None, None, None, None, None, None, None, f51, None, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #239 BINARY_MULTIPLY', 0) +f89 = getfield_gc_pure(p19, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f90 = float_mul(f87, f89) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #240 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #243 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #246 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #249 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #250 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #253 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #254 STORE_SUBSCR', 0) +setarrayitem_raw(i50, i44, f90, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #255 LOAD_FAST', 0) +guard_nonnull_class(p20, 19800744, descr=<Guard50>) [p1, p0, p20, p3, p5, p8, p9, p15, p16, p17, p18, p19, p21, p22, p23, p24, None, None, None, None, None, None, None, None, None, None, f51, None, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #258 LOAD_GLOBAL', 0) +p92 = getfield_gc(p0, descr=<GcPtrFieldDescr pypy.interpreter.eval.Frame.inst_w_globals 8>) +guard_value(p92, ConstPtr(ptr93), descr=<Guard51>) [p1, p0, p92, p3, p5, p8, p9, p20, p15, p16, p17, p18, p19, p21, p22, p23, p24, None, None, None, None, None, None, None, None, None, None, f51, None, i32] +p94 = getfield_gc(p92, descr=<GcPtrFieldDescr pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_r_dict_content 8>) +guard_isnull(p94, descr=<Guard52>) [p1, p0, p94, p92, p3, p5, p8, p9, p20, p15, p16, p17, p18, p19, p21, p22, p23, p24, None, None, None, None, None, None, None, None, None, None, f51, None, i32] +p96 = getfield_gc(ConstPtr(ptr95), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_nonnull_class(p96, ConstClass(Function), descr=<Guard53>) [p1, p0, p96, p3, p5, p8, p9, p20, p15, p16, p17, p18, p19, p21, p22, p23, p24, None, None, None, None, None, None, None, None, None, None, f51, None, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #261 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #264 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #267 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #270 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #271 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #274 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #275 BINARY_SUBSCR', 0) +f98 = getarrayitem_raw(i50, i44, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #276 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #279 BINARY_SUBTRACT', 0) +f99 = float_sub(f98, f51) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #280 CALL_FUNCTION', 0) +p100 = getfield_gc(p96, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_code 24>) +guard_value(p100, ConstPtr(ptr101), descr=<Guard54>) [p1, p0, p100, p96, p3, p5, p8, p9, p20, p15, p16, p17, p18, p19, p21, p22, p23, p24, f99, None, None, None, None, None, None, None, None, None, None, f51, None, i32] +p102 = getfield_gc(p96, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_w_func_globals 64>) +p103 = getfield_gc(p96, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_closure 16>) +p105 = call(ConstClass(getexecutioncontext), descr=<GcPtrCallDescr>) +p106 = getfield_gc(p105, descr=<GcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 56>) +i107 = force_token() +p108 = getfield_gc(p105, descr=<GcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_w_tracefunc 72>) +guard_isnull(p108, descr=<Guard55>) [p1, p0, p105, p108, p3, p5, p8, p9, p20, p96, p15, p16, p17, p18, p19, p21, p22, p23, p24, p106, p102, i107, f99, None, None, None, None, None, None, None, None, None, None, f51, None, i32] +i109 = getfield_gc(p105, descr=<NonGcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_profilefunc 40>) +i110 = int_is_zero(i109) +guard_true(i110, descr=<Guard56>) [p1, p0, p105, p3, p5, p8, p9, p20, p96, p15, p16, p17, p18, p19, p21, p22, p23, p24, p106, p102, i107, f99, None, None, None, None, None, None, None, None, None, None, f51, None, i32] +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #0 LOAD_FAST', 1) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #3 LOAD_FAST', 1) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #6 BINARY_MULTIPLY', 1) +f111 = float_mul(f99, f99) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #7 RETURN_VALUE', 1) +i112 = int_is_true(i109) +guard_false(i112, descr=<Guard57>) [p1, p0, p105, p3, p5, p8, p9, p20, p96, p15, p16, p17, p18, p19, p21, p22, p23, p24, f111, p106, p102, i107, f99, None, None, None, None, None, None, None, None, None, None, f51, None, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #283 INPLACE_ADD', 0) +f113 = getfield_gc_pure(p20, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f114 = float_add(f113, f111) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #284 STORE_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #287 JUMP_ABSOLUTE', 0) +i116 = getfield_raw(38968960, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i118 = int_sub(i116, 26) +setfield_raw(38968960, i118, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i120 = int_lt(i118, 0) +guard_false(i120, descr=<Guard58>) [p1, p0, p3, p5, p8, p9, p15, p16, p17, p18, p19, p21, p22, p23, p24, f114, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, f51, None, i32] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 0) +jump(p0, p1, p3, p5, p8, p9, p15, p16, p17, p18, p19, f114, p21, p22, p23, p24, i32, f51, i36, i34, i33, i41, i42, i45, i50, i55, i63, f71, i43, f85, f89, descr=<Loop0>) +[5ed622ea316e] jit-log-opt-loop} +[5ed62326a846] {jit-log-opt-bridge +# bridge out of Guard 21 with 13 ops +[p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, f15, f16, i17] +i18 = force_token() +setfield_gc(p1, i18, descr=<SignedFieldDescr pypy.interpreter.pyframe.PyFrame.vable_token 24>) +call_may_force(ConstClass(action_dispatcher), p0, p1, descr=<VoidCallDescr>) +guard_not_forced(, descr=<Guard59>) [p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, i17, f16, f15] +guard_no_exception(, descr=<Guard60>) [p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, i17, f16, f15] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 0) +p21 = new_with_vtable(19800744) +setfield_gc(p21, f15, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +p23 = new_with_vtable(ConstClass(W_IntObject)) +setfield_gc(p23, i17, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +p25 = new_with_vtable(19800744) +setfield_gc(p25, f16, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +jump(p1, p0, ConstPtr(ptr26), p2, 2, p3, 0, 125, p4, p5, ConstPtr(ptr30), ConstPtr(ptr31), ConstPtr(ptr32), ConstPtr(ptr33), ConstPtr(ptr34), p6, p7, p8, p9, p10, p21, p11, p12, p13, p14, p23, p25, descr=<Loop1>) +[5ed62327d096] jit-log-opt-bridge} +[5ed623eb929c] {jit-log-opt-bridge +# bridge out of Guard 3 with 260 ops +[p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, i15, f16, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #290 POP_BLOCK', 0) +p18 = getfield_gc(p3, descr=<GcPtrFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_previous 16>) +guard_class(p3, 19865144, descr=<Guard61>) [p0, p1, p3, p18, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, i15, f16, f17] +i20 = getfield_gc(p3, descr=<SignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_valuestackdepth 24>) +guard_value(i20, 1, descr=<Guard62>) [p0, p1, i20, p18, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, i15, f16, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #291 JUMP_ABSOLUTE', 0) +i23 = getfield_raw(38968960, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i25 = int_sub(i23, 1) +setfield_raw(38968960, i25, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i27 = int_lt(i25, 0) +guard_false(i27, descr=<Guard63>) [p0, p1, p18, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, i15, f16, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #99 FOR_ITER', 0) +guard_class(p5, 19861240, descr=<Guard64>) [p0, p1, p5, p18, p4, p6, p7, p8, p9, p10, p11, p12, p13, p14, i15, f16, f17] +i29 = getfield_gc(p5, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_remaining 16>) +i31 = int_gt(i29, 0) +guard_true(i31, descr=<Guard65>) [p0, p1, p5, p18, p4, p6, p7, p8, p9, p10, p11, p12, p13, p14, i15, f16, f17] +i32 = getfield_gc(p5, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_current 8>) +i33 = getfield_gc(p5, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_step 24>) +i34 = int_add(i32, i33) +i36 = int_sub(i29, 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #102 STORE_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #105 SETUP_LOOP', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #108 LOAD_GLOBAL', 0) +p37 = getfield_gc(p1, descr=<GcPtrFieldDescr pypy.interpreter.eval.Frame.inst_w_globals 8>) +setfield_gc(p5, i34, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_current 8>) +setfield_gc(p5, i36, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_remaining 16>) +guard_value(p37, ConstPtr(ptr38), descr=<Guard66>) [p0, p1, p37, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, i32, p18, i15, f16, f17] +p39 = getfield_gc(p37, descr=<GcPtrFieldDescr pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_r_dict_content 8>) +guard_isnull(p39, descr=<Guard67>) [p0, p1, p39, p37, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, i32, p18, i15, f16, f17] +p41 = getfield_gc(ConstPtr(ptr40), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_isnull(p41, descr=<Guard68>) [p0, p1, p41, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, i32, p18, i15, f16, f17] +p43 = getfield_gc(ConstPtr(ptr42), descr=<GcPtrFieldDescr pypy.interpreter.module.Module.inst_w_dict 8>) +guard_value(p43, ConstPtr(ptr44), descr=<Guard69>) [p0, p1, p43, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, i32, p18, i15, f16, f17] +p45 = getfield_gc(p43, descr=<GcPtrFieldDescr pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_r_dict_content 8>) +guard_isnull(p45, descr=<Guard70>) [p0, p1, p45, p43, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, i32, p18, i15, f16, f17] +p47 = getfield_gc(ConstPtr(ptr46), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_value(p47, ConstPtr(ptr48), descr=<Guard71>) [p0, p1, p47, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, i32, p18, i15, f16, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #111 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #114 LOAD_FAST', 0) +guard_nonnull_class(p12, ConstClass(W_IntObject), descr=<Guard72>) [p0, p1, p12, p4, p5, p47, p6, p7, p8, p9, p10, p11, p13, i32, p18, i15, f16, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #117 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #120 BINARY_SUBTRACT', 0) +i50 = getfield_gc_pure(p12, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i52 = int_sub_ovf(i50, 1) +guard_no_overflow(, descr=<Guard73>) [p0, p1, p12, i52, p4, p5, p47, p6, p7, p8, p9, p10, p11, p13, i32, p18, i15, f16, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #121 CALL_FUNCTION', 0) +p54 = getfield_gc(ConstPtr(ptr53), descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_name 40>) +p55 = getfield_gc(ConstPtr(ptr53), descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_defs 32>) +i56 = getfield_gc_pure(p55, descr=<BoolFieldDescr pypy.interpreter.function.Defaults.inst_promote 16>) +guard_false(i56, descr=<Guard74>) [p0, p1, p54, p55, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, i52, i32, p18, i15, f16, f17] +p57 = getfield_gc_pure(p55, descr=<GcPtrFieldDescr pypy.interpreter.function.Defaults.inst_items 8>) +i58 = arraylen_gc(p57, descr=<GcPtrArrayDescr>) +i60 = int_sub(4, i58) +i62 = int_ge(3, i60) +guard_true(i62, descr=<Guard75>) [p0, p1, p54, i60, p55, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, i52, i32, p18, i15, f16, f17] +i63 = int_sub(3, i60) +i64 = getfield_gc_pure(p55, descr=<BoolFieldDescr pypy.interpreter.function.Defaults.inst_promote 16>) +guard_false(i64, descr=<Guard76>) [p0, p1, p54, i63, i60, p55, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, i52, i32, p18, i15, f16, f17] +p65 = getfield_gc_pure(p55, descr=<GcPtrFieldDescr pypy.interpreter.function.Defaults.inst_items 8>) +p66 = getarrayitem_gc(p65, i63, descr=<GcPtrArrayDescr>) +guard_class(p66, ConstClass(W_IntObject), descr=<Guard77>) [p0, p1, p66, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, i52, i32, p18, i15, f16, f17] +i68 = getfield_gc_pure(p66, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i69 = int_is_zero(i68) +guard_false(i69, descr=<Guard78>) [p0, p1, i68, i52, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p66, None, i32, p18, i15, f16, f17] +i72 = int_lt(i68, 0) +guard_false(i72, descr=<Guard79>) [p0, p1, i68, i52, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p66, None, i32, p18, i15, f16, f17] +i74 = int_lt(1, i52) +guard_true(i74, descr=<Guard80>) [p0, p1, i68, i52, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p66, None, i32, p18, i15, f16, f17] +i75 = int_sub(i52, 1) +i77 = int_sub(i75, 1) +i78 = uint_floordiv(i77, i68) +i80 = int_add(i78, 1) +i82 = int_lt(i80, 0) +guard_false(i82, descr=<Guard81>) [p0, p1, i68, i80, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p66, i52, i32, p18, i15, f16, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #124 GET_ITER', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 0) +i84 = int_gt(i80, 0) +guard_true(i84, descr=<Guard82>) [p0, p1, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, i80, i68, None, None, i32, p18, i15, f16, f17] +i85 = int_add(1, i68) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #128 STORE_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #131 LOAD_FAST', 0) +guard_nonnull_class(p13, 19886912, descr=<Guard83>) [p0, p1, p13, p4, p5, p6, p7, p8, p9, p10, p11, p12, i78, i85, None, i68, None, None, i32, p18, None, f16, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #134 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #137 LOAD_FAST', 0) +guard_nonnull_class(p11, ConstClass(W_IntObject), descr=<Guard84>) [p0, p1, p11, p4, p5, p13, p6, p7, p8, p9, p10, p12, i78, i85, None, i68, None, None, i32, p18, None, f16, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #140 BINARY_MULTIPLY', 0) +i88 = getfield_gc_pure(p11, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i89 = int_mul_ovf(i32, i88) +guard_no_overflow(, descr=<Guard85>) [p0, p1, p11, i89, p4, p5, p13, p6, p7, p8, p9, p10, p12, i78, i85, None, i68, None, None, i32, p18, None, f16, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #141 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #144 BINARY_ADD', 0) +i90 = int_add_ovf(i89, 1) +guard_no_overflow(, descr=<Guard86>) [p0, p1, i90, p4, p5, p13, p6, p7, p8, p9, p10, p11, p12, i89, i78, i85, None, i68, None, None, i32, p18, None, f16, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #145 BINARY_SUBSCR', 0) +i91 = getfield_gc(p13, descr=<SignedFieldDescr pypy.module.array.interp_array.W_ArrayTyped.inst_len 32>) +i93 = int_lt(i90, 0) +guard_false(i93, descr=<Guard87>) [p0, p1, p13, i90, i91, p4, p5, p6, p7, p8, p9, p10, p11, p12, None, i78, i85, None, i68, None, None, i32, p18, None, f16, f17] +i94 = int_lt(i90, i91) +guard_true(i94, descr=<Guard88>) [p0, p1, p13, i90, p4, p5, p6, p7, p8, p9, p10, p11, p12, None, i78, i85, None, i68, None, None, i32, p18, None, f16, f17] +i95 = getfield_gc(p13, descr=<NonGcPtrFieldDescr pypy.module.array.interp_array.W_ArrayTyped.inst_buffer 24>) +f96 = getarrayitem_raw(i95, i90, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #146 STORE_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #149 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #152 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #155 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #158 BINARY_SUBTRACT', 0) +i98 = int_sub_ovf(i32, 1) +guard_no_overflow(, descr=<Guard89>) [p0, p1, i98, p4, p5, p13, p6, p7, p8, p9, p10, p11, p12, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #159 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #162 BINARY_MULTIPLY', 0) +i99 = int_mul_ovf(i98, i88) +guard_no_overflow(, descr=<Guard90>) [p0, p1, p11, i99, p4, p5, p13, p6, p7, p8, p9, p10, p12, i98, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #163 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #166 BINARY_ADD', 0) +i100 = int_add_ovf(i99, 1) +guard_no_overflow(, descr=<Guard91>) [p0, p1, i100, p4, p5, p13, p6, p7, p8, p9, p10, p11, p12, i99, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #167 BINARY_SUBSCR', 0) +i102 = int_lt(i100, 0) +guard_false(i102, descr=<Guard92>) [p0, p1, p13, i100, i91, p4, p5, p6, p7, p8, p9, p10, p11, p12, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +i103 = int_lt(i100, i91) +guard_true(i103, descr=<Guard93>) [p0, p1, p13, i100, p4, p5, p6, p7, p8, p9, p10, p11, p12, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +f104 = getarrayitem_raw(i95, i100, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #168 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #171 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #174 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #177 BINARY_ADD', 0) +i106 = int_add_ovf(i32, 1) +guard_no_overflow(, descr=<Guard94>) [p0, p1, i106, p4, p5, p13, p6, p7, p8, p9, p10, p11, p12, f104, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #178 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #181 BINARY_MULTIPLY', 0) +i107 = int_mul_ovf(i106, i88) +guard_no_overflow(, descr=<Guard95>) [p0, p1, p11, i107, p4, p5, p13, p6, p7, p8, p9, p10, p12, i106, f104, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #182 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #185 BINARY_ADD', 0) +i108 = int_add_ovf(i107, 1) +guard_no_overflow(, descr=<Guard96>) [p0, p1, i108, p4, p5, p13, p6, p7, p8, p9, p10, p11, p12, i107, None, f104, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #186 BINARY_SUBSCR', 0) +i110 = int_lt(i108, 0) +guard_false(i110, descr=<Guard97>) [p0, p1, p13, i108, i91, p4, p5, p6, p7, p8, p9, p10, p11, p12, None, None, f104, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +i111 = int_lt(i108, i91) +guard_true(i111, descr=<Guard98>) [p0, p1, p13, i108, p4, p5, p6, p7, p8, p9, p10, p11, p12, None, None, f104, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +f112 = getarrayitem_raw(i95, i108, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #187 BINARY_ADD', 0) +f113 = float_add(f104, f112) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #188 LOAD_FAST', 0) +guard_nonnull_class(p9, 19800744, descr=<Guard99>) [p0, p1, p9, p4, p5, p6, p7, p8, p10, p11, p12, p13, f113, None, None, None, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #191 BINARY_MULTIPLY', 0) +f115 = getfield_gc_pure(p9, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f116 = float_mul(f113, f115) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #192 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #195 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #198 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #201 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #202 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #205 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #206 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #209 BINARY_SUBTRACT', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #210 BINARY_SUBSCR', 0) +i118 = int_lt(i89, 0) +guard_false(i118, descr=<Guard100>) [p0, p1, p13, i89, i91, p4, p5, p6, p7, p8, p9, p10, p11, p12, f116, None, None, None, None, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +i119 = int_lt(i89, i91) +guard_true(i119, descr=<Guard101>) [p0, p1, p13, i89, p4, p5, p6, p7, p8, p9, p10, p11, p12, f116, None, None, None, None, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +f120 = getarrayitem_raw(i95, i89, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #211 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #214 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #217 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #220 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #221 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #224 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #225 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #228 BINARY_ADD', 0) +i122 = int_add(i90, 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #229 BINARY_SUBSCR', 0) +i123 = int_lt(i122, i91) +guard_true(i123, descr=<Guard102>) [p0, p1, p13, i122, p4, p5, p6, p7, p8, p9, p10, p11, p12, f120, f116, None, None, None, None, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +f124 = getarrayitem_raw(i95, i122, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #230 BINARY_ADD', 0) +f125 = float_add(f120, f124) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #231 LOAD_FAST', 0) +guard_nonnull_class(p8, 19800744, descr=<Guard103>) [p0, p1, p8, p4, p5, p6, p7, p9, p10, p11, p12, p13, f125, None, f116, None, None, None, None, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #234 BINARY_MULTIPLY', 0) +f127 = getfield_gc_pure(p8, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f128 = float_mul(f125, f127) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #235 BINARY_ADD', 0) +f129 = float_add(f116, f128) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #236 LOAD_FAST', 0) +guard_nonnull_class(p10, 19800744, descr=<Guard104>) [p0, p1, p10, p4, p5, p6, p7, p8, p9, p11, p12, p13, f129, None, None, None, None, None, None, None, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #239 BINARY_MULTIPLY', 0) +f131 = getfield_gc_pure(p10, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f132 = float_mul(f129, f131) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #240 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #243 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #246 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #249 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #250 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #253 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #254 STORE_SUBSCR', 0) +setarrayitem_raw(i95, i90, f132, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #255 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #258 LOAD_GLOBAL', 0) +p134 = getfield_gc(ConstPtr(ptr133), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_nonnull_class(p134, ConstClass(Function), descr=<Guard105>) [p0, p1, p134, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, None, None, None, None, None, None, None, None, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #261 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #264 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #267 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #270 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #271 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #274 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #275 BINARY_SUBSCR', 0) +f136 = getarrayitem_raw(i95, i90, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #276 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #279 BINARY_SUBTRACT', 0) +f137 = float_sub(f136, f96) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #280 CALL_FUNCTION', 0) +p138 = getfield_gc(p134, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_code 24>) +guard_value(p138, ConstPtr(ptr139), descr=<Guard106>) [p0, p1, p138, p134, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, f137, None, None, None, None, None, None, None, None, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +p140 = getfield_gc(p134, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_w_func_globals 64>) +p141 = getfield_gc(p134, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_closure 16>) +p143 = call(ConstClass(getexecutioncontext), descr=<GcPtrCallDescr>) +p144 = getfield_gc(p143, descr=<GcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 56>) +i145 = force_token() +p146 = getfield_gc(p143, descr=<GcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_w_tracefunc 72>) +guard_isnull(p146, descr=<Guard107>) [p0, p1, p143, p146, p4, p5, p134, p6, p7, p8, p9, p10, p11, p12, p13, p144, i145, p140, f137, None, None, None, None, None, None, None, None, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +i147 = getfield_gc(p143, descr=<NonGcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_profilefunc 40>) +i148 = int_is_zero(i147) +guard_true(i148, descr=<Guard108>) [p0, p1, p143, p4, p5, p134, p6, p7, p8, p9, p10, p11, p12, p13, p144, i145, p140, f137, None, None, None, None, None, None, None, None, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #0 LOAD_FAST', 1) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #3 LOAD_FAST', 1) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #6 BINARY_MULTIPLY', 1) +f149 = float_mul(f137, f137) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #7 RETURN_VALUE', 1) +i150 = int_is_true(i147) +guard_false(i150, descr=<Guard109>) [p0, p1, p143, p4, p5, p134, p6, p7, p8, p9, p10, p11, p12, p13, f149, p144, i145, p140, f137, None, None, None, None, None, None, None, None, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, f17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #283 INPLACE_ADD', 0) +f151 = float_add(f17, f149) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #284 STORE_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #287 JUMP_ABSOLUTE', 0) +i153 = getfield_raw(38968960, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i155 = int_sub(i153, 35) +setfield_raw(38968960, i155, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i157 = int_lt(i155, 0) +guard_false(i157, descr=<Guard110>) [p0, p1, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, f151, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, f96, None, i78, i85, None, i68, None, None, i32, p18, None, None, None] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 0) +p159 = new_with_vtable(19865144) +setfield_gc(p159, 291, descr=<UnsignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_handlerposition 8>) +setfield_gc(p159, 1, descr=<SignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_valuestackdepth 24>) +setfield_gc(p159, p18, descr=<GcPtrFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_previous 16>) +p163 = new_with_vtable(19861240) +setfield_gc(p163, i85, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_current 8>) +setfield_gc(p163, i78, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_remaining 16>) +setfield_gc(p163, i68, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_step 24>) +p165 = new_with_vtable(19800744) +setfield_gc(p165, f151, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +p167 = new_with_vtable(ConstClass(W_IntObject)) +setfield_gc(p167, i32, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +p169 = new_with_vtable(ConstClass(W_IntObject)) +setfield_gc(p169, 1, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +p171 = new_with_vtable(19800744) +setfield_gc(p171, f96, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +jump(p1, p0, ConstPtr(ptr172), p159, 2, p4, 0, 125, p5, p163, ConstPtr(ptr176), ConstPtr(ptr177), ConstPtr(ptr178), ConstPtr(ptr179), ConstPtr(ptr180), p6, p7, p8, p9, p10, p165, p11, p12, p13, p167, p169, p171, descr=<Loop1>) +[5ed623fc609b] jit-log-opt-bridge} +[5ed63ea5fa94] {jit-log-opt-bridge +# bridge out of Guard 110 with 23 ops +[p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, f12, f13, i14, i15, i16, i17, p18] +i19 = force_token() +setfield_gc(p1, i19, descr=<SignedFieldDescr pypy.interpreter.pyframe.PyFrame.vable_token 24>) +call_may_force(ConstClass(action_dispatcher), p0, p1, descr=<VoidCallDescr>) +guard_not_forced(, descr=<Guard111>) [p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, i14, i17, i16, i15, f12, f13, p18] +guard_no_exception(, descr=<Guard112>) [p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, i14, i17, i16, i15, f12, f13, p18] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 0) +p22 = new_with_vtable(19865144) +setfield_gc(p22, 291, descr=<UnsignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_handlerposition 8>) +setfield_gc(p22, p18, descr=<GcPtrFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_previous 16>) +setfield_gc(p22, 1, descr=<SignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_valuestackdepth 24>) +p26 = new_with_vtable(19861240) +setfield_gc(p26, i15, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_current 8>) +setfield_gc(p26, i14, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_remaining 16>) +setfield_gc(p26, i16, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_step 24>) +p28 = new_with_vtable(19800744) +setfield_gc(p28, f12, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +p30 = new_with_vtable(ConstClass(W_IntObject)) +setfield_gc(p30, i17, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +p32 = new_with_vtable(ConstClass(W_IntObject)) +setfield_gc(p32, 1, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +p35 = new_with_vtable(19800744) +setfield_gc(p35, f13, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +jump(p1, p0, ConstPtr(ptr36), p22, 2, p2, 0, 125, p3, p26, ConstPtr(ptr40), ConstPtr(ptr41), ConstPtr(ptr42), ConstPtr(ptr43), ConstPtr(ptr44), p4, p5, p6, p7, p8, p28, p9, p10, p11, p30, p32, p35, descr=<Loop1>) +[5ed63ea8ea04] jit-log-opt-bridge} +[5ed640a0a34c] {jit-log-opt-bridge +# bridge out of Guard 58 with 13 ops +[p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, f15, f16, i17] +i18 = force_token() +setfield_gc(p1, i18, descr=<SignedFieldDescr pypy.interpreter.pyframe.PyFrame.vable_token 24>) +call_may_force(ConstClass(action_dispatcher), p0, p1, descr=<VoidCallDescr>) +guard_not_forced(, descr=<Guard113>) [p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, f15, f16, i17] +guard_no_exception(, descr=<Guard114>) [p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, f15, f16, i17] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 0) +p21 = new_with_vtable(19800744) +setfield_gc(p21, f15, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +p23 = new_with_vtable(ConstClass(W_IntObject)) +setfield_gc(p23, i17, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +p25 = new_with_vtable(19800744) +setfield_gc(p25, f16, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +jump(p1, p0, ConstPtr(ptr26), p2, 2, p3, 0, 125, p4, p5, ConstPtr(ptr30), ConstPtr(ptr31), ConstPtr(ptr32), ConstPtr(ptr33), ConstPtr(ptr34), p6, p7, p8, p9, p10, p21, p11, p12, p13, p14, p23, p25, descr=<Loop1>) +[5ed640a1e8c2] jit-log-opt-bridge} +[5ed6431fc824] {jit-log-opt-bridge +# bridge out of Guard 24 with 264 ops +[p0, p1, p2, p3, p4, p5, i6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24] +guard_value(i6, 0, descr=<Guard115>) [i6, p0, p1, p3, p4, p5, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #290 POP_BLOCK', 0) +p26 = getfield_gc(p4, descr=<GcPtrFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_previous 16>) +guard_class(p4, 19865144, descr=<Guard116>) [p0, p1, p4, p3, p26, p5, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24] +i28 = getfield_gc(p4, descr=<SignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_valuestackdepth 24>) +guard_value(i28, 1, descr=<Guard117>) [p0, p1, i28, p3, p26, p5, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #291 JUMP_ABSOLUTE', 0) +i31 = getfield_raw(38968960, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i33 = int_sub(i31, 1) +setfield_raw(38968960, i33, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i35 = int_lt(i33, 0) +guard_false(i35, descr=<Guard118>) [p0, p1, p3, p26, p5, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24] +guard_value(p3, ConstPtr(ptr36), descr=<Guard119>) [p0, p1, p3, p26, p5, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #99 FOR_ITER', 0) +guard_class(p7, 19861240, descr=<Guard120>) [p0, p1, p7, p26, p5, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24] +i38 = getfield_gc(p7, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_remaining 16>) +i40 = int_gt(i38, 0) +guard_true(i40, descr=<Guard121>) [p0, p1, p7, p26, p5, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22, p23, p24] +i41 = getfield_gc(p7, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_current 8>) +i42 = getfield_gc(p7, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_step 24>) +i43 = int_add(i41, i42) +i45 = int_sub(i38, 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #102 STORE_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #105 SETUP_LOOP', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #108 LOAD_GLOBAL', 0) +p46 = getfield_gc(p1, descr=<GcPtrFieldDescr pypy.interpreter.eval.Frame.inst_w_globals 8>) +setfield_gc(p7, i43, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_current 8>) +setfield_gc(p7, i45, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_remaining 16>) +guard_value(p46, ConstPtr(ptr47), descr=<Guard122>) [p0, p1, p46, p5, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, p26, i41] +p48 = getfield_gc(p46, descr=<GcPtrFieldDescr pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_r_dict_content 8>) +guard_isnull(p48, descr=<Guard123>) [p0, p1, p48, p46, p5, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, p26, i41] +p50 = getfield_gc(ConstPtr(ptr49), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_isnull(p50, descr=<Guard124>) [p0, p1, p50, p5, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, p26, i41] +p52 = getfield_gc(ConstPtr(ptr51), descr=<GcPtrFieldDescr pypy.interpreter.module.Module.inst_w_dict 8>) +guard_value(p52, ConstPtr(ptr53), descr=<Guard125>) [p0, p1, p52, p5, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, p26, i41] +p54 = getfield_gc(p52, descr=<GcPtrFieldDescr pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_r_dict_content 8>) +guard_isnull(p54, descr=<Guard126>) [p0, p1, p54, p52, p5, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, p26, i41] +p56 = getfield_gc(ConstPtr(ptr55), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_value(p56, ConstPtr(ptr57), descr=<Guard127>) [p0, p1, p56, p5, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #111 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #114 LOAD_FAST', 0) +guard_nonnull_class(p20, ConstClass(W_IntObject), descr=<Guard128>) [p0, p1, p20, p5, p7, p56, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p21, p23, p24, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #117 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #120 BINARY_SUBTRACT', 0) +i59 = getfield_gc_pure(p20, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i61 = int_sub_ovf(i59, 1) +guard_no_overflow(, descr=<Guard129>) [p0, p1, p20, i61, p5, p7, p56, p11, p12, p13, p14, p15, p16, p17, p18, p19, p21, p23, p24, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #121 CALL_FUNCTION', 0) +p63 = getfield_gc(ConstPtr(ptr62), descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_name 40>) +p64 = getfield_gc(ConstPtr(ptr62), descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_defs 32>) +i65 = getfield_gc_pure(p64, descr=<BoolFieldDescr pypy.interpreter.function.Defaults.inst_promote 16>) +guard_false(i65, descr=<Guard130>) [p0, p1, p63, p64, p5, p7, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, i61, p26, i41] +p66 = getfield_gc_pure(p64, descr=<GcPtrFieldDescr pypy.interpreter.function.Defaults.inst_items 8>) +i67 = arraylen_gc(p66, descr=<GcPtrArrayDescr>) +i69 = int_sub(4, i67) +i71 = int_ge(3, i69) +guard_true(i71, descr=<Guard131>) [p0, p1, p63, i69, p64, p5, p7, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, i61, p26, i41] +i72 = int_sub(3, i69) +i73 = getfield_gc_pure(p64, descr=<BoolFieldDescr pypy.interpreter.function.Defaults.inst_promote 16>) +guard_false(i73, descr=<Guard132>) [p0, p1, p63, i72, i69, p64, p5, p7, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, i61, p26, i41] +p74 = getfield_gc_pure(p64, descr=<GcPtrFieldDescr pypy.interpreter.function.Defaults.inst_items 8>) +p75 = getarrayitem_gc(p74, i72, descr=<GcPtrArrayDescr>) +guard_class(p75, ConstClass(W_IntObject), descr=<Guard133>) [p0, p1, p75, p5, p7, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, i61, p26, i41] +i77 = getfield_gc_pure(p75, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i78 = int_is_zero(i77) +guard_false(i78, descr=<Guard134>) [p0, p1, i77, i61, p5, p7, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, p75, None, p26, i41] +i81 = int_lt(i77, 0) +guard_false(i81, descr=<Guard135>) [p0, p1, i77, i61, p5, p7, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, p75, None, p26, i41] +i83 = int_lt(1, i61) +guard_true(i83, descr=<Guard136>) [p0, p1, i77, i61, p5, p7, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, p75, None, p26, i41] +i84 = int_sub(i61, 1) +i86 = int_sub(i84, 1) +i87 = uint_floordiv(i86, i77) +i89 = int_add(i87, 1) +i91 = int_lt(i89, 0) +guard_false(i91, descr=<Guard137>) [p0, p1, i77, i89, p5, p7, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, p75, i61, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #124 GET_ITER', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 0) +i93 = int_gt(i89, 0) +guard_true(i93, descr=<Guard138>) [p0, p1, p5, p7, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p23, p24, i89, i77, None, None, p26, i41] +i94 = int_add(1, i77) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #128 STORE_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #131 LOAD_FAST', 0) +guard_nonnull_class(p21, 19886912, descr=<Guard139>) [p0, p1, p21, p5, p7, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p24, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #134 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #137 LOAD_FAST', 0) +guard_nonnull_class(p19, ConstClass(W_IntObject), descr=<Guard140>) [p0, p1, p19, p5, p7, p21, p11, p12, p13, p14, p15, p16, p17, p18, p20, p24, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #140 BINARY_MULTIPLY', 0) +i97 = getfield_gc_pure(p19, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i98 = int_mul_ovf(i41, i97) +guard_no_overflow(, descr=<Guard141>) [p0, p1, p19, i98, p5, p7, p21, p11, p12, p13, p14, p15, p16, p17, p18, p20, p24, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #141 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #144 BINARY_ADD', 0) +i99 = int_add_ovf(i98, 1) +guard_no_overflow(, descr=<Guard142>) [p0, p1, i99, p5, p7, p21, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p24, i98, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #145 BINARY_SUBSCR', 0) +i100 = getfield_gc(p21, descr=<SignedFieldDescr pypy.module.array.interp_array.W_ArrayTyped.inst_len 32>) +i102 = int_lt(i99, 0) +guard_false(i102, descr=<Guard143>) [p0, p1, p21, i99, i100, p5, p7, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p24, None, i87, i94, None, i77, None, None, p26, i41] +i103 = int_lt(i99, i100) +guard_true(i103, descr=<Guard144>) [p0, p1, p21, i99, p5, p7, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p24, None, i87, i94, None, i77, None, None, p26, i41] +i104 = getfield_gc(p21, descr=<NonGcPtrFieldDescr pypy.module.array.interp_array.W_ArrayTyped.inst_buffer 24>) +f105 = getarrayitem_raw(i104, i99, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #146 STORE_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #149 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #152 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #155 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #158 BINARY_SUBTRACT', 0) +i107 = int_sub_ovf(i41, 1) +guard_no_overflow(, descr=<Guard145>) [p0, p1, i107, p5, p7, p21, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, f105, None, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #159 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #162 BINARY_MULTIPLY', 0) +i108 = int_mul_ovf(i107, i97) +guard_no_overflow(, descr=<Guard146>) [p0, p1, p19, i108, p5, p7, p21, p11, p12, p13, p14, p15, p16, p17, p18, p20, i107, f105, None, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #163 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #166 BINARY_ADD', 0) +i109 = int_add_ovf(i108, 1) +guard_no_overflow(, descr=<Guard147>) [p0, p1, i109, p5, p7, p21, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, i108, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #167 BINARY_SUBSCR', 0) +i111 = int_lt(i109, 0) +guard_false(i111, descr=<Guard148>) [p0, p1, p21, i109, i100, p5, p7, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +i112 = int_lt(i109, i100) +guard_true(i112, descr=<Guard149>) [p0, p1, p21, i109, p5, p7, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +f113 = getarrayitem_raw(i104, i109, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #168 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #171 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #174 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #177 BINARY_ADD', 0) +i115 = int_add_ovf(i41, 1) +guard_no_overflow(, descr=<Guard150>) [p0, p1, i115, p5, p7, p21, p12, p13, p14, p15, p16, p17, p18, p19, p20, f113, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #178 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #181 BINARY_MULTIPLY', 0) +i116 = int_mul_ovf(i115, i97) +guard_no_overflow(, descr=<Guard151>) [p0, p1, p19, i116, p5, p7, p21, p12, p13, p14, p15, p16, p17, p18, p20, i115, f113, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #182 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #185 BINARY_ADD', 0) +i117 = int_add_ovf(i116, 1) +guard_no_overflow(, descr=<Guard152>) [p0, p1, i117, p5, p7, p21, p12, p13, p14, p15, p16, p17, p18, p19, p20, i116, None, f113, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #186 BINARY_SUBSCR', 0) +i119 = int_lt(i117, 0) +guard_false(i119, descr=<Guard153>) [p0, p1, p21, i117, i100, p5, p7, p12, p13, p14, p15, p16, p17, p18, p19, p20, None, None, f113, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +i120 = int_lt(i117, i100) +guard_true(i120, descr=<Guard154>) [p0, p1, p21, i117, p5, p7, p12, p13, p14, p15, p16, p17, p18, p19, p20, None, None, f113, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +f121 = getarrayitem_raw(i104, i117, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #187 BINARY_ADD', 0) +f122 = float_add(f113, f121) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #188 LOAD_FAST', 0) +guard_nonnull_class(p16, 19800744, descr=<Guard155>) [p0, p1, p16, p5, p7, p12, p13, p14, p15, p17, p18, p19, p20, p21, f122, None, None, None, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #191 BINARY_MULTIPLY', 0) +f124 = getfield_gc_pure(p16, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f125 = float_mul(f122, f124) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #192 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #195 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #198 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #201 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #202 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #205 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #206 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #209 BINARY_SUBTRACT', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #210 BINARY_SUBSCR', 0) +i127 = int_lt(i98, 0) +guard_false(i127, descr=<Guard156>) [p0, p1, p21, i98, i100, p5, p7, p12, p13, p14, p15, p16, p17, p18, p19, p20, f125, None, None, None, None, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +i128 = int_lt(i98, i100) +guard_true(i128, descr=<Guard157>) [p0, p1, p21, i98, p5, p7, p12, p13, p14, p15, p16, p17, p18, p19, p20, f125, None, None, None, None, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +f129 = getarrayitem_raw(i104, i98, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #211 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #214 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #217 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #220 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #221 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #224 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #225 LOAD_CONST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #228 BINARY_ADD', 0) +i131 = int_add(i99, 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #229 BINARY_SUBSCR', 0) +i132 = int_lt(i131, i100) +guard_true(i132, descr=<Guard158>) [p0, p1, p21, i131, p5, p7, p13, p14, p15, p16, p17, p18, p19, p20, f129, f125, None, None, None, None, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +f133 = getarrayitem_raw(i104, i131, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #230 BINARY_ADD', 0) +f134 = float_add(f129, f133) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #231 LOAD_FAST', 0) +guard_nonnull_class(p15, 19800744, descr=<Guard159>) [p0, p1, p15, p5, p7, p13, p14, p16, p17, p18, p19, p20, p21, f134, None, f125, None, None, None, None, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #234 BINARY_MULTIPLY', 0) +f136 = getfield_gc_pure(p15, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f137 = float_mul(f134, f136) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #235 BINARY_ADD', 0) +f138 = float_add(f125, f137) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #236 LOAD_FAST', 0) +guard_nonnull_class(p17, 19800744, descr=<Guard160>) [p0, p1, p17, p5, p7, p13, p14, p15, p16, p18, p19, p20, p21, f138, None, None, None, None, None, None, None, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #239 BINARY_MULTIPLY', 0) +f140 = getfield_gc_pure(p17, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f141 = float_mul(f138, f140) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #240 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #243 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #246 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #249 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #250 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #253 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #254 STORE_SUBSCR', 0) +setarrayitem_raw(i104, i99, f141, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #255 LOAD_FAST', 0) +guard_nonnull_class(p18, 19800744, descr=<Guard161>) [p0, p1, p18, p5, p7, p13, p14, p15, p16, p17, p19, p20, p21, None, None, None, None, None, None, None, None, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #258 LOAD_GLOBAL', 0) +p144 = getfield_gc(ConstPtr(ptr143), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_nonnull_class(p144, ConstClass(Function), descr=<Guard162>) [p0, p1, p144, p5, p7, p18, p13, p14, p15, p16, p17, p19, p20, p21, None, None, None, None, None, None, None, None, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #261 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #264 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #267 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #270 BINARY_MULTIPLY', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #271 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #274 BINARY_ADD', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #275 BINARY_SUBSCR', 0) +f146 = getarrayitem_raw(i104, i99, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #276 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #279 BINARY_SUBTRACT', 0) +f147 = float_sub(f146, f105) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #280 CALL_FUNCTION', 0) +p148 = getfield_gc(p144, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_code 24>) +guard_value(p148, ConstPtr(ptr149), descr=<Guard163>) [p0, p1, p148, p144, p5, p7, p18, p13, p14, p15, p16, p17, p19, p20, p21, f147, None, None, None, None, None, None, None, None, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +p150 = getfield_gc(p144, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_w_func_globals 64>) +p151 = getfield_gc(p144, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_closure 16>) +p153 = call(ConstClass(getexecutioncontext), descr=<GcPtrCallDescr>) +p154 = getfield_gc(p153, descr=<GcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 56>) +i155 = force_token() +p156 = getfield_gc(p153, descr=<GcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_w_tracefunc 72>) +guard_isnull(p156, descr=<Guard164>) [p0, p1, p153, p156, p5, p7, p18, p144, p13, p14, p15, p16, p17, p19, p20, p21, p150, p154, i155, f147, None, None, None, None, None, None, None, None, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +i157 = getfield_gc(p153, descr=<NonGcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_profilefunc 40>) +i158 = int_is_zero(i157) +guard_true(i158, descr=<Guard165>) [p0, p1, p153, p5, p7, p18, p144, p13, p14, p15, p16, p17, p19, p20, p21, p150, p154, i155, f147, None, None, None, None, None, None, None, None, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #0 LOAD_FAST', 1) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #3 LOAD_FAST', 1) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #6 BINARY_MULTIPLY', 1) +f159 = float_mul(f147, f147) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #7 RETURN_VALUE', 1) +i160 = int_is_true(i157) +guard_false(i160, descr=<Guard166>) [p0, p1, p153, p5, p7, p18, p144, p13, p14, p15, p16, p17, p19, p20, p21, f159, p150, p154, i155, f147, None, None, None, None, None, None, None, None, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #283 INPLACE_ADD', 0) +f161 = getfield_gc_pure(p18, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f162 = float_add(f161, f159) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #284 STORE_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #287 JUMP_ABSOLUTE', 0) +i164 = getfield_raw(38968960, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i166 = int_sub(i164, 34) +setfield_raw(38968960, i166, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i168 = int_lt(i166, 0) +guard_false(i168, descr=<Guard167>) [p0, p1, p5, p7, p13, p14, p15, p16, p17, p19, p20, p21, f162, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, f105, None, i87, i94, None, i77, None, None, p26, i41] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 0) +p170 = new_with_vtable(19865144) +setfield_gc(p170, 291, descr=<UnsignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_handlerposition 8>) +setfield_gc(p170, 1, descr=<SignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_valuestackdepth 24>) +setfield_gc(p170, p26, descr=<GcPtrFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_previous 16>) +p174 = new_with_vtable(19861240) +setfield_gc(p174, i94, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_current 8>) +setfield_gc(p174, i87, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_remaining 16>) +setfield_gc(p174, i77, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_step 24>) +p176 = new_with_vtable(19800744) +setfield_gc(p176, f162, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +p178 = new_with_vtable(ConstClass(W_IntObject)) +setfield_gc(p178, i41, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +p180 = new_with_vtable(ConstClass(W_IntObject)) +setfield_gc(p180, 1, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +p182 = new_with_vtable(19800744) +setfield_gc(p182, f105, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +jump(p1, p0, ConstPtr(ptr183), p170, 2, p5, 0, 125, p7, p174, ConstPtr(ptr187), ConstPtr(ptr188), ConstPtr(ptr189), ConstPtr(ptr190), ConstPtr(ptr191), p13, p14, p15, p16, p17, p176, p19, p20, p21, p178, p180, p182, descr=<Loop1>) +[5ed6432f4a2c] jit-log-opt-bridge} +[5ed66199330c] {jit-log-opt-bridge +# bridge out of Guard 65 with 72 ops +[p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, i14, f15, f16] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #294 POP_BLOCK', 0) +p17 = getfield_gc(p3, descr=<GcPtrFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_previous 16>) +guard_class(p3, 19865144, descr=<Guard168>) [p0, p1, p3, p17, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, f16, i14, f15] +i19 = getfield_gc(p3, descr=<SignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_valuestackdepth 24>) +guard_value(i19, 0, descr=<Guard169>) [p0, p1, i19, p17, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, f16, i14, f15] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #295 LOAD_GLOBAL', 0) +p21 = getfield_gc(p1, descr=<GcPtrFieldDescr pypy.interpreter.eval.Frame.inst_w_globals 8>) +guard_value(p21, ConstPtr(ptr22), descr=<Guard170>) [p0, p1, p21, p17, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, f16, i14, f15] +p23 = getfield_gc(p21, descr=<GcPtrFieldDescr pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_r_dict_content 8>) +guard_isnull(p23, descr=<Guard171>) [p0, p1, p23, p21, p17, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, f16, i14, f15] +p25 = getfield_gc(ConstPtr(ptr24), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_nonnull_class(p25, 19905496, descr=<Guard172>) [p0, p1, p25, p17, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, f16, i14, f15] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #298 LOOKUP_METHOD', 0) +p27 = getfield_gc(p25, descr=<GcPtrFieldDescr pypy.interpreter.module.Module.inst_w_dict 8>) +guard_value(p27, ConstPtr(ptr28), descr=<Guard173>) [p0, p1, p25, p27, p17, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, f16, i14, f15] +p29 = getfield_gc(p27, descr=<GcPtrFieldDescr pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_r_dict_content 8>) +guard_isnull(p29, descr=<Guard174>) [p0, p1, p25, p29, p27, p17, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, f16, i14, f15] +p31 = getfield_gc(ConstPtr(ptr30), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_value(p31, ConstPtr(ptr32), descr=<Guard175>) [p0, p1, p31, p25, p17, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, f16, i14, f15] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #301 LOAD_FAST', 0) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #304 CALL_METHOD', 0) +call(ConstClass(set_errno), 0, descr=<VoidCallDescr>) +f36 = call(ConstClass(sqrt), f16, descr=<FloatCallDescr>) +i38 = call(ConstClass(get_errno), descr=<INTCallDescr>) +i39 = float_ne(f36, f36) +guard_false(i39, descr=<Guard176>) [p0, p1, i38, f36, f16, p17, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, None, i14, f15] +i42 = float_eq(f36, inf) +i44 = float_eq(f36, -inf) +i45 = int_or(i42, i44) +i46 = int_is_true(i45) +guard_false(i46, descr=<Guard177>) [p0, p1, i38, f36, f16, p17, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, None, i14, f15] +i47 = int_is_true(i38) +guard_false(i47, descr=<Guard178>) [p0, p1, i38, f36, p17, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, f16, i14, f15] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #307 RETURN_VALUE', 0) +guard_isnull(p17, descr=<Guard179>) [p0, p1, p17, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, f36, f16, i14, f15] +p48 = getfield_gc(p1, descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_valuestack_w 120>) +setarrayitem_gc(p48, 0, ConstPtr(ptr50), descr=<GcPtrArrayDescr>) +setarrayitem_gc(p48, 1, ConstPtr(ptr52), descr=<GcPtrArrayDescr>) +setarrayitem_gc(p48, 2, ConstPtr(ptr52), descr=<GcPtrArrayDescr>) +setarrayitem_gc(p48, 3, ConstPtr(ptr55), descr=<GcPtrArrayDescr>) +setarrayitem_gc(p48, 4, ConstPtr(ptr55), descr=<GcPtrArrayDescr>) +setarrayitem_gc(p48, 5, ConstPtr(ptr55), descr=<GcPtrArrayDescr>) +setarrayitem_gc(p48, 6, ConstPtr(ptr55), descr=<GcPtrArrayDescr>) +setarrayitem_gc(p48, 7, p5, descr=<GcPtrArrayDescr>) +p60 = getfield_gc(p1, descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_fastlocals_w 56>) +setarrayitem_gc(p60, 0, p6, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p60, 1, p7, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p60, 2, p8, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p60, 3, p9, descr=<GcPtrArrayDescr>) +p66 = new_with_vtable(19800744) +setfield_gc(p66, f16, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +setarrayitem_gc(p60, 4, p66, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p60, 5, p10, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p60, 6, p11, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p60, 7, p12, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p60, 8, p13, descr=<GcPtrArrayDescr>) +p73 = new_with_vtable(ConstClass(W_IntObject)) +setfield_gc(p73, i14, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +setarrayitem_gc(p60, 9, p73, descr=<GcPtrArrayDescr>) +p76 = new_with_vtable(19800744) +setfield_gc(p76, f15, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +setarrayitem_gc(p60, 10, p76, descr=<GcPtrArrayDescr>) +setfield_gc(p1, 1, descr=<BoolFieldDescr pypy.interpreter.pyframe.PyFrame.inst_frame_finished_execution 148>) +setfield_gc(p1, ConstPtr(ptr79), descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_pycode 112>) +setfield_gc(p1, ConstPtr(ptr55), descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_lastblock 104>) +setfield_gc(p1, 0, descr=<SignedFieldDescr pypy.interpreter.pyframe.PyFrame.inst_valuestackdepth 128>) +setfield_gc(p1, p4, descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_last_exception 88>) +setfield_gc(p1, 0, descr=<BoolFieldDescr pypy.interpreter.pyframe.PyFrame.inst_is_being_profiled 149>) +setfield_gc(p1, 307, descr=<SignedFieldDescr pypy.interpreter.pyframe.PyFrame.inst_last_instr 96>) +p84 = new_with_vtable(19800744) +setfield_gc(p84, f36, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +finish(p84, descr=<DoneWithThisFrameDescrRef object at 0x140bcc0>) +[5ed6619e9448] jit-log-opt-bridge} +[5ed74f2eef6e] {jit-log-opt-loop +# Loop 2 : loop with 394 ops +[p0, p1, p2, p3, p4, p5, p6, p7, i8, f9, i10, i11, p12, p13] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #21 LOAD_FAST', 0) +guard_nonnull_class(p7, 19800744, descr=<Guard180>) [p1, p0, p7, p2, p3, p4, p5, p6, i8] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #24 LOAD_FAST', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #27 COMPARE_OP', 0) +f15 = getfield_gc_pure(p7, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +i16 = float_gt(f15, f9) +guard_true(i16, descr=<Guard181>) [p1, p0, p6, p7, p2, p3, p4, p5, i8] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #30 POP_JUMP_IF_FALSE', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #33 LOAD_FAST', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #36 POP_JUMP_IF_FALSE', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #39 LOAD_FAST', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #42 LOAD_FAST', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #45 COMPARE_OP', 0) +i17 = int_ge(i8, i10) +guard_false(i17, descr=<Guard182>) [p1, p0, p5, p2, p3, p4, p6, p7, i8] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #48 POP_JUMP_IF_FALSE', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #55 LOAD_GLOBAL', 0) +p18 = getfield_gc(p0, descr=<GcPtrFieldDescr pypy.interpreter.eval.Frame.inst_w_globals 8>) +guard_value(p18, ConstPtr(ptr19), descr=<Guard183>) [p1, p0, p18, p2, p3, p4, p5, p6, p7, i8] +p20 = getfield_gc(p18, descr=<GcPtrFieldDescr pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_r_dict_content 8>) +guard_isnull(p20, descr=<Guard184>) [p1, p0, p20, p18, p2, p3, p4, p5, p6, p7, i8] +p22 = getfield_gc(ConstPtr(ptr21), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_nonnull_class(p22, ConstClass(Function), descr=<Guard185>) [p1, p0, p22, p2, p3, p4, p5, p6, p7, i8] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #58 LOAD_FAST', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #61 CALL_FUNCTION', 0) +p24 = getfield_gc(p22, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_code 24>) +guard_value(p24, ConstPtr(ptr25), descr=<Guard186>) [p1, p0, p24, p22, p2, p3, p4, p5, p6, p7, i8] +p26 = getfield_gc(p22, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_w_func_globals 64>) +p27 = getfield_gc(p22, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_closure 16>) +i28 = force_token() +i29 = int_is_zero(i11) +guard_true(i29, descr=<Guard187>) [p1, p0, p12, p2, p3, p22, p4, p5, p6, p7, p26, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #0 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #3 LOAD_ATTR', 1) +p30 = getfield_gc(p4, descr=<GcPtrFieldDescr pypy.objspace.std.mapdict.W_ObjectObjectSize5.inst_map 48>) +guard_value(p30, ConstPtr(ptr31), descr=<Guard188>) [p1, p0, p12, p4, p30, p2, p3, p22, p5, p6, p7, p26, p13, i28, i8] +p33 = getfield_gc(ConstPtr(ptr32), descr=<GcPtrFieldDescr pypy.objspace.std.typeobject.W_TypeObject.inst__version_tag 16>) +guard_value(p33, ConstPtr(ptr34), descr=<Guard189>) [p1, p0, p12, p4, p33, p2, p3, p22, p5, p6, p7, p26, p13, i28, i8] +p35 = getfield_gc(p4, descr=<GcPtrFieldDescr pypy.objspace.std.mapdict.W_ObjectObjectSize5.inst__value2 24>) +guard_nonnull_class(p35, 19800744, descr=<Guard190>) [p1, p0, p12, p35, p4, p2, p3, p22, p5, p6, p7, p26, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #6 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #9 LOAD_ATTR', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #12 BINARY_MULTIPLY', 1) +f37 = getfield_gc_pure(p35, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f38 = float_mul(f37, f37) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #13 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #16 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #19 LOAD_ATTR', 1) +p39 = getfield_gc(p4, descr=<GcPtrFieldDescr pypy.objspace.std.mapdict.W_ObjectObjectSize5.inst__value3 32>) +guard_nonnull_class(p39, 19800744, descr=<Guard191>) [p1, p0, p12, p39, p4, p2, p3, p22, p5, p6, p7, f38, p26, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #22 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #25 LOAD_ATTR', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #28 BINARY_MULTIPLY', 1) +f41 = getfield_gc_pure(p39, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f42 = float_mul(f41, f41) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #29 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #32 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #35 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #38 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #41 BINARY_ADD', 1) +f43 = float_add(f38, f42) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #42 BINARY_DIVIDE', 1) +i45 = float_eq(f43, 0.000000) +guard_false(i45, descr=<Guard192>) [p1, p0, p12, f43, p2, p3, p22, p4, p5, p6, p7, f42, f38, p26, p13, i28, i8] +f47 = float_truediv(0.500000, f43) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #43 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #46 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #49 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #52 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #55 LOAD_ATTR', 1) +p48 = getfield_gc(p4, descr=<GcPtrFieldDescr pypy.objspace.std.mapdict.W_ObjectObjectSize5.inst__value0 8>) +guard_nonnull_class(p48, ConstClass(W_IntObject), descr=<Guard193>) [p1, p0, p12, p48, p4, p2, p3, p22, p5, p6, p7, f47, f42, f38, p26, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #58 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #61 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #64 LOAD_ATTR', 1) +p50 = getfield_gc(p4, descr=<GcPtrFieldDescr pypy.objspace.std.mapdict.W_ObjectObjectSize5.inst__value1 16>) +guard_nonnull_class(p50, ConstClass(W_IntObject), descr=<Guard194>) [p1, p0, p12, p50, p4, p2, p3, p22, p5, p6, p7, p48, f47, f42, f38, p26, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #67 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #70 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #73 LOAD_ATTR', 1) +p52 = getfield_gc(p4, descr=<GcPtrFieldDescr pypy.objspace.std.mapdict.W_ObjectObjectSize5.inst__value4 40>) +guard_nonnull_class(p52, 19886912, descr=<Guard195>) [p1, p0, p12, p52, p4, p2, p3, p22, p5, p6, p7, p50, p48, f47, f42, f38, p26, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #76 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #79 SETUP_LOOP', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #82 LOAD_GLOBAL', 1) +guard_value(p26, ConstPtr(ptr54), descr=<Guard196>) [p1, p0, p12, p26, p2, p3, p22, p4, p5, p6, p7, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +p56 = getfield_gc(p26, descr=<GcPtrFieldDescr pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_r_dict_content 8>) +guard_isnull(p56, descr=<Guard197>) [p1, p0, p12, p56, p26, p2, p3, p22, p4, p5, p6, p7, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +p58 = getfield_gc(ConstPtr(ptr57), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_isnull(p58, descr=<Guard198>) [p1, p0, p12, p58, p2, p3, p22, p4, p5, p6, p7, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +p60 = getfield_gc(ConstPtr(ptr59), descr=<GcPtrFieldDescr pypy.interpreter.module.Module.inst_w_dict 8>) +guard_value(p60, ConstPtr(ptr61), descr=<Guard199>) [p1, p0, p12, p60, p2, p3, p22, p4, p5, p6, p7, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +p62 = getfield_gc(p60, descr=<GcPtrFieldDescr pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_r_dict_content 8>) +guard_isnull(p62, descr=<Guard200>) [p1, p0, p12, p62, p60, p2, p3, p22, p4, p5, p6, p7, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +p64 = getfield_gc(ConstPtr(ptr63), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_value(p64, ConstPtr(ptr65), descr=<Guard201>) [p1, p0, p12, p64, p2, p3, p22, p4, p5, p6, p7, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #85 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #88 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #91 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #94 BINARY_SUBTRACT', 1) +i66 = getfield_gc_pure(p48, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i68 = int_sub_ovf(i66, 1) +guard_no_overflow(, descr=<Guard202>) [p1, p0, p12, p48, i68, p2, p3, p22, p4, p5, p6, p7, p64, p52, p50, None, f47, f42, f38, None, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #95 CALL_FUNCTION', 1) +p70 = getfield_gc(ConstPtr(ptr69), descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_name 40>) +p71 = getfield_gc(ConstPtr(ptr69), descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_defs 32>) +i72 = getfield_gc_pure(p71, descr=<BoolFieldDescr pypy.interpreter.function.Defaults.inst_promote 16>) +guard_false(i72, descr=<Guard203>) [p1, p0, p12, p70, p71, p2, p3, p22, p4, p5, p6, p7, i68, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +p73 = getfield_gc_pure(p71, descr=<GcPtrFieldDescr pypy.interpreter.function.Defaults.inst_items 8>) +i74 = arraylen_gc(p73, descr=<GcPtrArrayDescr>) +i76 = int_sub(4, i74) +i78 = int_ge(3, i76) +guard_true(i78, descr=<Guard204>) [p1, p0, p12, p70, i76, p71, p2, p3, p22, p4, p5, p6, p7, i68, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +i79 = int_sub(3, i76) +i80 = getfield_gc_pure(p71, descr=<BoolFieldDescr pypy.interpreter.function.Defaults.inst_promote 16>) +guard_false(i80, descr=<Guard205>) [p1, p0, p12, p70, i79, i76, p71, p2, p3, p22, p4, p5, p6, p7, i68, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +p81 = getfield_gc_pure(p71, descr=<GcPtrFieldDescr pypy.interpreter.function.Defaults.inst_items 8>) +p82 = getarrayitem_gc(p81, i79, descr=<GcPtrArrayDescr>) +guard_class(p82, ConstClass(W_IntObject), descr=<Guard206>) [p1, p0, p12, p82, p2, p3, p22, p4, p5, p6, p7, i68, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +i84 = getfield_gc_pure(p82, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i85 = int_is_zero(i84) +guard_false(i85, descr=<Guard207>) [p1, p0, p12, i84, i68, p2, p3, p22, p4, p5, p6, p7, p82, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +i87 = int_lt(i84, 0) +guard_false(i87, descr=<Guard208>) [p1, p0, p12, i84, i68, p2, p3, p22, p4, p5, p6, p7, p82, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +i89 = int_lt(1, i68) +guard_true(i89, descr=<Guard209>) [p1, p0, p12, i84, i68, p2, p3, p22, p4, p5, p6, p7, p82, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +i90 = int_sub(i68, 1) +i92 = int_sub(i90, 1) +i93 = uint_floordiv(i92, i84) +i95 = int_add(i93, 1) +i97 = int_lt(i95, 0) +guard_false(i97, descr=<Guard210>) [p1, p0, p12, i84, i95, p2, p3, p22, p4, p5, p6, p7, p82, i68, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #98 GET_ITER', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #99 FOR_ITER', 1) +i99 = int_gt(i95, 0) +guard_true(i99, descr=<Guard211>) [p1, p0, p12, p2, p3, p22, p4, p5, p6, p7, i84, i95, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +i100 = int_add(1, i84) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #102 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #105 SETUP_LOOP', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #108 LOAD_GLOBAL', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #111 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #114 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #117 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #120 BINARY_SUBTRACT', 1) +i101 = getfield_gc_pure(p50, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i103 = int_sub_ovf(i101, 1) +guard_no_overflow(, descr=<Guard212>) [p1, p0, p12, p50, i103, p2, p3, p22, p4, p5, p6, p7, i100, i93, i84, None, None, None, None, p52, None, p48, f47, f42, f38, None, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #121 CALL_FUNCTION', 1) +i104 = getfield_gc_pure(p71, descr=<BoolFieldDescr pypy.interpreter.function.Defaults.inst_promote 16>) +guard_false(i104, descr=<Guard213>) [p1, p0, p12, p70, p71, p2, p3, p22, p4, p5, p6, p7, i103, i100, i93, i84, None, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +p105 = getfield_gc_pure(p71, descr=<GcPtrFieldDescr pypy.interpreter.function.Defaults.inst_items 8>) +i106 = arraylen_gc(p105, descr=<GcPtrArrayDescr>) +i108 = int_sub(4, i106) +i110 = int_ge(3, i108) +guard_true(i110, descr=<Guard214>) [p1, p0, p12, p70, i108, p71, p2, p3, p22, p4, p5, p6, p7, i103, i100, i93, i84, None, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +i111 = int_sub(3, i108) +i112 = getfield_gc_pure(p71, descr=<BoolFieldDescr pypy.interpreter.function.Defaults.inst_promote 16>) +guard_false(i112, descr=<Guard215>) [p1, p0, p12, p70, i111, i108, p71, p2, p3, p22, p4, p5, p6, p7, i103, i100, i93, i84, None, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +p113 = getfield_gc_pure(p71, descr=<GcPtrFieldDescr pypy.interpreter.function.Defaults.inst_items 8>) +p114 = getarrayitem_gc(p113, i111, descr=<GcPtrArrayDescr>) +guard_class(p114, ConstClass(W_IntObject), descr=<Guard216>) [p1, p0, p12, p114, p2, p3, p22, p4, p5, p6, p7, i103, i100, i93, i84, None, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +i116 = getfield_gc_pure(p114, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i117 = int_is_zero(i116) +guard_false(i117, descr=<Guard217>) [p1, p0, p12, i116, i103, p2, p3, p22, p4, p5, p6, p7, p114, None, i100, i93, i84, None, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +i119 = int_lt(i116, 0) +guard_false(i119, descr=<Guard218>) [p1, p0, p12, i116, i103, p2, p3, p22, p4, p5, p6, p7, p114, None, i100, i93, i84, None, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +i121 = int_lt(1, i103) +guard_true(i121, descr=<Guard219>) [p1, p0, p12, i116, i103, p2, p3, p22, p4, p5, p6, p7, p114, None, i100, i93, i84, None, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +i122 = int_sub(i103, 1) +i124 = int_sub(i122, 1) +i125 = uint_floordiv(i124, i116) +i127 = int_add(i125, 1) +i129 = int_lt(i127, 0) +guard_false(i129, descr=<Guard220>) [p1, p0, p12, i116, i127, p2, p3, p22, p4, p5, p6, p7, p114, i103, i100, i93, i84, None, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #124 GET_ITER', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 1) +i131 = int_gt(i127, 0) +guard_true(i131, descr=<Guard221>) [p1, p0, p12, p2, p3, p22, p4, p5, p6, p7, i116, i127, None, None, i100, i93, i84, None, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +i132 = int_add(1, i116) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #128 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #131 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #134 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #137 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #140 BINARY_MULTIPLY', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #141 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #144 BINARY_ADD', 1) +i133 = int_add_ovf(i66, 1) +guard_no_overflow(, descr=<Guard222>) [p1, p0, p12, i133, p2, p3, p22, p4, p5, p6, p7, i132, i125, i66, i116, None, None, None, i100, i93, i84, None, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #145 BINARY_SUBSCR', 1) +i134 = getfield_gc(p52, descr=<SignedFieldDescr pypy.module.array.interp_array.W_ArrayTyped.inst_len 32>) +i135 = int_lt(i133, i134) +guard_true(i135, descr=<Guard223>) [p1, p0, p12, p52, i133, p2, p3, p22, p4, p5, p6, p7, i132, i125, None, i116, None, None, None, i100, i93, i84, None, None, None, None, None, p50, p48, f47, f42, f38, None, p13, i28, i8] +i136 = getfield_gc(p52, descr=<NonGcPtrFieldDescr pypy.module.array.interp_array.W_ArrayTyped.inst_buffer 24>) +f137 = getarrayitem_raw(i136, i133, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #146 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #149 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #152 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #155 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #158 BINARY_SUBTRACT', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #159 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #162 BINARY_MULTIPLY', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #163 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #166 BINARY_ADD', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #167 BINARY_SUBSCR', 1) +f138 = getarrayitem_raw(i136, 1, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #168 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #171 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #174 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #177 BINARY_ADD', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #178 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #181 BINARY_MULTIPLY', 1) +i140 = int_mul_ovf(2, i66) +guard_no_overflow(, descr=<Guard224>) [p1, p0, p12, p48, i140, p2, p3, p22, p4, p5, p6, p7, f138, f137, i132, i125, None, i116, None, None, None, i100, i93, i84, None, None, None, None, p52, p50, None, f47, f42, f38, None, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #182 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #185 BINARY_ADD', 1) +i141 = int_add_ovf(i140, 1) +guard_no_overflow(, descr=<Guard225>) [p1, p0, p12, i141, p2, p3, p22, p4, p5, p6, p7, i140, f138, f137, i132, i125, None, i116, None, None, None, i100, i93, i84, None, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #186 BINARY_SUBSCR', 1) +i143 = int_lt(i141, 0) +guard_false(i143, descr=<Guard226>) [p1, p0, p12, p52, i141, i134, p2, p3, p22, p4, p5, p6, p7, None, f138, f137, i132, i125, None, i116, None, None, None, i100, i93, i84, None, None, None, None, None, p50, p48, f47, f42, f38, None, p13, i28, i8] +i144 = int_lt(i141, i134) +guard_true(i144, descr=<Guard227>) [p1, p0, p12, p52, i141, p2, p3, p22, p4, p5, p6, p7, None, f138, f137, i132, i125, None, i116, None, None, None, i100, i93, i84, None, None, None, None, None, p50, p48, f47, f42, f38, None, p13, i28, i8] +f145 = getarrayitem_raw(i136, i141, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #187 BINARY_ADD', 1) +f146 = float_add(f138, f145) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #188 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #191 BINARY_MULTIPLY', 1) +f147 = float_mul(f146, f42) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #192 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #195 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #198 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #201 BINARY_MULTIPLY', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #202 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #205 BINARY_ADD', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #206 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #209 BINARY_SUBTRACT', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #210 BINARY_SUBSCR', 1) +i148 = int_lt(i66, i134) +guard_true(i148, descr=<Guard228>) [p1, p0, p12, p52, i66, p2, p3, p22, p4, p5, p6, p7, f147, None, None, f137, i132, i125, None, i116, None, None, None, i100, i93, i84, None, None, None, None, None, p50, p48, f47, f42, f38, None, p13, i28, i8] +f149 = getarrayitem_raw(i136, i66, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #211 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #214 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #217 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #220 BINARY_MULTIPLY', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #221 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #224 BINARY_ADD', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #225 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #228 BINARY_ADD', 1) +i151 = int_add(i133, 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #229 BINARY_SUBSCR', 1) +i152 = int_lt(i151, i134) +guard_true(i152, descr=<Guard229>) [p1, p0, p12, p52, i151, p2, p3, p22, p4, p5, p6, p7, f149, f147, None, None, f137, i132, i125, None, i116, None, None, None, i100, i93, i84, None, None, None, None, None, p50, p48, f47, f42, f38, None, p13, i28, i8] +f153 = getarrayitem_raw(i136, i151, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #230 BINARY_ADD', 1) +f154 = float_add(f149, f153) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #231 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #234 BINARY_MULTIPLY', 1) +f155 = float_mul(f154, f38) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #235 BINARY_ADD', 1) +f156 = float_add(f147, f155) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #236 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #239 BINARY_MULTIPLY', 1) +f157 = float_mul(f156, f47) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #240 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #243 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #246 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #249 BINARY_MULTIPLY', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #250 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #253 BINARY_ADD', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #254 STORE_SUBSCR', 1) +setarrayitem_raw(i136, i133, f157, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #255 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #258 LOAD_GLOBAL', 1) +p159 = getfield_gc(ConstPtr(ptr158), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_nonnull_class(p159, ConstClass(Function), descr=<Guard230>) [p1, p0, p12, p159, p2, p3, p22, p4, p5, p6, p7, None, None, None, None, f137, i132, i125, None, i116, None, None, None, i100, i93, i84, None, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #261 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #264 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #267 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #270 BINARY_MULTIPLY', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #271 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #274 BINARY_ADD', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #275 BINARY_SUBSCR', 1) +f161 = getarrayitem_raw(i136, i133, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #276 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #279 BINARY_SUBTRACT', 1) +f162 = float_sub(f161, f137) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #280 CALL_FUNCTION', 1) +p163 = getfield_gc(p159, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_code 24>) +guard_value(p163, ConstPtr(ptr164), descr=<Guard231>) [p1, p0, p12, p163, p159, p2, p3, p22, p4, p5, p6, p7, f162, None, None, None, None, f137, i132, i125, None, i116, None, None, None, i100, i93, i84, None, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +p165 = getfield_gc(p159, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_w_func_globals 64>) +p166 = getfield_gc(p159, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_closure 16>) +i167 = force_token() +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #0 LOAD_FAST', 2) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #3 LOAD_FAST', 2) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #6 BINARY_MULTIPLY', 2) +f168 = float_mul(f162, f162) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #7 RETURN_VALUE', 2) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #283 INPLACE_ADD', 1) +f170 = float_add(0.000000, f168) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #284 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #287 JUMP_ABSOLUTE', 1) +i172 = getfield_raw(38968960, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i174 = int_sub(i172, 100) +setfield_raw(38968960, i174, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i176 = int_lt(i174, 0) +guard_false(i176, descr=<Guard232>) [p1, p0, p12, p2, p3, p22, p4, p5, p6, p7, f170, None, None, None, None, None, f137, i132, i125, None, i116, None, None, None, i100, i93, i84, None, None, None, None, p52, p50, p48, f47, f42, f38, None, p13, i28, i8] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 1) +i177 = force_token() +p179 = new_with_vtable(19809200) +setfield_gc(p179, i28, descr=<SignedFieldDescr JitVirtualRef.virtual_token 8>) +setfield_gc(p12, p179, descr=<GcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 56>) +setfield_gc(p0, i177, descr=<SignedFieldDescr pypy.interpreter.pyframe.PyFrame.vable_token 24>) +p181 = new_with_vtable(19863424) +setfield_gc(p181, p13, descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_f_backref 48>) +setfield_gc(p181, ConstPtr(ptr54), descr=<GcPtrFieldDescr pypy.interpreter.eval.Frame.inst_w_globals 8>) +setfield_gc(p181, 34, descr=<INTFieldDescr pypy.interpreter.pyframe.PyFrame.inst_f_lineno 144>) +setfield_gc(p181, ConstPtr(ptr25), descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_pycode 112>) +p184 = new_array(8, descr=<GcPtrArrayDescr>) +p186 = new_with_vtable(19861240) +setfield_gc(p186, i100, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_current 8>) +setfield_gc(p186, i93, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_remaining 16>) +setfield_gc(p186, i84, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_step 24>) +setarrayitem_gc(p184, 0, p186, descr=<GcPtrArrayDescr>) +p189 = new_with_vtable(19861240) +setfield_gc(p189, i132, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_current 8>) +setfield_gc(p189, i125, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_remaining 16>) +setfield_gc(p189, i116, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_step 24>) +setarrayitem_gc(p184, 1, p189, descr=<GcPtrArrayDescr>) +setfield_gc(p181, p184, descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_valuestack_w 120>) +setfield_gc(p181, 125, descr=<SignedFieldDescr pypy.interpreter.pyframe.PyFrame.inst_last_instr 96>) +p193 = new_with_vtable(19865144) +setfield_gc(p193, 291, descr=<UnsignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_handlerposition 8>) +setfield_gc(p193, 1, descr=<SignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_valuestackdepth 24>) +p197 = new_with_vtable(19865144) +setfield_gc(p197, 295, descr=<UnsignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_handlerposition 8>) +setfield_gc(p193, p197, descr=<GcPtrFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_previous 16>) +setfield_gc(p181, p193, descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_lastblock 104>) +p200 = new_array(11, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p200, 0, p4, descr=<GcPtrArrayDescr>) +p203 = new_with_vtable(19800744) +setfield_gc(p203, f38, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +setarrayitem_gc(p200, 1, p203, descr=<GcPtrArrayDescr>) +p206 = new_with_vtable(19800744) +setfield_gc(p206, f42, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +setarrayitem_gc(p200, 2, p206, descr=<GcPtrArrayDescr>) +p209 = new_with_vtable(19800744) +setfield_gc(p209, f47, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +setarrayitem_gc(p200, 3, p209, descr=<GcPtrArrayDescr>) +p212 = new_with_vtable(19800744) +setfield_gc(p212, f170, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +setarrayitem_gc(p200, 4, p212, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p200, 5, p48, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p200, 6, p50, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p200, 7, p52, descr=<GcPtrArrayDescr>) +p218 = new_with_vtable(ConstClass(W_IntObject)) +setfield_gc(p218, 1, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +setarrayitem_gc(p200, 8, p218, descr=<GcPtrArrayDescr>) +p221 = new_with_vtable(ConstClass(W_IntObject)) +setfield_gc(p221, 1, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +setarrayitem_gc(p200, 9, p221, descr=<GcPtrArrayDescr>) +p224 = new_with_vtable(19800744) +setfield_gc(p224, f137, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +setarrayitem_gc(p200, 10, p224, descr=<GcPtrArrayDescr>) +setfield_gc(p181, p200, descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_fastlocals_w 56>) +setfield_gc(p181, 2, descr=<SignedFieldDescr pypy.interpreter.pyframe.PyFrame.inst_valuestackdepth 128>) +p235 = call_assembler(p181, p12, ConstPtr(ptr25), p193, 2, ConstPtr(ptr227), 0, 125, p186, p189, ConstPtr(ptr229), ConstPtr(ptr230), ConstPtr(ptr231), ConstPtr(ptr232), ConstPtr(ptr233), ConstPtr(ptr234), p4, p203, p206, p209, p212, p48, p50, p52, p218, p221, p224, descr=<Loop1>) +guard_not_forced(, descr=<Guard233>) [p1, p0, p12, p181, p235, p179, p2, p3, p22, p4, p5, p6, p7, i8] +guard_no_exception(, descr=<Guard234>) [p1, p0, p12, p181, p235, p179, p2, p3, p22, p4, p5, p6, p7, i8] +p236 = getfield_gc(p12, descr=<GcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_w_tracefunc 72>) +guard_isnull(p236, descr=<Guard235>) [p1, p0, p12, p235, p181, p236, p179, p2, p3, p22, p4, p5, p6, p7, i8] +i237 = ptr_eq(p181, p0) +guard_false(i237, descr=<Guard236>) [p1, p0, p12, p235, p181, p179, p2, p3, p22, p4, p5, p6, p7, i8] +i238 = getfield_gc(p12, descr=<NonGcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_profilefunc 40>) +setfield_gc(p181, ConstPtr(ptr239), descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_last_exception 88>) +i240 = int_is_true(i238) +guard_false(i240, descr=<Guard237>) [p1, p0, p235, p181, p12, p179, p2, p3, p22, p4, p5, p6, p7, i8] +p241 = getfield_gc(p181, descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_f_backref 48>) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #64 STORE_FAST', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #67 LOAD_FAST', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #70 LOAD_CONST', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #73 INPLACE_ADD', 0) +i243 = int_add(i8, 1) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #74 STORE_FAST', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #77 JUMP_ABSOLUTE', 0) +i245 = getfield_raw(38968960, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i247 = int_sub(i245, 100) +setfield_raw(38968960, i247, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +setfield_gc(p12, p241, descr=<GcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 56>) +setfield_gc(p179, p181, descr=<GcPtrFieldDescr JitVirtualRef.forced 16>) +setfield_gc(p179, -3, descr=<SignedFieldDescr JitVirtualRef.virtual_token 8>) +i250 = int_lt(i247, 0) +guard_false(i250, descr=<Guard238>) [p1, p0, p2, p3, p4, p5, p6, p235, i243, None] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #21 LOAD_FAST', 0) +jump(p0, p1, p2, p3, p4, p5, p6, p235, i243, f9, i10, i238, p12, p241, descr=<Loop2>) +[5ed74fc965fa] jit-log-opt-loop} +[5ed74fe43ee0] {jit-log-opt-loop +# Loop 3 : entry bridge with 413 ops +[p0, p1, p2, p3, i4, p5, i6, i7, p8, p9, p10, p11, p12, p13, p14] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #21 LOAD_FAST', 0) +guard_value(i4, 0, descr=<Guard239>) [i4, p1, p0, p2, p3, p5, i6, i7, p8, p9, p10, p11, p12, p13, p14] +guard_nonnull_class(p13, 19800744, descr=<Guard240>) [p1, p0, p13, p2, p3, p5, i6, p8, p9, p10, p11, p12, p14] +guard_value(i6, 0, descr=<Guard241>) [i6, p1, p0, p2, p3, p5, p13, p9, p10, p11, p12, p14] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #24 LOAD_FAST', 0) +guard_nonnull_class(p12, 19800744, descr=<Guard242>) [p1, p0, p12, p2, p3, p5, p13, p9, p10, p11, p14] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #27 COMPARE_OP', 0) +f19 = getfield_gc_pure(p13, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f20 = getfield_gc_pure(p12, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +i21 = float_gt(f19, f20) +guard_true(i21, descr=<Guard243>) [p1, p0, p12, p13, p2, p3, p5, p10, p11, p14] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #30 POP_JUMP_IF_FALSE', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #33 LOAD_FAST', 0) +guard_nonnull_class(p11, ConstClass(W_IntObject), descr=<Guard244>) [p1, p0, p11, p2, p3, p5, p10, p12, p13, p14] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #36 POP_JUMP_IF_FALSE', 0) +i23 = getfield_gc_pure(p11, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i24 = int_is_true(i23) +guard_true(i24, descr=<Guard245>) [p1, p0, p11, p2, p3, p5, p10, p12, p13, p14] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #39 LOAD_FAST', 0) +guard_nonnull_class(p14, ConstClass(W_IntObject), descr=<Guard246>) [p1, p0, p14, p2, p3, p5, p10, p11, p12, p13] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #42 LOAD_FAST', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #45 COMPARE_OP', 0) +i26 = getfield_gc_pure(p14, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i27 = int_ge(i26, i23) +guard_false(i27, descr=<Guard247>) [p1, p0, p11, p14, p2, p3, p5, p10, p12, p13] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #48 POP_JUMP_IF_FALSE', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #55 LOAD_GLOBAL', 0) +guard_value(p2, ConstPtr(ptr28), descr=<Guard248>) [p1, p0, p2, p3, p5, p10, p11, p12, p13, p14] +p29 = getfield_gc(p0, descr=<GcPtrFieldDescr pypy.interpreter.eval.Frame.inst_w_globals 8>) +guard_value(p29, ConstPtr(ptr30), descr=<Guard249>) [p1, p0, p29, p3, p5, p10, p11, p12, p13, p14] +p31 = getfield_gc(p29, descr=<GcPtrFieldDescr pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_r_dict_content 8>) +guard_isnull(p31, descr=<Guard250>) [p1, p0, p31, p29, p3, p5, p10, p11, p12, p13, p14] +p33 = getfield_gc(ConstPtr(ptr32), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_nonnull_class(p33, ConstClass(Function), descr=<Guard251>) [p1, p0, p33, p3, p5, p10, p11, p12, p13, p14] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #58 LOAD_FAST', 0) +guard_nonnull_class(p10, 19852624, descr=<Guard252>) [p1, p0, p10, p3, p5, p33, p11, p12, p13, p14] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #61 CALL_FUNCTION', 0) +p36 = getfield_gc(p33, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_code 24>) +guard_value(p36, ConstPtr(ptr37), descr=<Guard253>) [p1, p0, p36, p33, p3, p5, p10, p11, p12, p13, p14] +p38 = getfield_gc(p33, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_w_func_globals 64>) +p39 = getfield_gc(p33, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_closure 16>) +p41 = call(ConstClass(getexecutioncontext), descr=<GcPtrCallDescr>) +p42 = getfield_gc(p41, descr=<GcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 56>) +i43 = force_token() +p44 = getfield_gc(p41, descr=<GcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_w_tracefunc 72>) +guard_isnull(p44, descr=<Guard254>) [p1, p0, p41, p44, p3, p5, p33, p10, p11, p12, p13, p14, i43, p42, p38] +i45 = getfield_gc(p41, descr=<NonGcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_profilefunc 40>) +i46 = int_is_zero(i45) +guard_true(i46, descr=<Guard255>) [p1, p0, p41, p3, p5, p33, p10, p11, p12, p13, p14, i43, p42, p38] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #0 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #3 LOAD_ATTR', 1) +p47 = getfield_gc(p10, descr=<GcPtrFieldDescr pypy.objspace.std.mapdict.W_ObjectObjectSize5.inst_map 48>) +guard_value(p47, ConstPtr(ptr48), descr=<Guard256>) [p1, p0, p41, p10, p47, p3, p5, p33, p11, p12, p13, p14, i43, p42, p38] +p50 = getfield_gc(ConstPtr(ptr49), descr=<GcPtrFieldDescr pypy.objspace.std.typeobject.W_TypeObject.inst__version_tag 16>) +guard_value(p50, ConstPtr(ptr51), descr=<Guard257>) [p1, p0, p41, p10, p50, p3, p5, p33, p11, p12, p13, p14, i43, p42, p38] +p52 = getfield_gc(p10, descr=<GcPtrFieldDescr pypy.objspace.std.mapdict.W_ObjectObjectSize5.inst__value2 24>) +guard_nonnull_class(p52, 19800744, descr=<Guard258>) [p1, p0, p41, p52, p10, p3, p5, p33, p11, p12, p13, p14, i43, p42, p38] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #6 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #9 LOAD_ATTR', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #12 BINARY_MULTIPLY', 1) +f54 = getfield_gc_pure(p52, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f55 = float_mul(f54, f54) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #13 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #16 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #19 LOAD_ATTR', 1) +p56 = getfield_gc(p10, descr=<GcPtrFieldDescr pypy.objspace.std.mapdict.W_ObjectObjectSize5.inst__value3 32>) +guard_nonnull_class(p56, 19800744, descr=<Guard259>) [p1, p0, p41, p56, p10, p3, p5, p33, p11, p12, p13, p14, f55, i43, p42, p38] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #22 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #25 LOAD_ATTR', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #28 BINARY_MULTIPLY', 1) +f58 = getfield_gc_pure(p56, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +f59 = float_mul(f58, f58) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #29 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #32 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #35 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #38 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #41 BINARY_ADD', 1) +f60 = float_add(f55, f59) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #42 BINARY_DIVIDE', 1) +i62 = float_eq(f60, 0.000000) +guard_false(i62, descr=<Guard260>) [p1, p0, p41, f60, p3, p5, p33, p10, p11, p12, p13, p14, f59, f55, i43, p42, p38] +f64 = float_truediv(0.500000, f60) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #43 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #46 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #49 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #52 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #55 LOAD_ATTR', 1) +p65 = getfield_gc(p10, descr=<GcPtrFieldDescr pypy.objspace.std.mapdict.W_ObjectObjectSize5.inst__value0 8>) +guard_nonnull_class(p65, ConstClass(W_IntObject), descr=<Guard261>) [p1, p0, p41, p65, p10, p3, p5, p33, p11, p12, p13, p14, f64, f59, f55, i43, p42, p38] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #58 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #61 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #64 LOAD_ATTR', 1) +p67 = getfield_gc(p10, descr=<GcPtrFieldDescr pypy.objspace.std.mapdict.W_ObjectObjectSize5.inst__value1 16>) +guard_nonnull_class(p67, ConstClass(W_IntObject), descr=<Guard262>) [p1, p0, p41, p67, p10, p3, p5, p33, p11, p12, p13, p14, p65, f64, f59, f55, i43, p42, p38] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #67 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #70 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #73 LOAD_ATTR', 1) +p69 = getfield_gc(p10, descr=<GcPtrFieldDescr pypy.objspace.std.mapdict.W_ObjectObjectSize5.inst__value4 40>) +guard_nonnull_class(p69, 19886912, descr=<Guard263>) [p1, p0, p41, p69, p10, p3, p5, p33, p11, p12, p13, p14, p67, p65, f64, f59, f55, i43, p42, p38] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #76 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #79 SETUP_LOOP', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #82 LOAD_GLOBAL', 1) +guard_value(p38, ConstPtr(ptr71), descr=<Guard264>) [p1, p0, p41, p38, p3, p5, p33, p10, p11, p12, p13, p14, p69, p67, p65, f64, f59, f55, i43, p42, None] +p73 = getfield_gc(p38, descr=<GcPtrFieldDescr pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_r_dict_content 8>) +guard_isnull(p73, descr=<Guard265>) [p1, p0, p41, p73, p38, p3, p5, p33, p10, p11, p12, p13, p14, p69, p67, p65, f64, f59, f55, i43, p42, None] +p75 = getfield_gc(ConstPtr(ptr74), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_isnull(p75, descr=<Guard266>) [p1, p0, p41, p75, p3, p5, p33, p10, p11, p12, p13, p14, p69, p67, p65, f64, f59, f55, i43, p42, None] +p77 = getfield_gc(ConstPtr(ptr76), descr=<GcPtrFieldDescr pypy.interpreter.module.Module.inst_w_dict 8>) +guard_value(p77, ConstPtr(ptr78), descr=<Guard267>) [p1, p0, p41, p77, p3, p5, p33, p10, p11, p12, p13, p14, p69, p67, p65, f64, f59, f55, i43, p42, None] +p79 = getfield_gc(p77, descr=<GcPtrFieldDescr pypy.objspace.std.dictmultiobject.W_DictMultiObject.inst_r_dict_content 8>) +guard_isnull(p79, descr=<Guard268>) [p1, p0, p41, p79, p77, p3, p5, p33, p10, p11, p12, p13, p14, p69, p67, p65, f64, f59, f55, i43, p42, None] +p81 = getfield_gc(ConstPtr(ptr80), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_value(p81, ConstPtr(ptr82), descr=<Guard269>) [p1, p0, p41, p81, p3, p5, p33, p10, p11, p12, p13, p14, p69, p67, p65, f64, f59, f55, i43, p42, None] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #85 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #88 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #91 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #94 BINARY_SUBTRACT', 1) +i83 = getfield_gc_pure(p65, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i85 = int_sub_ovf(i83, 1) +guard_no_overflow(, descr=<Guard270>) [p1, p0, p41, p65, i85, p3, p5, p33, p10, p11, p12, p13, p14, p81, p69, p67, None, f64, f59, f55, i43, p42, None] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #95 CALL_FUNCTION', 1) +p87 = getfield_gc(ConstPtr(ptr86), descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_name 40>) +p88 = getfield_gc(ConstPtr(ptr86), descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_defs 32>) +i89 = getfield_gc_pure(p88, descr=<BoolFieldDescr pypy.interpreter.function.Defaults.inst_promote 16>) +guard_false(i89, descr=<Guard271>) [p1, p0, p41, p87, p88, p3, p5, p33, p10, p11, p12, p13, p14, i85, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +p90 = getfield_gc_pure(p88, descr=<GcPtrFieldDescr pypy.interpreter.function.Defaults.inst_items 8>) +i91 = arraylen_gc(p90, descr=<GcPtrArrayDescr>) +i93 = int_sub(4, i91) +i95 = int_ge(3, i93) +guard_true(i95, descr=<Guard272>) [p1, p0, p41, p87, i93, p88, p3, p5, p33, p10, p11, p12, p13, p14, i85, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +i96 = int_sub(3, i93) +i97 = getfield_gc_pure(p88, descr=<BoolFieldDescr pypy.interpreter.function.Defaults.inst_promote 16>) +guard_false(i97, descr=<Guard273>) [p1, p0, p41, p87, i96, i93, p88, p3, p5, p33, p10, p11, p12, p13, p14, i85, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +p98 = getfield_gc_pure(p88, descr=<GcPtrFieldDescr pypy.interpreter.function.Defaults.inst_items 8>) +p99 = getarrayitem_gc(p98, i96, descr=<GcPtrArrayDescr>) +guard_class(p99, ConstClass(W_IntObject), descr=<Guard274>) [p1, p0, p41, p99, p3, p5, p33, p10, p11, p12, p13, p14, i85, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +i101 = getfield_gc_pure(p99, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i102 = int_is_zero(i101) +guard_false(i102, descr=<Guard275>) [p1, p0, p41, i101, i85, p3, p5, p33, p10, p11, p12, p13, p14, p99, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +i104 = int_lt(i101, 0) +guard_false(i104, descr=<Guard276>) [p1, p0, p41, i101, i85, p3, p5, p33, p10, p11, p12, p13, p14, p99, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +i106 = int_lt(1, i85) +guard_true(i106, descr=<Guard277>) [p1, p0, p41, i101, i85, p3, p5, p33, p10, p11, p12, p13, p14, p99, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +i107 = int_sub(i85, 1) +i109 = int_sub(i107, 1) +i110 = uint_floordiv(i109, i101) +i112 = int_add(i110, 1) +i114 = int_lt(i112, 0) +guard_false(i114, descr=<Guard278>) [p1, p0, p41, i101, i112, p3, p5, p33, p10, p11, p12, p13, p14, p99, i85, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #98 GET_ITER', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #99 FOR_ITER', 1) +i116 = int_gt(i112, 0) +guard_true(i116, descr=<Guard279>) [p1, p0, p41, p3, p5, p33, p10, p11, p12, p13, p14, i112, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +i117 = int_add(1, i101) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #102 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #105 SETUP_LOOP', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #108 LOAD_GLOBAL', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #111 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #114 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #117 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #120 BINARY_SUBTRACT', 1) +i118 = getfield_gc_pure(p67, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i120 = int_sub_ovf(i118, 1) +guard_no_overflow(, descr=<Guard280>) [p1, p0, p41, p67, i120, p3, p5, p33, p10, p11, p12, p13, p14, i110, i117, None, i101, None, None, None, p69, None, p65, f64, f59, f55, i43, p42, None] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #121 CALL_FUNCTION', 1) +i121 = getfield_gc_pure(p88, descr=<BoolFieldDescr pypy.interpreter.function.Defaults.inst_promote 16>) +guard_false(i121, descr=<Guard281>) [p1, p0, p41, p87, p88, p3, p5, p33, p10, p11, p12, p13, p14, i120, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +p122 = getfield_gc_pure(p88, descr=<GcPtrFieldDescr pypy.interpreter.function.Defaults.inst_items 8>) +i123 = arraylen_gc(p122, descr=<GcPtrArrayDescr>) +i125 = int_sub(4, i123) +i127 = int_ge(3, i125) +guard_true(i127, descr=<Guard282>) [p1, p0, p41, p87, i125, p88, p3, p5, p33, p10, p11, p12, p13, p14, i120, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +i128 = int_sub(3, i125) +i129 = getfield_gc_pure(p88, descr=<BoolFieldDescr pypy.interpreter.function.Defaults.inst_promote 16>) +guard_false(i129, descr=<Guard283>) [p1, p0, p41, p87, i128, i125, p88, p3, p5, p33, p10, p11, p12, p13, p14, i120, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +p130 = getfield_gc_pure(p88, descr=<GcPtrFieldDescr pypy.interpreter.function.Defaults.inst_items 8>) +p131 = getarrayitem_gc(p130, i128, descr=<GcPtrArrayDescr>) +guard_class(p131, ConstClass(W_IntObject), descr=<Guard284>) [p1, p0, p41, p131, p3, p5, p33, p10, p11, p12, p13, p14, i120, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +i133 = getfield_gc_pure(p131, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +i134 = int_is_zero(i133) +guard_false(i134, descr=<Guard285>) [p1, p0, p41, i133, i120, p3, p5, p33, p10, p11, p12, p13, p14, p131, None, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +i136 = int_lt(i133, 0) +guard_false(i136, descr=<Guard286>) [p1, p0, p41, i133, i120, p3, p5, p33, p10, p11, p12, p13, p14, p131, None, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +i138 = int_lt(1, i120) +guard_true(i138, descr=<Guard287>) [p1, p0, p41, i133, i120, p3, p5, p33, p10, p11, p12, p13, p14, p131, None, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +i139 = int_sub(i120, 1) +i141 = int_sub(i139, 1) +i142 = uint_floordiv(i141, i133) +i144 = int_add(i142, 1) +i146 = int_lt(i144, 0) +guard_false(i146, descr=<Guard288>) [p1, p0, p41, i133, i144, p3, p5, p33, p10, p11, p12, p13, p14, p131, i120, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #124 GET_ITER', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 1) +i148 = int_gt(i144, 0) +guard_true(i148, descr=<Guard289>) [p1, p0, p41, p3, p5, p33, p10, p11, p12, p13, p14, i144, i133, None, None, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +i149 = int_add(1, i133) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #128 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #131 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #134 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #137 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #140 BINARY_MULTIPLY', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #141 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #144 BINARY_ADD', 1) +i150 = int_add_ovf(i83, 1) +guard_no_overflow(, descr=<Guard290>) [p1, p0, p41, i150, p3, p5, p33, p10, p11, p12, p13, p14, i83, i149, i142, None, i133, None, None, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #145 BINARY_SUBSCR', 1) +i151 = getfield_gc(p69, descr=<SignedFieldDescr pypy.module.array.interp_array.W_ArrayTyped.inst_len 32>) +i152 = int_lt(i150, i151) +guard_true(i152, descr=<Guard291>) [p1, p0, p41, p69, i150, p3, p5, p33, p10, p11, p12, p13, p14, None, i149, i142, None, i133, None, None, i110, i117, None, i101, None, None, None, None, p67, p65, f64, f59, f55, i43, p42, None] +i153 = getfield_gc(p69, descr=<NonGcPtrFieldDescr pypy.module.array.interp_array.W_ArrayTyped.inst_buffer 24>) +f154 = getarrayitem_raw(i153, i150, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #146 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #149 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #152 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #155 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #158 BINARY_SUBTRACT', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #159 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #162 BINARY_MULTIPLY', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #163 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #166 BINARY_ADD', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #167 BINARY_SUBSCR', 1) +f155 = getarrayitem_raw(i153, 1, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #168 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #171 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #174 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #177 BINARY_ADD', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #178 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #181 BINARY_MULTIPLY', 1) +i157 = int_mul_ovf(2, i83) +guard_no_overflow(, descr=<Guard292>) [p1, p0, p41, p65, i157, p3, p5, p33, p10, p11, p12, p13, p14, f154, f155, None, i149, i142, None, i133, None, None, i110, i117, None, i101, None, None, None, p69, p67, None, f64, f59, f55, i43, p42, None] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #182 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #185 BINARY_ADD', 1) +i158 = int_add_ovf(i157, 1) +guard_no_overflow(, descr=<Guard293>) [p1, p0, p41, i158, p3, p5, p33, p10, p11, p12, p13, p14, i157, f154, f155, None, i149, i142, None, i133, None, None, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #186 BINARY_SUBSCR', 1) +i160 = int_lt(i158, 0) +guard_false(i160, descr=<Guard294>) [p1, p0, p41, p69, i158, i151, p3, p5, p33, p10, p11, p12, p13, p14, None, f154, f155, None, i149, i142, None, i133, None, None, i110, i117, None, i101, None, None, None, None, p67, p65, f64, f59, f55, i43, p42, None] +i161 = int_lt(i158, i151) +guard_true(i161, descr=<Guard295>) [p1, p0, p41, p69, i158, p3, p5, p33, p10, p11, p12, p13, p14, None, f154, f155, None, i149, i142, None, i133, None, None, i110, i117, None, i101, None, None, None, None, p67, p65, f64, f59, f55, i43, p42, None] +f162 = getarrayitem_raw(i153, i158, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #187 BINARY_ADD', 1) +f163 = float_add(f155, f162) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #188 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #191 BINARY_MULTIPLY', 1) +f164 = float_mul(f163, f59) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #192 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #195 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #198 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #201 BINARY_MULTIPLY', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #202 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #205 BINARY_ADD', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #206 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #209 BINARY_SUBTRACT', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #210 BINARY_SUBSCR', 1) +i165 = int_lt(i83, i151) +guard_true(i165, descr=<Guard296>) [p1, p0, p41, p69, i83, p3, p5, p33, p10, p11, p12, p13, p14, f164, None, f154, None, None, i149, i142, None, i133, None, None, i110, i117, None, i101, None, None, None, None, p67, p65, f64, f59, f55, i43, p42, None] +f166 = getarrayitem_raw(i153, i83, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #211 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #214 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #217 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #220 BINARY_MULTIPLY', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #221 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #224 BINARY_ADD', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #225 LOAD_CONST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #228 BINARY_ADD', 1) +i168 = int_add(i150, 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #229 BINARY_SUBSCR', 1) +i169 = int_lt(i168, i151) +guard_true(i169, descr=<Guard297>) [p1, p0, p41, p69, i168, p3, p5, p33, p10, p11, p12, p13, p14, f166, f164, None, f154, None, None, i149, i142, None, i133, None, None, i110, i117, None, i101, None, None, None, None, p67, p65, f64, f59, f55, i43, p42, None] +f170 = getarrayitem_raw(i153, i168, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #230 BINARY_ADD', 1) +f171 = float_add(f166, f170) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #231 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #234 BINARY_MULTIPLY', 1) +f172 = float_mul(f171, f55) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #235 BINARY_ADD', 1) +f173 = float_add(f164, f172) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #236 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #239 BINARY_MULTIPLY', 1) +f174 = float_mul(f173, f64) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #240 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #243 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #246 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #249 BINARY_MULTIPLY', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #250 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #253 BINARY_ADD', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #254 STORE_SUBSCR', 1) +setarrayitem_raw(i153, i150, f174, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #255 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #258 LOAD_GLOBAL', 1) +p176 = getfield_gc(ConstPtr(ptr175), descr=<GcPtrFieldDescr pypy.objspace.std.celldict.ModuleCell.inst_w_value 8>) +guard_nonnull_class(p176, ConstClass(Function), descr=<Guard298>) [p1, p0, p41, p176, p3, p5, p33, p10, p11, p12, p13, p14, None, None, None, f154, None, None, i149, i142, None, i133, None, None, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #261 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #264 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #267 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #270 BINARY_MULTIPLY', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #271 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #274 BINARY_ADD', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #275 BINARY_SUBSCR', 1) +f178 = getarrayitem_raw(i153, i150, descr=<FloatArrayNoLengthDescr>) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #276 LOAD_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #279 BINARY_SUBTRACT', 1) +f179 = float_sub(f178, f154) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #280 CALL_FUNCTION', 1) +p180 = getfield_gc(p176, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_code 24>) +guard_value(p180, ConstPtr(ptr181), descr=<Guard299>) [p1, p0, p41, p180, p176, p3, p5, p33, p10, p11, p12, p13, p14, f179, None, None, None, f154, None, None, i149, i142, None, i133, None, None, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +p182 = getfield_gc(p176, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_w_func_globals 64>) +p183 = getfield_gc(p176, descr=<GcPtrFieldDescr pypy.interpreter.function.Function.inst_closure 16>) +i184 = force_token() +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #0 LOAD_FAST', 2) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #3 LOAD_FAST', 2) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #6 BINARY_MULTIPLY', 2) +f185 = float_mul(f179, f179) +debug_merge_point('<code object sqr, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 7> #7 RETURN_VALUE', 2) +i186 = int_is_true(i45) +guard_false(i186, descr=<Guard300>) [p1, p0, p41, p3, p5, p33, p10, p11, p12, p13, p14, p182, i184, p176, f185, f179, None, None, None, f154, None, None, i149, i142, None, i133, None, None, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #283 INPLACE_ADD', 1) +f188 = float_add(0.000000, f185) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #284 STORE_FAST', 1) +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #287 JUMP_ABSOLUTE', 1) +i190 = getfield_raw(38968960, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i192 = int_sub(i190, 100) +setfield_raw(38968960, i192, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i194 = int_lt(i192, 0) +guard_false(i194, descr=<Guard301>) [p1, p0, p41, p3, p5, p33, p10, p11, p12, p13, p14, f188, None, None, None, None, None, None, None, None, f154, None, None, i149, i142, None, i133, None, None, i110, i117, None, i101, None, None, None, p69, p67, p65, f64, f59, f55, i43, p42, None] +debug_merge_point('<code object time_step, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 34> #125 FOR_ITER', 1) +i195 = force_token() +p197 = new_with_vtable(19809200) +setfield_gc(p197, i43, descr=<SignedFieldDescr JitVirtualRef.virtual_token 8>) +setfield_gc(p41, p197, descr=<GcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 56>) +setfield_gc(p0, i195, descr=<SignedFieldDescr pypy.interpreter.pyframe.PyFrame.vable_token 24>) +p199 = new_with_vtable(19863424) +setfield_gc(p199, p42, descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_f_backref 48>) +setfield_gc(p199, ConstPtr(ptr71), descr=<GcPtrFieldDescr pypy.interpreter.eval.Frame.inst_w_globals 8>) +setfield_gc(p199, 34, descr=<INTFieldDescr pypy.interpreter.pyframe.PyFrame.inst_f_lineno 144>) +setfield_gc(p199, ConstPtr(ptr37), descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_pycode 112>) +p202 = new_array(8, descr=<GcPtrArrayDescr>) +p204 = new_with_vtable(19861240) +setfield_gc(p204, i117, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_current 8>) +setfield_gc(p204, i110, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_remaining 16>) +setfield_gc(p204, i101, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_step 24>) +setarrayitem_gc(p202, 0, p204, descr=<GcPtrArrayDescr>) +p207 = new_with_vtable(19861240) +setfield_gc(p207, i149, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_current 8>) +setfield_gc(p207, i142, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_remaining 16>) +setfield_gc(p207, i133, descr=<SignedFieldDescr pypy.module.__builtin__.functional.W_XRangeIterator.inst_step 24>) +setarrayitem_gc(p202, 1, p207, descr=<GcPtrArrayDescr>) +setfield_gc(p199, p202, descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_valuestack_w 120>) +setfield_gc(p199, 125, descr=<SignedFieldDescr pypy.interpreter.pyframe.PyFrame.inst_last_instr 96>) +p211 = new_with_vtable(19865144) +setfield_gc(p211, 291, descr=<UnsignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_handlerposition 8>) +setfield_gc(p211, 1, descr=<SignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_valuestackdepth 24>) +p215 = new_with_vtable(19865144) +setfield_gc(p215, 295, descr=<UnsignedFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_handlerposition 8>) +setfield_gc(p211, p215, descr=<GcPtrFieldDescr pypy.interpreter.pyopcode.FrameBlock.inst_previous 16>) +setfield_gc(p199, p211, descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_lastblock 104>) +p218 = new_array(11, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p218, 0, p10, descr=<GcPtrArrayDescr>) +p221 = new_with_vtable(19800744) +setfield_gc(p221, f55, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +setarrayitem_gc(p218, 1, p221, descr=<GcPtrArrayDescr>) +p224 = new_with_vtable(19800744) +setfield_gc(p224, f59, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +setarrayitem_gc(p218, 2, p224, descr=<GcPtrArrayDescr>) +p227 = new_with_vtable(19800744) +setfield_gc(p227, f64, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +setarrayitem_gc(p218, 3, p227, descr=<GcPtrArrayDescr>) +p230 = new_with_vtable(19800744) +setfield_gc(p230, f188, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +setarrayitem_gc(p218, 4, p230, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p218, 5, p65, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p218, 6, p67, descr=<GcPtrArrayDescr>) +setarrayitem_gc(p218, 7, p69, descr=<GcPtrArrayDescr>) +p236 = new_with_vtable(ConstClass(W_IntObject)) +setfield_gc(p236, 1, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +setarrayitem_gc(p218, 8, p236, descr=<GcPtrArrayDescr>) +p239 = new_with_vtable(ConstClass(W_IntObject)) +setfield_gc(p239, 1, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>) +setarrayitem_gc(p218, 9, p239, descr=<GcPtrArrayDescr>) +p242 = new_with_vtable(19800744) +setfield_gc(p242, f154, descr=<FloatFieldDescr pypy.objspace.std.floatobject.W_FloatObject.inst_floatval 8>) +setarrayitem_gc(p218, 10, p242, descr=<GcPtrArrayDescr>) +setfield_gc(p199, p218, descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_fastlocals_w 56>) +setfield_gc(p199, 2, descr=<SignedFieldDescr pypy.interpreter.pyframe.PyFrame.inst_valuestackdepth 128>) +p253 = call_assembler(p199, p41, ConstPtr(ptr37), p211, 2, ConstPtr(ptr245), 0, 125, p204, p207, ConstPtr(ptr247), ConstPtr(ptr248), ConstPtr(ptr249), ConstPtr(ptr250), ConstPtr(ptr251), ConstPtr(ptr252), p10, p221, p224, p227, p230, p65, p67, p69, p236, p239, p242, descr=<Loop1>) +guard_not_forced(, descr=<Guard302>) [p1, p0, p41, p199, p253, p197, p3, p5, p33, p10, p11, p12, p13, p14] +guard_no_exception(, descr=<Guard303>) [p1, p0, p41, p199, p253, p197, p3, p5, p33, p10, p11, p12, p13, p14] +p254 = getfield_gc(p41, descr=<GcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_w_tracefunc 72>) +guard_isnull(p254, descr=<Guard304>) [p1, p0, p41, p253, p199, p254, p197, p3, p5, p33, p10, p11, p12, p13, p14] +i255 = ptr_eq(p199, p0) +guard_false(i255, descr=<Guard305>) [p1, p0, p41, p253, p199, p197, p3, p5, p33, p10, p11, p12, p13, p14] +i256 = getfield_gc(p41, descr=<NonGcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_profilefunc 40>) +setfield_gc(p199, ConstPtr(ptr257), descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_last_exception 88>) +i258 = int_is_true(i256) +guard_false(i258, descr=<Guard306>) [p1, p0, p253, p199, p41, p197, p3, p5, p33, p10, p11, p12, p13, p14] +p259 = getfield_gc(p199, descr=<GcPtrFieldDescr pypy.interpreter.pyframe.PyFrame.inst_f_backref 48>) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #64 STORE_FAST', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #67 LOAD_FAST', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #70 LOAD_CONST', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #73 INPLACE_ADD', 0) +i261 = int_add(i26, 1) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #74 STORE_FAST', 0) +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #77 JUMP_ABSOLUTE', 0) +i263 = getfield_raw(38968960, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +i265 = int_sub(i263, 100) +setfield_raw(38968960, i265, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>) +setfield_gc(p41, p259, descr=<GcPtrFieldDescr pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 56>) +setfield_gc(p197, p199, descr=<GcPtrFieldDescr JitVirtualRef.forced 16>) +setfield_gc(p197, -3, descr=<SignedFieldDescr JitVirtualRef.virtual_token 8>) +i268 = int_lt(i265, 0) +guard_false(i268, descr=<Guard307>) [p1, p0, p3, p5, p10, p11, p12, p253, i261] +debug_merge_point('<code object laplace_solve, file '/home/alex/projects/hack/benchmarks/laplace/laplace.py', line 52> #21 LOAD_FAST', 0) +jump(p0, p1, p3, p5, p10, p11, p12, p253, i261, f20, i23, i256, p41, p259, descr=<Loop2>) +[5ed74ff695c8] jit-log-opt-loop} +[5ed8737e9776] {jit-backend-counts +0:493724565 +1:2281802 +2:1283242 +3:993105 +4:2933 +5:2163 +6:2492 +7:1799 +8:963 +9:36 +[5ed8737ee19c] jit-backend-counts} diff --git a/tests/examplefiles/test.rb b/tests/examplefiles/test.rb index 1f609e32..8ac102e6 100644 --- a/tests/examplefiles/test.rb +++ b/tests/examplefiles/test.rb @@ -10,6 +10,9 @@ while x<10000 g=%w{} x=0 +#leere regex +test //, 123 + while x<100 puts"#{g[x]}" x+=1 diff --git a/tests/test_basic_api.py b/tests/test_basic_api.py index 77c0aaea..794e124d 100644 --- a/tests/test_basic_api.py +++ b/tests/test_basic_api.py @@ -42,6 +42,8 @@ def test_lexer_classes(): "%s: %s attribute wrong" % (cls, attr) result = cls.analyse_text("abc") assert isinstance(result, float) and 0.0 <= result <= 1.0 + result = cls.analyse_text(".abc") + assert isinstance(result, float) and 0.0 <= result <= 1.0 inst = cls(opt1="val1", opt2="val2") if issubclass(cls, RegexLexer): @@ -55,6 +57,9 @@ def test_lexer_classes(): assert 'root' in cls._tokens, \ '%s has no root state' % cls + if cls.name == 'XQuery': # XXX temporary + return + tokens = list(inst.get_tokens(test_content)) txt = "" for token in tokens: @@ -115,6 +120,15 @@ def test_get_lexers(): ]: yield verify, func, args + for cls, (_, lname, aliases, _, mimetypes) in lexers.LEXERS.iteritems(): + assert cls == lexers.find_lexer_class(lname).__name__ + + for alias in aliases: + assert cls == lexers.get_lexer_by_name(alias).__class__.__name__ + + for mimetype in mimetypes: + assert cls == lexers.get_lexer_for_mimetype(mimetype).__class__.__name__ + def test_formatter_public_api(): ts = list(lexers.PythonLexer().get_tokens("def f(): pass")) diff --git a/tests/test_examplefiles.py b/tests/test_examplefiles.py index 877cbecf..5c5e22eb 100644 --- a/tests/test_examplefiles.py +++ b/tests/test_examplefiles.py @@ -64,6 +64,8 @@ def check_lexer(lx, absfn, outfn): (lx, absfn) tokens.append((type, val)) if u''.join(ntext) != text: + print '\n'.join(difflib.unified_diff(u''.join(ntext).splitlines(), + text.splitlines())) raise AssertionError('round trip failed for ' + absfn) # check output against previous run if enabled |