[
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: | Jacques Garrigue <garrigue@m...> |
| Subject: | Re: [Caml-list] Representation of objects |
From: Nathaniel Gray <n8gray@gmail.com> > 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. Correct. > 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. >From other posts, it seems that you have found caml_get_public_method. > 2. What about hash collisions? There's no collision resolution code > in the method lookup functions. The type system prevents them. That is, if there is a potential collision between tag names, it will be detected at compile time. Jacques Garrigue