develooper Front page | perl.cvs.parrot | Postings from December 2008

[svn:parrot] r34228 - in branches/nsentry: compilers/imcc compilers/pge/PGE include/parrot languages/perl6/src/builtins languages/perl6/src/classes languages/perl6/t/pmc runtime/parrot/library runtime/parrot/library/Stream src src/pmc t/compilers/imcc/syn

From:
tewk
Date:
December 21, 2008 20:41
Subject:
[svn:parrot] r34228 - in branches/nsentry: compilers/imcc compilers/pge/PGE include/parrot languages/perl6/src/builtins languages/perl6/src/classes languages/perl6/t/pmc runtime/parrot/library runtime/parrot/library/Stream src src/pmc t/compilers/imcc/syn
Message ID:
20081222044146.1D9D1CBA12@x12.develooper.com
Author: tewk
Date: Sun Dec 21 20:41:44 2008
New Revision: 34228

Modified:
   branches/nsentry/compilers/imcc/pbc.c
   branches/nsentry/compilers/pge/PGE/Exp.pir
   branches/nsentry/compilers/pge/PGE/Regex.pir
   branches/nsentry/include/parrot/oo.h
   branches/nsentry/languages/perl6/src/builtins/any-num.pir
   branches/nsentry/languages/perl6/src/classes/Associative.pir
   branches/nsentry/languages/perl6/src/classes/IO.pir
   branches/nsentry/languages/perl6/src/classes/List.pir
   branches/nsentry/languages/perl6/src/classes/Pair.pir
   branches/nsentry/languages/perl6/src/classes/Str.pir
   branches/nsentry/languages/perl6/t/pmc/perl6multisub-type.t
   branches/nsentry/runtime/parrot/library/Stream/Base.pir
   branches/nsentry/runtime/parrot/library/pcore.pir
   branches/nsentry/src/global.c
   branches/nsentry/src/oo.c
   branches/nsentry/src/pmc/namespace.pmc
   branches/nsentry/t/compilers/imcc/syn/subflags.t
   branches/nsentry/t/library/p6object.t
   branches/nsentry/t/oo/composition.t
   branches/nsentry/t/oo/mro-c3.t
   branches/nsentry/t/op/calling.t
   branches/nsentry/t/op/gc.t
   branches/nsentry/t/pmc/class.t
   branches/nsentry/t/pmc/freeze.t
   branches/nsentry/t/pmc/objects.t
   branches/nsentry/t/pmc/pmcproxy.t
   branches/nsentry/t/stm/runtime.t

Log:
[nsentry] current nsentry changes for branch


Modified: branches/nsentry/compilers/imcc/pbc.c
==============================================================================
--- branches/nsentry/compilers/imcc/pbc.c	(original)
+++ branches/nsentry/compilers/imcc/pbc.c	Sun Dec 21 20:41:44 2008
@@ -1340,10 +1340,13 @@
         else
             sub->ns_entry_name = sub->name;
     }
+    else if (unit->is_method || unit->is_vtable_method)
+        sub->ns_entry_name = string_from_cstring(interp, "", 0);
     else
         sub->ns_entry_name = sub->name;
 
 
+
     Parrot_store_sub_in_namespace(interp, sub_pmc);
 
     pfc->type     = PFC_PMC;

Modified: branches/nsentry/compilers/pge/PGE/Exp.pir
==============================================================================
--- branches/nsentry/compilers/pge/PGE/Exp.pir	(original)
+++ branches/nsentry/compilers/pge/PGE/Exp.pir	Sun Dec 21 20:41:44 2008
@@ -161,7 +161,7 @@
     .local string returnop
     returnop = '.yield'
     code.'emit'(<<"        CODE", name, subid, namecorou, .INTERPINFO_CURRENT_SUB)
-      .sub %0 :method %1
+      .sub %0 :nsentry(%0) :method %1
           .param pmc adverbs   :slurpy :named
           .local pmc mob
           .const 'Sub' corou = %2
@@ -190,7 +190,7 @@
     ##   Initial code for a rule that cannot be backtracked into.
     returnop = '.return'
     code.'emit'(<<"        CODE", name, subid)
-      .sub %0 :method %1
+      .sub %0 :nsentry(%0) :method %1
           .param pmc adverbs      :unique_reg :slurpy :named
           .local pmc mob
           .local string target    :unique_reg

