At 10:37 AM 12/3/2003 +0100, Leopold Toetsch wrote:
Melvin Smith <[EMAIL PROTECTED]> wrote:

> 1) Currently typenames are not checked except with 'new <classname>'

As Dan layed out WRT PMC enums, we might have to defer type checking to
runtime. That is for core PMCs we do strict type checking, other types
get resolved at runtime.

All I care is that IMCC checks that it is a valid class if the class is named,
otherwise use 'pmc' to defer checking but at least use the correct register set.


Even given what Steve said about no aliases, I'm considering keeping an
"object" alias to "pmc" for potential future cases where semantics may
diverge.

> C<.local <type> identifier> and C<.param <type> identifier> both assume
> that anything for type other than (int|float|string) is a PMC.


Yep. Some remarks:

.local <type> ident

collides with the macro syntax for local labels. So when doing something
here I'd resolve that conflict too and allow only:

.sym <type> ident # <type> ::= int|float|string|pmc

Since macros are the less common case I'll have a look to see which needs to change to resolve the conflict, macros or IMC.

I'm not sure but:

.newsym <type> ident

could be handy too, compiling to new Px, <.Type>

Ok.


And while at it, imcc should know of lexicals. E.g. when the register
allocator is out of regs, spilling lexicals to an array isn't necessary
- they already have a permanent store in the lexical pad.

The same thing goes for globals. I've been trying to get my head around both lately.

> 4) No implicit global labels with the label :== IDENTIFIER COLON syntax.

That's not easy. While its clear that a .sub is global there are more.
PASM mode comes to my mind and some nasty one: imcc/t/syn/eval_3 ff.

I need to think on this one some more as well.


Thanks for the comments.

-Melvin




Reply via email to