Przeglądaj źródła

ncd: make statement indices 'int', and reorder some fields to make structs smaller

ambrop7 13 lat temu
rodzic
commit
350eff55df
1 zmienionych plików z 20 dodań i 17 usunięć
  1. 20 17
      ncd/ncd.c

+ 20 - 17
ncd/ncd.c

@@ -80,25 +80,25 @@ struct process {
     NCDProcess *proc_ast;
     NCDProcess *proc_ast;
     NCDInterpBlock *iblock;
     NCDInterpBlock *iblock;
     NCDModuleProcess *module_process;
     NCDModuleProcess *module_process;
-    size_t num_statements;
     struct process_statement *statements;
     struct process_statement *statements;
-    int state;
-    size_t ap;
-    size_t fp;
     BTimer wait_timer;
     BTimer wait_timer;
     BPending advance_job;
     BPending advance_job;
     BPending work_job;
     BPending work_job;
     LinkedList1Node list_node; // node in processes
     LinkedList1Node list_node; // node in processes
+    int state;
+    int ap;
+    int fp;
+    int num_statements;
 };
 };
 
 
 struct process_statement {
 struct process_statement {
     struct process *p;
     struct process *p;
-    size_t i;
-    int state;
-    int have_error;
     btime_t error_until;
     btime_t error_until;
     NCDModuleInst inst;
     NCDModuleInst inst;
     NCDValue inst_args;
     NCDValue inst_args;
+    int i;
+    int state;
+    int have_error;
 };
 };
 
 
 // command-line options
 // command-line options
@@ -155,7 +155,7 @@ static char * names_tostring (char **names);
 static int process_new (NCDProcess *proc_ast, NCDInterpBlock *iblock, NCDModuleProcess *module_process);
 static int process_new (NCDProcess *proc_ast, NCDInterpBlock *iblock, NCDModuleProcess *module_process);
 static void process_free (struct process *p);
 static void process_free (struct process *p);
 static void process_start_terminating (struct process *p);
 static void process_start_terminating (struct process *p);
-static size_t process_rap (struct process *p);
+static int process_rap (struct process *p);
 static void process_assert_pointers (struct process *p);
 static void process_assert_pointers (struct process *p);
 static void process_logfunc (struct process *p);
 static void process_logfunc (struct process *p);
 static void process_log (struct process *p, int level, const char *fmt, ...);
 static void process_log (struct process *p, int level, const char *fmt, ...);
@@ -163,9 +163,9 @@ static void process_schedule_work (struct process *p);
 static void process_work_job_handler (struct process *p);
 static void process_work_job_handler (struct process *p);
 static void process_advance_job_handler (struct process *p);
 static void process_advance_job_handler (struct process *p);
 static void process_wait_timer_handler (struct process *p);
 static void process_wait_timer_handler (struct process *p);
-static int process_find_object (struct process *p, size_t pos, const char *name, NCDObject *out_object);
-static int process_resolve_object_expr (struct process *p, size_t pos, char **names, NCDObject *out_object);
-static int process_resolve_variable_expr (struct process *p, size_t pos, char **names, NCDValue *out_value);
+static int process_find_object (struct process *p, int pos, const char *name, NCDObject *out_object);
+static int process_resolve_object_expr (struct process *p, int pos, char **names, NCDObject *out_object);
+static int process_resolve_variable_expr (struct process *p, int pos, char **names, NCDValue *out_value);
 static void process_statement_logfunc (struct process_statement *ps);
 static void process_statement_logfunc (struct process_statement *ps);
 static void process_statement_log (struct process_statement *ps, int level, const char *fmt, ...);
 static void process_statement_log (struct process_statement *ps, int level, const char *fmt, ...);
 static void process_statement_set_error (struct process_statement *ps);
 static void process_statement_set_error (struct process_statement *ps);
@@ -761,7 +761,7 @@ void process_start_terminating (struct process *p)
     process_schedule_work(p);
     process_schedule_work(p);
 }
 }
 
 
-size_t process_rap (struct process *p)
+int process_rap (struct process *p)
 {
 {
     if (p->ap > 0 && p->statements[p->ap - 1].state == SSTATE_CHILD) {
     if (p->ap > 0 && p->statements[p->ap - 1].state == SSTATE_CHILD) {
         return (p->ap - 1);
         return (p->ap - 1);
@@ -778,7 +778,7 @@ void process_assert_pointers (struct process *p)
     
     
 #ifndef NDEBUG
 #ifndef NDEBUG
     // check AP
     // check AP
-    for (size_t i = 0; i < p->ap; i++) {
+    for (int i = 0; i < p->ap; i++) {
         if (i == p->ap - 1) {
         if (i == p->ap - 1) {
             ASSERT(p->statements[i].state == SSTATE_ADULT || p->statements[i].state == SSTATE_CHILD)
             ASSERT(p->statements[i].state == SSTATE_ADULT || p->statements[i].state == SSTATE_CHILD)
         } else {
         } else {
@@ -787,7 +787,7 @@ void process_assert_pointers (struct process *p)
     }
     }
     
     
     // check FP
     // check FP
-    size_t fp = p->num_statements;
+    int fp = p->num_statements;
     while (fp > 0 && p->statements[fp - 1].state == SSTATE_FORGOTTEN) {
     while (fp > 0 && p->statements[fp - 1].state == SSTATE_FORGOTTEN) {
         fp--;
         fp--;
     }
     }
@@ -1063,8 +1063,9 @@ void process_wait_timer_handler (struct process *p)
     BPending_Set(&p->work_job);
     BPending_Set(&p->work_job);
 }
 }
 
 
-int process_find_object (struct process *p, size_t pos, const char *name, NCDObject *out_object)
+int process_find_object (struct process *p, int pos, const char *name, NCDObject *out_object)
 {
 {
+    ASSERT(pos >= 0)
     ASSERT(pos <= p->num_statements)
     ASSERT(pos <= p->num_statements)
     ASSERT(name)
     ASSERT(name)
     ASSERT(out_object)
     ASSERT(out_object)
@@ -1090,8 +1091,9 @@ int process_find_object (struct process *p, size_t pos, const char *name, NCDObj
     return 0;
     return 0;
 }
 }
 
 
-int process_resolve_object_expr (struct process *p, size_t pos, char **names, NCDObject *out_object)
+int process_resolve_object_expr (struct process *p, int pos, char **names, NCDObject *out_object)
 {
 {
+    ASSERT(pos >= 0)
     ASSERT(pos <= p->num_statements)
     ASSERT(pos <= p->num_statements)
     ASSERT(names)
     ASSERT(names)
     ASSERT(count_strings(names) > 0)
     ASSERT(count_strings(names) > 0)
@@ -1115,8 +1117,9 @@ fail:;
     return 0;
     return 0;
 }
 }
 
 
-int process_resolve_variable_expr (struct process *p, size_t pos, char **names, NCDValue *out_value)
+int process_resolve_variable_expr (struct process *p, int pos, char **names, NCDValue *out_value)
 {
 {
+    ASSERT(pos >= 0)
     ASSERT(pos <= p->num_statements)
     ASSERT(pos <= p->num_statements)
     ASSERT(names)
     ASSERT(names)
     ASSERT(count_strings(names) > 0)
     ASSERT(count_strings(names) > 0)