Re: enum type
- Posted by ghaberek (admin) 2 days ago
- 58 views
It appears 4.1 emits the type routine as a call to find_from() with the literal values. This is the described behavior.
SubProgram [/home/ghaberek/Projects/OpenEuphoria/euphoria/source/enumtest.ex-color:00150] [i1:160] STACK SPACE: 2 Required: 2 [/home/ghaberek/Projects/OpenEuphoria/euphoria/source/enumtest.ex:1] (1) 1: 176 160 161 146 163 # FIND_FROM: [i1:160], [LIT {4,7,1,3,10}:161], [LIT 1:146] => # [_temp_:163] 6: 028 150 162 163 # RETURNF: [_temp_:163] block[162] 10: 043 # BADRETURNF: End SubProgram [color:00150]
However, 4.2 emits the type routine as a series of equal() or equal() or equal(), etc.
SubProgram [/home/ghaberek/Projects/OpenEuphoria/euphoria/source/enumtest.ex-color:00151] [i1:161] STACK SPACE: 10 Required: 10 [/home/ghaberek/Projects/OpenEuphoria/euphoria/source/enumtest.ex:1] (1) 1: 153 161 152 163 # EQUAL: [i1:161], [RED:152] => [_temp_:163] 5: 153 161 154 164 # EQUAL: [i1:161], [GREEN:154] => [_temp_:164] 9: 009 164 163 165 # OR: [_temp_:164], [_temp_:163] => [_temp_:165] 13: 153 161 156 166 # EQUAL: [i1:161], [BLACK:156] => [_temp_:166] 17: 009 166 165 167 # OR: [_temp_:166], [_temp_:165] => [_temp_:167] 21: 153 161 157 168 # EQUAL: [i1:161], [BLUE:157] => [_temp_:168] 25: 009 168 167 169 # OR: [_temp_:168], [_temp_:167] => [_temp_:169] 29: 153 161 159 170 # EQUAL: [i1:161], [PINK:159] => [_temp_:170] 33: 009 170 169 171 # OR: [_temp_:170], [_temp_:169] => [_temp_:171] 37: 208 165 # DEREF_TEMP: [_temp_:165] 39: 208 167 # DEREF_TEMP: [_temp_:167] 41: 208 169 # DEREF_TEMP: [_temp_:169] 43: 209 163 # NOVALUE_TEMP: [_temp_:163] 45: 209 164 # NOVALUE_TEMP: [_temp_:164] 47: 209 166 # NOVALUE_TEMP: [_temp_:166] 49: 209 168 # NOVALUE_TEMP: [_temp_:168] 51: 209 170 # NOVALUE_TEMP: [_temp_:170] 53: 028 151 162 171 # RETURNF: [_temp_:171] block[162] 57: 043 # BADRETURNF: End SubProgram [color:00151]
The plot thickens. That's all I can do for now, but I'll revisit this again soon.
-Greg