Color yzw

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
21 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Color yzw

Denis Kudriashov
And it is in 50556

2016-01-29 13:39 GMT+01:00 Nicolai Hess <[hidden email]>:


2016-01-29 13:10 GMT+01:00 Denis Kudriashov <[hidden email]>:
Hi Nicolai.
Now your proposals in slice 17496.
We change it a little bit: we make SelectorsTable lazy. And code completion uses it too.

+1,

Let's see if it works :)
Thanks

 

2016-01-16 22:17 GMT+01:00 Nicolai Hess <[hidden email]>:


2016-01-16 13:46 GMT+01:00 Marcus Denker <[hidden email]>:

On 16 Jan 2016, at 13:26, Nicolai Hess <[hidden email]> wrote:



2016-01-16 10:11 GMT+01:00 Marcus Denker <[hidden email]>:

anyone an idea?

I'm trying to think.
Looks like it would be good to be able to make a distinction between symbols and selectors (selectors installed
in method dictionaries)


yes, this would improve code completion a bit, too, as there are more symbols than symbols that are actually names
of methods.

The data could be created per environment (Smalltalk globals) the first time and then cached till shutdown.
(it would be an array of size 46451, pointing to existing symbols).

The environment could cache sent selectors, too… pablo did an experiment with that.

Marcus 


How about a new SymbolTable "SelectorTable" that gets new entries on every method compilation ?

maybe better when a method is added to a Method Dictionary? This way even adding things the strange
way would work...

I tried some methods from TBehavior basicAddSelector:withMethod:
but for example Nautilus, directly modifies method dict
 


I hacked a simple experimental version.
But I don't yet understand the workflow for initialisation of the Symbol class (with rehash, interned, and compacting).


If we hook into adding methods, then compactSymbolTable and rehash could just reset the SelectorTable and fill it after by going over all methods… 


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)
 


Marcus





12