<?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 stack.rs</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>b112bb85 - Migrate winch-codegen to `wasmtime_environ::error` (#12297)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#b112bb85</link>
        <description>Migrate winch-codegen to `wasmtime_environ::error` (#12297)

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Fri, 09 Jan 2026 19:20:48 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>90ac295e - Update Wasmtime to the 2024 Rust Edition (#10806)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#90ac295e</link>
        <description>Update Wasmtime to the 2024 Rust Edition (#10806)* Update Wasmtime to the 2024 Rust EditionNow that our MSRV supports the 2024 edition it&apos;s possible to make thisswitch. This commit moves Wasmtime to the 2024 Edition to keepup-to-date with Rust idioms and access many of the edition featuresexclusive to the 2024 edition.prtest:full* Reformat with the 2024 edition

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Mon, 19 May 2025 16:40:55 +0000</pubDate>
        <dc:creator>Alex Crichton &lt;alex@alexcrichton.com&gt;</dc:creator>
    </item>
<item>
        <title>1ad7a4f6 - Winch: Add replace_lane instructions for x64 with AVX (#10082)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#1ad7a4f6</link>
        <description>Winch: Add replace_lane instructions for x64 with AVX (#10082)* Winch: Add replace_lane instructions for x64 with AVX* Add check for AVX* Make operand size conversion a helper function

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Fri, 24 Jan 2025 21:09:37 +0000</pubDate>
        <dc:creator>Jeffrey Charles &lt;jeff.charles@shopify.com&gt;</dc:creator>
    </item>
<item>
        <title>ba950f2c - Winch: i8x16.shuffle for x64 with AVX (#9959)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#ba950f2c</link>
        <description>Winch: i8x16.shuffle for x64 with AVX (#9959)* i8x16_shuffle for x64 with AVX512* Use AVX2 instructions instead* Change panic to error* Forgot to update callsite* Ignore SIMD misc test on non-AVX hardware* Add xmm_ prefix to function name* Use early exit in shuffle

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Wed, 15 Jan 2025 18:18:21 +0000</pubDate>
        <dc:creator>Jeffrey Charles &lt;jeff.charles@shopify.com&gt;</dc:creator>
    </item>
<item>
        <title>b93e1bc0 - winch: Gracefully handle compilation errors (#9851)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#b93e1bc0</link>
        <description>winch: Gracefully handle compilation errors (#9851)* winch: Gracefully handle compilation errorsCloses: https://github.com/bytecodealliance/wasmtime/issues/8096This commit threads `anyhow::Result`  through most of Winch&apos;scompilation process in order to gracefully handle compilation errorsgracefully instead of panicking.The error classification is intentionally very granular, to avoid stringallocation which could impact compilation performance.The errors are largely fit in two categories:* Unimplemented/Unsupported* InternalThe firs category signals partial or no support for Wasmtime featuresand or Wasm proposals. These errors are meant to be temporary whilesuch features or proposals are in development.The second category signals that a compilation invariant was not met.These errors are considered internal and their presence usually meansa bug in the compiler.* Include `Result` in the MacroAssemblerThis commit updates the MacroAssembler trait to require returning`Result&lt;T&gt;`  on every method in the interface, making it easier todetect partial support for Masm instructions.

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Wed, 01 Jan 2025 18:11:39 +0000</pubDate>
        <dc:creator>Sa&#250;l Cabrera &lt;saulecabrera@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>a0442ea0 - Enforce `uninlined_format_args` for the workspace (#9065)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#a0442ea0</link>
        <description>Enforce `uninlined_format_args` for the workspace (#9065)* Enforce `uninlined_format_args` for the workspace* fix: failing `Monolith Checks` job* fix: formatting

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Mon, 05 Aug 2024 09:59:59 +0000</pubDate>
        <dc:creator>Hamir Mahal &lt;hamirmahal@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>fa9a948d - Add v128.const support to Winch (#8990)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#fa9a948d</link>
        <description>Add v128.const support to Winch (#8990)* Add v128.const support to Winch* Remove next_vr and vector_reg_for methods* Adjust alignment and slot size for v128* Forgot to update disas tests* Update unit tests* Use 8 byte stack slot sizes* Fix broken unit tests, add tests for vecs, and use ty size for vecs

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Wed, 24 Jul 2024 18:52:54 +0000</pubDate>
        <dc:creator>Jeffrey Charles &lt;jeff.charles@shopify.com&gt;</dc:creator>
    </item>
<item>
        <title>0e9121da - Fix some typos (#8641)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#0e9121da</link>
        <description>Fix some typos (#8641)* occurred* winch typos* tests typos* cli typos* fuzz typos* examples typos* docs typos* crates/wasmtime typos* crates/environ typos* crates/cranelift typos* crates/test-programs typos* crates/c-api typos* crates/cache typos* crates other typos* cranelift/codegen/src/isa typos* cranelift/codegen/src other typos* cranelift/codegen other typos* cranelift other typos* ci js typo* .github workflows typo* RELEASES typo* Fix clang-format documentation line---------Co-authored-by: Andrew Brown &lt;andrew.brown@intel.com&gt;

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Thu, 16 May 2024 23:21:22 +0000</pubDate>
        <dc:creator>FrankReh &lt;FrankReh@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>1b5c4ae8 - winch: Optimize calls (#7927)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#1b5c4ae8</link>
        <description>winch: Optimize calls (#7927)* winch: Optimize callsThis commit introduces several optimizations to speed up the compilationof function calls:* Keep track of previously resolved function signatures for local or  imported callees to avoid computing the `ABISig` on every  function call.* Keep track of previously resolved type signatures for indirect calls  to avoid computing the `ABISig` on every function call.* Refactor `CallKnown` and `CallUnknown` instructions to make the  `BoxCallInfo` field in the struct optional. Prior to this change,  from Winch&apos;s perspective each call lowering involved a heap  allocation, using the default values for `BoxCallInfo`, which in the  end are not used by Winch.* Switch Winch&apos;s internal `Stack` to use a `SmallVec` rather than  a `Vec`. Many of the operations involving builtin function calls  require inserting elements at arbitrary offsets in the stack and  using a `SmallVec` makes this process more efficient.With the changes mentioned above, I observed ~30% improvement incompilation times for modules that are call-heavy.* Expect `CallInfo` where applicable and add a comment about the typedefinition* Remove unneeded types and lifetimes

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Wed, 14 Feb 2024 11:56:59 +0000</pubDate>
        <dc:creator>Sa&#250;l Cabrera &lt;saulecabrera@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>496237c2 - Rename `WasmType` to `WasmValType` (#7838)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#496237c2</link>
        <description>Rename `WasmType` to `WasmValType` (#7838)Purely mechanical, no functional changes.This is to help differentiate between value types (i32, i64, reference types,etc...) and defined types (function signatures, struct definitions, arraydefinitions).

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Mon, 29 Jan 2024 20:26:46 +0000</pubDate>
        <dc:creator>Nick Fitzgerald &lt;fitzgen@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>446a7f5e - winch: Multi-Value Part 2: Blocks (#7707)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#446a7f5e</link>
        <description>winch: Multi-Value Part 2: Blocks (#7707)* winch: Multi-Value Part 2: BlocksThis commit adds support for the Multi-Value proposal for blocks.In general, this change, introduces multiple building blocks to enablesupporting arbitrary params and results in blocks:* `BlockType`: Introduce a block type, to categorize the type of each  block, this makes it easier to categorize blocks per type and also  makes it possible to defer the calculation of the `ABIResults` until  they are actually needed rather than calculating everyghing upfront  even though they might not be needed (when in an unreachable state).* Push/pop operations are now frame aware. Given that each  `ControlStackFrame` contains all the information needed regarding  params and results, this change moves the the implementation of the  push and pop operations to the `ControlStackFrame` struct.* `StackState`: this struct holds the entry and exit invariants of each  block; these invariants are pre-computed when entering the block and  used throughout the code generation, to handle params, results and  assert the respective invariants.In terms of the mechanics of the implementation: when entering eachblock, if there are results on the stack, the expected stack pointeroffsets will be calculated via the `StackState`, and the `target_offset`will be used to create the block&apos;s `RetArea`. Note that when enteringthe block and calculating the `StackState` no space is actually reservedfor the results, any space increase in the stack is deffered until theresults are popped from the value stack via`ControlStackFrame::pop_abi_results`.The trickiest bit of the implementation is handling constant values thatneed to be placed on the right location on the machine stack. Given thatconstants are generally not spilled, this means that in order to keepthe machine and value stack in sync (spilled-values-wise), values mustbe shuffled to ensure that constants are placed in the expected location results wise.See the comment in `ControlStackFrame::adjust_stack_results` for moredetails.* Review fixes

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Mon, 08 Jan 2024 19:57:40 +0000</pubDate>
        <dc:creator>Sa&#250;l Cabrera &lt;saulecabrera@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>7690c500 - Switch winch&apos;s internal stack from a VecDeque to a Vec (#7756)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#7690c500</link>
        <description>Switch winch&apos;s internal stack from a VecDeque to a Vec (#7756)It doesn&apos;t look like which needs to modify the front of the `VecDeque`that it uses to model the value stack, and can instead use a `Vec`.

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Fri, 05 Jan 2024 23:08:12 +0000</pubDate>
        <dc:creator>Trevor Elliott &lt;telliott@fastly.com&gt;</dc:creator>
    </item>
<item>
        <title>17091e6f - Winch: Change emits to return TypedReg to put on stack (#7682)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#17091e6f</link>
        <description>Winch: Change emits to return TypedReg to put on stack (#7682)

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Wed, 13 Dec 2023 18:37:22 +0000</pubDate>
        <dc:creator>Jeffrey Charles &lt;jeff.charles@shopify.com&gt;</dc:creator>
    </item>
<item>
        <title>55f9a4bd - Winch: fix bug by spilling when emitting func call (#7573)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#55f9a4bd</link>
        <description>Winch: fix bug by spilling when emitting func call (#7573)* Winch: fix bug by spilling when calling a func* Forgot to commit new filetest* Only support WasmHeapType::Func* Elaborate on call_indirect jump details* Update docs for call* Verify stack is only consts and memory entries

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Thu, 23 Nov 2023 12:00:07 +0000</pubDate>
        <dc:creator>Jeffrey Charles &lt;jeff.charles@shopify.com&gt;</dc:creator>
    </item>
<item>
        <title>50733725 - winch: Solidify unreachable code handling (#7547)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#50733725</link>
        <description>winch: Solidify unreachable code handling (#7547)This commit solidifies the approach for unreachable code handling incontrol flow.Prior to this change, at unconditional jump sites, the compiler wouldreset the machine stack as well as the value stack. Even though thisappoach might seem natural at first, it actually broke several of theinvariants that must be met at the end of each contol block, this wasspecially noticeable with programs that conditionally entered in anunreachable state, like for example```wat(module  (func (;0;) (param i32) (result i32)    local.get 0    local.get 0    if (result i32)      i32.const 1      return    else      i32.const 2    end    i32.sub  )  (export &quot;main&quot; (func 0)))```The approach followed in this commit ensures that all the invariants aremet and introduces more guardrails around those invariants. In short,instead of resetting the value stack at unconditional jump sites, thevalue stack handling is deferred until the reachability analysisrestores the reachability of the code generation process, ensuring thatthe value stack contains the exact amount of values expected by theframe where reachability is restored. Given that unconditional jumpsreset the machine stack, when the reachability of the code generationprocess is restored, the SP offset is also restored which should matchthe size of the value stack.

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Thu, 16 Nov 2023 17:33:25 +0000</pubDate>
        <dc:creator>Sa&#250;l Cabrera &lt;saulecabrera@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>f0162a40 - winch: Multi-Value Part 1  (#7535)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#f0162a40</link>
        <description>winch: Multi-Value Part 1  (#7535)* winch: Introduce `ABIParams` and `ABIResults`This commit prepares Winch to support WebAssembly Multi-Value.The most notorious piece of this change is the introduction of the`ABIParams` and `ABIResults` structs which are type wrappers around theconcept of an `ABIOperand`, which is the underlying main representationof a param or result.This change also consolidates how the size for WebAssembly types isderived by introducing `ABI::sizeof`, as well as introducing`ABI::stack_slot_size` to concretely indicate the stack slot size inbytes for stack params, which is ABI dependent.* winch: Add the necessary ABI building blocks for multi-valueThis change adds the necessary changes at the ABI level in order tohandle multi-value.The most notable modifications in this change are:* Modifying Winch&apos;s  default ABI to reverse the order of results,  ensuring that results that go in the stack should always come first;  this makes it easier to respect the following two stack invariants:  * Spilled memory values always precede register values  * Spilled values are stored from oldest to newest, matching their    respective locations on the machine stack.* Modify all calling conventions supported by Winch so that only one result, the first one is stored in  registers. This differs from their vanilla counterparts in that these  ABIs can handle multiple results in registers. Given that Winch is not  a generic code generator, keeping the ABI close to what Wasmtime  expects makes it easier to pass multiple results at trampolines.* Add more multi-value testsThis commit adds more tests for multi-value and improves documentation.prtest:full* Address review feedback

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Tue, 14 Nov 2023 21:54:00 +0000</pubDate>
        <dc:creator>Sa&#250;l Cabrera &lt;saulecabrera@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>321294a5 - winch: Materialize latent locals when setting them (#7531)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#321294a5</link>
        <description>winch: Materialize latent locals when setting them (#7531)* winch: Materialize latent locals when setting them* Put method on stack and stop when encountering mem entry

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Tue, 14 Nov 2023 11:46:46 +0000</pubDate>
        <dc:creator>Jeffrey Charles &lt;jeff.charles@shopify.com&gt;</dc:creator>
    </item>
<item>
        <title>4f47f3ec - winch: Add a subset of known libcalls and improve call emission (#7228)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#4f47f3ec</link>
        <description>winch: Add a subset of known libcalls and improve call emission (#7228)* winch: Add known a subset of known libcalls and improve call emissionThis change is a follow up to:- https://github.com/bytecodealliance/wasmtime/pull/7155- https://github.com/bytecodealliance/wasmtime/pull/7035One of the objectives of this change is to make it easy to emitfunction calls at the MacroAssembler layer, for cases in which it&apos;schallenging to know ahead-of-time if a particular functionality can beachieved natively (e.g. rounding and SSE4.2).  The original implementationof function call emission, made this objective difficult to achieve andit was also difficult to reason about.I decided to simplify the overall approach to function calls as part ofthis PR; in essence, the `call` module now exposes a single function`FnCall::emit` which is reponsible of gathtering the dependencies andorchestrating the emission of the call. This new approach deliberatelyavoids holding any state regarding the function call for simplicity.This change also standardizes the usage of `Callee` as the mainentrypoint for function call emission, as of this change 4 `Callee`types exist (`Local`, `Builtin`, `Import`, `FuncRef`), each callee kindis mappable to a `CalleeKind` which is the materialized version ofa callee which Cranelift understands.This change also moves the creation of the `BuiltinFunctions` to the`ISA` level given that they can be safely used accross multiple functioncompilations.Finally, this change also introduces support for some of the&quot;well-known&quot; libcalls and hooks those libcalls at the`MacroAssembler::float_round` callsite.--prtest:full* Review comments* Remove unnecessary `into_iter`* Fix remaining lifetime parameter names

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Fri, 13 Oct 2023 18:57:49 +0000</pubDate>
        <dc:creator>Sa&#250;l Cabrera &lt;saulecabrera@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>a109d2ab - winch(x64): Add support for table instructions (#7155)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#a109d2ab</link>
        <description>winch(x64): Add support for table instructions (#7155)* winch(x64): Add support for table instructionsThis change adds support for the following table insructions:`elem.drop`, `table.copy`, `table.set`, `table.get`, `table.fill`,`table.grow`, `table.size`, `table.init`.This change also introduces partial support for the `Ref` WebAssemblytype, more conretely the `Func` heap type, which means that all thetable instructions above, only work this WebAssembly type as of thischange.Finally, this change is also a small follow up to the primitivesintroduced in https://github.com/bytecodealliance/wasmtime/pull/7100,more concretely:* `FnCall::with_lib`: tracks the presence of a libcall and ensures that  any result registers are freed right when the call is emitted.* `MacroAssembler::table_elem_addr` returns an address rather than the  value of the address, making it convenient for other use cases like  `table.set`.--prtest:full* chore: Make stack functions take impl IntoIterator&lt;..&gt;* Update winch/codegen/src/codegen/call.rsCo-authored-by: Trevor Elliott &lt;awesomelyawesome@gmail.com&gt;* Remove a dangling `dbg!`* Add comment on branching---------Co-authored-by: Trevor Elliott &lt;awesomelyawesome@gmail.com&gt;

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Fri, 06 Oct 2023 22:10:55 +0000</pubDate>
        <dc:creator>Sa&#250;l Cabrera &lt;saulecabrera@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>4b288ba8 - winch(x64): Call indirect (#7100)</title>
        <link>http://172.16.0.5:8080/history/wasmtime-44.0.1/winch/codegen/src/stack.rs#4b288ba8</link>
        <description>winch(x64): Call indirect (#7100)* winch(x64): Call indirectThis change adds support for the `call_indirect` instruction to Winch.Libcalls are a pre-requisite for supporting `call_indirect` in order tolazily initialy funcrefs. This change adds support for libcalls toWinch by introducing a `BuiltinFunctions` struct similar to Cranelift&apos;s`BuiltinFunctionSignatures` struct.In general, libcalls are handled like any other function call, with theonly difference that given that not all the information to fulfill thefunction call might be known up-front, control is given to the callerfor finalizing the call.The introduction of function references also involves dealing withpointer-sized loads and stores, so this change also adds the requiredfunctionality to `FuncEnv` and `MacroAssembler` to be pointer aware,making it straight forward to derive an `OperandSize` or `WasmType` fromthe target&apos;s pointer size.Finally, given the complexity of the call_indirect instrunction, thischange bundles an improvement to the register allocator, allowing it totrack the allocatable vs non-allocatable registers, this is done toavoid any mistakes when allocating/de-allocating registers that are notalloctable.--prtest:full* Address review comments* Fix typos* Better documentation for `new_unchecked`* Introduce `max` for `BitSet`* Make allocatable property `u64`* winch(calls): Overhaul `FnCall`This commit simplifies `FnCall`&apos;s interface making its usage moreuniform throughout the compiler. In summary, this change:* Avoids side effects in the `FnCall::new` constructor, and also makes  it the only constructor.* Exposes `FnCall::save_live_registers` and  `FnCall::calculate_call_stack_space` to calculate the stack space  consumed by the call and so that the caller can decide which one to  use at callsites depending on their use-case.* tests: Fix regset tests

            List of files:
            /wasmtime-44.0.1/winch/codegen/src/stack.rs</description>
        <pubDate>Fri, 29 Sep 2023 16:59:40 +0000</pubDate>
        <dc:creator>Sa&#250;l Cabrera &lt;saulecabrera@gmail.com&gt;</dc:creator>
    </item>
</channel>
</rss>
