[m-dev.] IL back-end & --high-level-data
Fergus Henderson
fjh at cs.mu.OZ.AU
Sat Aug 11 22:30:51 AEST 2001
Previously I had tried building the standard library with --high-level-data,
and discovered that we need to do the following to get it to work:
- fix the MC++ interface:
- add #using directives to *__cpp_code.
- fix MR_Word casts
- provide definitions for RTTI types (type_info, base_type_info, etc.)
- provide definitions for undefined library types (c_pointer, type_desc)
I tried getting tests/benchmarks/queens.m to work with --high-level-data,
modifying it by adding a definition of the list type to make it more
self-contained, so as to avoid needing to have the standard library built
woith --high-level-data. I discovered that there are a bunch more things
that we need to do to get --high-level-data working:
- fix the code that we generate for type definitions:
- MLDS problems
- fix bogus references to ".tag_type" that occur when
compiling with "--high-level-data --tags none"
- IL problems
- put type definitions before the code that uses them
- generate constructors for all class types
- use "/" separator (rather than ".") for references
to nested classes, e.g. "mercury.list.list_1/'[]_0'".
- name-mangle names such as "._2"? (is this necessary?)
Even that wasn't enough, though, because after manually fixing all of those
by editing the generated IL code, I was left with a program which
when run reported
Unhandled Exception: System.InvalidProgramException: Exception of type
System.InvalidProgramException was thrown.
at queens.mercury_code.main_2()
(null)
and this was a bit difficult to debug. I think that one is due to
not downcasting the values properly, since PEVerify reports the following
error message (among other things):
[IL]: Error: [queens.exe : queens.mercury_code::nodiag_3_p] [offset
0x0000001D] [opcode ldfld] [found objref 'queens.list_1'] [expected
objref 'cons_2'] Unexpected type on the stack.
Anyway, it looks like we still have a fair way to go to get --high-level-data
working for IL.
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
The University of Melbourne | of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to: mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions: mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------
More information about the developers
mailing list