/* generated by Id 1.1 at ,$ */ /* with the command: -I../stage1/ -c Dictionary.st -o ../stage2/Dictionary.o.c */ #include static struct __libid *_libid= 0; #ifdef ID_DEBUG # define _enter(info) void *__id_debug= _libid->enter(info) # define _line(lno) _libid->line(lno) # define _leave() _libid->leave(__id_debug) # define _backtrace() _libid->backtrace() #else # define _enter(info) (void)info # define _line(lno) # define _leave() # define _backtrace() "(no debugging information)\n" #endif #define _return _leave(); return #define _sendv(MSG, N, RCV, ARG...) ({ \ struct __send _s= { (MSG), (N), (RCV) }; \ ((_imp_t)(_libid->bindv(&_s)))(&_s, _s.receiver, _s.receiver, ##ARG); \ }) #define _superv(TYP, MSG, N, RCV, ARG...) ({ \ struct __send _s= { (MSG), (N), (TYP) }; \ _imp_t _imp= _libid->bindv(&_s); \ _s.receiver= (RCV); \ _imp(&_s, _s.receiver, _s.receiver, ##ARG); \ }) static oop s_values= 0; static oop s_key= 0; static oop s_removeKey_= 0; static oop s_collect_= 0; static oop s_rehash= 0; static oop s_size= 0; static oop s_nextPut_= 0; static oop s_keys= 0; static oop s__5c_5c= 0; static oop s_nextPutAll_= 0; static oop s_size_5f_value_5f_= 0; static oop s_associationAt_ifAbsent_= 0; static oop s_errorKeyNotFound= 0; static oop s_associationAt_= 0; static oop s_space= 0; static oop s__5fdebugName= 0; static oop s_function_5f_arity_5f_outer_state_nlr_5f_= 0; static oop s_findElementOrNil_= 0; static oop s_ifTrue_ifFalse_= 0; static oop s_at_ifAbsent_= 0; static oop s_atNewIndex_put_= 0; static oop s_withKey_value_= 0; static oop s_doWithIndex_= 0; static oop s_includesKey_= 0; static oop s_addAll_= 0; static oop s_associationsDo_= 0; static oop s_keysAndValuesDo_= 0; static oop s_value_value_= 0; static oop s_select_= 0; static oop s_new= 0; static oop s_printElementsOn_= 0; static oop s__5fsizeof= 0; static oop s_keysDo_= 0; static oop s_valuesDo_= 0; static oop s_error_= 0; static oop s_new_5f_= 0; static oop s_new_= 0; static oop s_errorValueNotFound= 0; static oop s_noCheckAdd_= 0; static oop s_hash= 0; static oop s_isDictionary= 0; static oop s_removeKey_ifAbsent_= 0; static oop s_fixCollisionsFrom_= 0; static oop s_value_5f_= 0; static oop s_species= 0; static oop s__5fimport_= 0; static oop s_print_= 0; static oop s_ifFalse_= 0; static oop s_do_= 0; static oop s_skip_= 0; static oop s__5fslots= 0; static oop s_ifTrue_= 0; static oop s__2b= 0; static oop s_to_do_= 0; static oop s_array= 0; static oop s__2d= 0; static oop s_scanFor_= 0; static oop s__3d_3d= 0; static oop s_add_= 0; static oop s__3d= 0; static oop s_isEmpty= 0; static oop s_or_= 0; static oop s_value_= 0; static oop s_at_= 0; static oop s_keyAt_= 0; static oop s_value= 0; static oop s_at_put_= 0; static struct _Selector { const char *name; oop *addr; } _Selectors[]= { { "values", &s_values }, { "key", &s_key }, { "removeKey:", &s_removeKey_ }, { "collect:", &s_collect_ }, { "rehash", &s_rehash }, { "size", &s_size }, { "nextPut:", &s_nextPut_ }, { "keys", &s_keys }, { "\\\\", &s__5c_5c }, { "nextPutAll:", &s_nextPutAll_ }, { "size_:value_:", &s_size_5f_value_5f_ }, { "associationAt:ifAbsent:", &s_associationAt_ifAbsent_ }, { "errorKeyNotFound", &s_errorKeyNotFound }, { "associationAt:", &s_associationAt_ }, { "space", &s_space }, { "_debugName", &s__5fdebugName }, { "function_:arity_:outer:state:nlr_:", &s_function_5f_arity_5f_outer_state_nlr_5f_ }, { "findElementOrNil:", &s_findElementOrNil_ }, { "ifTrue:ifFalse:", &s_ifTrue_ifFalse_ }, { "at:ifAbsent:", &s_at_ifAbsent_ }, { "atNewIndex:put:", &s_atNewIndex_put_ }, { "withKey:value:", &s_withKey_value_ }, { "doWithIndex:", &s_doWithIndex_ }, { "includesKey:", &s_includesKey_ }, { "addAll:", &s_addAll_ }, { "associationsDo:", &s_associationsDo_ }, { "keysAndValuesDo:", &s_keysAndValuesDo_ }, { "value:value:", &s_value_value_ }, { "select:", &s_select_ }, { "new", &s_new }, { "printElementsOn:", &s_printElementsOn_ }, { "_sizeof", &s__5fsizeof }, { "keysDo:", &s_keysDo_ }, { "valuesDo:", &s_valuesDo_ }, { "error:", &s_error_ }, { "new_:", &s_new_5f_ }, { "new:", &s_new_ }, { "errorValueNotFound", &s_errorValueNotFound }, { "noCheckAdd:", &s_noCheckAdd_ }, { "hash", &s_hash }, { "isDictionary", &s_isDictionary }, { "removeKey:ifAbsent:", &s_removeKey_ifAbsent_ }, { "fixCollisionsFrom:", &s_fixCollisionsFrom_ }, { "value_:", &s_value_5f_ }, { "species", &s_species }, { "_import:", &s__5fimport_ }, { "print:", &s_print_ }, { "ifFalse:", &s_ifFalse_ }, { "do:", &s_do_ }, { "skip:", &s_skip_ }, { "_slots", &s__5fslots }, { "ifTrue:", &s_ifTrue_ }, { "+", &s__2b }, { "to:do:", &s_to_do_ }, { "array", &s_array }, { "-", &s__2d }, { "scanFor:", &s_scanFor_ }, { "==", &s__3d_3d }, { "add:", &s_add_ }, { "=", &s__3d }, { "isEmpty", &s_isEmpty }, { "or:", &s_or_ }, { "value:", &s_value_ }, { "at:", &s_at_ }, { "keyAt:", &s_keyAt_ }, { "value", &s_value }, { "at:put:", &s_at_put_ }, { 0, 0 } }; struct t__object { struct _vtable *_vtable[0]; }; struct t__selector { struct _vtable *_vtable[0]; oop v__size; oop v__elements; }; struct t__assoc { struct _vtable *_vtable[0]; oop v_key; oop v_value; }; struct t__closure { struct _vtable *_vtable[0]; oop v__method; oop v_data; }; struct t__vector { struct _vtable *_vtable[0]; oop v__size; }; struct t__vtable { struct _vtable *_vtable[0]; oop v__tally; oop v_bindings; oop v_delegate; }; struct t_Object { struct _vtable *_vtable[0]; }; struct t_UndefinedObject { struct _vtable *_vtable[0]; }; struct t_StaticBlockClosure { struct _vtable *_vtable[0]; oop v__function; oop v__arity; }; struct t_BlockClosure { struct _vtable *_vtable[0]; oop v__function; oop v__arity; oop v_outer; oop v_state; oop v__nlr; }; struct t_Magnitude { struct _vtable *_vtable[0]; }; struct t_Character { struct _vtable *_vtable[0]; oop v_value; }; struct t_Number { struct _vtable *_vtable[0]; }; struct t_Fraction { struct _vtable *_vtable[0]; oop v_numerator; oop v_denominator; }; struct t_Float { struct _vtable *_vtable[0]; }; struct t_Integer { struct _vtable *_vtable[0]; }; struct t_SmallInteger { struct _vtable *_vtable[0]; }; struct t_LargePositiveInteger { struct _vtable *_vtable[0]; oop v_bytes; }; struct t_LargeNegativeInteger { struct _vtable *_vtable[0]; oop v_bytes; }; struct t_Collection { struct _vtable *_vtable[0]; }; struct t_SequenceableCollection { struct _vtable *_vtable[0]; }; struct t_ArrayedCollection { struct _vtable *_vtable[0]; oop v_size; }; struct t_Array { struct _vtable *_vtable[0]; oop v_size; oop v__pointers; }; struct t_ImmutableArray { struct _vtable *_vtable[0]; oop v_size; oop v__pointers; }; struct t_WordArray { struct _vtable *_vtable[0]; oop v_size; oop v__words; }; struct t_ImmutableWordArray { struct _vtable *_vtable[0]; oop v_size; oop v__words; }; struct t_ByteArray { struct _vtable *_vtable[0]; oop v_size; oop v__bytes; }; struct t_ImmutableByteArray { struct _vtable *_vtable[0]; oop v_size; oop v__bytes; }; struct t_String { struct _vtable *_vtable[0]; oop v_size; oop v__bytes; }; struct t_ImmutableString { struct _vtable *_vtable[0]; oop v_size; oop v__bytes; }; struct t_Symbol { struct _vtable *_vtable[0]; oop v_size; oop v__bytes; }; struct t_nil { struct _vtable *_vtable[0]; }; struct t_true { struct _vtable *_vtable[0]; }; struct t_false { struct _vtable *_vtable[0]; }; struct t_CharacterTable { struct _vtable *_vtable[0]; oop v_size; oop v__pointers; }; struct t_Set { struct _vtable *_vtable[0]; oop v_tally; oop v_array; }; struct t_LookupKey { struct _vtable *_vtable[0]; oop v_key; }; struct t_Association { struct _vtable *_vtable[0]; oop v_key; oop v_value; }; struct t_OrderedCollection { struct _vtable *_vtable[0]; oop v_array; oop v_firstIndex; oop v_lastIndex; }; struct t_Dictionary { struct _vtable *_vtable[0]; oop v_tally; oop v_array; }; static oop l_31= 0; static oop l_33= 0; static oop l_34= 0; static oop l_35= 0; static oop l_37= 0; static oop l_39= 0; static oop l_42= 0; static oop l_46= 0; static oop l_49= 0; static oop l_56= 0; static oop v__object= 0; static oop v__vector= 0; static oop v_Object= 0; static oop v_UndefinedObject= 0; static oop v_StaticBlockClosure= 0; static oop v_BlockClosure= 0; static oop v_Magnitude= 0; static oop v_Character= 0; static oop v_Number= 0; static oop v_Integer= 0; static oop v_SmallInteger= 0; static oop v_LargePositiveInteger= 0; static oop v_Collection= 0; static oop v_SequenceableCollection= 0; static oop v_ArrayedCollection= 0; static oop v_Array= 0; static oop v_WordArray= 0; static oop v_ByteArray= 0; static oop v_String= 0; static oop v_ImmutableString= 0; static oop v_nil= 0; static oop v_true= 0; static oop v_false= 0; static oop v_Set= 0; static oop v_LookupKey= 0; static oop v_Association= 0; static oop v_OrderedCollection= 0; static oop v_Dictionary= 0; static size_t Dictionary___5fsizeof(oop _closure, oop v_self) { return sizeof(struct t_Dictionary); } static char *Dictionary___5fdebugName(oop _closure, oop v_self) { return "Dictionary"; } static struct __slotinfo *Dictionary___5fslots(oop _closure, oop v_self) { static struct __slotinfo info[]= { { "tally", 0, 4 }, { "array", 4, 4 }, { 0, 0, 0 } }; return &info[0]; } static struct __methodinfo __info2= { "[] associationAt:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 27, 29, 0 }; static oop b_2(oop v__closure, oop v__self) { _enter(&__info2); oop _1= 0; _line(27); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* self */ _line(27); _1=_sendv(s_errorKeyNotFound, 1, _1); _leave(); return _1; _leave(); } static struct __methodinfo __info1= { "associationAt:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 27, 29, &__info2 }; static oop Dictionary__associationAt_(oop v__closure, oop v_stateful_self, oop v_self, oop v_key) { _enter(&__info1); oop _state1= _sendv(s_new_5f_, 2, v__vector, 5); oop _1= 0; oop _2= 0; oop _3= 0; ((oop *)_state1)[2]= v_stateful_self; ((oop *)_state1)[1]= v_self; _line(27); _1= ((oop *)_state1)[1]; /* self */ _2= v_key; /* Scope() */ /* Scope('self'->ArgumentVariableNode 'key'->ArgumentVariableNode 'tally'->SlotVariableNode 'stateful_self'->ArgumentVariableNode 'array'->SlotVariableNode) */ /* nil */ /* 2 */ /* 1 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_2, 0, 0, ((oop *)_state1), 0); _line(27); _1=_sendv(s_associationAt_ifAbsent_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info3= { "associationAt:ifAbsent:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 29, 41, &__info1 }; static oop Dictionary__associationAt_ifAbsent_(oop v__closure, oop v_stateful_self, oop v_self, oop v_key, oop v_aBlock) { _enter(&__info3); oop v_index= 0; oop v_assoc= 0; oop _1= 0; oop _2= 0; (void)v_index; (void)v_assoc; _line(29); _1= v_self; _2= v_key; _line(34); _1=_sendv(s_findElementOrNil_, 2, _1, _2); v_index= _1; _1= ((struct t_Dictionary *)v_stateful_self)->v_array; _2= v_index; _line(35); _1=_sendv(s_at_, 2, _1, _2); v_assoc= _1; /* ifTrue:ifFalse: */ _1= v_nil; _2= v_assoc; _1= (_1 == _2) ? v_true : v_false; if (!_1) goto _l1; { _1= v_aBlock; _line(37); _1=_sendv(s_value, 1, _1); } goto _l2; _l1:; { _1= v_assoc; } _l2:; _leave(); return _1; _leave(); } static struct __methodinfo __info5= { "[] at:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 41, 47, &__info3 }; static oop b_5(oop v__closure, oop v__self) { _enter(&__info5); oop _1= 0; _line(44); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* self */ _line(44); _1=_sendv(s_errorKeyNotFound, 1, _1); _leave(); return _1; _leave(); } static struct __methodinfo __info4= { "at:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 41, 47, &__info5 }; static oop Dictionary__at_(oop v__closure, oop v_stateful_self, oop v_self, oop v_key) { _enter(&__info4); oop _state1= _sendv(s_new_5f_, 2, v__vector, 5); oop _1= 0; oop _2= 0; oop _3= 0; ((oop *)_state1)[2]= v_stateful_self; ((oop *)_state1)[1]= v_self; _line(41); _1= ((oop *)_state1)[1]; /* self */ _2= v_key; /* Scope() */ /* Scope('self'->ArgumentVariableNode 'key'->ArgumentVariableNode 'tally'->SlotVariableNode 'stateful_self'->ArgumentVariableNode 'array'->SlotVariableNode) */ /* nil */ /* 2 */ /* 1 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_5, 0, 0, ((oop *)_state1), 0); _line(44); _1=_sendv(s_at_ifAbsent_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info6= { "at:ifAbsent:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 47, 58, &__info4 }; static oop Dictionary__at_ifAbsent_(oop v__closure, oop v_stateful_self, oop v_self, oop v_key, oop v_aBlock) { _enter(&__info6); oop v_assoc= 0; oop _1= 0; oop _2= 0; oop _3= 0; (void)v_assoc; _line(47); _1= ((struct t_Dictionary *)v_stateful_self)->v_array; _2= v_self; _3= v_key; _line(52); _2=_sendv(s_findElementOrNil_, 2, _2, _3); _line(52); _1=_sendv(s_at_, 2, _1, _2); v_assoc= _1; /* ifTrue:ifFalse: */ _1= v_nil; _2= v_assoc; _1= (_1 == _2) ? v_true : v_false; if (!_1) goto _l3; { _1= v_aBlock; _line(54); _1=_sendv(s_value, 1, _1); } goto _l4; _l3:; { _1= v_assoc; _line(55); _1=_sendv(s_value, 1, _1); } _l4:; _leave(); return _1; _leave(); } static struct __methodinfo __info7= { "at:put:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 58, 72, &__info6 }; static oop Dictionary__at_put_(oop v__closure, oop v_stateful_self, oop v_self, oop v_key, oop v_anObject) { _enter(&__info7); oop v_index= 0; oop v_assoc= 0; oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; oop _5= 0; (void)v_index; (void)v_assoc; _line(58); _1= v_self; _2= v_key; _line(64); _1=_sendv(s_findElementOrNil_, 2, _1, _2); v_index= _1; _1= ((struct t_Dictionary *)v_stateful_self)->v_array; _2= v_index; _line(65); _1=_sendv(s_at_, 2, _1, _2); v_assoc= _1; /* ifTrue:ifFalse: */ _1= v_nil; _2= v_assoc; _1= (_1 == _2) ? v_true : v_false; if (!_1) goto _l5; { _1= v_self; _2= v_index; _3= v_Association; _4= v_key; _5= v_anObject; _line(67); _3=_sendv(s_withKey_value_, 3, _3, _4, _5); _line(67); _1=_sendv(s_atNewIndex_put_, 3, _1, _2, _3); } goto _l6; _l5:; { _1= v_assoc; _2= v_anObject; _line(68); _1=_sendv(s_value_, 2, _1, _2); } _l6:; _1= v_anObject; _leave(); return _1; _leave(); } static struct __methodinfo __info9= { "[] keys", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 72, 80, &__info7 }; static oop b_9(oop v__closure, oop v__self, oop v_key) { _enter(&__info9); oop _1= 0; oop _2= 0; _line(76); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* keySet */ _2= v_key; _line(76); _1=_sendv(s_add_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info8= { "keys", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 72, 80, &__info9 }; static oop Dictionary__keys(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info8); oop _state1= _sendv(s_new_5f_, 2, v__vector, 2); oop _1= 0; oop _2= 0; _line(72); _1= v_Set; _2= v_self; _line(75); _2=_sendv(s_size, 1, _2); _line(75); _1=_sendv(s_new_, 2, _1, _2); ((oop *)_state1)[1]= _1; /* keySet */ _1= v_self; /* Scope('key'->ArgumentVariableNode) */ /* Scope('keySet'->TemporaryVariableNode 'self'->ArgumentVariableNode 'tally'->SlotVariableNode 'stateful_self'->ArgumentVariableNode 'array'->SlotVariableNode) */ /* nil */ /* 2 */ /* 1 */ _2= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_9, 1, 0, ((oop *)_state1), 0); _line(76); _1=_sendv(s_keysDo_, 2, _1, _2); _1= ((oop *)_state1)[1]; /* keySet */ _leave(); return _1; _leave(); } static struct __methodinfo __info11= { "[] values", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 80, 88, &__info8 }; static oop b_11(oop v__closure, oop v__self, oop v_value, oop v_index) { _enter(&__info11); oop _1= 0; oop _2= 0; oop _3= 0; _line(84); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* valueArray */ _2= v_index; _3= v_value; _line(84); _1=_sendv(s_at_put_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info10= { "values", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 80, 88, &__info11 }; static oop Dictionary__values(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info10); oop _state1= _sendv(s_new_5f_, 2, v__vector, 2); oop _1= 0; oop _2= 0; _line(80); _1= v_Array; _2= v_self; _line(83); _2=_sendv(s_size, 1, _2); _line(83); _1=_sendv(s_new_, 2, _1, _2); ((oop *)_state1)[1]= _1; /* valueArray */ _1= v_self; /* Scope('index'->ArgumentVariableNode 'value'->ArgumentVariableNode) */ /* Scope('array'->SlotVariableNode 'self'->ArgumentVariableNode 'tally'->SlotVariableNode 'stateful_self'->ArgumentVariableNode 'valueArray'->TemporaryVariableNode) */ /* nil */ /* 2 */ /* 1 */ _2= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_11, 2, 0, ((oop *)_state1), 0); _line(84); _1=_sendv(s_doWithIndex_, 2, _1, _2); _1= ((oop *)_state1)[1]; /* valueArray */ _leave(); return _1; _leave(); } static struct __methodinfo __info13= { "[] includesKey:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 88, 94, &__info10 }; static oop b_13(oop v__closure, oop v__self) { _enter(&__info13); oop _1= 0; _line(90); _1= v_false; _leave(); return _libid->nlreturn(((struct t_BlockClosure *)v__self)->v__nlr, _1); _leave(); } static struct __methodinfo __info12= { "includesKey:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 88, 94, &__info13 }; static oop Dictionary__includesKey_(oop v__closure, oop v_stateful_self, oop v_self, oop v_key) { _enter(&__info12); oop _1= 0; oop _2= 0; oop _3= 0; jmp_buf __nlr; oop _nlr; _nlr= (oop)&__nlr; if (setjmp(__nlr)) { return _libid->nlresult(); } _line(88); _1= v_self; _2= v_key; /* Scope() */ /* Scope('self'->ArgumentVariableNode 'key'->ArgumentVariableNode 'tally'->SlotVariableNode 'stateful_self'->ArgumentVariableNode 'array'->SlotVariableNode) */ /* nil */ /* 2 */ /* 1 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_13, 0, 0, 0, _nlr); _line(90); _1=_sendv(s_at_ifAbsent_, 3, _1, _2, _3); _1= v_true; _leave(); return _1; _leave(); } static struct __methodinfo __info14= { "add:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 94, 105, &__info12 }; static oop Dictionary__add_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anAssociation) { _enter(&__info14); oop v_index= 0; oop v_element= 0; oop _1= 0; oop _2= 0; oop _3= 0; (void)v_index; (void)v_element; _line(94); _1= v_self; _2= v_anAssociation; _line(97); _2=_sendv(s_key, 1, _2); _line(97); _1=_sendv(s_findElementOrNil_, 2, _1, _2); v_index= _1; _1= ((struct t_Dictionary *)v_stateful_self)->v_array; _2= v_index; _line(98); _1=_sendv(s_at_, 2, _1, _2); v_element= _1; /* ifTrue:ifFalse: */ _1= v_nil; _2= v_element; _1= (_1 == _2) ? v_true : v_false; if (!_1) goto _l7; { _1= v_self; _2= v_index; _3= v_anAssociation; _line(100); _1=_sendv(s_atNewIndex_put_, 3, _1, _2, _3); } goto _l8; _l7:; { _1= v_element; _2= v_anAssociation; _line(101); _2=_sendv(s_value, 1, _2); _line(101); _1=_sendv(s_value_, 2, _1, _2); } _l8:; _1= v_anAssociation; _leave(); return _1; _leave(); } static struct __methodinfo __info16= { "[] addAll:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 105, 111, &__info14 }; static oop b_16(oop v__closure, oop v__self, oop v_assoc) { _enter(&__info16); oop _1= 0; oop _2= 0; _line(107); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* self */ _2= v_assoc; _line(107); _1=_sendv(s_add_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info15= { "addAll:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 105, 111, &__info16 }; static oop Dictionary__addAll_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aDictionary) { _enter(&__info15); oop _state1= _sendv(s_new_5f_, 2, v__vector, 5); oop _1= 0; oop _2= 0; oop _3= 0; ((oop *)_state1)[2]= v_stateful_self; ((oop *)_state1)[1]= v_self; _line(105); /* ifFalse: */ _1= 0; _2= v_aDictionary; _3= ((oop *)_state1)[1]; /* self */ _2= (_2 == _3) ? v_true : v_false; if (_2) goto _l9; { _1= v_aDictionary; /* Scope('assoc'->ArgumentVariableNode) */ /* Scope('array'->SlotVariableNode 'self'->ArgumentVariableNode 'tally'->SlotVariableNode 'aDictionary'->ArgumentVariableNode 'stateful_self'->ArgumentVariableNode) */ /* nil */ /* 2 */ /* 1 */ _2= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_16, 1, 0, ((oop *)_state1), 0); _line(107); _1=_sendv(s_associationsDo_, 2, _1, _2); } _l9:; _1= v_aDictionary; _leave(); return _1; _leave(); } static struct __methodinfo __info17= { "associationsDo:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 111, 116, &__info15 }; static oop Dictionary__associationsDo_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aBlock) { _enter(&__info17); oop _1= 0; oop _2= 0; _line(111); _1= v_self; _2= v_aBlock; _line(113); _1=_superv(v_Set, s_do_, 2, _1, _2); _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info19= { "[] collect:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 116, 127, &__info17 }; static oop b_19(oop v__closure, oop v__self, oop v_each) { _enter(&__info19); oop _1= 0; oop _2= 0; oop _3= 0; _line(123); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* newCollection */ _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* aBlock */ _3= v_each; _line(123); _2=_sendv(s_value_, 2, _2, _3); _line(123); _1=_sendv(s_add_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info18= { "collect:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 116, 127, &__info19 }; static oop Dictionary__collect_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aBlock) { _enter(&__info18); oop _state1= _sendv(s_new_5f_, 2, v__vector, 3); oop _1= 0; oop _2= 0; ((oop *)_state1)[2]= v_aBlock; _line(116); _1= v_OrderedCollection; _2= v_self; _line(122); _2=_sendv(s_size, 1, _2); _line(122); _1=_sendv(s_new_, 2, _1, _2); ((oop *)_state1)[1]= _1; /* newCollection */ _1= v_self; /* Scope('each'->ArgumentVariableNode) */ /* Scope('tally'->SlotVariableNode 'array'->SlotVariableNode 'self'->ArgumentVariableNode 'aBlock'->ArgumentVariableNode 'newCollection'->TemporaryVariableNode 'stateful_self'->ArgumentVariableNode) */ /* nil */ /* 2 */ /* 1 */ _2= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_19, 1, 0, ((oop *)_state1), 0); _line(123); _1=_sendv(s_do_, 2, _1, _2); _1= ((oop *)_state1)[1]; /* newCollection */ _leave(); return _1; _leave(); } static struct __methodinfo __info21= { "[] do:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 127, 132, &__info18 }; static oop b_21(oop v__closure, oop v__self, oop v_assoc) { _enter(&__info21); oop _1= 0; oop _2= 0; _line(129); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* aBlock */ _2= v_assoc; _line(129); _2=_sendv(s_value, 1, _2); _line(129); _1=_sendv(s_value_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info20= { "do:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 127, 132, &__info21 }; static oop Dictionary__do_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aBlock) { _enter(&__info20); oop _state1= _sendv(s_new_5f_, 2, v__vector, 2); oop _1= 0; oop _2= 0; ((oop *)_state1)[1]= v_aBlock; _line(127); _1= v_self; /* Scope('assoc'->ArgumentVariableNode) */ /* Scope('array'->SlotVariableNode 'self'->ArgumentVariableNode 'tally'->SlotVariableNode 'aBlock'->ArgumentVariableNode 'stateful_self'->ArgumentVariableNode) */ /* nil */ /* 2 */ /* 1 */ _2= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_21, 1, 0, ((oop *)_state1), 0); _line(129); _1=_superv(v_Set, s_do_, 2, _1, _2); _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info23= { "[] keysAndValuesDo:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 132, 137, &__info20 }; static oop b_23(oop v__closure, oop v__self, oop v_assoc) { _enter(&__info23); oop _1= 0; oop _2= 0; oop _3= 0; _line(134); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* aBlock */ _2= v_assoc; _line(134); _2=_sendv(s_key, 1, _2); _3= v_assoc; _line(134); _3=_sendv(s_value, 1, _3); _line(134); _1=_sendv(s_value_value_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info22= { "keysAndValuesDo:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 132, 137, &__info23 }; static oop Dictionary__keysAndValuesDo_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aBlock) { _enter(&__info22); oop _state1= _sendv(s_new_5f_, 2, v__vector, 2); oop _1= 0; oop _2= 0; ((oop *)_state1)[1]= v_aBlock; _line(132); _1= v_self; /* Scope('assoc'->ArgumentVariableNode) */ /* Scope('array'->SlotVariableNode 'self'->ArgumentVariableNode 'tally'->SlotVariableNode 'aBlock'->ArgumentVariableNode 'stateful_self'->ArgumentVariableNode) */ /* nil */ /* 2 */ /* 1 */ _2= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_23, 1, 0, ((oop *)_state1), 0); _line(134); _1=_sendv(s_associationsDo_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info25= { "[] keysDo:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 137, 142, &__info22 }; static oop b_25(oop v__closure, oop v__self, oop v_association) { _enter(&__info25); oop _1= 0; oop _2= 0; _line(139); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* aBlock */ _2= v_association; _line(139); _2=_sendv(s_key, 1, _2); _line(139); _1=_sendv(s_value_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info24= { "keysDo:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 137, 142, &__info25 }; static oop Dictionary__keysDo_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aBlock) { _enter(&__info24); oop _state1= _sendv(s_new_5f_, 2, v__vector, 2); oop _1= 0; oop _2= 0; ((oop *)_state1)[1]= v_aBlock; _line(137); _1= v_self; /* Scope('association'->ArgumentVariableNode) */ /* Scope('array'->SlotVariableNode 'self'->ArgumentVariableNode 'tally'->SlotVariableNode 'aBlock'->ArgumentVariableNode 'stateful_self'->ArgumentVariableNode) */ /* nil */ /* 2 */ /* 1 */ _2= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_25, 1, 0, ((oop *)_state1), 0); _line(139); _1=_sendv(s_associationsDo_, 2, _1, _2); _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info27= { "[] select:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 142, 152, &__info24 }; static oop b_27(oop v__closure, oop v__self, oop v_assoc) { _enter(&__info27); oop _1= 0; oop _2= 0; oop _3= 0; _line(148); /* ifTrue: */ _1= 0; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* aBlock */ _3= v_assoc; _line(148); _3=_sendv(s_value, 1, _3); _line(148); _2=_sendv(s_value_, 2, _2, _3); if (!_2) goto _l10; { _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* newCollection */ _2= v_assoc; _line(148); _1=_sendv(s_add_, 2, _1, _2); } _l10:; _leave(); return _1; _leave(); } static struct __methodinfo __info26= { "select:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 142, 152, &__info27 }; static oop Dictionary__select_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aBlock) { _enter(&__info26); oop _state1= _sendv(s_new_5f_, 2, v__vector, 3); oop _1= 0; oop _2= 0; ((oop *)_state1)[1]= v_aBlock; _line(142); _1= v_self; _line(147); _1=_sendv(s_species, 1, _1); _line(147); _1=_sendv(s_new, 1, _1); ((oop *)_state1)[2]= _1; /* newCollection */ _1= v_self; /* Scope('assoc'->ArgumentVariableNode) */ /* Scope('tally'->SlotVariableNode 'array'->SlotVariableNode 'self'->ArgumentVariableNode 'aBlock'->ArgumentVariableNode 'newCollection'->TemporaryVariableNode 'stateful_self'->ArgumentVariableNode) */ /* nil */ /* 2 */ /* 1 */ _2= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_27, 1, 0, ((oop *)_state1), 0); _line(148); _1=_sendv(s_associationsDo_, 2, _1, _2); _1= ((oop *)_state1)[2]; /* newCollection */ _leave(); return _1; _leave(); } static struct __methodinfo __info29= { "[] valuesDo:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 152, 157, &__info26 }; static oop b_29(oop v__closure, oop v__self, oop v_assoc) { _enter(&__info29); oop _1= 0; oop _2= 0; _line(154); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* aBlock */ _2= v_assoc; _line(154); _2=_sendv(s_value, 1, _2); _line(154); _1=_sendv(s_value_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info28= { "valuesDo:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 152, 157, &__info29 }; static oop Dictionary__valuesDo_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aBlock) { _enter(&__info28); oop _state1= _sendv(s_new_5f_, 2, v__vector, 2); oop _1= 0; oop _2= 0; ((oop *)_state1)[1]= v_aBlock; _line(152); _1= v_self; /* Scope('assoc'->ArgumentVariableNode) */ /* Scope('array'->SlotVariableNode 'self'->ArgumentVariableNode 'tally'->SlotVariableNode 'aBlock'->ArgumentVariableNode 'stateful_self'->ArgumentVariableNode) */ /* nil */ /* 2 */ /* 1 */ _2= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_29, 1, 0, ((oop *)_state1), 0); _line(154); _1=_sendv(s_associationsDo_, 2, _1, _2); _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info32= { "[] printElementsOn:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 157, 165, &__info28 }; static oop b_32(oop v__closure, oop v__self, oop v_key) { _enter(&__info32); oop _1= 0; oop _2= 0; oop _3= 0; _line(160); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* aStream */ _2= v_key; _line(160); _sendv(s_print_, 2, _1, _2); _2= l_35; _sendv(s_nextPutAll_, 2, _1, _2); _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* self */ _3= v_key; _line(160); _2=_sendv(s_at_, 2, _2, _3); _sendv(s_print_, 2, _1, _2); _1=_sendv(s_space, 1, _1); _leave(); return _1; _leave(); } static struct __methodinfo __info30= { "printElementsOn:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 157, 165, &__info32 }; static oop Dictionary__printElementsOn_(oop v__closure, oop v_stateful_self, oop v_self, oop v_aStream) { _enter(&__info30); oop _state1= _sendv(s_new_5f_, 2, v__vector, 6); oop _1= 0; oop _2= 0; ((oop *)_state1)[3]= v_stateful_self; ((oop *)_state1)[2]= v_self; ((oop *)_state1)[1]= v_aStream; _line(157); _1= ((oop *)_state1)[1]; /* aStream */ _2= l_31; _line(159); _1=_sendv(s_nextPut_, 2, _1, _2); _1= ((oop *)_state1)[2]; /* self */ /* Scope('key'->ArgumentVariableNode) */ /* Scope('array'->SlotVariableNode 'self'->ArgumentVariableNode 'tally'->SlotVariableNode 'stateful_self'->ArgumentVariableNode 'aStream'->ArgumentVariableNode) */ /* nil */ /* 2 */ /* 1 */ _2= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_32, 1, 0, ((oop *)_state1), 0); _line(160); _1=_sendv(s_keysDo_, 2, _1, _2); /* ifFalse: */ _1= 0; _2= ((oop *)_state1)[2]; /* self */ _line(161); _2=_sendv(s_isEmpty, 1, _2); if (_2) goto _l11; { _1= ((oop *)_state1)[1]; /* aStream */ _2= l_33; _line(161); _1=_sendv(s_skip_, 2, _1, _2); } _l11:; _1= ((oop *)_state1)[1]; /* aStream */ _2= l_34; _line(162); _1=_sendv(s_nextPut_, 2, _1, _2); _1= ((oop *)_state1)[2]; /* self */ _leave(); return _1; _leave(); } static struct __methodinfo __info36= { "errorKeyNotFound", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 165, 170, &__info30 }; static oop Dictionary__errorKeyNotFound(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info36); oop _1= 0; oop _2= 0; _line(165); _1= v_self; _2= l_37; _line(167); _1=_sendv(s_error_, 2, _1, _2); _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info38= { "errorValueNotFound", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 170, 175, &__info36 }; static oop Dictionary__errorValueNotFound(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info38); oop _1= 0; oop _2= 0; _line(170); _1= v_self; _2= l_39; _line(172); _1=_sendv(s_error_, 2, _1, _2); _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info40= { "keyAt:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 175, 183, &__info38 }; static oop Dictionary__keyAt_(oop v__closure, oop v_stateful_self, oop v_self, oop v_index) { _enter(&__info40); oop v_assoc= 0; oop _1= 0; oop _2= 0; oop _3= 0; (void)v_assoc; _line(175); _1= ((struct t_Dictionary *)v_stateful_self)->v_array; _2= v_index; _line(179); _1=_sendv(s_at_, 2, _1, _2); v_assoc= _1; /* ifFalse: */ _1= 0; _2= v_nil; _3= v_assoc; _2= (_2 == _3) ? v_true : v_false; if (_2) goto _l12; { _1= v_assoc; _line(180); _1=_sendv(s_key, 1, _1); } _l12:; _leave(); return _1; _leave(); } static struct __methodinfo __info41= { "noCheckAdd:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 183, 189, &__info40 }; static oop Dictionary__noCheckAdd_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anObject) { _enter(&__info41); oop _1= 0; oop _2= 0; oop _3= 0; _line(183); _1= ((struct t_Dictionary *)v_stateful_self)->v_array; _2= v_self; _3= v_anObject; _line(185); _3=_sendv(s_key, 1, _3); _line(185); _2=_sendv(s_findElementOrNil_, 2, _2, _3); _3= v_anObject; _line(185); _1=_sendv(s_at_put_, 3, _1, _2, _3); _1= ((struct t_Dictionary *)v_stateful_self)->v_tally; _2= l_42; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } ((struct t_Dictionary *)v_stateful_self)->v_tally= _1; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info44= { "[] rehash", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 189, 197, &__info41 }; static oop b_44(oop v__closure, oop v__self, oop v_each) { _enter(&__info44); oop _1= 0; oop _2= 0; _line(193); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* newSelf */ _2= v_each; _line(193); _1=_sendv(s_noCheckAdd_, 2, _1, _2); _leave(); return _1; _leave(); } static struct __methodinfo __info43= { "rehash", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 189, 197, &__info44 }; static oop Dictionary__rehash(oop v__closure, oop v_stateful_self, oop v_self) { _enter(&__info43); oop _state1= _sendv(s_new_5f_, 2, v__vector, 2); oop _1= 0; oop _2= 0; _line(189); _1= v_self; _line(192); _1=_sendv(s_species, 1, _1); _2= v_self; _line(192); _2=_sendv(s_size, 1, _2); _line(192); _1=_sendv(s_new_, 2, _1, _2); ((oop *)_state1)[1]= _1; /* newSelf */ _1= v_self; /* Scope('each'->ArgumentVariableNode) */ /* Scope('newSelf'->TemporaryVariableNode 'self'->ArgumentVariableNode 'tally'->SlotVariableNode 'stateful_self'->ArgumentVariableNode 'array'->SlotVariableNode) */ /* nil */ /* 2 */ /* 1 */ _2= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_44, 1, 0, ((oop *)_state1), 0); _line(193); _1=_sendv(s_associationsDo_, 2, _1, _2); _1= ((oop *)_state1)[1]; /* newSelf */ _line(194); _1=_sendv(s_array, 1, _1); ((struct t_Dictionary *)v_stateful_self)->v_array= _1; _1= v_self; _leave(); return _1; _leave(); } static struct __methodinfo __info47= { "[] scanFor:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 197, 218, &__info43 }; static oop b_47(oop v__closure, oop v__self, oop v_index) { _enter(&__info47); oop _1= 0; oop _2= 0; oop _3= 0; _line(208); /* ifTrue: */ _1= 0; /* or: */ _2= ((struct t_Dictionary *)((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1])->v_array; /* array */ _3= v_index; _line(209); _2=_sendv(s_at_, 2, _2, _3); ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]= _2; /* element */ _3= v_nil; _2= (_2 == _3) ? v_true : v_false; if (_2) goto _l14; { _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* element */ _line(209); _2=_sendv(s_key, 1, _2); _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* anObject */ if (1 & (long)_2 & (long)_3) { _2= (((long)_2 == (long)_3) ? v_true : v_false); } else _2= _sendv(s__3d, 2, _2, _3); } _l14:; if (!_2) goto _l13; { _1= v_index; _leave(); return _libid->nlreturn(((struct t_BlockClosure *)v__self)->v__nlr, _1); } _l13:; _leave(); return _1; _leave(); } static struct __methodinfo __info48= { "[] scanFor:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 197, 218, &__info47 }; static oop b_48(oop v__closure, oop v__self, oop v_index) { _enter(&__info48); oop _1= 0; oop _2= 0; oop _3= 0; _line(212); /* ifTrue: */ _1= 0; /* or: */ _2= ((struct t_Dictionary *)((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1])->v_array; /* array */ _3= v_index; _line(213); _2=_sendv(s_at_, 2, _2, _3); ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]= _2; /* element */ _3= v_nil; _2= (_2 == _3) ? v_true : v_false; if (_2) goto _l16; { _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[2]; /* element */ _line(213); _2=_sendv(s_key, 1, _2); _3= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[3]; /* anObject */ if (1 & (long)_2 & (long)_3) { _2= (((long)_2 == (long)_3) ? v_true : v_false); } else _2= _sendv(s__3d, 2, _2, _3); } _l16:; if (!_2) goto _l15; { _1= v_index; _leave(); return _libid->nlreturn(((struct t_BlockClosure *)v__self)->v__nlr, _1); } _l15:; _leave(); return _1; _leave(); } static struct __methodinfo __info45= { "scanFor:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 197, 218, &__info48 }; static oop Dictionary__scanFor_(oop v__closure, oop v_stateful_self, oop v_self, oop v_anObject) { _enter(&__info45); oop _state1= _sendv(s_new_5f_, 2, v__vector, 6); oop v_start= 0; oop v_finish= 0; oop _1= 0; oop _2= 0; oop _3= 0; jmp_buf __nlr; oop _nlr; (void)v_start; (void)v_finish; ((oop *)_state1)[1]= v_stateful_self; ((oop *)_state1)[3]= v_anObject; _nlr= (oop)&__nlr; if (setjmp(__nlr)) { return _libid->nlresult(); } _line(197); _1= ((oop *)_state1)[3]; /* anObject */ _line(205); _1=_sendv(s_hash, 1, _1); _2= ((struct t_Dictionary *)((oop *)_state1)[1])->v_array; /* array */ _line(205); _2=_sendv(s_size, 1, _2); _1= _sendv(s__5c_5c, 2, _1, _2); _2= l_46; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= _l + _r; if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2b, 2, _1, _2); } v_start= _1; _1= ((struct t_Dictionary *)((oop *)_state1)[1])->v_array; /* array */ _line(206); _1=_sendv(s_size, 1, _1); v_finish= _1; _1= v_start; _2= v_finish; /* Scope('index'->ArgumentVariableNode) */ /* Scope('finish'->TemporaryVariableNode 'element'->TemporaryVariableNode 'tally'->SlotVariableNode 'start'->TemporaryVariableNode 'stateful_self'->ArgumentVariableNode 'array'->SlotVariableNode 'self'->ArgumentVariableNode 'anObject'->ArgumentVariableNode) */ /* nil */ /* 2 */ /* 1 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_47, 1, 0, ((oop *)_state1), _nlr); _line(208); _1=_sendv(s_to_do_, 3, _1, _2, _3); _1= l_46; _2= v_start; _3= l_46; { int _l= (long)_2 >> 1; int _r= (long)_3 >> 1; int _s= (_l - _r); if ((1 & (long)_2) && ((_s ^ (_s << 1)) >= 0)) _2= (oop)(long)(_s << 1 | 1); else _2= _sendv(s__2d, 2, _2, _3); } /* Scope('index'->ArgumentVariableNode) */ /* Scope('finish'->TemporaryVariableNode 'element'->TemporaryVariableNode 'tally'->SlotVariableNode 'start'->TemporaryVariableNode 'stateful_self'->ArgumentVariableNode 'array'->SlotVariableNode 'self'->ArgumentVariableNode 'anObject'->ArgumentVariableNode) */ /* nil */ /* 2 */ /* 1 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_48, 1, 0, ((oop *)_state1), _nlr); _line(212); _1=_sendv(s_to_do_, 3, _1, _2, _3); _1= l_49; _leave(); return _1; _leave(); } static struct __methodinfo __info52= { "[] =", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 218, 228, &__info45 }; static oop b_52(oop v__closure, oop v__self) { _enter(&__info52); oop _1= 0; _line(223); _1= v_false; _leave(); return _libid->nlreturn(((struct t_BlockClosure *)v__self)->v__nlr, _1); _leave(); } static struct __methodinfo __info51= { "[] =", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 218, 228, &__info52 }; static oop b_51(oop v__closure, oop v__self, oop v_assoc) { _enter(&__info51); oop _1= 0; oop _2= 0; oop _3= 0; oop _4= 0; _line(222); /* ifFalse: */ _1= 0; _2= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* aDictionary */ _3= v_assoc; _line(223); _3=_sendv(s_key, 1, _3); /* Scope() */ /* Scope('assoc'->ArgumentVariableNode) */ /* Object */ /* 3 */ /* 2 */ _4= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_52, 0, v__self, 0, ((struct t_BlockClosure *)v__self)->v__nlr); _line(223); _2=_sendv(s_at_ifAbsent_, 3, _2, _3, _4); _3= v_assoc; _line(223); _3=_sendv(s_value, 1, _3); if (1 & (long)_2 & (long)_3) { _2= (((long)_2 == (long)_3) ? v_true : v_false); } else _2= _sendv(s__3d, 2, _2, _3); if (_2) goto _l17; { _1= v_false; _leave(); return _libid->nlreturn(((struct t_BlockClosure *)v__self)->v__nlr, _1); } _l17:; _leave(); return _1; _leave(); } static struct __methodinfo __info50= { "=", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 218, 228, &__info51 }; static oop Dictionary___3d(oop v__closure, oop v_stateful_self, oop v_self, oop v_aDictionary) { _enter(&__info50); oop _state1= _sendv(s_new_5f_, 2, v__vector, 2); oop _1= 0; oop _2= 0; oop _3= 0; jmp_buf __nlr; oop _nlr; ((oop *)_state1)[1]= v_aDictionary; _nlr= (oop)&__nlr; if (setjmp(__nlr)) { return _libid->nlresult(); } _line(218); /* ifFalse: */ _1= 0; _2= ((oop *)_state1)[1]; /* aDictionary */ _line(220); _2=_sendv(s_isDictionary, 1, _2); if (_2) goto _l18; { _1= v_false; _leave(); return _1; } _l18:; /* ifFalse: */ _1= 0; _2= v_self; _line(221); _2=_sendv(s_size, 1, _2); _3= ((oop *)_state1)[1]; /* aDictionary */ _line(221); _3=_sendv(s_size, 1, _3); if (1 & (long)_2 & (long)_3) { _2= (((long)_2 == (long)_3) ? v_true : v_false); } else _2= _sendv(s__3d, 2, _2, _3); if (_2) goto _l19; { _1= v_false; _leave(); return _1; } _l19:; _1= v_self; /* Scope('assoc'->ArgumentVariableNode) */ /* Scope('array'->SlotVariableNode 'self'->ArgumentVariableNode 'tally'->SlotVariableNode 'aDictionary'->ArgumentVariableNode 'stateful_self'->ArgumentVariableNode) */ /* nil */ /* 2 */ /* 1 */ _2= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_51, 1, 0, ((oop *)_state1), _nlr); _line(222); _1=_sendv(s_associationsDo_, 2, _1, _2); _1= v_true; _leave(); return _1; _leave(); } static struct __methodinfo __info54= { "[] removeKey:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 228, 233, &__info50 }; static oop b_54(oop v__closure, oop v__self) { _enter(&__info54); oop _1= 0; _line(230); _1= ((oop *)((struct t_BlockClosure *)((struct t_BlockClosure *)v__self)->v_state))[1]; /* self */ _line(230); _1=_sendv(s_errorKeyNotFound, 1, _1); _leave(); return _1; _leave(); } static struct __methodinfo __info53= { "removeKey:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 228, 233, &__info54 }; static oop Dictionary__removeKey_(oop v__closure, oop v_stateful_self, oop v_self, oop v_key) { _enter(&__info53); oop _state1= _sendv(s_new_5f_, 2, v__vector, 5); oop _1= 0; oop _2= 0; oop _3= 0; ((oop *)_state1)[2]= v_stateful_self; ((oop *)_state1)[1]= v_self; _line(228); _1= ((oop *)_state1)[1]; /* self */ _2= v_key; /* Scope() */ /* Scope('self'->ArgumentVariableNode 'key'->ArgumentVariableNode 'tally'->SlotVariableNode 'stateful_self'->ArgumentVariableNode 'array'->SlotVariableNode) */ /* nil */ /* 2 */ /* 1 */ _3= _sendv(s_function_5f_arity_5f_outer_state_nlr_5f_, 6, v_BlockClosure, (oop)b_54, 0, 0, ((oop *)_state1), 0); _line(230); _1=_sendv(s_removeKey_ifAbsent_, 3, _1, _2, _3); _leave(); return _1; _leave(); } static struct __methodinfo __info55= { "removeKey:ifAbsent:", "Dictionary", "/Users/piumarta/src/idst/object/st80/Dictionary.st", 0, 233, 247, &__info53 }; static oop Dictionary__removeKey_ifAbsent_(oop v__closure, oop v_stateful_self, oop v_self, oop v_key, oop v_aBlock) { _enter(&__info55); oop v_index= 0; oop v_assoc= 0; oop _1= 0; oop _2= 0; oop _3= 0; (void)v_index; (void)v_assoc; _line(233); _1= v_self; _2= v_key; _line(239); _1=_sendv(s_findElementOrNil_, 2, _1, _2); v_index= _1; _1= ((struct t_Dictionary *)v_stateful_self)->v_array; _2= v_index; _line(240); _1=_sendv(s_at_, 2, _1, _2); v_assoc= _1; /* ifTrue: */ _1= 0; _2= v_assoc; _3= v_nil; _2= (_2 == _3) ? v_true : v_false; if (!_2) goto _l20; { _1= v_aBlock; _line(241); _1=_sendv(s_value, 1, _1); _leave(); return _1; } _l20:; _1= ((struct t_Dictionary *)v_stateful_self)->v_array; _2= v_index; _3= v_nil; _line(242); _1=_sendv(s_at_put_, 3, _1, _2, _3); _1= ((struct t_Dictionary *)v_stateful_self)->v_tally; _2= l_56; { int _l= (long)_1 >> 1; int _r= (long)_2 >> 1; int _s= (_l - _r); if ((1 & (long)_1) && ((_s ^ (_s << 1)) >= 0)) _1= (oop)(long)(_s << 1 | 1); else _1= _sendv(s__2d, 2, _1, _2); } ((struct t_Dictionary *)v_stateful_self)->v_tally= _1; _1= v_self; _2= v_index; _line(244); _1=_sendv(s_fixCollisionsFrom_, 2, _1, _2); _1= v_assoc; _line(245); _1=_sendv(s_value, 1, _1); _leave(); return _1; _leave(); } static struct __methodinfo __info= { "__id__init__", "", "Dictionary.st", 0, 0, 0, &__info55 }; void __id__init__Dictionary(struct __libid *__libid) { if (_libid) return; if (!(_libid= __libid)) { fprintf(stderr, "init _libid %p\n", __libid); abort(); } # define GC_add_roots _libid->gc_addRoots GC_INIT(); { struct _Selector *s= 0; for (s= _Selectors; s->name; ++s) *s->addr= _libid->intern(s->name); } _enter(&__info); _libid->infos(&__info, &__info2); _sendv(s__5fimport_, 3, _libid->_object, "Set", "__id__init__Set"); v__object= _libid->import("_object"); v__vector= _libid->import("_vector"); v_Object= _libid->import("Object"); v_UndefinedObject= _libid->import("UndefinedObject"); v_StaticBlockClosure= _libid->import("StaticBlockClosure"); v_BlockClosure= _libid->import("BlockClosure"); v_Magnitude= _libid->import("Magnitude"); v_Character= _libid->import("Character"); v_Number= _libid->import("Number"); v_Integer= _libid->import("Integer"); v_SmallInteger= _libid->import("SmallInteger"); v_LargePositiveInteger= _libid->import("LargePositiveInteger"); v_Collection= _libid->import("Collection"); v_SequenceableCollection= _libid->import("SequenceableCollection"); v_ArrayedCollection= _libid->import("ArrayedCollection"); v_Array= _libid->import("Array"); v_WordArray= _libid->import("WordArray"); v_ByteArray= _libid->import("ByteArray"); v_String= _libid->import("String"); v_ImmutableString= _libid->import("ImmutableString"); v_nil= _libid->import("nil"); v_true= _libid->import("true"); v_false= _libid->import("false"); v_Set= _libid->import("Set"); _sendv(s__5fimport_, 3, _libid->_object, "Association", "__id__init__Association"); v_LookupKey= _libid->import("LookupKey"); v_Association= _libid->import("Association"); _sendv(s__5fimport_, 3, _libid->_object, "OrderedCollection", "__id__init__OrderedCollection"); v_OrderedCollection= _libid->import("OrderedCollection"); v_Dictionary= _libid->proto2(v_Set, Dictionary___5fsizeof(0, 0)); _libid->method(v_Dictionary, s__5fsizeof, (_imp_t)Dictionary___5fsizeof); _libid->method(v_Dictionary, s__5fdebugName, (_imp_t)Dictionary___5fdebugName); _libid->method(v_Dictionary, s__5fslots, (_imp_t)Dictionary___5fslots); _libid->export("Dictionary", v_Dictionary); _libid->method(v_Dictionary, s_associationAt_, (_imp_t)Dictionary__associationAt_); _libid->method(v_Dictionary, s_associationAt_ifAbsent_, (_imp_t)Dictionary__associationAt_ifAbsent_); _libid->method(v_Dictionary, s_at_, (_imp_t)Dictionary__at_); _libid->method(v_Dictionary, s_at_ifAbsent_, (_imp_t)Dictionary__at_ifAbsent_); _libid->method(v_Dictionary, s_at_put_, (_imp_t)Dictionary__at_put_); _libid->method(v_Dictionary, s_keys, (_imp_t)Dictionary__keys); _libid->method(v_Dictionary, s_values, (_imp_t)Dictionary__values); _libid->method(v_Dictionary, s_includesKey_, (_imp_t)Dictionary__includesKey_); _libid->method(v_Dictionary, s_add_, (_imp_t)Dictionary__add_); _libid->method(v_Dictionary, s_addAll_, (_imp_t)Dictionary__addAll_); _libid->method(v_Dictionary, s_associationsDo_, (_imp_t)Dictionary__associationsDo_); _libid->method(v_Dictionary, s_collect_, (_imp_t)Dictionary__collect_); _libid->method(v_Dictionary, s_do_, (_imp_t)Dictionary__do_); _libid->method(v_Dictionary, s_keysAndValuesDo_, (_imp_t)Dictionary__keysAndValuesDo_); _libid->method(v_Dictionary, s_keysDo_, (_imp_t)Dictionary__keysDo_); _libid->method(v_Dictionary, s_select_, (_imp_t)Dictionary__select_); _libid->method(v_Dictionary, s_valuesDo_, (_imp_t)Dictionary__valuesDo_); l_31= _sendv(s_value_5f_, 2, v_Character, 40); l_33= _sendv(s_value_5f_, 2, v_SmallInteger, -1); l_34= _sendv(s_value_5f_, 2, v_Character, 41); l_35= _sendv(s_size_5f_value_5f_, 3, v_ImmutableString, 2, "->"); _libid->method(v_Dictionary, s_printElementsOn_, (_imp_t)Dictionary__printElementsOn_); l_37= _sendv(s_size_5f_value_5f_, 3, v_ImmutableString, 13, "key not found"); _libid->method(v_Dictionary, s_errorKeyNotFound, (_imp_t)Dictionary__errorKeyNotFound); l_39= _sendv(s_size_5f_value_5f_, 3, v_ImmutableString, 15, "value not found"); _libid->method(v_Dictionary, s_errorValueNotFound, (_imp_t)Dictionary__errorValueNotFound); _libid->method(v_Dictionary, s_keyAt_, (_imp_t)Dictionary__keyAt_); l_42= _sendv(s_value_5f_, 2, v_SmallInteger, 1); _libid->method(v_Dictionary, s_noCheckAdd_, (_imp_t)Dictionary__noCheckAdd_); _libid->method(v_Dictionary, s_rehash, (_imp_t)Dictionary__rehash); l_46= _sendv(s_value_5f_, 2, v_SmallInteger, 1); l_49= _sendv(s_value_5f_, 2, v_SmallInteger, 0); _libid->method(v_Dictionary, s_scanFor_, (_imp_t)Dictionary__scanFor_); _libid->method(v_Dictionary, s__3d, (_imp_t)Dictionary___3d); _libid->method(v_Dictionary, s_removeKey_, (_imp_t)Dictionary__removeKey_); l_56= _sendv(s_value_5f_, 2, v_SmallInteger, 1); _libid->method(v_Dictionary, s_removeKey_ifAbsent_, (_imp_t)Dictionary__removeKey_ifAbsent_); _leave(); }