develooper Front page | perl.perl6.internals | Postings from May 2007

Re: [perl #37303] [PATCH] Relaxing parrot dependency on parrot_config

Thread Previous | Thread Next
From:
chromatic
Date:
May 21, 2007 13:33
Subject:
Re: [perl #37303] [PATCH] Relaxing parrot dependency on parrot_config
Message ID:
200705211324.07414.chromatic@wgz.org
On Saturday 01 October 2005 02:26:21 Nick Glencross wrote:

> > I've been wanting to relax the dependency that parrot's core has on
> > parrot_config.

> I'm not sure that the patch made it into RT. Here it is again, with a
> small tweak to a Makefile dependency.

> src/config.c will need to be 'svn add'ed when applying the patch, and
> Configure rerun to recreate the top-level Makefile.

Thanks!  I'll check in this patch in a little bit.  Meanwhile I want to 
comment on a few small nits that I'll clean up before I apply it.

+
+    print << "EOF";
+const char* parrot_config_ptr   = 0;

Per coding standards, the pointer star needs to go on the variable name.

+        printf "0x%02x", ord($_);
+        ++$i;
+        print ', ', if ($i < scalar(@c));
+        print "\n    " unless $i % 8;

The scalar() here is unnecessary.  No big deal.

Index: src/config.c
===================================================================
--- src/config.c        (revision 0)
+++ src/config.c        (revision 0)
@@ -0,0 +1,63 @@
+/*
+  Copyright: 2005 The Perl Foundation.  All Rights Reserved.
+  $Id$

I'll change the date to 2007.

+static const char  *parrot_config_private_ptr  = NULL;
+static unsigned int parrot_config_private_size = 0;

Eventually it might be better to move these variables into the parent 
interpreter.  For now, I don't think anyone's embedding multiple Parrots into 
a single program.

+parrot_get_config_string(Interp* interpreter)
+{
+    if (!parrot_config_private_ptr)
+        return NULL;
+
+    return string_from_const_cstring(interpreter,
+                                     parrot_config_private_ptr,
+                                     parrot_config_private_size);
+}

I don't remember what the memory allocation characteristics are of 
string_from_const_cstring(), so these functions may need comments 
saying "It's your responsibility to free this string."

Index: src/pmc_freeze.c
===================================================================
--- src/pmc_freeze.c    (revision 9273)
+++ src/pmc_freeze.c    (working copy)
@@ -712,7 +712,7 @@
     else {
         if (string_length(interpreter, s) < PACKFILE_HEADER_BYTES) {
             real_exception(interpreter, NULL, E_IOError,
-                    "bad string too thaw");
+                    "bad string to thaw");
         }
         mem_sys_memcopy(pf->header, s->strstart, PACKFILE_HEADER_BYTES);
         PackFile_assign_transforms(pf);

This looks like part of a separate patch.

===================================================================
--- imcc/main.c (revision 9273)
+++ imcc/main.c (working copy)
@@ -459,6 +459,8 @@
     char *sourcefile;
     char *output;
 
+    parrot_set_config_string(parrot_config_ptr,parrot_config_size);
+
     Interp *interp = Parrot_new(NULL);

The new line should come after the variable declarations, per my understanding 
of C89.  This is difficult to remember.  Stupid C89.

Good patch!

-- c

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About