Index: src/embed.c
===================================================================
--- src/embed.c	(revision 11166)
+++ src/embed.c	(working copy)
@@ -459,12 +459,11 @@
     }
 
     /* XXX @ARGS should propably be a ResizableStringArray */
-    userargv = pmc_new_noinit(interpreter, enum_class_SArray);
+    userargv = pmc_new_noinit(interpreter, enum_class_ResizableStringArray);
     /* immediately anchor pmc to root set */
     VTABLE_set_pmc_keyed_int(interpreter, interpreter->iglobals,
             (INTVAL)IGLOBALS_ARGV_LIST, userargv);
     VTABLE_init(interpreter, userargv);
-    VTABLE_set_integer_native(interpreter, userargv, argc);
 
     for (i = 0; i < argc; i++) {
         /* Run through argv, adding everything to @ARGS. */
Index: languages/m4/src/m4.pir
===================================================================
--- languages/m4/src/m4.pir	(revision 11166)
+++ languages/m4/src/m4.pir	(working copy)
@@ -120,23 +120,8 @@
   # --reload-state=m4.frozen, string
   push getopts, "reload-state=s"
 
-  # Make a copy of argv, because this can easier be handled in get_options
-  # TODO: eliminate need for copy
-  .local pmc argv_pmc_arr
-  argv_pmc_arr = new .ResizablePMCArray
-  .local int k, argc
-  k = 0
-  argc = argv
-  beginfor:
-    unless k < argc goto endfor
-    $P0 = shift argv
-    push argv_pmc_arr, $P0
-    inc k
-    goto beginfor
-  endfor:
-
   .local pmc opt
-  opt = getopts."get_options"(argv_pmc_arr)
+  opt = getopts."get_options"(argv)
 
   # Now dow what the options want
   .local int is_defined
@@ -284,7 +269,7 @@
 
   # check argc, we need at least one input file
   .local int argc
-  argc = argv_pmc_arr
+  argc = argv
   if argc >= 1 goto ARGC_IS_OK
     usage( program_name )
     end
@@ -323,9 +308,9 @@
   # Name of the input file, usually with extension '.m4'
   .local string filename
 REDO_FILENAME_LOOP:
-  argc = argv_pmc_arr
+  argc = argv
   unless argc > 0 goto LAST_FILENAME_LOOP
-    filename = shift argv_pmc_arr
+    filename = shift argv
     push_file( filename, state )
     goto REDO_FILENAME_LOOP
 LAST_FILENAME_LOOP:
Index: languages/tcl/tcl.pir
===================================================================
--- languages/tcl/tcl.pir	(revision 11166)
+++ languages/tcl/tcl.pir	(working copy)
@@ -128,7 +128,7 @@
   opt_spec[1] = "e=s"
 
   .local pmc opt, argv_clone
-  $P1 = shift argv # drop program name.
+  $S1 = shift argv # drop program name.
   argv_clone = clone argv
   opt = get_options(argv_clone, opt_spec)
 
