[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Nathaniel Gray <n8gray@g...> |
| Subject: | Representation of objects |
I've been poking around a bit into the representation of objects in OCaml and I'm a bit confused. Based on caml_get_public_method in asmrun/obj.c and various bits of stdlib/camlinternalOO.ml I see that the method table is an "array" where the even entries are closures and the odd entries "tags" -- hashed method names. (The first two entries are special.) The table is stored sorted in order of increasing tag value. Please correct me if I've misunderstood something here. I've got two questions: 1. Does this mean that essentially all method invocations need to search the method table? The method table of a superclass is no longer a prefix of that of a subclass. There's a GETMETHOD(i,obj) bytecode, but I'm struggling to figure out when you could use it. 2. What about hash collisions? There's no collision resolution code in the method lookup functions. Cheers, -n8 -- >>>-- Nathaniel Gray -- Caltech Computer Science ------> >>>-- Mojave Project -- http://mojave.cs.caltech.edu -->