Changeset 39e8406 in mainline for uspace/app/sbi/src/run_expr.c


Ignore:
Timestamp:
2010-03-20T21:57:13Z (14 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
b535aeb
Parents:
6ba20a6b
Message:

Update SBI to rev. 128.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/sbi/src/run_expr.c

    r6ba20a6b r39e8406  
    4343#include "stree.h"
    4444#include "strtab.h"
     45#include "tdata.h"
    4546
    4647#include "run_expr.h"
     
    7273static void run_new(run_t *run, stree_new_t *new_op, rdata_item_t **res);
    7374static 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);
    7576static 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);
    7778
    7879static void run_access(run_t *run, stree_access_t *access, rdata_item_t **res);
     
    199200                assert(csi != NULL);
    200201        } else {
    201                 csi = proc_ar->proc_sym->outer_csi;
     202                csi = proc_ar->proc->outer_symbol->outer_csi;
    202203                obj = NULL;
    203204        }
     
    231232                        printf("Error: Cannot access non-static member "
    232233                            "function '");
    233                         symbol_print_fqn(run->program, sym);
     234                        symbol_print_fqn(sym);
    234235                        printf("' from nested CSI '");
    235                         symbol_print_fqn(run->program, csi_sym);
     236                        symbol_print_fqn(csi_sym);
    236237                        printf("'.\n");
    237238                        exit(1);
     
    267268                        printf("Error: Cannot access non-static member "
    268269                            "variable '");
    269                         symbol_print_fqn(run->program, sym);
     270                        symbol_print_fqn(sym);
    270271                        printf("' from nested CSI '");
    271                         symbol_print_fqn(run->program, csi_sym);
     272                        symbol_print_fqn(csi_sym);
    272273                        printf("'.\n");
    273274                        exit(1);
     
    632633static void run_new(run_t *run, stree_new_t *new_op, rdata_item_t **res)
    633634{
    634         rdata_titem_t *titem;
     635        tdata_item_t *titem;
    635636
    636637#ifdef DEBUG_RUN_TRACE
     
    638639#endif
    639640        /* 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);
    641643
    642644        switch (titem->tic) {
     
    644646                run_new_array(run, new_op, titem, res);
    645647                break;
    646         case tic_tcsi:
     648        case tic_tobject:
    647649                run_new_object(run, new_op, titem, res);
    648650                break;
     
    656658/** Create new array. */
    657659static 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;
    661663        rdata_array_t *array;
    662664        rdata_var_t *array_var;
     
    744746/** Create new object. */
    745747static 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)
    747749{
    748750        rdata_object_t *obj;
     
    764766
    765767        /* Lookup object CSI. */
    766         assert(titem->tic == tic_tcsi);
    767         csi = titem->u.tcsi->csi;
     768        assert(titem->tic == tic_tobject);
     769        csi = titem->u.tobject->csi;
    768770        csi_sym = csi_to_symbol(csi);
    769771
     
    823825        printf("Run access operation on pre-evaluated base.\n");
    824826#endif
    825         vc = rdata_item_get_vc(arg);
     827        vc = run_item_get_vc(run, arg);
    826828
    827829        switch (vc) {
     
    883885        if (member == NULL) {
    884886                printf("Error: CSI '");
    885                 symbol_print_fqn(run->program, deleg_v->sym);
     887                symbol_print_fqn(deleg_v->sym);
    886888                printf("' has no member named '%s'.\n",
    887889                    strtab_get_str(access->member_name->sid));
     
    936938        if (member == NULL) {
    937939                printf("Error: Object of class '");
    938                 symbol_print_fqn(run->program, object->class_sym);
     940                symbol_print_fqn(object->class_sym);
    939941                printf("' has no member named '%s'.\n",
    940942                    strtab_get_str(access->member_name->sid));
     
    10301032#ifdef DEBUG_RUN_TRACE
    10311033        printf("Call function '");
    1032         symbol_print_fqn(run->program, deleg_v->sym);
     1034        symbol_print_fqn(deleg_v->sym);
    10331035        printf("'\n");
    10341036#endif
     
    10501052
    10511053        /* 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);
    10541055
    10551056        /* Fill in argument values. */
     
    10801081        run_expr(run, index->base, &rbase);
    10811082
    1082         vc = rdata_item_get_vc(rbase);
     1083        vc = run_item_get_vc(run, rbase);
    10831084
    10841085        /* Implicitly dereference. */
     
    10891090        }
    10901091
    1091         vc = rdata_item_get_vc(base_i);
     1092        vc = run_item_get_vc(run, base_i);
    10921093
    10931094        /* Evaluate arguments (indices). */
     
    12241225        printf("Run object index operation.\n");
    12251226#endif
    1226         (void) run;
    12271227        (void) index;
    12281228
     
    12521252        indexer_sym = symbol_search_csi(run->program, obj_csi, indexer_ident);
    12531253
     1254        if (indexer_sym == NULL) {
     1255                printf("Error: Accessing object which does not have an "
     1256                    "indexer.\n");
     1257                exit(1);
     1258        }
     1259
    12541260        /* Construct delegate. */
    12551261        object_d = rdata_deleg_new();
Note: See TracChangeset for help on using the changeset viewer.