Displaying 3 results from an estimated 3 matches for "defunion".
2008 Mar 27
0
[LLVMdev] Hooking the global symbol resolver
Hi Jonathan,
In the context of a static compiler, I would recommend that you
implement your own “on the side” symbol table in order to track this
state and perform on-demand instantiation as required. It is
worthwhile to consider the LLVM module to be a passive output sink,
not an active object.
The JIT compiler, by contrast, is an active object, cooperating with
its environment via
2008 Mar 27
2
[LLVMdev] Hooking the global symbol resolver
...rally useful for languages having well-integrated template
mechanisms. The approach you advocate may still be the best approach,
but I'ld like to make sure that we are having the same conversation.
Let me illustrate the problem concretely.
Consider the BitC primitive definition of lists:
(defunion (list 'a)
(cons 'a (list 'a))
nil)
Modulo surface syntax, this looks on first inspection to be exactly like
the corresponding definitions in ML or Haskell. But in ML or Haskell
there is only one run-time "expansion" of this type, because all of the
possible element ty...
2008 Mar 26
4
[LLVMdev] Hooking the global symbol resolver
Okay, we're starting to dig in, and I've hit a question that will no
doubt seem strange.
Context: BitC is a polymorphic language. Since it has unboxed value
types, our approach to compiling a polymorphic function is to
polyinstantate it -- once for each signature.
The name mangling scheme is both stable and reversible. At the site of
the use occurrence, we can fully determine the mangled