use x86_inc/x86_dec, bug fix in getNow()
authorDietmar Maurer <dietmar@mono-cvs.ximian.com>
Sat, 8 Dec 2001 05:06:06 +0000 (05:06 -0000)
committerDietmar Maurer <dietmar@mono-cvs.ximian.com>
Sat, 8 Dec 2001 05:06:06 +0000 (05:06 -0000)
svn path=/trunk/mono/; revision=1542

mono/jit/x86.brg
mono/metadata/icall.c

index 8b1dfb657bec9c21a979c28c82a69af84c1eae4b..a4e99a01036db289af113c160556a18840b33080 100644 (file)
@@ -694,7 +694,11 @@ reg: REM_UN (reg, reg) {
 reg: ADD (reg, CONST_I4) "MB_USE_OPT1(0)" {
        if (tree->reg1 != tree->left->reg1)
                x86_mov_reg_reg (s->code, tree->reg1, tree->left->reg1, 4);
-       x86_alu_reg_imm (s->code, X86_ADD, tree->reg1, tree->right->data.i);
+
+       if (tree->right->data.i == 1)
+               x86_inc_reg (s->code, tree->reg1);
+       else 
+               x86_alu_reg_imm (s->code, X86_ADD, tree->reg1, tree->right->data.i);
 }
 
 reg: ADD (reg, reg) {
@@ -706,7 +710,11 @@ reg: ADD (reg, reg) {
 reg: SUB (reg, CONST_I4) "MB_USE_OPT1(0)" {
        if (tree->reg1 != tree->left->reg1)
                x86_mov_reg_reg (s->code, tree->reg1, tree->left->reg1, 4);
-       x86_alu_reg_imm (s->code, X86_SUB, tree->reg1, tree->right->data.i);
+
+       if (tree->right->data.i == 1)
+               x86_dec_reg (s->code, tree->reg1);
+       else
+               x86_alu_reg_imm (s->code, X86_SUB, tree->reg1, tree->right->data.i);
 }
 
 reg: SUB (reg, reg) {
index 32603fe44c0876a578118f0d4b5d15d9f1e433b0..d7e77916db0c51cf644a062efdaaa0fc920a8816 100644 (file)
@@ -302,10 +302,12 @@ static gint64
 ves_icall_System_DateTime_GetNow ()
 {
        struct timeval tv;
+       gint64 res;
 
        // fixme: it seems that .Net has another base time than Unix??
        if (gettimeofday (&tv, NULL) == 0) {
-               return (gint64)tv.tv_sec * 1000000000 + tv.tv_usec*10;
+               res = ((gint64)tv.tv_sec * 1000000 + tv.tv_usec)*10;
+               return res;
        }