index e897f6e98cb64913f5e58b9612ad8be3e7ef1c9c..feace6fe30e44ea9568b6c9f39ef7846a5286cde 100644 (file)
case OBERON_TYPE_STRING:
case OBERON_TYPE_SET:
case OBERON_TYPE_NIL:
+ case OBERON_TYPE_SYSTEM_BYTE:
+ case OBERON_TYPE_SYSTEM_PTR:
break;
case OBERON_TYPE_RECORD:
m = type -> module -> gen_mod;
{
if(x -> class == OBERON_CLASS_MODULE)
{
- jvm_generate(p, 0, 0, "invokestatic %s/BEGIN()V", x -> module -> gen_mod -> class -> full_name);
+ if(!x -> module -> intrinsic)
+ {
+ jvm_generate(p, 0, 0, "invokestatic %s/BEGIN()V", x -> module -> gen_mod -> class -> full_name);
+ }
}
else if(x -> class == OBERON_CLASS_VAR)
{
case OBERON_CLASS_VAR_PARAM:
case OBERON_CLASS_PARAM:
case OBERON_CLASS_VAR:
- jvm_generate_var(v);
jvm_generate_var_initialization(p, v);
break;
case OBERON_CLASS_PROC:
jvm_generate_ldst_prepare(p, expr -> item.var -> gen_var);
break;
case MODE_INDEX:
- push_item(p, (oberon_item_t *) expr -> item.parent);
+ push_item(p, expr -> item.parent);
push_expr(p, expr -> item.args);
break;
case MODE_FIELD:
- push_item(p, (oberon_item_t *) expr -> item.parent);
+ push_item(p, expr -> item.parent);
jvm_generate_ldst_prepare(p, expr -> item.var -> gen_var);
break;
+ case MODE_DEREF:
+ push_varptr(p, (oberon_expr_t *) expr -> item.parent);
+ break;
default:
gen_error("push_varptr: wat %i", expr -> item.mode);
break;