Re: enum type
- Posted by ghaberek (admin) in July
- 600 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

