Changeset 10757 in webkit for trunk/JavaScriptCore/kjs/nodes.cpp


Ignore:
Timestamp:
Oct 5, 2005, 6:13:18 PM (20 years ago)
Author:
ggaren
Message:
  • Darin and I rewrote our implementation of the SimpleNumber class to store number bit patterns in their floating point formats.

My tweaks reviewed by Darin.

~1% speedup on JS iBench.

  • kjs/internal.h: removed obsolete jsNumber declarations.
  • kjs/math_object.cpp: (MathFuncImp::callAsFunction): changed KJS::isNaN to isNaN
  • kjs/nodes.cpp: (PostfixResolveNode::evaluate): removed obsolete knownToBeInteger (PostfixBracketNode::evaluate): ditto (PostfixDotNode::evaluate): ditto (PrefixResolveNode::evaluate): ditto (PrefixBracketNode::evaluate): ditto (PrefixDotNode::evaluate): ditto (NegateNode::evaluate): ditto (valueForReadModifyAssignment): ditto
  • kjs/number_object.cpp: removed obsolete comment
  • kjs/operations.cpp: (KJS::equal): removed unnecessary isNaN checks (KJS::strictEqual): ditto (KJS::add): removed obsolete knownToBeInteger (KJS::mult): ditto
  • kjs/operations.h: removed include of "value.h" to prevent circular reference
  • kjs/simple_number.h: removed unnecessary #includes (KJS::SimpleNumber::make): see above (KJS::SimpleNumber::is): ditto (KJS::SimpleNumber::value): ditto
  • kjs/string_object.cpp: (StringProtoFuncImp::callAsFunction): changed KJS::isNaN to isNaN
  • kjs/ustring.cpp: removed unnecessary isNaN check (KJS::UString::toUInt32): ditto
  • kjs/value.cpp: (KJS::jsNumber): removed obsolete jsNumber definitions (KJS::ConstantValues::init): NaN is no longer a ConstantValue (KJS::ConstantValues::clear): ditto (KJS::ConstantValues::mark): ditto
  • kjs/value.h: removed obsolete knownToBeInteger (KJS::jsNaN): now returns a SimpleNumber (KJS::ValueImp::getUInt32): changed to account for NaN being a SimpleNumber (KJS::ValueImp::toBoolean): ditto (KJS::ValueImp::toString): changed to account for +/- 0.0 (KJS::jsZero): changed to reflect that SimpleNumber::make takes a double (KJS::jsOne): ditto (KJS::jsTwo): ditto (KJS::Number): removed obsolete non-double constructor declarations
File:
1 edited

