index 1225a86a23b4a0f1479b6a8fc0a0265b574a654b..581faf92c302bab84ce601e5087eeb39e480d4ef 100644 (file)
;
char postfix = jvm_get_postfix(item -> result);
int cell_size = jvm_cell_size_for_postfix(postfix);
- push_item(p, item -> parent);
+ assert(item -> parent -> is_item);
+ push_item(p, (oberon_item_t *) item -> parent);
push_expr(p, item -> args);
jvm_generate(p, 1 + 1, cell_size, "%caload", postfix);
break;
case MODE_FIELD:
- push_item(p, item -> parent);
+ assert(item -> parent -> is_item);
+ push_item(p, (oberon_item_t *) item -> parent);
jvm_generate_load(p, item -> result, item -> var -> gen_var);
break;
case MODE_DEREF:
/* Все объекты в jvm представляются как указатели */
- push_item(p, item -> parent);
+ assert(item -> parent -> is_item);
+ push_item(p, (oberon_item_t *) item -> parent);
break;
case MODE_NIL:
jvm_generate(p, 0, 1, "aconst_null");
jvm_generate_push_float(p, item -> real, item -> result -> size);
break;
case MODE_CAST:
- push_item(p, item -> parent);
+ push_expr(p, item -> parent);
jvm_generate_cast_type(p, item -> parent -> result, item -> result);
break;
default:
;
char postfix = jvm_get_postfix(src -> result);
int cell_size = jvm_cell_size_for_postfix(postfix);
- push_item(p, item -> parent);
+ assert(item -> parent -> is_item);
+ push_item(p, (oberon_item_t *) item -> parent);
push_expr(p, item -> args);
push_expr(p, src);
jvm_generate(p, 1 + 1 + cell_size, 0, "%castore", postfix);
break;
case MODE_FIELD:
- push_item(p, item -> parent);
+ assert(item -> parent -> is_item);
+ push_item(p, (oberon_item_t *) item -> parent);
push_expr(p, src);
jvm_generate_store(p, src -> result, item -> var -> gen_var);
break;