Changeset 636
- Timestamp:
- May 11, 2011, 1:26:15 AM (11 years ago)
- Location:
- abuse/trunk/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
abuse/trunk/src/chars.cpp
r635 r636 208 208 if so report a conflict if any occur */ 209 209 LSymbol *s=(LSymbol *)symbol; 210 if (DEFINEDP(s-> value) && (item_type(s->value)!=L_OBJECT_VAR))210 if (DEFINEDP(s->m_value) && (item_type(s->m_value)!=L_OBJECT_VAR)) 211 211 { 212 212 ((LObject *)symbol)->Print(); 213 213 lbreak("symbol already has a value, cannot instantiate an object varible"); 214 214 exit(0); 215 } else if (DEFINEDP(s-> value))216 { 217 int index =((LObjectVar *)s->value)->index;215 } else if (DEFINEDP(s->m_value)) 216 { 217 int index = ((LObjectVar *)s->m_value)->m_index; 218 218 if (index<tiv) 219 219 { … … 337 337 if (f==l_abil) 338 338 { 339 void *l=CDR(CAR(field));339 LObject *l = CDR(CAR(field)); 340 340 PtrRef r4(l); 341 341 for (i=0; i<TOTAL_ABILITIES; i++) 342 342 { 343 Cell *ab =assoc(LSymbol::FindOrCreate(ability_names[i]),l);343 Cell *ab = LSymbol::FindOrCreate(ability_names[i])->Assoc(l); 344 344 PtrRef r5(ab); 345 345 if (!NILP(ab)) … … 348 348 } else if (f==l_funs) 349 349 { 350 void *l=CDR(CAR(field));350 LObject *l = CDR(CAR(field)); 351 351 PtrRef r4(l); 352 352 for (i=0; i<TOTAL_OFUNS; i++) 353 353 { 354 Cell *ab =assoc(LSymbol::FindOrCreate(ofun_names[i]),l);354 Cell *ab = LSymbol::FindOrCreate(ofun_names[i])->Assoc(l); 355 355 PtrRef r5(ab); 356 356 if (!NILP(ab) && lcar(lcdr(ab))) … … 359 359 } else if (f==l_flags) 360 360 { 361 void *l=CDR(CAR(field));361 LObject *l = CDR(CAR(field)); 362 362 PtrRef r4(l); 363 363 for (i=0; i<TOTAL_CFLAGS; i++) 364 364 { 365 Cell *ab=assoc(LSymbol::FindOrCreate(cflag_names[i]),l); 365 366 Cell *ab = LSymbol::FindOrCreate(cflag_names[i])->Assoc(l); 366 367 PtrRef r5(ab); 367 368 if (!NILP(ab) && lcar(lcdr(ab))->Eval()) … … 456 457 457 458 458 Cell *mrph =assoc(l_morph,desc); // check for morph info459 Cell *mrph = l_morph->Assoc(desc); // check for morph info 459 460 morph_power=0; 460 461 if (!NILP(mrph)) … … 465 466 } else morph_mask=-1; 466 467 467 Cell *sa =assoc(l_state_art,desc);468 Cell *sa = l_state_art->Assoc(desc); 468 469 if (NILP(sa)) 469 470 { … … 484 485 } 485 486 486 Cell *range =assoc(l_range,desc);487 Cell *range = l_range->Assoc(desc); 487 488 if (!NILP(range)) 488 489 { … … 498 499 499 500 500 Cell *mf =assoc(l_fields,desc);501 Cell *mf = l_fields->Assoc(desc); 501 502 if (!NILP(mf)) 502 503 { … … 512 513 if (find<0) 513 514 { 514 lprint( assoc(l_fields,desc));515 lprint(l_fields->Assoc(desc)); 515 516 printf("fields : no such var name \"%s\"\n",name); 516 517 printf("current possiblities are : \n"); … … 529 530 530 531 531 Cell *lg =assoc(l_logo,desc);532 Cell *lg = l_logo->Assoc(desc); 532 533 if (NILP(lg)) 533 534 { -
abuse/trunk/src/compiled.cpp
r555 r636 48 48 if (sym) 49 49 { 50 if (item_type(((LSymbol *)sym)-> value)!=L_NUMBER)50 if (item_type(((LSymbol *)sym)->m_value)!=L_NUMBER) 51 51 compile_error=1; 52 52 else 53 return lnumber_value(((LSymbol *)sym)-> value);53 return lnumber_value(((LSymbol *)sym)->m_value); 54 54 } else compile_error=1; 55 55 return 0; -
abuse/trunk/src/lcache.cpp
r555 r636 84 84 break; 85 85 case L_CHARACTER: 86 fp->write_uint16( lcharacter_value(level));86 fp->write_uint16(((LChar *)level)->GetValue()); 87 87 break; 88 88 case L_STRING: … … 126 126 LList *c = LList::Create(); 127 127 if (first) 128 last-> cdr = c;128 last->m_cdr = c; 129 129 else 130 130 first = c; 131 131 last = c; 132 132 } 133 last-> cdr = (t < 0) ? (LObject *)load_block(fp) : NULL;133 last->m_cdr = (t < 0) ? (LObject *)load_block(fp) : NULL; 134 134 135 135 last = first; 136 for (size_t count = abs(t); count--; last = (LList *)last-> cdr)137 last-> car = load_block(fp);136 for (size_t count = abs(t); count--; last = (LList *)last->m_cdr) 137 last->m_car = load_block(fp); 138 138 return first; 139 139 } -
abuse/trunk/src/lisp/lisp.cpp
r635 r636 191 191 { 192 192 if (this == &LSpace::Perm || this == &LSpace::Tmp) 193 Lisp GC::CollectSpace(this, 0);193 Lisp::CollectSpace(this, 0); 194 194 195 195 if (size > GetFree()) 196 Lisp GC::CollectSpace(this, 1);196 Lisp::CollectSpace(this, 1); 197 197 198 198 if (size > GetFree()) … … 228 228 229 229 LArray *p = (LArray *)LSpace::Current->Alloc(size); 230 p-> type = L_1D_ARRAY;231 p-> len = len;230 p->m_type = L_1D_ARRAY; 231 p->m_len = len; 232 232 LObject **data = p->GetData(); 233 233 memset(data, 0, len * sizeof(LObject *)); … … 281 281 282 282 LFixedPoint *p = (LFixedPoint *)LSpace::Current->Alloc(size); 283 p-> type = L_FIXED_POINT;284 p-> x= x;283 p->m_type = L_FIXED_POINT; 284 p->m_fixed = x; 285 285 return p; 286 286 } … … 291 291 292 292 LObjectVar *p = (LObjectVar *)LSpace::Current->Alloc(size); 293 p-> type = L_OBJECT_VAR;294 p-> index = index;293 p->m_type = L_OBJECT_VAR; 294 p->m_index = index; 295 295 return p; 296 296 } … … 303 303 304 304 LPointer *p = (LPointer *)LSpace::Current->Alloc(size); 305 p-> type = L_POINTER;306 p-> addr = addr;305 p->m_type = L_POINTER; 306 p->m_addr = addr; 307 307 return p; 308 308 } … … 313 313 314 314 LChar *c = (LChar *)LSpace::Current->Alloc(size); 315 c-> type = L_CHARACTER;316 c-> ch = ch;315 c->m_type = L_CHARACTER; 316 c->m_ch = ch; 317 317 return c; 318 318 } … … 321 321 { 322 322 LString *s = Create(strlen(string) + 1); 323 strcpy(s-> str, string);323 strcpy(s->m_str, string); 324 324 return s; 325 325 } … … 328 328 { 329 329 LString *s = Create(length + 1); 330 memcpy(s-> str, string, length);331 s-> str[length] = 0;330 memcpy(s->m_str, string, length); 331 s->m_str[length] = 0; 332 332 return s; 333 333 } … … 338 338 339 339 LString *s = (LString *)LSpace::Current->Alloc(size); 340 s-> type = L_STRING;341 s-> str[0] = '\0';340 s->m_type = L_STRING; 341 s->m_str[0] = '\0'; 342 342 return s; 343 343 } … … 350 350 351 351 LUserFunction *lu = (LUserFunction *)LSpace::Current->Alloc(size); 352 lu-> type = L_USER_FUNCTION;352 lu->m_type = L_USER_FUNCTION; 353 353 lu->arg_list = arg_list; 354 354 lu->block_list = block_list; … … 364 364 ? (LSysFunction *)LSpace::Gc.Alloc(size) 365 365 : (LSysFunction *)LSpace::Perm.Alloc(size); 366 ls-> type = L_SYS_FUNCTION;366 ls->m_type = L_SYS_FUNCTION; 367 367 ls->min_args = min_args; 368 368 ls->max_args = max_args; … … 374 374 { 375 375 LSysFunction *ls = new_lisp_sys_function(min_args, max_args, fun_number); 376 ls-> type = L_C_FUNCTION;376 ls->m_type = L_C_FUNCTION; 377 377 return ls; 378 378 } … … 381 381 { 382 382 LSysFunction *ls = new_lisp_sys_function(min_args, max_args, fun_number); 383 ls-> type = L_C_BOOL;383 ls->m_type = L_C_BOOL; 384 384 return ls; 385 385 } … … 388 388 { 389 389 LSysFunction *ls = new_lisp_sys_function(min_args, max_args, fun_number); 390 ls-> type = L_L_FUNCTION;390 ls->m_type = L_L_FUNCTION; 391 391 return ls; 392 392 } … … 399 399 PtrRef ref(s); 400 400 401 s-> type = L_SYMBOL;402 s-> name = LString::Create(name);403 s-> value = l_undefined;404 s-> function = l_undefined;401 s->m_type = L_SYMBOL; 402 s->m_name = LString::Create(name); 403 s->m_value = l_undefined; 404 s->m_function = l_undefined; 405 405 #ifdef L_PROFILE 406 406 s->time_taken = 0; … … 414 414 415 415 LNumber *n = (LNumber *)LSpace::Current->Alloc(size); 416 n-> type = L_NUMBER;417 n-> num = num;416 n->m_type = L_NUMBER; 417 n->m_num = num; 418 418 return n; 419 419 } … … 424 424 425 425 LList *c = (LList *)LSpace::Current->Alloc(size); 426 c-> type = L_CONS_CELL;427 c-> car = NULL;428 c-> cdr = NULL;426 c->m_type = L_CONS_CELL; 427 c->m_car = NULL; 428 c->m_cdr = NULL; 429 429 return c; 430 430 } … … 477 477 } 478 478 #endif 479 return ((LPointer *)lpointer)-> addr;479 return ((LPointer *)lpointer)->m_addr; 480 480 } 481 481 482 482 int32_t lnumber_value(void *lnumber) 483 483 { 484 switch (item_type(lnumber)) 485 { 486 case L_NUMBER : 487 return ((LNumber *)lnumber)->num; 488 case L_FIXED_POINT : 489 return (((LFixedPoint *)lnumber)->x)>>16; 490 case L_STRING : 491 return (uint8_t)*lstring_value(lnumber); 492 case L_CHARACTER : 493 return lcharacter_value(lnumber); 494 default : 495 { 496 ((LObject *)lnumber)->Print(); 497 lbreak(" is not a number\n"); 498 exit(0); 499 } 500 } 501 return 0; 484 switch (item_type(lnumber)) 485 { 486 case L_NUMBER: 487 return ((LNumber *)lnumber)->m_num; 488 case L_FIXED_POINT: 489 return ((LFixedPoint *)lnumber)->m_fixed >> 16; 490 case L_STRING: 491 return (uint8_t)*lstring_value(lnumber); 492 case L_CHARACTER: 493 return ((LChar *)lnumber)->m_ch; 494 default: 495 ((LObject *)lnumber)->Print(); 496 lbreak(" is not a number\n"); 497 exit(0); 498 } 499 return 0; 502 500 } 503 501 … … 512 510 } 513 511 #endif 514 return str;512 return m_str; 515 513 } 516 514 … … 526 524 if (!c) return NULL; 527 525 else if (item_type(c)==(ltype)L_CONS_CELL) 528 return ((LList *)c)-> cdr;526 return ((LList *)c)->m_cdr; 529 527 else 530 528 return NULL; … … 535 533 if (!c) return NULL; 536 534 else if (item_type(c)==(ltype)L_CONS_CELL) 537 return ((LList *)c)-> car;535 return ((LList *)c)->m_car; 538 536 else return NULL; 539 537 } 540 538 541 uint16_t lcharacter_value(void *c)539 uint16_t LChar::GetValue() 542 540 { 543 541 #ifdef TYPE_CHECKING 544 if (item_type(c)!=L_CHARACTER)545 {546 ((LObject *)c)->Print();547 lbreak("is not a character\n");548 exit(0);549 }550 #endif 551 return ((LChar *)c)->ch;542 if (item_type(this) != L_CHARACTER) 543 { 544 Print(); 545 lbreak("is not a character\n"); 546 exit(0); 547 } 548 #endif 549 return m_ch; 552 550 } 553 551 … … 557 555 { 558 556 case L_NUMBER : 559 return ((LNumber *)c)-> num<<16; break;557 return ((LNumber *)c)->m_num<<16; break; 560 558 case L_FIXED_POINT : 561 return (((LFixedPoint *)c)-> x); break;559 return (((LFixedPoint *)c)->m_fixed); break; 562 560 default : 563 561 { … … 578 576 if (t1!=t2) return NULL; 579 577 else if (t1==L_NUMBER) 580 { if (((LNumber *)n1)-> num==((LNumber *)n2)->num)578 { if (((LNumber *)n1)->m_num==((LNumber *)n2)->m_num) 581 579 return true_symbol; 582 580 else return NULL; 583 581 } else if (t1==L_CHARACTER) 584 582 { 585 if (((LChar *)n1)-> ch==((LChar *)n2)->ch)583 if (((LChar *)n1)->m_ch==((LChar *)n2)->m_ch) 586 584 return true_symbol; 587 585 else return NULL; … … 598 596 { 599 597 #ifdef TYPE_CHECKING 600 if ( type != L_1D_ARRAY)598 if (m_type != L_1D_ARRAY) 601 599 { 602 600 Print(); … … 605 603 } 606 604 #endif 607 if (x >= (int) len || x < 0)605 if (x >= (int)m_len || x < 0) 608 606 { 609 607 lbreak("array reference out of bounds (%d)\n", x); 610 608 exit(0); 611 609 } 612 return data[x];610 return m_data[x]; 613 611 } 614 612 … … 758 756 for (cs=(LList *)symbol_list; cs; cs=(LList *)CDR(cs)) 759 757 { 760 if (!strcmp( ((char *)((LSymbol *)cs-> car)->name)+sizeof(LString), name))761 return (LSymbol *)(cs-> car);758 if (!strcmp( ((char *)((LSymbol *)cs->m_car)->m_name)+sizeof(LString), name)) 759 return (LSymbol *)(cs->m_car); 762 760 } 763 761 return NULL; … … 777 775 cs=LList::Create(); 778 776 s=new_lisp_symbol(name); 779 cs-> car=s;780 cs-> cdr=symbol_list;777 cs->m_car=s; 778 cs->m_cdr=symbol_list; 781 779 symbol_list=cs; 782 780 LSpace::Current = sp; … … 792 790 while (p) 793 791 { 794 int cmp = strcmp(name, p-> name->GetString());792 int cmp = strcmp(name, p->m_name->GetString()); 795 793 if (cmp == 0) 796 794 return p; 797 p = (cmp < 0) ? p-> left : p->right;795 p = (cmp < 0) ? p->m_left : p->m_right; 798 796 } 799 797 return NULL; … … 806 804 while (p) 807 805 { 808 int cmp = strcmp(name, p-> name->GetString());806 int cmp = strcmp(name, p->m_name->GetString()); 809 807 if (cmp == 0) 810 808 return p; 811 parent = (cmp < 0) ? &p-> left : &p->right;809 parent = (cmp < 0) ? &p->m_left : &p->m_right; 812 810 p = *parent; 813 811 } … … 818 816 LSpace::Current = &LSpace::Perm; 819 817 818 // These permanent objects cannot be GCed, so malloc() them 820 819 p = (LSymbol *)malloc(sizeof(LSymbol)); 821 p-> type = L_SYMBOL;822 p-> name = LString::Create(name);820 p->m_type = L_SYMBOL; 821 p->m_name = LString::Create(name); 823 822 824 823 // If constant, set the value to ourself 825 p-> value = (name[0] == ':') ? p : l_undefined;826 p-> function = l_undefined;824 p->m_value = (name[0] == ':') ? p : l_undefined; 825 p->m_function = l_undefined; 827 826 #ifdef L_PROFILE 828 827 p->time_taken = 0; 829 828 #endif 830 p-> left = p->right = NULL;829 p->m_left = p->m_right = NULL; 831 830 *parent = p; 832 831 count++; … … 840 839 if (root) 841 840 { 842 DeleteAllSymbols(root-> left);843 DeleteAllSymbols(root-> right);841 DeleteAllSymbols(root->m_left); 842 DeleteAllSymbols(root->m_right); 844 843 free(root); 845 844 } 846 845 } 847 846 848 void *assoc(void *item, void *list) 849 { 850 if (item_type(list)!=(ltype)L_CONS_CELL) 847 LObject *LObject::Assoc(LObject *item) 848 { 849 if (item_type(this) != L_CONS_CELL) 850 return NULL; 851 852 LObject *list = this; 853 while (list) 854 { 855 if (lisp_eq(CAR(CAR(list)), item)) 856 return lcar(list); 857 list = CDR(list); 858 } 859 851 860 return NULL; 852 else853 {854 while (list)855 {856 if (lisp_eq(CAR(CAR(list)), item))857 return lcar(list);858 list=(LList *)(CDR(list));859 }860 }861 return NULL;862 861 } 863 862 … … 907 906 first = cur; 908 907 if (last) 909 last-> cdr = cur;908 last->m_cdr = cur; 910 909 last = cur; 911 910 912 911 LList *cell = LList::Create(); 913 912 tmp = (LObject *)lcar(list1); 914 cell-> car = tmp;913 cell->m_car = tmp; 915 914 tmp = (LObject *)lcar(list2); 916 cell-> cdr = tmp;917 cur-> car = cell;918 919 list1 = ((LList *)list1)-> cdr;920 list2 = ((LList *)list2)-> cdr;921 } 922 cur-> cdr = (LObject *)list3;915 cell->m_cdr = tmp; 916 cur->m_car = cell; 917 918 list1 = ((LList *)list1)->m_cdr; 919 list2 = ((LList *)list2)->m_cdr; 920 } 921 cur->m_cdr = (LObject *)list3; 923 922 ret=first; 924 923 } else ret=NULL; … … 926 925 } 927 926 928 void LSymbol::SetFunction(LObject *fun )929 { 930 function = fun;927 void LSymbol::SetFunction(LObject *function) 928 { 929 m_function = function; 931 930 } 932 931 … … 935 934 need_perm_space("add_sys_function"); 936 935 LSymbol *s = LSymbol::FindOrCreate(name); 937 if (s-> function!=l_undefined)936 if (s->m_function!=l_undefined) 938 937 { 939 938 lbreak("add_sys_fucntion -> symbol %s already has a function\n", name); 940 939 exit(0); 941 940 } 942 else s-> function=new_lisp_sys_function(min_args, max_args, number);941 else s->m_function=new_lisp_sys_function(min_args, max_args, number); 943 942 return s; 944 943 } … … 948 947 need_perm_space("add_c_object"); 949 948 LSymbol *s=(LSymbol *)symbol; 950 if (s-> value!=l_undefined)949 if (s->m_value!=l_undefined) 951 950 { 952 951 lbreak("add_c_object -> symbol %s already has a value\n", lstring_value(s->GetName())); 953 952 exit(0); 954 953 } 955 else s-> value=LObjectVar::Create(index);954 else s->m_value=LObjectVar::Create(index); 956 955 return NULL; 957 956 } … … 962 961 need_perm_space("add_c_function"); 963 962 LSymbol *s = LSymbol::FindOrCreate(name); 964 if (s-> function!=l_undefined)963 if (s->m_function!=l_undefined) 965 964 { 966 965 lbreak("add_sys_fucntion -> symbol %s already has a function\n", name); 967 966 exit(0); 968 967 } 969 else s-> function=new_lisp_c_function(min_args, max_args, number);968 else s->m_function=new_lisp_c_function(min_args, max_args, number); 970 969 return s; 971 970 } … … 976 975 need_perm_space("add_c_bool_fun"); 977 976 LSymbol *s = LSymbol::FindOrCreate(name); 978 if (s-> function!=l_undefined)977 if (s->m_function!=l_undefined) 979 978 { 980 979 lbreak("add_sys_fucntion -> symbol %s already has a function\n", name); 981 980 exit(0); 982 981 } 983 else s-> function=new_lisp_c_bool(min_args, max_args, number);982 else s->m_function=new_lisp_c_bool(min_args, max_args, number); 984 983 return s; 985 984 } … … 991 990 need_perm_space("add_c_bool_fun"); 992 991 LSymbol *s = LSymbol::FindOrCreate(name); 993 if (s-> function!=l_undefined)992 if (s->m_function!=l_undefined) 994 993 { 995 994 lbreak("add_sys_fucntion -> symbol %s already has a function\n", name); 996 995 exit(0); 997 996 } 998 else s-> function=new_user_lisp_function(min_args, max_args, number);997 else s->m_function=new_user_lisp_function(min_args, max_args, number); 999 998 return s; 1000 999 } … … 1076 1075 PtrRef r1(object), r2(list); 1077 1076 LList *c = LList::Create(); 1078 c-> car = (LObject *)object;1079 c-> cdr = (LObject *)list;1077 c->m_car = (LObject *)object; 1078 c->m_cdr = (LObject *)list; 1080 1079 list=c; 1081 1080 } … … 1099 1098 PtrRef r1(cs), r2(c2); 1100 1099 1101 ((LList *)cs)-> car=quote_symbol;1100 ((LList *)cs)->m_car=quote_symbol; 1102 1101 c2 = LList::Create(); 1103 1102 tmp=Compile(code); 1104 ((LList *)c2)-> car = (LObject *)tmp;1105 ((LList *)c2)-> cdr=NULL;1106 ((LList *)cs)-> cdr = (LObject *)c2;1103 ((LList *)c2)->m_car = (LObject *)tmp; 1104 ((LList *)c2)->m_cdr=NULL; 1105 ((LList *)cs)->m_cdr = (LObject *)c2; 1107 1106 ret=cs; 1108 1107 } … … 1112 1111 PtrRef r1(cs), r2(c2); 1113 1112 1114 ((LList *)cs)-> car=backquote_symbol;1113 ((LList *)cs)->m_car=backquote_symbol; 1115 1114 c2 = LList::Create(); 1116 1115 tmp=Compile(code); 1117 ((LList *)c2)-> car = (LObject *)tmp;1118 ((LList *)c2)-> cdr=NULL;1119 ((LList *)cs)-> cdr = (LObject *)c2;1116 ((LList *)c2)->m_car = (LObject *)tmp; 1117 ((LList *)c2)->m_cdr=NULL; 1118 ((LList *)cs)->m_cdr = (LObject *)c2; 1120 1119 ret=cs; 1121 1120 } else if (n[0]==',') // short hand for comma function … … 1124 1123 PtrRef r1(cs), r2(c2); 1125 1124 1126 ((LList *)cs)-> car=comma_symbol;1125 ((LList *)cs)->m_car=comma_symbol; 1127 1126 c2 = LList::Create(); 1128 1127 tmp=Compile(code); 1129 ((LList *)c2)-> car = (LObject *)tmp;1130 ((LList *)c2)-> cdr=NULL;1131 ((LList *)cs)-> cdr = (LObject *)c2;1128 ((LList *)c2)->m_car = (LObject *)tmp; 1129 ((LList *)c2)->m_cdr=NULL; 1130 ((LList *)cs)->m_cdr = (LObject *)c2; 1132 1131 ret=cs; 1133 1132 } … … 1158 1157 read_ltoken(code, n); // skip the '.' 1159 1158 tmp=Compile(code); 1160 ((LList *)last)-> cdr = (LObject *)tmp; // link the last cdr to1159 ((LList *)last)->m_cdr = (LObject *)tmp; // link the last cdr to 1161 1160 last=NULL; 1162 1161 } … … 1170 1169 if (!first) first=cur; 1171 1170 tmp=Compile(code); 1172 ((LList *)cur)-> car = (LObject *)tmp;1171 ((LList *)cur)->m_car = (LObject *)tmp; 1173 1172 if (last) 1174 ((LList *)last)-> cdr = (LObject *)cur;1173 ((LList *)last)->m_cdr = (LObject *)cur; 1175 1174 last=cur; 1176 1175 } … … 1184 1183 { 1185 1184 LNumber *num = LNumber::Create(0); 1186 sscanf(n, "%ld", &num-> num);1185 sscanf(n, "%ld", &num->m_num); 1187 1186 ret=num; 1188 1187 } else if (n[0]=='"') … … 1221 1220 PtrRef r4(cs), r5(c2); 1222 1221 tmp = LSymbol::FindOrCreate("function"); 1223 ((LList *)cs)-> car = (LObject *)tmp;1222 ((LList *)cs)->m_car = (LObject *)tmp; 1224 1223 c2 = LList::Create(); 1225 1224 tmp=Compile(code); 1226 ((LList *)c2)-> car = (LObject *)tmp;1227 ((LList *)cs)-> cdr = (LObject *)c2;1225 ((LList *)c2)->m_car = (LObject *)tmp; 1226 ((LList *)cs)->m_cdr = (LObject *)c2; 1228 1227 ret=cs; 1229 1228 } … … 1287 1286 if (item_type(cs) == (ltype)L_CONS_CELL) 1288 1287 { 1289 cs-> car->Print();1290 if (cs-> cdr)1288 cs->m_car->Print(); 1289 if (cs->m_cdr) 1291 1290 lprint_string(" "); 1292 1291 } … … 1302 1301 break; 1303 1302 case L_NUMBER: 1304 sprintf(buf, "%ld", ((LNumber *)this)-> num);1303 sprintf(buf, "%ld", ((LNumber *)this)->m_num); 1305 1304 lprint_string(buf); 1306 1305 break; 1307 1306 case L_SYMBOL: 1308 lprint_string(((LSymbol *)this)-> name->GetString());1307 lprint_string(((LSymbol *)this)->m_name->GetString()); 1309 1308 break; 1310 1309 case L_USER_FUNCTION: … … 1339 1338 if (current_print_file) 1340 1339 { 1341 uint8_t ch = ((LChar *)this)-> ch;1340 uint8_t ch = ((LChar *)this)->m_ch; 1342 1341 current_print_file->write(&ch, 1); 1343 1342 } 1344 1343 else 1345 1344 { 1346 uint16_t ch = ((LChar *)this)-> ch;1345 uint16_t ch = ((LChar *)this)->m_ch; 1347 1346 dprintf("#\\"); 1348 1347 switch (ch) … … 1358 1357 break; 1359 1358 case L_OBJECT_VAR: 1360 l_obj_print(((LObjectVar *)this)-> index);1359 l_obj_print(((LObjectVar *)this)->m_index); 1361 1360 break; 1362 1361 case L_1D_ARRAY: … … 1365 1364 LObject **data = a->GetData(); 1366 1365 dprintf("#("); 1367 for (size_t j = 0; j < a-> len; j++)1366 for (size_t j = 0; j < a->m_len; j++) 1368 1367 { 1369 1368 data[j]->Print(); 1370 if (j != a-> len - 1)1369 if (j != a->m_len - 1) 1371 1370 dprintf(" "); 1372 1371 } … … 1376 1375 case L_COLLECTED_OBJECT: 1377 1376 lprint_string("GC_reference->"); 1378 ((LRedirect *)this)-> ref->Print();1377 ((LRedirect *)this)->m_ref->Print(); 1379 1378 break; 1380 1379 default: … … 1400 1399 #endif 1401 1400 1402 LObject *fun = function;1401 LObject *fun = m_function; 1403 1402 PtrRef ref2(fun); 1404 1403 PtrRef ref3(arg_list); … … 1435 1434 { 1436 1435 ((LObject *)arg_list)->Print(); 1437 name->Print();1436 m_name->Print(); 1438 1437 lbreak("\nToo few parameters to function\n"); 1439 1438 exit(0); … … 1442 1441 { 1443 1442 ((LObject *)arg_list)->Print(); 1444 name->Print();1443 m_name->Print(); 1445 1444 lbreak("\nToo many parameters to function\n"); 1446 1445 exit(0); … … 1474 1473 LList *tmp = LList::Create(); 1475 1474 if (first) 1476 cur-> cdr = tmp;1475 cur->m_cdr = tmp; 1477 1476 else 1478 1477 first = tmp; … … 1480 1479 1481 1480 LObject *val = CAR(arg_list)->Eval(); 1482 ((LList *)cur)-> car = val;1481 ((LList *)cur)->m_car = val; 1483 1482 arg_list = lcdr(arg_list); 1484 1483 } … … 1508 1507 if (p) 1509 1508 { 1510 pro_print(out, p-> right);1509 pro_print(out, p->m_right); 1511 1510 { 1512 1511 char st[100]; … … 1514 1513 out->write(st, strlen(st)); 1515 1514 } 1516 pro_print(out, p-> left);1515 pro_print(out, p->m_left); 1517 1516 } 1518 1517 } … … 1578 1577 else 1579 1578 { 1580 na_list-> cdr = (LObject *)LList::Create();1579 na_list->m_cdr = (LObject *)LList::Create(); 1581 1580 na_list=(LList *)CDR(na_list); 1582 1581 } … … 1585 1584 if (arg_on[i]) 1586 1585 { 1587 na_list-> car = (LObject *)CAR(arg_on[i]);1586 na_list->m_car = (LObject *)CAR(arg_on[i]); 1588 1587 arg_on[i]=(LList *)CDR(arg_on[i]); 1589 1588 } … … 1593 1592 { 1594 1593 LList *c = LList::Create(); 1595 c-> car = ((LSymbol *)sym)->EvalFunction(first);1594 c->m_car = ((LSymbol *)sym)->EvalFunction(first); 1596 1595 if (return_list) 1597 last_return-> cdr=c;1596 last_return->m_cdr=c; 1598 1597 else 1599 1598 return_list=c; … … 1672 1671 { 1673 1672 if (item_type(CAR(char_list))==L_CHARACTER) 1674 *(s++)=((LChar *)CAR(char_list))-> ch;1673 *(s++)=((LChar *)CAR(char_list))->m_ch; 1675 1674 char_list=(LList *)CDR(char_list); 1676 1675 } … … 1706 1705 else if (args==NULL) 1707 1706 return NULL; 1708 else if ((LSymbol *) (((LList *)args)-> car)==comma_symbol)1707 else if ((LSymbol *) (((LList *)args)->m_car)==comma_symbol) 1709 1708 return CAR(CDR(args))->Eval(); 1710 1709 else … … 1719 1718 { 1720 1719 tmp = CAR(CDR(args))->Eval(); 1721 ((LList *)last)-> cdr = (LObject *)tmp;1720 ((LList *)last)->m_cdr = (LObject *)tmp; 1722 1721 args=NULL; 1723 1722 } … … 1726 1725 cur = LList::Create(); 1727 1726 if (first) 1728 ((LList *)last)-> cdr = (LObject *)cur;1727 ((LList *)last)->m_cdr = (LObject *)cur; 1729 1728 else 1730 1729 first=cur; 1731 1730 last=cur; 1732 1731 tmp=backquote_eval(CAR(args)); 1733 ((LList *)cur)-> car = (LObject *)tmp;1732 ((LList *)cur)->m_car = (LObject *)tmp; 1734 1733 args=CDR(args); 1735 1734 } … … 1737 1736 { 1738 1737 tmp=backquote_eval(args); 1739 ((LList *)last)-> cdr = (LObject *)tmp;1738 ((LList *)last)->m_cdr = (LObject *)tmp; 1740 1739 args=NULL; 1741 1740 } … … 1796 1795 cur = LList::Create(); 1797 1796 LObject *val = CAR(arg_list)->Eval(); 1798 cur-> car = val;1797 cur->m_car = val; 1799 1798 if (last) 1800 last-> cdr = cur;1799 last->m_cdr = cur; 1801 1800 else 1802 1801 first = cur; … … 1812 1811 PtrRef r1(c); 1813 1812 LObject *val = CAR(arg_list)->Eval(); 1814 c-> car = val;1813 c->m_car = val; 1815 1814 val = CAR(CDR(arg_list))->Eval(); 1816 c-> cdr = val;1815 c->m_cdr = val; 1817 1816 ret = c; 1818 1817 break; … … 1887 1886 else if (first) 1888 1887 { 1889 quot = ((LNumber *)i)-> num;1888 quot = ((LNumber *)i)->m_num; 1890 1889 first = 0; 1891 1890 } 1892 1891 else 1893 quot /= ((LNumber *)i)-> num;1892 quot /= ((LNumber *)i)->m_num; 1894 1893 arg_list = (LList *)CDR(arg_list); 1895 1894 } … … 1932 1931 { 1933 1932 case L_SYMBOL: 1934 switch (item_type(((LSymbol *)i)-> value))1933 switch (item_type(((LSymbol *)i)->m_value)) 1935 1934 { 1936 1935 case L_NUMBER: 1937 if (x == L_NUMBER && ((LSymbol *)i)-> value != l_undefined)1936 if (x == L_NUMBER && ((LSymbol *)i)->m_value != l_undefined) 1938 1937 ((LSymbol *)i)->SetNumber(lnumber_value(set_to)); 1939 1938 else … … 1941 1940 break; 1942 1941 case L_OBJECT_VAR: 1943 l_obj_set(((LObjectVar *)(((LSymbol *)i)-> value))->index, set_to);1942 l_obj_set(((LObjectVar *)(((LSymbol *)i)->m_value))->m_index, set_to); 1944 1943 break; 1945 1944 default: 1946 1945 ((LSymbol *)i)->SetValue((LObject *)set_to); 1947 1946 } 1948 ret = ((LSymbol *)i)-> value;1947 ret = ((LSymbol *)i)->m_value; 1949 1948 break; 1950 1949 case L_CONS_CELL: // this better be an 'aref' 1951 1950 { 1952 1951 #ifdef TYPE_CHECKING 1953 LObject *car = ((LList *)i)-> car;1952 LObject *car = ((LList *)i)->m_car; 1954 1953 if (car == car_symbol) 1955 1954 { … … 1961 1960 exit(0); 1962 1961 } 1963 ((LList *)car)-> car = set_to;1962 ((LList *)car)->m_car = set_to; 1964 1963 } 1965 1964 else if (car == cdr_symbol) … … 1972 1971 exit(0); 1973 1972 } 1974 ((LList *)car)-> cdr = set_to;1973 ((LList *)car)->m_cdr = set_to; 1975 1974 } 1976 1975 else if (car != aref_symbol) … … 1994 1993 int num = lnumber_value(CAR(CDR(CDR(i)))->Eval()); 1995 1994 #ifdef TYPE_CHECKING 1996 if (num >= (int)a-> len || num < 0)1995 if (num >= (int)a->m_len || num < 0) 1997 1996 { 1998 1997 lbreak("aref : value of bounds (%d)\n", num); … … 2024 2023 LList *list = (LList *)CAR(CDR(arg_list))->Eval(); 2025 2024 PtrRef r2(list); 2026 ret = (LObject *)assoc(item, list);2025 ret = list->Assoc(item); 2027 2026 break; 2028 2027 } … … 2041 2040 PtrRef r2(i2); 2042 2041 LList *cs = LList::Create(); 2043 cs-> car = i1;2044 cs-> cdr = i2;2042 cs->m_car = i1; 2043 cs->m_cdr = i2; 2045 2044 ret = cs; 2046 2045 break; … … 2078 2077 #endif 2079 2078 2080 l_user_stack.push(((LSymbol *)var_name)-> value);2079 l_user_stack.push(((LSymbol *)var_name)->m_value); 2081 2080 tmp = CAR(CDR(CAR(var_list)))->Eval(); 2082 2081 ((LSymbol *)var_name)->SetValue(tmp); … … 2180 2179 { 2181 2180 case L_CHARACTER: 2182 ret = LNumber::Create(((LChar *)i)-> ch);2181 ret = LNumber::Create(((LChar *)i)->m_ch); 2183 2182 break; 2184 2183 case L_STRING: … … 2203 2202 exit(0); 2204 2203 } 2205 ret = LChar::Create(((LNumber *)i)-> num);2204 ret = LChar::Create(((LNumber *)i)->m_num); 2206 2205 break; 2207 2206 } … … 2302 2301 } 2303 2302 #endif 2304 ret = symb-> name;2303 ret = symb->m_name; 2305 2304 break; 2306 2305 } … … 2482 2481 { 2483 2482 LObject *tmp = LNumber::Create(x); 2484 ((LSymbol *)sym)-> value = tmp;2483 ((LSymbol *)sym)->m_value = tmp; 2485 2484 break; 2486 2485 } … … 2499 2498 x = lnumber_value(CAR(CDR(sym))->Eval()); 2500 2499 LObject *tmp = LNumber::Create(x); 2501 ((LSymbol *)sym)-> value = tmp;2500 ((LSymbol *)sym)->m_value = tmp; 2502 2501 break; 2503 2502 } … … 2545 2544 for (void *s = symbol_list; s; s = CDR(s)) 2546 2545 fprintf(fp, "%8d %s\n", ((LSymbol *)(CAR(s)))->call_counter, 2547 lstring_value(((LSymbol *)(CAR(s)))-> name));2546 lstring_value(((LSymbol *)(CAR(s)))->m_name)); 2548 2547 fclose(fp); 2549 2548 } … … 2691 2690 { 2692 2691 LObject *v = CAR(arg_list)->Eval(); 2693 if (item_type(v) != L_NUMBER || (((LNumber *)v)-> num != 0))2692 if (item_type(v) != L_NUMBER || (((LNumber *)v)->m_num != 0)) 2694 2693 ret = NULL; 2695 2694 else … … 2806 2805 } 2807 2806 case SYS_FUNC_GC: 2808 Lisp GC::CollectSpace(LSpace::Current, 0);2807 Lisp::CollectSpace(LSpace::Current, 0); 2809 2808 break; 2810 2809 case SYS_FUNC_SCHAR: … … 2864 2863 } 2865 2864 LObject *tmp = CAR(arg_list)->Eval(); 2866 ((LList *)l1)-> cdr = tmp;2865 ((LList *)l1)->m_cdr = tmp; 2867 2866 arg_list = (LList *)CDR(arg_list); 2868 2867 } while (arg_list); … … 2971 2970 #endif 2972 2971 2973 LUserFunction *fun = (LUserFunction *) function;2972 LUserFunction *fun = (LUserFunction *)m_function; 2974 2973 2975 2974 #ifdef TYPE_CHECKING … … 2996 2995 { 2997 2996 LSymbol *s = (LSymbol *)CAR(f_arg); 2998 l_user_stack.push(s-> value);2997 l_user_stack.push(s->m_value); 2999 2998 } 3000 2999 … … 3095 3094 ret = ((LSymbol *)this)->GetValue(); 3096 3095 if (item_type(ret) == L_OBJECT_VAR) 3097 ret = (LObject *)l_obj_get(((LObjectVar *)ret)-> index);3096 ret = (LObject *)l_obj_get(((LObjectVar *)ret)->m_index); 3098 3097 } 3099 3098 break; … … 3119 3118 3120 3119 /* l_user_stack.push(ret); 3121 Lisp GC::CollectSpace(&LSpace::Perm);3120 Lisp::CollectSpace(&LSpace::Perm); 3122 3121 ret=l_user_stack.pop(1); */ 3123 3122 3124 3123 return ret; 3125 3124 } 3126 3127 void l_comp_init();3128 3125 3129 3126 void Lisp::Init() … … 3144 3141 LSpace::Current = &LSpace::Perm; 3145 3142 3146 l_comp_init(); 3143 InitConstants(); 3144 3147 3145 for(size_t i = 0; i < sizeof(sys_funcs) / sizeof(*sys_funcs); i++) 3148 3146 add_sys_function(sys_funcs[i].name, … … 3179 3177 } 3180 3178 #endif 3181 return name;3179 return m_name; 3182 3180 } 3183 3181 … … 3192 3190 } 3193 3191 #endif 3194 if ( value != l_undefined && item_type(value) == L_NUMBER)3195 ((LNumber *) value)->num = num;3192 if (m_value != l_undefined && item_type(m_value) == L_NUMBER) 3193 ((LNumber *)m_value)->m_num = num; 3196 3194 else 3197 value = LNumber::Create(num);3195 m_value = LNumber::Create(num); 3198 3196 } 3199 3197 … … 3208 3206 } 3209 3207 #endif 3210 value = val;3208 m_value = val; 3211 3209 } 3212 3210 … … 3221 3219 } 3222 3220 #endif 3223 return function;3221 return m_function; 3224 3222 } 3225 3223 … … 3234 3232 } 3235 3233 #endif 3236 return value;3237 } 3238 3234 return m_value; 3235 } 3236 -
abuse/trunk/src/lisp/lisp.h
r635 r636 38 38 L_FIXED_POINT, L_COLLECTED_OBJECT }; 39 39 40 typedef uint 32_t ltype; // make sure structures aren't packed differently on various compiler40 typedef uint8_t ltype; // make sure structures aren't packed differently on various compiler 41 41 // and sure that word, etc are word aligned 42 43 class Lisp44 {45 public:46 static void Init();47 static void Uninit();48 };49 42 50 43 struct LSpace … … 73 66 /* Methods */ 74 67 LObject *Eval(); 68 LObject *Assoc(LObject *item); 75 69 void Print(); 76 70 77 71 /* Members */ 78 ltype type;72 ltype m_type; 79 73 }; 80 74 … … 85 79 86 80 /* Members */ 87 int index;81 int m_index; 88 82 }; 89 83 … … 97 91 98 92 /* Members */ 99 LObject * cdr, *car;93 LObject *m_cdr, *m_car; 100 94 }; 101 95 … … 106 100 107 101 /* Members */ 108 long num;102 long m_num; 109 103 }; 110 104 … … 112 106 { 113 107 /* Members */ 114 LObject * ref;108 LObject *m_ref; 115 109 }; 116 110 … … 127 121 /* Members */ 128 122 private: 129 char str[1]; /* Can be allocated much larger than 1 */123 char m_str[1]; /* Can be allocated much larger than 1 */ 130 124 }; 131 125 … … 152 146 float time_taken; 153 147 #endif 154 LObject * value;155 LObject * function;156 LString * name;157 LSymbol * left, *right; // tree structure148 LObject *m_value; 149 LObject *m_function; 150 LString *m_name; 151 LSymbol *m_left, *m_right; // tree structure 158 152 159 153 /* Static members */ … … 183 177 184 178 /* Methods */ 185 inline LObject **GetData() { return data; }179 inline LObject **GetData() { return m_data; } 186 180 LObject *Get(int x); 187 181 188 182 /* Members */ 189 size_t len;183 size_t m_len; 190 184 191 185 private: 192 LObject * data[1]; /* Can be allocated much larger than 1 */186 LObject *m_data[1]; /* Can be allocated much larger than 1 */ 193 187 }; 194 188 … … 198 192 static LChar *Create(uint16_t ch); 199 193 200 /* Members */ 201 uint16_t ch; 194 /* Methods */ 195 uint16_t GetValue(); 196 197 /* Members */ 198 uint16_t m_ch; 202 199 }; 203 200 … … 208 205 209 206 /* Members */ 210 void * addr;207 void *m_addr; 211 208 }; 212 209 … … 217 214 218 215 /* Members */ 219 int32_t x; 220 }; 221 222 static inline LObject *&CAR(void *x) { return ((LList *)x)->car; } 223 static inline LObject *&CDR(void *x) { return ((LList *)x)->cdr; } 216 int32_t m_fixed; 217 }; 218 219 class Lisp 220 { 221 public: 222 static void Init(); 223 static void Uninit(); 224 225 static void InitConstants(); 226 227 // Collect temporary or permanent spaces 228 static void CollectSpace(LSpace *which_space, int grow); 229 230 private: 231 static LArray *CollectArray(LArray *x); 232 static LList *CollectList(LList *x); 233 static LObject *CollectObject(LObject *x); 234 static void CollectSymbols(LSymbol *root); 235 static void CollectStacks(); 236 }; 237 238 static inline LObject *&CAR(void *x) { return ((LList *)x)->m_car; } 239 static inline LObject *&CDR(void *x) { return ((LList *)x)->m_cdr; } 224 240 static inline ltype item_type(void *x) { if (x) return *(ltype *)x; return L_CONS_CELL; } 225 241 … … 228 244 void *lpointer_value(void *lpointer); 229 245 int32_t lnumber_value(void *lnumber); 230 unsigned short lcharacter_value(void *c);231 246 long lfixed_point_value(void *c); 232 247 void *lisp_atom(void *i); … … 236 251 void *lisp_equal(void *n1, void *n2); 237 252 void *eval_block(void *list); 238 void *assoc(void *item, void *list);239 253 void resize_tmp(size_t new_size); 240 254 void resize_perm(size_t new_size); … … 258 272 259 273 int end_of_program(char *s); 260 void lisp_init();261 void lisp_uninit();262 274 263 275 void *nth(int num, void *list); … … 265 277 int32_t lisp_sin(int32_t x); 266 278 int32_t lisp_cos(int32_t x); 267 void restore_heap(void *val, int heap);268 void *mark_heap(int heap);269 279 270 280 extern "C" { -
abuse/trunk/src/lisp/lisp_gc.cpp
r635 r636 41 41 static uint8_t *cstart, *cend, *collected_start, *collected_end; 42 42 43 LArray *Lisp GC::CollectArray(LArray *x)44 { 45 size_t s = x-> len;43 LArray *Lisp::CollectArray(LArray *x) 44 { 45 size_t s = x->m_len; 46 46 LArray *a = LArray::Create(s, NULL); 47 47 LObject **src = x->GetData(); … … 53 53 } 54 54 55 LList *Lisp GC::CollectList(LList *x)55 LList *Lisp::CollectList(LList *x) 56 56 { 57 57 LList *prev = NULL, *first = NULL; … … 60 60 { 61 61 LList *p = LList::Create(); 62 LObject *old_car = x-> car;62 LObject *old_car = x->m_car; 63 63 LObject *old_x = x; 64 64 x = (LList *)CDR(x); 65 ((LRedirect *)old_x)-> type = L_COLLECTED_OBJECT;66 ((LRedirect *)old_x)-> ref = p;67 68 p-> car = CollectObject(old_car);65 ((LRedirect *)old_x)->m_type = L_COLLECTED_OBJECT; 66 ((LRedirect *)old_x)->m_ref = p; 67 68 p->m_car = CollectObject(old_car); 69 69 70 70 if (prev) 71 prev-> cdr = p;71 prev->m_cdr = p; 72 72 else 73 73 first = p; … … 75 75 } 76 76 if (x) 77 prev-> cdr = CollectObject(x);77 prev->m_cdr = CollectObject(x); 78 78 79 79 return first; // we already set the collection pointers 80 80 } 81 81 82 LObject *Lisp GC::CollectObject(LObject *x)82 LObject *Lisp::CollectObject(LObject *x) 83 83 { 84 84 LObject *ret = x; … … 92 92 break; 93 93 case L_NUMBER: 94 ret = LNumber::Create(((LNumber *)x)-> num);94 ret = LNumber::Create(((LNumber *)x)->m_num); 95 95 break; 96 96 case L_SYS_FUNCTION: … … 111 111 break; 112 112 case L_CHARACTER: 113 ret = LChar::Create( lcharacter_value(x));113 ret = LChar::Create(((LChar *)x)->m_ch); 114 114 break; 115 115 case L_C_FUNCTION: … … 141 141 break; 142 142 case L_OBJECT_VAR: 143 ret = LObjectVar::Create(((LObjectVar *)x)-> index);143 ret = LObjectVar::Create(((LObjectVar *)x)->m_index); 144 144 break; 145 145 case L_COLLECTED_OBJECT: 146 ret = ((LRedirect *)x)-> ref;146 ret = ((LRedirect *)x)->m_ref; 147 147 break; 148 148 default: … … 150 150 break; 151 151 } 152 ((LRedirect *)x)-> type = L_COLLECTED_OBJECT;153 ((LRedirect *)x)-> ref = ret;152 ((LRedirect *)x)->m_type = L_COLLECTED_OBJECT; 153 ((LRedirect *)x)->m_ref = ret; 154 154 } 155 155 else if ((uint8_t *)x < collected_start || (uint8_t *)x >= collected_end) … … 172 172 } 173 173 174 void Lisp GC::CollectSymbols(LSymbol *root)174 void Lisp::CollectSymbols(LSymbol *root) 175 175 { 176 176 if (!root) 177 177 return; 178 178 179 root-> value = CollectObject(root->value);180 root-> function = CollectObject(root->function);181 root-> name = (LString *)CollectObject(root->name);182 CollectSymbols(root-> left);183 CollectSymbols(root-> right);184 } 185 186 void Lisp GC::CollectStacks()179 root->m_value = CollectObject(root->m_value); 180 root->m_function = CollectObject(root->m_function); 181 root->m_name = (LString *)CollectObject(root->m_name); 182 CollectSymbols(root->m_left); 183 CollectSymbols(root->m_right); 184 } 185 186 void Lisp::CollectStacks() 187 187 { 188 188 void **d = l_user_stack.sdata; … … 205 205 } 206 206 207 void Lisp GC::CollectSpace(LSpace *which_space, int grow)207 void Lisp::CollectSpace(LSpace *which_space, int grow) 208 208 { 209 209 LSpace *old_space = LSpace::Current; -
abuse/trunk/src/lisp/lisp_gc.h
r635 r636 15 15 // Stack user progs can push data and have it GCed 16 16 extern GrowStack<void> l_user_stack; 17 18 class LispGC19 {20 public:21 // Collect temporary or permanent spaces22 static void CollectSpace(LSpace *which_space, int grow);23 24 private:25 static LArray *CollectArray(LArray *x);26 static LList *CollectList(LList *x);27 static LObject *CollectObject(LObject *x);28 static void CollectSymbols(LSymbol *root);29 static void CollectStacks();30 };31 17 32 18 // This pointer reference stack lists all pointers to temporary lisp -
abuse/trunk/src/lisp/lisp_opt.cpp
r555 r636 93 93 } 94 94 95 void l_comp_init()95 void Lisp::InitConstants() 96 96 { 97 97 // This needs to be defined first 98 l_undefined= LSymbol::FindOrCreate(":UNDEFINED");99 98 LSymbol *tmp = LSymbol::FindOrCreate(":UNDEFINED"); 99 l_undefined = tmp; 100 100 // Collection problems result if we don't do this 101 ((LSymbol *)l_undefined)->function = NULL;102 ((LSymbol *)l_undefined)->value = NULL;101 tmp->m_function = NULL; 102 tmp->m_value = NULL; 103 103 104 104 true_symbol = LSymbol::FindOrCreate("T"); -
abuse/trunk/src/objects.cpp
r635 r636 488 488 am = LList::Create(); 489 489 PtrRef r1(am); 490 am-> car = LNumber::Create(amount);490 am->m_car = LNumber::Create(amount); 491 491 492 492 frm = LList::Create(); 493 493 PtrRef r2(frm); 494 frm-> car = LPointer::Create(from);494 frm->m_car = LPointer::Create(from); 495 495 496 496 hx = LList::Create(); 497 497 PtrRef r3(hx); 498 hx-> car = LNumber::Create(hitx);498 hx->m_car = LNumber::Create(hitx); 499 499 500 500 hy = LList::Create(); 501 501 PtrRef r4(hy); 502 hy-> car = LNumber::Create(hity);502 hy->m_car = LNumber::Create(hity); 503 503 504 504 px = LList::Create(); 505 505 PtrRef r5(px); 506 px-> car = LNumber::Create(push_xvel);506 px->m_car = LNumber::Create(push_xvel); 507 507 508 508 py = LList::Create(); 509 509 PtrRef r6(py); 510 py-> car = LNumber::Create(push_yvel);511 512 px-> cdr = py;513 hy-> cdr = px;514 hx-> cdr = hy;515 frm-> cdr = hx;516 am-> cdr = frm;510 py->m_car = LNumber::Create(push_yvel); 511 512 px->m_cdr = py; 513 hy->m_cdr = px; 514 hx->m_cdr = hy; 515 frm->m_cdr = hx; 516 am->m_cdr = frm; 517 517 518 518 time_marker *prof1 = NULL; … … 1203 1203 lcx = LList::Create(); 1204 1204 PtrRef r1(lcx); 1205 lcx-> car = LNumber::Create(cx);1205 lcx->m_car = LNumber::Create(cx); 1206 1206 1207 1207 lcy = LList::Create(); 1208 1208 PtrRef r2(lcy); 1209 lcy-> car = LNumber::Create(cy);1209 lcy->m_car = LNumber::Create(cy); 1210 1210 1211 1211 lb = LList::Create(); 1212 1212 PtrRef r3(lb); 1213 lb-> car = LNumber::Create(button);1214 1215 lcx-> cdr = lcy;1216 lcy-> cdr = lb;1213 lb->m_car = LNumber::Create(button); 1214 1215 lcx->m_cdr = lcy; 1216 lcy->m_cdr = lb; 1217 1217 1218 1218 void *m = LSpace::Tmp.Mark();
Note: See TracChangeset
for help on using the changeset viewer.