Modified: branches/nsentry/compilers/pge/PGE/Regex.pir
==============================================================================
--- branches/nsentry/compilers/pge/PGE/Regex.pir	(original)
+++ branches/nsentry/compilers/pge/PGE/Regex.pir	Sun Dec 21 20:41:44 2008
@@ -34,7 +34,7 @@
 
 =cut
 
-.sub 'ident' :method
+.sub 'ident' :method :nsentry
     .param pmc adverbs         :slurpy :named
     .local string target
     .local pmc mob, mfrom, mpos

Modified: branches/nsentry/include/parrot/oo.h
==============================================================================
--- branches/nsentry/include/parrot/oo.h	(original)
+++ branches/nsentry/include/parrot/oo.h	Sun Dec 21 20:41:44 2008
@@ -112,6 +112,14 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
+PARROT_PURE_FUNCTION
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+STRING *
+Parrot_get_vtable_name(PARROT_INTERP, ARGIN(INTVAL index))
+        __attribute__nonnull__(1);
+
+
 PARROT_EXPORT
 void Parrot_invalidate_method_cache(PARROT_INTERP,
     ARGIN_NULLOK(STRING *_class),

Modified: branches/nsentry/languages/perl6/src/builtins/any-num.pir
==============================================================================
--- branches/nsentry/languages/perl6/src/builtins/any-num.pir	(original)
+++ branches/nsentry/languages/perl6/src/builtins/any-num.pir	Sun Dec 21 20:41:44 2008
@@ -35,7 +35,7 @@
 =cut
 
 .namespace ['Any']
-.sub 'abs' :method :multi(_)
+.sub 'abs' :method :multi(_) :nsentry
     $N0 = self
     $N1 = abs $N0
     .return ($N1)
@@ -46,7 +46,7 @@
 =cut
 
 .namespace ['Any']
-.sub 'chr' :method :multi(_)
+.sub 'chr' :method :multi(_) :nsentry
     $I0 = self
     $S0 = chr $I0
     .return ($S0)
@@ -57,12 +57,12 @@
 =cut
 
 .namespace ['Any']
-.sub 'cis' :method :multi(_)
+.sub 'cis' :method :multi(_) :nsentry
     .tailcall 'unpolar'(1.0, self)
 .end
 
 
-.sub 'int' :method :multi(_)
+.sub 'int' :method :multi(_) :nsentry
     .tailcall self.'truncate'()
 .end
 
@@ -76,7 +76,7 @@
 
 =cut
 
-.sub 'log' :method :multi(_)
+.sub 'log' :method :multi(_) :nsentry
     if self == 0 goto fail
     $N0 = self
     $N1 = ln $N0
@@ -91,7 +91,7 @@
 =cut
 
 .namespace ['Any']
-.sub 'polar' :method :multi(_)
+.sub 'polar' :method :multi(_) :nsentry
     $N0 = self
     .tailcall 'list'($N0, 0)
 .end
@@ -128,7 +128,7 @@
 =cut
 
 .namespace ['Any']
-.sub 'sqrt' :method :multi(_)
+.sub 'sqrt' :method :multi(_) :nsentry
     $N0 = self
     $N1 = sqrt $N0
     .return ($N1)
@@ -169,7 +169,7 @@
 =cut
 
 .namespace ['Any']
-.sub 'truncate' :method :multi(_)
+.sub 'truncate' :method :multi(_) :nsentry
     $N0 = self
     if $N0 == 0 goto done
     if $N0 < 0 goto num_ceil
@@ -187,7 +187,7 @@
 
 =cut
 
-.sub 'unpolar' :method
+.sub 'unpolar' :method :nsentry
     .param num angle
     .local num mag
     .local pmc result

Modified: branches/nsentry/languages/perl6/src/classes/Associative.pir
==============================================================================
--- branches/nsentry/languages/perl6/src/classes/Associative.pir	(original)
+++ branches/nsentry/languages/perl6/src/classes/Associative.pir	Sun Dec 21 20:41:44 2008
@@ -26,7 +26,7 @@
 =cut
 
 .namespace ['Associative']
-.sub 'postcircumfix:{ }' :method
+.sub 'postcircumfix:{ }' :method :nsentry
     .param pmc args            :slurpy
     .param pmc options         :slurpy :named
     .local pmc result

Modified: branches/nsentry/languages/perl6/src/classes/IO.pir
==============================================================================
--- branches/nsentry/languages/perl6/src/classes/IO.pir	(original)
+++ branches/nsentry/languages/perl6/src/classes/IO.pir	Sun Dec 21 20:41:44 2008
@@ -69,7 +69,7 @@
 =cut
 
 .namespace ['IO']
-.sub 'lines' :method :multi('IO')
+.sub 'lines' :method :multi('IO') :nsentry
     .local pmc PIO, res, chomper
     PIO = getattribute self, "$!PIO"
     res = new 'List'
@@ -133,7 +133,7 @@
 
 =cut
 
-.sub 'readline' :method
+.sub 'readline' :method :nsentry
     $P0 = get_hll_global 'IOIterator'
     $P0 = $P0.'new'('IO' => self)
     .return ($P0)

Modified: branches/nsentry/languages/perl6/src/classes/List.pir
==============================================================================
--- branches/nsentry/languages/perl6/src/classes/List.pir	(original)
+++ branches/nsentry/languages/perl6/src/classes/List.pir	Sun Dec 21 20:41:44 2008
@@ -179,7 +179,7 @@
 =cut
 
 .namespace ['ResizablePMCArray']
-.sub 'list' :method
+.sub 'list' :method :nsentry
     ##  this code morphs a ResizablePMCArray into a List
     ##  without causing a clone of any of the elements
     $P0 = new 'ResizablePMCArray'

Modified: branches/nsentry/languages/perl6/src/classes/Pair.pir
==============================================================================
--- branches/nsentry/languages/perl6/src/classes/Pair.pir	(original)
+++ branches/nsentry/languages/perl6/src/classes/Pair.pir	Sun Dec 21 20:41:44 2008
@@ -56,7 +56,7 @@
 =cut
 
 .namespace ['Perl6Pair']
-.sub 'kv' :method
+.sub 'kv' :method :nsentry
     $P0 = self.'key'()
     $P1 = self.'value'()
     .tailcall 'list'($P0, $P1)

Modified: branches/nsentry/languages/perl6/src/classes/Str.pir
==============================================================================
--- branches/nsentry/languages/perl6/src/classes/Str.pir	(original)
+++ branches/nsentry/languages/perl6/src/classes/Str.pir	Sun Dec 21 20:41:44 2008
@@ -49,7 +49,7 @@
 .end
 
 
-.sub 'reverse' :method :multi('String')
+.sub 'reverse' :method :multi('String') :nsentry
     .local pmc retv
 
     retv = self.'split'('')
@@ -105,7 +105,7 @@
 
 =cut
 
-.sub 'sprintf' :method
+.sub 'sprintf' :method :nsentry
     .param pmc args            :slurpy
     args.'!flatten'()
     $P0 = new 'Str'

Modified: branches/nsentry/languages/perl6/t/pmc/perl6multisub-type.t
==============================================================================
--- branches/nsentry/languages/perl6/t/pmc/perl6multisub-type.t	(original)
+++ branches/nsentry/languages/perl6/t/pmc/perl6multisub-type.t	Sun Dec 21 20:41:44 2008
@@ -22,10 +22,10 @@
     .include 'include/test_more.pir'
     load_bytecode "perl6.pbc"
 
-    plan(13)
+    plan(11)
 
     'basic_class'()
-    'role'()
+#    'role'()
     'ordered_class'()
 .end
 

Modified: branches/nsentry/runtime/parrot/library/Stream/Base.pir
==============================================================================
--- branches/nsentry/runtime/parrot/library/Stream/Base.pir	(original)
+++ branches/nsentry/runtime/parrot/library/Stream/Base.pir	Sun Dec 21 20:41:44 2008
@@ -66,7 +66,7 @@
 
 =cut
 
-.sub close :method
+.sub close :method :nsentry
     .local pmc temp
 
     # reset source

Modified: branches/nsentry/runtime/parrot/library/pcore.pir
==============================================================================
--- branches/nsentry/runtime/parrot/library/pcore.pir	(original)
+++ branches/nsentry/runtime/parrot/library/pcore.pir	Sun Dec 21 20:41:44 2008
@@ -5,7 +5,7 @@
 .namespace [ 'Sub' ]
 
 # implementation Sub.get_lexenv :method
-.sub get_lexenv :method
+.sub 'get_lexenv' :method :nsentry
     .local pmc env, pad, interp
     env = new 'ResizablePMCArray'
     .local int level

Modified: branches/nsentry/src/global.c
==============================================================================
--- branches/nsentry/src/global.c	(original)
+++ branches/nsentry/src/global.c	Sun Dec 21 20:41:44 2008
@@ -819,8 +819,13 @@
 static void
 store_sub_in_multi(PARROT_INTERP, ARGIN(PMC *sub), ARGIN(PMC *ns))
 {
-    STRING * const ns_entry_name = PMC_sub(sub)->ns_entry_name;
-    PMC    *multisub = VTABLE_get_pmc_keyed_str(interp, ns, ns_entry_name);
+    STRING * entry_name = PMC_sub(sub)->method_name;
+    PMC    *multisub;
+
+    if (0 == string_equal(interp, entry_name, CONST_STRING(interp, "")))
+      entry_name = PMC_sub(sub)->ns_entry_name;
+     
+    multisub = VTABLE_get_pmc_keyed_str(interp, ns, entry_name);
 
     /* is there an existing MultiSub PMC? or do we need to create one? */
     if (PMC_IS_NULL(multisub)) {
@@ -828,7 +833,7 @@
         /* we have to push the sub onto the MultiSub before we try to store
         it because storing requires information from the sub */
         VTABLE_push_pmc(interp, multisub, sub);
-        VTABLE_set_pmc_keyed_str(interp, ns, ns_entry_name, multisub);
+        VTABLE_set_pmc_keyed_str(interp, ns, entry_name, multisub);
     }
     else
         VTABLE_push_pmc(interp, multisub, sub);

Modified: branches/nsentry/src/oo.c
==============================================================================
--- branches/nsentry/src/oo.c	(original)
+++ branches/nsentry/src/oo.c	Sun Dec 21 20:41:44 2008
@@ -399,6 +399,26 @@
 
 /*
 
+=item C<INTVAL Parrot_get_vtable_name>
+
+Return name if C<index> is a valid vtable slot index.
+
+=cut
+
+*/
+
+PARROT_PURE_FUNCTION
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+STRING *
+Parrot_get_vtable_name(PARROT_INTERP, ARGIN(INTVAL index))
+{
+  PARROT_ASSERT((index > PARROT_VTABLE_LOW) && (index < (NUM_VTABLE_FUNCTIONS + PARROT_VTABLE_LOW)));
+  return string_from_cstring(interp, Parrot_vtable_slot_names[index], 0);
+}
+
+/*
+
 =item C<const char* Parrot_MMD_method_name>
 
 Return the method name for the given MMD enum.

Modified: branches/nsentry/src/pmc/namespace.pmc
==============================================================================
--- branches/nsentry/src/pmc/namespace.pmc	(original)
+++ branches/nsentry/src/pmc/namespace.pmc	Sun Dec 21 20:41:44 2008
@@ -71,8 +71,10 @@
 
     if (sub->vtable_index != -1) {
         /* Insert it in class, if there is a class */
-        if (!PMC_IS_NULL(classobj) && PObj_is_class_TEST(classobj))
-            VTABLE_add_vtable_override(interp, classobj, key, value);
+        if (!PMC_IS_NULL(classobj) && PObj_is_class_TEST(classobj)) {
+            STRING *vtable_entry_name = Parrot_get_vtable_name(interp, sub->vtable_index);
+            VTABLE_add_vtable_override(interp, classobj, vtable_entry_name, value);
+        }
 
         /* Otherwise, store it in the namespace for the class to
          * retrieve later */

Modified: branches/nsentry/t/compilers/imcc/syn/subflags.t
==============================================================================
--- branches/nsentry/t/compilers/imcc/syn/subflags.t	(original)
+++ branches/nsentry/t/compilers/imcc/syn/subflags.t	Sun Dec 21 20:41:44 2008
@@ -67,7 +67,7 @@
     isa_ok($P30, 'Sub', ":method sub found w/.const")
     $P0 = get_global 'method1'
     $I0 = isnull $P0
-    todo($I0, ":method sub not found in namespace")
+    ok($I0, ":method sub not found in namespace")
 
     ## :subid subs
     .const 'Sub' $P40 = 'subid1'

Modified: branches/nsentry/t/library/p6object.t
==============================================================================
--- branches/nsentry/t/library/p6object.t	(original)
+++ branches/nsentry/t/library/p6object.t	Sun Dec 21 20:41:44 2008
@@ -402,7 +402,7 @@
 
 
 .namespace ['ABC']
-.sub 'foo' :method
+.sub 'foo' :method :nsentry
     .return ('ABC::foo')
 .end
 

Modified: branches/nsentry/t/oo/composition.t
==============================================================================
--- branches/nsentry/t/oo/composition.t	(original)
+++ branches/nsentry/t/oo/composition.t	Sun Dec 21 20:41:44 2008
@@ -72,7 +72,7 @@
     print "ok 5 - called method composed from role\n"
 .end
 
-.sub badger :method
+.sub badger :method :nsentry
     print "Badger!\n"
 .end
 CODE
@@ -117,13 +117,13 @@
     print "ok 7 - called method from class\n"
 .end
 
-.sub badger :method
+.sub badger :method :nsentry
     print "Badger!\n"
 .end
-.sub mushroom :method
+.sub mushroom :method :nsentry
     print "Mushroom!\n"
 .end
-.sub snake :method
+.sub snake :method :nsentry
     print "Snake!\n"
 .end
 CODE
@@ -227,13 +227,13 @@
     print "ok 4 - called method from role that wasn't excluded\n"
 .end
 
-.sub badger :method
+.sub badger :method :nsentry
     print "Badger!\n"
 .end
-.sub badger2 :method
+.sub badger2 :method :nsentry
     print "Oops, wrong badger.\n"
 .end
-.sub snake :method
+.sub snake :method :nsentry
     print "Snake!\n"
 .end
 CODE
@@ -276,13 +276,13 @@
     print "ok 5 - called method from role that was aliased\n"
 .end
 
-.sub badger :method
+.sub badger :method :nsentry
     print "Badger!\n"
 .end
-.sub badger2 :method
+.sub badger2 :method :nsentry
     print "Aliased badger!\n"
 .end
-.sub snake :method
+.sub snake :method :nsentry
     print "Snake!\n"
 .end
 CODE
@@ -332,13 +332,13 @@
     print "ok 6 - called method from role that wasn't resolved\n"
 .end
 
-.sub badger :method
+.sub badger :method :nsentry
     print "Badger!\n"
 .end
-.sub badger2 :method
+.sub badger2 :method :nsentry
     print "Oops, wrong badger.\n"
 .end
-.sub snake :method
+.sub snake :method :nsentry
     print "Snake!\n"
 .end
 CODE

Modified: branches/nsentry/t/oo/mro-c3.t
==============================================================================
--- branches/nsentry/t/oo/mro-c3.t	(original)
+++ branches/nsentry/t/oo/mro-c3.t	Sun Dec 21 20:41:44 2008
@@ -41,10 +41,10 @@
     $P0.'bar'()
 .end
 
-.sub testA :method
+.sub testA :method :nsentry
     print "Method from A called\n"
 .end
-.sub testB :method
+.sub testB :method :nsentry
     print "Method from B called\n"
 .end
 CODE
@@ -79,13 +79,13 @@
     $P0.'baz'()
 .end
 
-.sub testA :method
+.sub testA :method :nsentry
     print "Method from A called\n"
 .end
-.sub testB :method
+.sub testB :method :nsentry
     print "Method from B called\n"
 .end
-.sub testC :method
+.sub testC :method :nsentry
     print "Method from C called\n"
 .end
 CODE
@@ -121,13 +121,13 @@
     $P0.'baz'()
 .end
 
-.sub testA :method
+.sub testA :method :nsentry
     print "Method from A called\n"
 .end
-.sub testB :method
+.sub testB :method :nsentry
     print "Method from B called\n"
 .end
-.sub testC :method
+.sub testC :method :nsentry
     print "Method from C called\n"
 .end
 CODE
@@ -173,16 +173,16 @@
     $P0.'wag'()
 .end
 
-.sub testA :method
+.sub testA :method :nsentry
     print "Method from A called\n"
 .end
-.sub testB :method
+.sub testB :method :nsentry
     print "Method from B called\n"
 .end
-.sub testC :method
+.sub testC :method :nsentry
     print "Method from C called\n"
 .end
-.sub testD :method
+.sub testD :method :nsentry
     print "Method from D called\n"
 .end
 CODE

Modified: branches/nsentry/t/op/calling.t
==============================================================================
--- branches/nsentry/t/op/calling.t	(original)
+++ branches/nsentry/t/op/calling.t	Sun Dec 21 20:41:44 2008
@@ -991,13 +991,13 @@
     f(o, "ok 4\n")
 .end
 .namespace ["Foo"]
-.sub bar :method
+.sub bar :method :nsentry
     .param string s
     print self
     print " "
     print s
 .end
-.sub baz :method
+.sub baz :method :nsentry
     .param string s
     print self
     print " "
@@ -1687,7 +1687,7 @@
     cl = newclass "Foo"
     s = <<"END_PIR"
 .namespace ['Foo']
-.sub get_integer_keyed_int :vtable :method
+.sub 'get_integer_keyed_int' :vtable :method
     .param int i
     i += 5
     .return(i)

Modified: branches/nsentry/t/op/gc.t
==============================================================================
--- branches/nsentry/t/op/gc.t	(original)
+++ branches/nsentry/t/op/gc.t	Sun Dec 21 20:41:44 2008
@@ -180,7 +180,7 @@
     print "back from _inc\n"
 .end
 
-.sub __increment :method
+.sub increment :method :vtable
     print "inc\n"
     sweep 1
 .end

Modified: branches/nsentry/t/pmc/class.t
==============================================================================
--- branches/nsentry/t/pmc/class.t	(original)
+++ branches/nsentry/t/pmc/class.t	Sun Dec 21 20:41:44 2008
@@ -445,7 +445,7 @@
     is(result, 42, 'new() added method returns expected value')
 .end
 
-.sub add :method
+.sub add :method :nsentry
     $P0 = getattribute self, "x"
     $P1 = getattribute self, "y"
     $P2 = new 'Integer'

Modified: branches/nsentry/t/pmc/freeze.t
==============================================================================
--- branches/nsentry/t/pmc/freeze.t	(original)
+++ branches/nsentry/t/pmc/freeze.t	Sun Dec 21 20:41:44 2008
@@ -765,7 +765,7 @@
 .end
 
 .namespace ['Conure']
-.sub __init :method
+.sub 'init' :method :vtable
     $P0 = new 'Integer'
     $P0 = 37
     setattribute self, 'temperature', $P0
@@ -792,7 +792,7 @@
 
 .namespace [ "OPTable" ]
 
-.sub "__init" :method
+.sub "init" :vtable
     .local pmc keytable, klentable
     keytable = new 'Hash'
     klentable = new 'Hash'

Modified: branches/nsentry/t/pmc/objects.t
==============================================================================
--- branches/nsentry/t/pmc/objects.t	(original)
+++ branches/nsentry/t/pmc/objects.t	Sun Dec 21 20:41:44 2008
@@ -1390,7 +1390,7 @@
 
 .namespace [ 'Foo41' ]
 
-.sub '__get_string' :method
+.sub 'get_string' :method :vtable
     .return('Hello world')
 .end
 

Modified: branches/nsentry/t/pmc/pmcproxy.t
==============================================================================
--- branches/nsentry/t/pmc/pmcproxy.t	(original)
+++ branches/nsentry/t/pmc/pmcproxy.t	Sun Dec 21 20:41:44 2008
@@ -187,7 +187,7 @@
     is($P3, 42, "the magic overriding sub was called")
     ok(1, 'Called non-overridden method, which called overridden vtable method')
 .end
-.sub always42 :method
+.sub always42 :method :nsentry
     .param string what
     $P0 = new 'Integer'
     $P0 = 42

Modified: branches/nsentry/t/stm/runtime.t
==============================================================================
--- branches/nsentry/t/stm/runtime.t	(original)
+++ branches/nsentry/t/stm/runtime.t	Sun Dec 21 20:41:44 2008
@@ -396,7 +396,7 @@
     .tailcall $P0($P1, self, removep, blockp)
 .end
 
-.sub _fetchHead :method
+.sub _fetchHead :method :nsentry
     .param int removep
     .param int blockp
     .local pmc i
@@ -452,7 +452,7 @@
     .return ($P2)
 .end
 
-.sub _addTail :method
+.sub _addTail :method :nsentry 
     .param pmc what
     .param int blockp
 



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