On Sat, Sep 27, 2008 at 1:15 AM,  <[EMAIL PROTECTED]> wrote:
>
> Author: [EMAIL PROTECTED]
> Date: Fri Sep 26 16:14:43 2008
> New Revision: 389
>
> Modified:
>    branches/bleeding_edge/src/checks.h
>
> Log:
> Fix failing test caused by extra precision in register allocated fp values.
> Review URL: http://codereview.chromium.org/5019
>
> Modified: branches/bleeding_edge/src/checks.h
> ==============================================================================
> --- branches/bleeding_edge/src/checks.h (original)
> +++ branches/bleeding_edge/src/checks.h Fri Sep 26 16:14:43 2008
> @@ -164,11 +164,18 @@
>                                       double expected,
>                                       const char* value_source,
>                                       double value) {
> -  if (expected != value) {
> +  // Force values to 64 bit memory to truncate 80 bit precision on IA32.
> +  volatile double* exp = new double[1];
> +  *exp = expected;
> +  volatile double* val = new double[1];
> +  *val = value;

Can't we avoid dynamically allocating memory?  Does this not work?

if (*reinterpret_cast<volatile double*>(&expected) ==
  *reinterpret_cast<volatile double*>(&value))


> +  if (*exp != *val) {
>      V8_Fatal(file, line,
>               "CHECK_EQ(%s, %s) failed\n#   Expected: %f\n#   Found: %f",
> -             expected_source, value_source, expected, value);
> +             expected_source, value_source, *exp, *val);
>    }
> +  delete[] exp;
> +  delete[] val;
>  }
>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to