Changeset 39e8406 in mainline for uspace/app/sbi/src/run_expr.c
- Timestamp:
- 2010-03-20T21:57:13Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- b535aeb
- Parents:
- 6ba20a6b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/sbi/src/run_expr.c
r6ba20a6b r39e8406 43 43 #include "stree.h" 44 44 #include "strtab.h" 45 #include "tdata.h" 45 46 46 47 #include "run_expr.h" … … 72 73 static void run_new(run_t *run, stree_new_t *new_op, rdata_item_t **res); 73 74 static void run_new_array(run_t *run, stree_new_t *new_op, 74 rdata_titem_t *titem, rdata_item_t **res);75 tdata_item_t *titem, rdata_item_t **res); 75 76 static void run_new_object(run_t *run, stree_new_t *new_op, 76 rdata_titem_t *titem, rdata_item_t **res);77 tdata_item_t *titem, rdata_item_t **res); 77 78 78 79 static void run_access(run_t *run, stree_access_t *access, rdata_item_t **res); … … 199 200 assert(csi != NULL); 200 201 } else { 201 csi = proc_ar->proc _sym->outer_csi;202 csi = proc_ar->proc->outer_symbol->outer_csi; 202 203 obj = NULL; 203 204 } … … 231 232 printf("Error: Cannot access non-static member " 232 233 "function '"); 233 symbol_print_fqn( run->program,sym);234 symbol_print_fqn(sym); 234 235 printf("' from nested CSI '"); 235 symbol_print_fqn( run->program,csi_sym);236 symbol_print_fqn(csi_sym); 236 237 printf("'.\n"); 237 238 exit(1); … … 267 268 printf("Error: Cannot access non-static member " 268 269 "variable '"); 269 symbol_print_fqn( run->program,sym);270 symbol_print_fqn(sym); 270 271 printf("' from nested CSI '"); 271 symbol_print_fqn( run->program,csi_sym);272 symbol_print_fqn(csi_sym); 272 273 printf("'.\n"); 273 274 exit(1); … … 632 633 static void run_new(run_t *run, stree_new_t *new_op, rdata_item_t **res) 633 634 { 634 rdata_titem_t *titem;635 tdata_item_t *titem; 635 636 636 637 #ifdef DEBUG_RUN_TRACE … … 638 639 #endif 639 640 /* Evaluate type expression */ 640 run_texpr(run, new_op->texpr, &titem); 641 run_texpr(run->program, run_get_current_csi(run), new_op->texpr, 642 &titem); 641 643 642 644 switch (titem->tic) { … … 644 646 run_new_array(run, new_op, titem, res); 645 647 break; 646 case tic_t csi:648 case tic_tobject: 647 649 run_new_object(run, new_op, titem, res); 648 650 break; … … 656 658 /** Create new array. */ 657 659 static void run_new_array(run_t *run, stree_new_t *new_op, 658 rdata_titem_t *titem, rdata_item_t **res)659 { 660 rdata_tarray_t *tarray;660 tdata_item_t *titem, rdata_item_t **res) 661 { 662 tdata_array_t *tarray; 661 663 rdata_array_t *array; 662 664 rdata_var_t *array_var; … … 744 746 /** Create new object. */ 745 747 static void run_new_object(run_t *run, stree_new_t *new_op, 746 rdata_titem_t *titem, rdata_item_t **res)748 tdata_item_t *titem, rdata_item_t **res) 747 749 { 748 750 rdata_object_t *obj; … … 764 766 765 767 /* Lookup object CSI. */ 766 assert(titem->tic == tic_t csi);767 csi = titem->u.t csi->csi;768 assert(titem->tic == tic_tobject); 769 csi = titem->u.tobject->csi; 768 770 csi_sym = csi_to_symbol(csi); 769 771 … … 823 825 printf("Run access operation on pre-evaluated base.\n"); 824 826 #endif 825 vc = r data_item_get_vc(arg);827 vc = run_item_get_vc(run, arg); 826 828 827 829 switch (vc) { … … 883 885 if (member == NULL) { 884 886 printf("Error: CSI '"); 885 symbol_print_fqn( run->program,deleg_v->sym);887 symbol_print_fqn(deleg_v->sym); 886 888 printf("' has no member named '%s'.\n", 887 889 strtab_get_str(access->member_name->sid)); … … 936 938 if (member == NULL) { 937 939 printf("Error: Object of class '"); 938 symbol_print_fqn( run->program,object->class_sym);940 symbol_print_fqn(object->class_sym); 939 941 printf("' has no member named '%s'.\n", 940 942 strtab_get_str(access->member_name->sid)); … … 1030 1032 #ifdef DEBUG_RUN_TRACE 1031 1033 printf("Call function '"); 1032 symbol_print_fqn( run->program,deleg_v->sym);1034 symbol_print_fqn(deleg_v->sym); 1033 1035 printf("'\n"); 1034 1036 #endif … … 1050 1052 1051 1053 /* Create procedure activation record. */ 1052 run_proc_ar_create(run, deleg_v->obj, deleg_v->sym, fun->body, 1053 &proc_ar); 1054 run_proc_ar_create(run, deleg_v->obj, fun->proc, &proc_ar); 1054 1055 1055 1056 /* Fill in argument values. */ … … 1080 1081 run_expr(run, index->base, &rbase); 1081 1082 1082 vc = r data_item_get_vc(rbase);1083 vc = run_item_get_vc(run, rbase); 1083 1084 1084 1085 /* Implicitly dereference. */ … … 1089 1090 } 1090 1091 1091 vc = r data_item_get_vc(base_i);1092 vc = run_item_get_vc(run, base_i); 1092 1093 1093 1094 /* Evaluate arguments (indices). */ … … 1224 1225 printf("Run object index operation.\n"); 1225 1226 #endif 1226 (void) run;1227 1227 (void) index; 1228 1228 … … 1252 1252 indexer_sym = symbol_search_csi(run->program, obj_csi, indexer_ident); 1253 1253 1254 if (indexer_sym == NULL) { 1255 printf("Error: Accessing object which does not have an " 1256 "indexer.\n"); 1257 exit(1); 1258 } 1259 1254 1260 /* Construct delegate. */ 1255 1261 object_d = rdata_deleg_new();
Note:
See TracChangeset
for help on using the changeset viewer.