Changeset 2783 in webkit for trunk/JavaScriptCore/kjs/value.cpp


Ignore:
Timestamp:
Nov 20, 2002, 1:12:14 PM (23 years ago)
Author:
darin
Message:
  • decrease ref/deref -- 5% speedup in iBench
  • JavaScriptCore.pbproj/project.pbxproj: Added array_instance.h
  • kjs/array_instance.h: Added so it can be shared by function.h.
  • kjs/array_object.cpp:
  • kjs/array_object.h:
  • kjs/bool_object.cpp:
  • kjs/bool_object.h:
  • kjs/collector.cpp:
  • kjs/date_object.cpp:
  • kjs/date_object.h:
  • kjs/error_object.cpp:
  • kjs/function.cpp:
  • kjs/function.h:
  • kjs/function_object.cpp:
  • kjs/internal.cpp:
  • kjs/internal.h:
  • kjs/math_object.cpp:
  • kjs/nodes.cpp:
  • kjs/number_object.cpp:
  • kjs/object.cpp:
  • kjs/object.h:
  • kjs/object_object.cpp:
  • kjs/property_map.cpp:
  • kjs/reference.cpp:
  • kjs/reference.h:
  • kjs/regexp_object.cpp:
  • kjs/string_object.cpp:
  • kjs/string_object.h:
  • kjs/value.cpp:
  • kjs/value.h: Switched lots of interfaces so they don't require ref/deref.
File:
1 edited

Legend:

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

    r1850 r2783  
    203203{
    204204  rep = v;
    205   if (rep)
     205  if (v)
    206206  {
    207     rep->ref();
     207    v->ref();
    208208    //fprintf(stderr, "Value::Value(%p) imp=%p ref=%d\n", this, rep, rep->refcount);
    209209    v->setGcAllowed();
     
    296296// ------------------------------ String ---------------------------------------
    297297
    298 String::String(const UString &s) : Value(new StringImp(UString(s)))
     298String::String(const UString &s) : Value(new StringImp(s))
    299299{
    300300}
     
    323323
    324324Number::Number(double d)
    325   : Value(SimpleNumber::fits(d) ? SimpleNumber::make((long)d) : new NumberImp(d)) { }
     325  : Value(SimpleNumber::fits(d) ? SimpleNumber::make((long)d) : (KJS::isNaN(d) ? NumberImp::staticNaN : new NumberImp(d))) { }
    326326
    327327Number::Number(long int l)
     
    349349int Number::intValue() const
    350350{
    351   return int(value());
     351  if (SimpleNumber::is(rep))
     352    return SimpleNumber::value(rep);
     353  return (int)((NumberImp*)rep)->value();
    352354}
    353355
    354356bool Number::isNaN() const
    355357{
    356   return KJS::isNaN(value());
     358  return rep == NumberImp::staticNaN;
    357359}
    358360
    359361bool Number::isInf() const
    360362{
    361   return KJS::isInf(value());
    362 }
     363  if (SimpleNumber::is(rep))
     364    return false;
     365  return KJS::isInf(((NumberImp*)rep)->value());
     366}
Note: See TracChangeset for help on using the changeset viewer.