develooper Front page | perl.cvs.parrot | Postings from January 2009

[svn:parrot] r35773 - in trunk/compilers/pirc: src t

From:
kjs
Date:
January 19, 2009 14:06
Subject:
[svn:parrot] r35773 - in trunk/compilers/pirc: src t
Message ID:
20090119220609.74895CB9AE@x12.develooper.com
Author: kjs
Date: Mon Jan 19 14:06:08 2009
New Revision: 35773

Modified:
   trunk/compilers/pirc/src/bcgen.c
   trunk/compilers/pirc/src/piremit.c
   trunk/compilers/pirc/t/basic.t
   trunk/compilers/pirc/t/stmts.t

Log:
[pirc] add some #if for comments. + add tests

Modified: trunk/compilers/pirc/src/bcgen.c
==============================================================================
--- trunk/compilers/pirc/src/bcgen.c	(original)
+++ trunk/compilers/pirc/src/bcgen.c	Mon Jan 19 14:06:08 2009
@@ -235,6 +235,9 @@
     PackFile_Constant *constant = bc->interp->code->const_table->constants[index];
     constant->type              = PFC_NUMBER;
     constant->u.number          = f;
+#if DEBUGBC
+    fprintf(stderr, "add_num_const (%f) at index: %d\n", f, index);
+#endif
     return index;
 }
 
@@ -579,7 +582,10 @@
 
     index = add_key_const(bc, pfc->u.key);
 
+#if DEBUGBC
     fprintf(stderr, "store key at index %d\n", index);
+#endif
+
     mem_sys_free(pfc);
 
     return index;

Modified: trunk/compilers/pirc/src/piremit.c
==============================================================================
--- trunk/compilers/pirc/src/piremit.c	(original)
+++ trunk/compilers/pirc/src/piremit.c	Mon Jan 19 14:06:08 2009
@@ -631,11 +631,12 @@
      * flags/types and the register/constant index.
      */
     keysize = pc - key;
-
+/*
     fprintf(stderr, "key: ");
     for (index = 0; index < keysize; ++index) {
         fprintf(stderr, "%d|", key[index]);
     }
+*/
     /* store the key, and emit the index at which it's stored into the code segment */
     index = store_key_bytecode(lexer->bc, key);
     emit_int_arg(lexer->bc, index);

Modified: trunk/compilers/pirc/t/basic.t
==============================================================================
--- trunk/compilers/pirc/t/basic.t	(original)
+++ trunk/compilers/pirc/t/basic.t	Mon Jan 19 14:06:08 2009
@@ -3,7 +3,7 @@
 # $Id$
 
 use lib "../../lib";
-use Parrot::Test tests => 5;
+use Parrot::Test tests => 6;
 
 pirc_2_pasm_is(<<'CODE', <<'OUTPUT', "a local, a reg and an if-stat");
 .sub main
@@ -84,7 +84,7 @@
 OUTPUT
 
 
-pirc_2_pasm_is(<<'CODE', <<'OUTPUT', "indexing a hash");
+pirc_2_pasm_is(<<'CODE', <<'OUTPUT', "indexing a hash with a string constant");
 .sub main
     .local pmc p
     p = new "Hash"
@@ -100,6 +100,24 @@
 3.3
 OUTPUT
 
+pirc_2_pasm_is(<<'CODE', <<'OUTPUT', "indexing a hash with a string register");
+.sub main
+    .local pmc p
+    p = new "Hash"
+    $S0 = "hello"
+    p[$S0] = 42
+    $I0 = p[$S0]
+    say $I0
+    # and combine indexing with string constant and register
+    $S1 = "bye"
+    p["bye"] = 3.3
+    $N1 = p["bye"]
+    say $N1
+.end
+CODE
+42
+3.3
+OUTPUT
 
 
 

Modified: trunk/compilers/pirc/t/stmts.t
==============================================================================
--- trunk/compilers/pirc/t/stmts.t	(original)
+++ trunk/compilers/pirc/t/stmts.t	Mon Jan 19 14:06:08 2009
@@ -3,16 +3,76 @@
 # $Id$
 
 use lib "../../lib";
-use Parrot::Test tests => 1;
+use Parrot::Test tests => 4;
 
-pirc_2_pasm_is(<<'CODE', <<'OUTPUT', "a single const declaration");
+pirc_2_pasm_is(<<'CODE', <<'OUTPUT', "a simple sub call - no params");
 .sub main
+    foo()
+.end
+
+.sub foo
     say "ok"
 .end
 CODE
 ok
 OUTPUT
 
+
+pirc_2_pasm_is(<<'CODE', <<'OUTPUT', "a simple sub call - single param");
+.sub main
+    foo(42)
+.end
+
+.sub foo
+    .param int i
+    say i
+.end
+CODE
+42
+OUTPUT
+
+
+
+pirc_2_pasm_is(<<'CODE', <<'OUTPUT', "a simple sub call - boxing");
+.sub main
+    foo(42, 3.14, "hi there")
+.end
+
+.sub foo
+    .param pmc i
+    .param pmc f
+    .param pmc t
+    .local string s
+    s = typeof i
+    say s
+    s = typeof f
+    say s
+    s = typeof t
+    say s
+.end
+CODE
+Integer
+Float
+String
+OUTPUT
+
+
+
+pirc_2_pasm_is(<<'CODE', <<'OUTPUT', "a simple sub call - slurpy param");
+.sub main
+    foo(1, 2, 3)
+.end
+
+.sub foo
+    .param pmc args :slurpy
+    $I0 = args
+    say 3
+.end
+CODE
+3
+OUTPUT
+
+
 # Local Variables:
 #   mode: cperl
 #   cperl-indent-level: 4



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