Legend:

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

    r10744 r10757  
    663663        ValueImp *v = slot.getValue(exec, m_ident);
    664664
    665         bool knownToBeInteger;
    666         double n = v->toNumber(exec, knownToBeInteger);
     665        double n = v->toNumber(exec);
    667666       
    668667        double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
    669         base->put(exec, m_ident, jsNumber(newValue, knownToBeInteger));
     668        base->put(exec, m_ident, jsNumber(newValue));
    670669       
    671         return jsNumber(n, knownToBeInteger);
     670        return jsNumber(n);
    672671    }
    673672
     
    695694    KJS_CHECKEXCEPTIONVALUE
    696695
    697     bool knownToBeInteger;
    698     double n = v->toNumber(exec, knownToBeInteger);
     696    double n = v->toNumber(exec);
    699697
    700698    double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
    701     base->put(exec, propertyIndex, jsNumber(newValue, knownToBeInteger));
     699    base->put(exec, propertyIndex, jsNumber(newValue));
    702700       
    703     return jsNumber(n, knownToBeInteger);
     701    return jsNumber(n);
    704702  }
    705703
     
    709707  KJS_CHECKEXCEPTIONVALUE
    710708
    711   bool knownToBeInteger;
    712   double n = v->toNumber(exec, knownToBeInteger);
     709  double n = v->toNumber(exec);
    713710 
    714711  double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
    715   base->put(exec, propertyName, jsNumber(newValue, knownToBeInteger));
     712  base->put(exec, propertyName, jsNumber(newValue));
    716713       
    717   return jsNumber(n, knownToBeInteger);
     714  return jsNumber(n);
    718715}
    719716
     
    730727  KJS_CHECKEXCEPTIONVALUE
    731728
    732   bool knownToBeInteger;
    733   double n = v->toNumber(exec, knownToBeInteger);
     729  double n = v->toNumber(exec);
    734730 
    735731  double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
    736   base->put(exec, m_ident, jsNumber(newValue, knownToBeInteger));
     732  base->put(exec, m_ident, jsNumber(newValue));
    737733       
    738   return jsNumber(n, knownToBeInteger);
     734  return jsNumber(n);
    739735}
    740736
     
    893889        ValueImp *v = slot.getValue(exec, m_ident);
    894890
    895         bool knownToBeInteger;
    896         double n = v->toNumber(exec, knownToBeInteger);
     891        double n = v->toNumber(exec);
    897892       
    898893        double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
    899         ValueImp *n2 = jsNumber(newValue, knownToBeInteger);
     894        ValueImp *n2 = jsNumber(newValue);
    900895        base->put(exec, m_ident, n2);
    901896
     
    926921    KJS_CHECKEXCEPTIONVALUE
    927922
    928     bool knownToBeInteger;
    929     double n = v->toNumber(exec, knownToBeInteger);
     923    double n = v->toNumber(exec);
    930924
    931925    double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
    932     ValueImp *n2 = jsNumber(newValue, knownToBeInteger);
     926    ValueImp *n2 = jsNumber(newValue);
    933927    base->put(exec, propertyIndex, n2);
    934928
     
    941935  KJS_CHECKEXCEPTIONVALUE
    942936
    943   bool knownToBeInteger;
    944   double n = v->toNumber(exec, knownToBeInteger);
     937  double n = v->toNumber(exec);
    945938 
    946939  double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
    947   ValueImp *n2 = jsNumber(newValue, knownToBeInteger);
     940  ValueImp *n2 = jsNumber(newValue);
    948941  base->put(exec, propertyName, n2);
    949942
     
    963956  KJS_CHECKEXCEPTIONVALUE
    964957
    965   bool knownToBeInteger;
    966   double n = v->toNumber(exec, knownToBeInteger);
     958  double n = v->toNumber(exec);
    967959 
    968960  double newValue = (m_oper == OpPlusPlus) ? n + 1 : n - 1;
    969   ValueImp *n2 = jsNumber(newValue, knownToBeInteger);
     961  ValueImp *n2 = jsNumber(newValue);
    970962  base->put(exec, m_ident, n2);
    971963
     
    992984  KJS_CHECKEXCEPTIONVALUE
    993985
    994   bool knownToBeInteger;
    995   double n = v->toNumber(exec, knownToBeInteger);
    996   return jsNumber(-n, knownToBeInteger && n != 0);
     986  double n = v->toNumber(exec);
     987  return jsNumber(-n);
    997988}
    998989
     
    12581249    break;
    12591250  case OpModEq: {
    1260     bool d1KnownToBeInteger;
    1261     double d1 = v1->toNumber(exec, d1KnownToBeInteger);
    1262     bool d2KnownToBeInteger;
    1263     double d2 = v2->toNumber(exec, d2KnownToBeInteger);
    1264     v = jsNumber(fmod(d1, d2), d1KnownToBeInteger && d2KnownToBeInteger && d2 != 0);
     1251    double d1 = v1->toNumber(exec);
     1252    double d2 = v2->toNumber(exec);
     1253    v = jsNumber(fmod(d1, d2));
    12651254  }
    12661255    break;
Note: See TracChangeset for help on using the changeset viewer.