- Timestamp:
- 09/18/08 02:44:50 (2 months ago)
- Location:
- v6/smop
- Files:
-
- 1 added
- 9 modified
-
CMakeLists.txt (modified) (1 diff)
-
include/smop_identifiers.h (modified) (2 diffs)
-
include/smop_s1p.h (modified) (1 diff)
-
src/idconst_decl_all.h (modified) (2 diffs)
-
src/idconst_init_all.c (modified) (4 diffs)
-
src/native_int.c (modified) (1 diff)
-
src/smop_internal.h (modified) (2 diffs)
-
src/smop_s1p_array.c (modified) (2 diffs)
-
src/smop_s1p_array_iterator.sm0p (modified) (2 diffs)
-
src/smop_s1p_emptylist.c (added)
Legend:
- Unmodified
- Added
- Removed
-
v6/smop/CMakeLists.txt
r22270 r22272 129 129 src/smop_s1p_map.c 130 130 src/smop_s1p_pureprototypehow.c 131 src/smop_s1p_emptylist.c 131 132 src/smop_s1p_bindcapturesignature.c 132 133 src/smop_s1p_defaultblocksignature.c -
v6/smop/include/smop_identifiers.h
r22183 r22272 54 54 extern SMOP__Object* SMOP__ID__infix_eq; /* "infix:eq" */ 55 55 extern SMOP__Object* SMOP__ID__infix_num_gt; /* "infix:>" */ 56 extern SMOP__Object* SMOP__ID__infix_num_ge; /* "infix:>=" */ 56 57 extern SMOP__Object* SMOP__ID__input_array; /* "input_array" */ 57 58 extern SMOP__Object* SMOP__ID__invocant; /* "invocant" */ … … 60 61 extern SMOP__Object* SMOP__ID__jail; /* "jail" */ 61 62 extern SMOP__Object* SMOP__ID__lexical; /* "lexical" */ 63 extern SMOP__Object* SMOP__ID__List; /* "List" */ 62 64 extern SMOP__Object* SMOP__ID__loop; /* "loop" */ 63 65 extern SMOP__Object* SMOP__ID__mold; /* "mold" */ -
v6/smop/include/smop_s1p.h
r22263 r22272 19 19 extern SMOP__Object* SMOP__S1P__RootNamespace; 20 20 extern SMOP__Object* SMOP__S1P__Capturize; 21 extern SMOP__Object* SMOP__S1P__EmptyList; 21 22 extern SMOP__Object* SMOP__S1P__LexicalScope; 22 23 extern SMOP__Object* SMOP__S1P__DefaultBlockSignature; -
v6/smop/src/idconst_decl_all.h
r22183 r22272 42 42 SMOP__Object* SMOP__ID__infix_eq; 43 43 SMOP__Object* SMOP__ID__infix_num_gt; 44 SMOP__Object* SMOP__ID__infix_num_ge; 44 45 SMOP__Object* SMOP__ID__input_array; 45 46 SMOP__Object* SMOP__ID__invocant; … … 48 49 SMOP__Object* SMOP__ID__jail; 49 50 SMOP__Object* SMOP__ID__lexical; 51 SMOP__Object* SMOP__ID__List; 50 52 SMOP__Object* SMOP__ID__loop; 51 53 SMOP__Object* SMOP__ID__mold; -
v6/smop/src/idconst_init_all.c
r22183 r22272 42 42 SMOP__ID__infix_eq = SMOP__NATIVE__idconst_create_nolist( "infix:eq" ); 43 43 SMOP__ID__infix_num_gt = SMOP__NATIVE__idconst_create_nolist( "infix:>" ); 44 SMOP__ID__infix_num_ge = SMOP__NATIVE__idconst_create_nolist( "infix:>=" ); 44 45 SMOP__ID__input_array = SMOP__NATIVE__idconst_create_nolist( "input_array" ); 45 46 SMOP__ID__invocant = SMOP__NATIVE__idconst_create_nolist( "invocant" ); … … 48 49 SMOP__ID__jail = SMOP__NATIVE__idconst_create_nolist( "jail" ); 49 50 SMOP__ID__lexical = SMOP__NATIVE__idconst_create_nolist( "lexical" ); 51 SMOP__ID__List = SMOP__NATIVE__idconst_create_nolist( "List" ); 50 52 SMOP__ID__loop = SMOP__NATIVE__idconst_create_nolist( "loop" ); 51 53 SMOP__ID__mold = SMOP__NATIVE__idconst_create_nolist( "mold" ); … … 102 104 SMOP__ID__signature = SMOP__NATIVE__idconst_create_nolist( "signature" ); 103 105 SMOP__ID__STORE = SMOP__NATIVE__idconst_create_nolist( "STORE" ); 104 constlist_size = 10 3;106 constlist_size = 105; 105 107 constlist = calloc(constlist_size,sizeof(SMOP__Object*)); 106 108 assert(constlist); … … 148 150 constlist[41] = SMOP__ID__infix_eq; 149 151 constlist[42] = SMOP__ID__infix_num_gt; 150 constlist[43] = SMOP__ID__input_array; 151 constlist[44] = SMOP__ID__invocant; 152 constlist[45] = SMOP__ID__isa; 153 constlist[46] = SMOP__ID__Iterator; 154 constlist[47] = SMOP__ID__jail; 155 constlist[48] = SMOP__ID__lexical; 156 constlist[49] = SMOP__ID__loop; 157 constlist[50] = SMOP__ID__mold; 158 constlist[51] = SMOP__ID__move_capturize; 159 constlist[52] = SMOP__ID__move_identifier; 160 constlist[53] = SMOP__ID__move_responder; 161 constlist[54] = SMOP__ID__named; 162 constlist[55] = SMOP__ID__name; 163 constlist[56] = SMOP__ID__new; 164 constlist[57] = SMOP__ID__next; 165 constlist[58] = SMOP__ID__outer; 166 constlist[59] = SMOP__ID__past; 167 constlist[60] = SMOP__ID__perl; 168 constlist[61] = SMOP__ID__positional; 169 constlist[62] = SMOP__ID__postcircumfix_curly; 170 constlist[63] = SMOP__ID__postcircumfix_parens; 171 constlist[64] = SMOP__ID__postcircumfix_square; 172 constlist[65] = SMOP__ID__postfix_plusplus; 173 constlist[66] = SMOP__ID__prefix_equal; 174 constlist[67] = SMOP__ID__private_name; 175 constlist[68] = SMOP__ID__push; 176 constlist[69] = SMOP__ID__register; 177 constlist[70] = SMOP__ID__REPR_attributes; 178 constlist[71] = SMOP__ID__REPR_bless; 179 constlist[72] = SMOP__ID__REPR_can; 180 constlist[73] = SMOP__ID__REPR_class_storage; 181 constlist[74] = SMOP__ID__REPR_clone; 182 constlist[75] = SMOP__ID__REPR_CREATE; 183 constlist[76] = SMOP__ID__REPR_defined; 184 constlist[77] = SMOP__ID__REPR_DESTROY; 185 constlist[78] = SMOP__ID__REPR_destroy_instance_storage; 186 constlist[79] = SMOP__ID__REPR_destroy_instance_storage_slot; 187 constlist[80] = SMOP__ID__REPR_does; 188 constlist[81] = SMOP__ID__REPR_has; 189 constlist[82] = SMOP__ID__REPR_how; 190 constlist[83] = SMOP__ID__REPR_initialize_instance_storage; 191 constlist[84] = SMOP__ID__REPR_initialize_instance_storage_slot; 192 constlist[85] = SMOP__ID__REPR_instance; 193 constlist[86] = SMOP__ID__REPR_instanceof; 194 constlist[87] = SMOP__ID__REPR_isa; 195 constlist[88] = SMOP__ID__REPR_methods; 196 constlist[89] = SMOP__ID__REPR_multimethods; 197 constlist[90] = SMOP__ID__REPR_multisubmethods; 198 constlist[91] = SMOP__ID__REPR_package; 199 constlist[92] = SMOP__ID__REPR_private_storage; 200 constlist[93] = SMOP__ID__REPR_properties; 201 constlist[94] = SMOP__ID__REPR_submethods; 202 constlist[95] = SMOP__ID__REPR_whence; 203 constlist[96] = SMOP__ID__REPR_who; 204 constlist[97] = SMOP__ID__responder; 205 constlist[98] = SMOP__ID__result; 206 constlist[99] = SMOP__ID__setr; 207 constlist[100] = SMOP__ID__shift; 208 constlist[101] = SMOP__ID__signature; 209 constlist[102] = SMOP__ID__STORE; 152 constlist[43] = SMOP__ID__infix_num_ge; 153 constlist[44] = SMOP__ID__input_array; 154 constlist[45] = SMOP__ID__invocant; 155 constlist[46] = SMOP__ID__isa; 156 constlist[47] = SMOP__ID__Iterator; 157 constlist[48] = SMOP__ID__jail; 158 constlist[49] = SMOP__ID__lexical; 159 constlist[50] = SMOP__ID__List; 160 constlist[51] = SMOP__ID__loop; 161 constlist[52] = SMOP__ID__mold; 162 constlist[53] = SMOP__ID__move_capturize; 163 constlist[54] = SMOP__ID__move_identifier; 164 constlist[55] = SMOP__ID__move_responder; 165 constlist[56] = SMOP__ID__named; 166 constlist[57] = SMOP__ID__name; 167 constlist[58] = SMOP__ID__new; 168 constlist[59] = SMOP__ID__next; 169 constlist[60] = SMOP__ID__outer; 170 constlist[61] = SMOP__ID__past; 171 constlist[62] = SMOP__ID__perl; 172 constlist[63] = SMOP__ID__positional; 173 constlist[64] = SMOP__ID__postcircumfix_curly; 174 constlist[65] = SMOP__ID__postcircumfix_parens; 175 constlist[66] = SMOP__ID__postcircumfix_square; 176 constlist[67] = SMOP__ID__postfix_plusplus; 177 constlist[68] = SMOP__ID__prefix_equal; 178 constlist[69] = SMOP__ID__private_name; 179 constlist[70] = SMOP__ID__push; 180 constlist[71] = SMOP__ID__register; 181 constlist[72] = SMOP__ID__REPR_attributes; 182 constlist[73] = SMOP__ID__REPR_bless; 183 constlist[74] = SMOP__ID__REPR_can; 184 constlist[75] = SMOP__ID__REPR_class_storage; 185 constlist[76] = SMOP__ID__REPR_clone; 186 constlist[77] = SMOP__ID__REPR_CREATE; 187 constlist[78] = SMOP__ID__REPR_defined; 188 constlist[79] = SMOP__ID__REPR_DESTROY; 189 constlist[80] = SMOP__ID__REPR_destroy_instance_storage; 190 constlist[81] = SMOP__ID__REPR_destroy_instance_storage_slot; 191 constlist[82] = SMOP__ID__REPR_does; 192 constlist[83] = SMOP__ID__REPR_has; 193 constlist[84] = SMOP__ID__REPR_how; 194 constlist[85] = SMOP__ID__REPR_initialize_instance_storage; 195 constlist[86] = SMOP__ID__REPR_initialize_instance_storage_slot; 196 constlist[87] = SMOP__ID__REPR_instance; 197 constlist[88] = SMOP__ID__REPR_instanceof; 198 constlist[89] = SMOP__ID__REPR_isa; 199 constlist[90] = SMOP__ID__REPR_methods; 200 constlist[91] = SMOP__ID__REPR_multimethods; 201 constlist[92] = SMOP__ID__REPR_multisubmethods; 202 constlist[93] = SMOP__ID__REPR_package; 203 constlist[94] = SMOP__ID__REPR_private_storage; 204 constlist[95] = SMOP__ID__REPR_properties; 205 constlist[96] = SMOP__ID__REPR_submethods; 206 constlist[97] = SMOP__ID__REPR_whence; 207 constlist[98] = SMOP__ID__REPR_who; 208 constlist[99] = SMOP__ID__responder; 209 constlist[100] = SMOP__ID__result; 210 constlist[101] = SMOP__ID__setr; 211 constlist[102] = SMOP__ID__shift; 212 constlist[103] = SMOP__ID__signature; 213 constlist[104] = SMOP__ID__STORE; -
v6/smop/src/native_int.c
r22189 r22272 31 31 // SMOP__NATIVE__int_fetch(other)); 32 32 if (SMOP__NATIVE__int_fetch(invocant) > SMOP__NATIVE__int_fetch(other)) { 33 ret = SMOP__NATIVE__bool_true; 34 } else { 35 ret = SMOP__NATIVE__bool_false; 36 } 37 } else { 38 ___UNKNOWN_METHOD___; 39 } 40 41 SMOP_RELEASE(interpreter, other); 42 SMOP_RELEASE(interpreter,invocant); 43 44 } else if (identifier == SMOP__ID__infix_num_ge) { 45 46 ___NATIVE_CAPTURE_ONLY___; 47 ___INVOCANT_RI_SHOULD_MATCH___; 48 49 SMOP__Object* other = SMOP__NATIVE__capture_positional(interpreter,capture,0); 50 if (SMOP_RI(other) == (SMOP__ResponderInterface*)SMOP__NATIVE__int) { 51 //fprintf(stderr,"native int: %d > %d\n", SMOP__NATIVE__int_fetch(invocant), 52 // SMOP__NATIVE__int_fetch(other)); 53 if (SMOP__NATIVE__int_fetch(invocant) >= SMOP__NATIVE__int_fetch(other)) { 33 54 ret = SMOP__NATIVE__bool_true; 34 55 } else { -
v6/smop/src/smop_internal.h
r22263 r22272 64 64 smop_s1p_pureprototypehow_init(); \ 65 65 smop_s1p_map_init(); \ 66 smop_s1p_array_iterator_init(); 66 smop_s1p_array_iterator_init(); \ 67 smop_s1p_emptylist_init(); 67 68 #define SMOP_INTERNAL_DESTROY_SEQUENCE \ 69 smop_s1p_emptylist_destr(); \ 68 70 smop_s1p_array_iterator_destr(); \ 69 71 smop_s1p_map_destr(); \ … … 160 162 void smop_s1p_itemrwcontext_init(); 161 163 void smop_s1p_itemrwcontext_destr(); 162 164 void smop_s1p_emptylist_init(); 165 void smop_s1p_emptylist_destr(); 163 166 164 167 #endif -
v6/smop/src/smop_s1p_array.c
r22268 r22272 100 100 } else { 101 101 } 102 102 103 } else if (identifier == SMOP__ID__STORE) { 103 104 resize_array(invocant->array,invocant->index+1); … … 106 107 invocant->array->content[invocant->index] = SMOP__NATIVE__capture_positional(interpreter, capture,0); 107 108 if (invocant->array->elems <= invocant->index) invocant->array->elems = invocant->index+1; 109 108 110 } else if (identifier == SMOP__ID__DESTROYALL) { 109 111 SMOP_RELEASE(interpreter,invocant->array); 112 110 113 } else if (identifier == SMOP__ID__bool) { 111 114 ret = SMOP__NATIVE__bool_true; 115 116 } else if (identifier == SMOP__ID__List) { 117 ret = SMOP_REFERENCE(interpreter,invocant); 118 119 } else if (identifier == SMOP__ID__elems) { 120 ret = SMOP__NATIVE__int_create(1); 121 112 122 } else { 113 123 ___UNKNOWN_METHOD___ 114 124 } 125 115 126 SMOP_RELEASE(interpreter,invocant); 116 127 SMOP_RELEASE(interpreter,capture); -
v6/smop/src/smop_s1p_array_iterator.sm0p
r22184 r22272 115 115 116 116 my $size = $array."elems"(); 117 my $bigger = $count."infix:> "($size);117 my $bigger = $count."infix:>="($size); 118 118 119 119 if $bigger { goto final } else { goto has_next }; … … 124 124 $void = $interpreter."goto"($back); 125 125 final: 126 $void = $back."setr"(¢SMOP__ NATIVE__bool_false);126 $void = $back."setr"(¢SMOP__S1P__EmptyList); 127 127 $void = $interpreter."goto"($back) 128 128
