| J. Vitek and R. N. Horspool. Compact dispatch tables for dynamically typed object oriented languages. In T. Gyimothy, editor, Compiler Construction, 6 ### International Conference, volume 1060 of Lecture Notes in Computer Science, pages 309--325, Linkoping, Sweden, 24--26 Apr. 1996. Springer. |
....[6] the assignment of identi ers to selectors can be viewed as a graph coloring problem. Two selectors can be assigned the same color if they are never implemented by the same class. Using this approach, several algorithms have been proposed that greatly reduce the size of the dispatch tables [15, 4, 45, 44]. Unfortunately, all of these algorithms assume that the set of selectors and the classes that implement them are known a priori. Thus, previous selector coloring algorithms are a poor match for Java, since the JVM cannot know this information in advance. CACAO s second scheme for interface ....
J. Vitek and N. Horspool. Compact dispatch tables for dynamically typed object oriented languages. In Proceedings of International Conference on Compiler Construction (CC'96), pages 281-293, Apr. 1996. Published as LNCS vol 1060.
....case d = 1 is illustrative. One solution here is to tabulate the answers to all possible queries and look up the solution when needed; we refer to this as Algorithm A. This solution has O(1) query time. Unfortunately it uses O(nM) table space, which is prohibitively large for existing hierarchies [D93, M95, V95, FM96, MM96]. To cope with this, all known practical solutions use the observation that many queries return NIL. Thus they employ various heuristics to compress the non NIL entries of the table so the query time remains small. The best known theoretical bound for the case d = 1 is O(n m) space and O(log log ....
J. Vitek. Compact dispatch tables for dynamically--typed object--oriented languages. Research thesis, University of British Columbia, Vancouver, 1995.
....compression, all methods need a subtype test in the method prologue in dynamically typed languages. For statically typed languages, only the code stubs of overloaded entries need such a test. Subtype tests are implemented with a simple series of logical operations (a bit wise AND and a comparison) [129]. Figure 17 shows the code for a call through a CT dispatch table. This version of the algorithm (from [128] only handles single inheritance, because of the lack of fast type inclusion test for multiple inheritance. 1 1 Krall, Vitek and Horspool tackle his problem in [85] Vitek and Horspool ....
....Figure 17 shows the code for a call through a CT dispatch table. This version of the algorithm (from [128] only handles single inheritance, because of the lack of fast type inclusion test for multiple inheritance. 1 1 Krall, Vitek and Horspool tackle his problem in [85] Vitek and Horspool [129] present a version of the algorithm which improves dispatch speed and shortens the calling sequence on average. class = object class; cid = class cid; entry = class table[#selector] entry.func(object,cid,args) method prologue if (cid #markA = #cidA) error( Message Not Understood ) ....
Jan Vitek and R. N. Horspool. Compact Dispatch Tables for Dynamically Typed ObjectOriented Languages. Proceedings of 7th International Conference on Compiler Construction, CC'98, Lisbon, Portugal, March 1998. Published as Lecture Notes in Computer Science, Vol. 1383, Springer, 1998
....in a purely OOL may involve resolving a message expression (including, assignments, integer addition etc. implementations spend considerable time on method lookup (time spent on this varies depending on applications, languages etc. Some figures are: 23 in SOAR system [19] 26:9 in C programs [17], over 50 in [20] We study a dynamic version of the method lookup problem in which the hierarchy tree is fixed but classes can be frequently modified by addition or removal of methods. 3 This dynamic formulation can be easily reduced to the dynamic colored ancestors problem: adding removing a ....
....ancestors problem provided the hierarchy is recompiled for each update operation. This is unacceptable since the hierarchies are huge and recompilation is prohibitively time consuming (recompilation can be done while having lunch , or for large inheritance structures overnight Page 57 in [17]) It is preferable to have a method lookup procedure that incrementally adjusts the methods being added removed; this is most appropriately addressed within the paradigm of dynamic algorithms, as we do here. Status and Our Results. As a benchmark, we first review the bounds for the static ....
[Article contains additional citation context not shown here]
J. Vitek. Compact dispatch tables for dynamically--typed object--oriented languages. Research thesis, University of British Columbia, Vancouver, 1995.
....to (object class table [offsetOfSelector] The full dispatch table based dispatching mechanism is almost as fast as the VTBL technique, except for the additional function call for the messenger. 2. 4 Compressed Dispatch Table Since full dispatch tables are fairly sparse, researchers [1, 7, 6, 20, 22, 21] have developed techniques to reduce the space consumption of the full table while retaining the constant time message lookup. 2.4.1 Selector Colouring Compression of the dispatch table may be achieved by overloading column entries for those selectors which are not understood by instances of ....
....is suited to incremental compilation because it allows addition of new classes and selectors by just enlarging the first level of each class specific dispatch table. Furthermore, the extension is only needed for every 128 ( 8 16) newly added selectors. 2.4. 4 Compact Selector Indexing Vitek [21] proposed a combination of selector colouring and partitioning in order to speed up the message lookup in compressed tables. A rough approximation to colouring is used, in which possible conflicts are stored in a separate conflict table to handle overloaded selectors. The primary and the conflict ....
[Article contains additional citation context not shown here]
Jan Vitek. Compact dispatch tables for dynamically-typed object-oriented languages. Master's thesis, University of British Columbia, Vancouver, 1995. Personal communication: jvitek@cui.unige.ch.
....using caches to store frequent lookups. This solution, in the worst case, is reportedly 88 times slower than a simple function call in C [26] however it is significantly more efficient in practice. Recent works have focused on A and attempted to compress the table while retaining fast query time [1, 7, 6, 21, 26, 25]. We review a few of the state of art techniques. Selector coloring. The table in A is compressed by overlapping Null columns (selectors) of a class. This can be formalized in graph theoretic terms and the best overlapping is achieved by graph coloring (See [1, 7] for details) This solution is ....
....the GNUObjective C compiler [21] Rows of the table are split into chunks of equal size and identical chunks are stored as pointers to a single copy. Since many methods are inherited rather than redefined, the reusability achieved by this strategy is high especially if a 3 level splitting is used [21, 25]. Combinations of those methods have been proposed [25, 5, 13, 15, 17] but none of them seem to represent a good compromise between query time and table space. The sparse array implementation has a very low space consumption while remaining the fastest method for Objective C [21] In this paper, ....
[Article contains additional citation context not shown here]
Jan Vitek. Compact dispatch tables for dynamically--typed object--oriented languages. Master's thesis, University of British Columbia, Vancouver, 1995. Personal communication: jvitek@cui.unige.ch.
....as algorithms to compute these encodings and perform the type inclusion test. Our exploration of the design space of algorithms and encodings was driven by three requirements: 1. Runtime eciency: Type tests should be fast. Our original motivation for this research was to optimize method dispatch ([15], 14] To this end, the cost of testing for type inclusion had to be comparable to the cost of dispatch in statically typed languages (5 machine instructions, but see [8] We also insist on constant time tests 2 as we believe that the cost of language primitives should be predictable. 1 ....
....[1. N] of int32 row g (a) Runtime data structures. Type rep type : obj.type rep int32 word : type.row[#word pos] if (bit extract(word, #bit pos) 1) c) Type inclusion test. Figure 3: Binary Matrix (BM) Heuft [5] have in uenced works in the eld of dispatch table compression [7] [15]. The compact encoding is in fact a straightforward adaptation of compact dispatch tables of [15] 3.2.2 Cohen s Algorithm Cohen proposed the rst practical algorithm for performing subtype tests in constant time [3] Cohen s idea is a variation of Dijkstra s displays [6] Each type is identi ....
[Article contains additional citation context not shown here]
J. Vitek. Compact dispatch tables for dynamicallytyped object-oriented languages. M.sc. thesis, University of Victoria, April 1995.
....compression, all methods need a subtype test in the method prologue in dynamically typed languages. For staticallytyped languages, only the code stubs of overloaded entries need such a test. Subtype tests are implemented with a simple series of logical operations (a bit wise AND and a comparison)[Vit94]. Figure 11 shows the code for a call through a CT dispatch table. 5. Analysis 5.1 Parameters influencing performance To evaluate the performance of the dispatch mechanisms, we implemented the dispatch instruction sequence of each technique on a simple RISC like architecture. 2 Table A 2 in ....
Jan Vitek. Compact Dispatch Tables for Dynamically Typed Object-Oriented Languages. M.S. Thesis, University of Victoria, B.C., forthcoming
....algorithms to compute these encodings and perform the type inclusion test. Our exploration of the design space of algorithms and encodings was driven by three requirements: 1. Runtime efficiency: Type tests should be fast. Our original motivation for this research was to optimize method dispatch ([15], 14] To this end, the cost of testing for type inclusion had to be comparable to the cost of dispatch in statically typed languages (5 machine instructions, but see [8] We also insist on constant time tests 2 as we believe that the cost of language primitives should be predictable. 1 ....
....array [1. N] of int32 row g (a) Runtime data structures. Type rep type : obj.type rep int32 word : type.row[#word pos] if (bit extract(word, #bit pos) 1) c) Type inclusion test. Figure 3: Binary Matrix (BM) Heuft [5] have influenced works in the field of dispatch table compression [7] [15]. The compact encoding is in fact a straightforward adaptation of compact dispatch tables of [15] 3.2.2 Cohen s Algorithm Cohen proposed the first practical algorithm for performing subtype tests in constant time [3] Cohen s idea is a variation of Dijkstra s displays [6] Each type is ....
[Article contains additional citation context not shown here]
J. Vitek. Compact dispatch tables for dynamicallytyped object-oriented languages. M.sc. thesis, University of Victoria, April 1995.
....E 4 9 e (c) 6 7 5 2 3 1 0 4 9 C E A B D E B C A D (d) 6 prologue in dynamically typed languages. For statically typed languages, only the code stubs of overloaded entries need such a test. Subtype tests are implemented with a simple series of logical operations (a bit wise AND and a comparison) [Vit95]. Figure 11 shows the code for a call through a CT dispatch table. This version of the algorithm (from [VH94] only handles single inheritance, because of the lack of fast type inclusion test for multiple inheritance. 1 5 Analysis 5.1 Parameters influencing performance To evaluate the ....
....expensive, all but P97 can execute at most one load or store per cycle. Load latency. Because of pipelining, the result of a load started in cycle i is not available until cycle i L (i.e. the processor will stall if the result is used before that time) 1 This problem is tackled in [VH95] [Vit95] presents a version of the algorithm which improves dispatch speed and shortens the calling sequence. Unfortunately, we have not been able to analyze and measure this new version yet. 2 Assuming a RISC architecture simplifies the discussion, but our results are not restricted to RISC ....
Jan Vitek. Compact Dispatch Tables for Dynamically-Typed Object-Oriented Languages. M.S. Thesis, University of Victoria, B.C., forthcoming.
No context found.
J. Vitek and R. N. Horspool. Compact dispatch tables for dynamically typed object oriented languages. In T. Gyimothy, editor, Compiler Construction, 6 ### International Conference, volume 1060 of Lecture Notes in Computer Science, pages 309--325, Linkoping, Sweden, 24--26 Apr. 1996. Springer.
No context found.
Jan Vitek. Compact Dispatch Tables for Dynamically Typed Object-Oriented Languages. M.S. Thesis, University of Victoria, B.C., forthcoming
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC