Changeset 10456 in webkit for trunk/JavaScriptCore/kjs


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.
Location:
trunk/JavaScriptCore/kjs
Files:
21 edited

Legend:

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

    r10197 r10456  
    2929#include <algorithm>
    3030
    31 #if APPLE_CHANGES
     31#if !WIN32
     32
    3233#include <CoreFoundation/CoreFoundation.h>
    3334#include <pthread.h>
     
    3536#include <mach/task.h>
    3637#include <mach/thread_act.h>
     38
     39#else
     40
     41#include <windows.h>
     42
    3743#endif
    3844
     
    174180}
    175181
     182#if KJS_MULTIPLE_THREADS
     183
    176184struct Collector::Thread {
    177185  Thread(pthread_t pthread, mach_port_t mthread) : posixThread(pthread), machThread(mthread) {}
     
    222230  }
    223231}
     232
     233#endif
    224234
    225235#define IS_POINTER_ALIGNED(p) (((int)(p) & (sizeof(char *) - 1)) == 0)
     
    275285void Collector::markCurrentThreadConservatively()
    276286{
    277   jmp_buf registers;
    278   setjmp(registers);
    279 
    280   pthread_t thread = pthread_self();
    281   void *stackBase = pthread_get_stackaddr_np(thread);
    282   int dummy;
    283   void *stackPointer = &dummy;
    284   markStackObjectsConservatively(stackPointer, stackBase);
    285 }
     287    jmp_buf registers;
     288    setjmp(registers);
     289
     290#if !WIN32
     291    pthread_t thread = pthread_self();
     292    void *stackBase = pthread_get_stackaddr_np(thread);
     293#else
     294    NT_TIB *pTib;
     295    __asm {
     296        MOV EAX, FS:[18h]
     297        MOV pTib, EAX
     298    }
     299    void *stackBase = (void *)pTib->StackBase;
     300#endif
     301
     302    int dummy;
     303    void *stackPointer = &dummy;
     304
     305    markStackObjectsConservatively(stackPointer, stackBase);
     306}
     307
     308#if KJS_MULTIPLE_THREADS
    286309
    287310typedef unsigned long usword_t; // word size, assumed to be either 32 or 64 bit
     
    324347}
    325348
     349#endif
     350
    326351void Collector::markStackObjectsConservatively()
    327352{
    328353  markCurrentThreadConservatively();
    329354
     355#if KJS_MULTIPLE_THREADS
    330356  for (Thread *thread = registeredThreads; thread != NULL; thread = thread->next) {
    331357    if (thread->posixThread != pthread_self()) {
     
    333359    }
    334360  }
     361#endif
    335362}
    336363
  • trunk/JavaScriptCore/kjs/config.h

    r10412 r10456  
    1212#define HAVE_FLOAT_H 1
    1313#define HAVE_FUNC__FINITE 1
     14#define HAVE_SYS_TIMEB_H 1
    1415
    1516#endif
  • trunk/JavaScriptCore/kjs/date_object.cpp

    r10207 r10456  
    5252#include <locale.h>
    5353#include <ctype.h>
     54#include <limits.h>
    5455
    5556#include "date_object.h"
    5657#include "error_object.h"
    5758#include "operations.h"
     59
     60#if WIN32
     61#define strncasecmp(x, y, z) strnicmp(x, y, z)
     62#include <float.h>
     63#define isfinite(x) _finite(x)
     64#define copysign(x) _copysign(x)
     65#endif
    5866
    5967#include "date_object.lut.h"
     
    10541062     bool have_time = false;
    10551063     
    1056      // for strtol error checking
    1057      errno = 0;
    1058 
    10591064     // Skip leading space
    10601065     while(isspace(*dateString))
     
    10881093
    10891094     // ' 09-Nov-99 23:12:40 GMT'
     1095     errno = 0;
    10901096     day = strtol(dateString, &newPosStr, 10);
    10911097     if (errno)
  • trunk/JavaScriptCore/kjs/date_object.h

    r10084 r10456  
    2525#include "internal.h"
    2626#include "function_object.h"
    27 
    28 #include <sys/time.h>
    2927
    3028namespace KJS {
  • trunk/JavaScriptCore/kjs/dtoa.cpp

    r2913 r10456  
    178178#define INFNAN_CHECK
    179179#include "dtoa.h"
     180#undef strtod /* do not remove: needed for WIN32 */
    180181#define strtod kjs_strtod
    181182#define dtoa kjs_dtoa
  • trunk/JavaScriptCore/kjs/fast_malloc.cpp

    r10447 r10456  
    227227#include "fast_malloc.h"
    228228
     229#define MALLOC_FAILURE_ACTION abort()
     230
     231#if !WIN32
    229232#define MORECORE_CONTIGUOUS 0
    230233#define MORECORE_CANNOT_TRIM 1
    231 #define MALLOC_FAILURE_ACTION abort()
     234#endif
    232235
    233236namespace KJS {
     
    302305static long getpagesize(void);
    303306static long getregionsize(void);
    304 static void *sbrk(long size);
     307static void *sbrk(ptrdiff_t size);
    305308static void *mmap(void *ptr, long size, long prot, long type, long handle, long arg);
    306309static long munmap(void *ptr, long size);
     
    50295032/* Allocate and link a region entry in the region list */
    50305033static int region_list_append (region_list_entry **last, void *base_reserved, long reserve_size) {
    5031     region_list_entry *next = HeapAlloc (GetProcessHeap (), 0, sizeof (region_list_entry));
     5034    region_list_entry *next = (region_list_entry *) HeapAlloc (GetProcessHeap (), 0, sizeof (region_list_entry));
    50325035    if (! next)
    50335036        return FALSE;
     
    50585061
    50595062/* sbrk for windows */
    5060 static void *sbrk (long size) {
     5063static void *sbrk (ptrdiff_t size) {
    50615064    static long g_pagesize, g_my_pagesize;
    50625065    static long g_regionsize, g_my_regionsize;
     
    50645067    void *result = (void *) MORECORE_FAILURE;
    50655068#ifdef TRACE
    5066     printf ("sbrk %d\n", size);
     5069    printf ("sbrk %ld\n", (long) size);
    50675070#endif
    50685071#if defined (USE_MALLOC_LOCK) && defined (NEEDED)
  • trunk/JavaScriptCore/kjs/function.cpp

    r10412 r10456  
    4242
    4343#include <unicode/uchar.h>
     44
     45#if WIN32
     46// Define a locale-independent isxdigit.
     47#undef isxdigit
     48inline bool isxdigit(int c) { return _isctype(c, _HEX); }
     49#endif
    4450
    4551using namespace KXMLCore;
  • trunk/JavaScriptCore/kjs/function.h

    r10399 r10456  
    3737   */
    3838  class FunctionImp : public InternalFunctionImp {
    39     friend class Function;
    4039    friend class ActivationImp;
    4140  public:
  • trunk/JavaScriptCore/kjs/identifier.cpp

    r10265 r10456  
    2626// runs at init time.
    2727
    28 #if APPLE_CHANGES
    2928#define AVOID_STATIC_CONSTRUCTORS 1
    30 #endif
    3129
    3230#if AVOID_STATIC_CONSTRUCTORS
     
    3735
    3836#include "fast_malloc.h"
     37#include <string.h> // for strlen
    3938
    4039#define DUMP_STATISTICS 0
     
    299298#if !AVOID_STATIC_CONSTRUCTORS
    300299    // Define an Identifier in the normal way.
    301     #define DEFINE_GLOBAL(name, string) extern const Identifier name ## PropertyName(string);
     300    #define DEFINE_GLOBAL(name, string) extern const Identifier name(string);
    302301#else
    303302    // Define an Identifier-sized array of pointers to avoid static initialization.
  • trunk/JavaScriptCore/kjs/internal.cpp

    r10399 r10456  
    2626#include <math.h>
    2727#include <assert.h>
    28 #ifndef NDEBUG
    29 #include <strings.h>      // for strdup
    30 #endif
    3128
    3229#include "array_object.h"
     
    5047#include "string_object.h"
    5148
    52 #define I18N_NOOP(s) s
     49#if WIN32
     50#include <float.h>
     51#define copysign(a, b) _copysign(a, b)
     52#endif
    5353
    5454extern int kjsyyparse();
     
    5959
    6060#if !APPLE_CHANGES
    61 
     61 
    6262#ifdef WORDS_BIGENDIAN
    6363  const unsigned char NaN_Bytes[] = { 0x7f, 0xf8, 0, 0, 0, 0, 0, 0 };
     
    7070  const unsigned char Inf_Bytes[] = { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f };
    7171#endif
    72 
     72 
    7373  const double NaN = *(const double*) NaN_Bytes;
    7474  const double Inf = *(const double*) Inf_Bytes;
    75 
     75 
    7676#endif // APPLE_CHANGES
     77
     78#if !KJS_MULTIPLE_THREADS
     79
     80static inline void initializeInterpreterLock() { }
     81static inline void lockInterpreter() { }
     82static inline void unlockInterpreter() { }
     83
     84const int interpreterLockCount = 1;
     85
     86#else
    7787
    7888static pthread_once_t interpreterLockOnce = PTHREAD_ONCE_INIT;
     
    104114}
    105115
    106 
     116#endif
    107117
    108118// ------------------------------ UndefinedImp ---------------------------------
  • trunk/JavaScriptCore/kjs/internal.h

    r10399 r10456  
    3535#include "shared_ptr.h"
    3636
     37#if !WIN32
     38#define KJS_MULTIPLE_THREADS 1
     39#endif
     40
    3741#define I18N_NOOP(s) s
    3842
  • trunk/JavaScriptCore/kjs/interpreter_map.cpp

    r9768 r10456  
    2222#include "interpreter_map.h"
    2323#include "pointer_hash.h"
     24#include <stdlib.h>
    2425
    2526namespace KJS {
     
    3132int InterpreterMap::_tableSizeMask;
    3233int InterpreterMap::_keyCount;
    33 
    3434
    3535InterpreterImp * InterpreterMap::getInterpreterForGlobalObject(ObjectImp *global)
     
    5454    return 0;
    5555}
    56 
    5756
    5857void InterpreterMap::setInterpreterForGlobalObject(InterpreterImp *interpreter, ObjectImp *global)
     
    172171}
    173172
    174 
    175173} // namespace
  • trunk/JavaScriptCore/kjs/list.cpp

    r10181 r10456  
    2323
    2424#include "internal.h"
     25#include <algorithm>
    2526
    2627#define DUMP_STATISTICS 0
     28
     29using std::min;
    2730
    2831namespace KJS {
     
    97100#endif
    98101
    99 
    100102inline void ListImp::markValues()
    101103{
    102     int inlineSize = MIN(size, inlineValuesSize);
     104    int inlineSize = min(size, inlineValuesSize);
    103105    for (int i = 0; i != inlineSize; ++i) {
    104106        if (!values[i]->marked()) {
     
    291293    int size = imp->size;
    292294
    293     int inlineSize = MIN(size, inlineValuesSize);
     295    int inlineSize = min(size, inlineValuesSize);
    294296    for (int i = 0; i != inlineSize; ++i)
    295297        copy.append(imp->values[i]);
     
    312314    int size = imp->size;
    313315
    314     int inlineSize = MIN(size, inlineValuesSize);
     316    int inlineSize = min(size, inlineValuesSize);
    315317    for (int i = 1; i < inlineSize; ++i)
    316318        copy.append(imp->values[i]);
  • trunk/JavaScriptCore/kjs/math_object.cpp

    r10084 r10456  
    3232
    3333#include "math_object.lut.h"
     34
     35#if WIN32
     36
     37#include <float.h>
     38static int signbit(double d)
     39{
     40    // FIXME: Not sure if this is exactly right.
     41    switch (_fpclass(d)) {
     42        case _FPCLASS_NINF:
     43        case _FPCLASS_NN:
     44        case _FPCLASS_ND:
     45        case _FPCLASS_NZ:
     46            // It's one of wacky negatives, report as negative.
     47            return 1;
     48        case _FPCLASS_PINF:
     49        case _FPCLASS_PN:
     50        case _FPCLASS_PD:
     51        case _FPCLASS_PZ:
     52            // It's one of wacky positives, report as positive.
     53            return 0;
     54        default:
     55            return d < 0;
     56    }
     57}
     58
     59#endif
    3460
    3561#ifndef M_PI
  • trunk/JavaScriptCore/kjs/nodes.cpp

    r10416 r10456  
    119119  fprintf( stderr, "Node::finalCheck(): list count       : %d\n", (int)s_nodes.size() );
    120120  std::list<Node *>::iterator it = s_nodes->begin();
    121   for ( uint i = 0; it != s_nodes->end() ; ++it, ++i )
     121  for ( unsigned i = 0; it != s_nodes->end() ; ++it, ++i )
    122122    fprintf( stderr, "[%d] Still having node %p (%s) (refcount %d)\n", i, (void*)*it, typeid( **it ).name(), (*it)->refcount );
    123123  delete s_nodes;
     
    10311031// ECMA 11.13
    10321032
     1033#if __GNUC__
    10331034// gcc refuses to inline this without the always_inline, but inlining it does help
    10341035static inline ValueImp *valueForReadModifyAssignment(ExecState * exec, ValueImp *v1, ValueImp *v2, Operator oper) __attribute__((always_inline));
     1036#endif
    10351037
    10361038static inline ValueImp *valueForReadModifyAssignment(ExecState * exec, ValueImp *v1, ValueImp *v2, Operator oper)
  • 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);
  • trunk/JavaScriptCore/kjs/operations.cpp

    r10412 r10456  
    2121 */
    2222
    23 #ifdef HAVE_CONFIG_H
     23#include "operations.h"
     24
    2425#include "config.h"
    25 #endif
    2626
    2727#include <stdio.h>
     
    4040#endif
    4141
    42 #include "operations.h"
    4342#include "object.h"
    4443
    45 using namespace KJS;
     44namespace KJS {
    4645
    4746#if !APPLE_CHANGES
    4847
    49 bool KJS::isNaN(double d)
     48bool isNaN(double d)
    5049{
    5150#ifdef HAVE_FUNC_ISNAN
     
    5857}
    5958
    60 bool KJS::isInf(double d)
    61 {
    62 #if defined(HAVE_FUNC_ISINF)
     59bool isInf(double d)
     60{
     61#if WIN32
     62  int fpClass = _fpclass(d);
     63  return _FPCLASS_PINF == fpClass || _FPCLASS_NINF == fpClass;
     64#elif defined(HAVE_FUNC_ISINF)
    6365  return isinf(d);
    6466#elif HAVE_FUNC_FINITE
     
    7173}
    7274
    73 bool KJS::isPosInf(double d)
    74 {
    75 #if APPLE_CHANGES
    76   return isinf(d) && d > 0;
    77 #else
    78 #if defined(HAVE_FUNC_ISINF)
     75bool isPosInf(double d)
     76{
     77#if WIN32
     78  return _FPCLASS_PINF == _fpclass(d);
     79#elif defined(HAVE_FUNC_ISINF)
    7980  return (isinf(d) == 1);
    8081#elif HAVE_FUNC_FINITE
     
    8586  return false;
    8687#endif
    87 #endif
    88 }
    89 
    90 bool KJS::isNegInf(double d)
    91 {
    92 #if APPLE_CHANGES
    93   return isinf(d) && d < 0;
    94 #else
    95 #if defined(HAVE_FUNC_ISINF)
     88}
     89
     90bool isNegInf(double d)
     91{
     92#if WIN32
     93  return _FPCLASS_PINF == _fpclass(d);
     94#elif defined(HAVE_FUNC_ISINF)
    9695  return (isinf(d) == -1);
    9796#elif HAVE_FUNC_FINITE
     
    102101  return false;
    103102#endif
    104 #endif
    105103}
    106104
     
    108106
    109107// ECMA 11.9.3
    110 bool KJS::equal(ExecState *exec, ValueImp *v1, ValueImp *v2)
     108bool equal(ExecState *exec, ValueImp *v1, ValueImp *v2)
    111109{
    112110    Type t1 = v1->type();
     
    162160}
    163161
    164 bool KJS::strictEqual(ExecState *exec, ValueImp *v1, ValueImp *v2)
     162bool strictEqual(ExecState *exec, ValueImp *v1, ValueImp *v2)
    165163{
    166164  Type t1 = v1->type();
     
    194192}
    195193
    196 int KJS::relation(ExecState *exec, ValueImp *v1, ValueImp *v2)
     194int relation(ExecState *exec, ValueImp *v1, ValueImp *v2)
    197195{
    198196  ValueImp *p1 = v1->toPrimitive(exec,NumberType);
     
    211209}
    212210
    213 int KJS::maxInt(int d1, int d2)
     211int maxInt(int d1, int d2)
    214212{
    215213  return (d1 > d2) ? d1 : d2;
    216214}
    217215
    218 int KJS::minInt(int d1, int d2)
     216int minInt(int d1, int d2)
    219217{
    220218  return (d1 < d2) ? d1 : d2;
     
    222220
    223221// ECMA 11.6
    224 ValueImp *KJS::add(ExecState *exec, ValueImp *v1, ValueImp *v2, char oper)
     222ValueImp *add(ExecState *exec, ValueImp *v1, ValueImp *v2, char oper)
    225223{
    226224  // exception for the Date exception in defaultValue()
     
    247245
    248246// ECMA 11.5
    249 ValueImp *KJS::mult(ExecState *exec, ValueImp *v1, ValueImp *v2, char oper)
     247ValueImp *mult(ExecState *exec, ValueImp *v1, ValueImp *v2, char oper)
    250248{
    251249  bool n1KnownToBeInteger;
     
    270268  return jsNumber(result, resultKnownToBeInteger);
    271269}
     270
     271}
  • trunk/JavaScriptCore/kjs/regexp.cpp

    r9768 r10456  
    142142#else
    143143
    144   const uint maxMatch = 10;
     144  const unsigned maxMatch = 10;
    145145  regmatch_t rmatch[maxMatch];
    146146
     
    159159  // map rmatch array to ovector used in PCRE case
    160160  _numSubPatterns = 0;
    161   for(uint j = 1; j < maxMatch && rmatch[j].rm_so >= 0 ; j++)
     161  for(unsigned j = 1; j < maxMatch && rmatch[j].rm_so >= 0 ; j++)
    162162      _numSubPatterns++;
    163163  int ovecsize = (_numSubPatterns+1)*3; // see above
    164164  *ovector = new int[ovecsize];
    165   for (uint j = 0; j < _numSubPatterns + 1; j++) {
     165  for (unsigned j = 0; j < _numSubPatterns + 1; j++) {
    166166    if (j>maxMatch)
    167167      break;
  • trunk/JavaScriptCore/kjs/regexp.h

    r9768 r10456  
    4949
    5050    UString match(const UString &s, int i, int *pos = 0, int **ovector = 0);
    51     uint subPatterns() const { return _numSubPatterns; }
     51    unsigned subPatterns() const { return _numSubPatterns; }
    5252
    5353  private:
     
    5858#endif
    5959    int _flags;
    60     uint _numSubPatterns;
     60    unsigned _numSubPatterns;
    6161
    6262    RegExp(const RegExp &);
  • trunk/JavaScriptCore/kjs/regexp_object.cpp

    r10207 r10456  
    196196  list.append(String(result));
    197197  if ( lastOvector )
    198     for ( uint i = 1 ; i < lastNrSubPatterns + 1 ; ++i )
     198    for ( unsigned i = 1 ; i < lastNrSubPatterns + 1 ; ++i )
    199199    {
    200200      int start = lastOvector[2*i];
  • trunk/JavaScriptCore/kjs/regexp_object.h

    r10084 r10456  
    8484    UString lastString;
    8585    int *lastOvector;
    86     uint lastNrSubPatterns;
     86    unsigned lastNrSubPatterns;
    8787  };
    8888
Note: See TracChangeset for help on using the changeset viewer.