Merge fortuna to master #136

Merged
gorillainduction merged 30 commits from fortuna into master 2019-03-13 18:57:29 +09:00
4 changed files with 307 additions and 93 deletions
Showing only changes of commit 16644ded72 - Show all commits

View File

@ -107,6 +107,10 @@
-define('SWITCH_V4' , 16#6c). -define('SWITCH_V4' , 16#6c).
-define('SWITCH_V5' , 16#6d). -define('SWITCH_V5' , 16#6d).
-define('BITS_ALL_N' , 16#6e). -define('BITS_ALL_N' , 16#6e).
-define('BITS_NONEA' , 16#6f).
-define('BITS_ALLA' , 16#70).
-define('INCA' , 16#71).
-define('DECA' , 16#72).
-define('FUNCTION' , 16#fe). -define('FUNCTION' , 16#fe).
-define('EXTEND' , 16#ff). -define('EXTEND' , 16#ff).

View File

@ -26,85 +26,241 @@ opcode({comment,X}) -> ?COMMENT(X).
mnemonic(?NOP) -> 'NOP' ; mnemonic(?NOP) -> 'NOP' ;
mnemonic(?RETURN) -> 'RETURN' ; mnemonic(?RETURN) -> 'RETURN' ;
mnemonic(?RETURNR) -> 'RETURNR' ; mnemonic(?CALL) -> 'CALL' ;
mnemonic(?PUSH) -> 'PUSH' ; mnemonic(?CALL_R) -> 'CALL_R' ;
mnemonic(?CALL_T) -> 'CALL_T' ;
mnemonic(?CALL_TR) -> 'CALL_TR' ;
mnemonic(?JUMP) -> 'JUMP' ; mnemonic(?JUMP) -> 'JUMP' ;
mnemonic(?JUMPIF) -> 'JUMPIF' ; mnemonic(?JUMPIF) -> 'JUMPIF' ;
mnemonic(?INC) -> 'INC' ; mnemonic(?PUSH) -> 'PUSH' ;
mnemonic(?CALL) -> 'CALL' ; mnemonic(?DUP) -> 'DUP' ;
mnemonic(?CALL_T) -> 'CALL_T' ; mnemonic(?POP) -> 'POP' ;
mnemonic(?CALL_R) -> 'CALL_R' ; mnemonic(?STORE) -> 'STORE' ;
mnemonic(?CALL_TR) -> 'CALL_TR' ;
mnemonic(?ADD) -> 'ADD' ; mnemonic(?ADD) -> 'ADD' ;
mnemonic(?SUB) -> 'SUB' ;
mnemonic(?MUL) -> 'MUL' ; mnemonic(?MUL) -> 'MUL' ;
mnemonic(?SUB) -> 'SUB' ;
mnemonic(?DIV) -> 'DIV' ; mnemonic(?DIV) -> 'DIV' ;
mnemonic(?MOD) -> 'MOD' ; mnemonic(?MOD) -> 'MOD' ;
mnemonic(?POW) -> 'POW' ; mnemonic(?POW) -> 'POW' ;
mnemonic(?LT) -> 'LT' ;
mnemonic(?GT) -> 'GT' ;
mnemonic(?EQ) -> 'EQ' ;
mnemonic(?ELT) -> 'ELT' ;
mnemonic(?EGT) -> 'EGT' ;
mnemonic(?NEQ) -> 'NEQ' ;
mnemonic(?AND) -> 'AND' ; mnemonic(?AND) -> 'AND' ;
mnemonic(?OR) -> 'OR' ; mnemonic(?OR) -> 'OR' ;
mnemonic(?NOT) -> 'NOT' ; mnemonic(?NOT) -> 'NOT' ;
mnemonic(?LT) -> 'LT' ;
mnemonic(?GT) -> 'GT' ;
mnemonic(?EGT) -> 'EGT' ;
mnemonic(?ELT) -> 'ELT' ;
mnemonic(?EQ) -> 'EQ' ;
mnemonic(?NEQ) -> 'NEQ' ;
mnemonic(?STORE) -> 'STORE' ;
mnemonic(?TUPLE) -> 'TUPLE' ; mnemonic(?TUPLE) -> 'TUPLE' ;
mnemonic(?ELEMENT) -> 'ELEMENT' ; mnemonic(?ELEMENT) -> 'ELEMENT' ;
mnemonic(?MAP_EMPTY) -> 'MAP_EMPTY' ; mnemonic(?MAP_EMPTY) -> 'MAP_EMPTY' ;
mnemonic(?MAP_LOOKUP) -> 'MAP_LOOKUP' ;
mnemonic(?MAP_UPDATE) -> 'MAP_UPDATE' ; mnemonic(?MAP_UPDATE) -> 'MAP_UPDATE' ;
mnemonic(?MAP_DELETE) -> 'MAP_DELETE' ; mnemonic(?MAP_DELETE) -> 'MAP_DELETE' ;
mnemonic(?MAP_MEMBER) -> 'MAP_MEMBER' ; mnemonic(?MAP_MEMBER) -> 'MAP_MEMBER' ;
mnemonic(?MAP_LOOKUP) -> 'MAP_LOOKUP' ;
mnemonic(?MAP_LOOKUPD) -> 'MAP_LOOKUPD';
mnemonic(?MAP_FROM_LIST) -> 'MAP_FROM_LIST' ; mnemonic(?MAP_FROM_LIST) -> 'MAP_FROM_LIST' ;
mnemonic(?NIL) -> 'NIL' ;
mnemonic(?IS_NIL) -> 'IS_NIL' ;
mnemonic(?CONS) -> 'CONS' ;
mnemonic(?HD) -> 'HD' ;
mnemonic(?TL) -> 'TL' ;
mnemonic(?LENGTH) -> 'LENGTH' ;
mnemonic(?STR_EQ) -> 'STR_EQ' ;
mnemonic(?STR_JOIN) -> 'STR_JOIN' ;
mnemonic(?ADDR_TO_STR) -> 'ADDR_TO_STR' ;
mnemonic(?STR_REVERSE) -> 'STR_REVERSE' ;
mnemonic(?INT_TO_ADDR) -> 'INT_TO_ADDR' ;
mnemonic(?VARIANT) -> 'VARIANT' ;
mnemonic(?VARIANT_TEST) -> 'VARIANT_TEST' ;
mnemonic(?VARIANT_ELEMENT) -> 'VARIANT_ELEMENT' ;
mnemonic(?BITS_NONE) -> 'BITS_NONE' ;
mnemonic(?BITS_NONEA) -> 'BITS_NONEA' ;
mnemonic(?BITS_ALL) -> 'BITS_ALL' ;
mnemonic(?BITS_ALLA) -> 'BITS_ALLA' ;
mnemonic(?BITS_SET) -> 'BITS_SET' ;
mnemonic(?BITS_CLEAR) -> 'BITS_CLEAR' ;
mnemonic(?BITS_TEST) -> 'BITS_TEST' ;
mnemonic(?BITS_SUM) -> 'BITS_SUM' ;
mnemonic(?BITS_OR) -> 'BITS_OR' ;
mnemonic(?BITS_AND) -> 'BITS_AND' ;
mnemonic(?BITS_DIFF) -> 'BITS_DIFF' ;
mnemonic(?ADDRESS) -> 'ADDRESS' ;
mnemonic(?BALANCE) -> 'BALANCE' ;
mnemonic(?ORIGIN) -> 'ORIGIN' ;
mnemonic(?CALLER) -> 'CALLER' ;
mnemonic(?GASPRICE) -> 'GASPRICE' ;
mnemonic(?BLOCKHASH) -> 'BLOCKHASH' ;
mnemonic(?BENEFICIARY) -> 'BENEFICIARY' ;
mnemonic(?TIMESTAMP) -> 'TIMESTAMP' ;
mnemonic(?NUMBER) -> 'NUMBER' ;
mnemonic(?DIFFICULTY) -> 'DIFFICULTY' ;
mnemonic(?GASLIMIT) -> 'GASLIMIT' ;
mnemonic(?GAS) -> 'GAS' ;
mnemonic(?LOG0) -> 'LOG0' ;
mnemonic(?LOG1) -> 'LOG1' ;
mnemonic(?LOG2) -> 'LOG2' ;
mnemonic(?LOG3) -> 'LOG3' ;
mnemonic(?LOG4) -> 'LOG4' ;
mnemonic(?ABORT) -> 'ABORT' ;
mnemonic(?EXIT) -> 'EXIT' ;
mnemonic(?DEACTIVATE) -> 'DEACTIVATE' ;
mnemonic(?INC) -> 'INC' ;
mnemonic(?DEC) -> 'DEC' ;
mnemonic(?INCA) -> 'INCA' ;
mnemonic(?DECA) -> 'DECA' ;
mnemonic(?INT_TO_STR) -> 'INT_TO_STR' ;
mnemonic(?SPEND) -> 'SPEND' ;
mnemonic(?ORACLE_REGISTER) -> 'ORACLE_REGISTER' ;
mnemonic(?ORACLE_QUERY) -> 'ORACLE_QUERY' ;
mnemonic(?ORACLE_RESPOND) -> 'ORACLE_RESPOND' ;
mnemonic(?ORACLE_EXTEND) -> 'ORACLE_EXTEND' ;
mnemonic(?ORACLE_GET_ANSWER) -> 'ORACLE_GET_ANSWER' ;
mnemonic(?ORACLE_GET_QUESTION) -> 'ORACLE_GET_QUESTION' ;
mnemonic(?ORACLE_QUERY_FEE) -> 'ORACLE_QUERY_FEE' ;
mnemonic(?AENS_RESOLVE) -> 'AENS_RESOLVE' ;
mnemonic(?AENS_PRECLAIM) -> 'AENS_PRECLAIM' ;
mnemonic(?AENS_CLAIM) -> 'AENS_CLAIM' ;
mnemonic(?AENS_UPDATE) -> 'AENS_UPDATE' ;
mnemonic(?AENS_TRANSFER) -> 'AENS_TRANSFER' ;
mnemonic(?AENS_REVOKE) -> 'AENS_REVOKE' ;
mnemonic(?ECVERIFY) -> 'ECVERIFY' ;
mnemonic(?SHA3) -> 'SHA3' ;
mnemonic(?SHA256) -> 'SHA256' ;
mnemonic(?BLAKE2B) -> 'BLAKE2B' ;
mnemonic(?RETURNR) -> 'RETURNR' ;
mnemonic(?MAP_LOOKUPD) -> 'MAP_LOOKUPD' ;
mnemonic(?SWITCH_V2) -> 'SWITCH_V2' ;
mnemonic(?SWITCH_V3) -> 'SWITCH_V3' ;
mnemonic(?SWITCH_V4) -> 'SWITCH_V4' ;
mnemonic(?SWITCH_V5) -> 'SWITCH_V5' ;
mnemonic(?BITS_ALL_N) -> 'BITS_ALL_N' ;
mnemonic(?FUNCTION) -> 'FUNCTION' ;
mnemonic(?EXTEND) -> 'EXTEND'.
mnemonic(OP) -> {OP, nothandled}.
m_to_op('NOP') -> ?NOP ; m_to_op('NOP') -> ?NOP ;
m_to_op('COMMENT') -> ?COMMENT("") ;
m_to_op('RETURN') -> ?RETURN ; m_to_op('RETURN') -> ?RETURN ;
m_to_op('RETURNR') -> ?RETURNR ; m_to_op('CALL') -> ?CALL ;
m_to_op('PUSH') -> ?PUSH ; m_to_op('CALL_R') -> ?CALL_R ;
m_to_op('CALL_T') -> ?CALL_T ;
m_to_op('CALL_TR') -> ?CALL_TR ;
m_to_op('JUMP') -> ?JUMP ; m_to_op('JUMP') -> ?JUMP ;
m_to_op('JUMPIF') -> ?JUMPIF ; m_to_op('JUMPIF') -> ?JUMPIF ;
m_to_op('INC') -> ?INC ; m_to_op('PUSH') -> ?PUSH ;
m_to_op('DUP') -> ?DUP ;
m_to_op('POP') -> ?POP ;
m_to_op('STORE') -> ?STORE ;
m_to_op('ADD') -> ?ADD ; m_to_op('ADD') -> ?ADD ;
m_to_op('SUB') -> ?SUB ;
m_to_op('MUL') -> ?MUL ; m_to_op('MUL') -> ?MUL ;
m_to_op('SUB') -> ?SUB ;
m_to_op('DIV') -> ?DIV ; m_to_op('DIV') -> ?DIV ;
m_to_op('MOD') -> ?MOD ; m_to_op('MOD') -> ?MOD ;
m_to_op('POW') -> ?POW ; m_to_op('POW') -> ?POW ;
m_to_op('LT') -> ?LT ;
m_to_op('GT') -> ?GT ;
m_to_op('EQ') -> ?EQ ;
m_to_op('ELT') -> ?ELT ;
m_to_op('EGT') -> ?EGT ;
m_to_op('NEQ') -> ?NEQ ;
m_to_op('AND') -> ?AND ; m_to_op('AND') -> ?AND ;
m_to_op('OR') -> ?OR ; m_to_op('OR') -> ?OR ;
m_to_op('NOT') -> ?NOT ; m_to_op('NOT') -> ?NOT ;
m_to_op('LT') -> ?LT ;
m_to_op('GT') -> ?GT ;
m_to_op('ELT') -> ?ELT ;
m_to_op('EGT') -> ?EGT ;
m_to_op('EQ') -> ?EQ ;
m_to_op('NEQ') -> ?NEQ ;
m_to_op('STORE') -> ?STORE ;
m_to_op('TUPLE') -> ?TUPLE ; m_to_op('TUPLE') -> ?TUPLE ;
m_to_op('ELEMENT') -> ?ELEMENT ; m_to_op('ELEMENT') -> ?ELEMENT ;
m_to_op('MAP_EMPTY') -> ?MAP_EMPTY ; m_to_op('MAP_EMPTY') -> ?MAP_EMPTY ;
m_to_op('MAP_LOOKUP') -> ?MAP_LOOKUP ;
m_to_op('MAP_UPDATE') -> ?MAP_UPDATE ; m_to_op('MAP_UPDATE') -> ?MAP_UPDATE ;
m_to_op('MAP_DELETE') -> ?MAP_DELETE ; m_to_op('MAP_DELETE') -> ?MAP_DELETE ;
m_to_op('MAP_MEMBER') -> ?MAP_MEMBER ; m_to_op('MAP_MEMBER') -> ?MAP_MEMBER ;
m_to_op('MAP_LOOKUP') -> ?MAP_LOOKUP ;
m_to_op('MAP_LOOKUPD') -> ?MAP_LOOKUPD ;
m_to_op('MAP_FROM_LIST') -> ?MAP_FROM_LIST ; m_to_op('MAP_FROM_LIST') -> ?MAP_FROM_LIST ;
m_to_op('CALL') -> ?CALL ; m_to_op('NIL') -> ?NIL ;
m_to_op('CALL_T') -> ?CALL_T ; m_to_op('IS_NIL') -> ?IS_NIL ;
m_to_op('CALL_R') -> ?CALL_R ; m_to_op('CONS') -> ?CONS ;
m_to_op('CALL_TR') -> ?CALL_TR . m_to_op('HD') -> ?HD ;
m_to_op('TL') -> ?TL ;
m_to_op('LENGTH') -> ?LENGTH ;
m_to_op('STR_EQ') -> ?STR_EQ ;
m_to_op('STR_JOIN') -> ?STR_JOIN ;
m_to_op('ADDR_TO_STR') -> ?ADDR_TO_STR ;
m_to_op('STR_REVERSE') -> ?STR_REVERSE ;
m_to_op('INT_TO_ADDR') -> ?INT_TO_ADDR ;
m_to_op('VARIANT') -> ?VARIANT ;
m_to_op('VARIANT_TEST') -> ?VARIANT_TEST ;
m_to_op('VARIANT_ELEMENT') -> ?VARIANT_ELEMENT ;
m_to_op('BITS_NONEA') -> ?BITS_NONEA ;
m_to_op('BITS_ALL') -> ?BITS_ALL ;
m_to_op('BITS_ALLA') -> ?BITS_ALLA ;
m_to_op('BITS_SET') -> ?BITS_SET ;
m_to_op('BITS_CLEAR') -> ?BITS_CLEAR ;
m_to_op('BITS_TEST') -> ?BITS_TEST ;
m_to_op('BITS_SUM') -> ?BITS_SUM ;
m_to_op('BITS_OR') -> ?BITS_OR ;
m_to_op('BITS_AND') -> ?BITS_AND ;
m_to_op('BITS_DIFF') -> ?BITS_DIFF ;
m_to_op('ADDRESS') -> ?ADDRESS ;
m_to_op('BALANCE') -> ?BALANCE ;
m_to_op('ORIGIN') -> ?ORIGIN ;
m_to_op('CALLER') -> ?CALLER ;
m_to_op('GASPRICE') -> ?GASPRICE ;
m_to_op('BLOCKHASH') -> ?BLOCKHASH ;
m_to_op('BENEFICIARY') -> ?BENEFICIARY ;
m_to_op('TIMESTAMP') -> ?TIMESTAMP ;
m_to_op('NUMBER') -> ?NUMBER ;
m_to_op('DIFFICULTY') -> ?DIFFICULTY ;
m_to_op('GASLIMIT') -> ?GASLIMIT ;
m_to_op('GAS') -> ?GAS ;
m_to_op('LOG0') -> ?LOG0 ;
m_to_op('LOG1') -> ?LOG1 ;
m_to_op('LOG2') -> ?LOG2 ;
m_to_op('LOG3') -> ?LOG3 ;
m_to_op('LOG4') -> ?LOG4 ;
m_to_op('ABORT') -> ?ABORT ;
m_to_op('EXIT') -> ?EXIT ;
m_to_op('DEACTIVATE') -> ?DEACTIVATE ;
m_to_op('INC') -> ?INC ;
m_to_op('DEC') -> ?DEC ;
m_to_op('INCA') -> ?INCA ;
m_to_op('DECA') -> ?DECA ;
m_to_op('INT_TO_STR') -> ?INT_TO_STR ;
m_to_op('SPEND') -> ?SPEND ;
m_to_op('ORACLE_REGISTER') -> ?ORACLE_REGISTER ;
m_to_op('ORACLE_QUERY') -> ?ORACLE_QUERY ;
m_to_op('ORACLE_RESPOND') -> ?ORACLE_RESPOND ;
m_to_op('ORACLE_EXTEND') -> ?ORACLE_EXTEND ;
m_to_op('ORACLE_GET_ANSWER') -> ?ORACLE_GET_ANSWER ;
m_to_op('ORACLE_GET_QUESTION') -> ?ORACLE_GET_QUESTION ;
m_to_op('ORACLE_QUERY_FEE') -> ?ORACLE_QUERY_FEE ;
m_to_op('AENS_RESOLVE') -> ?AENS_RESOLVE ;
m_to_op('AENS_PRECLAIM') -> ?AENS_PRECLAIM ;
m_to_op('AENS_CLAIM') -> ?AENS_CLAIM ;
m_to_op('AENS_UPDATE') -> ?AENS_UPDATE ;
m_to_op('AENS_TRANSFER') -> ?AENS_TRANSFER ;
m_to_op('AENS_REVOKE') -> ?AENS_REVOKE ;
m_to_op('ECVERIFY') -> ?ECVERIFY ;
m_to_op('SHA3') -> ?SHA3 ;
m_to_op('SHA256') -> ?SHA256 ;
m_to_op('BLAKE2B') -> ?BLAKE2B ;
m_to_op('RETURNR') -> ?RETURNR ;
m_to_op('MAP_LOOKUPD') -> ?MAP_LOOKUPD ;
m_to_op('SWITCH_V2') -> ?SWITCH_V2 ;
m_to_op('SWITCH_V3') -> ?SWITCH_V3 ;
m_to_op('SWITCH_V4') -> ?SWITCH_V4 ;
m_to_op('SWITCH_V5') -> ?SWITCH_V5 ;
m_to_op('BITS_ALL_N') -> ?BITS_ALL_N ;
m_to_op('FUNCTION') -> ?FUNCTION ;
m_to_op('EXTEND') -> ?EXTEND.
args(?NOP) -> 0; args(?NOP) -> 0;
args(?RETURN) -> 0; args(?RETURN) -> 0;
args(?INC) -> 0; args(?INCA) -> 0;
args(?DECA) -> 0;
args(?BITS_NONEA) -> 0;
args(?BITS_ALLA) -> 0;
args(?INC) -> 1;
args(?DEC) -> 1;
args(?RETURNR) -> 1; args(?RETURNR) -> 1;
args(?PUSH) -> 1; args(?PUSH) -> 1;
args(?JUMP) -> 1; args(?JUMP) -> 1;
@ -112,14 +268,43 @@ args(?CALL) -> 1;
args(?CALL_T) -> 1; args(?CALL_T) -> 1;
args(?TUPLE) -> 1; args(?TUPLE) -> 1;
args(?MAP_EMPTY) -> 1; args(?MAP_EMPTY) -> 1;
args(?DUP) -> 1;
args(?POP) -> 1;
args(?NIL) -> 1;
args(?BITS_NONE) -> 1;
args(?BITS_ALL) -> 1;
args(?ADDRESS) -> 1;
args(?BALANCE) -> 1;
args(?ORIGIN) -> 1;
args(?CALLER) -> 1;
args(?GASPRICE) -> 1;
args(?BLOCKHASH) -> 1;
args(?BENEFICIARY) -> 1;
args(?TIMESTAMP) -> 1;
args(?NUMBER) -> 1;
args(?DIFFICULTY)-> 1;
args(?GASLIMIT) -> 1;
args(?GAS) -> 1;
args(?ABORT) -> 1;
args(?EXIT) -> 1;
args(?JUMPIF) -> 2; args(?JUMPIF) -> 2;
args(?CALL_R) -> 2; args(?CALL_R) -> 2;
args(?CALL_TR) -> 2; args(?CALL_TR) -> 2;
args(?HD) -> 2;
args(?TL) -> 2;
args(?NOT) -> 2; args(?NOT) -> 2;
args(?STORE) -> 2; args(?STORE) -> 2;
args(?LENGTH) -> 2;
args(?IS_NIL) -> 2;
args(?BITS_SUM) -> 2;
args(?BITS_ALL_N) -> 2;
args(?ADDR_TO_STR) -> 2;
args(?STR_REVERSE) -> 2;
args(?INT_TO_ADDR) -> 2;
args(?MAP_FROM_LIST) -> 2; args(?MAP_FROM_LIST) -> 2;
args(?ADD) -> 3; args(?ADD) -> 3;
args(?SUB) -> 3; args(?SUB) -> 3;
args(?MUL) -> 3; args(?MUL) -> 3;
@ -134,14 +319,33 @@ args(?EGT) -> 3;
args(?ELT) -> 3; args(?ELT) -> 3;
args(?EQ) -> 3; args(?EQ) -> 3;
args(?NEQ) -> 3; args(?NEQ) -> 3;
args(?CONS) -> 3;
args(?STR_EQ) -> 3;
args(?STR_JOIN) -> 3;
args(?MAP_MEMBER) -> 3; args(?MAP_MEMBER) -> 3;
args(?MAP_LOOKUP) -> 3; args(?MAP_LOOKUP) -> 3;
args(?MAP_DELETE) -> 3; args(?MAP_DELETE) -> 3;
args(?BITS_OR) -> 3;
args(?BITS_AND) -> 3;
args(?BITS_SET) -> 3;
args(?BITS_DIFF) -> 3;
args(?BITS_TEST) -> 3;
args(?BITS_CLEAR) -> 3;
args(?VARIANT_TEST) -> 3;
args(?VARIANT_ELEMENT) -> 3;
args(?INT_TO_STR) -> 3;
args(?SWITCH_V2) -> 3;
args(?SWITCH_V3) -> 4;
args(?ELEMENT) -> 4; args(?ELEMENT) -> 4;
args(?VARIANT) -> 4;
args(?MAP_UPDATE) -> 4; args(?MAP_UPDATE) -> 4;
args(?MAP_LOOKUPD) -> 4; args(?MAP_LOOKUPD) -> 4;
args(?SWITCH_V4) -> 5;
args(?SWITCH_V5) -> 6;
args(_) -> 0. %% TODO do not allow this args(_) -> 0. %% TODO do not allow this
end_bb(?RETURN) -> true; end_bb(?RETURN) -> true;
@ -152,5 +356,11 @@ end_bb(?CALL) -> true;
end_bb(?CALL_T) -> true; end_bb(?CALL_T) -> true;
end_bb(?CALL_R) -> true; end_bb(?CALL_R) -> true;
end_bb(?CALL_TR) -> true; end_bb(?CALL_TR) -> true;
end_bb(_) -> false. end_bb(?SWITCH_V2) -> true;
end_bb(?SWITCH_V3) -> true;
end_bb(?SWITCH_V4) -> true;
end_bb(?SWITCH_V5) -> true;
end_bb(?ABORT) -> true;
end_bb(?EXIT) -> true;
end_bb(_) -> false.

View File

@ -4,6 +4,6 @@ FUNCTION skip(integer, integer) : integer
PUSH 0 PUSH 0
EQ a a arg0 EQ a a arg0
JUMPIF a 2 JUMPIF a 2
INC INCA
JUMP 2 JUMP 2
RETURN RETURN

View File

@ -13,25 +13,25 @@ FUNCTION jumps() -> integer
JUMP 1 JUMP 1
FUNCTION inc(integer) -> integer FUNCTION inc(integer) -> integer
INC INCA
INC INCA
RETURN RETURN
FUNCTION call(integer) -> integer FUNCTION call(integer) -> integer
INC INCA
CALL inc CALL inc
INC INCA
RETURN RETURN
FUNCTION tailcall(integer) -> integer FUNCTION tailcall(integer) -> integer
INC INCA
CALL_T inc CALL_T inc
FUNCTION remote_call(integer) : integer FUNCTION remote_call(integer) : integer
PUSH arg0 PUSH arg0
CALL_R remote.add_five CALL_R remote.add_five
INC INCA
RETURN RETURN
FUNCTION remote_tailcall(integer) : integer FUNCTION remote_tailcall(integer) : integer