index 0295e47c145d4081113e9271d78c12af4da5e2a8..e6a26bdbb3d8230733f43e5f4232869f3fea786d 100644 (file)
}
}
+void
+oberon_generator_init_temp_var(oberon_context_t * ctx, oberon_object_t * var)
+{
+ assert(var -> class == OBERON_CLASS_VAR);
+
+ gen_var_t * v = oberon_generator_new_var();
+ var -> gen_var = v;
+
+ gen_module_t * m;
+ m = ctx -> mod -> gen_mod;
+
+ gen_proc_t * p;
+ p = m -> class -> p;
+
+ bool wide;
+ wide = jvm_is_wide_type(var -> type);
+
+ jvm_generate_and_init_local_var(v, p, wide);
+}
+
void
oberon_generator_init_proc(oberon_context_t * ctx, oberon_object_t * proc)
{
case OP_LOGIC_AND:
jvm_generate_logical_and(p, oper -> left, oper -> right);
break;
+
+ case OP_IS:
+ preq = oper -> right -> result;
+ char * cname = jvm_get_class_full_name(preq);
+ push_expr(p, oper -> left);
+ jvm_generate(p, 1, 1, "instanceof %s", cname);
+ break;
default:
gen_error("push_oper: unk op %i", op);
break;