|
From: Ian P. <ian...@in...> - 2004-04-09 00:26:14
|
On 08 Apr 2004, at 21:46, Bryce Kampjes wrote: > This sequence is possible if we change from integers having tag 1 to > integers having tag 0 leaving the tag in the lower bits. The Self > community wrote some nice papers on tagging and high performance > simple garbage collection. Teeny reminder (which may be irrelevant): Itanium cannot add -1 into an effective address without introducing an additional add instruction and stop bit (!) before each ld/st insn. (Unless I'm missing some neat trick on the Itanium? If so, someone please enlighten me! ;) > It would probably be more worthwhile looking at at: and at:put:. Could > Tim's improvements to primitives be used to create simple at: > primitives that are quick to execute? To get the same benefits as the existing at-cache you'd need two levels. The first in the method cache (to get you to the right accessor implementation, with fixed field size being stored in a // MC slot presumably?) then another instance-specific one (to get you to the object's indexable size). Maybe all this is saying is that we might want to rethink how object size is encoded in the header to make it trivially easy to extract the indexable size, whatever the format of the object. (What we really want is to generate format-specific accessor primtives on-the-fly. The fixed field size is then implicit in the implementation and all that's needed is the primitive implementation address slot in the method cache.) Bye, Ian |