This is the mail archive of the mailing list for the Kawa project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Path for void constants

First, there is a bug in QuoteExp : if value is null (like for
QuoteExp.nullExp), getType fails. It should return pointer_type. Here's the

diff -u -r1.4
---       1998/12/23 15:19:31     1.4
+++       2000/01/25 16:58:17
@@ -16,6 +16,8 @@
     if (value == Values.empty)
       return gnu.bytecode.Type.void_type;
+    if (value == null)
+      return gnu.bytecode.Type.pointer_type;
     return gnu.bytecode.Type.make(value.getClass());

Second, method Compilation.compileConstant (Object value, Target target)
emits a warning when 'value' is Values.empty and 'target' is a StackTarget
with a void type. I suppose it should not, since Values.empty (well, new
QuoteExp.voidExp, which value is Values.empty) seems to be the "void

The warning I get is :
<unknown>:116:26: warning - cannot convert literal (of type
gnu.mapping.Values) to void

I'm not sure yet if this case should be treated in Compilation. In that
case, I propose this patch:

diff -u -r1.26
---    2000/01/24 06:53:54     1.26
+++    2000/01/25 18:04:48
@@ -426,6 +426,8 @@
                    code.emitPushInt(val ? 1 : 0);
+               if (sig1 == 'V' && value == Values.empty)
+                 return;
            catch (ClassCastException ex)

Is it ok not to generate code in this case ?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]