Author: leo
Date: Sun Jan 15 11:55:09 2006
New Revision: 11200

Modified:
   trunk/runtime/parrot/library/dumper.pir
   trunk/src/global.c
   trunk/src/ops/var.ops
Log:
find_global returns a Null PMC on failure now

* iff global lookup exceptions are off, a Null PMC is returned instead of 
  Undef on lookup failure
* change dumper.pir


Modified: trunk/runtime/parrot/library/dumper.pir
==============================================================================
--- trunk/runtime/parrot/library/dumper.pir     (original)
+++ trunk/runtime/parrot/library/dumper.pir     Sun Jan 15 11:55:09 2006
@@ -154,10 +154,11 @@ TYPE_OK:
     errorsoff .PARROT_ERRORS_GLOBALS_FLAG
     find_global self, "Data::Dumper", "global"
     errorson .PARROT_ERRORS_GLOBALS_FLAG
+    if null self goto create_type
 
     typeof type, self
     if type == mytype goto END
-
+create_type:
     new self, mytype
     store_global "Data::Dumper", "global", self
 

Modified: trunk/src/global.c
==============================================================================
--- trunk/src/global.c  (original)
+++ trunk/src/global.c  Sun Jan 15 11:55:09 2006
@@ -38,7 +38,7 @@ Return NULL if the global isn't found or
 Parrot_get_global(Parrot_Interp interpreter, STRING *class, STRING 
*globalname)>
 
 If the global exists, return it. If not either throw an exception or return an
-C<Undef> depending on the interpreter's error settings.
+C<Null> PMC depending on the interpreter's error settings.
 
 =cut
 
@@ -162,7 +162,7 @@ Parrot_get_global(Parrot_Interp interpre
                 "Global '%Ss' not found",
                 name);
     }
-    return pmc_new(interpreter, enum_class_Undef);
+    return PMCNULL;
 }
 
 PMC *
@@ -176,7 +176,7 @@ Parrot_get_global_p(Parrot_Interp interp
                 "Global '%Ss' not found",
                 name);
     }
-    return pmc_new(interpreter, enum_class_Undef);
+    return PMCNULL;
 }
 
 /*
@@ -184,7 +184,7 @@ Parrot_get_global_p(Parrot_Interp interp
 =item C<PMC* Parrot_get_name(Interp* interpreter, STRING *name)>
 
 Find the name in lexicals, globals, and builtins. If the name
-isn't found throw and exception or return Undef, depending on
+isn't found throw and exception or return the Null PMC, depending on
 the interpreter's errors setting.
 
 =cut
@@ -232,7 +232,7 @@ Parrot_get_name(Interp* interpreter, STR
                 "Name '%Ss' not found", name);
     }
 
-    return pmc_new(interpreter, enum_class_Undef);
+    return PMCNULL;
 }
 
 /*

Modified: trunk/src/ops/var.ops
==============================================================================
--- trunk/src/ops/var.ops       (original)
+++ trunk/src/ops/var.ops       Sun Jan 15 11:55:09 2006
@@ -128,13 +128,13 @@ op store_global(in PMC, in STR, in PMC) 
 =item B<find_global>(out PMC, in STR)
 
 Find the global named $2 and store it in $1. If the global doesn't exist
-either throws an exception or sets $1 to undef, depending on current
+either throws an exception or sets $1 to the Null PMC, depending on current
 errors settings, s. B<errorson>.
 
 =item B<find_global>(out PMC, in STR, in STR)
 
 Find the global named $3 in namespace $2 and store it in $1. If the
-global doesn't exist either throws an exception or sets $1 to undef,
+global doesn't exist either throws an exception or sets $1 to the Null PMC,
 depending on current errors settings, s. B<errorson>.
 
 If $3 is NULL the namespace hash for namespace $2 is returned.
@@ -143,7 +143,7 @@ If $3 is NULL the namespace hash for nam
 
 Find the global named $3 in the namespace specified by $2
 and store it in $1. If the global doesn't exist either throws an
-exception or sets $1 to undef, depending on current errors settings,
+exception or sets $1 to the Null PMC, depending on current errors settings,
 s. B<errorson>.
 
 =cut

Reply via email to