dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] CVS: pnet/engine cvm_var.c,1.13,1.14 mklabel.sh,1


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnet/engine cvm_var.c,1.13,1.14 mklabel.sh,1.7,1.8
Date: Fri, 20 Dec 2002 08:19:20 -0500

Update of /cvsroot/dotgnu-pnet/pnet/engine
In directory subversions:/tmp/cvs-serv11684/engine

Modified Files:
        cvm_var.c mklabel.sh 
Log Message:


Introduce a __asm__ hack to prevent "COP_LDC_I4_0" from being
tail-combined with "COP_MK_LOCAL_1".  Such tail combination confuses
the x86 unroller on some platforms.


Index: cvm_var.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/cvm_var.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -r1.13 -r1.14
*** cvm_var.c   18 Jun 2002 02:07:21 -0000      1.13
--- cvm_var.c   20 Dec 2002 13:18:57 -0000      1.14
***************
*** 716,719 ****
--- 716,720 ----
        MODIFY_PC_AND_STACK(CVM_LEN_NONE, 1);
  }
+ VMNULLASM();  /* Prevent tail-end combination with ldc_i4_0 */
  VMBREAK(COP_MK_LOCAL_1);
  

Index: mklabel.sh
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/engine/mklabel.sh,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** mklabel.sh  24 May 2002 01:23:15 -0000      1.7
--- mklabel.sh  20 Dec 2002 13:18:57 -0000      1.8
***************
*** 229,232 ****
--- 229,241 ----
  echo ''
  
+ # Define a null assembly statement.  This is a trick to stop gcc doing
+ # tail-end combination on the cases within the switch statements.
+ echo '#if defined(__GNUC__)'
+ echo '#define VMNULLASM()         __asm__("")'
+ echo '#else'
+ echo '#define VMNULLASM()'
+ echo '#endif'
+ echo ''
+ 
  # Output the helper macros (non-PIC).
  echo '#ifdef IL_CVM_DIRECT'
***************
*** 259,265 ****
  echo ''
  
! # Output the non-goto case of the helper macros.  The __asm__("")
! # block is a trick to stop gcc doing tail-end combination on the
! # cases within the switch statements.
  echo '#else /* IL_CVM_SWITCH */'
  echo ''
--- 268,272 ----
  echo ''
  
! # Output the non-goto case of the helper macros.
  echo '#else /* IL_CVM_SWITCH */'
  echo ''
***************
*** 269,279 ****
  echo '#define VMDEFAULT           default'
  echo '#define VMPREFIXDEFAULT     default'
! echo '#if defined(__GNUC__)'
! echo '#define VMBREAK(val)        __asm__(""); break'
! echo '#define VMBREAKNOEND        __asm__(""); break'
! echo '#else'
! echo '#define VMBREAK(val)        break'
! echo '#define VMBREAKNOEND        break'
! echo '#endif'
  echo '#define VMOUTERBREAK        break'
  echo ''
--- 276,281 ----
  echo '#define VMDEFAULT           default'
  echo '#define VMPREFIXDEFAULT     default'
! echo '#define VMBREAK(val)        VMNULLASM(); break'
! echo '#define VMBREAKNOEND        VMNULLASM(); break'
  echo '#define VMOUTERBREAK        break'
  echo ''




reply via email to

[Prev in Thread] Current Thread [Next in Thread]