2015-10-07 16:49 GMT+02:00 Marcus Denker <[email protected]>: > > > On 07 Oct 2015, at 15:49, Marco Naddeo <[email protected]> wrote: > > > > Hi, > > > > I have some problems with the large block at bottom: > > > > -sending the message argumentNames gives me an empty array #() > > -sending the message sourceNode gives me a strange result and not a > RBBlockNode, as I would expect > > > > This happens already with: > > [ :h :s :v | | min chroma hdash X red green blue | ] sourceNode > > I will check⦠it is a bug in the mapping pc -> AST. >
That's interesting, the way the pc is mapped to the AST (ir instructionForPC: ) takes the "length" of the instruction bytecode into account and the length of a pushclosure includes all bytes needed for the pushing the local temps (pushConstant nil. pushConstant nil ....) But the startPC of a block context starts at the first push, not after, that means self method sourceNodeForPC: self startpc - 1 starts the search after the push closure bytecode but before any push local temp byte code. Either we don't include the bytecodes for the "pushConstant:nil" in the bytecode offset, or we start the search at self method sourceNodeForPC: self startpc - 1 + self numLocalTemps > > Marcus > > > > > >
