From 430ed40ae86dc6516acb28ff18de4f7d087020bb Mon Sep 17 00:00:00 2001 From: twisti Date: Sat, 28 Oct 2006 19:26:51 +0000 Subject: [PATCH] * src/vm/jit/dseg.c (dseg_find_float): Compare hex value. (dseg_find_double): Likewise. --- src/vm/jit/dseg.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/vm/jit/dseg.c b/src/vm/jit/dseg.c index 2c08e8b66..607897b54 100644 --- a/src/vm/jit/dseg.c +++ b/src/vm/jit/dseg.c @@ -31,7 +31,7 @@ Joseph Wenninger Edwin Steiner - $Id: dseg.c 5834 2006-10-26 11:23:00Z edwin $ + $Id: dseg.c 5852 2006-10-28 19:26:51Z twisti $ */ @@ -134,13 +134,18 @@ static s4 dseg_find_s8(codegendata *cd, s8 value) static s4 dseg_find_float(codegendata *cd, float value) { dsegentry *de; + imm_union val; + + /* we compare the hex value of the float as 0.0 == -0.0 */ + + val.f = value; /* search all data segment entries for a matching entry */ for (de = cd->dseg; de != NULL; de = de->next) { if (IS_FLT_TYPE(de->type)) if (de->flags & DSEG_FLAG_READONLY) - if (de->val.f == value) + if (de->val.i == val.i) return de->disp; } @@ -153,13 +158,18 @@ static s4 dseg_find_float(codegendata *cd, float value) static s4 dseg_find_double(codegendata *cd, double value) { dsegentry *de; + imm_union val; + + /* we compare the hex value of the double as 0.0 == -0.0 */ + + val.d = value; /* search all data segment entries for a matching entry */ for (de = cd->dseg; de != NULL; de = de->next) { if (IS_DBL_TYPE(de->type)) if (de->flags & DSEG_FLAG_READONLY) - if (de->val.d == value) + if (de->val.l == val.l) return de->disp; } -- 2.25.1