[svn:parrot] r40181 - in trunk: src/jit/i386 t/pmc tools/build

chromatic at svn.parrot.org chromatic at svn.parrot.org
Tue Jul 21 02:57:12 UTC 2009


Author: chromatic
Date: Tue Jul 21 02:57:11 2009
New Revision: 40181
URL: https://trac.parrot.org/parrot/changeset/40181

Log:
[NCI] Excluded NCI calls with 'V' in their signatures from JITting and JIT
thunking at startup (TT #551, mostly a patch by donaldh).

Modified:
   trunk/src/jit/i386/jit_defs.c
   trunk/t/pmc/nci.t
   trunk/tools/build/nativecall.pl

Modified: trunk/src/jit/i386/jit_defs.c
==============================================================================
--- trunk/src/jit/i386/jit_defs.c	Tue Jul 21 02:43:45 2009	(r40180)
+++ trunk/src/jit/i386/jit_defs.c	Tue Jul 21 02:57:11 2009	(r40181)
@@ -2265,15 +2265,6 @@
                 break;
             case 'v':
                 break;
-            case 'V':
-                emitm_call_cfunc(pc, get_nci_P);
-                emitm_movl_r_m(interp, pc, emit_EAX, emit_EBP, 0, 1, temp_calls_offset + 4);
-                /* Call the get_pointer VTABLE on the Pointer PMC to get the returned pointer */
-                emitm_movl_m_r(interp, pc, emit_EAX, emit_EAX, 0, 1, offsetof(PMC, vtable));
-                emitm_movl_m_r(interp, pc, emit_EAX, emit_EAX, 0, 1, offsetof(VTABLE, get_pointer));
-                emitm_callr(pc, emit_EAX);
-                emitm_movl_r_m(interp, pc, emit_EAX, emit_EBP, 0, 1, args_offset);
-                break;
             case 'b':   /* buffer (void*) pass PObj_bufstart(SReg) */
                 emitm_call_cfunc(pc, get_nci_S);
                 emitm_movl_m_r(interp, pc, emit_EAX, emit_EAX, 0, 1,
@@ -2296,6 +2287,7 @@
             case '2':
             case '3':
             case '4':
+            case 'V':
                 mem_free_executable(jit_info.native_ptr, JIT_ALLOC_SIZE);
                 return NULL;
                 break;

Modified: trunk/t/pmc/nci.t
==============================================================================
--- trunk/t/pmc/nci.t	Tue Jul 21 02:43:45 2009	(r40180)
+++ trunk/t/pmc/nci.t	Tue Jul 21 02:57:11 2009	(r40181)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2001-2008, Parrot Foundation.
+# Copyright (C) 2001-2009, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -2646,11 +2646,6 @@
 3
 OUTPUT
 
-{
-    local $TODO = 0;
-    if ($PConfig{jitcapable}){
-        $TODO = "TT #551 - jitted NCI sig with V is broken";
-    }
 pir_output_is( << 'CODE', << 'OUTPUT', "nci_vVi - void** out parameter" );
 .sub test :main
     .local string library_name
@@ -2673,7 +2668,6 @@
 CODE
 got 10
 OUTPUT
-}
 
 pir_output_is( << 'CODE', << 'OUTPUT', "nci_ttt - t_tt parameter" );
 .sub test :main
@@ -2711,11 +2705,6 @@
 1
 OUTPUT
 
-{
-    local $TODO = 0;
-    if ($PConfig{jitcapable}){
-        $TODO = "TT #551 - jitted NCI sig with V is broken";
-    }
 pir_output_is( << 'CODE', << 'OUTPUT', "nci_vV - char** out parameter" );
 .sub test :main
     .local string library_name
@@ -2763,7 +2752,6 @@
 It is a beautiful day!
 Go suck a lemon.
 OUTPUT
-}
 
 # Local Variables:
 #   mode: cperl

Modified: trunk/tools/build/nativecall.pl
==============================================================================
--- trunk/tools/build/nativecall.pl	Tue Jul 21 02:43:45 2009	(r40180)
+++ trunk/tools/build/nativecall.pl	Tue Jul 21 02:57:11 2009	(r40181)
@@ -141,7 +141,7 @@
 
     my $ret_sig = $sig_table{$ret};
 
-    if ($args =~ /[234]/) {
+    if ($args =~ /[234V]/) {
         push @nci_defs, create_function(
             $sig, $ret,
             $args, [@arg],


More information about the parrot-commits mailing list