Re: The Inbox: MethodMassage-dtl.71.mcz

"Thiede, Christoph via Squeak-dev" <[email protected]>
Newsgroups gmane.comp.lang.smalltalk.squeak.general
Message-ID <GV2PR09MB8371C309D9D88BD7A71543BBFB3B2@GV2PR09MB8371.eurprd09.prod.outlook.com>
Wow! Great finding! As far as I (not an expert) can tell, this looks right. Thank you! :-)

Best,
Christoph
________________________________
Von: [email protected] <[email protected]>
Gesendet: Sonntag, 10. Mai 2026 22:54 Uhr
An: [email protected] <[email protected]>
Betreff: [squeak-dev] Re: The Inbox: MethodMassage-dtl.71.mcz


This definitely needs expert review, I am a rookie in this area but if I am reading it right the fix is simple. If so, this gets us down to one remaining test failure in MessageMassageTests for both bytecode sets.

Dave


On 2026-05-10 20:49, [email protected] wrote:

David T. Lewis uploaded a new version of MethodMassage to project The Inbox:
http://source.squeak.org/inbox/MethodMassage-dtl.71.mcz

==================== Summary ====================

Name: MethodMassage-dtl.71
Author: dtl
Time: 10 May 2026, 4:49:49.186657 pm
UUID: 06b25161-0bbf-4861-b500-11592dfae901
Ancestors: MethodMassage-dtl.70

Fix for MessageMassageTest errors when running with EncoderForV3PlusClosures.
The errors are raised by an assert check in ByteCodeAssembler>>spanToBlockLabel: which checks that the bytecode preceding a block label is a return bytecode. Add #methodReturnSpecialConstant to the list of possible returns.

=============== Diff against MethodMassage-dtl.70 ===============

Item was changed:
  ----- Method: BytecodeAssembler>>spanToBlockLabel: (in category 'assembly') -----
  spanToBlockLabel: label "<Association>"
      "N.B. Block labels are expected to follow the last bytecode
       in the block and preceed the bytecode following the block."
      | labelIndex |
      labelIndex := label value.
      labelIndex ifNil:
          [labelIndex := code instructions identityIndexOf: label.
           label value: labelIndex].
      self assert: (labelIndex > 1
                  and: [(self isLabel: (code instructions at: labelIndex - 1)) not
+                 and: [#(blockReturnTop blockReturnConstant: methodReturnSpecialConstant:
-                 and: [#(blockReturnTop blockReturnConstant:
                          methodReturnTop methodReturnConstant: methodReturnReceiver)
                              includes: (code instructions at: labelIndex - 1) selector]]).
      ^(sizes at: labelIndex) ifNotNil:
          [self totalSizeFrom: index + 1 to: labelIndex - 1]!

Squeak-dev mailing list -- [email protected]<mailto:[email protected]>
To unsubscribe send an email to [email protected]<mailto:[email protected]>

Squeak-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.