Ignore:
Timestamp:
Sep 3, 2005, 6:18:13 PM (20 years ago)
Author:
darin
Message:

Reviewed, tweaked and landed by Darin.

  • some Windows compilation fixes, hoping to fix the problems reported in these bugs: 4627, 4629, 4630, 4631, 4632, 4633, 4634, 4635, 4636, 4637, 4639, 4640, 4641, 4644, 4645
  • kjs/collector.cpp: Include <windows.h> on WIN32. Put thread-related code inside KJS_MULTIPLE_THREADS #if directives. (KJS::Collector::markCurrentThreadConservatively): Use NT_TIB to find the stack base on Win32.
  • kjs/config.h: Define HAVE_SYS_TIMEB_H for Win32.
  • kjs/date_object.cpp: Add include of <limits.h>. Add definitions of strncasecmp, isfinite, and copysign for Win32. (KJS::KRFCDate_parseDate): Move "errno = 0" line down closer to the first call to strol -- I believe that on Win32 there's some other call before that setting errno.
  • kjs/date_object.h: Remove unneeded include of <sys/time.h>.
  • kjs/dtoa.cpp: Add an undef of strtod, needed on Win32.
  • kjs/fast_malloc.cpp: Put #if !WIN32 around some customization that's not appropriate on Win32. (KJS::region_list_append): Add a missing cast so this Win32-specific function compiles in C++. (KJS::sbrk): Change parameter type to match the declaration.
  • kjs/function.cpp: (isxdigit): Define a locale-independent isxdigit on Win32.
  • kjs/function.h: Remove unneeded friend class Function for FunctionImp.
  • kjs/identifier.cpp: Took out the APPLE_CHANGES from around the AVOID_STATIC_CONSTRUCTORS define. We ultimately intend to phase out APPLE_CHANGES entirely. Also fix the non-AVOID_STATIC_CONSTRUCTORS code path.
  • kjs/internal.cpp: Remove uneeded include of <strings.h>, which was confused with <string.h>! Add a Win32 implementation of copysign. Put the threads code inside KJS_MULTIPLE_THREADS.
  • kjs/internal.h: Define a KJS_MULTIPLE_THREADS macro on non-Win32 only. Later we can make this specific to Mac OS X if we like.
  • kjs/interpreter_map.cpp: Add missing include of <stdlib.h>.
  • kjs/list.cpp: (KJS::ListImp::markValues): Use std::min instead of MIN. (KJS::List::copy): Ditto. (KJS::List::copyTail): Ditto.
  • kjs/math_object.cpp: (signbit): Add a Win32 implementation of signbit.
  • kjs/nodes.cpp: (Node::finalCheck): Use unsigned instead of uint. Put the use of always_inline inside GNUC.
  • kjs/number_object.cpp: (NumberProtoFuncImp::callAsFunction): Use "10.0" instead of "10" inside all the calls to pow to avoid ambiguity caused by overloading of pow on Win32, seen when passing an int rather than a double or float.
  • kjs/operations.cpp: (KJS::isInf): Add Win32 implementation. (KJS::isPosInf): Add Win32 implementation. (KJS::isNegInf): Add Win32 implementation.
  • kjs/regexp.cpp: Use unsigned instead of uint.
  • kjs/regexp.h: Ditto.
  • kjs/regexp_object.cpp: Ditto.
  • kjs/regexp_object.h: Ditto.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/number_object.cpp

    r10207 r10456  
    174174      }
    175175     
    176       if (x >= pow(10,21))
     176      if (x >= pow(10.0, 21.0))
    177177          return String(s+UString::from(x));
    178178     
    179       double n = floor(x*pow(10,f));
    180       if (fabs(n/pow(10,f)-x) > fabs((n+1)/pow(10,f)-x))
     179      double n = floor(x*pow(10.0, f));
     180      if (fabs(n / pow(10.0, f) - x) > fabs((n + 1) / pow(10.0, f) - x))
    181181          n++;
    182182     
     
    212212      if (!fractionDigits->isUndefined()) {
    213213          double logx = floor(log10(x));
    214           x /= pow(10,logx);
    215           double fx = floor(x*pow(10,f))/pow(10,f);
    216           double cx = ceil(x*pow(10,f))/pow(10,f);
     214          x /= pow(10.0, logx);
     215          double fx = floor(x * pow(10.0, f)) / pow(10.0,f);
     216          double cx = ceil(x * pow(10.0, f)) / pow(10.0, f);
    217217         
    218218          if (fabs(fx-x) < fabs(cx-x))
     
    309309      if (x != 0) {
    310310          e = int(log10(x));
    311           double n = floor(x/pow(10,e-p+1));
    312           if (n < pow(10,p-1)) {
     311          double n = floor(x / pow(10.0, e - p + 1));
     312          if (n < pow(10.0, p - 1)) {
    313313              e = e - 1;
    314               n = floor(x/pow(10,e-p+1));
    315           }
    316          
    317           if (fabs((n+1)*pow(10,e-p+1)-x) < fabs(n*pow(10,e-p+1)-x))
     314              n = floor(x / pow(10.0, e - p + 1));
     315          }
     316         
     317          if (fabs((n + 1) * pow(10.0, e - p + 1) - x) < fabs(n * pow(10.0, e - p + 1) - x))
    318318              n++;
    319           assert(pow(10,p-1) <= n);
    320           assert(n < pow(10,p));
     319          assert(pow(10.0, p - 1) <= n);
     320          assert(n < pow(10.0, p));
    321321         
    322322          m = integer_part_noexp(n);
Note: See TracChangeset for help on using the changeset viewer.