Please note:
I have been unable to test these patches with "make test" due to the problems I mentioned in an earler post. I have managed to get the postgres lib working again and I am hoping this is the only thing I have affected with these patches although if someone would like to apply and try them I would appreciate it.
I am getting errors when trying to load the libpq library. I added a few
lines to the /parrot/build_tools/build_nativecall.pl script to see what was going on when I got the core dump. I have attached a patch to add these. There may be some problems with it. I was also thinking that it would be handy to have the facility to print out variables in the message, what do people think?
I noticed that there are several signatures missing from call_list.txt so I added these as well. Patch attached. There where quite a few which probably means I am barking up the wrong tree.
On side note: I was reading the docs on strings and noticed that we should always be using "STRING" but I have noticed a few references to "String" while rummaging around. From what I can gather they are one and the same and "String" is redundant. Is this the case?
On another side note I noticed a reference to "TWEAKS", purely by chance. For those not in the know
From the summarizer: TWEAKS (Takers Wanted -- Effort And Knowledge Sought). http://xrl.us/o2g
From what I can gather this is a list of tasks compiled by leo that need to be carried out and help is required. I think it would be a good idea to have a well kept todo list particularly for tasks that are fairly easy to complete. I am sure there are people on this list like myself who do not mind doing the smaller stuff (including documention ;-) in order to get to know the guts. Although some of the stuff leo is asking for is not that small.
On another side note I noticed the string.pod documentations asks at the bottom "Should the following functions be mentioned? string_append, string_from_cstring, string_from_int, string_from_num, string_index, string_replace, string_set, string_str_index, string_to_cstring, string_to_int, string_to_num, string_transcode."
Yes they should, it is things like this that would be good to put on the TWEAKS along with where or how to start[1]. The strings doc has been one of the handiest I have found to date.
Harry (on a side note) Jackson
1. If anyone wants to take it on and is unsure where to start. Use the folowing file.
/parrot/include/parrot/string_funcs.h
file to see what each of the functions do and try some of them and document what you do in strings.pod and submit your results. I will probably make some entries on it myself if no one else does.
--- build_nativecall.pl Tue Dec 30 15:54:20 2003 +++ build_nativecall.pl.new Tue Dec 30 15:53:09 2003 @@ -143,7 +143,6 @@ * Notes: * References: */ - #include "parrot/parrot.h" #if defined(HAS_JIT) && defined(I386) && defined(threaded_NCI_is_ok) @@ -207,8 +206,13 @@ to a function that can call it. */ void * build_call_func(struct Parrot_Interp *interpreter, PMC *pmc_nci, - String *signature) + STRING *signature) { + + STRING *ns; + STRING *message; + char *c; + #if defined(CAN_BUILD_CALL_FRAMES) /* This would be a good place to put the code that builds the frames. Undoubtedly painfully platform-dependent */ @@ -221,7 +225,20 @@ UNUSED(pmc_nci); if (0 == string_length(signature)) return F2DPTR(pcf_v_v); $icky_global_bit - PANIC("Unknown signature type"); + + + /* + These three lines have been added to aid debugging. I want to be able to + see which signature has an unknown type. I am sure someone can come up + with a neater way to do this. + */ + ns = string_make(interpreter, " is an unknown signature type", 30, NULL, 0, NULL); + message = string_concat(interpreter, signature, ns, 0); + + // I think there may be memory issues with this but if we get to here we are + // aborting. + c = string_to_cstring(interpreter, message); + PANIC(c); return NULL; #endif }
--- call_list.txt Tue Dec 30 15:54:20 2003 +++ call_list.txt.new Tue Dec 30 15:53:34 2003 @@ -181,6 +181,18 @@ # Oddball ones for postgres p ptiLTLLi +p t +p ttttttt +c p +t p +v pp +t tl4 +t t4 +p pt +p pi33ipi +t pii +p pi +i pitl # The following are used by library/pcre.imc p tiB3P