)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"6eb140ba8c796fc5f01f69bb074f17ab4dcfe742","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"615dc5b3_9d3c0fa9","updated":"2023-06-13 17:21:24.000000000","message":"Still needs to be documented / explained a bit better.","commit_id":"988f898ed285d4401378a6a42ef92800876eebe4"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"6c4bd4a01ba11de61a5beea806f4eda2000561a0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"bcbad487_b9a996b0","in_reply_to":"615dc5b3_9d3c0fa9","updated":"2023-06-19 22:14:33.000000000","message":"Done","commit_id":"988f898ed285d4401378a6a42ef92800876eebe4"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"2f27b49db79f42a1e5490153c7814b7abb4a981d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"000d9d47_8ec8d865","updated":"2023-06-20 10:02:41.000000000","message":"Very well explained, thanks!","commit_id":"3ff65bf4ba5502815f04f345ce21a1c3d7f1f5fb"}],"tvix/eval/src/opcode.rs":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"f0bc3fe873aa97a546e40cde2921a00efd19ce06","unresolved":true,"context_lines":[{"line_number":162,"context_line":"    // want in a single instruction."},{"line_number":163,"context_line":"    /// Finalise first stack value only if value at the second stack idx is"},{"line_number":164,"context_line":"    /// `Value::FinaliserSentinel(true)`."},{"line_number":165,"context_line":"    OpFinaliseIfSentinel(StackIdx, StackIdx),"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    /// Final instruction emitted in a chunk. Does not have an"},{"line_number":168,"context_line":"    /// inherent effect, but can simplify VM logic as a marker in some"}],"source_content_type":"text/x-rustsrc","patch_set":5,"id":"46e2befd_42b77b49","line":165,"range":{"start_line":165,"start_character":0,"end_line":165,"end_character":45},"updated":"2023-06-07 15:22:53.000000000","message":"This variant might increase the size of `OpCode`, which is _very_ expensive (it\u0027s the most impactful perf knob we can currently tweak directly). Might be worth checking a size_of before/after to ensure that this isn\u0027t the case, and maybe falling back to existing instructions if it is.","commit_id":"b15c16f905d731a51e15353384711ac0c554bbd5"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"6eb140ba8c796fc5f01f69bb074f17ab4dcfe742","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    // want in a single instruction."},{"line_number":163,"context_line":"    /// Finalise first stack value only if value at the second stack idx is"},{"line_number":164,"context_line":"    /// `Value::FinaliserSentinel(true)`."},{"line_number":165,"context_line":"    OpFinaliseIfSentinel(StackIdx, StackIdx),"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    /// Final instruction emitted in a chunk. Does not have an"},{"line_number":168,"context_line":"    /// inherent effect, but can simplify VM logic as a marker in some"}],"source_content_type":"text/x-rustsrc","patch_set":5,"id":"0deca42c_f97214d6","line":165,"range":{"start_line":165,"start_character":0,"end_line":165,"end_character":45},"in_reply_to":"003d793c_33b4cbb4","updated":"2023-06-13 17:21:24.000000000","message":"Done","commit_id":"b15c16f905d731a51e15353384711ac0c554bbd5"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"153161960c30faf7eaeda62e7f01927097f1a510","unresolved":true,"context_lines":[{"line_number":162,"context_line":"    // want in a single instruction."},{"line_number":163,"context_line":"    /// Finalise first stack value only if value at the second stack idx is"},{"line_number":164,"context_line":"    /// `Value::FinaliserSentinel(true)`."},{"line_number":165,"context_line":"    OpFinaliseIfSentinel(StackIdx, StackIdx),"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    /// Final instruction emitted in a chunk. Does not have an"},{"line_number":168,"context_line":"    /// inherent effect, but can simplify VM logic as a marker in some"}],"source_content_type":"text/x-rustsrc","patch_set":5,"id":"003d793c_33b4cbb4","line":165,"range":{"start_line":165,"start_character":0,"end_line":165,"end_character":45},"in_reply_to":"46e2befd_42b77b49","updated":"2023-06-11 16:22:06.000000000","message":"Indeed, it increases the size from 16 to 24. I will find another solution. It does seem wise to stick to the sentinel value though, i.e. having something similar to `OpJumpIfNotFound` so we crash on miscompilations.","commit_id":"b15c16f905d731a51e15353384711ac0c554bbd5"}],"tvix/eval/src/vm/mod.rs":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"f0bc3fe873aa97a546e40cde2921a00efd19ce06","unresolved":true,"context_lines":[{"line_number":734,"context_line":"                }"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"                OpCode::OpFinalise(StackIdx(idx))"},{"line_number":737,"context_line":"                | OpCode::OpFinaliseIfSentinel(StackIdx(idx), _) \u003d\u003e {"},{"line_number":738,"context_line":"                    // If the sentinel says not to finalise, do nothing. This is"},{"line_number":739,"context_line":"                    // necessary when evaluating formals that don\u0027t always need"},{"line_number":740,"context_line":"                    // to be finalised."},{"line_number":741,"context_line":"                    if let OpCode::OpFinaliseIfSentinel(_, StackIdx(sentinel_idx)) \u003d op {"},{"line_number":742,"context_line":"                        match \u0026self.stack[frame.stack_offset + sentinel_idx] {"},{"line_number":743,"context_line":"                            Value::FinaliserSentinel(finalise) \u003d\u003e {"},{"line_number":744,"context_line":"                                if !finalise {"},{"line_number":745,"context_line":"                                    continue;"}],"source_content_type":"text/x-rustsrc","patch_set":5,"id":"80e3c850_e67094bd","line":742,"range":{"start_line":737,"start_character":0,"end_line":742,"end_character":0},"updated":"2023-06-07 15:22:53.000000000","message":"Probably better to make this two separate arms instead of merging them, as we\u0027re checking against the type of the op twice otherwise (and OpFinalise probably still occurs relatively more often than OpFinaliseIfSentinel)","commit_id":"b15c16f905d731a51e15353384711ac0c554bbd5"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"6eb140ba8c796fc5f01f69bb074f17ab4dcfe742","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                }"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"                OpCode::OpFinalise(StackIdx(idx))"},{"line_number":737,"context_line":"                | OpCode::OpFinaliseIfSentinel(StackIdx(idx), _) \u003d\u003e {"},{"line_number":738,"context_line":"                    // If the sentinel says not to finalise, do nothing. This is"},{"line_number":739,"context_line":"                    // necessary when evaluating formals that don\u0027t always need"},{"line_number":740,"context_line":"                    // to be finalised."},{"line_number":741,"context_line":"                    if let OpCode::OpFinaliseIfSentinel(_, StackIdx(sentinel_idx)) \u003d op {"},{"line_number":742,"context_line":"                        match \u0026self.stack[frame.stack_offset + sentinel_idx] {"},{"line_number":743,"context_line":"                            Value::FinaliserSentinel(finalise) \u003d\u003e {"},{"line_number":744,"context_line":"                                if !finalise {"},{"line_number":745,"context_line":"                                    continue;"}],"source_content_type":"text/x-rustsrc","patch_set":5,"id":"3715ee08_5e567649","line":742,"range":{"start_line":737,"start_character":0,"end_line":742,"end_character":0},"in_reply_to":"80e3c850_e67094bd","updated":"2023-06-13 17:21:24.000000000","message":"Done","commit_id":"b15c16f905d731a51e15353384711ac0c554bbd5"}]}
