<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in cursor.rs</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>3d4bd054 - Cranelift: Split out computation of where to move a cursor from actually updating its position (#11464)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#3d4bd054</link>
        <description>Cranelift: Split out computation of where to move a cursor from actually updating its position (#11464)This allows users to query what the next/prev position in their traversal wouldbe without actually changing the cursor&apos;s current location. Otherwise, theywould have to do something like```rustcursor.next_block();let next_pos = cursor.current_position();cursor.prev_block();```These new methods aren&apos;t used anywhere yet, other than the implementation of thecursor-position-updating methods they were split out from, but it seems usefulto expose. I almost needed it for some inlining stuff, but ultimately took aslightly different approach.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Wed, 20 Aug 2025 22:11:34 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>7bf31723 - Cranelift: simplify some side-effectful instructions in ISLE (#10524)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#7bf31723</link>
        <description>Cranelift: simplify some side-effectful instructions in ISLE (#10524)* Cranelift: simplify some side-effectful instructions in ISLEThis commit adds a new top-level ISLE entrypoint specifically for instructionsin the side-effectful skeleton: `simplify_skeleton`. While these rewrites areprocessed during the egraph pass, values from skeleton instructions still do notget inserted into the egraph. Indeed, `simplify_skeleton` operateson *instructions* rather than *values* because we do not represent side effectsas values; values do not have side effects in CLIF, instructions do. Therefore,rather than doing a whole dynamic-programming style extraction of the bestcandidate simplification like we do with the egraph, we take an eager and greedyapproach.Furthermore, `simplify_skeleton` is limited only to skeleton instructions thatdo not involve control-flow or terminators right now. This is because changingthe control-flow graph can change whether a use is dominated by a def or not,and we do not currently have the machinery to track and fix up invalidateduses. Addressing this is left for future commits.* fix `MIN / -1` cprop and add negative tests for things simplify_skeleton cannot handle yet

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Tue, 08 Apr 2025 17:57:03 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>868f0c38 - Wasmtime: Add support for Wasm tail calls (#6774)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#868f0c38</link>
        <description>Wasmtime: Add support for Wasm tail calls (#6774)* Wasmtime: Add support for Wasm tail callsThis adds the `Config::wasm_tail_call` method and `--wasm-features tail-call`CLI flag to enable the Wasm tail calls proposal in Wasmtime.This PR is mostly just plumbing and enabling tests, since all the prerequisitework (Wasmtime trampoline overhauls and Cranelift tail calls) was completed inearlier pull requests.When Wasm tail calls are enabled, Wasm code uses the `tail` callingconvention. The `tail` calling convention is known to cause a 1-7% slow down forregular code that isn&apos;t using tail calls, which is why it isn&apos;t usedunconditionally. This involved shepherding `Tunables` through to Wasm signatureconstruction methods. The eventual plan is for the `tail` calling convention tobe used unconditionally, but not until the performance regression isaddressed. This work is tracked inhttps://github.com/bytecodealliance/wasmtime/issues/6759Additionally while our x86-64, aarch64, and riscv64 backends support tail calls,the s390x backend does not support them yet. Attempts to use tail calls on s390xwill return errors. Support for s390x is tracked inhttps://github.com/bytecodealliance/wasmtime/issues/6530* Store `Tunables` inside the `Compiler`Instead of passing as an argument to every `Compiler` method.* Cranelift: Support &quot;direct&quot; return calls on riscv64They still use `jalr` instead of `jal` but this allows us to use the `RiscvCall`reloc, which Wasmtime handles. Before we were using `LoadExternalName` whichproduces an `Abs8` reloc, which Wasmtime intentionally does not handle sincethat involves patching code at runtime, which makes loading code slower.* Fix tests that assume tail call support on s390x

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Thu, 27 Jul 2023 21:33:11 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>f2393b8f - Removes debug assertion that was related to issue 796 (#6175)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#f2393b8f</link>
        <description>Removes debug assertion that was related to issue 796 (#6175)* fix typo: behaviour -&gt; behavior* remove debug assertion since 796 has been merged* Update data_value.rs

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Tue, 11 Apr 2023 16:52:11 +0000</pubDate>
        <dc:creator>kevaundray &lt;kevtheappdev@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>25bf8e0e - Make DataFlowGraph::insts public, but restricted (#5450)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#25bf8e0e</link>
        <description>Make DataFlowGraph::insts public, but restricted (#5450)We have some operations defined on DataFlowGraph purely to work around borrow-checker issues with InstructionData and other data on DataFlowGraph. Part of the problem is that indexing the DFG directly hides the fact that we&apos;re only indexing the insts field of the DFG.This PR makes the insts field of the DFG public, but wraps it in a newtype that only allows indexing. This means that the borrow checker is better able to tell when operations on memory held by the DFG won&apos;t conflict, which comes up frequently when mutating ValueLists held by InstructionData.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Fri, 16 Dec 2022 18:46:09 +0000</pubDate>
        <dc:creator>Trevor Elliott &lt;telliott@fastly.com&gt;</dc:creator>
    </item>
<item>
        <title>8a9b1a90 - Implement an incremental compilation cache for Cranelift (#4551)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#8a9b1a90</link>
        <description>Implement an incremental compilation cache for Cranelift (#4551)This is the implementation of https://github.com/bytecodealliance/wasmtime/issues/4155, using the &quot;inverted API&quot; approach suggested by @cfallin (thanks!) in Cranelift, and trait object to provide a backend for an all-included experience in Wasmtime. After the suggestion of Chris, `Function` has been split into mostly two parts:- on the one hand, `FunctionStencil` contains all the fields required during compilation, and that act as a compilation cache key: if two function stencils are the same, then the result of their compilation (`CompiledCodeBase&lt;Stencil&gt;`) will be the same. This makes caching trivial, as the only thing to cache is the `FunctionStencil`.- on the other hand, `FunctionParameters` contain the... function parameters that are required to finalize the result of compilation into a `CompiledCode` (aka `CompiledCodeBase&lt;Final&gt;`) with proper final relocations etc., by applying fixups and so on.Most changes are here to accomodate those requirements, in particular that `FunctionStencil` should be `Hash`able to be used as a key in the cache:- most source locations are now relative to a base source location in the function, and as such they&apos;re encoded as `RelSourceLoc` in the `FunctionStencil`. This required changes so that there&apos;s no need to explicitly mark a `SourceLoc` as the base source location, it&apos;s automatically detected instead the first time a non-default `SourceLoc` is set.- user-defined external names in the `FunctionStencil` (aka before this patch `ExternalName::User { namespace, index }`) are now references into an external table of `UserExternalNameRef -&gt; UserExternalName`, present in the `FunctionParameters`, and must be explicitly declared using `Function::declare_imported_user_function`.- some refactorings have been made for function names:  - `ExternalName` was used as the type for a `Function`&apos;s name; while it thus allowed `ExternalName::Libcall` in this place, this would have been quite confusing to use it there. Instead, a new enum `UserFuncName` is introduced for this name, that&apos;s either a user-defined function name (the above `UserExternalName`) or a test case name.  - The future of `ExternalName` is likely to become a full reference into the `FunctionParameters`&apos;s mapping, instead of being &quot;either a handle for user-defined external names, or the thing itself for other variants&quot;. I&apos;m running out of time to do this, and this is not trivial as it implies touching ISLE which I&apos;m less familiar with.The cache computes a sha256 hash of the `FunctionStencil`, and uses this as the cache key. No equality check (using `PartialEq`) is performed in addition to the hash being the same, as we hope that this is sufficient data to avoid collisions.A basic fuzz target has been introduced that tries to do the bare minimum:- check that a function successfully compiled and cached will be also successfully reloaded from the cache, and returns the exact same function.- check that a trivial modification in the external mapping of `UserExternalNameRef -&gt; UserExternalName` hits the cache, and that other modifications don&apos;t hit the cache.  - This last check is less efficient and less likely to happen, so probably should be rethought a bit.Thanks to both @alexcrichton and @cfallin for your very useful feedback on Zulip.Some numbers show that for a large wasm module we&apos;re using internally, this is a 20% compile-time speedup, because so many `FunctionStencil`s are the same, even within a single module. For a group of modules that have a lot of code in common, we get hit rates up to 70% when they&apos;re used together. When a single function changes in a wasm module, every other function is reloaded; that&apos;s still slower than I expect (between 10% and 50% of the overall compile time), so there&apos;s likely room for improvement. Fixes #4155.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Fri, 12 Aug 2022 16:47:43 +0000</pubDate>
        <dc:creator>Benjamin Bouvier &lt;public@benj.me&gt;</dc:creator>
    </item>
<item>
        <title>772176db - Cranelift: remove unused EncCursor</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#772176db</link>
        <description>Cranelift: remove unused EncCursor

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Mon, 04 Oct 2021 08:12:57 +0000</pubDate>
        <dc:creator>Benjamin Bouvier &lt;public@benj.me&gt;</dc:creator>
    </item>
<item>
        <title>43a86f14 - Remove more old backend ISA concepts (#3402)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#43a86f14</link>
        <description>Remove more old backend ISA concepts (#3402)This also paves the way for unifying TargetIsa and MachBackend, since now they map one to one. In theory the two traits could be merged, which would be nice to limit the number of total concepts. Also they have quite different responsibilities, so it might be fine to keep them separate.Interestingly, this PR started as removing RegInfo from the TargetIsa trait since the adapter returned a dummy value there. From the fallout, noticed that all Display implementations didn&apos;t needed an ISA anymore (since these were only used to render ISA specific registers). Also the whole family of RegInfo / ValueLoc / RegUnit was exclusively used for the old backend, and these could be removed. Notably, some IR instructions needed to be removed, because they were using RegUnit too: this was the oddball of regfill / regmove / regspill / copy_special, which were IR instructions inserted by the old regalloc. Fare thee well!

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Mon, 04 Oct 2021 08:36:12 +0000</pubDate>
        <dc:creator>Benjamin Bouvier &lt;public@benj.me&gt;</dc:creator>
    </item>
<item>
        <title>bae4ec64 - Remove ancient register allocation (#3401)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#bae4ec64</link>
        <description>Remove ancient register allocation (#3401)

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Thu, 30 Sep 2021 19:27:23 +0000</pubDate>
        <dc:creator>Benjamin Bouvier &lt;public@benj.me&gt;</dc:creator>
    </item>
<item>
        <title>63a335b7 - Avoid touching encodings in `EncCursor` if using a MachInst backend.</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#63a335b7</link>
        <description>Avoid touching encodings in `EncCursor` if using a MachInst backend.`EncCursor` is a variant of `Cursor` that allows updating CLIF whilekeeping its encodings up to date, given a particular ISA. However, new(MachInst) backends don&apos;t use the encodings, and the `TargetIsaAdapter`shim will panic if any encoding-related method is called. This PR avoidsthose panics.Fixes #1809.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Thu, 04 Jun 2020 00:01:17 +0000</pubDate>
        <dc:creator>Chris Fallin &lt;cfallin@mozilla.com&gt;</dc:creator>
    </item>
<item>
        <title>07f335dc - Rename &apos;an block&apos; to &apos;a block&apos;</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#07f335dc</link>
        <description>Rename &apos;an block&apos; to &apos;a block&apos;Missed this in the automatic rename of &apos;Ebb&apos; to &apos;Block&apos;.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Tue, 03 Mar 2020 19:17:30 +0000</pubDate>
        <dc:creator>Ryan Hunt &lt;rhunt@eqrion.net&gt;</dc:creator>
    </item>
<item>
        <title>832666c4 - Mass rename Ebb and relatives to Block (#1365)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#832666c4</link>
        <description>Mass rename Ebb and relatives to Block (#1365)* Manually rename BasicBlock to BlockPredecessorBasicBlock is a pair of (Ebb, Inst) that is used to represent thebasic block subcomponent of an Ebb that is a predecessor to an Ebb.Eventually we will be able to remove this struct, but for now itmakes sense to give it a non-conflicting name so that we can startto transition Ebb to represent a basic block.I have not updated any comments that refer to BasicBlock, aseventually we will remove BlockPredecessor and replace with Block,which is a basic block, so the comments will become correct.* Manually rename SSABuilder block types to avoid conflictSSABuilder has its own Block and BlockData types. These along withassociated identifier will cause conflicts in a later commit, sothey are renamed to be more verbose here.* Automatically rename &apos;Ebb&apos; to &apos;Block&apos; in *.rs* Automatically rename &apos;EBB&apos; to &apos;block&apos; in *.rs* Automatically rename &apos;ebb&apos; to &apos;block&apos; in *.rs* Automatically rename &apos;extended basic block&apos; to &apos;basic block&apos; in *.rs* Automatically rename &apos;an basic block&apos; to &apos;a basic block&apos; in *.rs* Manually update comment for `Block``Block`&apos;s wikipedia article required an update.* Automatically rename &apos;an `Block`&apos; to &apos;a `Block`&apos; in *.rs* Automatically rename &apos;extended_basic_block&apos; to &apos;basic_block&apos; in *.rs* Automatically rename &apos;ebb&apos; to &apos;block&apos; in *.clif* Manually rename clif constant that contains &apos;ebb&apos; as substring to avoid conflict* Automatically rename filecheck uses of &apos;EBB&apos; to &apos;BB&apos;&apos;regex: EBB&apos; -&gt; &apos;regex: BB&apos;&apos;$EBB&apos; -&gt; &apos;$BB&apos;* Automatically rename &apos;EBB&apos; &apos;Ebb&apos; to &apos;block&apos; in *.clif* Automatically rename &apos;an block&apos; to &apos;a block&apos; in *.clif* Fix broken testcase when function name length increasesTest function names are limited to 16 characters. This causesthe new longer name to be truncated and fail a filecheck test. Anoutdated comment was also fixed.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Fri, 07 Feb 2020 16:46:47 +0000</pubDate>
        <dc:creator>Ryan Hunt &lt;rhunt@eqrion.net&gt;</dc:creator>
    </item>
<item>
        <title>c360007b - Drop &apos;basic-blocks&apos; feature (#1363)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#c360007b</link>
        <description>Drop &apos;basic-blocks&apos; feature (#1363)* All: Drop &apos;basic-blocks&apos; featureThis makes it so that &apos;basic-blocks&apos; cannot be disabled and we canstart assuming it everywhere.* Tests: Replace non-bb filetests with bb version* Tests: Adapt solver-fixedconflict filetests to use basic blocks

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Fri, 24 Jan 2020 05:36:06 +0000</pubDate>
        <dc:creator>Ryan Hunt &lt;rhunt@eqrion.net&gt;</dc:creator>
    </item>
<item>
        <title>9f506692 - Fix clippy warnings.</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#9f506692</link>
        <description>Fix clippy warnings.This commit fixes the current set of (stable) clippy warnings in the repo.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Thu, 24 Oct 2019 06:15:42 +0000</pubDate>
        <dc:creator>Peter Huene &lt;phuene@mozilla.com&gt;</dc:creator>
    </item>
<item>
        <title>feecd239 - Assert if newly added instructions break the Basic Block invariant.</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#feecd239</link>
        <description>Assert if newly added instructions break the Basic Block invariant.

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Thu, 25 Jul 2019 12:33:25 +0000</pubDate>
        <dc:creator>Nicolas B. Pierron &lt;nicolas.b.pierron@mozilla.com&gt;</dc:creator>
    </item>
<item>
        <title>d7d48d5c - Add the dyn keyword before trait objects;</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#d7d48d5c</link>
        <description>Add the dyn keyword before trait objects;

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Thu, 06 Jun 2019 08:11:41 +0000</pubDate>
        <dc:creator>Benjamin Bouvier &lt;public@benj.me&gt;</dc:creator>
    </item>
<item>
        <title>747ad3c4 - moved crates in lib/ to src/, renamed crates, modified some files&apos; text (#660)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/cranelift/codegen/src/cursor.rs#747ad3c4</link>
        <description>moved crates in lib/ to src/, renamed crates, modified some files&apos; text (#660)moved crates in lib/ to src/, renamed crates, modified some files&apos; text (#660)

            List of files:
            /wasmtime-44.0.1/cranelift/codegen/src/cursor.rs</description>
        <pubDate>Mon, 28 Jan 2019 23:56:54 +0000</pubDate>
        <dc:creator>lazypassion &lt;25536767+lazypassion@users.noreply.github.com&gt;</dc:creator>
    </item>
</channel>
</rss>
