GemTalk / Rowan

a new project/package manager for Smalltalk that supports FileTree and Tonel repositories, and is independent of Monticello and Metacello
MIT License
13 stars 7 forks source link

method compile in Rowan image using topaz hits compiler 3 times ... #684

Open dalehenrich opened 3 years ago

dalehenrich commented 3 years ago

The compile in the following topaz sequence calls the compiler 3 times:

topaz 1> method: RsrSystemTestCase
x
  ^ connectionA
%
topaz 1> run
RsrSystemTestCase new x
%
nil

It probbly should only be twice:

  1. extract selector from method to see if the method is being managed by Rowan
  2. the actual compile
AllenOtis commented 3 years ago

The first compile is trying to compile as an instance method in Undefined object.
In frame 3 , receiver is UndefinedObject. If the args to intoMethodDict: and intoCategories: are each ` GsMethodDictionary new then you could have the receiver be the actual class but not update the method dictionaries .

1 Behavior >> _primCompileMethod:symbolList:category:oldLitVars:intoMethodDict:intoCategories:environmentId: @startIP [GsNMethod 3461377] FP:-117 2 Behavior >> _primitiveCompileMethod:symbolList:category:oldLitVars:intoMethodDict:intoCategories:environmentId: @natCode+0x2b2 [GsNMethod 3462657] FP:-103 3 Behavior >> compileMethod:dictionaries:category:intoMethodDict:intoCategories:environmentId: @natCode+0xdc [GsNMethod 3908865] FP:-91 4 (block, homeMethod:66694913) @natCode+0x235 [GsNMethod 71565057] FP:-80 5 ExecBlock >> onSynchronous:do: @natCode+0xcb [GsNMethod 5659649] FP:-74 6 RwGsPlatform >> _parseMethod:category:using:environmentId: @natCode+0x456 [GsNMethod 66694913] FP:-65 7 Behavior >> _rwCompileMethodForConditionalPackaging:symbolList:category:environmentId:ifUnpackagedDo: @natCode+0x15c [GsNMethod 49983489] FP:-52 8 Behavior >> compileMethod:dictionaries:category:environmentId: @natCode+0x8ea [GsNMethod 102563585] FP:-37 9 (block, homeMethod:102564609) @natCode+0x18e [GsNMethod 103283969] FP:-28 10 ExecBlock >> onException:do: @natCode+0xcb [GsNMethod 5660929] FP:-22 11 Behavior >> _gciCompileMethod:dictionaries:category:environmentId: @natCode+0x1f1 [GsNMethod 102564609] FP:-15 12 GsNMethod class >> _gsReturnToC @natCode+0x28 [GsNMethod 5483521] FP:-3 stack 0 GsProcess 20 modeInfo 0x300