{"push_id":641266787,"size":30,"distinct_size":30,"ref":"refs/heads/spur64","head":"e5fc72232b87857a5b2343e6a7841fe29c6a7c21","before":"829f907c8822b1329adcf469fe00b739d1e0bd08","commits":[{"sha":"4926e6e36bd9a7e36b65f196edaecc4c6ca40a67","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-eem.1181:\r\rFix code generation bug surfaced by inline primitives.\rOn x86 movb N(%reg),%rl can only store into\ral, bl, cl & dl, whereas movzbl can store into any\rreg.  On ARM move byte also zero-extends.  So\rchange definition of MoveMbrR to always zero-extend,\ruse movzbl on x86 and remove all the MoveCq: 0 R:\rused to zero the bits of the target of a MoveMb:r:R:.\rAnd now that we have genGetNumSlotsOf:into:, use it.\r\rFix CogIA32CompilerTests for testCmpRdRd and\rmodify testMoveMbrR appropriately.\r\rFix a slip in genTrinaryInlinePrimitive:, meet the constraint\rthat the target must be in ReceiverResultReg, and do\ra better job of register allocation there-in.\r\rDo dead code elimination for the branch following\ran inlined comparison (this is done in\rgenBinaryInlineComparison:opFalse:destReg:\rcopying the scheme in genSpecialSelectorEqualsEquals).\n\nVMMaker.oscog-eem.1180:\r\rDo register allocation in the right place in\rgenUnaryInlinePrimitive:.\r\rFix overflow slot access in genGetNumSlotsOf:into:\ret al.\n\nVMMaker.oscog-eem.1179:\r\rFix several slips in inline primitive generation:\rObject>>at:put: needs to include a store check.\rSome register allocation code was wrong.\rSome results needed converting to SmallIntegers\rand recording results as pushed on the sim stack.\r\rextendedPushBytecode /does/ need a frame.\r\rChange calPrimitiveBytecode to\rgenCallPrimitiveBytecode in the Cogit.\r\rremove the misnomer genConvertIntegerToSmallIntegerInScratchReg:\r\rFix some receivers for simulation (self => stackPages etc).\r\rAdd a workable callInlinePrimitive: for StackDepthFinder.","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/4926e6e36bd9a7e36b65f196edaecc4c6ca40a67"},{"sha":"dc84eb2af8a92749056081d4a6c6fca1cc7af883","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-cb.1185:\r\rImproved register allocation.\n\nVMMaker.oscog-rmacnak.1184:\r\rFix unlinking dynamic super sends.\n\nVMMaker.oscog-rmacnak.1183:\r\rReduce false positives in access control violation reporting by marking the super send we actually use as privileged. Remove unused Newspeak bytecodes.","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/dc84eb2af8a92749056081d4a6c6fca1cc7af883"},{"sha":"ce81f89279692bec77ff63c7e55ab20642e23bfe","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-cb.1188:\r\rfix a bug where sometimes register allocation was marking ReceiverResultReg as dead whereas it was still alive.\n\nVMMaker.oscog-eem.1187:\r\rNuke the unused NewspeakV3 initializers\n\nVMMaker.oscog-cb.1186:\r\rAdded with Eliot some abstraction other register allocation. This is now used in inline primitives.","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/ce81f89279692bec77ff63c7e55ab20642e23bfe"},{"sha":"5dce87449753e98b24dfa102ce905f84b0b2025a","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-eem.1191:\r\rFix var op var unsafe byte at:.  Result must be\rconverted to SmallInteger.\n\nVMMaker.oscog-eem.1190:\r\rRender the generated Slang for the new register\rallocation code by adding a read-before-written\rpass to C generation that initializes variables\rread-before-written with 0 (the C equivalent of nil).\n\nVMMaker.oscog-eem.1189:\r\rStackDepthFinder needs to implement doNop for\rin-image compilation of ScUnsafeOperationTest methods.\r\rallocateTwoRegistersInto: et al must be marked\rat <inline: true> for slang to do its thang.","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/5dce87449753e98b24dfa102ce905f84b0b2025a"},{"sha":"859b1e43e35ecf139044d80ea86b5f436e39885e","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-eem.1194:\r\rFix limitation with MoveRXbrR; can only do movb from\r%al through %dl, so swap with %eax around movb.\r\rFix mistake with genGetNumBytesOf:into: by refactoring\rgenGetFormatOf:into:baseHeaderIntoScratch: into\rgenGetBits:ofFormatByteOf:into:baseHeaderIntoScratch:\rand hence fetching and subtracting only odd bits of format.\n\nVMMaker.oscog-eem.1193:\r\rCorrect in-line primitive SmallInteger = ~=\rmissed in the last commit.\r\rFix slip in genGetNumBytesOf:into:.  And notice\rthat genGetFormatOf:into:baseHeaderIntoScratch:\ret al can use byte access to get at format, as\rintended in the Spur header design.\n\nVMMaker.oscog-eem.1192:\r\rCorrect the in-line primitive SmallInteger\rcomparisons; CmpXR is confusing ;-)","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/859b1e43e35ecf139044d80ea86b5f436e39885e"},{"sha":"029c6d7dcac7cea9cc2b173ba01e7bf652b9eb2f","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-eem.1196:\r\rFix bug in computing offsets for arg access in\rframeless methods when args are on stack and\rthere is a link register.  In this case there is no\rreturn pc to skip over.\n\nVMMaker.oscog-eem.1195:\r\rDon't save the header in a scratch register unless\rit is useful to do so in the Spur at:[put:] primitives.","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/029c6d7dcac7cea9cc2b173ba01e7bf652b9eb2f"},{"sha":"2623c8923e7f7d97a7334ee4e61ad1edb5188669","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-eem.1199:\r\rFix genGetActiveContextLarge:inBlock: for ARM:\rClarify and correct Tim's comments re link reg\rand reintroduce choice of bounds check depending\ron link reg.\rIntroduce marryFrameCopiesTemps and use it to\rnot copy temps in Spur contect creation trampolines.\r\rChange initial usage counts to keep more recently\rjitted methods around for longer, and do *not*\rthrow away PICs in freeOlderMethodsForCompaction,\rso that there's a better chance of Sista finding send\rand branch data for the tripping method.\r\rProvide missing V3 long64At:[put:] methods for\rsimulation.\n\nVMMaker.oscog-tpr.1198:\r\rFix ARM rewriteJumpLong... after we changed register usage a little.\rChange genGetActiveContextLarge:inBlock: handling of ARM SP stuff a smidge. This gets us a lot further but I'm not completely convinced it is finished with.\n\nVMMaker.oscog-tpr.1197:\r\rChanges that make ARM cog go further and in somer cases faster.\rThe genGetActiveContextLarge:inBlock: code may well be wrong to wrap the callRT:.","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/2623c8923e7f7d97a7334ee4e61ad1edb5188669"},{"sha":"e847bdf1d6c985d88f6454e378f78195267bb04f","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-eem.1202:\r\rFix regression in map machinery due to adding\rAnnotationExtension scheme.  findMapLocationForMcpc:inMethod:\rmust not be confused by IsDisplacementX2N bytes.\rThis is likely the cause of the recent crashes with\rr3308 and earlier.\r\rLay the groundwork for 32-bit intra-zone jumps and\rcalls on ARM by introducing CallFull and JumpFull\r(and rewrites thereof) that are expected to\rspan the ful address space, leaving Call/JumpLong\rto span merely the 16mb code zone.  On x86\rCallFull and JumpFull simply default to Call/JumpLong.\rTim will implement the ARM support soon.\n\nVMMaker.oscog-cb.1201:\r\rReplace bytecode trapIfNotInstanceOf by jumpIfNotInstanceOfOrPop.\r\rRewrote the JIT logic for traps to be able to write trap trampolines calls at the end of the cogMethod.\n\nVMMaker.oscog-eem.1200:\r\rRefactor the slot store and store check machinery\rto take an inFrame: argument and hence deal with\rthe store check in genInnerPrimitiveAtPut: on ARM.\r\rImplement jumpLong[Conditional]ByteSize for ARM\rnoting that this is unsatisfactory.  We need to\rgenerate \"short\" branches on ARM for PICs.","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/e847bdf1d6c985d88f6454e378f78195267bb04f"},{"sha":"644758da11824e95f24ae57cca9c27cbdd8bd8b4","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-eem.1204:\r\rifTrue:ype of AbstractInstruction opcode must be\runsigned now that we have > 128 opcodes\r(XCHGRR pushed things over the top).\r\rFix some Slang generation-time warnings.\n\nVMMaker.oscog-cb.1203:\r\radded types for arrays used in machine code generation.","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/644758da11824e95f24ae57cca9c27cbdd8bd8b4"},{"sha":"80b42237130fec1825a5a330bb54280ed58437ab","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-cb.1207:\r\rFixed the dead code elimination so that now it eliminates an unconditionnal branch over a nop in case of inlined branches such as #== then branch or inlined comparison then branch.\r\rAdded a method for in-image compilation.\n\nVMMaker.oscog-cb.1206:\r\rfirst attempt to fix the sista trap trampoline.\r\rNow expect the context trapping to have the object which traps on stack. Does not require anymore arguments passed by registers.\n\nVMMaker.oscog-cb.1205:\r\rFix interpreter code for jumpIfNotInstanceOfOrPop","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/80b42237130fec1825a5a330bb54280ed58437ab"},{"sha":"0cdb9386b410f6e009b5f113f0b518594b84b84c","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-eem.1210:\r\rFix register allocation in frameless #== with\rforwarders.  Now spur images start up with the new\r#== code that only checks for forwarders on false..\r\rHave genEnsureOopInRegNotForwarded:scratchReg:ifForwarder:ifNotForwarder:\ranswer 0, in accordance with tradition.\r\rFix some facade issues.\r\rAllow turning on compilationTrace throguh init opts.\r\rFix slip in generateAllConfigurationsUnderVersionControl","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/0cdb9386b410f6e009b5f113f0b518594b84b84c"},{"sha":"aef3ac802e3be40f79ff5dddc251a3893911fb3e","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-eem.1213:\r\rFix generation-time warnings with recent changes.\n\nVMMaker.oscog-eem.1212:\r\rFix C generation issues with recent changes.\n\nVMMaker.oscog-cb.1211:\r\rUsed register allocation in #== with V3 in order to limit register moves.\r\rUse bytecodeSetOffset constant instead of some bitAnd: computation.","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/aef3ac802e3be40f79ff5dddc251a3893911fb3e"},{"sha":"9674fc63ee96bb94297622f0816928bdf41a1db4","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-eem.1217:\r\rFix printing of CogFooInstructions with code LastRTLCode.\r\rMake read-before-written initializer not initialize arrays.\n\nVMMaker.oscog-cb.1216:\r\rfix a bug where some #== followed by a branch would not generate the compare instruction before the jumpZero.\n\nVMMaker.oscog-cb.1215:\r\rFixed machine code generation of #== in the sista cogit. simulated stack was imbalanced and I made a typo label -> Label\n\nVMMaker.oscog-cb.1214:\r\r- Change the code generation of == for sistaCogit\r- change the coutner reg to be allocated instead of being a fixed abstract reg\r- fix a C code gen bug in code gen of #==\r- fix a bug in #== where the arg was not unforwarded","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/9674fc63ee96bb94297622f0816928bdf41a1db4"},{"sha":"184b9920daf75652e5fcbe5a6c787e272c7b2721","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"Cog-eem.260:\r\rFix Spur bootstrap package patching in the face of\rthe Scorch package being loaded.","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/184b9920daf75652e5fcbe5a6c787e272c7b2721"},{"sha":"5a70fc6c6506cb5536c727d77dd5b30ba0641c34","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-eem.1220:\r\rcommentary\n\nVMMaker.oscog-tpr.1219:\r\rMerge in tpr work on the jump/call-long/full changes.\rRe-organize the ARM dispatch/compute tabels to match the x86 and simplify life when comparing.\n\nVMMaker.oscog-eem.1218:\r\rFirst cut at changing ARM call/branch ranges to use\rimmediate call/jump for all intra-zone transfers,\rand clumsy 5 instruction sequences only for\rtrampoline and interpreter primitive calls.","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/5a70fc6c6506cb5536c727d77dd5b30ba0641c34"},{"sha":"231f71fdf4c658e0778ab68ce3c43395fd893e4a","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-tpr.1222:\r\rOops, NOP size is 4 on ARM, not 0.\n\nVMMaker.oscog-eem.1221:\r\rCorrect CogARMCompiler>>literalBeforeFollowingAddress:\rso it also deals with PushCw instructions.","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/231f71fdf4c658e0778ab68ce3c43395fd893e4a"},{"sha":"734f44e7d7d0240413fcebc539f16759c718a045","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-eem.1224:\r\rImplement CogARMCompiler>>relocateCallBeforeReturnPC:by:\rgiven the new simple intra-zone calls and jumps.\r\rRename relocateJumpBeforeFollowingAddress:by: to\rrelocateJumpLongBeforeFollowingAddress:by: to\rreflect our more accurate terminology.\r\rSo now ARM stops in code compaction when trying\rto relocateMethodReferenceBeforeAddress:by:.\rCurrently the method literal is synthesized using the\r4 instruction sequence, and so the relocation could\ruse an adapted rewriteCallFull:.  But much better is to\ruse pc-relative addressing to produce the method\rliteral, which would result in a null\rrelocateMethodReferenceBeforeAddress:by:.\r\rSo make no attempt to implement\rrelocateMethodReferenceBeforeAddress:by:.\n\nVMMaker.oscog-eem.1223:\r\rFix frameless block return on RISCs; indeed the ret pc\ris in the LinkReg as it should be.\r\rAs a result one can evaluatre 3+4 in the Simulator using the ARM JIT.  We have two JITs :).","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/734f44e7d7d0240413fcebc539f16759c718a045"},{"sha":"aa3d3a37c18c95e590ccb4b467e3cf0f1851283b","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"- using pragmas to declare types instead legacy var:... type declaration.\n- using ancilliary structure for FT errors","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/aa3d3a37c18c95e590ccb4b467e3cf0f1851283b"},{"sha":"56efefab7c5d8139bfd4feca3c5bd061b87ff90c","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-tpr.1227:\r\rmake pushCw use pc relative values if it can to avoid long constant fabrication\n\nVMMaker.oscog-tpr.1226:\r\rFix a couple of not-implemented-for-ARM methds.\rCall correct relocate code in relocateCallsInClosedPIC:\n\nVMMaker.oscog-eem.1225:\r\rFix in-image compilation fakery so that there's no\rconfusion between entry-points and variables when\rdopign in-image compilation.","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/56efefab7c5d8139bfd4feca3c5bd061b87ff90c"},{"sha":"31faeabca5dc3559c35661b65edaa437d0a05cda","author":{"email":"d3cb118c87ff69afd37f2032a11662dca3224da4@gmail.com","name":"Esteban Lorenzano"},"message":"VMMaker.oscog-tpr.1230:\r\rWith the change to Word access for machineCode on ARM, I think we should probably fill any nops in word-wise or some odd effects may occur.\n\nVMMaker.oscog-eem.1229:\r\rCogARMCompiler:\rFix updating of call and jump instructions by splitting the\rcall/jump update from the callfull/jumpfull update.  Rename\rthe operand extractor to\rextract32BitOperandFrom4InstructionsPreceeding: and add\rinsert32BitOperand:into4InstructionsPreceeding: to go with.\rUse these to update instructions.\r\rModify machineCode array to be array of longs. Refactor\rmachine code output so that CogARMCompiler can spit\rout words while the x86 dribbles bytes.\r\rAvoid annotating the absolute CallFull/JumpFull instructions\rso that the update is simplified.\r\rNow the system survives a code compaction on ARM\ralthough it doesn't continue for long there-after.\n\nVMMaker.oscog-eem.1228:\r\rCogARMCompiler:\rFix pc-relative addressing for generating the\rmethod reference in frame build.  Attempting\rto use pc-relative addressing shouldn't have the\rside-effect of altering the value pushed when pc-\rrelative addressing can't be used.\r\rAccept that not all method references can be\rhandled this way (i.e. mehtod reference following\ra long generated primitive such as new:) and so\rmake relocateMethodReferenceBeforeAddress:by:\rhandle those rare cases.\r\rRecategorize.\r\rFix some stupidities in CurrentImageCoInterpreterFacade;\rperhaps the headerToMethodMap is unnecessary.","distinct":true,"url":"https://api.github.com/repos/estebanlm/pharo-vm/commits/31faeabca5dc3559c35661b65edaa437d0a05cda"}]}