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/regexp_object.cpp

    r2766 r2783  
    4141                                       ObjectPrototypeImp *objProto,
    4242                                       FunctionPrototypeImp *funcProto)
    43   : ObjectImp(Object(objProto))
     43  : ObjectImp(objProto)
    4444{
    4545  Value protect(this);
     
    4848  // The constructor will be added later in RegExpObject's constructor (?)
    4949
    50   put(exec, "exec",     Object(new RegExpProtoFuncImp(exec,funcProto,RegExpProtoFuncImp::Exec,     0)), DontEnum);
    51   put(exec, "test",     Object(new RegExpProtoFuncImp(exec,funcProto,RegExpProtoFuncImp::Test,     0)), DontEnum);
    52   put(exec, toStringPropertyName, Object(new RegExpProtoFuncImp(exec,funcProto,RegExpProtoFuncImp::ToString, 0)), DontEnum);
     50  static const Identifier execPropertyName("exec");
     51  putDirect(execPropertyName,     new RegExpProtoFuncImp(exec,funcProto,RegExpProtoFuncImp::Exec,     0), DontEnum);
     52  static const Identifier testPropertyName("test");
     53  putDirect(testPropertyName,     new RegExpProtoFuncImp(exec,funcProto,RegExpProtoFuncImp::Test,     0), DontEnum);
     54  putDirect(toStringPropertyName, new RegExpProtoFuncImp(exec,funcProto,RegExpProtoFuncImp::ToString, 0), DontEnum);
    5355}
    5456
     
    6062{
    6163  Value protect(this);
    62   put(exec,lengthPropertyName,Number(len),DontDelete|ReadOnly|DontEnum);
     64  putDirect(lengthPropertyName, len, DontDelete|ReadOnly|DontEnum);
    6365}
    6466
     
    138140
    139141RegExpImp::RegExpImp(RegExpPrototypeImp *regexpProto)
    140   : ObjectImp(Object(regexpProto)), reg(0L)
     142  : ObjectImp(regexpProto), reg(0L)
    141143{
    142144}
     
    157159  Value protect(this);
    158160  // ECMA 15.10.5.1 RegExp.prototype
    159   put(exec,prototypePropertyName, Object(regProto), DontEnum|DontDelete|ReadOnly);
     161  putDirect(prototypePropertyName, regProto, DontEnum|DontDelete|ReadOnly);
    160162
    161163  // no. of arguments for constructor
    162   put(exec,lengthPropertyName, Number(2), ReadOnly|DontDelete|DontEnum);
     164  putDirect(lengthPropertyName, NumberImp::two(), ReadOnly|DontDelete|DontEnum);
    163165}
    164166
     
    222224Object RegExpObjectImp::construct(ExecState *exec, const List &args)
    223225{
    224   String p = args.isEmpty() ? UString("") : args[0].toString(exec);
     226  UString p = args.isEmpty() ? UString("") : args[0].toString(exec);
    225227  UString flags = args[1].toString(exec);
    226228
     
    234236  // TODO: throw a syntax error on invalid flags
    235237
    236   dat->put(exec, "global", Boolean(global));
    237   dat->put(exec, "ignoreCase", Boolean(ignoreCase));
    238   dat->put(exec, "multiline", Boolean(multiline));
    239 
    240   dat->put(exec, "source", p);
    241   dat->put(exec, "lastIndex", Number(0), DontDelete | DontEnum);
     238  dat->putDirect("global", global ? BooleanImp::staticTrue : BooleanImp::staticFalse);
     239  dat->putDirect("ignoreCase", ignoreCase ? BooleanImp::staticTrue : BooleanImp::staticFalse);
     240  dat->putDirect("multiline", multiline ? BooleanImp::staticTrue : BooleanImp::staticFalse);
     241
     242  dat->putDirect("source", new StringImp(p));
     243  dat->putDirect("lastIndex", NumberImp::zero(), DontDelete | DontEnum);
    242244
    243245  int reflags = RegExp::None;
     
    248250  if (multiline)
    249251      reflags |= RegExp::Multiline;
    250   dat->setRegExp(new RegExp(p.value(), reflags));
     252  dat->setRegExp(new RegExp(p, reflags));
    251253
    252254  return obj;
Note: See TracChangeset for help on using the changeset viewer.