# HG changeset patch # User Mike Pavone # Date 1280533974 14400 # Node ID f69987c58fa8cd0aba9abb6c375dd12f7d3b21ff # Parent 3c4325e6298f6fa3b6b6aaf88da79c6598f17c7b# Parent a163250b8885ecdf8f5f0337975518e3dbb611f5 Merge diff -r 3c4325e6298f -r f69987c58fa8 cbackend.rhope --- a/cbackend.rhope Fri Jul 30 01:48:59 2010 -0400 +++ b/cbackend.rhope Fri Jul 30 19:52:54 2010 -0400 @@ -1224,7 +1224,7 @@ ]Append[", "] ]Append[size] ]Append[", "] - ]Append[[[value]Args >>]Length] + ]Append[Fold[["+"]Set Input[0, 1], 0, [value]Args >>]] ]Append[")"] }{ out <- "UnhandledLiteralType" @@ -1282,16 +1282,12 @@ _Dispatch Switch Sub[text, num, name:out] { - out <- [[[[[[[[[text - ]Append["\tcase RES_"] + out <- [[[[[text + ]Append["\tResumeEntry("] ]Append[num] - ]Append["_"] + ]Append[","] ]Append[name] - ]Append[": goto r"] - ]Append[num] - ]Append["_"] - ]Append[name] - ]Append[";\\\n"] + ]Append[")\\\n"] } _Dispatch Switch[text,func,raw name:out] @@ -1299,7 +1295,7 @@ If[[[func]Convention >>] = ["rhope"]] { name <- Escape Rhope Name[raw name] - out <- [[text]Append[ [[[["\tcase FUNC_"]Append[name]]Append[": goto f_"]]Append[name]]Append[";\\\n"] ] + out <- [[text]Append[ [["\tDispatchEntry("]Append[name]]Append[")\\\n"] ] ]Append[Fold[["_Dispatch Switch Sub"]Set Input[2, name], "", Range[1, [func]Resume Index >>]]] }{ out <- text @@ -1309,7 +1305,7 @@ _Dispatch Switch Methods[text,id,raw name:out] { name <- Escape Rhope Name[raw name] - out <- [text]Append[ [[[["\tcase FUNC_"]Append[name]]Append[": goto f_"]]Append[name]]Append[";\\\n"] ] + out <- [text]Append[ [["\tDispatchEntry("]Append[name]]Append[")\\\n"] ] } _Dispatch Enum Sub[text, num, name:out] @@ -1346,11 +1342,11 @@ [Fold["_Dispatch Enum Methods", "", all methods]]Append["\tFUNC_Build,\n\tFUNC_BlueprintSP_Of,\n\tFUNC_ID,\n\tFUNC_BlueprintSP_FromSP_ID,\n"], [program]Functions >>]] ]Append["\tEND\n} funcids;\n\n"] - ]Append["#define DISPATCH switch(func) { \\\n"] + ]Append["#define DispatchEntries \\\n"] ]Append[Fold["_Dispatch Switch", - [Fold["_Dispatch Switch Methods", "", all methods]]Append["\tcase FUNC_Build: goto f_Build;\\\n\tcase FUNC_BlueprintSP_Of: goto f_BlueprintSP_Of;\\\n\tcase FUNC_ID: goto f_ID;\\\n\tcase FUNC_BlueprintSP_FromSP_ID: goto f_BlueprintSP_FromSP_ID;\\\n"], + [Fold["_Dispatch Switch Methods", "", all methods]]Append["\tDispatchEntry(Build)\\\n\tDispatchEntry(BlueprintSP_Of)\\\n\tDispatchEntry(ID)\\\n\tDispatchEntry(BlueprintSP_FromSP_ID)\\\n"], [program]Functions >>]] - ]Append["\tcase END: goto DO_END;\\\n}\n\n"] + ]Append["\tEndEntry\n\n"] } Not Native[func:out] @@ -1442,7 +1438,12 @@ { uint16_t resume,idx, vcparam_offset, last_vcparam; context * ct; - calldata * cdata, *temp_cdata, *my_cdata;\n\nFuncDef(Build)\nFuncDef(BlueprintSP_Of)\nFuncDef(ID)\nFuncDef(BlueprintSP_FromSP_ID)\n"] + calldata * cdata, *temp_cdata, *my_cdata; + DispatchVar + FuncDef(Build) + FuncDef(BlueprintSP_Of) + FuncDef(ID) + FuncDef(BlueprintSP_FromSP_ID)\n"] ]Append[Fold["Local Pointers", "", [program]Functions >>]] ]Append[" ct = new_context(); diff -r 3c4325e6298f -r f69987c58fa8 fib.rhope --- a/fib.rhope Fri Jul 30 01:48:59 2010 -0400 +++ b/fib.rhope Fri Jul 30 19:52:54 2010 -0400 @@ -23,8 +23,7 @@ Main[args] { //Here we get the first command line argument and convert it to a number - //Yes I realize this is incredibly ugly looking - n <-