2016-01-24 21:38 GMT+01:00 stepharo <stepharo@free.fr>:
I did not forget just running against time and busy
Le 16/1/16 22:17, Nicolai Hess a écrit :
Another possible solution, don't convert strings to symbols in RBMethod/RBMessagenodes selectorParts ^ self keywords collect: #asSymbol. selector: aSelector keywordsPositions := nil. selector := aSelector asSymbol.
this of course needs some changes for the compiler to actually create methoddictionary keys and literals for message send by conferting them explicit to symobls. There are suprisingly few places to modify. But the same has to be done for accesses in RBRefactoring classes too. And this is not as easy to change as for the compiler :(
see attached changesets.
load with:
DangerousClassNotifier disableDuring:[ String subclass: #Symbol instanceVariableNames: '' classVariableNames: 'NewSymbols OneCharacterSymbols SymbolTable SelectorTable' package: 'Collections-Strings' ].
DangerousClassNotifier disableDuring:[ 'selectortable.1.cs' asFileReference fileIn. ]. Symbol initSelectorTable. 'use_selector_table.cs' asFileReference fileIn.
what do you think ?
(selectortable.cs defines SelectorTable and some methods in Symbol and String) (use_selector_table adds selectors as internedSelectorSymbol if this selector is set as a selector on CompiledMethod and uses findInternedSelector .... in RubStyler visitMessageNode)