JavaScriptCore/ChangeLog-2010-05-24
changeset 0 4f2f89ce4247
equal deleted inserted replaced
-1:000000000000 0:4f2f89ce4247
       
     1 2010-05-24  Gavin Barraclough  <barraclough@apple.com>
       
     2 
       
     3         Rubber Stamped by Sam Weinig.
       
     4 
       
     5         Accidentally committed double write of codeblock in Interpreter.
       
     6 
       
     7         * interpreter/Interpreter.cpp:
       
     8         (JSC::Interpreter::privateExecute):
       
     9 
       
    10 2010-05-24  Gavin Barraclough  <barraclough@apple.com>
       
    11 
       
    12         Reviewed by Sam Weinig.
       
    13 
       
    14         https://bugs.webkit.org/show_bug.cgi?id=39583
       
    15         Move creation of 'this' object from caller to callee in construction.
       
    16 
       
    17         Presently the caller of a constructor is responsible for providing a this
       
    18         object.  Instead, move the object creation into a new op_create_this opcode,
       
    19         planted in the head of the contructor bytecode for a function.  Since the
       
    20         prototype for the object is provided by performing a get_by_id on the callee,
       
    21         also add a new get_callee opcode (this is used to get the callee JSFunction
       
    22         into a register so that a normal get_by_id can be used).
       
    23 
       
    24         Currently the caller is also responsible for detecting when op_construct is
       
    25         performed on a JSFunction representing a host function, in which case an
       
    26         exception is thrown – and this check currently takes place when constructing
       
    27         the this object.  Instead, mirroring the recent changes for non-host functions,
       
    28         add a parallel code-path for native constructors to follow, with a thunk for
       
    29         invoking native constructors provided by JITStubs, and a constructor-specific
       
    30         NativeFunction on NativeExecutable.  Provide an implementation of a host
       
    31         constructor which will throw an exception.
       
    32 
       
    33         * bytecode/CodeBlock.cpp:
       
    34         (JSC::CodeBlock::dump):
       
    35         (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
       
    36         * bytecode/CodeBlock.h:
       
    37         * bytecode/Opcode.h:
       
    38         * bytecompiler/BytecodeGenerator.cpp:
       
    39         (JSC::BytecodeGenerator::BytecodeGenerator):
       
    40         (JSC::BytecodeGenerator::emitConstruct):
       
    41         * bytecompiler/BytecodeGenerator.h:
       
    42         (JSC::BytecodeGenerator::emitGetByIdExceptionInfo):
       
    43         * interpreter/Interpreter.cpp:
       
    44         (JSC::Interpreter::privateExecute):
       
    45         * jit/JIT.cpp:
       
    46         (JSC::JIT::privateCompileMainPass):
       
    47         * jit/JIT.h:
       
    48         * jit/JITCall.cpp:
       
    49         (JSC::JIT::compileOpCall):
       
    50         (JSC::JIT::compileOpCallSlowCase):
       
    51         * jit/JITCall32_64.cpp:
       
    52         (JSC::JIT::compileOpCall):
       
    53         (JSC::JIT::compileOpCallSlowCase):
       
    54         * jit/JITOpcodes.cpp:
       
    55         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
    56         (JSC::JIT::privateCompileCTINativeCall):
       
    57         (JSC::JIT::emit_op_neq_null):
       
    58         (JSC::JIT::emit_op_convert_this):
       
    59         (JSC::JIT::emit_op_get_callee):
       
    60         (JSC::JIT::emit_op_create_this):
       
    61         * jit/JITOpcodes32_64.cpp:
       
    62         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
    63         (JSC::JIT::privateCompileCTINativeCall):
       
    64         (JSC::JIT::emit_op_get_callee):
       
    65         (JSC::JIT::emit_op_create_this):
       
    66         * jit/JITStubs.cpp:
       
    67         (JSC::DEFINE_STUB_FUNCTION):
       
    68         (JSC::JITThunks::hostFunctionStub):
       
    69         * jit/JITStubs.h:
       
    70         (JSC::JITThunks::ctiNativeConstruct):
       
    71         (JSC::):
       
    72         * runtime/ExceptionHelpers.cpp:
       
    73         (JSC::createNotAnObjectError):
       
    74         * runtime/Executable.h:
       
    75         (JSC::NativeExecutable::create):
       
    76         (JSC::NativeExecutable::NativeExecutable):
       
    77         * runtime/JSFunction.cpp:
       
    78         (JSC::callHostFunctionAsConstructor):
       
    79         * runtime/JSFunction.h:
       
    80 
       
    81 2010-05-23  Sam Weinig  <sam@webkit.org>
       
    82 
       
    83         Fix windows build.
       
    84 
       
    85         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
    86 
       
    87 2010-05-23  Sam Weinig  <sam@webkit.org>
       
    88 
       
    89         Reviewed by Oliver Hunt.
       
    90 
       
    91         Fix for https://bugs.webkit.org/show_bug.cgi?id=39575
       
    92         Make JS DOMObject inherit from JSObjectWithGlobalObject instead of JSObject
       
    93 
       
    94         Expose the global object stored in JSObjectWithGlobalObject.
       
    95 
       
    96         * JavaScriptCore.exp:
       
    97         * JavaScriptCore.xcodeproj/project.pbxproj:
       
    98         * runtime/JSObjectWithGlobalObject.cpp:
       
    99         (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
       
   100         (JSC::JSObjectWithGlobalObject::globalObject):
       
   101         * runtime/JSObjectWithGlobalObject.h:
       
   102 
       
   103 2010-05-21  Oliver Hunt  <oliver@apple.com>
       
   104 
       
   105         "asm volatile" isn't valid outside of functions.
       
   106 
       
   107         Reviewed by Gavin Barraclough.
       
   108 
       
   109         * jit/JITStubs.cpp:
       
   110 
       
   111 2010-05-21  Gavin Barraclough  <barraclough@apple.com>
       
   112 
       
   113         Unreviewed build fix.
       
   114 
       
   115         Interpreter fix following r59974.
       
   116 
       
   117         * interpreter/Interpreter.cpp:
       
   118         (JSC::Interpreter::privateExecute):
       
   119         * runtime/JSPropertyNameIterator.cpp:
       
   120         (JSC::JSPropertyNameIterator::get):
       
   121         * runtime/JSPropertyNameIterator.h:
       
   122 
       
   123 2010-05-21  Gavin Barraclough  <barraclough@apple.com>
       
   124 
       
   125         Rubber stamped by Oliver Hunt.
       
   126 
       
   127         Interpreter fix following r59939.
       
   128 
       
   129         * interpreter/Interpreter.cpp:
       
   130         (JSC::Interpreter::privateExecute):
       
   131 
       
   132 2010-05-21  David Levin  <levin@chromium.org>
       
   133 
       
   134         Unreviewed build fix.
       
   135 
       
   136         * wtf/SizeLimits.cpp: Removed a check while I figure out how to write it properly.
       
   137 
       
   138 2010-05-21  David Levin  <levin@chromium.org>
       
   139 
       
   140         Reviewed by Darin Adler.
       
   141 
       
   142         Enforce size constraints on various data structures in JavaScriptCore/wtf.
       
   143         https://bugs.webkit.org/show_bug.cgi?id=39327
       
   144 
       
   145         I only modified the default build for OSX and Chromium's build file to include WTFCompileAsserts.cpp
       
   146         as those should be sufficient to catch regressions on the size of the data structures.
       
   147 
       
   148         * JavaScriptCore.gypi: Added the WTFCompileAsserts.cpp file.
       
   149         * JavaScriptCore.xcodeproj/project.pbxproj: Added the WTFCompileAsserts.cpp file.
       
   150         * runtime/UString.cpp: Added a compile assert for UString size.
       
   151         * wtf/SizeLimits.cpp: Added compile asserts for data structures that didn't have cpp files.
       
   152         * wtf/text/StringImpl.cpp: Added a compile assert for StringImpl size.
       
   153 
       
   154 2010-05-21  Gavin Barraclough  <barraclough@apple.com>
       
   155 
       
   156         Reviewed by Oliver Hunt.
       
   157 
       
   158         Bug 39509 - Exceptions raised when JSString::value() is called not always properly thrown.
       
   159         Missing some CHECK_FOR_EXCEPTION()s, cleanup NativeError construction (adding a property
       
   160         via the prototype was inefficient, and whilst trivially true that the property is is not
       
   161         a rope - and thus couldn't except - it would be hard to prove this).
       
   162 
       
   163         * interpreter/Interpreter.cpp:
       
   164         (JSC::Interpreter::callEval):
       
   165         (JSC::Interpreter::privateExecute):
       
   166         * jit/JITStubs.cpp:
       
   167         (JSC::DEFINE_STUB_FUNCTION):
       
   168         * runtime/InternalFunction.cpp:
       
   169         (JSC::InternalFunction::name):
       
   170         (JSC::InternalFunction::displayName):
       
   171         * runtime/JSFunction.cpp:
       
   172         (JSC::JSFunction::name):
       
   173         (JSC::JSFunction::displayName):
       
   174         * runtime/JSGlobalObject.cpp:
       
   175         (JSC::JSGlobalObject::reset):
       
   176         * runtime/JSPropertyNameIterator.cpp:
       
   177         * runtime/JSPropertyNameIterator.h:
       
   178         * runtime/JSString.h:
       
   179         (JSC::RopeBuilder::tryGetValue):
       
   180         (JSC::JSString::getIndex):
       
   181         * runtime/NativeErrorConstructor.cpp:
       
   182         (JSC::NativeErrorConstructor::NativeErrorConstructor):
       
   183         * runtime/NativeErrorConstructor.h:
       
   184         * runtime/NativeErrorPrototype.cpp:
       
   185         (JSC::NativeErrorPrototype::NativeErrorPrototype):
       
   186         * runtime/NativeErrorPrototype.h:
       
   187         * runtime/StringPrototype.cpp:
       
   188         (JSC::stringProtoFuncReplace):
       
   189 
       
   190 2010-05-21  Gavin Barraclough  <barraclough@apple.com>
       
   191 
       
   192         Reviewed by NOBODY (build fix).
       
   193 
       
   194         Fix interpreter build.
       
   195 
       
   196         * interpreter/Interpreter.cpp:
       
   197         (JSC::Interpreter::privateExecute):
       
   198 
       
   199 2010-05-21  Geoffrey Garen  <ggaren@apple.com>
       
   200 
       
   201         Reviewed by Gavin Barraclough.
       
   202 
       
   203         Split out JITCall32_64.cpp, and tightened up some #ifdefs in the hopes
       
   204         of improving compile times.
       
   205         https://bugs.webkit.org/show_bug.cgi?id=39507
       
   206 
       
   207         * JavaScriptCore.xcodeproj/project.pbxproj:
       
   208         * jit/JIT.cpp:
       
   209         * jit/JITArithmetic.cpp:
       
   210         * jit/JITArithmetic32_64.cpp:
       
   211         * jit/JITCall.cpp:
       
   212         * jit/JITCall32_64.cpp: Copied from jit/JITCall.cpp.
       
   213         * jit/JITOpcodes.cpp:
       
   214         * jit/JITOpcodes32_64.cpp:
       
   215         * jit/JITPropertyAccess.cpp:
       
   216         * jit/JITPropertyAccess32_64.cpp:
       
   217         * jit/JITStubs.cpp:
       
   218 
       
   219 2010-05-21  Csaba Osztrogonác  <ossy@webkit.org>
       
   220 
       
   221         Unreviewed buildfix for Qt after r59941.
       
   222 
       
   223         * JavaScriptCore.pro: missing runtime/JSObjectWithGlobalObject.cpp added to SOURCES.
       
   224 
       
   225 2010-05-21  Oliver Hunt  <oliver@apple.com>
       
   226 
       
   227         Windows build fix #3
       
   228 
       
   229         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
   230 
       
   231 2010-05-21  Oliver Hunt  <oliver@apple.com>
       
   232 
       
   233         Windows build fix #2
       
   234 
       
   235         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
   236 
       
   237 2010-05-21  Oliver Hunt  <oliver@apple.com>
       
   238 
       
   239         Windows build fix #1
       
   240 
       
   241         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
   242 
       
   243 2010-05-21  Oliver Hunt  <oliver@apple.com>
       
   244 
       
   245         Reviewed by Geoffrey Garen.
       
   246 
       
   247         All callable objects should have a global object reference
       
   248         https://bugs.webkit.org/show_bug.cgi?id=39495
       
   249 
       
   250         All objects that may ever return a value other CallTypeNone
       
   251         or ConstructTypeNone now get a global object in their constructor
       
   252         and store that in their first anonymous slot.  We add a new type
       
   253         JSObjectWithGlobalObject to allow us to share this logic as much
       
   254         as possible, however some objects have specific inheritance 
       
   255         requirements so we can't just use it universally.
       
   256 
       
   257         To enforce this requirement JSValue::getCallData and getConstructData
       
   258         make use of a new "isValidCallee" function to assert that any object
       
   259         that returns a value other than CallType/ConstructTypeNone has a
       
   260         global object in anonymous slot 0.
       
   261 
       
   262         In order to ensure that static function slots are converted into
       
   263         function objects with the correct global object, all prototype objects
       
   264         and other classes with static function slots also gain a global object
       
   265         reference.  Happily this fixes the long standing issue where host
       
   266         function objects get a prototype from the lexical global object of the
       
   267         first function that calls them, instead of the global object that they
       
   268         are defined on.
       
   269 
       
   270         * API/JSCallbackConstructor.cpp:
       
   271         (JSC::JSCallbackConstructor::JSCallbackConstructor):
       
   272         * API/JSCallbackConstructor.h:
       
   273         * API/JSCallbackFunction.cpp:
       
   274         (JSC::JSCallbackFunction::JSCallbackFunction):
       
   275         * API/JSCallbackFunction.h:
       
   276         * API/JSCallbackObject.cpp:
       
   277         (JSC::):
       
   278         * API/JSCallbackObject.h:
       
   279         * API/JSCallbackObjectFunctions.h:
       
   280         (JSC::::JSCallbackObject):
       
   281         (JSC::::staticFunctionGetter):
       
   282         * API/JSClassRef.cpp:
       
   283         (OpaqueJSClass::prototype):
       
   284         * API/JSContextRef.cpp:
       
   285         * API/JSObjectRef.cpp:
       
   286         (JSObjectMake):
       
   287         (JSObjectMakeFunctionWithCallback):
       
   288         (JSObjectMakeConstructor):
       
   289         (JSObjectGetPrivate):
       
   290         (JSObjectSetPrivate):
       
   291         (JSObjectGetPrivateProperty):
       
   292         (JSObjectSetPrivateProperty):
       
   293         (JSObjectDeletePrivateProperty):
       
   294         * API/JSValueRef.cpp:
       
   295         (JSValueIsObjectOfClass):
       
   296         * API/JSWeakObjectMapRefPrivate.cpp:
       
   297         * CMakeLists.txt:
       
   298         * GNUmakefile.am:
       
   299         * JavaScriptCore.exp:
       
   300         * JavaScriptCore.gypi:
       
   301         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
   302         * JavaScriptCore.xcodeproj/project.pbxproj:
       
   303         * interpreter/Interpreter.cpp:
       
   304         (JSC::Interpreter::privateExecute):
       
   305         * jit/JITStubs.cpp:
       
   306         (JSC::DEFINE_STUB_FUNCTION):
       
   307         * jsc.cpp:
       
   308         (GlobalObject::GlobalObject):
       
   309         * runtime/ArrayConstructor.cpp:
       
   310         (JSC::ArrayConstructor::ArrayConstructor):
       
   311         * runtime/ArrayConstructor.h:
       
   312         * runtime/ArrayPrototype.cpp:
       
   313         (JSC::ArrayPrototype::ArrayPrototype):
       
   314         * runtime/ArrayPrototype.h:
       
   315         (JSC::ArrayPrototype::createStructure):
       
   316         * runtime/BooleanConstructor.cpp:
       
   317         (JSC::BooleanConstructor::BooleanConstructor):
       
   318         * runtime/BooleanConstructor.h:
       
   319         * runtime/BooleanPrototype.cpp:
       
   320         (JSC::BooleanPrototype::BooleanPrototype):
       
   321         * runtime/BooleanPrototype.h:
       
   322         * runtime/DateConstructor.cpp:
       
   323         (JSC::DateConstructor::DateConstructor):
       
   324         * runtime/DateConstructor.h:
       
   325         * runtime/DatePrototype.cpp:
       
   326         (JSC::DatePrototype::DatePrototype):
       
   327         * runtime/DatePrototype.h:
       
   328         * runtime/ErrorConstructor.cpp:
       
   329         (JSC::ErrorConstructor::ErrorConstructor):
       
   330         * runtime/ErrorConstructor.h:
       
   331         * runtime/ErrorPrototype.cpp:
       
   332         (JSC::ErrorPrototype::ErrorPrototype):
       
   333         * runtime/ErrorPrototype.h:
       
   334         * runtime/FunctionConstructor.cpp:
       
   335         (JSC::FunctionConstructor::FunctionConstructor):
       
   336         * runtime/FunctionConstructor.h:
       
   337         * runtime/FunctionPrototype.cpp:
       
   338         (JSC::FunctionPrototype::FunctionPrototype):
       
   339         (JSC::FunctionPrototype::addFunctionProperties):
       
   340         * runtime/FunctionPrototype.h:
       
   341         * runtime/GlobalEvalFunction.cpp:
       
   342         (JSC::GlobalEvalFunction::GlobalEvalFunction):
       
   343         * runtime/GlobalEvalFunction.h:
       
   344         * runtime/InternalFunction.cpp:
       
   345         (JSC::InternalFunction::InternalFunction):
       
   346         * runtime/InternalFunction.h:
       
   347         * runtime/JSCell.h:
       
   348         (JSC::JSValue::getCallData):
       
   349         (JSC::JSValue::getConstructData):
       
   350         * runtime/JSFunction.cpp:
       
   351         (JSC::JSFunction::JSFunction):
       
   352         * runtime/JSFunction.h:
       
   353         * runtime/JSGlobalObject.cpp:
       
   354         (JSC::JSGlobalObject::reset):
       
   355         * runtime/JSGlobalObject.h:
       
   356         (JSC::JSGlobalObject::JSGlobalObject):
       
   357         * runtime/JSONObject.cpp:
       
   358         (JSC::JSONObject::JSONObject):
       
   359         * runtime/JSONObject.h:
       
   360         * runtime/JSObject.h:
       
   361         * runtime/JSObjectWithGlobalObject.cpp: Added.
       
   362         (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
       
   363         * runtime/JSObjectWithGlobalObject.h: Added.
       
   364         (JSC::JSObjectWithGlobalObject::createStructure):
       
   365         (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
       
   366         * runtime/JSValue.cpp:
       
   367         (JSC::JSValue::isValidCallee):
       
   368         * runtime/JSValue.h:
       
   369         * runtime/Lookup.cpp:
       
   370         (JSC::setUpStaticFunctionSlot):
       
   371         * runtime/MathObject.cpp:
       
   372         (JSC::MathObject::MathObject):
       
   373         * runtime/MathObject.h:
       
   374         * runtime/NativeErrorConstructor.cpp:
       
   375         (JSC::NativeErrorConstructor::NativeErrorConstructor):
       
   376         * runtime/NativeErrorConstructor.h:
       
   377         * runtime/NativeErrorPrototype.cpp:
       
   378         (JSC::NativeErrorPrototype::NativeErrorPrototype):
       
   379         * runtime/NativeErrorPrototype.h:
       
   380         * runtime/NumberConstructor.cpp:
       
   381         (JSC::NumberConstructor::NumberConstructor):
       
   382         * runtime/NumberConstructor.h:
       
   383         * runtime/NumberPrototype.cpp:
       
   384         (JSC::NumberPrototype::NumberPrototype):
       
   385         * runtime/NumberPrototype.h:
       
   386         * runtime/ObjectConstructor.cpp:
       
   387         (JSC::ObjectConstructor::ObjectConstructor):
       
   388         * runtime/ObjectConstructor.h:
       
   389         * runtime/ObjectPrototype.cpp:
       
   390         (JSC::ObjectPrototype::ObjectPrototype):
       
   391         * runtime/ObjectPrototype.h:
       
   392         * runtime/PrototypeFunction.cpp:
       
   393         (JSC::PrototypeFunction::PrototypeFunction):
       
   394         * runtime/PrototypeFunction.h:
       
   395         * runtime/RegExpConstructor.cpp:
       
   396         (JSC::RegExpConstructor::RegExpConstructor):
       
   397         (JSC::constructRegExp):
       
   398         * runtime/RegExpConstructor.h:
       
   399         * runtime/RegExpObject.cpp:
       
   400         (JSC::RegExpObject::RegExpObject):
       
   401         * runtime/RegExpObject.h:
       
   402         * runtime/RegExpPrototype.cpp:
       
   403         (JSC::RegExpPrototype::RegExpPrototype):
       
   404         * runtime/RegExpPrototype.h:
       
   405         * runtime/StringConstructor.cpp:
       
   406         (JSC::StringConstructor::StringConstructor):
       
   407         * runtime/StringConstructor.h:
       
   408         * runtime/StringPrototype.cpp:
       
   409         (JSC::StringPrototype::StringPrototype):
       
   410         * runtime/StringPrototype.h:
       
   411 
       
   412 2010-05-21  Geoffrey Garen  <ggaren@apple.com>
       
   413 
       
   414         Reviewed by Oliver Hunt.
       
   415 
       
   416         Removed the unused entry in the CallFrame
       
   417         https://bugs.webkit.org/show_bug.cgi?id=39470
       
   418         
       
   419         Removed the unused entry in the CallFrame, and reordered CallFrame
       
   420         writes on the hot path to be in forwards order.
       
   421         
       
   422         SunSpider says 0.3% faster.
       
   423 
       
   424         * interpreter/RegisterFile.h:
       
   425         (JSC::RegisterFile::):
       
   426         * jit/JITCall.cpp:
       
   427         (JSC::JIT::compileOpCall):
       
   428 
       
   429 2010-05-21  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
   430 
       
   431         Reviewed by Kenneth Rohde Christiansen.
       
   432 
       
   433         Split the QScriptValue autotest into smaller chunks.
       
   434 
       
   435         File tst_qscriptvalue_generated.cpp was huge and it was difficult to compile
       
   436         it with MSVS2008, because of the code optimization.
       
   437 
       
   438         Tests were splited into a few files for better use of distributed
       
   439         compilation.
       
   440         Repeated calls to insert() and operator<<() where replaced by loops,
       
   441         that should reduce time of code optimizing.
       
   442 
       
   443         New files were generated by the same application, test logic wasn't changed.
       
   444 
       
   445         [Qt] The QScriptValue autotest should be refactored.
       
   446         https://bugs.webkit.org/show_bug.cgi?id=38987
       
   447 
       
   448         * qt/tests/qscriptvalue/qscriptvalue.pro:
       
   449         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
       
   450         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: Removed.
       
   451         * qt/tests/qscriptvalue/tst_qscriptvalue_generated_init.cpp: Added.
       
   452         (tst_QScriptValue::initScriptValues):
       
   453         * qt/tests/qscriptvalue/tst_qscriptvalue_generated_istype.cpp: Added.
       
   454         (tst_QScriptValue::isValid_initData):
       
   455         (tst_QScriptValue::isValid_makeData):
       
   456         (tst_QScriptValue::isValid_test):
       
   457         (tst_QScriptValue::isBool_initData):
       
   458         (tst_QScriptValue::isBool_makeData):
       
   459         (tst_QScriptValue::isBool_test):
       
   460         (tst_QScriptValue::isBoolean_initData):
       
   461         (tst_QScriptValue::isBoolean_makeData):
       
   462         (tst_QScriptValue::isBoolean_test):
       
   463         (tst_QScriptValue::isNumber_initData):
       
   464         (tst_QScriptValue::isNumber_makeData):
       
   465         (tst_QScriptValue::isNumber_test):
       
   466         (tst_QScriptValue::isFunction_initData):
       
   467         (tst_QScriptValue::isFunction_makeData):
       
   468         (tst_QScriptValue::isFunction_test):
       
   469         (tst_QScriptValue::isNull_initData):
       
   470         (tst_QScriptValue::isNull_makeData):
       
   471         (tst_QScriptValue::isNull_test):
       
   472         (tst_QScriptValue::isString_initData):
       
   473         (tst_QScriptValue::isString_makeData):
       
   474         (tst_QScriptValue::isString_test):
       
   475         (tst_QScriptValue::isUndefined_initData):
       
   476         (tst_QScriptValue::isUndefined_makeData):
       
   477         (tst_QScriptValue::isUndefined_test):
       
   478         (tst_QScriptValue::isObject_initData):
       
   479         (tst_QScriptValue::isObject_makeData):
       
   480         (tst_QScriptValue::isObject_test):
       
   481         * qt/tests/qscriptvalue/tst_qscriptvalue_generated_totype.cpp: Added.
       
   482         (tst_QScriptValue::toString_initData):
       
   483         (tst_QScriptValue::toString_makeData):
       
   484         (tst_QScriptValue::toString_test):
       
   485         (tst_QScriptValue::toNumber_initData):
       
   486         (tst_QScriptValue::toNumber_makeData):
       
   487         (tst_QScriptValue::toNumber_test):
       
   488         (tst_QScriptValue::toBool_initData):
       
   489         (tst_QScriptValue::toBool_makeData):
       
   490         (tst_QScriptValue::toBool_test):
       
   491         (tst_QScriptValue::toBoolean_initData):
       
   492         (tst_QScriptValue::toBoolean_makeData):
       
   493         (tst_QScriptValue::toBoolean_test):
       
   494         (tst_QScriptValue::toInteger_initData):
       
   495         (tst_QScriptValue::toInteger_makeData):
       
   496         (tst_QScriptValue::toInteger_test):
       
   497         (tst_QScriptValue::toInt32_initData):
       
   498         (tst_QScriptValue::toInt32_makeData):
       
   499         (tst_QScriptValue::toInt32_test):
       
   500         (tst_QScriptValue::toUInt32_initData):
       
   501         (tst_QScriptValue::toUInt32_makeData):
       
   502         (tst_QScriptValue::toUInt32_test):
       
   503         (tst_QScriptValue::toUInt16_initData):
       
   504         (tst_QScriptValue::toUInt16_makeData):
       
   505         (tst_QScriptValue::toUInt16_test):
       
   506 
       
   507 2010-05-21  Kwang Yul Seo  <skyul@company100.net>
       
   508 
       
   509         Reviewed by Eric Seidel.
       
   510 
       
   511         Add COMPILER(MSVC) guard for strnstr
       
   512         https://bugs.webkit.org/show_bug.cgi?id=39397
       
   513 
       
   514         BREWMP uses MSVC for simulator build, but it is not OS(WINDOWS).
       
   515         Add COMPILER(MSVC) guard for strnstr.
       
   516 
       
   517         * wtf/StringExtras.h:
       
   518 
       
   519 2010-05-21  Kwang Yul Seo  <skyul@company100.net>
       
   520 
       
   521         Reviewed by Eric Seidel.
       
   522 
       
   523         [BREWMP] Add !PLATFORM(BREWMP) guard for isMainThread
       
   524         https://bugs.webkit.org/show_bug.cgi?id=39396
       
   525 
       
   526         BREWMP sets ENABLE(SINGLE_THREADED), so it uses isMainThread from ThreadingNone.cpp.
       
   527         Exclude isMainThread in MainThread.cpp.
       
   528 
       
   529         * wtf/MainThread.cpp:
       
   530 
       
   531 2010-05-20  Kwang Yul Seo  <skyul@company100.net>
       
   532 
       
   533         Reviewed by Eric Seidel.
       
   534 
       
   535         [BREWMP] Use skia as BREW MP's graphics backend.
       
   536         https://bugs.webkit.org/show_bug.cgi?id=39407
       
   537 
       
   538         Define WTF_PLATFORM_SKIA=1 for BREW MP.
       
   539 
       
   540         * wtf/Platform.h:
       
   541 
       
   542 2010-05-20  Geoffrey Garen  <ggaren@apple.com>
       
   543 
       
   544         Reviewed by Beth Dakin.
       
   545 
       
   546         Fixed naming mixup: it's op_call_put_result, not ret_result.
       
   547 
       
   548         * bytecode/CodeBlock.cpp:
       
   549         (JSC::CodeBlock::dump):
       
   550         * interpreter/Interpreter.cpp:
       
   551         (JSC::Interpreter::privateExecute):
       
   552 
       
   553 2010-05-20  Geoffrey Garen  <ggaren@apple.com>
       
   554 
       
   555         Reviewed by Oliver Hunt.
       
   556 
       
   557         Whittling away at CodeBlock use: Removed a little wonkiness in closure lookup
       
   558         https://bugs.webkit.org/show_bug.cgi?id=39444
       
   559         
       
   560         Calculate all lookup depths at compile time. I'm not sure why we couldn't
       
   561         do this before, but whatever the reason, it seems to be gone now.
       
   562 
       
   563         * bytecompiler/BytecodeGenerator.cpp:
       
   564         (JSC::BytecodeGenerator::findScopedProperty):
       
   565         * bytecompiler/BytecodeGenerator.h:
       
   566         * interpreter/Interpreter.cpp:
       
   567         (JSC::Interpreter::resolveSkip):
       
   568         (JSC::Interpreter::resolveGlobalDynamic):
       
   569         (JSC::Interpreter::privateExecute):
       
   570         * jit/JITOpcodes.cpp:
       
   571         (JSC::JIT::emit_op_get_scoped_var):
       
   572         (JSC::JIT::emit_op_put_scoped_var):
       
   573         (JSC::JIT::emit_op_resolve_skip):
       
   574         (JSC::JIT::emit_op_resolve_global_dynamic):
       
   575         (JSC::JIT::emitSlow_op_resolve_global_dynamic):
       
   576         * jit/JITOpcodes32_64.cpp:
       
   577         (JSC::JIT::emit_op_get_scoped_var):
       
   578         (JSC::JIT::emit_op_put_scoped_var):
       
   579         (JSC::JIT::emit_op_resolve_skip):
       
   580 
       
   581 2010-05-20  Darin Adler  <darin@apple.com>
       
   582 
       
   583         Reviewed by Eric Seidel.
       
   584 
       
   585         Fix warnings seen on the buildbots today
       
   586         https://bugs.webkit.org/show_bug.cgi?id=39368
       
   587 
       
   588         * profiler/ProfileNode.cpp:
       
   589         (JSC::getCount): Removed unneeded initialization of global variable.
       
   590         These are all initialized to zero anyway, so no need to try to initialize
       
   591         it and get a warning.
       
   592 
       
   593         * wtf/CurrentTime.cpp:
       
   594         (WTF::currentTime): Removed unused global variable.
       
   595 
       
   596 2010-05-20  Geoffrey Garen  <ggaren@apple.com>
       
   597 
       
   598         Reviewed by Darin Adler.
       
   599 
       
   600         Removed some reliance on callFame[CodeBlock] by storing CodeBlock in a
       
   601         local variable in the Interpreter.
       
   602         https://bugs.webkit.org/show_bug.cgi?id=39447
       
   603 
       
   604         Small speedup on SunSpider in Interpreter mode.
       
   605 
       
   606         * interpreter/Interpreter.cpp:
       
   607         (JSC::Interpreter::privateExecute):
       
   608         * jsc.cpp:
       
   609         * wtf/Platform.h:
       
   610 
       
   611 2010-05-19  Gavin Barraclough  <barraclough@apple.com>
       
   612 
       
   613         Reviewed by Oliver Hunt.
       
   614 
       
   615         Bug 39408 - Unify JIT/interpreter return behaviour.
       
   616 
       
   617         Presently the JIT and the interpreter have differing implementations in how
       
   618         they handle storing the result of a function call back to the register file.
       
   619         In both cases the op_call ( / _eval / _varargs / op_construct) opcode has an
       
   620         operand indicating the VM register in which the result should be stored.
       
   621         The JIT plants code after the call to store the result, so the value will be
       
   622         stored as soon as the callee has returned.  In the interpreter the call
       
   623         passes the return value register id into the callee via the callee callframe,
       
   624         and the callee is responsible for writing the result back into its callers
       
   625         register file after it has restored the parents callframe pointer, but before
       
   626         returning.
       
   627 
       
   628         Instead, move the task of writing the call result to the register file into a
       
   629         new opcode (op_call_put_result), and after returning the callee should leave
       
   630         the return value in a canonical location.  In the case of the interpreter,
       
   631         this canonical location is a local variable in privateExecute
       
   632         (functionReturnValue), in the case of the JIT this is the normal return value
       
   633         registers (regT0, or regT1:regT0 in JSVALUE32_64).  op_call_put_result stores
       
   634         the result from the canonical location to the registerfile.
       
   635 
       
   636         In addition to unifying JIT & interpreter behaviour this change allows us to
       
   637         remove a slot from the callframe, omit the write of the result where the
       
   638         return value from the call is not used, and provides a 2% speedup on sunspider
       
   639         in the interpreter.
       
   640 
       
   641         * bytecode/CodeBlock.cpp:
       
   642         (JSC::CodeBlock::dump):
       
   643         * bytecode/Opcode.h:
       
   644         * bytecompiler/BytecodeGenerator.cpp:
       
   645         (JSC::BytecodeGenerator::emitCall):
       
   646         (JSC::BytecodeGenerator::emitCallVarargs):
       
   647         (JSC::BytecodeGenerator::emitConstruct):
       
   648         * bytecompiler/BytecodeGenerator.h:
       
   649         (JSC::BytecodeGenerator::finalDestinationOrIgnored):
       
   650         * bytecompiler/NodesCodegen.cpp:
       
   651         (JSC::NewExprNode::emitBytecode):
       
   652         (JSC::FunctionCallValueNode::emitBytecode):
       
   653         (JSC::FunctionCallResolveNode::emitBytecode):
       
   654         (JSC::FunctionCallBracketNode::emitBytecode):
       
   655         (JSC::FunctionCallDotNode::emitBytecode):
       
   656         (JSC::CallFunctionCallDotNode::emitBytecode):
       
   657         (JSC::ApplyFunctionCallDotNode::emitBytecode):
       
   658         * interpreter/CallFrame.h:
       
   659         (JSC::ExecState::init):
       
   660         (JSC::ExecState::noCaller):
       
   661         * interpreter/Interpreter.cpp:
       
   662         (JSC::Interpreter::dumpRegisters):
       
   663         (JSC::Interpreter::throwException):
       
   664         (JSC::Interpreter::privateExecute):
       
   665         * interpreter/RegisterFile.h:
       
   666         (JSC::RegisterFile::):
       
   667         * jit/JIT.cpp:
       
   668         (JSC::JIT::privateCompileMainPass):
       
   669         * jit/JIT.h:
       
   670         * jit/JITCall.cpp:
       
   671         (JSC::JIT::compileOpCallSetupArgs):
       
   672         (JSC::JIT::compileOpConstructSetupArgs):
       
   673         (JSC::JIT::emit_op_call_put_result):
       
   674         (JSC::JIT::compileOpCallVarargs):
       
   675         (JSC::JIT::compileOpCallVarargsSlowCase):
       
   676         (JSC::JIT::compileOpCall):
       
   677         (JSC::JIT::compileOpCallSlowCase):
       
   678         (JSC::JIT::compileOpCallVarargsSetupArgs):
       
   679 
       
   680 2010-05-20  Steve Block  <steveblock@google.com>
       
   681 
       
   682         Reviewed by Jeremy Orlow.
       
   683 
       
   684         Provide bindings for DeviceOrientation
       
   685         https://bugs.webkit.org/show_bug.cgi?id=39210
       
   686 
       
   687         Adds ENABLE_DEVICE_ORIENTATION to XCode project file, always disabled.
       
   688 
       
   689         * Configurations/FeatureDefines.xcconfig:
       
   690 
       
   691 2010-05-19  Gavin Barraclough  <barraclough@apple.com>
       
   692 
       
   693         Reviewed by Geoff Garen.
       
   694 
       
   695         Errk! rename op_constructor_ret as requested in review of Bug 39399.
       
   696 
       
   697         * bytecode/CodeBlock.cpp:
       
   698         (JSC::CodeBlock::dump):
       
   699         * bytecode/Opcode.h:
       
   700         * bytecompiler/BytecodeGenerator.cpp:
       
   701         (JSC::BytecodeGenerator::emitReturn):
       
   702         * interpreter/Interpreter.cpp:
       
   703         (JSC::Interpreter::privateExecute):
       
   704         * jit/JIT.cpp:
       
   705         (JSC::JIT::privateCompileMainPass):
       
   706         * jit/JIT.h:
       
   707         * jit/JITCall.cpp:
       
   708         (JSC::JIT::emit_op_ret_object_or_this):
       
   709         * jit/JITOpcodes.cpp:
       
   710         (JSC::JIT::emit_op_ret_object_or_this):
       
   711 
       
   712 2010-05-19  Gavin Barraclough  <barraclough@apple.com>
       
   713 
       
   714         Reviewed by Geoff Garen.
       
   715 
       
   716         Bug 39399 - Move responsibility for verifying constructors return objects from the caller to the callee.
       
   717         
       
   718         This is a necessary step to move object creation from caller to callee.
       
   719 
       
   720         * bytecode/CodeBlock.cpp:
       
   721         (JSC::CodeBlock::dump):
       
   722         * bytecode/Opcode.h:
       
   723         * bytecompiler/BytecodeGenerator.cpp:
       
   724         (JSC::BytecodeGenerator::BytecodeGenerator):
       
   725         (JSC::BytecodeGenerator::emitReturn):
       
   726         (JSC::BytecodeGenerator::emitConstruct):
       
   727         * bytecompiler/BytecodeGenerator.h:
       
   728         (JSC::BytecodeGenerator::isConstructor):
       
   729         * bytecompiler/NodesCodegen.cpp:
       
   730         (JSC::FunctionBodyNode::emitBytecode):
       
   731         * interpreter/Interpreter.cpp:
       
   732         (JSC::Interpreter::privateExecute):
       
   733         * jit/JIT.cpp:
       
   734         (JSC::JIT::privateCompileMainPass):
       
   735         (JSC::JIT::privateCompileSlowCases):
       
   736         * jit/JIT.h:
       
   737         * jit/JITCall.cpp:
       
   738         (JSC::JIT::emit_op_constructor_ret):
       
   739         * jit/JITOpcodes.cpp:
       
   740         (JSC::JIT::emit_op_constructor_ret):
       
   741 
       
   742 2010-05-19  Gavin Barraclough  <barraclough@apple.com>
       
   743 
       
   744         Reviewed by NOBODY (build fix).
       
   745 
       
   746         Fix windows build II.
       
   747 
       
   748         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
   749 
       
   750 2010-05-19  Gavin Barraclough  <barraclough@apple.com>
       
   751 
       
   752         Reviewed by NOBODY (build fix).
       
   753 
       
   754         Fix windows build.
       
   755 
       
   756         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
   757 
       
   758 2010-05-19  Gavin Barraclough  <barraclough@apple.com>
       
   759 
       
   760         Reviewed by Oliver Hunt.
       
   761 
       
   762         Bug 39393 - JSFunction need not be a subclass of InternalFunction.
       
   763 
       
   764         re-landing r59800.
       
   765 
       
   766         * JavaScriptCore.exp:
       
   767         * interpreter/Interpreter.cpp:
       
   768         (JSC::Interpreter::retrieveCaller):
       
   769         (JSC::Interpreter::findFunctionCallFrame):
       
   770         * interpreter/Interpreter.h:
       
   771         * profiler/Profiler.cpp:
       
   772         (JSC::Profiler::createCallIdentifier):
       
   773         * runtime/FunctionPrototype.cpp:
       
   774         (JSC::functionProtoFuncToString):
       
   775         * runtime/JSFunction.cpp:
       
   776         (JSC::):
       
   777         (JSC::JSFunction::JSFunction):
       
   778         (JSC::JSFunction::name):
       
   779         (JSC::JSFunction::displayName):
       
   780         (JSC::JSFunction::calculatedDisplayName):
       
   781         * runtime/JSFunction.h:
       
   782         * runtime/JSObject.cpp:
       
   783         (JSC::JSObject::putDirectFunction):
       
   784         (JSC::JSObject::putDirectFunctionWithoutTransition):
       
   785         * runtime/JSObject.h:
       
   786         * runtime/Lookup.cpp:
       
   787         (JSC::setUpStaticFunctionSlot):
       
   788 
       
   789 2010-05-19  Gavin Barraclough  <barraclough@apple.com>
       
   790 
       
   791         Reviewed by NOBODY (build fix).
       
   792 
       
   793         Reverting r59800, this b0rked stuff.
       
   794 
       
   795         * JavaScriptCore.exp:
       
   796         * interpreter/Interpreter.cpp:
       
   797         (JSC::Interpreter::retrieveCaller):
       
   798         (JSC::Interpreter::findFunctionCallFrame):
       
   799         * interpreter/Interpreter.h:
       
   800         * profiler/Profiler.cpp:
       
   801         (JSC::Profiler::createCallIdentifier):
       
   802         * runtime/FunctionPrototype.cpp:
       
   803         (JSC::functionProtoFuncToString):
       
   804         * runtime/JSFunction.cpp:
       
   805         (JSC::):
       
   806         (JSC::JSFunction::JSFunction):
       
   807         * runtime/JSFunction.h:
       
   808         * runtime/JSObject.cpp:
       
   809         * runtime/JSObject.h:
       
   810         * runtime/Lookup.cpp:
       
   811         (JSC::setUpStaticFunctionSlot):
       
   812 
       
   813 2010-05-19  Gavin Barraclough  <barraclough@apple.com>
       
   814 
       
   815         Reviewed by Oliver Hunt.
       
   816 
       
   817         Bug 39393 - JSFunction need not be a subclass of InternalFunction.
       
   818 
       
   819         This may prevent us from introducing a more useful parent class to
       
   820         JSFunction, e.g. a JSObject that holds an executable, which could
       
   821         also reference an eval or program executable.
       
   822 
       
   823         * JavaScriptCore.exp:
       
   824         * interpreter/Interpreter.cpp:
       
   825         (JSC::Interpreter::retrieveCaller):
       
   826         (JSC::Interpreter::findFunctionCallFrame):
       
   827         * interpreter/Interpreter.h:
       
   828         * profiler/Profiler.cpp:
       
   829         (JSC::Profiler::createCallIdentifier):
       
   830         * runtime/FunctionPrototype.cpp:
       
   831         (JSC::functionProtoFuncToString):
       
   832         * runtime/JSFunction.cpp:
       
   833         (JSC::):
       
   834         (JSC::JSFunction::JSFunction):
       
   835         (JSC::JSFunction::name):
       
   836         (JSC::JSFunction::displayName):
       
   837         (JSC::JSFunction::calculatedDisplayName):
       
   838         * runtime/JSFunction.h:
       
   839         * runtime/JSObject.cpp:
       
   840         (JSC::JSObject::putDirectFunction):
       
   841         (JSC::JSObject::putDirectFunctionWithoutTransition):
       
   842         * runtime/JSObject.h:
       
   843         * runtime/Lookup.cpp:
       
   844         (JSC::setUpStaticFunctionSlot):
       
   845 
       
   846 2010-05-19  Oliver Hunt  <oliver@apple.com>
       
   847 
       
   848         Reviewed by Geoffrey Garen.
       
   849 
       
   850         emitJumpIfNotJSCell should special case constant immediate values
       
   851         https://bugs.webkit.org/show_bug.cgi?id=39392
       
   852         <rdar://problem/8001324>
       
   853 
       
   854         Make emitJumpSlowCaseIfNotJSCell special case constant immediate
       
   855         values, in addition to the immediate JSCell optimisation.
       
   856 
       
   857         Also add assertions to make sure no one else produces code that
       
   858         attempts to load constants from the register file.
       
   859 
       
   860         * jit/JITInlineMethods.h:
       
   861         (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
       
   862         * jit/JSInterfaceJIT.h:
       
   863         (JSC::JSInterfaceJIT::emitJumpIfNotJSCell):
       
   864         (JSC::JSInterfaceJIT::emitLoadInt32):
       
   865         (JSC::JSInterfaceJIT::tagFor):
       
   866         (JSC::JSInterfaceJIT::payloadFor):
       
   867         (JSC::JSInterfaceJIT::emitLoadDouble):
       
   868         (JSC::JSInterfaceJIT::addressFor):
       
   869         * jit/ThunkGenerators.cpp:
       
   870 
       
   871 2010-05-19  Geoffrey Garen  <ggaren@apple.com>
       
   872 
       
   873         Reviewed by Sam Weinig.
       
   874 
       
   875         Slight refactoring to CodeBlock bytecode access
       
   876         https://bugs.webkit.org/show_bug.cgi?id=39384
       
   877 
       
   878         * bytecode/CodeBlock.h:
       
   879         (JSC::CodeBlock::bytecodeOffset):
       
   880         * interpreter/CallFrame.h:
       
   881         (JSC::ExecState::returnPC):
       
   882         * interpreter/Interpreter.cpp:
       
   883         (JSC::Interpreter::unwindCallFrame):
       
   884         (JSC::Interpreter::retrieveLastCaller): Moved bytecode access into a
       
   885         CodeBlock helper function. Changed CallFrame to accurately represent
       
   886         how the returnPC is stored in JIT vs Interpreter.
       
   887 
       
   888 2010-05-19  Geoffrey Garen  <ggaren@apple.com>
       
   889 
       
   890         Reviewed by Sam Weinig.
       
   891 
       
   892         Don't build the Interpreter into JIT builds.
       
   893         https://bugs.webkit.org/show_bug.cgi?id=39373
       
   894 
       
   895         SunSpider says no change.
       
   896 
       
   897         * interpreter/Interpreter.cpp:
       
   898         (JSC::Interpreter::privateExecute):
       
   899         * interpreter/Interpreter.h:
       
   900         * wtf/Platform.h:
       
   901 
       
   902 2010-05-19  Geoffrey Garen  <ggaren@apple.com>
       
   903 
       
   904         Reviewed by Gavin Barraclough.
       
   905         
       
   906         Standardized naming: "bytecode offset" wins; "bytecode index" loses.
       
   907         
       
   908         Also renamed getBytecodeOffset to bytecodeOffset, to match the WebKit
       
   909         naming style.
       
   910 
       
   911         * bytecode/CodeBlock.h:
       
   912         (JSC::CallReturnOffsetToBytecodeOffset::CallReturnOffsetToBytecodeOffset):
       
   913         (JSC::getCallReturnOffset):
       
   914         (JSC::CodeBlock::bytecodeOffset):
       
   915         (JSC::CodeBlock::callReturnIndexVector):
       
   916         * interpreter/Interpreter.cpp:
       
   917         (JSC::bytecodeOffsetForPC):
       
   918         * jit/JIT.cpp:
       
   919         (JSC::JIT::JIT):
       
   920         (JSC::JIT::privateCompileMainPass):
       
   921         (JSC::JIT::privateCompileLinkPass):
       
   922         (JSC::JIT::privateCompileSlowCases):
       
   923         (JSC::JIT::privateCompile):
       
   924         * jit/JIT.h:
       
   925         (JSC::CallRecord::CallRecord):
       
   926         (JSC::JumpTable::JumpTable):
       
   927         (JSC::SwitchRecord::SwitchRecord):
       
   928         * jit/JITCall.cpp:
       
   929         (JSC::JIT::compileOpCallVarargsSlowCase):
       
   930         (JSC::JIT::compileOpCall):
       
   931         * jit/JITInlineMethods.h:
       
   932         (JSC::JIT::emitNakedCall):
       
   933         (JSC::JIT::addSlowCase):
       
   934         (JSC::JIT::addJump):
       
   935         (JSC::JIT::emitJumpSlowToHot):
       
   936         (JSC::JIT::isLabeled):
       
   937         (JSC::JIT::map):
       
   938         (JSC::JIT::unmap):
       
   939         (JSC::JIT::isMapped):
       
   940         (JSC::JIT::getMappedPayload):
       
   941         (JSC::JIT::getMappedTag):
       
   942         (JSC::JIT::emitGetVirtualRegister):
       
   943         * jit/JITOpcodes.cpp:
       
   944         (JSC::JIT::emit_op_switch_imm):
       
   945         (JSC::JIT::emit_op_switch_char):
       
   946         (JSC::JIT::emit_op_switch_string):
       
   947         (JSC::JIT::emit_op_new_error):
       
   948         * jit/JITOpcodes32_64.cpp:
       
   949         (JSC::JIT::emit_op_mov):
       
   950         (JSC::JIT::emit_op_get_global_var):
       
   951         (JSC::JIT::emit_op_put_global_var):
       
   952         (JSC::JIT::emit_op_get_scoped_var):
       
   953         (JSC::JIT::emit_op_put_scoped_var):
       
   954         (JSC::JIT::emit_op_to_primitive):
       
   955         (JSC::JIT::emit_op_resolve_global):
       
   956         (JSC::JIT::emit_op_to_jsnumber):
       
   957         (JSC::JIT::emit_op_catch):
       
   958         (JSC::JIT::emit_op_switch_imm):
       
   959         (JSC::JIT::emit_op_switch_char):
       
   960         (JSC::JIT::emit_op_switch_string):
       
   961         (JSC::JIT::emit_op_new_error):
       
   962         (JSC::JIT::emit_op_convert_this):
       
   963         * jit/JITPropertyAccess.cpp:
       
   964         (JSC::JIT::emit_op_method_check):
       
   965         (JSC::JIT::emitSlow_op_method_check):
       
   966         * jit/JITPropertyAccess32_64.cpp:
       
   967         (JSC::JIT::emit_op_method_check):
       
   968         (JSC::JIT::emitSlow_op_method_check):
       
   969         (JSC::JIT::emit_op_get_by_val):
       
   970         (JSC::JIT::emit_op_get_by_id):
       
   971         (JSC::JIT::emit_op_get_by_pname):
       
   972         * jit/JITStubCall.h:
       
   973         (JSC::JITStubCall::call):
       
   974         * jit/JITStubs.cpp:
       
   975         (JSC::DEFINE_STUB_FUNCTION):
       
   976 
       
   977 2010-05-19  Peter Varga  <pvarga@inf.u-szeged.hu>
       
   978 
       
   979         Reviewed by Darin Adler.
       
   980 
       
   981         The backtrackParenthesesOnceEnd function should store the start position
       
   982         of the subpattern's non-greedy match at the place of the subpattern's
       
   983         start index in the output array instead of the place of the
       
   984         subpattern's end index.
       
   985         Add layout test for checking of non-greedy matching of subpattern in
       
   986         regular expressions.
       
   987         https://bugs.webkit.org/show_bug.cgi?id=39289
       
   988 
       
   989         * yarr/RegexInterpreter.cpp:
       
   990         (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd):
       
   991 
       
   992 2010-05-18  Gavin Barraclough  <barraclough@apple.com>
       
   993 
       
   994         Reviewed by Geoff Garen.
       
   995 
       
   996         Bug 39343 - Dynamically generate a native call thunk per NativeFunction
       
   997         
       
   998         https://bugs.webkit.org/show_bug.cgi?id=39252 regressed performance on i386,
       
   999         by adding an extra indirection to making a native call.  By introducing per-
       
  1000         NativeFunction thunks we can hard code the function pointer into the thunk
       
  1001         so that it need not be loaded from the callee.
       
  1002 
       
  1003         * jit/JIT.h:
       
  1004         (JSC::JIT::compileCTINativeCall):
       
  1005         * jit/JITOpcodes.cpp:
       
  1006         (JSC::JIT::privateCompileCTINativeCall):
       
  1007         * jit/JITOpcodes32_64.cpp:
       
  1008         (JSC::JIT::privateCompileCTINativeCall):
       
  1009         * jit/JITPropertyAccess.cpp:
       
  1010         (JSC::JIT::emitSlow_op_get_by_val):
       
  1011         * jit/JITPropertyAccess32_64.cpp:
       
  1012         (JSC::JIT::emitSlow_op_get_by_val):
       
  1013         * jit/JITStubs.cpp:
       
  1014         (JSC::JITThunks::ctiStub):
       
  1015         (JSC::JITThunks::hostFunctionStub):
       
  1016         * jit/JITStubs.h:
       
  1017         * jit/SpecializedThunkJIT.h:
       
  1018         (JSC::SpecializedThunkJIT::finalize):
       
  1019         * jit/ThunkGenerators.cpp:
       
  1020         (JSC::charCodeAtThunkGenerator):
       
  1021         (JSC::charAtThunkGenerator):
       
  1022         (JSC::fromCharCodeThunkGenerator):
       
  1023         (JSC::sqrtThunkGenerator):
       
  1024         (JSC::powThunkGenerator):
       
  1025         * runtime/JSFunction.cpp:
       
  1026         (JSC::JSFunction::JSFunction):
       
  1027         * runtime/JSGlobalData.cpp:
       
  1028         (JSC::JSGlobalData::getHostFunction):
       
  1029         * runtime/JSGlobalData.h:
       
  1030         (JSC::JSGlobalData::getCTIStub):
       
  1031         * runtime/Lookup.cpp:
       
  1032         (JSC::setUpStaticFunctionSlot):
       
  1033         * runtime/StringConstructor.cpp:
       
  1034         (JSC::StringConstructor::StringConstructor):
       
  1035         * wtf/Platform.h:
       
  1036 
       
  1037 2010-05-18  Geoffrey Garen  <ggaren@apple.com>
       
  1038 
       
  1039         Reviewed by Darin Adler.
       
  1040 
       
  1041         Simplified handling of 'arguments' -- 1.2% SunSpider speedup
       
  1042         https://bugs.webkit.org/show_bug.cgi?id=39200
       
  1043         
       
  1044         Removed the reserved OptionalCalleeArguments slot from the CallFrame.
       
  1045         Now, slots for 'arguments' are allocated and initialized only by
       
  1046         functions that might need them.
       
  1047         
       
  1048         * bytecode/CodeBlock.cpp:
       
  1049         (JSC::CodeBlock::dump): Updated for new bytecode operands.
       
  1050 
       
  1051         (JSC::CodeBlock::CodeBlock):
       
  1052         * bytecode/CodeBlock.h:
       
  1053         (JSC::unmodifiedArgumentsRegister): Added a helper function for mapping
       
  1054         from the arguments register to its unmodified counterpart.
       
  1055 
       
  1056         (JSC::CodeBlock::setArgumentsRegister):
       
  1057         (JSC::CodeBlock::argumentsRegister):
       
  1058         (JSC::CodeBlock::usesArguments):  Changed from a "usesArguments" bool to
       
  1059         an optional int index representing the arguments register.
       
  1060 
       
  1061         * bytecode/Opcode.h: Updated for new bytecode operands.
       
  1062 
       
  1063         * bytecompiler/BytecodeGenerator.cpp:
       
  1064         (JSC::BytecodeGenerator::addVar): Factored out a helper function for
       
  1065         allocating an anonymous var.
       
  1066 
       
  1067         (JSC::BytecodeGenerator::BytecodeGenerator): Merged / simplified some
       
  1068         arguments vs activation logic, and added code to allocate the arguments
       
  1069         registers when needed.
       
  1070 
       
  1071         (JSC::BytecodeGenerator::createArgumentsIfNecessary): Updated for new bytecode operands.
       
  1072 
       
  1073         (JSC::BytecodeGenerator::emitCallEval): No need to create the arguments
       
  1074         object before calling eval; the activation object will lazily create the
       
  1075         arguments object if eval resolves it.
       
  1076 
       
  1077         (JSC::BytecodeGenerator::emitReturn): Updated for new bytecode operands.
       
  1078 
       
  1079         (JSC::BytecodeGenerator::emitPushScope):
       
  1080         (JSC::BytecodeGenerator::emitPushNewScope): Ditto emitCallEval.
       
  1081 
       
  1082         * bytecompiler/BytecodeGenerator.h:
       
  1083         (JSC::BytecodeGenerator::addVar): Factored out a helper function for
       
  1084         allocating an anonymous var.
       
  1085 
       
  1086         (JSC::BytecodeGenerator::registerFor): No more need for special handling
       
  1087         of the arguments registers; they're allocated just like normal registers
       
  1088         now.
       
  1089 
       
  1090         * interpreter/CallFrame.h:
       
  1091         (JSC::ExecState::callerFrame):
       
  1092         (JSC::ExecState::init):
       
  1093         * interpreter/CallFrameClosure.h:
       
  1094         (JSC::CallFrameClosure::resetCallFrame): Nixed optionalCalleeArguments.
       
  1095 
       
  1096         * interpreter/Interpreter.cpp:
       
  1097         (JSC::Interpreter::dumpRegisters):
       
  1098         (JSC::Interpreter::unwindCallFrame):
       
  1099         (JSC::Interpreter::privateExecute):
       
  1100         (JSC::Interpreter::retrieveArguments): Opcodes accessing 'arguments' now
       
  1101         take operands specifying registers, just like all other opcodes.
       
  1102         JSActivation::copyRegisters is no longer responsible for tearing off the
       
  1103         arguments object; instead, the VM is responsible for both.
       
  1104 
       
  1105         Also, a behavior change: Each access to f.arguments creates a new object,
       
  1106         unless f itself uses 'arguments'. This matches Chrome, and is necessary
       
  1107         for the optimization. f.arguments is a nonstandard, deprecated feature,
       
  1108         so high fidelity to a given implementation is not necessarily a goal.
       
  1109         Also, as illustrated by the new test case, the identity of f.arguments
       
  1110         has been broken since 2008, except in the case where f itself accesses
       
  1111         f.arguments -- but nobody seemed to notice. So, hopefully this change won't
       
  1112         break the web.
       
  1113         
       
  1114         * interpreter/Register.h: Nixed the special arguments accessor. It's no
       
  1115         longer needed.
       
  1116 
       
  1117         * interpreter/RegisterFile.h:
       
  1118         (JSC::RegisterFile::):
       
  1119         * jit/JITCall.cpp:
       
  1120         (JSC::JIT::compileOpCallInitializeCallFrame):
       
  1121         (JSC::JIT::compileOpCall):
       
  1122         * jit/JITOpcodes.cpp:
       
  1123         (JSC::JIT::emit_op_tear_off_activation):
       
  1124         (JSC::JIT::emit_op_tear_off_arguments):
       
  1125         (JSC::JIT::emit_op_create_arguments):
       
  1126         (JSC::JIT::emit_op_init_arguments):
       
  1127         * jit/JITOpcodes32_64.cpp:
       
  1128         (JSC::JIT::emit_op_tear_off_activation):
       
  1129         (JSC::JIT::emit_op_tear_off_arguments):
       
  1130         (JSC::JIT::emit_op_create_arguments):
       
  1131         (JSC::JIT::emit_op_init_arguments): The actual optimization: Removed
       
  1132         OptionalCalleeArguments from the callframe slot. Now, it doesn't need
       
  1133         to be initialized for most calls.
       
  1134 
       
  1135         * jit/JITStubs.cpp:
       
  1136         (JSC::DEFINE_STUB_FUNCTION):
       
  1137         * jit/JITStubs.h:
       
  1138         (JSC::): Updated stubs to support arbitrary 'arguments' registers,
       
  1139         instead of hard-coding something in the call frame.
       
  1140 
       
  1141         * runtime/Arguments.h:
       
  1142         (JSC::JSActivation::copyRegisters): Removed some obfuscatory abstraction.
       
  1143 
       
  1144         * runtime/Executable.h:
       
  1145         (JSC::FunctionExecutable::generatedByteCode): Added a helper for accessing
       
  1146         the 'arguments' register. In a future patch, that kind of data should
       
  1147         probably move out of CodeBlock and into Executable.
       
  1148 
       
  1149         * runtime/JSActivation.cpp:
       
  1150         (JSC::JSActivation::getOwnPropertySlot):
       
  1151         (JSC::JSActivation::argumentsGetter):
       
  1152         * runtime/JSActivation.h: Simplified / fixed access to 'arguments' via
       
  1153         the activation object. It now implements the same behavior implemented
       
  1154         by optimized variable access in the VM. This simplifies some other
       
  1155         things, too -- like eval code generation.
       
  1156 
       
  1157 2010-05-18  Sam Weinig  <sam@webkit.org>
       
  1158 
       
  1159         Try to fix the windows build.
       
  1160 
       
  1161         * API/JSStringRefBSTR.cpp:
       
  1162 
       
  1163 2010-05-18  Anders Carlsson  <andersca@apple.com>
       
  1164 
       
  1165         Reviewed by Sam Weinig.
       
  1166 
       
  1167         Add an inlineCapacity template parameter to ListHashSet and use it to shrink the positioned object list hash set.
       
  1168         https://bugs.webkit.org/show_bug.cgi?id=39304
       
  1169         <rdar://problem/7998366>
       
  1170 
       
  1171         Add an inlineCapacity template parameter to ListHashSet.
       
  1172 
       
  1173         * wtf/ListHashSet.h:
       
  1174         (WTF::::ListHashSet):
       
  1175         (WTF::::operator):
       
  1176         (WTF::::swap):
       
  1177         (WTF::::~ListHashSet):
       
  1178         (WTF::::size):
       
  1179         (WTF::::capacity):
       
  1180         (WTF::::isEmpty):
       
  1181         (WTF::::begin):
       
  1182         (WTF::::end):
       
  1183         (WTF::::find):
       
  1184         (WTF::::contains):
       
  1185         (WTF::::add):
       
  1186         (WTF::::insertBefore):
       
  1187         (WTF::::remove):
       
  1188         (WTF::::clear):
       
  1189         (WTF::::unlinkAndDelete):
       
  1190         (WTF::::appendNode):
       
  1191         (WTF::::insertNodeBefore):
       
  1192         (WTF::::deleteAllNodes):
       
  1193         (WTF::::makeIterator):
       
  1194         (WTF::::makeConstIterator):
       
  1195         (WTF::deleteAllValues):
       
  1196 
       
  1197 2010-05-18  Gabor Loki  <loki@webkit.org>
       
  1198 
       
  1199         Reviewed by Darin Adler.
       
  1200 
       
  1201         Fix the interpreter after r59637
       
  1202         https://bugs.webkit.org/show_bug.cgi?id=39287
       
  1203 
       
  1204         * runtime/Executable.h:
       
  1205         * runtime/JSFunction.cpp:
       
  1206         (JSC::JSFunction::JSFunction):
       
  1207         (JSC::JSFunction::getCallData):
       
  1208         * runtime/JSGlobalData.cpp:
       
  1209         * runtime/JSGlobalData.h:
       
  1210 
       
  1211 2010-05-17  Gavin Barraclough  <barraclough@apple.com>
       
  1212 
       
  1213         Reviewed by Geoff Garen.
       
  1214 
       
  1215         Oops, meant ebx not eax there.  Fix Qt (and probably Win too).
       
  1216 
       
  1217         * jit/JITOpcodes32_64.cpp:
       
  1218 
       
  1219 2010-05-17  Gavin Barraclough  <barraclough@apple.com>
       
  1220 
       
  1221         Reviewed by Geoff Garen.
       
  1222 
       
  1223         Bug 39252 - Move host/native JSFunction's NativeFunction onto NativeExecutable.
       
  1224 
       
  1225         Currently host functions reuse JSFunction's ScopeChain as storage for their
       
  1226         NativeFunction (the C function pointer to the host function implementation).
       
  1227         Instead, move this onto NativeExecutable.  This will allow host functions to
       
  1228         have a scopechain (which will be implemented as a separate patch).
       
  1229 
       
  1230         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  1231         * jit/JIT.h:
       
  1232         * jit/JITCall.cpp:
       
  1233         (JSC::JIT::compileOpCallInitializeCallFrame):
       
  1234         (JSC::JIT::compileOpCall):
       
  1235         * jit/JITOpcodes.cpp:
       
  1236         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
  1237         * jit/JITOpcodes32_64.cpp:
       
  1238         * jit/JITPropertyAccess.cpp:
       
  1239         (JSC::JIT::stringGetByValStubGenerator):
       
  1240         (JSC::JIT::emitSlow_op_get_by_val):
       
  1241         * jit/JITPropertyAccess32_64.cpp:
       
  1242         (JSC::JIT::stringGetByValStubGenerator):
       
  1243         (JSC::JIT::emitSlow_op_get_by_val):
       
  1244         * jit/JITStubs.cpp:
       
  1245         (JSC::JITThunks::specializedThunk):
       
  1246         * jit/JITStubs.h:
       
  1247         (JSC::JITThunks::ctiNativeCall):
       
  1248         * jit/SpecializedThunkJIT.h:
       
  1249         (JSC::SpecializedThunkJIT::finalize):
       
  1250         * jit/ThunkGenerators.cpp:
       
  1251         (JSC::charCodeAtThunkGenerator):
       
  1252         (JSC::charAtThunkGenerator):
       
  1253         (JSC::fromCharCodeThunkGenerator):
       
  1254         (JSC::sqrtThunkGenerator):
       
  1255         (JSC::powThunkGenerator):
       
  1256         * jit/ThunkGenerators.h:
       
  1257         * runtime/Executable.h:
       
  1258         (JSC::NativeExecutable::create):
       
  1259         (JSC::NativeExecutable::function):
       
  1260         (JSC::NativeExecutable::NativeExecutable):
       
  1261         (JSC::JSFunction::nativeFunction):
       
  1262         * runtime/JSFunction.cpp:
       
  1263         (JSC::JSFunction::JSFunction):
       
  1264         (JSC::JSFunction::~JSFunction):
       
  1265         (JSC::JSFunction::markChildren):
       
  1266         (JSC::JSFunction::getCallData):
       
  1267         (JSC::JSFunction::call):
       
  1268         (JSC::JSFunction::getOwnPropertySlot):
       
  1269         (JSC::JSFunction::getConstructData):
       
  1270         (JSC::JSFunction::construct):
       
  1271         * runtime/JSFunction.h:
       
  1272         (JSC::JSFunction::scope):
       
  1273         * runtime/JSGlobalData.h:
       
  1274         (JSC::JSGlobalData::getThunk):
       
  1275         * runtime/Lookup.cpp:
       
  1276         (JSC::setUpStaticFunctionSlot):
       
  1277         * runtime/StringConstructor.cpp:
       
  1278         (JSC::StringConstructor::StringConstructor):
       
  1279 
       
  1280 2010-05-17  Patrick Gansterer  <paroga@paroga.com>
       
  1281 
       
  1282         Reviewed by Laszlo Gombos.
       
  1283 
       
  1284         [Qt] Remove WinCE endian dedection.
       
  1285         https://bugs.webkit.org/show_bug.cgi?id=38511
       
  1286 
       
  1287         Windows CE supports little-endian format only.
       
  1288         Correct dedection was added in r57804.
       
  1289 
       
  1290         * wtf/Platform.h:
       
  1291 
       
  1292 2010-05-16  Simon Fraser  <simon.fraser@apple.com>
       
  1293 
       
  1294         Reviewed by Darin Adler.
       
  1295 
       
  1296         Reduce the size of FunctionExecutable
       
  1297         https://bugs.webkit.org/show_bug.cgi?id=39180
       
  1298         
       
  1299         Change m_numVariables from a size_t to 31 bits in a bitfield,
       
  1300         packed with another bit for m_forceUsesArguments (which in turn
       
  1301         get packed with the base class).
       
  1302         
       
  1303         Reduces the size of FunctionExecutable from 160 to 152 bytes.
       
  1304 
       
  1305         * runtime/Executable.h:
       
  1306         (JSC::FunctionExecutable::variableCount):
       
  1307         (JSC::FunctionExecutable::FunctionExecutable):
       
  1308 
       
  1309 2010-05-15  Oliver Hunt  <oliver@apple.com>
       
  1310 
       
  1311         Reviewed by Maciej Stachowiak.
       
  1312 
       
  1313         Incorrect codegen for slowcase of < in 64-bit
       
  1314         https://bugs.webkit.org/show_bug.cgi?id=39151
       
  1315 
       
  1316         Call the correct stud for the slowcases of the < operator.
       
  1317 
       
  1318         * jit/JITArithmetic.cpp:
       
  1319         (JSC::JIT::emitSlow_op_jnless):
       
  1320         (JSC::JIT::emitSlow_op_jless):
       
  1321 
       
  1322 2010-05-15  Leo Yang  <leo.yang@torchmobile.com.cn>
       
  1323 
       
  1324         Reviewed by Darin Adler.
       
  1325 
       
  1326         Fix bug https://bugs.webkit.org/show_bug.cgi?id=38890
       
  1327 
       
  1328         * runtime/DatePrototype.cpp:
       
  1329         (JSC::formatLocaleDate):
       
  1330 
       
  1331 2010-05-15  Leandro Pereira  <leandro@profusion.mobi>
       
  1332 
       
  1333         Reviewed by Adam Treat.
       
  1334 
       
  1335         [EFL] Add build system for the EFL port.
       
  1336         http://webkit.org/b/37945
       
  1337 
       
  1338         * CMakeLists.txt: Added.
       
  1339         * CMakeListsEfl.txt: Added.
       
  1340         * config.h: Add conditional to look for cmakeconfig.h.
       
  1341         * jsc/CMakeLists.txt: Added.
       
  1342         * jsc/CMakeListsEfl.txt: Added.
       
  1343         * wtf/CMakeLists.txt: Added.
       
  1344         * wtf/CMakeListsEfl.txt: Added.
       
  1345 
       
  1346 2010-05-15  Chao-ying Fu  <fu@mips.com>
       
  1347 
       
  1348         Reviewed by Oliver Hunt.
       
  1349 
       
  1350         Update MIPS JIT for unsigned right shift, Math.sqrt, load16
       
  1351         https://bugs.webkit.org/show_bug.cgi?id=38412
       
  1352 
       
  1353         Fixed MIPS build failure.
       
  1354 
       
  1355         * assembler/MIPSAssembler.h:
       
  1356         (JSC::MIPSAssembler::srl):
       
  1357         (JSC::MIPSAssembler::srlv):
       
  1358         (JSC::MIPSAssembler::sqrtd):
       
  1359         * assembler/MacroAssemblerMIPS.h:
       
  1360         (JSC::MacroAssemblerMIPS::urshift32):
       
  1361         (JSC::MacroAssemblerMIPS::sqrtDouble):
       
  1362         (JSC::MacroAssemblerMIPS::load16):
       
  1363         (JSC::MacroAssemblerMIPS::supportsFloatingPointSqrt):
       
  1364         * jit/JSInterfaceJIT.h:
       
  1365 
       
  1366 2010-05-15  Ilya Tikhonovsky  <loislo@chromium.org>
       
  1367 
       
  1368         Reviewed by Geoffrey Garen.
       
  1369 
       
  1370         WebInspector: JSC Should provide heap size info for Timeline panel.
       
  1371         https://bugs.webkit.org/show_bug.cgi?id=38420
       
  1372 
       
  1373         * JavaScriptCore.exp:
       
  1374         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  1375         * runtime/Collector.cpp:
       
  1376         (JSC::Heap::size):
       
  1377         * runtime/Collector.h:
       
  1378 
       
  1379 2010-05-15  Dave Tapuska  <dtapuska@rim.com>
       
  1380 
       
  1381         Reviewed by Darin Adler.
       
  1382 
       
  1383         Add a new define for we need strict arena alignment. ARMv5 with
       
  1384         double word instructions set this value.
       
  1385 
       
  1386         * wtf/Platform.h:
       
  1387 
       
  1388 2010-05-14  Stephanie Lewis  <slewis@apple.com>
       
  1389 
       
  1390         Rubber-stamped by Mark Rowe.
       
  1391 
       
  1392         Update order files.
       
  1393 
       
  1394         * JavaScriptCore.order:
       
  1395 
       
  1396 2010-05-14  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  1397 
       
  1398         Reviewed by Kenneth Rohde Christiansen.
       
  1399 
       
  1400         Implementation of QtScript API that provide method to convert a value to an object.
       
  1401 
       
  1402         [Qt] QtScript is missing toObject API
       
  1403         https://bugs.webkit.org/show_bug.cgi?id=36594
       
  1404 
       
  1405         * qt/api/qscriptengine.cpp:
       
  1406         (QScriptEngine::toObject):
       
  1407         * qt/api/qscriptengine.h:
       
  1408         * qt/api/qscriptvalue.cpp:
       
  1409         (QScriptValue::toObject):
       
  1410         * qt/api/qscriptvalue.h:
       
  1411         * qt/api/qscriptvalue_p.h:
       
  1412         (QScriptValuePrivate::toObject):
       
  1413         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
       
  1414         (tst_QScriptEngine::toObject):
       
  1415         (tst_QScriptEngine::toObjectTwoEngines):
       
  1416         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
       
  1417         (tst_QScriptValue::toObjectSimple):
       
  1418         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
       
  1419 
       
  1420 2010-05-14  Chao-ying Fu  <fu@mips.com>
       
  1421 
       
  1422         Reviewed by Oliver Hunt.
       
  1423 
       
  1424         String Indexing Failure on JSVALUE32 targets
       
  1425         https://bugs.webkit.org/show_bug.cgi?id=39034
       
  1426 
       
  1427         Remove zero-extend/shift-right code on regT1, because we already have
       
  1428         it in emit_op_get_by_val().
       
  1429 
       
  1430         * jit/JITPropertyAccess.cpp:
       
  1431         (JSC::JIT::stringGetByValStubGenerator):
       
  1432 
       
  1433 2010-05-10  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  1434 
       
  1435         Reviewed by Alexey Proskuryakov.
       
  1436 
       
  1437         Fix a VS2010 assert in std::copy
       
  1438         https://bugs.webkit.org/show_bug.cgi?id=38630
       
  1439 
       
  1440         The assert complains that the output iterator is null.
       
  1441 
       
  1442         * wtf/Vector.h:
       
  1443         (WTF::::operator):
       
  1444 
       
  1445 2010-05-13  Maciej Stachowiak  <mjs@apple.com>
       
  1446 
       
  1447         No review, attempted build fix.
       
  1448 
       
  1449         Try to fix Tiger build with some gratuitous initialization of
       
  1450         seemingly uninitialized variables.
       
  1451 
       
  1452         * wtf/text/StringImpl.h:
       
  1453         (WebCore::StringImpl::tryCreateUninitialized):
       
  1454 
       
  1455 2010-05-13  Maciej Stachowiak  <mjs@apple.com>
       
  1456 
       
  1457         Reviewed by Mark Rowe.
       
  1458 
       
  1459         Various JavaScript string optimizations
       
  1460         https://bugs.webkit.org/show_bug.cgi?id=39051
       
  1461 
       
  1462         Approximately 1% SunSpider speedup.
       
  1463         
       
  1464         * runtime/ArrayPrototype.cpp:
       
  1465         (JSC::arrayProtoFuncJoin): Remove branches from the hot code path
       
  1466         by moving the first pass outside the loop, and duplicating the hot loop
       
  1467         to extract the loop-invariant branch.
       
  1468         * runtime/RegExp.cpp:
       
  1469         (JSC::RegExp::match): resize ovector to 0 instead of clearing to avoid
       
  1470         thrash in case of large matches.
       
  1471         * runtime/RegExpConstructor.h:
       
  1472         (JSC::RegExpConstructor::performMatch): Mark ALWAYS_INLINE to make the
       
  1473         compiler respect our authority.
       
  1474         * runtime/StringPrototype.cpp:
       
  1475         (JSC::jsSpliceSubstringsWithSeparators): Inline.
       
  1476         (JSC::stringProtoFuncSubstring): Rewrite boundary condition checks to
       
  1477         reduce the number of floating point comparisons and branches.
       
  1478 
       
  1479 2010-05-12  Gavin Barraclough  <barraclough@apple.com>
       
  1480 
       
  1481         Reviewed by Oliver Hunt.
       
  1482 
       
  1483         https://bugs.webkit.org/show_bug.cgi?id=39039
       
  1484         Provide support for separate bytecode/JIT code translations for call/construct usage
       
  1485         This will allow us to produce code generated specifically for use as a constructor, not for general function use.
       
  1486 
       
  1487         * bytecode/CodeBlock.cpp:
       
  1488         (JSC::CodeBlock::CodeBlock):
       
  1489         (JSC::CodeBlock::unlinkCallers):
       
  1490         * bytecode/CodeBlock.h:
       
  1491         (JSC::CodeBlock::getBytecodeIndex):
       
  1492         (JSC::CodeBlock::getJITCode):
       
  1493         (JSC::CodeBlock::executablePool):
       
  1494         (JSC::GlobalCodeBlock::GlobalCodeBlock):
       
  1495         (JSC::FunctionCodeBlock::FunctionCodeBlock):
       
  1496         * interpreter/Interpreter.cpp:
       
  1497         (JSC::Interpreter::executeCall):
       
  1498         (JSC::Interpreter::executeConstruct):
       
  1499         (JSC::Interpreter::prepareForRepeatCall):
       
  1500         (JSC::Interpreter::execute):
       
  1501         (JSC::Interpreter::privateExecute):
       
  1502         * interpreter/Interpreter.h:
       
  1503         * jit/JIT.cpp:
       
  1504         (JSC::JIT::unlinkCallOrConstruct):
       
  1505         (JSC::JIT::linkConstruct):
       
  1506         * jit/JIT.h:
       
  1507         * jit/JITCall.cpp:
       
  1508         (JSC::JIT::compileOpCall):
       
  1509         (JSC::JIT::compileOpCallSlowCase):
       
  1510         * jit/JITOpcodes.cpp:
       
  1511         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
  1512         * jit/JITOpcodes32_64.cpp:
       
  1513         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
  1514         * jit/JITPropertyAccess.cpp:
       
  1515         (JSC::JIT::emitSlow_op_get_by_val):
       
  1516         * jit/JITPropertyAccess32_64.cpp:
       
  1517         (JSC::JIT::emitSlow_op_get_by_val):
       
  1518         * jit/JITStubs.cpp:
       
  1519         (JSC::DEFINE_STUB_FUNCTION):
       
  1520         * jit/JITStubs.h:
       
  1521         (JSC::JITThunks::ctiVirtualConstructLink):
       
  1522         (JSC::JITThunks::ctiVirtualConstruct):
       
  1523         (JSC::):
       
  1524         * jit/SpecializedThunkJIT.h:
       
  1525         (JSC::SpecializedThunkJIT::finalize):
       
  1526         * runtime/Arguments.h:
       
  1527         (JSC::JSActivation::copyRegisters):
       
  1528         * runtime/ArrayPrototype.cpp:
       
  1529         (JSC::isNumericCompareFunction):
       
  1530         * runtime/Executable.cpp:
       
  1531         (JSC::FunctionExecutable::~FunctionExecutable):
       
  1532         (JSC::FunctionExecutable::compileForCall):
       
  1533         (JSC::FunctionExecutable::compileForConstruct):
       
  1534         (JSC::EvalExecutable::generateJITCode):
       
  1535         (JSC::ProgramExecutable::generateJITCode):
       
  1536         (JSC::FunctionExecutable::generateJITCodeForCall):
       
  1537         (JSC::FunctionExecutable::generateJITCodeForConstruct):
       
  1538         (JSC::FunctionExecutable::markAggregate):
       
  1539         (JSC::FunctionExecutable::reparseExceptionInfo):
       
  1540         (JSC::EvalExecutable::reparseExceptionInfo):
       
  1541         (JSC::FunctionExecutable::recompile):
       
  1542         * runtime/Executable.h:
       
  1543         (JSC::ExecutableBase::ExecutableBase):
       
  1544         (JSC::ExecutableBase::isHostFunction):
       
  1545         (JSC::ExecutableBase::generatedJITCodeForCall):
       
  1546         (JSC::ExecutableBase::generatedJITCodeForConstruct):
       
  1547         (JSC::NativeExecutable::NativeExecutable):
       
  1548         (JSC::EvalExecutable::jitCode):
       
  1549         (JSC::ProgramExecutable::jitCode):
       
  1550         (JSC::FunctionExecutable::bytecodeForCall):
       
  1551         (JSC::FunctionExecutable::isGeneratedForCall):
       
  1552         (JSC::FunctionExecutable::generatedBytecodeForCall):
       
  1553         (JSC::FunctionExecutable::bytecodeForConstruct):
       
  1554         (JSC::FunctionExecutable::isGeneratedForConstruct):
       
  1555         (JSC::FunctionExecutable::generatedBytecodeForConstruct):
       
  1556         (JSC::FunctionExecutable::symbolTable):
       
  1557         (JSC::FunctionExecutable::FunctionExecutable):
       
  1558         (JSC::FunctionExecutable::jitCodeForCall):
       
  1559         (JSC::FunctionExecutable::jitCodeForConstruct):
       
  1560         * runtime/JSActivation.h:
       
  1561         (JSC::JSActivation::JSActivationData::JSActivationData):
       
  1562         * runtime/JSFunction.cpp:
       
  1563         (JSC::JSFunction::~JSFunction):
       
  1564         (JSC::JSFunction::call):
       
  1565         (JSC::JSFunction::construct):
       
  1566         * runtime/JSGlobalData.cpp:
       
  1567         (JSC::JSGlobalData::numericCompareFunction):
       
  1568 
       
  1569 2010-05-12  Oliver Hunt  <oliver@apple.com>
       
  1570 
       
  1571         build fix
       
  1572 
       
  1573         <rdar://problem/7977960> REGRESSION (r59282): Tiger PPC build broken
       
  1574 
       
  1575         * runtime/UString.h:
       
  1576         (JSC::tryMakeString):
       
  1577 
       
  1578 2010-05-12  Oliver Hunt  <oliver@apple.com>
       
  1579 
       
  1580         Reviewed by Gavin Barraclough.
       
  1581 
       
  1582         <rdar://7969718> Incorrect 32-bit codegen for op_jnlesseq
       
  1583         https://bugs.webkit.org/show_bug.cgi?id=39038
       
  1584 
       
  1585         Correct the use of incorrect comparison operators.
       
  1586 
       
  1587         * jit/JITArithmetic32_64.cpp:
       
  1588         (JSC::JIT::emit_op_jlesseq):
       
  1589         (JSC::JIT::emitBinaryDoubleOp):
       
  1590 
       
  1591 2010-05-12  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
       
  1592 
       
  1593         Reviewed by Eric Seidel.
       
  1594 
       
  1595         JavaScriptCore: fix build when some optimizations are disabled
       
  1596         https://bugs.webkit.org/show_bug.cgi?id=38800
       
  1597 
       
  1598         Remove outdated UNUSED_PARAMs when using JIT but with
       
  1599         ENABLE_JIT_OPTIMIZE_CALL and ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS
       
  1600         disabled.
       
  1601 
       
  1602         * jit/JITOpcodes.cpp:
       
  1603         * jit/JITOpcodes32_64.cpp:
       
  1604 
       
  1605 2010-05-12  Oliver Hunt  <oliver@apple.com>
       
  1606 
       
  1607         Reviewed by Gavin Barraclough.
       
  1608 
       
  1609         Work around GCC stupidity by either explicitly inlining or by
       
  1610         using ALWAYS_INLINE
       
  1611 
       
  1612         * runtime/StringPrototype.cpp:
       
  1613         (JSC::stringProtoFuncReplace):
       
  1614         * runtime/UString.h:
       
  1615         (JSC::UString::~UString):
       
  1616         * wtf/RefPtr.h:
       
  1617         (WTF::RefPtr::RefPtr):
       
  1618         (WTF::RefPtr::~RefPtr):
       
  1619         * wtf/text/StringImpl.h:
       
  1620         (WebCore::StringImpl::create):
       
  1621         (WebCore::StringImpl::tryCreateUninitialized):
       
  1622 
       
  1623 2010-05-12  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  1624 
       
  1625         Reviewed by Kenneth Rohde Christiansen.
       
  1626 
       
  1627         [Qt] Detect debug mode consistently
       
  1628         https://bugs.webkit.org/show_bug.cgi?id=38863
       
  1629 
       
  1630         * JavaScriptCore.pri:
       
  1631         * JavaScriptCore.pro:
       
  1632         * jsc.pro:
       
  1633         * qt/api/QtScript.pro:
       
  1634 
       
  1635 2010-05-12  Peter Varga  <pvarga@inf.u-szeged.hu>
       
  1636 
       
  1637         Reviewed by Gavin Barraclough.
       
  1638 
       
  1639         Remove a direct jump in generatePatternCharacterGreedy() and
       
  1640         generatePatternCharacterClassGreedy() functions if quantityCount of the term
       
  1641         is unlimited.
       
  1642         https://bugs.webkit.org/show_bug.cgi?id=38898
       
  1643 
       
  1644         * yarr/RegexJIT.cpp:
       
  1645         (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy):
       
  1646         (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy):
       
  1647 
       
  1648 2010-05-11  Geoffrey Garen  <ggaren@apple.com>
       
  1649 
       
  1650         Reviewed by Gavin Barraclough.
       
  1651 
       
  1652         Slight simplification to the calling convention: read RegisterFile::end()
       
  1653         from an absolute address, instead of from a pointer to the RegisterFile
       
  1654         on the stack.
       
  1655         
       
  1656         SunSpider reports no change.
       
  1657         
       
  1658         This should free us to remove the RegisterFile argument from the stack.
       
  1659 
       
  1660         * jit/JIT.cpp:
       
  1661         (JSC::JIT::privateCompile):
       
  1662 
       
  1663 2010-05-11  Brian Weinstein  <bweinstein@apple.com>
       
  1664 
       
  1665         Possible Gtk build fix - use ALWAYS_INLINE on functions that were inlined.
       
  1666 
       
  1667         * wtf/text/AtomicString.h:
       
  1668         (WebCore::AtomicString::add): Use ALWAYS_INLINE.
       
  1669         * wtf/text/WTFString.h:
       
  1670         (WebCore::String::length): Ditto.
       
  1671         (WebCore::String::isEmpty): Ditto.
       
  1672 
       
  1673 2010-05-11  Anders Carlsson  <andersca@apple.com>
       
  1674 
       
  1675         Reviewed by Sam Weinig.
       
  1676 
       
  1677         Add a compile time assert that sizeof(String) == sizeof(AtomicString).
       
  1678 
       
  1679         * wtf/text/AtomicString.cpp:
       
  1680 
       
  1681 2010-05-11  Anders Carlsson  <andersca@apple.com>
       
  1682 
       
  1683         Reviewed by Mark Rowe.
       
  1684 
       
  1685         https://bugs.webkit.org/show_bug.cgi?id=38961
       
  1686         Move some member variables around to reduce class sizes.
       
  1687         
       
  1688         Make AtomicString no longer inherit from FastAllocBase.
       
  1689 
       
  1690         Since AtomicString's first (and only) member variable, a RefPtr, also inherits from FastAllocBase this
       
  1691         was causing the size of AtomicString to contain sizeof(void*) bytes of padding.
       
  1692 
       
  1693         * wtf/text/AtomicString.h:
       
  1694 
       
  1695 2010-05-11  Brian Weinstein  <bweinstein@apple.com>
       
  1696 
       
  1697         Reviewed by Maciej Stachowiak.
       
  1698         Patch by Gavin Barraclough.
       
  1699         
       
  1700         Rest of REGRESSION (r57900-57919): 3% PLT Regression from moving strings into WTF.
       
  1701         https://bugs.webkit.org/show_bug.cgi?id=38930
       
  1702         <rdar://problem/7937188>
       
  1703         
       
  1704         Inline string functions that are commonly used in WTFString, CString, and AtomicString.
       
  1705 
       
  1706         * JavaScriptCore.exp: Remove exports of inline functions.
       
  1707         * wtf/text/AtomicString.cpp:
       
  1708         (WebCore::AtomicString::addSlowCase): Rename add to addSlowCase, and inline the fast path
       
  1709             of add.
       
  1710         * wtf/text/AtomicString.h:
       
  1711         (WebCore::AtomicString::add): Inline the fast path of add.
       
  1712         * wtf/text/CString.cpp: Inline implementation of data and length in the header.
       
  1713         * wtf/text/CString.h:
       
  1714         (WTF::CString::data): Inline implementation of data.
       
  1715         (WTF::CString::length): Inline implementation of length.
       
  1716         * wtf/text/WTFString.cpp: Remove implementations of functions to be inlined.
       
  1717         * wtf/text/WTFString.h:
       
  1718         (WebCore::String::String): Inline implementation.
       
  1719         (WebCore::String::length): Ditto.
       
  1720         (WebCore::String::characters): Ditto.
       
  1721         (WebCore::String::operator[]): Ditto.
       
  1722         (WebCore::String::isEmpty): Ditto.
       
  1723 
       
  1724 2010-05-11  Brian Weinstein  <bweinstein@apple.com>
       
  1725 
       
  1726         Reviewed by Steve Falkenburg and Jon Honeycutt.
       
  1727         Patch by Gavin Barraclough.
       
  1728         
       
  1729         REGRESSION (r57900-57919): 3% PLT Regression from moving strings into WTF.
       
  1730         https://bugs.webkit.org/show_bug.cgi?id=38930
       
  1731         <rdar://problem/7937188>
       
  1732         
       
  1733         When the String classes were moved from WebCore to WTF, it meant that on Windows, all operations
       
  1734         on Strings in WebCore had to cross a DLL boundary (from WebKit.dll to JavaScript.dll).
       
  1735         
       
  1736         We fix this by refactoring some of the WTF string code, so the code in AtomicString, StringImpl, and
       
  1737         WTFString can be built by both WebCore and WTF, and we don't need to talk across a DLL to do operations
       
  1738         on Strings.
       
  1739 
       
  1740         * GNUmakefile.am: Add new file to build system.
       
  1741         * JavaScriptCore.gypi: Ditto.
       
  1742         * JavaScriptCore.pro: Ditto.
       
  1743         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove string exports, because these are now
       
  1744             handled in WebCore.
       
  1745         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Remove the post-build step that was added
       
  1746             here (the post build step is in JavaScriptCoreCommon.vsprops).
       
  1747         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Copy the three cpp files that need to be compiled
       
  1748             by WebCore into the WebKitOutputDir directory.
       
  1749         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add the StringStatics file.
       
  1750         * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add the three WTF string cpp files to this project.
       
  1751         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Remove the need to link against WTF.lib (since jsc links against JavaScriptCore).
       
  1752         * JavaScriptCore.xcodeproj/project.pbxproj: Add the StringStatics file.
       
  1753         * wtf/text/AtomicString.cpp: Moved code to StringStatics.
       
  1754         * wtf/text/StringImpl.cpp: Ditto.
       
  1755         * wtf/text/StringStatics.cpp: Added. Move functions in WTF Strings that define static variables to here, so 
       
  1756             the rest of the files can be compiled in WebCore.
       
  1757         (WebCore::StringImpl::empty): Moved from StringImpl.cpp to here.
       
  1758         (WebCore::AtomicString::init): Moved from AtomicString.cpp to here.
       
  1759 
       
  1760 2010-05-11  Alice Liu  <alice.liu@apple.com>
       
  1761 
       
  1762         Rubber-stamped by Gavin Barraclough.
       
  1763 
       
  1764         Fix build error when enabling debugging block in WebKit win painting code
       
  1765 
       
  1766         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  1767 
       
  1768 2010-05-11  Mark Rowe  <mrowe@apple.com>
       
  1769 
       
  1770         Fix the world.
       
  1771 
       
  1772         In r59162 a change was made to WebCore's FeatureDefines.xcconfig that enabled FILE_READER and FILE_WRITER.
       
  1773         The author and reviewer of that patch ignored the carefully-worded warning at the top of that file asking
       
  1774         that changes to the file be kept in sync across JavaScriptCore, WebCore and WebKit, as well as being kept
       
  1775         in sync with build-webkit.  This led to WebCore and WebKit having different views of Document's vtable
       
  1776         and results in crashes in Safari shortly after launch when virtual function calls resulted in the wrong
       
  1777         function in WebCore being called.
       
  1778 
       
  1779         We fix this by bringing the FeatureDefines.xcconfig files in to sync.  Based on the ChangeLog message and
       
  1780         other changes in r59162 it appears that enabling FILE_WRITER was unintentional so that particular change
       
  1781         has been reverted.
       
  1782 
       
  1783         * Configurations/FeatureDefines.xcconfig:
       
  1784 
       
  1785 2010-05-11  Sheriff Bot  <webkit.review.bot@gmail.com>
       
  1786 
       
  1787         Unreviewed, rolling out r59171.
       
  1788         http://trac.webkit.org/changeset/59171
       
  1789         https://bugs.webkit.org/show_bug.cgi?id=38933
       
  1790 
       
  1791         "Broke the world" (Requested by bweinstein on #webkit).
       
  1792 
       
  1793         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  1794         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
  1795         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
       
  1796         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
       
  1797         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
       
  1798         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
       
  1799         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  1800         * wtf/text/AtomicString.cpp:
       
  1801         (WebCore::AtomicString::init):
       
  1802         * wtf/text/StringImpl.cpp:
       
  1803         (WebCore::StringImpl::empty):
       
  1804         * wtf/text/StringStatics.cpp: Removed.
       
  1805 
       
  1806 2010-05-11  Brian Weinstein  <bweinstein@apple.com>
       
  1807 
       
  1808         Reviewed by Steve Falkenburg.
       
  1809         Patch by Gavin Barraclough.
       
  1810         
       
  1811         REGRESSION (r57900-57919): 3% PLT Regression from moving strings into WTF.
       
  1812         https://bugs.webkit.org/show_bug.cgi?id=38930
       
  1813         <rdar://problem/7937188>
       
  1814         
       
  1815         When the String classes were moved from WebCore to WTF, it meant that on Windows, all operations
       
  1816         on Strings in WebCore had to cross a DLL boundary (from WebKit.dll to JavaScript.dll).
       
  1817         
       
  1818         We fix this by refactoring some of the WTF string code, so the code in AtomicString, StringImpl, and
       
  1819         WTFString can be built by both WebCore and WTF, and we don't need to talk across a DLL to do operations
       
  1820         on Strings.
       
  1821 
       
  1822         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove string exports, because these are now
       
  1823             handled in WebCore.
       
  1824         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Remove the post-build step that was added
       
  1825             here (the post build step is in JavaScriptCoreCommon.vsprops).
       
  1826         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Copy the three cpp files that need to be compiled
       
  1827             by WebCore into the WebKitOutputDir directory.
       
  1828         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add the StringStatics file.
       
  1829         * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add the three WTF string cpp files to this project.
       
  1830         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Remove the need to link against WTF.lib (since jsc links against JavaScriptCore).
       
  1831         * JavaScriptCore.xcodeproj/project.pbxproj: Add the StringStatics file.
       
  1832         * wtf/text/AtomicString.cpp: Moved code to StringStatics.
       
  1833         * wtf/text/StringImpl.cpp: Ditto.
       
  1834         * wtf/text/StringStatics.cpp: Added. Move functions in WTF Strings that define static variables to here, so 
       
  1835             the rest of the files can be compiled in WebCore.
       
  1836         (WebCore::StringImpl::empty): Moved from StringImpl.cpp to here.
       
  1837         (WebCore::AtomicString::init): Moved from AtomicString.cpp to here.
       
  1838 
       
  1839 2010-05-11  Geoffrey Garen  <ggaren@apple.com>
       
  1840 
       
  1841         Fixed test failures seen on SnowLeopard buildbot.
       
  1842 
       
  1843         * runtime/JSString.cpp:
       
  1844         (JSC::JSString::replaceCharacter): Don't use size_t and wtf::notFound.
       
  1845         Instead, use the individual types and notFound values of the string APIs
       
  1846         we're using, since they're not necessarily the same in 64bit.
       
  1847 
       
  1848 2010-05-11  Geoffrey Garen  <ggaren@apple.com>
       
  1849 
       
  1850         Reviewed by Oliver Hunt and Darin Adler.
       
  1851 
       
  1852         Start using ropes in String.prototype.replace.
       
  1853         
       
  1854         1%-1.5% speedup on SunSpider.
       
  1855 
       
  1856         * runtime/JSString.cpp:
       
  1857         (JSC::JSString::resolveRope): Updated for RopeImpl refactoring.
       
  1858 
       
  1859         (JSC::JSString::replaceCharacter): Added a replaceCharacter function, which creates
       
  1860         a rope for the resulting replacement.
       
  1861 
       
  1862         * runtime/JSString.h: A few changes here:
       
  1863         (JSC::):
       
  1864         (JSC::RopeBuilder::RopeIterator::RopeIterator):
       
  1865         (JSC::RopeBuilder::RopeIterator::operator++):
       
  1866         (JSC::RopeBuilder::RopeIterator::operator*):
       
  1867         (JSC::RopeBuilder::RopeIterator::operator!=):
       
  1868         (JSC::RopeBuilder::RopeIterator::WorkItem::WorkItem):
       
  1869         (JSC::RopeBuilder::RopeIterator::WorkItem::operator!=):
       
  1870         (JSC::RopeBuilder::RopeIterator::skipRopes): Created a RopeIterator abstraction.
       
  1871         We use this to do a substring find without having to resolve the rope.
       
  1872         (We could use this iterator when resolving ropes, too, but resolving
       
  1873         ropes backwards is usually more efficient.)
       
  1874 
       
  1875         (JSC::RopeBuilder::JSString): Added constructors for 2 & 3 UStrings.
       
  1876 
       
  1877         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
       
  1878         (JSC::RopeBuilder::size): Updated for RopeImpl refactoring.
       
  1879 
       
  1880         * runtime/Operations.h: Updated for RopeImpl refactoring.
       
  1881         (JSC::jsString): Added jsString functions for 2 & 3 UStrings.
       
  1882 
       
  1883         * runtime/RopeImpl.cpp:
       
  1884         (JSC::RopeImpl::derefFibersNonRecursive):
       
  1885         * runtime/RopeImpl.h:
       
  1886         (JSC::RopeImpl::initializeFiber):
       
  1887         (JSC::RopeImpl::size):
       
  1888         (JSC::RopeImpl::fibers):
       
  1889         (JSC::RopeImpl::deref):
       
  1890         (JSC::RopeImpl::RopeImpl): A little refactoring to make this patch easier:
       
  1891         Moved statics to the top of the class; put multi-statement functions on
       
  1892         multiple lines; renamed "fiberCount" to "size" to match other collections;
       
  1893         changed the "fibers" accessor to return the fibers buffer, instead of an
       
  1894         item in the buffer, to make iteration easier.
       
  1895 
       
  1896         * runtime/StringPrototype.cpp:
       
  1897         (JSC::stringProtoFuncReplace): Don't resolve a rope unless we need to. Do
       
  1898         use our new replaceCharacter function if possible. Do use a rope to
       
  1899         represent splicing three strings together.
       
  1900 
       
  1901 2010-05-10  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  1902 
       
  1903         Reviewed by Darin Adler.
       
  1904 
       
  1905         [Qt] Disable JIT support for mingw-w64
       
  1906         https://bugs.webkit.org/show_bug.cgi?id=38747
       
  1907 
       
  1908         Disale JIT for mingw-w64 as it is reportedly
       
  1909         unstable.
       
  1910 
       
  1911         Thanks for Vanboxem Rruben for the investigation.
       
  1912 
       
  1913         * wtf/Platform.h:
       
  1914 
       
  1915 2010-05-09  Fumitoshi Ukai  <ukai@chromium.org>
       
  1916 
       
  1917         Reviewed by Eric Seidel.
       
  1918 
       
  1919         JavaScriptCore/wtf/MD5.h: checksum should take a reference to output.
       
  1920         https://bugs.webkit.org/show_bug.cgi?id=38723
       
  1921 
       
  1922         * JavaScriptCore.exp:
       
  1923         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  1924         * wtf/MD5.cpp:
       
  1925         (WTF::expectMD5):
       
  1926           Fix for checksum change.
       
  1927         (WTF::MD5::checksum):
       
  1928           Take a reference to output, instead of returning the result by value, to reduce coping for performance.
       
  1929         * wtf/MD5.h:
       
  1930 
       
  1931 2010-05-09  Oliver Hunt  <oliver@apple.com>
       
  1932 
       
  1933         Build fix.
       
  1934 
       
  1935         Fix accidental repeat addition of emit_op_new_regexp
       
  1936 
       
  1937         * jit/JITOpcodes.cpp:
       
  1938 
       
  1939 2010-05-09  Oliver Hunt  <oliver@apple.com>
       
  1940 
       
  1941         Reviewed by Gavin Barraclough.
       
  1942 
       
  1943         REGRESSION(r57955): RegExp literals should not actually be cached, so r57955 should be rolled out.
       
  1944         https://bugs.webkit.org/show_bug.cgi?id=38828
       
  1945         <rdar://problem/7961634>
       
  1946 
       
  1947         Rollout r57955
       
  1948 
       
  1949         * bytecode/CodeBlock.cpp:
       
  1950         (JSC::regexpToSourceString):
       
  1951         (JSC::regexpName):
       
  1952         (JSC::CodeBlock::dump):
       
  1953         (JSC::CodeBlock::shrinkToFit):
       
  1954         * bytecode/CodeBlock.h:
       
  1955         (JSC::CodeBlock::addRegExp):
       
  1956         (JSC::CodeBlock::regexp):
       
  1957         * bytecode/Opcode.h:
       
  1958         * bytecompiler/BytecodeGenerator.cpp:
       
  1959         (JSC::BytecodeGenerator::addRegExp):
       
  1960         (JSC::BytecodeGenerator::emitNewRegExp):
       
  1961         * bytecompiler/BytecodeGenerator.h:
       
  1962         * bytecompiler/NodesCodegen.cpp:
       
  1963         (JSC::RegExpNode::emitBytecode):
       
  1964         * interpreter/Interpreter.cpp:
       
  1965         (JSC::Interpreter::privateExecute):
       
  1966         * jit/JIT.cpp:
       
  1967         (JSC::JIT::privateCompileMainPass):
       
  1968         * jit/JIT.h:
       
  1969         * jit/JITOpcodes.cpp:
       
  1970         (JSC::JIT::emit_op_new_regexp):
       
  1971         * jit/JITStubs.cpp:
       
  1972         (JSC::DEFINE_STUB_FUNCTION):
       
  1973         * jit/JITStubs.h:
       
  1974         (JSC::):
       
  1975 
       
  1976 2010-05-09  Geoffrey Garen  <ggaren@apple.com>
       
  1977 
       
  1978         Reviewed by Oliver Hunt.
       
  1979 
       
  1980         Reserve a large-ish initial capacity for Lexer::m_buffer16.
       
  1981         
       
  1982         SunSpider says 0.3% faster.
       
  1983         
       
  1984         m_buffer16 is used when parsing complex strings -- for example, strings
       
  1985         with escape sequences in them. These kinds of strings can be really long,
       
  1986         and we want to avoid repeatedly copying as we grow m_buffer16.
       
  1987         
       
  1988         The net memory cost is quite low, since it's proporitional to source
       
  1989         code we already have in memory, and we throw away m_buffer16 right when
       
  1990         we're done parsing.
       
  1991 
       
  1992         * parser/Lexer.cpp:
       
  1993         (JSC::Lexer::Lexer): No need to reserve initial capacity in our constructor,
       
  1994         since setCode will be called before we're asked to lex anything.
       
  1995         (JSC::Lexer::setCode): Reserve enough space to lex half the source code
       
  1996         as a complex string without having to copy.
       
  1997         (JSC::Lexer::clear): No need to reserve initial capacity here either,
       
  1998         since setCode will be called before we're asked to lex anything.
       
  1999 
       
  2000 2010-05-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  2001 
       
  2002         Reviewed by Eric Seidel.
       
  2003 
       
  2004         [Qt] Remove YARR configuration rules from Qt make system
       
  2005         https://bugs.webkit.org/show_bug.cgi?id=38819
       
  2006 
       
  2007         Setting YARR based on JIT seeting is now in Platform.h 
       
  2008         for all ports. This patch essentially reverses r49238.
       
  2009 
       
  2010         * JavaScriptCore.pri:
       
  2011 
       
  2012 2010-05-09  Oliver Hunt  <oliver@apple.com>
       
  2013 
       
  2014         Reviewed by Maciej Stachowiak.
       
  2015 
       
  2016         Improve string indexing performance
       
  2017         https://bugs.webkit.org/show_bug.cgi?id=38814
       
  2018 
       
  2019         Add an assembly stub to do indexed loads from strings much
       
  2020         more cheaply than the current stub dispatch logic.  We can
       
  2021         do this because we are able to make guarantees about the
       
  2022         register contents when entering the stub so the call overhead
       
  2023         is negligible.
       
  2024 
       
  2025         * jit/JIT.h:
       
  2026         * jit/JITInlineMethods.h:
       
  2027         * jit/JITOpcodes.cpp:
       
  2028         * jit/JITPropertyAccess.cpp:
       
  2029         (JSC::JIT::stringGetByValStubGenerator):
       
  2030         (JSC::JIT::emitSlow_op_get_by_val):
       
  2031            Moved from JITOpcodes.cpp to keep the slowcase next to
       
  2032            the normal case codegen as we do for everything else.
       
  2033         * jit/JITPropertyAccess32_64.cpp:
       
  2034         (JSC::JIT::stringGetByValStubGenerator):
       
  2035         (JSC::JIT::emitSlow_op_get_by_val):
       
  2036         * jit/JSInterfaceJIT.h:
       
  2037         (JSC::JSInterfaceJIT::emitFastArithImmToInt):
       
  2038 
       
  2039 2010-05-09  Maciej Stachowiak  <mjs@apple.com>
       
  2040 
       
  2041         Fixed version of: "Optimized o[s] where o is a cell and s is a string"
       
  2042         https://bugs.webkit.org/show_bug.cgi?id=38815
       
  2043         
       
  2044         Fixed the previous patch for this from Geoff Garen.
       
  2045         
       
  2046         The two problems were a missing exception check and a PropertySlot
       
  2047         initialized improperly, leading to crashes and failures in the case
       
  2048         of getters accessed with bracket syntax.
       
  2049 
       
  2050     Previous patch:
       
  2051 
       
  2052         Optimized o[s] where o is a cell and s is a string, removing some old
       
  2053         code that wasn't really tuned for the JIT.
       
  2054         
       
  2055         SunSpider says 0.8% faster.
       
  2056 
       
  2057         * jit/JITStubs.cpp:
       
  2058         (JSC::DEFINE_STUB_FUNCTION):
       
  2059         * runtime/JSCell.h:
       
  2060 
       
  2061 2010-05-08  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  2062 
       
  2063         Unreviewed, build fix.
       
  2064 
       
  2065         Fix missing terminating ' character warning
       
  2066 
       
  2067         The warning has been only seen on the Gtk buildbots.
       
  2068 
       
  2069         * wtf/Platform.h:
       
  2070 
       
  2071 2010-05-08  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  2072 
       
  2073         Reviewed by Gavin Barraclough.
       
  2074 
       
  2075         Refactor YARR and YARR_JIT default rules in Platform.h
       
  2076         https://bugs.webkit.org/show_bug.cgi?id=38727
       
  2077 
       
  2078         Turn on YARR and YARR JIT by default of JIT is enabled.
       
  2079         Ports can overrule this default decisions as they wish.
       
  2080 
       
  2081         * wtf/Platform.h:
       
  2082 
       
  2083 2010-05-08  Oliver Hunt  <oliver@apple.com>
       
  2084 
       
  2085         Reviewed by Gavin Barraclough.
       
  2086 
       
  2087         Split JSVALUE32_64 code out of JITOpcodes.cpp and into JITOpcodes32_64.cpp
       
  2088         https://bugs.webkit.org/show_bug.cgi?id=38808
       
  2089 
       
  2090         * GNUmakefile.am:
       
  2091         * JavaScriptCore.gypi:
       
  2092         * JavaScriptCore.pro:
       
  2093         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
  2094         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  2095         * jit/JITOpcodes.cpp:
       
  2096         * jit/JITOpcodes32_64.cpp: Added.
       
  2097         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
  2098         (JSC::JIT::emit_op_mov):
       
  2099         (JSC::JIT::emit_op_end):
       
  2100         (JSC::JIT::emit_op_jmp):
       
  2101         (JSC::JIT::emit_op_loop_if_lesseq):
       
  2102         (JSC::JIT::emitSlow_op_loop_if_lesseq):
       
  2103         (JSC::JIT::emit_op_new_object):
       
  2104         (JSC::JIT::emit_op_instanceof):
       
  2105         (JSC::JIT::emitSlow_op_instanceof):
       
  2106         (JSC::JIT::emit_op_new_func):
       
  2107         (JSC::JIT::emit_op_get_global_var):
       
  2108         (JSC::JIT::emit_op_put_global_var):
       
  2109         (JSC::JIT::emit_op_get_scoped_var):
       
  2110         (JSC::JIT::emit_op_put_scoped_var):
       
  2111         (JSC::JIT::emit_op_tear_off_activation):
       
  2112         (JSC::JIT::emit_op_tear_off_arguments):
       
  2113         (JSC::JIT::emit_op_new_array):
       
  2114         (JSC::JIT::emit_op_resolve):
       
  2115         (JSC::JIT::emit_op_to_primitive):
       
  2116         (JSC::JIT::emitSlow_op_to_primitive):
       
  2117         (JSC::JIT::emit_op_strcat):
       
  2118         (JSC::JIT::emit_op_resolve_base):
       
  2119         (JSC::JIT::emit_op_resolve_skip):
       
  2120         (JSC::JIT::emit_op_resolve_global):
       
  2121         (JSC::JIT::emitSlow_op_resolve_global):
       
  2122         (JSC::JIT::emit_op_not):
       
  2123         (JSC::JIT::emitSlow_op_not):
       
  2124         (JSC::JIT::emit_op_jfalse):
       
  2125         (JSC::JIT::emitSlow_op_jfalse):
       
  2126         (JSC::JIT::emit_op_jtrue):
       
  2127         (JSC::JIT::emitSlow_op_jtrue):
       
  2128         (JSC::JIT::emit_op_jeq_null):
       
  2129         (JSC::JIT::emit_op_jneq_null):
       
  2130         (JSC::JIT::emit_op_jneq_ptr):
       
  2131         (JSC::JIT::emit_op_jsr):
       
  2132         (JSC::JIT::emit_op_sret):
       
  2133         (JSC::JIT::emit_op_eq):
       
  2134         (JSC::JIT::emitSlow_op_eq):
       
  2135         (JSC::JIT::emit_op_neq):
       
  2136         (JSC::JIT::emitSlow_op_neq):
       
  2137         (JSC::JIT::compileOpStrictEq):
       
  2138         (JSC::JIT::emit_op_stricteq):
       
  2139         (JSC::JIT::emitSlow_op_stricteq):
       
  2140         (JSC::JIT::emit_op_nstricteq):
       
  2141         (JSC::JIT::emitSlow_op_nstricteq):
       
  2142         (JSC::JIT::emit_op_eq_null):
       
  2143         (JSC::JIT::emit_op_neq_null):
       
  2144         (JSC::JIT::emit_op_resolve_with_base):
       
  2145         (JSC::JIT::emit_op_new_func_exp):
       
  2146         (JSC::JIT::emit_op_throw):
       
  2147         (JSC::JIT::emit_op_get_pnames):
       
  2148         (JSC::JIT::emit_op_next_pname):
       
  2149         (JSC::JIT::emit_op_push_scope):
       
  2150         (JSC::JIT::emit_op_pop_scope):
       
  2151         (JSC::JIT::emit_op_to_jsnumber):
       
  2152         (JSC::JIT::emitSlow_op_to_jsnumber):
       
  2153         (JSC::JIT::emit_op_push_new_scope):
       
  2154         (JSC::JIT::emit_op_catch):
       
  2155         (JSC::JIT::emit_op_jmp_scopes):
       
  2156         (JSC::JIT::emit_op_switch_imm):
       
  2157         (JSC::JIT::emit_op_switch_char):
       
  2158         (JSC::JIT::emit_op_switch_string):
       
  2159         (JSC::JIT::emit_op_new_error):
       
  2160         (JSC::JIT::emit_op_debug):
       
  2161         (JSC::JIT::emit_op_enter):
       
  2162         (JSC::JIT::emit_op_enter_with_activation):
       
  2163         (JSC::JIT::emit_op_create_arguments):
       
  2164         (JSC::JIT::emit_op_init_arguments):
       
  2165         (JSC::JIT::emit_op_convert_this):
       
  2166         (JSC::JIT::emitSlow_op_convert_this):
       
  2167         (JSC::JIT::emit_op_profile_will_call):
       
  2168         (JSC::JIT::emit_op_profile_did_call):
       
  2169 
       
  2170 2010-05-08  Gabor Loki  <loki@webkit.org>
       
  2171 
       
  2172         Reviewed by Gavin Barraclough.
       
  2173 
       
  2174         Fix halfword loads on ARM
       
  2175         https://bugs.webkit.org/show_bug.cgi?id=38741
       
  2176 
       
  2177         The BaseIndex and ImplicitAddress are contain 32bit wide offset, but
       
  2178         the load16 functions were working with 8 bit data (encoded in the
       
  2179         instruction). If the offset cannot be encoded in an instruction, it
       
  2180         should be stored in a temporary register.
       
  2181 
       
  2182         * assembler/ARMAssembler.h:
       
  2183         (JSC::ARMAssembler::getOffsetForHalfwordDataTransfer):
       
  2184         * assembler/MacroAssemblerARM.h:
       
  2185         (JSC::MacroAssemblerARM::load16):
       
  2186 
       
  2187 2010-05-08  Gabor Loki  <loki@webkit.org>
       
  2188 
       
  2189         Reviewed by Gavin Barraclough.
       
  2190 
       
  2191         Fix spanning branch instruction on Cortex-A8 with Thumb-2 JIT
       
  2192         https://bugs.webkit.org/show_bug.cgi?id=38280
       
  2193 
       
  2194         If the 32-bit Thumb-2 branch instruction spans two 4KiB regions and
       
  2195         the target of the branch falls within the first region it is
       
  2196         possible for the processor to incorrectly determine the branch
       
  2197         instruction, and it is also possible in some cases for the processor
       
  2198         to enter a deadlock state.
       
  2199 
       
  2200         * assembler/ARMv7Assembler.h:
       
  2201         (JSC::ARMv7Assembler::linkJumpAbsolute):
       
  2202 
       
  2203 2010-05-08  Adam Barth  <abarth@webkit.org>
       
  2204 
       
  2205         Reviewed by Darin Fisher.
       
  2206 
       
  2207         [WTFURL] Add a buffer for managing the output of the canonicalizer
       
  2208         https://bugs.webkit.org/show_bug.cgi?id=38671
       
  2209 
       
  2210         The canonicalizer produces a stream of canonicalized characters, which
       
  2211         we will store in a URLBuffer.  URLBuffer is quite similar to Vector,
       
  2212         but serves as an abstraction to isolate us from the underlying
       
  2213         character storage.  In the case of WebKit, we'll probably implement a
       
  2214         subclass of URLBuffer with Vector.  In Chromium, the backing store is a
       
  2215         std::string, which avoids an unnecessary memcpy that would be caused by
       
  2216         using Vector instead.
       
  2217 
       
  2218         * wtf/url/src/URLBuffer.h: Added.
       
  2219         (WTF::URLBuffer::URLBuffer):
       
  2220         (WTF::URLBuffer::~URLBuffer):
       
  2221         (WTF::URLBuffer::at):
       
  2222         (WTF::URLBuffer::set):
       
  2223         (WTF::URLBuffer::capacity):
       
  2224         (WTF::URLBuffer::length):
       
  2225         (WTF::URLBuffer::data):
       
  2226         (WTF::URLBuffer::setLength):
       
  2227         (WTF::URLBuffer::append):
       
  2228         (WTF::URLBuffer::grow):
       
  2229 
       
  2230 2010-05-08  Eric Seidel  <eric@webkit.org>
       
  2231 
       
  2232         Unreviewed, just reverting commit.
       
  2233 
       
  2234         REGRESSION(59000): r59000 contained all sorts of changes it should not have, needs revert.
       
  2235         https://bugs.webkit.org/show_bug.cgi?id=38798
       
  2236 
       
  2237         * bytecompiler/BytecodeGenerator.cpp:
       
  2238         (JSC::BytecodeGenerator::emitResolve):
       
  2239         * jit/JITOpcodes.cpp:
       
  2240         (JSC::JIT::emit_op_resolve_global):
       
  2241 
       
  2242 2010-05-04  Jer Noble  <jer.noble@apple.com>
       
  2243 
       
  2244         Reviewed by Maciej Stachowiak
       
  2245 
       
  2246         Safari pegs CPU and drops tons of frames using HTML5 Vimeo player
       
  2247         <https://bugs.webkit.org/show_bug.cgi?id=34005>
       
  2248         <rdar://problem/7569713>
       
  2249         
       
  2250         Added cancelCallOnMainThread.  callOnMainThread should always now be paired
       
  2251         with cancelCallOnMainThread in situations where the refcon passed to callOnMainThread
       
  2252         may be dealloced before the main thread function can be dispatched.  
       
  2253         
       
  2254         * wtf/MainThread.cpp:
       
  2255         (WTF::FunctionWithContext::operator == ): Supports the FunctionWithContextFinder predicate functor.
       
  2256         (WTF::FunctionWithContextFinder::FunctionWithContextFinder):  Predicate functor for use with Dequeue::findIf
       
  2257         (WTF::FunctionWithContextFinder::operator()):
       
  2258         (WTF::cancelCallOnMainThread):
       
  2259         * wtf/MainThread.h:
       
  2260 
       
  2261 2010-05-07  Oliver Hunt  <oliver@apple.com>
       
  2262 
       
  2263         Windows build fix.
       
  2264 
       
  2265         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  2266 
       
  2267 2010-05-07  Eric Seidel  <eric@webkit.org>
       
  2268 
       
  2269         Unreviewed, rolling out r58990.
       
  2270         http://trac.webkit.org/changeset/58990
       
  2271 
       
  2272         Broke 4 tests on Snow Leopard and Qt.
       
  2273 
       
  2274         * jit/JITStubs.cpp:
       
  2275         (JSC::DEFINE_STUB_FUNCTION):
       
  2276         * runtime/JSCell.h:
       
  2277 
       
  2278 2010-05-07  Oliver Hunt  <oliver@apple.com>
       
  2279 
       
  2280         Reviewed by Gavin Barraclough.
       
  2281 
       
  2282         Optimize access to the global object from a function that uses eval
       
  2283         https://bugs.webkit.org/show_bug.cgi?id=38644
       
  2284 
       
  2285         Fix bug where cross scope access to a global var (vs. property) would
       
  2286         be allowed without checking for intervening dynamic scopes.
       
  2287 
       
  2288         * bytecompiler/BytecodeGenerator.cpp:
       
  2289         (JSC::BytecodeGenerator::emitResolve):
       
  2290 
       
  2291 2010-05-07  Oliver Hunt  <oliver@apple.com>
       
  2292 
       
  2293         32-bit buildfix.
       
  2294 
       
  2295         Macro expansion I stab at thee!
       
  2296 
       
  2297         * jit/JITOpcodes.cpp:
       
  2298         (JSC::JIT::emit_op_resolve_global):
       
  2299 
       
  2300 2010-05-07  Geoffrey Garen  <ggaren@apple.com>
       
  2301 
       
  2302         Reviewed by Darin Adler.
       
  2303 
       
  2304         Optimized o[s] where o is a cell and s is a string, removing some old
       
  2305         code that wasn't really tuned for the JIT.
       
  2306         
       
  2307         SunSpider says 0.8% faster.
       
  2308 
       
  2309         * jit/JITStubs.cpp:
       
  2310         (JSC::DEFINE_STUB_FUNCTION):
       
  2311         * runtime/JSCell.h:
       
  2312 
       
  2313 2010-05-07  Oliver Hunt  <oliver@apple.com>
       
  2314 
       
  2315         Windows build fix.
       
  2316 
       
  2317         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  2318 
       
  2319 2010-05-07  Oliver Hunt  <oliver@apple.com>
       
  2320 
       
  2321         Reviewed by Geoffrey Garen.
       
  2322 
       
  2323         Optimize access to the global object from a function that uses eval
       
  2324         https://bugs.webkit.org/show_bug.cgi?id=38644
       
  2325 
       
  2326         Add op_resolve_global_dynamic, a variant of op_resolve_global that
       
  2327         checks each node in the scope chain for dynamically inserted properties
       
  2328         and falls back to the normal resolve logic in that case.
       
  2329 
       
  2330         * JavaScriptCore.exp:
       
  2331         * bytecode/CodeBlock.cpp:
       
  2332         (JSC::isGlobalResolve):
       
  2333         (JSC::CodeBlock::printStructures):
       
  2334         (JSC::CodeBlock::dump):
       
  2335         (JSC::CodeBlock::derefStructures):
       
  2336         * bytecode/Opcode.h:
       
  2337         * bytecompiler/BytecodeGenerator.cpp:
       
  2338         (JSC::BytecodeGenerator::findScopedProperty):
       
  2339            Now take an additional reference parameter to used to indicate that
       
  2340            there were nodes that may gain dynamic properties
       
  2341         (JSC::BytecodeGenerator::emitResolve):
       
  2342         (JSC::BytecodeGenerator::emitResolveBase):
       
  2343         (JSC::BytecodeGenerator::emitResolveWithBase):
       
  2344            deal with additional argument to findScopedProperty
       
  2345         * bytecompiler/BytecodeGenerator.h:
       
  2346         * bytecompiler/NodesCodegen.cpp:
       
  2347         (JSC::FunctionCallResolveNode::emitBytecode):
       
  2348         (JSC::PostfixResolveNode::emitBytecode):
       
  2349         (JSC::PrefixResolveNode::emitBytecode):
       
  2350         (JSC::ReadModifyResolveNode::emitBytecode):
       
  2351         (JSC::AssignResolveNode::emitBytecode):
       
  2352            These functions use findScopedProperty directly in order to
       
  2353            optimise lookup.  They cannot trivially handle any degree of
       
  2354            dynamism in the lookup so we just give up in such case.
       
  2355         * interpreter/Interpreter.cpp:
       
  2356         (JSC::Interpreter::resolveGlobalDynamic):
       
  2357         (JSC::Interpreter::execute):
       
  2358         (JSC::Interpreter::privateExecute):
       
  2359         * interpreter/Interpreter.h:
       
  2360         * jit/JIT.cpp:
       
  2361         (JSC::JIT::privateCompileMainPass):
       
  2362         (JSC::JIT::privateCompileSlowCases):
       
  2363         * jit/JIT.h:
       
  2364         * jit/JITOpcodes.cpp:
       
  2365         (JSC::JIT::emit_op_resolve_global):
       
  2366         (JSC::JIT::emit_op_resolve_global_dynamic):
       
  2367         (JSC::JIT::emitSlow_op_resolve_global):
       
  2368         (JSC::JIT::emitSlow_op_resolve_global_dynamic):
       
  2369            Happily resolve_global_dynamic can share the slow case!
       
  2370         * jit/JITStubs.h:
       
  2371         (JSC::):
       
  2372         * runtime/JSActivation.cpp:
       
  2373         (JSC::JSActivation::isDynamicScope):
       
  2374         * runtime/JSActivation.h:
       
  2375         * runtime/JSGlobalObject.cpp:
       
  2376         (JSC::JSGlobalObject::isDynamicScope):
       
  2377         * runtime/JSGlobalObject.h:
       
  2378         * runtime/JSStaticScopeObject.cpp:
       
  2379         (JSC::JSStaticScopeObject::isDynamicScope):
       
  2380         * runtime/JSStaticScopeObject.h:
       
  2381         * runtime/JSVariableObject.h:
       
  2382 
       
  2383 2010-05-07  Geoffrey Garen  <ggaren@apple.com>
       
  2384 
       
  2385         Reviewed by Gavin Barraclough.
       
  2386 
       
  2387         Fixed Sputnik failure seen on buildbot.
       
  2388 
       
  2389         * runtime/NumberPrototype.cpp:
       
  2390         (JSC::numberProtoFuncToString): Cast to unsigned before checking magnitude,
       
  2391         to efficiently exclude negative numbers, which require two characters
       
  2392         instead of one.
       
  2393 
       
  2394 2010-05-07  Geoffrey Garen  <ggaren@apple.com>
       
  2395 
       
  2396         Reviewed by Alexey Proskuryakov.
       
  2397         
       
  2398         Slightly more effective way to guarantee a compile-time constant, at
       
  2399         least on gcc.
       
  2400 
       
  2401         * runtime/NumberPrototype.cpp:
       
  2402         (JSC::numberProtoFuncToString): Use pointer notation instead of array
       
  2403         notation, so the compiler treats the string and its contents as constant.
       
  2404 
       
  2405 2010-05-07  Adam Barth  <abarth@webkit.org>
       
  2406 
       
  2407         Reviewed by Alexey Proskuryakov.
       
  2408 
       
  2409         [WTFURL] Add core URL parser
       
  2410         https://bugs.webkit.org/show_bug.cgi?id=38572
       
  2411 
       
  2412         This patch adds the core of the URL parser.  The URL parser uses a
       
  2413         templated notion of a code unit to support different string types.
       
  2414         Later we'll add some non-templated APIs with concrete types that
       
  2415         clients can use more conveniently.
       
  2416 
       
  2417         The URLParser has a couple calls to ASSERT(), which I've commented out
       
  2418         for now.  I'm not 100% sure how to handle the dependency issues there
       
  2419         yet, so I've punted on the issue for now.
       
  2420 
       
  2421         Also, there are a number of methods that are declared public in this
       
  2422         patch that are only used by the canonicalizer.  My plan is to make
       
  2423         those private or protected and make the canonicalizer a friend of the
       
  2424         parser.  The details will be in a later patch.
       
  2425 
       
  2426         * wtf/url/src/URLComponent.h:
       
  2427         (WTF::URLComponent::fromRange):
       
  2428         (WTF::URLComponent::isNonEmpty):
       
  2429         (WTF::URLComponent::isEmptyOrInvalid):
       
  2430         * wtf/url/src/URLParser.h: Added.
       
  2431         (WTF::URLParser::):
       
  2432         (WTF::URLParser::isPossibleAuthorityTerminator):
       
  2433         (WTF::URLParser::parseAuthority):
       
  2434         (WTF::URLParser::extractScheme):
       
  2435         (WTF::URLParser::parseAfterScheme):
       
  2436         (WTF::URLParser::parseStandardURL):
       
  2437         (WTF::URLParser::parsePath):
       
  2438         (WTF::URLParser::parsePathURL):
       
  2439         (WTF::URLParser::parseMailtoURL):
       
  2440         (WTF::URLParser::parsePort):
       
  2441         (WTF::URLParser::extractFileName):
       
  2442         (WTF::URLParser::extractQueryKeyValue):
       
  2443         (WTF::URLParser::isURLSlash):
       
  2444         (WTF::URLParser::shouldTrimFromURL):
       
  2445         (WTF::URLParser::trimURL):
       
  2446         (WTF::URLParser::consecutiveSlashes):
       
  2447         (WTF::URLParser::isPortDigit):
       
  2448         (WTF::URLParser::nextAuthorityTerminator):
       
  2449         (WTF::URLParser::parseUserInfo):
       
  2450         (WTF::URLParser::parseServerInfo):
       
  2451 
       
  2452 2010-05-07  Geoffrey Garen  <ggaren@apple.com>
       
  2453 
       
  2454         Reviewed by Oliver Hunt.
       
  2455 
       
  2456         Added a fast path for number-to-character conversion via
       
  2457         Number.prototype.toString base 36.
       
  2458         
       
  2459         0.7% speedup on SunSpider.
       
  2460 
       
  2461         * runtime/NumberPrototype.cpp:
       
  2462         (JSC::numberProtoFuncToString): Made radix interpretation a little more
       
  2463         efficient by keeping it in int space. Turned "const char" into
       
  2464         "static const char" just in case. Added a fast path for base 36
       
  2465         conversion of something that will turn into a character.
       
  2466 
       
  2467 2010-05-07  Adam Barth  <abarth@webkit.org>
       
  2468 
       
  2469         Reviewed by Darin Fisher.
       
  2470 
       
  2471         [WTFURL] Add a malloc-backed URLBuffer
       
  2472         https://bugs.webkit.org/show_bug.cgi?id=38694
       
  2473 
       
  2474         This patch adds a URLBuffer that uses new/delete to manage the backing
       
  2475         store for the buffer.
       
  2476 
       
  2477         * wtf/url/src/RawURLBuffer.h: Added.
       
  2478         (WTF::RawURLBuffer::RawURLBuffer):
       
  2479         (WTF::RawURLBuffer::~RawURLBuffer):
       
  2480         (WTF::RawURLBuffer::resize):
       
  2481 
       
  2482 2010-05-06  Fumitoshi Ukai  <ukai@chromium.org>
       
  2483 
       
  2484         Reviewed by Alexey Proskuryakov.
       
  2485 
       
  2486         JavaScriptCore/wtf/RandomNumber.h should provide using WTF::*
       
  2487         https://bugs.webkit.org/show_bug.cgi?id=38719
       
  2488 
       
  2489         * wtf/RandomNumber.h:
       
  2490           Add using directives.
       
  2491 
       
  2492 2010-05-06  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  2493 
       
  2494         Reviewed by Kenneth Rohde Christiansen.
       
  2495 
       
  2496         [Qt] Enable YARR_JIT for X86 Mac for QtWebKit
       
  2497         https://bugs.webkit.org/show_bug.cgi?id=38668
       
  2498 
       
  2499         * wtf/Platform.h:
       
  2500 
       
  2501 2010-05-06  Gavin Barraclough  <barraclough@apple.com>
       
  2502 
       
  2503         Reviewed by Geoff Garen.
       
  2504 
       
  2505         Bug 38714 - Add result caching for Math.sin
       
  2506 
       
  2507         Math.sin is frequently called with the same operand, caching the result should
       
  2508         improve performance.  CachedTranscendentalFunction adds a generic mechanism to
       
  2509         cache results for pure functions with the signature "double func(double)", and
       
  2510         where NaN maps to NaN.
       
  2511 
       
  2512         CachedTranscendentalFunction uses a very simple hash function designed to be
       
  2513         fast to execute since we cannot cache the result, and trivial to JIT generate,
       
  2514         should we wish to do so.
       
  2515 
       
  2516         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  2517         * runtime/CachedTranscendentalFunction.h: Added.
       
  2518         (JSC::CachedTranscendentalFunction::CachedTranscendentalFunction):
       
  2519         (JSC::CachedTranscendentalFunction::~CachedTranscendentalFunction):
       
  2520         (JSC::CachedTranscendentalFunction::operator()):
       
  2521         (JSC::CachedTranscendentalFunction::initialize):
       
  2522         (JSC::CachedTranscendentalFunction::hash):
       
  2523         * runtime/JSGlobalData.h:
       
  2524         * runtime/MathObject.cpp:
       
  2525         (JSC::mathProtoFuncSin):
       
  2526         * wtf/Platform.h:
       
  2527 
       
  2528 2010-05-06  Geoffrey Garen  <ggaren@apple.com>
       
  2529 
       
  2530         Windows build fix.
       
  2531 
       
  2532         * bytecode/SamplingTool.cpp:
       
  2533         (JSC::SamplingFlags::sample): Use a cast, so Windows will be happy when
       
  2534         this code is enabled.
       
  2535         * wtf/Platform.h: Reverted last change to this file, which seems to have
       
  2536         been accidental.
       
  2537 
       
  2538 2010-05-06  Gavin Barraclough  <barraclough@apple.com>
       
  2539 
       
  2540         Reviewed by Oliver Hunt.
       
  2541 
       
  2542         Add compile switch to make debugger keyword plant breakpoint instructions.
       
  2543 
       
  2544         * bytecompiler/BytecodeGenerator.cpp:
       
  2545         (JSC::BytecodeGenerator::emitDebugHook):
       
  2546         * jit/JITOpcodes.cpp:
       
  2547         (JSC::JIT::emit_op_debug):
       
  2548         * wtf/Platform.h:
       
  2549 
       
  2550 2010-05-06  Oliver Hunt  <oliver@apple.com>
       
  2551 
       
  2552         Build fix
       
  2553 
       
  2554         Fix ARM builds
       
  2555 
       
  2556         * assembler/MacroAssemblerARM.h:
       
  2557         (JSC::MacroAssemblerARM::load16):
       
  2558         * assembler/MacroAssemblerARMv7.h:
       
  2559         (JSC::MacroAssemblerARMv7::load16):
       
  2560 
       
  2561 2010-05-06  Oliver Hunt  <oliver@apple.com>
       
  2562 
       
  2563         Reviewed by Geoffrey Garen.
       
  2564 
       
  2565         Improve performance of single character string compares
       
  2566         https://bugs.webkit.org/show_bug.cgi?id=38659
       
  2567 
       
  2568         Add logic to the jit to identify comparisons to single character string literals
       
  2569         and then just perform the comparison inline, rather than ignoring the evidence
       
  2570         and attempting to perform an integer comparison.
       
  2571 
       
  2572         Multiple changes required -- add jnlesseq opcode, add helper function to identify
       
  2573         single character string constants, add a helper to load single character strings.
       
  2574         Then add the 32_64 and normal codepaths to the JIT.
       
  2575 
       
  2576         * assembler/MacroAssemblerX86Common.h:
       
  2577         (JSC::MacroAssemblerX86Common::load16):
       
  2578         * bytecode/CodeBlock.cpp:
       
  2579         (JSC::CodeBlock::dump):
       
  2580         * bytecode/Opcode.h:
       
  2581         * bytecompiler/BytecodeGenerator.cpp:
       
  2582         (JSC::BytecodeGenerator::emitJumpIfTrue):
       
  2583         * interpreter/Interpreter.cpp:
       
  2584         (JSC::Interpreter::privateExecute):
       
  2585         * jit/JIT.cpp:
       
  2586         (JSC::JIT::privateCompileMainPass):
       
  2587         (JSC::JIT::privateCompileSlowCases):
       
  2588         * jit/JIT.h:
       
  2589         * jit/JITArithmetic.cpp:
       
  2590         (JSC::JIT::emit_op_jnless):
       
  2591         (JSC::JIT::emitSlow_op_jnless):
       
  2592         (JSC::JIT::emit_op_jless):
       
  2593         (JSC::JIT::emitSlow_op_jless):
       
  2594         (JSC::JIT::emit_op_jlesseq):
       
  2595         (JSC::JIT::emit_op_jnlesseq):
       
  2596         (JSC::JIT::emitSlow_op_jlesseq):
       
  2597         (JSC::JIT::emitSlow_op_jnlesseq):
       
  2598         * jit/JITArithmetic32_64.cpp:
       
  2599         (JSC::JIT::emit_op_jnless):
       
  2600         (JSC::JIT::emitSlow_op_jnless):
       
  2601         (JSC::JIT::emit_op_jless):
       
  2602         (JSC::JIT::emitSlow_op_jless):
       
  2603         (JSC::JIT::emit_op_jlesseq):
       
  2604         (JSC::JIT::emit_op_jnlesseq):
       
  2605         (JSC::JIT::emitSlow_op_jlesseq):
       
  2606         (JSC::JIT::emitSlow_op_jnlesseq):
       
  2607         (JSC::JIT::emitBinaryDoubleOp):
       
  2608         * jit/JITInlineMethods.h:
       
  2609         (JSC::JIT::emitLoadCharacterString):
       
  2610         (JSC::JIT::isOperandConstantImmediateChar):
       
  2611         * jit/JSInterfaceJIT.h:
       
  2612         (JSC::ThunkHelpers::stringImplDataOffset):
       
  2613         (JSC::ThunkHelpers::jsStringLengthOffset):
       
  2614         (JSC::ThunkHelpers::jsStringValueOffset):
       
  2615          Moved from ThunkGenerators to make it possible to share.
       
  2616         * jit/ThunkGenerators.cpp:
       
  2617 
       
  2618 2010-05-06  Martin Robinson  <mrobinson@webkit.org>
       
  2619 
       
  2620         Reviewed by Gustavo Noronha Silva.
       
  2621 
       
  2622         [GTK] Enable DOM clipboard and drag-and-drop access
       
  2623         https://bugs.webkit.org/show_bug.cgi?id=30623
       
  2624 
       
  2625         Convert dragging portion of drag-and-drop to use DataObjectGtk.
       
  2626 
       
  2627         * wtf/gobject/GRefPtr.h: Add forward declarations for GObject functions.
       
  2628 
       
  2629 2010-05-06  Steve Block  <steveblock@google.com>
       
  2630 
       
  2631         Reviewed by Eric Seidel.
       
  2632 
       
  2633         MAC_JAVA_BRIDGE should be renamed JAVA_BRIDGE
       
  2634         https://bugs.webkit.org/show_bug.cgi?id=38544
       
  2635 
       
  2636         * wtf/Platform.h:
       
  2637 
       
  2638 2010-05-06  Adam Barth  <abarth@webkit.org>
       
  2639 
       
  2640         Reviewed by Maciej Stachowiak.
       
  2641 
       
  2642         [WTFURL] Add a class to represent the segments of a URL
       
  2643         https://bugs.webkit.org/show_bug.cgi?id=38566
       
  2644 
       
  2645         When paired with a string, this class represents a parsed URL.
       
  2646 
       
  2647         * wtf/url/src/URLSegments.cpp: Added.
       
  2648         (WTF::URLSegments::length):
       
  2649         (WTF::URLSegments::charactersBefore):
       
  2650         * wtf/url/src/URLSegments.h: Added.
       
  2651         (WTF::URLSegments::):
       
  2652         (WTF::URLSegments::URLSegments):
       
  2653         * wtf/url/wtfurl.gyp:
       
  2654 
       
  2655 2010-05-05  Tony Gentilcore  <tonyg@chromium.org>
       
  2656 
       
  2657         Reviewed by Adam Barth.
       
  2658 
       
  2659         Adding comment with link to RefPtr documentation.
       
  2660         https://bugs.webkit.org/show_bug.cgi?id=38601
       
  2661 
       
  2662         * wtf/RefPtr.h:
       
  2663 
       
  2664 2010-05-05  Gavin Barraclough  <barraclough@apple.com>
       
  2665 
       
  2666         Reviewed by Darin Adler.
       
  2667 
       
  2668         Bug 38604 - workers-gc2 crashing on Qt
       
  2669 
       
  2670         This appears to be due to a couple of issues.
       
  2671         (1) When the atomic string table is deleted it does not clear the 'inTable' bit
       
  2672         on AtomicStrings - it implicitly assumes that all AtomicStrings have already
       
  2673         been deleted at this point (otherwise they will crash in their destructor when
       
  2674         they try to remove themselves from the atomic string table).
       
  2675         (2) We don't fix the ordering in which WTF::WTFThreadData and
       
  2676         WebCore::ThreadGlobalData are destructed.
       
  2677 
       
  2678         We should make sure that ThreadGlobalData is cleaned up before worker threads
       
  2679         terminate and WTF::WTFThreadData is destroyed, and we should clear the inTable
       
  2680         bit of members on atomic string table destruction.
       
  2681 
       
  2682         WTF changes (fix issue 1, above) - ensure inTable property is cleared when the
       
  2683         atomic string table is destroyed (also, rename InTable to IsAtomic, to make it
       
  2684         clear which table we are refering to!)
       
  2685 
       
  2686         * wtf/text/AtomicString.cpp:
       
  2687         (WebCore::AtomicStringTable::destroy):
       
  2688         (WebCore::CStringTranslator::translate):
       
  2689         (WebCore::UCharBufferTranslator::translate):
       
  2690         (WebCore::HashAndCharactersTranslator::translate):
       
  2691         (WebCore::AtomicString::add):
       
  2692         * wtf/text/StringImpl.cpp:
       
  2693         (WebCore::StringImpl::~StringImpl):
       
  2694         * wtf/text/StringImpl.h:
       
  2695         (WebCore::StringImpl::isAtomic):
       
  2696         (WebCore::StringImpl::setIsAtomic):
       
  2697         * wtf/text/StringImplBase.h:
       
  2698 
       
  2699 2010-05-05  Oliver Hunt  <oliver@apple.com>
       
  2700 
       
  2701         Reviewed by Geoffrey Garen.
       
  2702 
       
  2703         Make Array.join specialised for actual arrays
       
  2704         https://bugs.webkit.org/show_bug.cgi?id=38592
       
  2705 
       
  2706         Bring Array.join in line with the other array methods by specialising for
       
  2707         this === an array.
       
  2708 
       
  2709         * runtime/ArrayPrototype.cpp:
       
  2710         (JSC::arrayProtoFuncJoin):
       
  2711 
       
  2712 2010-05-04  Yongjun Zhang  <yongjun_zhang@apple.com>
       
  2713 
       
  2714         Reviewed by Darin Adler.
       
  2715 
       
  2716         WebKit crashes at DebuggerCallFrame::functionName() if m_callFrame is the top global callframe.
       
  2717         https://bugs.webkit.org/show_bug.cgi?id=38535
       
  2718 
       
  2719         Don't call asFunction if callee is not a FunctionType to prevent assertion failure
       
  2720         in JSCell::isObject().
       
  2721 
       
  2722         * debugger/DebuggerCallFrame.cpp:
       
  2723         (JSC::DebuggerCallFrame::functionName):
       
  2724         (JSC::DebuggerCallFrame::calculatedFunctionName):
       
  2725 
       
  2726 2010-05-04  Steve Falkenburg  <sfalken@apple.com>
       
  2727 
       
  2728         Remove redundant exports to fix Windows build warnings.
       
  2729 
       
  2730         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  2731 
       
  2732 2010-05-04  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  2733 
       
  2734         Reviewed by Holger Freyther.
       
  2735 
       
  2736         Fix a memory leak inside the QScriptValue.
       
  2737 
       
  2738         QSciptValuePrivate::toString should release all temporary variables.
       
  2739 
       
  2740         [Qt] QScriptValue::toString have a memory leak.
       
  2741         https://bugs.webkit.org/show_bug.cgi?id=38112
       
  2742 
       
  2743         * qt/api/qscriptvalue_p.h:
       
  2744         (QScriptValuePrivate::toString):
       
  2745 
       
  2746 2010-05-04  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
       
  2747 
       
  2748         Reviewed by Darin Adler.
       
  2749 
       
  2750         Does not work on SPARC because of alignment issues
       
  2751         https://bugs.webkit.org/show_bug.cgi?id=38455
       
  2752 
       
  2753         Use AllocAlignmentInteger instead of void* on pageheap_memory to
       
  2754         avoid crashing at runtime in some architectures. Investigated by
       
  2755         Mike Hommey <mh@glandium.org>, change suggested by Darin Adler.
       
  2756 
       
  2757         * wtf/FastMalloc.cpp:
       
  2758 
       
  2759 2010-05-04  Adam Barth  <abarth@webkit.org>
       
  2760 
       
  2761         Reviewed by Maciej Stachowiak.
       
  2762 
       
  2763         Add first WTFURL file
       
  2764         https://bugs.webkit.org/show_bug.cgi?id=38470
       
  2765 
       
  2766         This class represents a component of a URL, such as the scheme or path.
       
  2767         Essentially, the class is an index into a string buffer.
       
  2768 
       
  2769         * wtf/url: Added.
       
  2770             - There was some discussion about where to put the URL library.
       
  2771               There are a number of reasonable options, but putting the library
       
  2772               in the WTF directory seems like a reasonable alternative.  This
       
  2773               location will make more sense once WTF is moved out of
       
  2774               JavaScriptCore and into a top-level directory.
       
  2775         * wtf/url/src: Added.
       
  2776             - I've added this extra directory to the usual structure because we
       
  2777               eventually want a "public" folder that defines the public
       
  2778               interface to this library that clients outside of svn.webkit.org
       
  2779               can rely upon, much like the various subfolders of the WebKit
       
  2780               directory often define a public API.
       
  2781         * wtf/url/src/URLComponent.h: Added.
       
  2782             - I've added this somewhat trivial class to get the ball rolling.
       
  2783         (WTF::URLComponent::URLComponent):
       
  2784         (WTF::URLComponent::isValid):
       
  2785         (WTF::URLComponent::isNonempty):
       
  2786         (WTF::URLComponent::reset):
       
  2787         (WTF::URLComponent::operator==):
       
  2788         (WTF::URLComponent::begin):
       
  2789         (WTF::URLComponent::setBegin):
       
  2790         (WTF::URLComponent::length):
       
  2791         (WTF::URLComponent::setLength):
       
  2792         (WTF::URLComponent::end):
       
  2793         * wtf/url/wtfurl.gyp: Added.
       
  2794             - WTFURL will be an independently buildable library, hence the
       
  2795               beginnings of a wtfurl.gyp file.
       
  2796 
       
  2797 2010-05-03  Stephanie Lewis  <slewis@apple.com>
       
  2798 
       
  2799         Reviewed by Geoff Garen.
       
  2800 
       
  2801         https://bugs.webkit.org/show_bug.cgi?id=38368
       
  2802         <rdar://problem/7834433> REGRESSSION: 1.5% PLT regression due to 56028 
       
  2803         (return memory quicker).
       
  2804         Instead of returning everything but the smallest spans spread out 
       
  2805         the spans kept over several size lists.
       
  2806 
       
  2807         * wtf/FastMalloc.cpp:
       
  2808         (WTF::TCMalloc_PageHeap::scavenge):
       
  2809 
       
  2810 2010-05-03  James Robinson  <jamesr@chromium.org>
       
  2811 
       
  2812         Reviewed by Eric Seidel.
       
  2813 
       
  2814         Clean up a few compiler warnings
       
  2815         https://bugs.webkit.org/show_bug.cgi?id=38073
       
  2816 
       
  2817         * wtf/text/StringImpl.cpp:
       
  2818         (WebCore::StringImpl::ascii):
       
  2819 
       
  2820 2010-05-03  Gavin Barraclough  <barraclough@apple.com>
       
  2821 
       
  2822         Reviewed by NOBODY (reverting previous commit).
       
  2823 
       
  2824         Rolling out r58114 - this introduced memory leaks of
       
  2825         AtomicStrings then workers terminated.
       
  2826 
       
  2827         * GNUmakefile.am:
       
  2828         * JavaScriptCore.gypi:
       
  2829         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
       
  2830         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  2831         * jit/ThunkGenerators.cpp:
       
  2832         (JSC::ThunkHelpers::stringImplDataOffset):
       
  2833         * runtime/Identifier.cpp:
       
  2834         (JSC::IdentifierTable::~IdentifierTable):
       
  2835         (JSC::IdentifierTable::add):
       
  2836         (JSC::IdentifierCStringTranslator::hash):
       
  2837         (JSC::IdentifierCStringTranslator::equal):
       
  2838         (JSC::IdentifierCStringTranslator::translate):
       
  2839         (JSC::Identifier::add):
       
  2840         (JSC::IdentifierUCharBufferTranslator::hash):
       
  2841         (JSC::IdentifierUCharBufferTranslator::equal):
       
  2842         (JSC::IdentifierUCharBufferTranslator::translate):
       
  2843         (JSC::Identifier::addSlowCase):
       
  2844         * runtime/Identifier.h:
       
  2845         * runtime/JSGlobalData.cpp:
       
  2846         (JSC::JSGlobalData::JSGlobalData):
       
  2847         (JSC::JSGlobalData::~JSGlobalData):
       
  2848         * runtime/JSGlobalData.h:
       
  2849         * wtf/WTFThreadData.cpp:
       
  2850         (WTF::WTFThreadData::WTFThreadData):
       
  2851         (WTF::WTFThreadData::~WTFThreadData):
       
  2852         * wtf/WTFThreadData.h:
       
  2853         (JSC::IdentifierTable::remove):
       
  2854         (JSC::IdentifierTable::literalTable):
       
  2855         (WTF::WTFThreadData::atomicStringTable):
       
  2856         * wtf/text/AtomicString.cpp:
       
  2857         (WebCore::AtomicStringTable::create):
       
  2858         (WebCore::AtomicStringTable::table):
       
  2859         (WebCore::AtomicStringTable::destroy):
       
  2860         (WebCore::stringTable):
       
  2861         (WebCore::CStringTranslator::hash):
       
  2862         (WebCore::CStringTranslator::equal):
       
  2863         (WebCore::CStringTranslator::translate):
       
  2864         (WebCore::operator==):
       
  2865         (WebCore::AtomicString::add):
       
  2866         (WebCore::equal):
       
  2867         (WebCore::UCharBufferTranslator::hash):
       
  2868         (WebCore::UCharBufferTranslator::equal):
       
  2869         (WebCore::UCharBufferTranslator::translate):
       
  2870         (WebCore::HashAndCharactersTranslator::hash):
       
  2871         (WebCore::HashAndCharactersTranslator::equal):
       
  2872         (WebCore::HashAndCharactersTranslator::translate):
       
  2873         (WebCore::AtomicString::find):
       
  2874         (WebCore::AtomicString::remove):
       
  2875         * wtf/text/AtomicStringTable.h: Removed.
       
  2876         * wtf/text/StringImpl.cpp:
       
  2877         (WebCore::StringImpl::~StringImpl):
       
  2878         * wtf/text/StringImpl.h:
       
  2879         (WebCore::StringImpl::inTable):
       
  2880         (WebCore::StringImpl::setInTable):
       
  2881         (WebCore::equal):
       
  2882         * wtf/text/StringImplBase.h:
       
  2883         (WTF::StringImplBase::StringImplBase):
       
  2884 
       
  2885 2010-05-03  Kevin Watters  <kevinwatters@gmail.com>
       
  2886 
       
  2887         Reviewed by Kevin Ollivier.
       
  2888 
       
  2889         [wx] Implement scheduleDispatchFunctionsOnMainThread for wx port.
       
  2890         https://bugs.webkit.org/show_bug.cgi?id=38480
       
  2891 
       
  2892         * wtf/wx/MainThreadWx.cpp:
       
  2893         (wxCallAfter::wxCallAfter):
       
  2894         (wxCallAfter::OnCallback):
       
  2895         (WTF::scheduleDispatchFunctionsOnMainThread):
       
  2896 
       
  2897 2010-05-03  Kevin Watters  <kevinwatters@gmail.com>
       
  2898 
       
  2899         Reviewed by Kevin Ollivier.
       
  2900 
       
  2901         [wx] Build and use Mac's ComplexTextController to support complex text in wx.
       
  2902         https://bugs.webkit.org/show_bug.cgi?id=38482
       
  2903 
       
  2904         * wtf/Platform.h:
       
  2905 
       
  2906 2010-05-03  Oliver Hunt  <oliver@apple.com>
       
  2907 
       
  2908         Reviewed by Maciej Stachowiak.
       
  2909 
       
  2910         Interpreter crashes due to incorrect refcounting of cached structures.
       
  2911         https://bugs.webkit.org/show_bug.cgi?id=38491
       
  2912         rdar://problem/7926160
       
  2913 
       
  2914         Make sure we ref/deref structures used for cached custom property getters
       
  2915 
       
  2916         * bytecode/CodeBlock.cpp:
       
  2917         (JSC::CodeBlock::derefStructures):
       
  2918         (JSC::CodeBlock::refStructures):
       
  2919 
       
  2920 2010-05-02  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  2921 
       
  2922         Reviewed by Eric Seidel.
       
  2923 
       
  2924         [Qt] Enable JIT for QtWebKit on Symbian
       
  2925         https://bugs.webkit.org/show_bug.cgi?id=38339
       
  2926 
       
  2927         JIT on Symbian has been stable for quite some time, it
       
  2928         is time to turn it on by default.
       
  2929 
       
  2930         * wtf/Platform.h:
       
  2931 
       
  2932 2010-04-29  Oliver Hunt  <oliver@apple.com>
       
  2933 
       
  2934         Reviewed by Gavin Barraclough.
       
  2935 
       
  2936         Add codegen support for unsigned right shift
       
  2937         https://bugs.webkit.org/show_bug.cgi?id=38375
       
  2938 
       
  2939         Expose unsigned right shift in the macro assembler, and make use of it
       
  2940         from the jit.  Currently if the result is outside the range 0..2^31-1
       
  2941         we simply fall back to the slow case, even in JSVALUE64 and JSVALUE32_64
       
  2942         where technically we could still return an immediate value.
       
  2943 
       
  2944         * assembler/MacroAssemblerARM.h:
       
  2945         (JSC::MacroAssemblerARM::urshift32):
       
  2946         * assembler/MacroAssemblerARMv7.h:
       
  2947         (JSC::MacroAssemblerARMv7::urshift32):
       
  2948         * assembler/MacroAssemblerX86Common.h:
       
  2949         (JSC::MacroAssemblerX86Common::urshift32):
       
  2950         * assembler/X86Assembler.h:
       
  2951         (JSC::X86Assembler::):
       
  2952         (JSC::X86Assembler::shrl_i8r):
       
  2953         (JSC::X86Assembler::shrl_CLr):
       
  2954            Add unsigned right shift to the x86 assembler
       
  2955         * jit/JIT.cpp:
       
  2956         (JSC::JIT::privateCompileMainPass):
       
  2957         (JSC::JIT::privateCompileSlowCases):
       
  2958            op_rshift no longer simply get thrown to a stub function
       
  2959         * jit/JIT.h:
       
  2960         * jit/JITArithmetic.cpp:
       
  2961         (JSC::JIT::emit_op_urshift):
       
  2962         (JSC::JIT::emitSlow_op_urshift):
       
  2963           JSVALUE32 and JSVALUE64 implementation.  Only supports
       
  2964           double lhs in JSVALUE64.
       
  2965         * jit/JITArithmetic32_64.cpp:
       
  2966         (JSC::JIT::emit_op_rshift):
       
  2967         (JSC::JIT::emitSlow_op_rshift):
       
  2968         (JSC::JIT::emit_op_urshift):
       
  2969         (JSC::JIT::emitSlow_op_urshift):
       
  2970           Refactor right shift code to have shared implementation between signed
       
  2971           and unsigned versions.
       
  2972 
       
  2973 2010-04-29  Oliver Hunt  <oliver@apple.com>
       
  2974 
       
  2975         Reviewed by Gavin Barraclough.
       
  2976 
       
  2977         Handle double on righthand side of a right shift
       
  2978         https://bugs.webkit.org/show_bug.cgi?id=38363
       
  2979 
       
  2980         In 64-bit we support right shift of a double, and there's no
       
  2981         reason not to in 32-bit either.  This is a 1.1% sunspider
       
  2982         improvement in 32bit.
       
  2983 
       
  2984         Given high performance javascript code frequently makes
       
  2985         use of bit operators to perform double->int conversion i'll
       
  2986         follow this patch up with similar patches for bitwise 'and'
       
  2987         and 'or'.
       
  2988 
       
  2989         * jit/JITArithmetic32_64.cpp:
       
  2990         (JSC::JIT::emit_op_rshift):
       
  2991         (JSC::JIT::emitSlow_op_rshift):
       
  2992 
       
  2993 2010-04-29  Oliver Hunt  <oliver@apple.com>
       
  2994 
       
  2995         Reviewed by Geoff Garen.
       
  2996 
       
  2997         Hoist JSVALUE32_64 arithmetic implementations into a separate file.
       
  2998 
       
  2999         * GNUmakefile.am:
       
  3000         * JavaScriptCore.gypi:
       
  3001         * JavaScriptCore.pro:
       
  3002         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
  3003         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  3004         * jit/JITArithmetic.cpp:
       
  3005         (JSC::JIT::emitSlow_op_jnless):
       
  3006         (JSC::JIT::emitSlow_op_jless):
       
  3007         (JSC::JIT::emitSlow_op_jnlesseq):
       
  3008         (JSC::JIT::emit_op_mod):
       
  3009         (JSC::JIT::compileBinaryArithOpSlowCase):
       
  3010         (JSC::JIT::emit_op_div):
       
  3011         (JSC::JIT::compileBinaryArithOp):
       
  3012         * jit/JITArithmetic32_64.cpp: Added.
       
  3013         (JSC::JIT::emit_op_negate):
       
  3014         (JSC::JIT::emitSlow_op_negate):
       
  3015         (JSC::JIT::emit_op_jnless):
       
  3016         (JSC::JIT::emitSlow_op_jnless):
       
  3017         (JSC::JIT::emit_op_jless):
       
  3018         (JSC::JIT::emitSlow_op_jless):
       
  3019         (JSC::JIT::emit_op_jnlesseq):
       
  3020         (JSC::JIT::emitSlow_op_jnlesseq):
       
  3021         (JSC::JIT::emit_op_lshift):
       
  3022         (JSC::JIT::emitSlow_op_lshift):
       
  3023         (JSC::JIT::emit_op_rshift):
       
  3024         (JSC::JIT::emitSlow_op_rshift):
       
  3025         (JSC::JIT::emit_op_bitand):
       
  3026         (JSC::JIT::emitSlow_op_bitand):
       
  3027         (JSC::JIT::emit_op_bitor):
       
  3028         (JSC::JIT::emitSlow_op_bitor):
       
  3029         (JSC::JIT::emit_op_bitxor):
       
  3030         (JSC::JIT::emitSlow_op_bitxor):
       
  3031         (JSC::JIT::emit_op_bitnot):
       
  3032         (JSC::JIT::emitSlow_op_bitnot):
       
  3033         (JSC::JIT::emit_op_post_inc):
       
  3034         (JSC::JIT::emitSlow_op_post_inc):
       
  3035         (JSC::JIT::emit_op_post_dec):
       
  3036         (JSC::JIT::emitSlow_op_post_dec):
       
  3037         (JSC::JIT::emit_op_pre_inc):
       
  3038         (JSC::JIT::emitSlow_op_pre_inc):
       
  3039         (JSC::JIT::emit_op_pre_dec):
       
  3040         (JSC::JIT::emitSlow_op_pre_dec):
       
  3041         (JSC::JIT::emit_op_add):
       
  3042         (JSC::JIT::emitAdd32Constant):
       
  3043         (JSC::JIT::emitSlow_op_add):
       
  3044         (JSC::JIT::emit_op_sub):
       
  3045         (JSC::JIT::emitSub32Constant):
       
  3046         (JSC::JIT::emitSlow_op_sub):
       
  3047         (JSC::JIT::emitBinaryDoubleOp):
       
  3048         (JSC::JIT::emit_op_mul):
       
  3049         (JSC::JIT::emitSlow_op_mul):
       
  3050         (JSC::JIT::emit_op_div):
       
  3051         (JSC::JIT::emitSlow_op_div):
       
  3052         (JSC::JIT::emit_op_mod):
       
  3053         (JSC::JIT::emitSlow_op_mod):
       
  3054 
       
  3055 2010-04-29  Zoltan Herczeg  <zherczeg@webkit.org>
       
  3056 
       
  3057         Reviewed by Oliver Hunt
       
  3058 
       
  3059         Add sqrt() instruction support for ARM assembler (using VFP)
       
  3060         https://bugs.webkit.org/show_bug.cgi?id=38312
       
  3061 
       
  3062         * assembler/ARMAssembler.h:
       
  3063         (JSC::ARMAssembler::):
       
  3064         (JSC::ARMAssembler::fsqrtd_r):
       
  3065         * assembler/MacroAssemblerARM.h:
       
  3066         (JSC::MacroAssemblerARM::supportsFloatingPointSqrt):
       
  3067         (JSC::MacroAssemblerARM::sqrtDouble):
       
  3068 
       
  3069 2010-04-29  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  3070 
       
  3071         Reviewed by Simon Hausmann.
       
  3072 
       
  3073         [Qt] Refactor qtscriptglobal.h
       
  3074         https://bugs.webkit.org/show_bug.cgi?id=37953
       
  3075 
       
  3076         Use the same pattern in qtscriptglobal.h as in 
       
  3077         qwebkitglobal.h without checking for specific OSs.
       
  3078 
       
  3079         * qt/api/qtscriptglobal.h:
       
  3080 
       
  3081 2010-04-29  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  3082 
       
  3083         Reviewed by Simon Hausmann.
       
  3084 
       
  3085         Small cleanup.
       
  3086 
       
  3087         QScriptValuePrivate constructor shouldn't take QScriptEngine pointer
       
  3088         as a parameter, because it breaks a private / public separation rule.
       
  3089         QScriptEnginePrivate::get(QScriptEngine*) should return
       
  3090         a QScriptEnginePrivate pointer instead of a QScriptEnginePtr, it simplifies
       
  3091         implementation.
       
  3092 
       
  3093         [Qt] QScriptValuePrivate class needs some cleanup.
       
  3094         https://bugs.webkit.org/show_bug.cgi?id=37729
       
  3095 
       
  3096         * qt/api/qscriptengine_p.h:
       
  3097         (QScriptEnginePrivate::get):
       
  3098         * qt/api/qscriptvalue.cpp:
       
  3099         (QScriptValue::QScriptValue):
       
  3100         * qt/api/qscriptvalue_p.h:
       
  3101         (QScriptValuePrivate::QScriptValuePrivate):
       
  3102 
       
  3103 2010-04-29  Kwang Yul Seo  <skyul@company100.net>
       
  3104 
       
  3105         Reviewed by Simon Hausmann.
       
  3106 
       
  3107         [WINCE] Export g_stackBase with JS_EXPORTDATA
       
  3108         https://bugs.webkit.org/show_bug.cgi?id=37437
       
  3109 
       
  3110         Export g_stackBase with JS_EXPORTDATA as it is used by SharedTimerWince.cpp.
       
  3111 
       
  3112         * runtime/Collector.cpp:
       
  3113 
       
  3114 2010-04-28  Oliver Hunt  <oliver@apple.com>
       
  3115 
       
  3116         Do an unordered compare so that we don't treat NaN incorrectly.
       
  3117 
       
  3118         RS=Gavin Barraclough
       
  3119 
       
  3120         * jit/ThunkGenerators.cpp:
       
  3121         (JSC::powThunkGenerator):
       
  3122 
       
  3123 2010-04-28  Oliver Hunt  <oliver@apple.com>
       
  3124 
       
  3125         Reviewed by Gavin Barraclough.
       
  3126 
       
  3127         Add fast paths for Math.pow and Math.sqrt
       
  3128         https://bugs.webkit.org/show_bug.cgi?id=38294
       
  3129 
       
  3130         Add specialized thunks for Math.pow and Math.sqrt.
       
  3131         This requires adding a sqrtDouble function to the MacroAssembler
       
  3132         and sqrtsd to the x86 assembler.
       
  3133 
       
  3134         Math.pow is slightly more complicated, in that we have
       
  3135         to implement exponentiation ourselves rather than relying
       
  3136         on hardware support.  The inline exponentiation is restricted
       
  3137         to positive integer exponents on a numeric base.  Exponentiation
       
  3138         is finally performed through the "Exponentiation by Squaring"
       
  3139         algorithm.
       
  3140 
       
  3141         * assembler/AbstractMacroAssembler.h:
       
  3142         (JSC::AbstractMacroAssembler::ImmPtr::ImmPtr):
       
  3143         * assembler/MacroAssemblerARM.h:
       
  3144         (JSC::MacroAssemblerARM::supportsFloatingPointSqrt):
       
  3145         (JSC::MacroAssemblerARM::loadDouble):
       
  3146         (JSC::MacroAssemblerARM::sqrtDouble):
       
  3147         * assembler/MacroAssemblerARMv7.h:
       
  3148         (JSC::MacroAssemblerARMv7::supportsFloatingPointSqrt):
       
  3149         (JSC::MacroAssemblerARMv7::sqrtDouble):
       
  3150         * assembler/MacroAssemblerX86.h:
       
  3151         (JSC::MacroAssemblerX86::loadDouble):
       
  3152         (JSC::MacroAssemblerX86::supportsFloatingPointSqrt):
       
  3153         * assembler/MacroAssemblerX86Common.h:
       
  3154         (JSC::MacroAssemblerX86Common::sqrtDouble):
       
  3155         * assembler/MacroAssemblerX86_64.h:
       
  3156         (JSC::MacroAssemblerX86_64::loadDouble):
       
  3157         (JSC::MacroAssemblerX86_64::supportsFloatingPointSqrt):
       
  3158         * assembler/X86Assembler.h:
       
  3159         (JSC::X86Assembler::):
       
  3160         (JSC::X86Assembler::movsd_mr):
       
  3161         (JSC::X86Assembler::sqrtsd_rr):
       
  3162         (JSC::X86Assembler::X86InstructionFormatter::twoByteOp):
       
  3163         (JSC::X86Assembler::X86InstructionFormatter::memoryModRM):
       
  3164         * create_hash_table:
       
  3165         * jit/JIT.h:
       
  3166         * jit/JITInlineMethods.h:
       
  3167         * jit/JITOpcodes.cpp:
       
  3168         * jit/JITStubs.h:
       
  3169         (JSC::JITThunks::ctiNativeCallThunk):
       
  3170         * jit/JSInterfaceJIT.h:
       
  3171         (JSC::JSInterfaceJIT::emitLoadDouble):
       
  3172         (JSC::JSInterfaceJIT::emitJumpIfImmediateNumber):
       
  3173         (JSC::JSInterfaceJIT::emitJumpIfNotImmediateNumber):
       
  3174         (JSC::JSInterfaceJIT::emitLoadInt32):
       
  3175         * jit/SpecializedThunkJIT.h:
       
  3176         (JSC::SpecializedThunkJIT::loadDoubleArgument):
       
  3177         (JSC::SpecializedThunkJIT::loadInt32Argument):
       
  3178         (JSC::SpecializedThunkJIT::returnJSValue):
       
  3179         (JSC::SpecializedThunkJIT::returnDouble):
       
  3180         (JSC::SpecializedThunkJIT::finalize):
       
  3181         * jit/ThunkGenerators.cpp:
       
  3182         (JSC::sqrtThunkGenerator):
       
  3183         (JSC::powThunkGenerator):
       
  3184         * jit/ThunkGenerators.h:
       
  3185         * runtime/Executable.h:
       
  3186         (JSC::NativeExecutable::NativeExecutable):
       
  3187         * runtime/JSFunction.cpp:
       
  3188         (JSC::JSFunction::JSFunction):
       
  3189 
       
  3190 2010-04-28  Mike Thole  <mthole@apple.com>
       
  3191 
       
  3192         Reviewed by Mark Rowe.
       
  3193 
       
  3194         Reenable WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK now that an
       
  3195         exports file for it has been added.
       
  3196 
       
  3197         * wtf/Platform.h:
       
  3198 
       
  3199 2010-04-28  Mike Thole  <mthole@apple.com>
       
  3200 
       
  3201         Build fix, not reviewed.
       
  3202 
       
  3203         * wtf/Platform.h:
       
  3204         Disable WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK until an exports file is created.
       
  3205 
       
  3206 2010-04-28  Mike Thole  <mthole@apple.com>
       
  3207 
       
  3208         Reviewed by David Kilzer.
       
  3209 
       
  3210         Add canAuthenticateAgainstProtectionSpace() to frame loader so that a protection space 
       
  3211         can be inspected before attempting to authenticate against it
       
  3212         https://bugs.webkit.org/show_bug.cgi?id=38271
       
  3213 
       
  3214         * wtf/Platform.h: Add WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK define.
       
  3215 
       
  3216 2010-04-28  Darin Adler  <darin@apple.com>
       
  3217 
       
  3218         Reviewed by Sam Weinig.
       
  3219 
       
  3220         Don't use CFAbsoluteTimeGetCurrent on Mac OS X, since it's just a cover
       
  3221         for gettimeofday anyway.
       
  3222 
       
  3223         * wtf/CurrentTime.cpp:
       
  3224         (WTF::currentTime): Remove the CF version of this. Change the "other POSIX"
       
  3225         version to pass 0 for the time zone instead of ignoring a return value.
       
  3226         Also get rid of unneeded type casts, since operations involving both
       
  3227         integers and doubles are always evaluated as doubles in C without explicit
       
  3228         type casting.
       
  3229 
       
  3230 2010-04-28  Darin Fisher  <darin@chromium.org>
       
  3231 
       
  3232         Reviewed by David Levin.
       
  3233 
       
  3234         [Chromium] callOnMainThread should equate to MessageLoop::PostTask
       
  3235         https://bugs.webkit.org/show_bug.cgi?id=38276
       
  3236 
       
  3237         * JavaScriptCore.gyp/JavaScriptCore.gyp:
       
  3238         * wtf/MainThread.cpp:
       
  3239         * wtf/chromium/ChromiumThreading.h:
       
  3240         * wtf/chromium/MainThreadChromium.cpp:
       
  3241         (WTF::initializeMainThread):
       
  3242         (WTF::callOnMainThread):
       
  3243         (WTF::callOnMainThreadAndWait):
       
  3244         (WTF::setMainThreadCallbacksPaused):
       
  3245         (WTF::isMainThread):
       
  3246 
       
  3247 2010-04-28  Simon Hausmann  <simon.hausmann@nokia.com>, Kent Hansen <kent.hansen@nokia.com>
       
  3248 
       
  3249         Reviewed by Darin Adler.
       
  3250 
       
  3251         JSC's currentThreadStackBase is not reentrant on some platforms
       
  3252         https://bugs.webkit.org/show_bug.cgi?id=37195
       
  3253 
       
  3254         This function needs to be reentrant to avoid memory corruption on platforms where
       
  3255         the implementation uses global variables.
       
  3256 
       
  3257         This patch adds a mutex lock where necessary and makes the Symbian implementation
       
  3258         reentrant.
       
  3259 
       
  3260         * runtime/Collector.cpp:
       
  3261         (JSC::currentThreadStackBaseMutex):
       
  3262         (JSC::currentThreadStackBase):
       
  3263 
       
  3264 2010-04-28  Thiago Macieira <thiago.macieira@nokia.com>
       
  3265 
       
  3266         Reviewed by Simon Hausmann.
       
  3267 
       
  3268         Fix compilation with gcc 3.4.
       
  3269 
       
  3270         AtomicStringImpl.h:29: error: base `WebCore::StringImpl' with only
       
  3271         non-default constructor in class without a constructor
       
  3272 
       
  3273         * wtf/text/AtomicStringImpl.h:
       
  3274         (WebCore::AtomicStringImpl::AtomicStringImpl): Provide a default constructor.
       
  3275         * wtf/text/StringImpl.h: Allow AtomicStringImpl to call a StringImpl constructor through a friend declaration.
       
  3276 
       
  3277 2010-04-27  Stephanie Lewis  <slewis@apple.com>
       
  3278 
       
  3279         Fix Tiger build.
       
  3280 
       
  3281         * wtf/FastMalloc.cpp:
       
  3282         (WTF::TCMalloc_PageHeap::Carve):
       
  3283 
       
  3284 2010-04-26  Stephanie Lewis  <slewis@apple.com>
       
  3285 
       
  3286         Reviewed by Geoff Garen.
       
  3287 
       
  3288         https://bugs.webkit.org/show_bug.cgi?id=38154 FastMalloc calls madvise too often.
       
  3289         <rdar://problem/7834433> REGRESSSION: 1.5% PLT regression due to 56028 (return memory quicker).  
       
  3290         To save on madvise calls when recommitting memory recommit the entire span and then carve it
       
  3291         instead of carving the span up and only committing the part that will be used immediately.
       
  3292 
       
  3293         * wtf/FastMalloc.cpp:
       
  3294         (WTF::TCMalloc_PageHeap::New):
       
  3295         (WTF::TCMalloc_PageHeap::AllocLarge):
       
  3296         (WTF::TCMalloc_PageHeap::Carve):
       
  3297 
       
  3298 2010-04-26  Oliver Hunt  <oliver@apple.com>
       
  3299 
       
  3300         Reviewed by Maciej Stachowiak.
       
  3301 
       
  3302         Add specialized thunks for a char code related string functions
       
  3303         https://bugs.webkit.org/show_bug.cgi?id=38177
       
  3304 
       
  3305         This is a simple extension to my prior patch.  Basically hoist the
       
  3306         existing character loading logic from the charCodeAt thunk and into
       
  3307         a helper function, then add a helper to load strings from the small
       
  3308         string cache.  This allows trivial implementations of fromCharCode
       
  3309         and charAt. 
       
  3310 
       
  3311         * create_hash_table:
       
  3312         * jit/SpecializedThunkJIT.h:
       
  3313         (JSC::SpecializedThunkJIT::returnJSCell):
       
  3314         (JSC::SpecializedThunkJIT::tagReturnAsJSCell):
       
  3315         * jit/ThunkGenerators.cpp:
       
  3316         (JSC::stringCharLoad):
       
  3317         (JSC::charToString):
       
  3318         (JSC::charCodeAtThunkGenerator):
       
  3319         (JSC::charAtThunkGenerator):
       
  3320         (JSC::fromCharCodeThunkGenerator):
       
  3321         * jit/ThunkGenerators.h:
       
  3322         * runtime/SmallStrings.h:
       
  3323         (JSC::SmallStrings::singleCharacterStrings):
       
  3324         * runtime/StringConstructor.cpp:
       
  3325         (JSC::StringConstructor::StringConstructor):
       
  3326 
       
  3327 2010-04-27  Thomas Zander <t.zander@nokia.com>
       
  3328 
       
  3329         Reviewed by Simon Hausmann.
       
  3330 
       
  3331         [Qt] Fix the build on Symbian on Linux using the Makefile based mkspec
       
  3332 
       
  3333         * JavaScriptCore.pri: It is necessary to specify the library search path
       
  3334         when linking against JavaScriptCore.
       
  3335 
       
  3336 2010-04-21  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  3337 
       
  3338         Reviewed by Simon Hausmann.
       
  3339 
       
  3340         Compile fix for Visual Studio 2010
       
  3341         https://bugs.webkit.org/show_bug.cgi?id=37867
       
  3342 
       
  3343         Patch by Prasanth Ullattil <prasanth.ullattil@nokia.com>
       
  3344 
       
  3345         * runtime/Structure.cpp:
       
  3346         (JSC::Structure::transitionTableAdd):
       
  3347         * wtf/MathExtras.h:
       
  3348         * wtf/Platform.h:
       
  3349 
       
  3350 2010-04-27  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  3351 
       
  3352         Reviewed by Simon Hausmann.
       
  3353 
       
  3354         Rename COMPILER(MSVC7) to COMPILER(MSVC7_OR_LOWER)
       
  3355 
       
  3356         * config.h:
       
  3357         (JSC::Structure::transitionTableAdd):
       
  3358         * wtf/Assertions.h:
       
  3359         * wtf/Atomics.h:
       
  3360         * wtf/CurrentTime.h:
       
  3361         (WTF::getLocalTime):
       
  3362         * wtf/Platform.h:
       
  3363         * wtf/StaticConstructors.h:
       
  3364         * wtf/StringExtras.h:
       
  3365         * wtf/Vector.h:
       
  3366         (WTF::::append):
       
  3367 
       
  3368 2010-04-15  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  3369 
       
  3370         Reviewed by Tor Arne Vestbø.
       
  3371 
       
  3372         [Qt] Fix Mac build break.
       
  3373 
       
  3374         https://bugs.webkit.org/show_bug.cgi?id=37867
       
  3375         - Make sure JavaScriptCore's debug_and_release config follows that
       
  3376           of WebCore.
       
  3377         - Use different name for JavaScriptCore target in debug and release
       
  3378           since they might be written in the same path at the same time on
       
  3379           parallel builds
       
  3380         - Consolidate the DESTDIR determination logic in JavaScriptCore.pri
       
  3381 
       
  3382         * JavaScriptCore.pri:
       
  3383         * JavaScriptCore.pro:
       
  3384 
       
  3385 2010-04-21  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  3386 
       
  3387         Reviewed by Kenneth Rohde Christiansen.
       
  3388 
       
  3389         [Qt] Make sure WebKit is not compiled using C++0x.
       
  3390         https://bugs.webkit.org/show_bug.cgi?id=37867
       
  3391 
       
  3392         As the rest of Qt compiles in the C++0x mode, people might start
       
  3393         compiling it in this mode. WebKit don't support this yet.
       
  3394 
       
  3395         Patch by Thiago Macieira <thiago.macieira@nokia.com>
       
  3396 
       
  3397         * JavaScriptCore.pro:
       
  3398 
       
  3399 2010-04-26  Oliver Hunt  <oliver@apple.com>
       
  3400 
       
  3401         Fix windows
       
  3402 
       
  3403         * jit/SpecializedThunkJIT.h:
       
  3404         (JSC::SpecializedThunkJIT::argumentToVirtualRegister):
       
  3405 
       
  3406 2010-04-26  Oliver Hunt  <oliver@apple.com>
       
  3407 
       
  3408         Reviewed by Gavin Barraclough.
       
  3409 
       
  3410         Need to support more efficient dispatch of lightweight builtins
       
  3411         https://bugs.webkit.org/show_bug.cgi?id=38155
       
  3412 
       
  3413         The problem with calling lightweight builtins is that marshalling
       
  3414         the call from the nitro calling convention to the system calling
       
  3415         convention is very expensive relative to the cost of the actually
       
  3416         evaluating the function.  To work around this problem this patch
       
  3417         adds the ability to define a custom thunk for a builtin.
       
  3418 
       
  3419         This allows us to use high performance custom implementations of
       
  3420         the common and sensible versions of simple builtins.  This patch
       
  3421         includes a simple (use of which is currently hardcoded) thunk for
       
  3422         charCodeAt.
       
  3423 
       
  3424         This adds a JSInterfaceJIT subclass called SpecializedThunkJIT
       
  3425         that has helper functions to remove (or at least reduce) the need
       
  3426         to have separate thunk implementations for each JSValue encoding.
       
  3427 
       
  3428         * GNUmakefile.am:
       
  3429         * JavaScriptCore.pro:
       
  3430         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
  3431         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  3432           Many project file updates
       
  3433 
       
  3434         * create_hash_table:
       
  3435           Add thunk generation callbacks to the hash tables, currently
       
  3436           we hardcode the script to only support charCodeAt
       
  3437 
       
  3438         * jit/JITStubCall.h:
       
  3439         * jit/JITStubs.cpp:
       
  3440         (JSC::JITThunks::~JITThunks):
       
  3441         (JSC::JITThunks::specializedThunk):
       
  3442         * jit/JITStubs.h:
       
  3443         * jit/SpecializedThunkJIT.h: Added.
       
  3444         (JSC::SpecializedThunkJIT::SpecializedThunkJIT):
       
  3445         (JSC::SpecializedThunkJIT::loadCellArgument):
       
  3446         (JSC::SpecializedThunkJIT::loadJSStringArgument):
       
  3447         (JSC::SpecializedThunkJIT::loadInt32Argument):
       
  3448         (JSC::SpecializedThunkJIT::appendFailure):
       
  3449         (JSC::SpecializedThunkJIT::returnInt32):
       
  3450         (JSC::SpecializedThunkJIT::finalize):
       
  3451         (JSC::SpecializedThunkJIT::argumentToVirtualRegister):
       
  3452         (JSC::SpecializedThunkJIT::tagReturnAsInt32):
       
  3453         * jit/ThunkGenerators.cpp: Added.
       
  3454         (JSC::ThunkHelpers::stringImplDataOffset):
       
  3455         (JSC::ThunkHelpers::jsStringLengthOffset):
       
  3456         (JSC::ThunkHelpers::jsStringValueOffset):
       
  3457         (JSC::charCodeAtThunkGenerator):
       
  3458         * jit/ThunkGenerators.h: Added.
       
  3459         * runtime/Executable.h:
       
  3460         (JSC::NativeExecutable::NativeExecutable):
       
  3461         * runtime/JSFunction.cpp:
       
  3462         (JSC::JSFunction::JSFunction):
       
  3463         * runtime/JSFunction.h:
       
  3464         * runtime/JSGlobalData.h:
       
  3465         (JSC::JSGlobalData::getThunk):
       
  3466         * runtime/JSString.h:
       
  3467         (JSC::):
       
  3468         * runtime/JSValue.h:
       
  3469           Protect some of the JSVALUE32 and JSVALUE32_64 only constants
       
  3470           and function behind appropriate USE() guards to make it harder
       
  3471           to use the wrong flags for the target build.
       
  3472         * runtime/Lookup.cpp:
       
  3473         (JSC::HashTable::createTable):
       
  3474         (JSC::setUpStaticFunctionSlot):
       
  3475         * runtime/Lookup.h:
       
  3476         (JSC::HashEntry::initialize):
       
  3477         (JSC::HashEntry::generator):
       
  3478         (JSC::HashEntry::):
       
  3479           Make the lookup tables use a specialized thunkGenerator
       
  3480           if present
       
  3481         * wtf/text/StringImpl.h:
       
  3482 
       
  3483 2010-04-26  Oliver Hunt  <oliver@apple.com>
       
  3484 
       
  3485         Build fix
       
  3486 
       
  3487         * runtime/JSImmediate.h:
       
  3488         * runtime/JSValue.h:
       
  3489 
       
  3490 2010-04-26  Oliver Hunt  <oliver@apple.com>
       
  3491 
       
  3492         Reviewed by Gavin Barraclough.
       
  3493 
       
  3494         Factor some basic JS interface logic out of JIT and into a superclass
       
  3495         https://bugs.webkit.org/show_bug.cgi?id=38163
       
  3496 
       
  3497         Create JSInterfaceJIT to hold some common low level functions for
       
  3498         interacting with the JS RegisterFile.  Doing this separately from
       
  3499         https://bugs.webkit.org/show_bug.cgi?id=38155 to ease reviewing.
       
  3500 
       
  3501         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  3502         * jit/JIT.h:
       
  3503         * jit/JITInlineMethods.h:
       
  3504         (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
       
  3505         * jit/JSInterfaceJIT.h: Added.
       
  3506         (JSC::JSInterfaceJIT::emitLoadJSCell):
       
  3507         (JSC::JSInterfaceJIT::emitJumpIfNotJSCell):
       
  3508         (JSC::JSInterfaceJIT::emitLoadInt32):
       
  3509         (JSC::JSInterfaceJIT::tagFor):
       
  3510         (JSC::JSInterfaceJIT::payloadFor):
       
  3511         (JSC::JSInterfaceJIT::addressFor):
       
  3512 
       
  3513 2010-04-26  Sam Weinig  <sam@webkit.org>
       
  3514 
       
  3515         Fix Tiger build.
       
  3516 
       
  3517         * wtf/mac/MainThreadMac.mm:
       
  3518         (WTF::isMainThread):
       
  3519 
       
  3520 2010-04-26  Geoffrey Garen  <ggaren@apple.com>
       
  3521 
       
  3522         Reviewed by Sam Weinig.
       
  3523 
       
  3524         <rdar://problem/7766413>
       
  3525         
       
  3526         Fixed a crash seen when using the JavaScriptCore API with WebKit.
       
  3527         
       
  3528         No layout test because DumpRenderTree doesn't use the JavaScriptCore API
       
  3529         in this way.
       
  3530 
       
  3531         * interpreter/RegisterFile.cpp:
       
  3532         (JSC::RegisterFile::setGlobalObject):
       
  3533         (JSC::RegisterFile::clearGlobalObject):
       
  3534         (JSC::RegisterFile::globalObject):
       
  3535         * interpreter/RegisterFile.h:
       
  3536         (JSC::RegisterFile::RegisterFile): Use WeakGCPtr for managing m_globalObject,
       
  3537         since it's a weak pointer. (We never noticed this error before because,
       
  3538         in WebKit, global objects always have a self-reference in a global variable,
       
  3539         so marking the register file's global variables would keep m_globalObject
       
  3540         alive. In the JavaScriptCore API, you can allocate a global object with
       
  3541         no self-reference.)
       
  3542 
       
  3543         * runtime/JSActivation.h: Removed unneeded #include.
       
  3544 
       
  3545         * runtime/JSGlobalObject.cpp:
       
  3546         (JSC::JSGlobalObject::~JSGlobalObject): Don't use ==, since a weak
       
  3547         pointer is 0 when the object it points to runs its destructor.
       
  3548 
       
  3549         * runtime/WeakGCPtr.h:
       
  3550         (JSC::WeakGCPtr::clear): Changed to return a bool indicating whether the
       
  3551         clear actually happened.
       
  3552         (JSC::WeakGCPtr::assign): Changed to forbid assignment of 0 as a shorthand
       
  3553         for calling clear(). A client should never clear by assigning 0, since
       
  3554         clear() should be conditional on whether the object doing the clearing
       
  3555         is still pointed to by the weak pointer. (Otherwise, a zombie object might
       
  3556         clear a pointer to a new, valid object.)
       
  3557 
       
  3558 2010-04-25  Sam Weinig  <sam@webkit.org>
       
  3559 
       
  3560         Reviewed by Maciej Stachowiak.
       
  3561 
       
  3562         Fix for https://bugs.webkit.org/show_bug.cgi?id=38097
       
  3563         Disentangle initializing the main thread from initializing threading
       
  3564 
       
  3565         This is the first step in getting rid of the WEB_THREAD #define and
       
  3566         paving the way to allowing mac both WebKit and WebKit2 to use the same
       
  3567         WebCore.
       
  3568 
       
  3569         * JavaScriptCore.exp: Export initializeMainThread and initializeMainThreadToProcessMainThread.
       
  3570         * JavaScriptCore.xcodeproj/project.pbxproj: Sort files.
       
  3571 
       
  3572         * wtf/MainThread.cpp:
       
  3573         (WTF::mainThreadInitializationMutex):
       
  3574         (WTF::mainThreadFunctionQueueMutex):
       
  3575         (WTF::initializeMainThread):
       
  3576         (WTF::deprecatedInitializeMainThread):
       
  3577         * wtf/MainThread.h:
       
  3578         Added Mac only initializeMainThreadToProcessMainThread which sets up callOnMainThread
       
  3579         and isMainThead calls to assume that WebCore's main thread is also the
       
  3580         process's main thread. Since it is possible that both initializeMainThread
       
  3581         and initializeMainThreadToProcessMainThread could be called, the first one called
       
  3582         wins (either will work).
       
  3583 
       
  3584         * wtf/Threading.h: Moved to top of file.
       
  3585 
       
  3586         * wtf/ThreadingPthreads.cpp:
       
  3587         (WTF::initializeThreading): Remove call to initializeMainThread.
       
  3588         * wtf/ThreadingWin.cpp:
       
  3589         (WTF::initializeThreading): Ditto.
       
  3590         * wtf/gtk/ThreadingGtk.cpp:
       
  3591         (WTF::initializeThreading): Ditto.
       
  3592 
       
  3593         * wtf/mac/MainThreadMac.mm:
       
  3594         (WTF::initializeMainThreadPlatform):
       
  3595         (WTF::initializeMainThreadToProcessMainThread):
       
  3596         (WTF::scheduleDispatchFunctionsOnMainThread):
       
  3597         (WTF::isMainThread):
       
  3598         Add runtime switch between the old behavior of using the system's main
       
  3599         thread and a stored pointer to the main thread. Tiger always uses the
       
  3600         system's main thread.
       
  3601 
       
  3602         * wtf/qt/ThreadingQt.cpp:
       
  3603         (WTF::initializeThreading): Remove call to initializeMainThread.
       
  3604         * wtf/win/MainThreadWin.cpp:
       
  3605         (WTF::initializeMainThreadPlatform): Add call to initializeCurrentThreadInternal
       
  3606         removed from initializeThreading.
       
  3607 
       
  3608 2010-04-26  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  3609 
       
  3610         Reviewed by Kenneth Rohde Christiansen.
       
  3611 
       
  3612         Fix a memory leak in the QScriptString.
       
  3613 
       
  3614         QScriptStringPrivate's constructor shouldn't call JSStringRetain as
       
  3615         QScriptConverter implicitly pass a JSStringRef ownership.
       
  3616 
       
  3617         [Qt] QScriptStringPrivate c'tor problem
       
  3618         https://bugs.webkit.org/show_bug.cgi?id=38110
       
  3619 
       
  3620         * qt/api/qscriptstring_p.h:
       
  3621         (QScriptStringPrivate::QScriptStringPrivate):
       
  3622 
       
  3623 2010-04-24  Darin Adler  <darin@apple.com>
       
  3624 
       
  3625         Reviewed by Dan Bernstein.
       
  3626 
       
  3627         REGRESSION (r56560): Crash in parseFloat if passed invalid UTF-16 data
       
  3628         https://bugs.webkit.org/show_bug.cgi?id=38083
       
  3629         rdar://problem/7901044
       
  3630 
       
  3631         Tests: fast/js/ToNumber.html
       
  3632                fast/js/parseFloat.html
       
  3633 
       
  3634         * runtime/JSGlobalObjectFunctions.cpp:
       
  3635         (JSC::parseInt): Added a FIXME comment about a problem I noticed.
       
  3636         (JSC::parseFloat): Added a FIXME comment about a problem I noticed;
       
  3637         covered by test cases in the test I added.
       
  3638         * runtime/UString.cpp:
       
  3639         (JSC::UString::toDouble): Added FIXME comments about two problems I
       
  3640         noticed; covered by test cases in the tests I added. Added a return
       
  3641         statement so we don't crash when illegal UTF-16 sequences are present.
       
  3642 
       
  3643 2010-04-24  Anton Muhin  <antonm@chromium.org>
       
  3644 
       
  3645         Reviewed by Darin Adler.
       
  3646 
       
  3647         Allow to construct HashTraits<WebCore::QualifiedName>::constructDeletedValue
       
  3648 
       
  3649         Former implementation attempted to use AtomicString(HashTableDeletedValue)
       
  3650         however those values cannot be used that way: one cannot construct
       
  3651         QualifiedNameImpl out of such AtomicString as we'll try to lookup this string
       
  3652         in the table, for example.
       
  3653         https://bugs.webkit.org/show_bug.cgi?id=37722
       
  3654 
       
  3655         * wtf/RefPtr.h: expose hash table deleted value
       
  3656 
       
  3657 2010-04-23  Sam Weinig  <sam@webkit.org>
       
  3658 
       
  3659         Reviewed by David Levin.
       
  3660 
       
  3661         Fix for https://bugs.webkit.org/show_bug.cgi?id=38060
       
  3662         Split up Threading.h
       
  3663 
       
  3664         Move bits for of Threading.h into 3 new files.
       
  3665         - Atomics.h for atomic operations.
       
  3666         - ThreadSafeShared.h for the ThreadSafeShared class.
       
  3667         - ThreadingPrimitives.h for the primitives and platform types.
       
  3668 
       
  3669         Basic threading operations (creation, etc.) remain in Threading.h.
       
  3670 
       
  3671         * GNUmakefile.am:
       
  3672         * JavaScriptCore.gypi:
       
  3673         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
       
  3674         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  3675         * wtf/Atomics.h: Copied from wtf/Threading.h.
       
  3676         * wtf/ThreadSafeShared.h: Copied from wtf/Threading.h.
       
  3677         * wtf/Threading.h:
       
  3678         * wtf/ThreadingPrimitives.h: Copied from wtf/Threading.h.
       
  3679 
       
  3680 2010-04-23  Sam Weinig  <sam@webkit.org>
       
  3681 
       
  3682         Fix Qt build.
       
  3683 
       
  3684         * wtf/qt/MainThreadQt.cpp: #include <QThread>
       
  3685 
       
  3686 2010-04-22  Sam Weinig  <sam@webkit.org>
       
  3687 
       
  3688         Reviewed by Anders Carlsson.
       
  3689 
       
  3690         Fix for https://bugs.webkit.org/show_bug.cgi?id=38022
       
  3691         Move isMainThread predicate function to MainThread.h
       
  3692 
       
  3693         * wtf/MainThread.cpp:
       
  3694         (WTF::initializeMainThread):
       
  3695         (WTF::isMainThread):
       
  3696         * wtf/MainThread.h:
       
  3697         * wtf/Threading.h:
       
  3698         * wtf/ThreadingPthreads.cpp:
       
  3699         (WTF::initializeThreading):
       
  3700         * wtf/ThreadingWin.cpp:
       
  3701         (WTF::initializeThreading):
       
  3702         * wtf/gtk/ThreadingGtk.cpp:
       
  3703         (WTF::initializeThreading):
       
  3704         * wtf/mac/MainThreadMac.mm:
       
  3705         (WTF::initializeMainThreadPlatform):
       
  3706         (WTF::isMainThread):
       
  3707         * wtf/qt/MainThreadQt.cpp:
       
  3708         (WTF::isMainThread):
       
  3709         * wtf/qt/ThreadingQt.cpp:
       
  3710         (WTF::initializeThreading):
       
  3711         * wtf/text/AtomicString.cpp:
       
  3712 
       
  3713 2010-04-23  Gabor Rapcsanyi  <rgabor@inf.u-szeged.hu>
       
  3714 
       
  3715         Reviewed by Laszlo Gombos.
       
  3716 
       
  3717         Add RVCT support for Linux
       
  3718 
       
  3719         Developed in cooperation with Gabor Loki.
       
  3720 
       
  3721         * API/JSStringRef.h:
       
  3722         * jit/ExecutableAllocator.h:
       
  3723         * jit/ExecutableAllocatorPosix.cpp:
       
  3724         (JSC::ExecutableAllocator::cacheFlush):
       
  3725         * jit/JITStubs.cpp:
       
  3726         * wtf/MathExtras.h:
       
  3727         * wtf/unicode/qt4/UnicodeQt4.h:
       
  3728 
       
  3729 2010-04-23  Patrick Gansterer  <paroga@paroga.com>
       
  3730 
       
  3731         Reviewed by Laszlo Gombos.
       
  3732 
       
  3733         [WIN] Move OwnPtrWin.cpp into platform specific folder.
       
  3734         https://bugs.webkit.org/show_bug.cgi?id=38042
       
  3735 
       
  3736         * JavaScriptCore.gypi:
       
  3737         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
       
  3738         * wtf/OwnPtrWin.cpp: Removed.
       
  3739         * wtf/win/OwnPtrWin.cpp: Copied from JavaScriptCore/wtf/OwnPtrWin.cpp.
       
  3740 
       
  3741 2010-04-23  Patrick Gansterer  <paroga@paroga.com>
       
  3742 
       
  3743         Reviewed by Laszlo Gombos.
       
  3744 
       
  3745         [BREWMP] Move OwnPtrBrew.cpp into platform specific folder.
       
  3746         https://bugs.webkit.org/show_bug.cgi?id=38042
       
  3747 
       
  3748         * wtf/OwnPtrBrew.cpp: Removed.
       
  3749         * wtf/brew/OwnPtrBrew.cpp: Copied from JavaScriptCore/wtf/OwnPtrBrew.cpp.
       
  3750 
       
  3751 2010-04-22  Steve Block  <steveblock@google.com>
       
  3752 
       
  3753         Reviewed by Adam Barth.
       
  3754 
       
  3755         Update Android to use isfinite, isinf, isnan and signbit from namespace std.
       
  3756         https://bugs.webkit.org/show_bug.cgi?id=37948
       
  3757 
       
  3758         * wtf/MathExtras.h:
       
  3759 
       
  3760 2010-04-22  Fumitoshi Ukai  <ukai@chromium.org>
       
  3761 
       
  3762         Unreviewed build fix.
       
  3763 
       
  3764         * wtf/MD5.cpp: fix include path of CString.h
       
  3765 
       
  3766 2010-04-22  Fumitoshi Ukai  <ukai@chromium.org>
       
  3767 
       
  3768         Reviewed by Adam Barth.
       
  3769 
       
  3770         MD5 is required for WebSocket new protocol implementation
       
  3771         https://bugs.webkit.org/show_bug.cgi?id=37913
       
  3772 
       
  3773         * GNUmakefile.am:
       
  3774         * JavaScriptCore.exp:
       
  3775         * JavaScriptCore.gypi:
       
  3776         * JavaScriptCore.pro:
       
  3777         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  3778         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
       
  3779         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  3780         * wtf/MD5.cpp: Added.
       
  3781         * wtf/MD5.h: Added.
       
  3782 
       
  3783 2010-04-22  Gavin Barraclough  <barraclough@apple.com>
       
  3784 
       
  3785         Reviewed by NOBODY (build fix).
       
  3786         Errk, accidentally committed commenting out two ASSERTs! reverting.
       
  3787 
       
  3788         * runtime/Collector.cpp:
       
  3789         (JSC::Heap::protect):
       
  3790         (JSC::Heap::unprotect):
       
  3791 
       
  3792 2010-04-22  Gavin Barraclough  <barraclough@apple.com>
       
  3793 
       
  3794         Reviewed by Geoff Garen.
       
  3795 
       
  3796         https://bugs.webkit.org/show_bug.cgi?id=38006
       
  3797         Change lifetime of JSC::IdentifierTables used by WebCores to match AtomicStringTable
       
  3798 
       
  3799         Presently JSC's IdentifierTables are owned by the JSGlobalData.  For
       
  3800         JSGlobalData objects created via the API this should continue to be the case,
       
  3801         but for the JSGlobalData objects used by WebCore (the main thread's common
       
  3802         global data, and those for workers) use a IdentifierTable provided (and owned)
       
  3803         by wtfThreadData.  This allow the lifetime of these IdentifierTable to match
       
  3804         those of the corresponding AtomicStringTables.
       
  3805 
       
  3806         * API/APIShims.h:
       
  3807         (JSC::APIEntryShim::APIEntryShim):
       
  3808         * API/JSContextRef.cpp:
       
  3809         (JSContextGroupCreate):
       
  3810         * runtime/Collector.cpp:
       
  3811         (JSC::Heap::protect):
       
  3812         (JSC::Heap::unprotect):
       
  3813         (JSC::Heap::markRoots):
       
  3814         * runtime/JSGlobalData.cpp:
       
  3815         (JSC::JSGlobalData::JSGlobalData):
       
  3816         (JSC::JSGlobalData::~JSGlobalData):
       
  3817         (JSC::JSGlobalData::createContextGroup):
       
  3818         (JSC::JSGlobalData::create):
       
  3819         (JSC::JSGlobalData::sharedInstance):
       
  3820         * runtime/JSGlobalData.h:
       
  3821         (JSC::JSGlobalData::):
       
  3822         (JSC::JSGlobalData::isSharedInstance):
       
  3823         * runtime/JSLock.cpp:
       
  3824         (JSC::JSLock::JSLock):
       
  3825         (JSC::JSLock::lock):
       
  3826         (JSC::JSLock::unlock):
       
  3827         (JSC::JSLock::DropAllLocks::DropAllLocks):
       
  3828         * wtf/WTFThreadData.cpp:
       
  3829         (WTF::WTFThreadData::WTFThreadData):
       
  3830         (WTF::WTFThreadData::~WTFThreadData):
       
  3831 
       
  3832 2010-04-22  Sheriff Bot  <webkit.review.bot@gmail.com>
       
  3833 
       
  3834         Unreviewed, rolling out r58110.
       
  3835         http://trac.webkit.org/changeset/58110
       
  3836         https://bugs.webkit.org/show_bug.cgi?id=38007
       
  3837 
       
  3838         Caused an internal compiler error on Qt (Requested by abarth
       
  3839         on #webkit).
       
  3840 
       
  3841         * wtf/MathExtras.h:
       
  3842 
       
  3843 2010-04-22  Gavin Barraclough  <barraclough@apple.com>
       
  3844 
       
  3845         Reviewed by NOBODY (windows build fix).
       
  3846 
       
  3847         * API/JSWeakObjectMapRefPrivate.cpp:
       
  3848 
       
  3849 2010-04-22  Gavin Barraclough  <barraclough@apple.com>
       
  3850 
       
  3851         Reviewed by NOBODY (windows build fix).
       
  3852 
       
  3853         * API/JSBase.cpp:
       
  3854         * API/JSCallbackObject.cpp:
       
  3855 
       
  3856 2010-04-22  Gavin Barraclough  <barraclough@apple.com>
       
  3857 
       
  3858         Reviewed by Geoff Garen.
       
  3859 
       
  3860         https://bugs.webkit.org/show_bug.cgi?id=37978
       
  3861         Unify JSC::IdentifierTable and WebCore::AtomicStringTable implementations.
       
  3862 
       
  3863         These two classes both implement a HashSet of uniqued StringImpls, with
       
  3864         translator classes to avoid unnecessary object creation. The only difference
       
  3865         between the classes is which flag (isIdentifier or inTable) is set.
       
  3866         Combine the two classes using a template predicated on which flag to use.
       
  3867 
       
  3868         New class AtomicStringTable created, containing all the goodness from
       
  3869         IdentifierTable & AtomicStringTable, expect for Identifier's literalTable,
       
  3870         which has been moved onto JSGlobalData. Removed duplicate string translator
       
  3871         classes. Renamed StringImpl's inTable flag to more explicit 'isAtomic',
       
  3872         and set this on the empty string (which matches Identifier behaviour, and
       
  3873         removes a redundant check for zero-length).
       
  3874 
       
  3875         * GNUmakefile.am:
       
  3876         * JavaScriptCore.gypi:
       
  3877         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
       
  3878         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  3879         * runtime/Identifier.cpp:
       
  3880         (JSC::createLiteralTable):
       
  3881         (JSC::deleteLiteralTable):
       
  3882         (JSC::Identifier::add):
       
  3883         (JSC::Identifier::addSlowCase):
       
  3884         * runtime/Identifier.h:
       
  3885         * runtime/JSGlobalData.cpp:
       
  3886         (JSC::JSGlobalData::JSGlobalData):
       
  3887         (JSC::JSGlobalData::~JSGlobalData):
       
  3888         * runtime/JSGlobalData.h:
       
  3889         * wtf/WTFThreadData.cpp:
       
  3890         (WTF::WTFThreadData::WTFThreadData):
       
  3891         (WTF::WTFThreadData::~WTFThreadData):
       
  3892         * wtf/WTFThreadData.h:
       
  3893         (WTF::WTFThreadData::atomicStringTable):
       
  3894         * wtf/text/AtomicString.cpp:
       
  3895         (WebCore::table):
       
  3896         (WebCore::operator==):
       
  3897         (WebCore::AtomicString::add):
       
  3898         (WebCore::AtomicString::find):
       
  3899         (WebCore::AtomicString::remove):
       
  3900         * wtf/text/AtomicStringTable.h: Added.
       
  3901         (WTF::CStringTranslator::hash):
       
  3902         (WTF::CStringTranslator::equal):
       
  3903         (WTF::CStringTranslator::translate):
       
  3904         (WTF::UCharBufferTranslator::hash):
       
  3905         (WTF::UCharBufferTranslator::equal):
       
  3906         (WTF::UCharBufferTranslator::translate):
       
  3907         (WTF::HashAndCharactersTranslator::hash):
       
  3908         (WTF::HashAndCharactersTranslator::equal):
       
  3909         (WTF::HashAndCharactersTranslator::translate):
       
  3910         (WTF::IdentifierOrAtomicStringTable::remove):
       
  3911         (WTF::::~IdentifierOrAtomicStringTable):
       
  3912         (WTF::::add):
       
  3913         (WTF::::find):
       
  3914         * wtf/text/StringImpl.cpp:
       
  3915         (WebCore::StringImpl::~StringImpl):
       
  3916         * wtf/text/StringImpl.h:
       
  3917         (WebCore::StringImpl::isAtomic):
       
  3918         (WebCore::StringImpl::setIsAtomic):
       
  3919         (WebCore::equal):
       
  3920         * wtf/text/StringImplBase.h:
       
  3921         (WTF::StringImplBase::StringImplBase):
       
  3922 
       
  3923 2010-04-22  Steve Block  <steveblock@google.com>
       
  3924 
       
  3925         Reviewed by Adam Barth.
       
  3926 
       
  3927         Update Android to use isfinite, isinf, isnan and signbit from namespace std.
       
  3928         https://bugs.webkit.org/show_bug.cgi?id=37948
       
  3929 
       
  3930         * wtf/MathExtras.h:
       
  3931 
       
  3932 2010-04-22  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  3933 
       
  3934         Reviewed by Kenneth Rohde Christiansen.
       
  3935 
       
  3936         [Qt] Remove dependency of JSC to QtGui
       
  3937         https://bugs.webkit.org/show_bug.cgi?id=37867
       
  3938 
       
  3939         The patch also make sure that hal.h is in the include path on Symbian.
       
  3940         The dependency to QtGui took care of that before.
       
  3941 
       
  3942         Patch by Thiago Macieira <thiago.macieira@nokia.com>
       
  3943              and Rohan McGovern <rohan.mcgovern@nokia.com>
       
  3944 
       
  3945         * JavaScriptCore.pri:
       
  3946         * JavaScriptCore.pro:
       
  3947 
       
  3948 2010-04-22  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  3949 
       
  3950         Reviewed by Tor Arne Vestbø.
       
  3951 
       
  3952         [Qt] Corrects symbols visibility for JavaScriptCore.
       
  3953 
       
  3954         https://bugs.webkit.org/show_bug.cgi?id=37867
       
  3955 
       
  3956         * JavaScriptCore.pro:
       
  3957 
       
  3958 2010-04-22  Gabor Loki  <loki@webkit.org>
       
  3959 
       
  3960         Reviewed by Gavin Barraclough.
       
  3961 
       
  3962         Use BLX and BX to keep happy the return stack predictor above ARMv4
       
  3963         https://bugs.webkit.org/show_bug.cgi?id=37862
       
  3964 
       
  3965         Inspired by Jacob Bramley's patch from JaegerMonkey
       
  3966 
       
  3967         * assembler/ARMAssembler.cpp:
       
  3968         (JSC::ARMAssembler::executableCopy):
       
  3969         * assembler/ARMAssembler.h:
       
  3970         (JSC::ARMAssembler::):
       
  3971         (JSC::ARMAssembler::bx):
       
  3972         (JSC::ARMAssembler::blx):
       
  3973         (JSC::ARMAssembler::loadBranchTarget):
       
  3974         (JSC::ARMAssembler::jmp):
       
  3975         (JSC::ARMAssembler::getLdrImmAddress):
       
  3976         * assembler/MacroAssemblerARM.h:
       
  3977         (JSC::MacroAssemblerARM::jump):
       
  3978         (JSC::MacroAssemblerARM::nearCall):
       
  3979         (JSC::MacroAssemblerARM::call):
       
  3980         (JSC::MacroAssemblerARM::ret):
       
  3981         (JSC::MacroAssemblerARM::prepareCall):
       
  3982         (JSC::MacroAssemblerARM::call32):
       
  3983 
       
  3984 2010-04-21  Andy Estes  <aestes@apple.com>
       
  3985 
       
  3986         Rubber stamped by Mark Rowe.
       
  3987 
       
  3988         Export WTF::deleteOwnedPtr(HFONT).
       
  3989 
       
  3990         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  3991 
       
  3992 2010-04-21  Gavin Barraclough  <barraclough@apple.com>
       
  3993 
       
  3994         Rubber Stamped by Oliver Hunt.
       
  3995 
       
  3996         Make SmallStrings store an array of RefPtr<StringImpl>,
       
  3997         instead of a direct array of StringImpls.  This allows
       
  3998         us to remove a friend (and a layering violation) from
       
  3999         WTF::StringImpl, and makes it so that all StringImpls
       
  4000         are individually heap allocated.
       
  4001 
       
  4002         * runtime/SmallStrings.cpp:
       
  4003         (JSC::SmallStringsStorage::rep):
       
  4004         (JSC::SmallStringsStorage::SmallStringsStorage):
       
  4005         * wtf/text/StringImpl.h:
       
  4006 
       
  4007 2010-04-21  Sam Weinig  <sam@webkit.org>
       
  4008 
       
  4009         Reviewed by Geoffrey Garen.
       
  4010 
       
  4011         Fix for https://bugs.webkit.org/show_bug.cgi?id=37937
       
  4012         Wean JavaScriptCore off calls to isMainThread()
       
  4013 
       
  4014         - Replace use of isMainThread() for interpreter reentry checks
       
  4015           with a stored value on the JSGlobalData.
       
  4016         - Replace use of isMainThread() for useMainThread only check in the
       
  4017           collector with a stored exclusive thread.
       
  4018 
       
  4019         * API/JSContextRef.cpp:
       
  4020         (JSContextGroupCreate):
       
  4021         Always default to a small stack type for uses of the JSC API. It is
       
  4022         unlikely that the interpreter reentry required on the web will be as
       
  4023         important for other uses of JavaScriptCore. 
       
  4024 
       
  4025         * JavaScriptCore.exp: 
       
  4026         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  4027         Update exports.
       
  4028 
       
  4029         * interpreter/Interpreter.cpp:
       
  4030         (JSC::Interpreter::execute):
       
  4031         (JSC::Interpreter::prepareForRepeatCall):
       
  4032         Use new stored JSGlobalData::maxReentryDepth instead of isMainThread().
       
  4033 
       
  4034         * interpreter/Interpreter.h:
       
  4035         Rename MaxMainThreadReentryDepth to MaxLargeThreadReentryDepth and 
       
  4036         MaxSecondaryThreadReentryDepth to MaxSmallThreadReentryDepth.
       
  4037 
       
  4038         * jsc.cpp:
       
  4039         (main): Use the a large stack for jsc since it is always using the
       
  4040         main thread.
       
  4041         
       
  4042         * runtime/ArrayPrototype.cpp:
       
  4043         (JSC::arrayProtoFuncToString):
       
  4044         (JSC::arrayProtoFuncToLocaleString):
       
  4045         (JSC::arrayProtoFuncJoin):
       
  4046         Use new stored JSGlobalData::maxReentryDepth instead of isMainThread().
       
  4047 
       
  4048         * runtime/Collector.cpp:
       
  4049         (JSC::Heap::registerThread):
       
  4050         Use the concept of making JSC run on an exclusiveThread instead of
       
  4051         forcing a mainThreadOnly assertion.
       
  4052         
       
  4053         * runtime/JSGlobalData.cpp:
       
  4054         (JSC::JSGlobalData::JSGlobalData):
       
  4055         (JSC::JSGlobalData::createNonDefault):
       
  4056         (JSC::JSGlobalData::create):
       
  4057         (JSC::JSGlobalData::createLeaked):
       
  4058         (JSC::JSGlobalData::sharedInstance):
       
  4059         * runtime/JSGlobalData.h:
       
  4060         Add ThreadStackType argument to JSGlobalData constructors and set
       
  4061         maxReentryDepth based on it.
       
  4062 
       
  4063 2010-04-21  Gavin Barraclough  <barraclough@apple.com>
       
  4064 
       
  4065         Reviewed by NOBODY (windows build fix pt. 3).
       
  4066 
       
  4067         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  4068 
       
  4069 2010-04-21  Gavin Barraclough  <barraclough@apple.com>
       
  4070 
       
  4071         Reviewed by NOBODY (windows build fix pt. 2).
       
  4072 
       
  4073         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  4074 
       
  4075 2010-04-21  Gavin Barraclough  <barraclough@apple.com>
       
  4076 
       
  4077         Reviewed by NOBODY (Qt build fix).
       
  4078 
       
  4079         * JavaScriptCore.gypi:
       
  4080         * JavaScriptCore.pro:
       
  4081         * wtf/qt/StringQt.cpp: Copied from WebCore/platform/text/qt/StringQt.cpp.
       
  4082 
       
  4083 2010-04-21  Gavin Barraclough  <barraclough@apple.com>
       
  4084 
       
  4085         Reviewed by NOBODY (windows build fix).
       
  4086 
       
  4087         * API/JSValueRef.cpp:
       
  4088         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
  4089         * runtime/Identifier.cpp:
       
  4090         (JSC::IdentifierTable::~IdentifierTable):
       
  4091         (JSC::IdentifierTable::add):
       
  4092         * runtime/Identifier.h:
       
  4093         * wtf/WTFThreadData.h:
       
  4094         (JSC::IdentifierTable::remove):
       
  4095         (JSC::IdentifierTable::literalTable):
       
  4096         * wtf/text/StringImpl.cpp:
       
  4097         (WebCore::StringImpl::~StringImpl):
       
  4098 
       
  4099 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
       
  4100 
       
  4101         Reviewed by Oliver Hunt, Darin Adler.
       
  4102 
       
  4103         Bug 37906 - Remove JSC::UStringImpl; unify with StringImpl.
       
  4104 
       
  4105         JSC::UStringImpl and WebCore::StringImpl (soon to be renamed to
       
  4106         WTF::StringImpl) are almost identical.  Remove duplication of code by unifying
       
  4107         the two, move missing features from UStringImpl into StringImpl & delete the
       
  4108         class UStringImpl.
       
  4109 
       
  4110         * API/JSClassRef.cpp:
       
  4111         * API/JSContextRef.cpp:
       
  4112         * GNUmakefile.am:
       
  4113         * JavaScriptCore.exp:
       
  4114         * JavaScriptCore.pro:
       
  4115         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  4116         * bytecode/EvalCodeCache.h:
       
  4117         * bytecode/JumpTable.cpp:
       
  4118         * profiler/ProfileNode.cpp:
       
  4119         * runtime/Identifier.cpp:
       
  4120         (JSC::Identifier::add):
       
  4121         * runtime/Identifier.h:
       
  4122         (JSC::Identifier::equal):
       
  4123         * runtime/UString.cpp:
       
  4124         * runtime/UString.h:
       
  4125         (WTF::):
       
  4126         * runtime/UStringImpl.cpp: Removed.
       
  4127         * runtime/UStringImpl.h:
       
  4128         * wtf/text/StringHash.h:
       
  4129         (WebCore::StringHash::equal):
       
  4130         (WebCore::CaseFoldingHash::equal):
       
  4131         * wtf/text/StringImpl.cpp:
       
  4132         (WebCore::StringImpl::~StringImpl):
       
  4133         (WebCore::StringImpl::empty):
       
  4134         (WebCore::StringImpl::sharedBuffer):
       
  4135         (WebCore::equal):
       
  4136         * wtf/text/StringImpl.h:
       
  4137         (WebCore::StringImpl::StringImpl):
       
  4138         (WebCore::StringImpl::create):
       
  4139         (WebCore::StringImpl::tryCreateUninitialized):
       
  4140         (WebCore::StringImpl::cost):
       
  4141         (WebCore::StringImpl::isIdentifier):
       
  4142         (WebCore::StringImpl::setIsIdentifier):
       
  4143         (WebCore::StringImpl::computeHash):
       
  4144         (WebCore::StringImpl::copyChars):
       
  4145         (WebCore::StringImpl::):
       
  4146 
       
  4147 2010-04-21  Patrick Gansterer  <paroga@paroga.com>
       
  4148 
       
  4149         Reviewed by Darin Adler.
       
  4150 
       
  4151         Added missing #include "Lookup.h" in LUT source files.
       
  4152         https://bugs.webkit.org/show_bug.cgi?id=37903
       
  4153 
       
  4154         * runtime/ArrayPrototype.cpp:
       
  4155         * runtime/DatePrototype.cpp:
       
  4156         * runtime/JSONObject.cpp:
       
  4157         * runtime/MathObject.cpp:
       
  4158         * runtime/NumberConstructor.cpp:
       
  4159         * runtime/RegExpConstructor.cpp:
       
  4160         * runtime/RegExpObject.cpp:
       
  4161         * runtime/StringPrototype.cpp:
       
  4162 
       
  4163 2010-04-21  Gustavo Sverzut Barbieri  <barbieri@profusion.mobi>
       
  4164 
       
  4165         Reviewed by Nikolas Zimmermann.
       
  4166 
       
  4167         Add missing EFL JavaScriptCore file.
       
  4168         http://webkit.org/b/37854
       
  4169 
       
  4170         * wtf/efl: Added.
       
  4171         * wtf/efl/MainThreadEfl.cpp: Added.
       
  4172         (WTF::initializeMainThreadPlatform):
       
  4173         (WTF::timeoutFired):
       
  4174         (WTF::scheduleDispatchFunctionsOnMainThread):
       
  4175 
       
  4176 2010-04-20  Xan Lopez  <xlopez@igalia.com>
       
  4177 
       
  4178         Another attempt to fix the build.
       
  4179 
       
  4180         * GNUmakefile.am:
       
  4181 
       
  4182 2010-04-20  Oliver Hunt  <oliver@apple.com>
       
  4183 
       
  4184         Reviewed by Maciej Stachowiak.
       
  4185 
       
  4186         [ES5] RegExp literals are constants that should be persistent across multiple function calls.
       
  4187         https://bugs.webkit.org/show_bug.cgi?id=37908
       
  4188 
       
  4189         Dump the separate RegExp constant pool, and just use the standard JS constant pool
       
  4190         in codeblock.  This allows us to drop op_new_regexp and all associated code as well.
       
  4191 
       
  4192         * bytecode/CodeBlock.cpp:
       
  4193         (JSC::CodeBlock::dump):
       
  4194         (JSC::CodeBlock::shrinkToFit):
       
  4195         * bytecode/CodeBlock.h:
       
  4196         * bytecode/Opcode.h:
       
  4197         * bytecompiler/BytecodeGenerator.cpp:
       
  4198         (JSC::BytecodeGenerator::emitLoad):
       
  4199         * bytecompiler/BytecodeGenerator.h:
       
  4200         * bytecompiler/NodesCodegen.cpp:
       
  4201         (JSC::RegExpNode::emitBytecode):
       
  4202         * interpreter/Interpreter.cpp:
       
  4203         (JSC::Interpreter::privateExecute):
       
  4204         * jit/JIT.cpp:
       
  4205         (JSC::JIT::privateCompileMainPass):
       
  4206         * jit/JIT.h:
       
  4207         * jit/JITOpcodes.cpp:
       
  4208         * jit/JITStubs.cpp:
       
  4209         * jit/JITStubs.h:
       
  4210         (JSC::):
       
  4211 
       
  4212 2010-04-20  Oliver Hunt  <oliver@apple.com>
       
  4213 
       
  4214         Fix license on create_regex_tables
       
  4215 
       
  4216         * create_regex_tables:
       
  4217 
       
  4218 2010-04-20  Oliver Hunt  <oliver@apple.com>
       
  4219 
       
  4220         Reviewed by NOBODY (Build fix).
       
  4221 
       
  4222         Fix gtk
       
  4223 
       
  4224         * GNUmakefile.am:
       
  4225         * make-generated-sources.sh:
       
  4226 
       
  4227 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
       
  4228 
       
  4229         Reviewed by Oliver Hunt.
       
  4230 
       
  4231         Bug 37895 - Share common code from UStringImplBase with StringImpl
       
  4232 
       
  4233         The implementation of StringImpl & UStringImpl is very similar.  Restructure
       
  4234         StringImpl to match UStringImpl, moving the flags and length into a base class,
       
  4235         so that this can be shared between both string types to increase code reuse.
       
  4236 
       
  4237         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  4238         * runtime/RopeImpl.h:
       
  4239         (JSC::RopeImpl::RopeImpl):
       
  4240         * runtime/UStringImpl.h:
       
  4241         (JSC::UStringImpl::UStringImpl):
       
  4242         * wtf/text/StringImpl.h:
       
  4243         (WebCore::StringImpl::StringImpl):
       
  4244         (WebCore::StringImpl::characters):
       
  4245         * wtf/text/StringImplBase.h: Copied from JavaScriptCore/runtime/UStringImpl.h.
       
  4246         (WTF::StringImplBase::length):
       
  4247         (WTF::StringImplBase::operator new):
       
  4248         (WTF::StringImplBase::StringImplBase):
       
  4249 
       
  4250 2010-04-20  Oliver Hunt  <oliver@apple.com>
       
  4251 
       
  4252         Reviewed by Gavin Barraclough.
       
  4253 
       
  4254         Autogenerate yarr character tables
       
  4255         https://bugs.webkit.org/show_bug.cgi?id=37877
       
  4256 
       
  4257         Use a python script to automatically generate character tables
       
  4258         for the builtin YARR character classes.  This allows us to generate
       
  4259         actual tables as well, by using these tables we can both increase
       
  4260         performance of the check (for complex builtins) and reduce the actual
       
  4261         code size.
       
  4262 
       
  4263         4-8% win on string-unpack-code, but lots of noise on other tests so
       
  4264         i'm only confident saying its a 1% win overall.
       
  4265 
       
  4266         * DerivedSources.make:
       
  4267         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  4268         * assembler/AbstractMacroAssembler.h:
       
  4269         (JSC::AbstractMacroAssembler::ExtendedAddress::ExtendedAddress):
       
  4270         * assembler/MacroAssembler.h:
       
  4271         (JSC::MacroAssembler::branchTest8):
       
  4272         * assembler/MacroAssemblerX86Common.h:
       
  4273         (JSC::MacroAssemblerX86Common::branchTest8):
       
  4274         * assembler/MacroAssemblerX86_64.h:
       
  4275         (JSC::MacroAssemblerX86_64::branchTest8):
       
  4276         * assembler/X86Assembler.h:
       
  4277         (JSC::X86Assembler::cmpb_im):
       
  4278         (JSC::X86Assembler::testb_im):
       
  4279         * bytecode/SamplingTool.cpp:
       
  4280         (JSC::SamplingTool::dump):
       
  4281         * create_regex_tables: Added.
       
  4282         * yarr/RegexCompiler.cpp:
       
  4283         (JSC::Yarr::CharacterClassConstructor::charClass):
       
  4284         * yarr/RegexJIT.cpp:
       
  4285         (JSC::Yarr::RegexGenerator::matchCharacterClass):
       
  4286         (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy):
       
  4287         (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy):
       
  4288         (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy):
       
  4289         * yarr/RegexPattern.h:
       
  4290         (JSC::Yarr::CharacterClassTable::create):
       
  4291         (JSC::Yarr::CharacterClassTable::CharacterClassTable):
       
  4292         (JSC::Yarr::CharacterClass::CharacterClass):
       
  4293 
       
  4294 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
       
  4295 
       
  4296         Reviewed by NOBODY (speculative windows fix - missed a bit!).
       
  4297 
       
  4298         * wtf/text/AtomicString.h:
       
  4299 
       
  4300 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
       
  4301 
       
  4302         Reviewed by NOBODY (speculative windows fix).
       
  4303 
       
  4304         * wtf/text/AtomicString.h:
       
  4305 
       
  4306 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
       
  4307 
       
  4308         Reviewed by NOBODY (windows build fix).
       
  4309 
       
  4310         Add missing .def file entries.
       
  4311 
       
  4312         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  4313 
       
  4314 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
       
  4315 
       
  4316         Reviewed by Geoff Garen.
       
  4317 
       
  4318         Bug 37869 - Move URopeImpl to its own .h/.cpp
       
  4319         
       
  4320         Currently Ropes are implemented by the class URopeImpl, which is defined in
       
  4321         UStringImpl.h, and then typedefed to the name JSString::Rope. Remove the
       
  4322         typedef, and rename all uses of URopeImpl and JSString::Rope to just RopeImpl.
       
  4323 
       
  4324         Move RopeImpl to its own header, and remove all remaining references to ropes
       
  4325         from UStringImpl (rename UStringOrRopeImpl to UStringImplBase, rename or move
       
  4326         the isRope & deref methods from UStringOrRopeImpl).
       
  4327 
       
  4328         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  4329         * runtime/JSString.cpp:
       
  4330         (JSC::JSString::resolveRope):
       
  4331         * runtime/JSString.h:
       
  4332         (JSC::):
       
  4333         (JSC::RopeBuilder::JSString):
       
  4334         (JSC::RopeBuilder::~JSString):
       
  4335         (JSC::RopeBuilder::appendStringInConstruct):
       
  4336         (JSC::RopeBuilder::JSStringFinalizerStruct::):
       
  4337         * runtime/RopeImpl.cpp: Copied from JavaScriptCore/runtime/UStringImpl.cpp.
       
  4338         (JSC::RopeImpl::derefFibersNonRecursive):
       
  4339         (JSC::RopeImpl::destructNonRecursive):
       
  4340         * runtime/RopeImpl.h: Copied from JavaScriptCore/runtime/UStringImpl.h.
       
  4341         (JSC::RopeImpl::tryCreateUninitialized):
       
  4342         (JSC::RopeImpl::isRope):
       
  4343         (JSC::RopeImpl::deref):
       
  4344         (JSC::RopeImpl::RopeImpl):
       
  4345         * runtime/UStringImpl.cpp:
       
  4346         * runtime/UStringImpl.h:
       
  4347         (JSC::UStringImplBase::isInvalid):
       
  4348         (JSC::UStringImplBase::ref):
       
  4349         (JSC::UStringImplBase::UStringImplBase):
       
  4350         (JSC::UStringImplBase::):
       
  4351         (JSC::UStringImpl::UStringImpl):
       
  4352 
       
  4353 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
       
  4354 
       
  4355         Reviewed by Geoff Garen.
       
  4356 
       
  4357         Bug 37828 - Move WebCore's String classes to WTF
       
  4358 
       
  4359         Move these classes up to WTF so they are available to all clients of WTF (in
       
  4360         particular JSC).
       
  4361 
       
  4362         As a first patch, making the most minimal change possible, since this patch
       
  4363         could easily grow rather large since we'll have to change every class forward
       
  4364         declaration ( e.g. every "namespace WebCore { class String; }" much change to
       
  4365         "namespace WTF { class String; }").
       
  4366 
       
  4367         Moving the files, but leaving the classes logically in the WebCore namespace -
       
  4368         which is technically a layering violation - I'll come back and fix this up in a
       
  4369         subsequent patch.
       
  4370 
       
  4371         * Android.mk:
       
  4372         * Android.v8.wtf.mk:
       
  4373         * GNUmakefile.am:
       
  4374         * JavaScriptCore.exp:
       
  4375         * JavaScriptCore.gypi:
       
  4376         * JavaScriptCore.pro:
       
  4377         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
       
  4378         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  4379         * config.h:
       
  4380         * wtf/StaticConstructors.h: Copied from WebCore/platform/StaticConstructors.h.
       
  4381         * wtf/text/AtomicString.cpp: Copied from WebCore/platform/text/AtomicString.cpp.
       
  4382         * wtf/text/AtomicString.h: Copied from WebCore/platform/text/AtomicString.h.
       
  4383         * wtf/text/AtomicStringImpl.h: Copied from WebCore/platform/text/AtomicStringImpl.h.
       
  4384         * wtf/text/StringBuffer.h: Copied from WebCore/platform/text/StringBuffer.h.
       
  4385         * wtf/text/StringHash.h: Copied from WebCore/platform/text/StringHash.h.
       
  4386         * wtf/text/StringImpl.cpp: Copied from WebCore/platform/text/StringImpl.cpp.
       
  4387         * wtf/text/StringImpl.h: Copied from WebCore/platform/text/StringImpl.h.
       
  4388         * wtf/text/WTFString.cpp: Copied from WebCore/platform/text/String.cpp.
       
  4389         (WebCore::charactersToFloat):
       
  4390         * wtf/text/WTFString.h: Copied from WebCore/platform/text/PlatformString.h.
       
  4391 
       
  4392 2010-04-20  Csaba Osztrogonác  <ossy@webkit.org>
       
  4393 
       
  4394         [Qt] Unreviewed speculative buildfix for WinCE after r57882
       
  4395         https://bugs.webkit.org/show_bug.cgi?id=37701
       
  4396 
       
  4397         * JavaScriptCore.pri: missing wince* case added.
       
  4398 
       
  4399 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
       
  4400 
       
  4401         Reviewed by NOBODY (build fix).
       
  4402         Speculative Chromium/Win build fix, attempt #2.
       
  4403 
       
  4404         * config.h:
       
  4405 
       
  4406 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
       
  4407 
       
  4408         Reviewed by NOBODY (build fix).
       
  4409         Speculative Chromium/Win build fix.
       
  4410 
       
  4411         * config.h: JS_EXPORTDATA should do nothing on !JSC builds.
       
  4412 
       
  4413 2010-04-20  Csaba Osztrogonác  <ossy@webkit.org>
       
  4414 
       
  4415         Reviewed by Simon Hausmann.
       
  4416 
       
  4417         [Qt] Target(WebCore,jsc,...) must depends on static library of JavaScriptCore
       
  4418         https://bugs.webkit.org/show_bug.cgi?id=37701
       
  4419 
       
  4420         * JavaScriptCore.pri: dependency added.
       
  4421 
       
  4422 2010-04-20  Gavin Barraclough  <barraclough@apple.com>
       
  4423 
       
  4424         Rubber stamped by Maciej Stachowiak (relanding r57829).
       
  4425         Added missing JS_EXPORTDATA
       
  4426 
       
  4427         * API/APIShims.h:
       
  4428         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
       
  4429         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
       
  4430         (JSC::APICallbackShim::APICallbackShim):
       
  4431         (JSC::APICallbackShim::~APICallbackShim):
       
  4432         * API/JSContextRef.cpp:
       
  4433         * Android.mk:
       
  4434         * Android.v8.wtf.mk:
       
  4435         * GNUmakefile.am:
       
  4436         * JavaScriptCore.exp:
       
  4437         * JavaScriptCore.gypi:
       
  4438         * JavaScriptCore.pro:
       
  4439         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  4440         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
       
  4441         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  4442         * runtime/Completion.cpp:
       
  4443         (JSC::checkSyntax):
       
  4444         (JSC::evaluate):
       
  4445         * runtime/Identifier.cpp:
       
  4446         (JSC::Identifier::remove):
       
  4447         (JSC::Identifier::checkCurrentIdentifierTable):
       
  4448         * runtime/Identifier.h:
       
  4449         * runtime/InitializeThreading.cpp:
       
  4450         (JSC::initializeThreadingOnce):
       
  4451         * runtime/JSGlobalData.cpp:
       
  4452         (JSC::JSGlobalData::create):
       
  4453         * wtf/WTFThreadData.cpp: Copied from JavaScriptCore/wtf/WTFThreadData.cpp.
       
  4454         * wtf/WTFThreadData.h: Copied from JavaScriptCore/wtf/WTFThreadData.h.
       
  4455 
       
  4456 2010-04-19  Gavin Barraclough  <barraclough@apple.com>
       
  4457 
       
  4458         Reviewed by NOBODY (rolling out r57829).
       
  4459         This broke windows.
       
  4460 
       
  4461         * API/APIShims.h:
       
  4462         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
       
  4463         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
       
  4464         (JSC::APICallbackShim::APICallbackShim):
       
  4465         (JSC::APICallbackShim::~APICallbackShim):
       
  4466         * API/JSContextRef.cpp:
       
  4467         * Android.mk:
       
  4468         * Android.v8.wtf.mk:
       
  4469         * GNUmakefile.am:
       
  4470         * JavaScriptCore.exp:
       
  4471         * JavaScriptCore.gypi:
       
  4472         * JavaScriptCore.pro:
       
  4473         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  4474         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
       
  4475         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  4476         * runtime/Completion.cpp:
       
  4477         (JSC::checkSyntax):
       
  4478         (JSC::evaluate):
       
  4479         * runtime/Identifier.cpp:
       
  4480         (JSC::Identifier::remove):
       
  4481         (JSC::Identifier::checkCurrentIdentifierTable):
       
  4482         (JSC::createIdentifierTableSpecificCallback):
       
  4483         (JSC::createIdentifierTableSpecific):
       
  4484         * runtime/Identifier.h:
       
  4485         (JSC::ThreadIdentifierTableData::ThreadIdentifierTableData):
       
  4486         (JSC::defaultIdentifierTable):
       
  4487         (JSC::setDefaultIdentifierTable):
       
  4488         (JSC::currentIdentifierTable):
       
  4489         (JSC::setCurrentIdentifierTable):
       
  4490         (JSC::resetCurrentIdentifierTable):
       
  4491         * runtime/InitializeThreading.cpp:
       
  4492         (JSC::initializeThreadingOnce):
       
  4493         * runtime/JSGlobalData.cpp:
       
  4494         (JSC::JSGlobalData::create):
       
  4495         * wtf/WTFThreadData.cpp: Removed.
       
  4496         * wtf/WTFThreadData.h: Removed.
       
  4497 
       
  4498 2010-04-19  Douglas Gregor  <dgregor@apple.com>
       
  4499 
       
  4500         Reviewed and landed by Anders Carlsson.
       
  4501 
       
  4502         * runtime/UStringImpl.h:
       
  4503         Fix class/struct declaration mismatches.
       
  4504 
       
  4505 2010-04-19  Geoffrey Garen  <ggaren@apple.com>
       
  4506 
       
  4507         Reviewed by Beth Dakin.
       
  4508 
       
  4509         Checked in these tests I wrote becuase Balazs Kelemen wanted to use them.
       
  4510 
       
  4511         * tests/perf: Added.
       
  4512         * tests/perf/bench-allocate-nonretained.js: Added.
       
  4513         * tests/perf/bench-allocate-retained.js: Added.
       
  4514 
       
  4515 2010-04-19  Gavin Barraclough  <barraclough@apple.com>
       
  4516 
       
  4517         Reviewed by NOBODY (windows build fix).
       
  4518 
       
  4519         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  4520 
       
  4521 2010-04-16  Gavin Barraclough  <barraclough@apple.com>
       
  4522 
       
  4523         Reviewed by Sam Weinig.
       
  4524 
       
  4525         https://bugs.webkit.org/show_bug.cgi?id=37745
       
  4526         Move string uniquing tables to (new) WTFThreadData class.
       
  4527 
       
  4528         Remove AtomicString's dependency on ThreadGlobalData so that we can move
       
  4529         WebCore's string classes up to WTF.
       
  4530 
       
  4531         WTFThreadData.cpp/.h are based on ThreadGlobalData from WebCore.
       
  4532         Moved JSC & WebCore's string uniquing tables to this class.
       
  4533 
       
  4534         This patch introduces a temporary layering violation in providing forward
       
  4535         declarations of classes from JSC and WTF; this will be resolved as we move
       
  4536         more string code up to WTF.
       
  4537 
       
  4538         * API/APIShims.h:
       
  4539         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
       
  4540         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
       
  4541         (JSC::APICallbackShim::APICallbackShim):
       
  4542         (JSC::APICallbackShim::~APICallbackShim):
       
  4543         * API/JSContextRef.cpp:
       
  4544         * JavaScriptCore.exp:
       
  4545         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  4546         * runtime/Completion.cpp:
       
  4547         (JSC::checkSyntax):
       
  4548         (JSC::evaluate):
       
  4549         * runtime/Identifier.cpp:
       
  4550         (JSC::Identifier::remove):
       
  4551         (JSC::Identifier::checkCurrentIdentifierTable):
       
  4552         * runtime/Identifier.h:
       
  4553         * runtime/InitializeThreading.cpp:
       
  4554         (JSC::initializeThreadingOnce):
       
  4555         * runtime/JSGlobalData.cpp:
       
  4556         (JSC::JSGlobalData::create):
       
  4557         * wtf/WTFThreadData.cpp: Copied from WebCore/platform/ThreadGlobalData.cpp.
       
  4558         (WTF::WTFThreadData::WTFThreadData):
       
  4559         (WTF::WTFThreadData::~WTFThreadData):
       
  4560         * wtf/WTFThreadData.h: Copied from WebCore/platform/ThreadGlobalData.h.
       
  4561         (WTF::WTFThreadData::atomicStringTable):
       
  4562         (WTF::WTFThreadData::initializeIdentifierTable):
       
  4563         (WTF::WTFThreadData::currentIdentifierTable):
       
  4564         (WTF::WTFThreadData::setCurrentIdentifierTable):
       
  4565         (WTF::WTFThreadData::resetCurrentIdentifierTable):
       
  4566         (WTF::wtfThreadData):
       
  4567 
       
  4568 2010-04-19  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  4569 
       
  4570         Reviewed by Simon Hausmann.
       
  4571 
       
  4572         [Qt] Build fix for WinCE.
       
  4573 
       
  4574         Moved the include of the non-existing errno.h header file inside
       
  4575         platform guard macros.
       
  4576 
       
  4577         * jit/ExecutableAllocatorFixedVMPool.cpp:
       
  4578 
       
  4579 2010-04-18  Kwang Yul Seo  <skyul@company100.net>
       
  4580 
       
  4581         Reviewed by Laszlo Gombos.
       
  4582 
       
  4583         [WINCE] Don't define WTF_CPU_MIDDLE_ENDIAN=1
       
  4584         https://bugs.webkit.org/show_bug.cgi?id=37434
       
  4585 
       
  4586         Windows CE supports little-endian format only, so don't define
       
  4587         WTF_CPU_MIDDLE_ENDIAN=1.
       
  4588 
       
  4589         * wtf/Platform.h:
       
  4590 
       
  4591 2010-04-18  Simon Hausmann  <simon.hausmann@nokia.com>
       
  4592 
       
  4593         Reviewed by Laszlo Gombos.
       
  4594 
       
  4595         [Qt] Fix JavaScriptCore's include path for WinCE builds
       
  4596 
       
  4597         https://bugs.webkit.org/show_bug.cgi?id=36751
       
  4598 
       
  4599         * JavaScriptCore.pri:
       
  4600 
       
  4601 2010-04-16  Gavin Barraclough  <barraclough@apple.com>
       
  4602 
       
  4603         Reviewed by nobody, build fix.
       
  4604 
       
  4605 2010-04-16  Gavin Barraclough  <barraclough@apple.com>
       
  4606 
       
  4607         Reviewed by nobody, build fix.
       
  4608 
       
  4609 2010-04-16  Gavin Barraclough  <barraclough@apple.com>
       
  4610 
       
  4611         Reviewed by Oliver Hunt.
       
  4612 
       
  4613         Bug 37730 - Remove JSC::UString dependencies from WebCore::StringImpl
       
  4614         (Following on from bug #37675).
       
  4615 
       
  4616         Make the argument ordering for UStringImpl's constructor & create
       
  4617         methods match, when passed a shared buffer.
       
  4618 
       
  4619         * JavaScriptCore.exp:
       
  4620         * runtime/UStringImpl.cpp:
       
  4621         (JSC::UStringImpl::create):
       
  4622         * runtime/UStringImpl.h:
       
  4623 
       
  4624 2010-04-15  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  4625 
       
  4626         Reviewed by Kenneth Rohde Christiansen.
       
  4627 
       
  4628         Fix memory leak in QScriptEngine::evaluate().
       
  4629 
       
  4630         QScriptEnginePrivate::evaluate should release temporary variables.
       
  4631 
       
  4632         [Qt] QScriptEngine::evaluate has memory leak.
       
  4633         https://bugs.webkit.org/show_bug.cgi?id=37596
       
  4634 
       
  4635         * qt/api/qscriptengine_p.cpp:
       
  4636         (QScriptEnginePrivate::evaluate):
       
  4637         * qt/api/qscriptengine_p.h:
       
  4638 
       
  4639 2010-04-14  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  4640 
       
  4641         Reviewed by Kenneth Rohde Christiansen.
       
  4642 
       
  4643         Fix a memory leak in QScriptValue::inherits.
       
  4644 
       
  4645         [Qt] QScriptValue::inherits has a memory leak.
       
  4646         https://bugs.webkit.org/show_bug.cgi?id=37617
       
  4647 
       
  4648         * qt/api/qscriptvalue_p.h:
       
  4649         (QScriptValuePrivate::inherits):
       
  4650 
       
  4651 2010-04-14  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  4652 
       
  4653         Reviewed by Kenneth Rohde Christiansen.
       
  4654 
       
  4655         Fix a few memory leaks in QScriptEngine.
       
  4656 
       
  4657         Syntax checking caused memory leak, not all temporary variables were released.
       
  4658 
       
  4659         [Qt] Syntax checking  in the QtScript cause a memory leak.
       
  4660         https://bugs.webkit.org/show_bug.cgi?id=37610
       
  4661 
       
  4662         * qt/api/qscriptengine_p.cpp:
       
  4663         (QScriptEnginePrivate::checkSyntax):
       
  4664         * qt/api/qscriptsyntaxcheckresult.cpp:
       
  4665         (QScriptSyntaxCheckResultPrivate::errorMessage):
       
  4666         (QScriptSyntaxCheckResultPrivate::errorLineNumber):
       
  4667 
       
  4668 2010-04-14  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  4669 
       
  4670         Reviewed by Kenneth Rohde Christiansen.
       
  4671 
       
  4672         Fix memory leak inside QScriptEnginePrivate::makeJSValue.
       
  4673 
       
  4674         QScriptEnginePrivate::makeJSValue should release temporary JSStringRef variable.
       
  4675 
       
  4676         [Qt] tst_QScriptValue::toString has a memory leak.
       
  4677         https://bugs.webkit.org/show_bug.cgi?id=37598
       
  4678 
       
  4679         * qt/api/qscriptengine_p.h:
       
  4680         (QScriptEnginePrivate::makeJSValue):
       
  4681 
       
  4682 2010-04-14  Peter Varga  <pvarga@inf.u-szeged.hu>
       
  4683 
       
  4684         Reviewed by Geoffrey Garen.
       
  4685 
       
  4686         Move the YARR JIT fallback detection from RegexJIT.cpp to
       
  4687         RegexCompiler.cpp.
       
  4688 
       
  4689         https://bugs.webkit.org/show_bug.cgi?id=37571
       
  4690 
       
  4691         * yarr/RegexCompiler.cpp:
       
  4692         (JSC::Yarr::RegexPatternConstructor::atomBackReference):
       
  4693         (JSC::Yarr::RegexPatternConstructor::quantifyAtom):
       
  4694         * yarr/RegexJIT.cpp:
       
  4695         (JSC::Yarr::RegexGenerator::generateTerm):
       
  4696         (JSC::Yarr::RegexGenerator::RegexGenerator):
       
  4697         (JSC::Yarr::jitCompileRegex):
       
  4698         * yarr/RegexJIT.h:
       
  4699         (JSC::Yarr::RegexCodeBlock::operator!):
       
  4700         * yarr/RegexPattern.h:
       
  4701         (JSC::Yarr::RegexPattern::RegexPattern):
       
  4702         (JSC::Yarr::RegexPattern::reset):
       
  4703 
       
  4704 2010-04-14  Kent Hansen  <kent.hansen@nokia.com>
       
  4705 
       
  4706         Reviewed by Maciej Stachowiak.
       
  4707 
       
  4708         Mac OS X: Use deployment target to determine whether memory tagging should be enabled
       
  4709         https://bugs.webkit.org/show_bug.cgi?id=34888
       
  4710 
       
  4711         When building on (Snow) Leopard but targeting Tiger
       
  4712         (TARGETING_TIGER defined, BUILDING_ON_TIGER not defined),
       
  4713         WebKit would crash on Tiger because the tags passed to mmap
       
  4714         caused those function calls to fail.
       
  4715 
       
  4716         Conversely, when building on Tiger but targeting Leopard
       
  4717         (BUILDING_ON_TIGER defined, TARGETING_LEOPARD defined), WebKit
       
  4718         would crash on Leopard because the tags passed to vm_map and
       
  4719         vm_allocate caused those function calls to fail.
       
  4720 
       
  4721         Solution: Use TARGETING_TIGER rather than BUILDING_ON_TIGER to
       
  4722         govern the tag definitions. Use the same tags for vm_map and
       
  4723         vm_allocate regardless of target, since they work on
       
  4724         both. Fall back to the mmap tags that work on Tiger (that is,
       
  4725         "no tags") if targeting Tiger, since those tags also work on
       
  4726         Leopard.
       
  4727 
       
  4728         * wtf/VMTags.h:
       
  4729 
       
  4730 2010-04-12  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  4731 
       
  4732         Reviewed by nobody, build fix.
       
  4733 
       
  4734         [Qt] Build fix for Mac when building with build-webkit --qt
       
  4735 
       
  4736         Specifying no configuration on Mac builds WebCore both in debug
       
  4737         and release. JavaScriptCore has to follow this rule as well.
       
  4738 
       
  4739         * JavaScriptCore.pro:
       
  4740 
       
  4741 2010-04-11  Mark Rowe  <mrowe@apple.com>
       
  4742 
       
  4743         Reviewed by Sam Weinig.
       
  4744 
       
  4745         <rdar://problem/7851332> Fix the build.
       
  4746 
       
  4747         * wtf/FastMalloc.cpp:
       
  4748         (WTF::TCMallocStats::): Initialize extra members of malloc_introspection_t to zero.
       
  4749 
       
  4750 2010-04-09  Mikhail Naganov  <mnaganov@chromium.org>
       
  4751 
       
  4752         Reviewed by Pavel Feldman.
       
  4753 
       
  4754         Make CallIdentifier constructor to handle null urls.
       
  4755 
       
  4756         https://bugs.webkit.org/show_bug.cgi?id=37341
       
  4757 
       
  4758         * profiler/CallIdentifier.h:
       
  4759         (JSC::CallIdentifier::CallIdentifier):
       
  4760 
       
  4761 2010-04-09  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  4762 
       
  4763         Reviewed by Simon Hausmann.
       
  4764 
       
  4765         [Qt] Fix crashes with package builds in release
       
  4766 
       
  4767         Add NDEBUG to the defines for package build in JavaScriptCore.pri,
       
  4768         so that it's consistently used for JavaScriptCore, WebCore, jsc and all
       
  4769         other tools using wtf, etc. data structures directly. Mixing NDEBUG with
       
  4770         non-NDEBUG builds causes crashes due to differences in data structures when
       
  4771         assertions/checks are enabled.
       
  4772 
       
  4773         * JavaScriptCore.pri:
       
  4774 
       
  4775 2010-04-09  Patrick Gansterer  <paroga@paroga.com>
       
  4776 
       
  4777         Reviewed by Darin Adler.
       
  4778 
       
  4779         Implement NO_RETURN for COMPILER(MSVC).
       
  4780         https://bugs.webkit.org/show_bug.cgi?id=33056 
       
  4781 
       
  4782         Added NO_RETURN_WITH_VALUE for functions with non-void return type.
       
  4783 
       
  4784         * jsc.cpp:
       
  4785         * wtf/AlwaysInline.h:
       
  4786         * wtf/FastMalloc.cpp:
       
  4787 
       
  4788 2010-04-08  Kwang Yul Seo  <skyul@company100.net>
       
  4789 
       
  4790         Reviewed by Simon Hausmann.
       
  4791 
       
  4792         [WINCE] Check if ARM or _ARM_ is defined
       
  4793         https://bugs.webkit.org/show_bug.cgi?id=37200
       
  4794 
       
  4795         MSVC defines ARM and _ARM_ for Windows CE ARM. Define WTF_CPU_ARM=1
       
  4796         when either ARM or _ARM_ is defined.
       
  4797 
       
  4798         * wtf/Platform.h:
       
  4799 
       
  4800 2010-04-08  Csaba Osztrogonác  <ossy@webkit.org>
       
  4801 
       
  4802         Reviewed Oliver Hunt.
       
  4803 
       
  4804         [Qt]r57240 broke Qt build (might be a gcc bug)
       
  4805         https://bugs.webkit.org/show_bug.cgi?id=37253
       
  4806 
       
  4807         Workaround until fix. On PLATFORM(QT) use inline instead of ALWAYS_INLINE.
       
  4808 
       
  4809         * wtf/PassRefPtr.h: Qt guards added.
       
  4810 
       
  4811 2010-04-07  Oliver Hunt  <oliver@apple.com>
       
  4812 
       
  4813         Reviewed by Anders Carlsson.
       
  4814 
       
  4815         Vector<UString> makes many needless calls to UString::UString and UString::~UString
       
  4816 
       
  4817         Add a VectorTrait<UString> specialisation to allow vector to simply memset/memcpy
       
  4818         data around.  Only difference from the VectorTrait<RefPtr<T> > traits is the inability
       
  4819         to use memset to initialize data.
       
  4820 
       
  4821         * runtime/UString.h:
       
  4822         (WTF::):
       
  4823 
       
  4824 2010-04-07  Oliver Hunt  <oliver@apple.com>
       
  4825 
       
  4826         Reviewed by Geoff Garen.
       
  4827 
       
  4828         Beat gcc with a clue bat -- force inlining of refIfNotNull and derefIfNotNull
       
  4829 
       
  4830         * wtf/PassRefPtr.h:
       
  4831 
       
  4832 2010-04-07  Kwang Yul Seo  <skyul@company100.net>
       
  4833 
       
  4834         Reviewed by Darin Adler.
       
  4835 
       
  4836         Replace isprint with isASCIIPrintable
       
  4837         https://bugs.webkit.org/show_bug.cgi?id=37223
       
  4838 
       
  4839         WebKit does not use functions in <ctype.h> as they are dependent on the current
       
  4840         locale. Use the equivalent functions in <wtf/ASCIICType.h>. isASCIIPrintable
       
  4841         replaces isprint.
       
  4842 
       
  4843         * pcre/pcre_exec.cpp:
       
  4844         (pchars):
       
  4845 
       
  4846 2010-04-07  Enrica Casucci  <enrica@apple.com>
       
  4847 
       
  4848         Reviewed by Darin Adler.
       
  4849 
       
  4850         https://bugs.webkit.org/show_bug.cgi?id=37219
       
  4851         
       
  4852         This change disables text caret for the iPhone platflorm.
       
  4853         
       
  4854         * wtf/Platform.h: Disabled text caret for iPhone.
       
  4855 
       
  4856 2010-04-06  Adam Barth  <abarth@webkit.org>
       
  4857 
       
  4858         Reviewed by Eric Seidel.
       
  4859 
       
  4860         REGRESSION: Worker termination via JS timeout may cause worker tests like fast/workers/worker-terminate.html fail.
       
  4861         https://bugs.webkit.org/show_bug.cgi?id=36646
       
  4862 
       
  4863         Add a new exception type for forcibly terminating a JavaScript stack.
       
  4864         The new exception functions similarly to the
       
  4865         InterruptedExecutionException but is conceptually different because
       
  4866         execution is terminated instead of just interrupted.
       
  4867 
       
  4868         * GNUmakefile.am:
       
  4869             - Added new Terminator.h file.
       
  4870         * JavaScriptCore.gypi:
       
  4871             - Added new Terminator.h file.
       
  4872         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
  4873             - Added new Terminator.h file.
       
  4874         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  4875             - Added new Terminator.h file.
       
  4876         * interpreter/Interpreter.cpp:
       
  4877         (JSC::Interpreter::throwException):
       
  4878             - Fully unwind the stack for TerminatedExecutionException.
       
  4879         (JSC::Interpreter::privateExecute):
       
  4880             - Check if we've been terminated at the same time we check if we've
       
  4881               timed out.
       
  4882         * jit/JITStubs.cpp:
       
  4883         (JSC::DEFINE_STUB_FUNCTION):
       
  4884             - Check if we've been terminated at the same time we check if we've
       
  4885               timed out.
       
  4886         * runtime/Completion.cpp:
       
  4887             - Some exceptions define special completion types so that calls can
       
  4888               see why we terminated evaluation.
       
  4889         (JSC::evaluate):
       
  4890         * runtime/Completion.h:
       
  4891             - Define a new completion type for termination.
       
  4892         (JSC::):
       
  4893         * runtime/ExceptionHelpers.cpp:
       
  4894             - Define TerminatedExecutionException and refactor pseudo-RTTI
       
  4895               virtual function to be more semantic.
       
  4896         (JSC::InterruptedExecutionError::exceptionType):
       
  4897         (JSC::TerminatedExecutionError::TerminatedExecutionError):
       
  4898         (JSC::TerminatedExecutionError::exceptionType):
       
  4899         (JSC::TerminatedExecutionError::toString):
       
  4900         (JSC::createTerminatedExecutionException):
       
  4901         * runtime/ExceptionHelpers.h:
       
  4902             - Entry point for generating a TerminatedExecutionException.
       
  4903         * runtime/JSGlobalData.cpp:
       
  4904         (JSC::JSGlobalData::JSGlobalData):
       
  4905             - Add a Terminator object that can be used to asynchronously
       
  4906               terminate a JavaScript execution stack.
       
  4907         * runtime/JSGlobalData.h:
       
  4908         * runtime/JSObject.h:
       
  4909         (JSC::JSObject::exceptionType):
       
  4910             - Define that, by default, thrown objects have a normal exception
       
  4911               type.
       
  4912         * runtime/Terminator.h: Added.
       
  4913             - Added a new controller object that can be used to terminate
       
  4914               execution asynchronously.  This object is more or less a
       
  4915               glorified bool.
       
  4916         (JSC::Terminator::Terminator):
       
  4917         (JSC::Terminator::termianteSoon):
       
  4918         (JSC::Terminator::shouldTerminate):
       
  4919 
       
  4920 2010-04-05  Oliver Hunt  <oliver@apple.com>
       
  4921 
       
  4922         And another one.
       
  4923 
       
  4924         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
       
  4925 
       
  4926 2010-04-05  Oliver Hunt  <oliver@apple.com>
       
  4927 
       
  4928         And another build fix.
       
  4929 
       
  4930         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
       
  4931 
       
  4932 2010-04-05  Oliver Hunt  <oliver@apple.com>
       
  4933 
       
  4934         Build fix
       
  4935 
       
  4936         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
  4937 
       
  4938 2010-04-05  Oliver Hunt  <oliver@apple.com>
       
  4939 
       
  4940         Reviewed by Gavin Barraclough.
       
  4941 
       
  4942         Support weak maps in JSC
       
  4943         https://bugs.webkit.org/show_bug.cgi?id=37132
       
  4944 
       
  4945         Expose an API to allow creation of a map for storing
       
  4946         weak JS references.
       
  4947 
       
  4948         * API/JSWeakObjectMapRefInternal.h: Added.
       
  4949         (OpaqueJSWeakObjectMap::create):
       
  4950         (OpaqueJSWeakObjectMap::map):
       
  4951         (OpaqueJSWeakObjectMap::~OpaqueJSWeakObjectMap):
       
  4952         (OpaqueJSWeakObjectMap::OpaqueJSWeakObjectMap):
       
  4953         * API/JSWeakObjectMapRefPrivate.cpp: Added.
       
  4954         * API/JSWeakObjectMapRefPrivate.h: Added.
       
  4955         * JavaScriptCore.exp:
       
  4956         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  4957         * runtime/JSGlobalObject.h:
       
  4958         (JSC::JSGlobalObject::registerWeakMap):
       
  4959         (JSC::JSGlobalObject::deregisterWeakMap):
       
  4960 
       
  4961 2010-04-05  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  4962 
       
  4963         Reviewed by Kenneth Rohde Christiansen.
       
  4964 
       
  4965         [Symbian] Consolidate Symbian WINSCW environment configuration
       
  4966         https://bugs.webkit.org/show_bug.cgi?id=37100
       
  4967 
       
  4968         Move the "undefinition" of WIN32 and _WIN32 from WebCore/config.h
       
  4969         to JavaScriptCore/wtf/Platform.h as it is not specific to WebCore.
       
  4970 
       
  4971         PLATFORM(WIN) and OS(WIN) no longer needs to be undefined as
       
  4972         undefining WIN32 takes care of it.
       
  4973 
       
  4974         * wtf/Platform.h:
       
  4975 
       
  4976 2010-04-03  Gavin Barraclough  <barraclough@apple.com>
       
  4977 
       
  4978         Reviewed by Oliver Hunt.
       
  4979 
       
  4980         https://bugs.webkit.org/show_bug.cgi?id=37068
       
  4981         Change UString to use a 0 rep for null strings instead of a null object.
       
  4982 
       
  4983         No performance impact.
       
  4984 
       
  4985         * JavaScriptCore.exp:
       
  4986         * runtime/InternalFunction.cpp:
       
  4987         (JSC::InternalFunction::InternalFunction):
       
  4988         * runtime/JSString.h:
       
  4989         (JSC::RopeBuilder::JSString):
       
  4990         * runtime/UString.cpp:
       
  4991         (JSC::initializeUString):
       
  4992         * runtime/UString.h:
       
  4993         (JSC::UString::UString):
       
  4994         (JSC::UString::data):
       
  4995         (JSC::UString::size):
       
  4996         (JSC::UString::isNull):
       
  4997         (JSC::UString::isEmpty):
       
  4998         (JSC::UString::cost):
       
  4999 
       
  5000 2010-04-03  Balazs Kelemen  <kb@inf.u-szeged.hu>
       
  5001 
       
  5002         Reviewed by Oliver Hunt.
       
  5003 
       
  5004         Fix uninitalised members in CallLinkInfo and BytecodeGenerator.
       
  5005 
       
  5006         https://bugs.webkit.org/show_bug.cgi?id=36816
       
  5007 
       
  5008         * bytecode/CodeBlock.cpp:
       
  5009         (JSC::CodeBlock::CodeBlock):
       
  5010         * bytecode/CodeBlock.h:
       
  5011         (JSC::CallLinkInfo::CallLinkInfo):
       
  5012 
       
  5013 2010-04-03  yael aharon  <yael.aharon@nokia.com>
       
  5014 
       
  5015         Reviewed by Darin Adler.
       
  5016 
       
  5017         Enable HTMLProgressElement for Safari on OSX
       
  5018         https://bugs.webkit.org/show_bug.cgi?id=36961
       
  5019 
       
  5020         * Configurations/FeatureDefines.xcconfig:
       
  5021 
       
  5022 2010-04-02  Ruben Van Boxem  <vanboxem.ruben@gmail.com>
       
  5023 
       
  5024         Reviewed by Eric Seidel.
       
  5025 
       
  5026         Mingw-w64 fixes for JavaScriptCore
       
  5027         https://bugs.webkit.org/show_bug.cgi?id=35607
       
  5028 
       
  5029         * runtime/Collector.cpp: use the msvc code for mingw-w64 (but not mingw-w32)
       
  5030         (JSC::Heap::allocateBlock):
       
  5031         (JSC::Heap::freeBlockPtr):
       
  5032         (JSC::currentThreadStackBase):
       
  5033         (JSC::currentThreadStackBase):
       
  5034         * wtf/Platform.h: added COMPILER(MINGW64) check to differentiate between mingw.org and mingw-w64 functions
       
  5035 
       
  5036 2010-04-02  Geoffrey Garen  <ggaren@apple.com>
       
  5037 
       
  5038         Build fix: updated the .def file.
       
  5039 
       
  5040         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  5041 
       
  5042 2010-04-02  Geoffrey Garen  <ggaren@apple.com>
       
  5043 
       
  5044         Reviewed by Oliver Hunt.
       
  5045 
       
  5046         Inlined toThisString and toThisJSString to avoid virtual function call overhead
       
  5047         https://bugs.webkit.org/show_bug.cgi?id=37039
       
  5048         
       
  5049         Maybe a 1% speedup on iBench JS.
       
  5050 
       
  5051         * JavaScriptCore.exp: New exports.
       
  5052 
       
  5053         * runtime/JSCell.cpp:
       
  5054         * runtime/JSCell.h:
       
  5055         * runtime/JSNumberCell.cpp:
       
  5056         * runtime/JSNumberCell.h:
       
  5057         * runtime/JSString.cpp:
       
  5058         * runtime/JSString.h:
       
  5059         * runtime/JSValue.h:
       
  5060         * runtime/JSZombie.h:
       
  5061         (JSC::JSZombie::toThisObject): Nixed the old virtual-type implementation.
       
  5062 
       
  5063         * runtime/JSObject.h:
       
  5064         (JSC::JSValue::toThisString):
       
  5065         (JSC::JSValue::toThisJSString): Added the inlined implementation.
       
  5066 
       
  5067 2010-04-02  Jeremy Moskovich  <jeremy@chromium.org>
       
  5068 
       
  5069         Reviewed by Geoffrey Garen.
       
  5070 
       
  5071         Beef up documentation for ASSERT* and CRASH macros a bit.
       
  5072 
       
  5073         https://bugs.webkit.org/show_bug.cgi?id=36527
       
  5074 
       
  5075         * wtf/Assertions.h:
       
  5076 
       
  5077 2010-04-02  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  5078 
       
  5079         Unreviewed, minor build fix.
       
  5080 
       
  5081         Change the order of the member initialisation list
       
  5082         in constructor to match declaration order
       
  5083 
       
  5084         * runtime/Collector.cpp:
       
  5085         (JSC::Heap::Heap):
       
  5086 
       
  5087 2010-04-01  Kinuko Yasuda  <kinuko@chromium.org>
       
  5088 
       
  5089         Reviewed by Dmitry Titov.
       
  5090 
       
  5091         Add FileThread for async file operation support in FileReader and FileWriter
       
  5092         https://bugs.webkit.org/show_bug.cgi?id=36896
       
  5093 
       
  5094         Add ENABLE_FILE_READER and ENABLE_FILE_WRITER flags.
       
  5095 
       
  5096         * Configurations/FeatureDefines.xcconfig:
       
  5097 
       
  5098 2010-03-31  Gavin Barraclough  <barraclough@apple.com>
       
  5099 
       
  5100         Reviewed by NOBODY (windows build fix pt II).
       
  5101 
       
  5102         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  5103 
       
  5104 2010-03-31  Gavin Barraclough  <barraclough@apple.com>
       
  5105 
       
  5106         Reviewed by NOBODY (windows build fix).
       
  5107 
       
  5108         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  5109 
       
  5110 2010-03-31  Gavin Barraclough  <barraclough@apple.com>
       
  5111 
       
  5112         Reviewed by Geoff Garen.
       
  5113 
       
  5114         Bug 36871 - Remove JSC::CString
       
  5115         Use WTF::CString instead (which until recently was WebCore::CString).
       
  5116 
       
  5117         * JavaScriptCore.exp:
       
  5118         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  5119         * runtime/UString.cpp:
       
  5120         * runtime/UString.h:
       
  5121 
       
  5122 2010-03-31  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  5123 
       
  5124         Unreviewed, fix after r56842.
       
  5125 
       
  5126         Add UNUSED_PARAM a to silence warning.
       
  5127 
       
  5128         * jit/JITStubs.cpp:
       
  5129         (JSC::DEFINE_STUB_FUNCTION):
       
  5130 
       
  5131 2010-03-31  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  5132 
       
  5133         Unreviewed, Symbian build fix.
       
  5134 
       
  5135         Refactor JITStubs.cpp so that the list of STUB_FUNCTIONs
       
  5136         are not dependent on the JSVALUE32_64 guard.
       
  5137 
       
  5138         * jit/JITStubs.cpp: Place the JSVALUE32_64 guard inside 
       
  5139         the body of cti_op_eq_strings.
       
  5140         * jit/JITStubs.h: Remove JSVALUE32_64 guard from 
       
  5141         cti_op_eq_strings stub.
       
  5142 
       
  5143 2010-03-30  Gavin Barraclough  <barraclough@apple.com>
       
  5144 
       
  5145         Reviewed by NOBODY (windows build fix).
       
  5146 
       
  5147         Fixing b0rked version of JavaScriptCore.vcproj - added lines were truncated.
       
  5148 
       
  5149         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
  5150 
       
  5151 2010-03-30  Gavin Barraclough  <barraclough@apple.com>
       
  5152 
       
  5153         Rubber stamped by Sam Weinig.
       
  5154 
       
  5155         https://bugs.webkit.org/show_bug.cgi?id=36866
       
  5156         Move CString to WTF
       
  5157 
       
  5158         * Android.mk:
       
  5159         * GNUmakefile.am:
       
  5160         * JavaScriptCore.exp:
       
  5161         * JavaScriptCore.gypi:
       
  5162         * JavaScriptCore.pro:
       
  5163         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  5164         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
  5165         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
       
  5166         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  5167         * wtf/text: Added.
       
  5168         * wtf/text/CString.cpp: Copied from WebCore/platform/text/CString.cpp.
       
  5169         * wtf/text/CString.h: Copied from WebCore/platform/text/CString.h.
       
  5170         (WTF::CStringBuffer::data):
       
  5171         (WTF::CStringBuffer::length):
       
  5172         (WTF::CStringBuffer::create):
       
  5173         (WTF::CStringBuffer::CStringBuffer):
       
  5174         (WTF::CStringBuffer::mutableData):
       
  5175         (WTF::CString::CString):
       
  5176         (WTF::CString::isNull):
       
  5177         (WTF::CString::buffer):
       
  5178         (WTF::operator!=):
       
  5179 
       
  5180 2010-03-30  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  5181 
       
  5182         Reviewed by nobody, build break.
       
  5183 
       
  5184         [Qt] Fix build break on Qt Mac.
       
  5185 
       
  5186         DESTDIR path on Mac do not include the configuration path by default
       
  5187         like on Windows. Have to force it.
       
  5188 
       
  5189         * JavaScriptCore.pro:
       
  5190 
       
  5191 2010-03-29  Alice Liu  <alice.liu@apple.com>
       
  5192 
       
  5193         Reviewed by NOBODY (build fix).
       
  5194 
       
  5195         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
       
  5196         add JSObjectRefPrivate.h
       
  5197 
       
  5198 2010-03-29  Chao-ying Fu  <fu@mips.com>
       
  5199 
       
  5200         Reviewed by Oliver Hunt.
       
  5201 
       
  5202         MIPS JIT Supports
       
  5203         https://bugs.webkit.org/show_bug.cgi?id=30144
       
  5204 
       
  5205         The following changes enable MIPS JIT.
       
  5206 
       
  5207         * assembler/MIPSAssembler.h:
       
  5208         (JSC::MIPSAssembler::lbu):
       
  5209         (JSC::MIPSAssembler::linkWithOffset):
       
  5210         * assembler/MacroAssemblerMIPS.h:
       
  5211         (JSC::MacroAssemblerMIPS::load8):
       
  5212         (JSC::MacroAssemblerMIPS::branch8):
       
  5213         (JSC::MacroAssemblerMIPS::branchTest8):
       
  5214         (JSC::MacroAssemblerMIPS::setTest8):
       
  5215         (JSC::MacroAssemblerMIPS::setTest32):
       
  5216         * jit/JIT.h:
       
  5217         * jit/JITInlineMethods.h:
       
  5218         (JSC::JIT::preserveReturnAddressAfterCall):
       
  5219         (JSC::JIT::restoreReturnAddressBeforeReturn):
       
  5220         * jit/JITOpcodes.cpp:
       
  5221         * jit/JITStubs.cpp:
       
  5222         (JSC::JITThunks::JITThunks):
       
  5223         * jit/JITStubs.h:
       
  5224         (JSC::JITStackFrame::returnAddressSlot):
       
  5225         * wtf/Platform.h:
       
  5226 
       
  5227 2010-02-26  Kenneth Rohde Christiansen  <kenneth@webkit.org>
       
  5228 
       
  5229         Reviewed by Simon Fraser.
       
  5230 
       
  5231         Add support for Widgets 1.0: View Mode Media Feature
       
  5232         https://bugs.webkit.org/show_bug.cgi?id=35446
       
  5233 
       
  5234         Add an enable flag for the Widgets (http://www.w3.org/TR/widgets-reqs/)
       
  5235         and turn it on for Qt only.
       
  5236 
       
  5237         * wtf/Platform.h:
       
  5238 
       
  5239 2010-03-29  Patrick Gansterer  <paroga@paroga.com>
       
  5240 
       
  5241         Reviewed by Darin Adler.
       
  5242 
       
  5243         Corrected name of (u)int64_t compile time assert.
       
  5244         https://bugs.webkit.org/show_bug.cgi?id=36739
       
  5245 
       
  5246         int64_t_is_four_bytes -> int64_t_is_eight_bytes
       
  5247 
       
  5248         * os-win32/stdint.h:
       
  5249 
       
  5250 2010-03-29  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  5251 
       
  5252         Reviewed by Simon Hausmann.
       
  5253 
       
  5254         [Qt] Use the -l syntax for linking against JavaScriptCore on Windows.
       
  5255         This allow qmake to extract dependencies correctly when generating VS
       
  5256         solutions.
       
  5257 
       
  5258         * JavaScriptCore.pri:
       
  5259 
       
  5260 2010-03-29  Thomas Zander  <t.zander@nokia.com>
       
  5261 
       
  5262         Reviewed by Simon Hausmann.
       
  5263 
       
  5264         https://bugs.webkit.org/show_bug.cgi?id=36742
       
  5265 
       
  5266         gcc for Symbian doesn't support gcc extensions like atomicity.h - disable
       
  5267 
       
  5268         * wtf/Threading.h: also detect os symbian
       
  5269 
       
  5270 2010-03-28  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  5271 
       
  5272         Reviewed by Simon Hausmann.
       
  5273 
       
  5274         [Qt] Remove the definition of WTF_CHANGES guards from the build system
       
  5275         https://bugs.webkit.org/show_bug.cgi?id=31670
       
  5276   
       
  5277         * JavaScriptCore.pro: Remove the definition of WTF_CHANGES
       
  5278         as it is already defined in config.h
       
  5279 
       
  5280 2010-03-28  Kent Hansen  <kent.hansen@nokia.com>
       
  5281 
       
  5282         Reviewed by Simon Hausmann.
       
  5283 
       
  5284         [Qt] Add API for reporting additional memory cost of JavaScript objects
       
  5285         https://bugs.webkit.org/show_bug.cgi?id=36650
       
  5286 
       
  5287         * qt/api/qscriptengine.cpp:
       
  5288         (QScriptEngine::reportAdditionalMemoryCost):
       
  5289         * qt/api/qscriptengine.h:
       
  5290         * qt/api/qscriptengine_p.h:
       
  5291         (QScriptEnginePrivate::reportAdditionalMemoryCost):
       
  5292         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
       
  5293         (tst_QScriptEngine::reportAdditionalMemoryCost):
       
  5294 
       
  5295 2010-03-28  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  5296 
       
  5297         Reviewed by Simon Hausmann.
       
  5298 
       
  5299         QScriptEngine API was enriched by globalObject() method
       
  5300         which give an access to the global object.
       
  5301 
       
  5302         [Qt] QScriptEngine doesn't give an access to global object
       
  5303         https://bugs.webkit.org/show_bug.cgi?id=36603
       
  5304 
       
  5305         * qt/api/qscriptengine.cpp:
       
  5306         (QScriptEngine::globalObject):
       
  5307         * qt/api/qscriptengine.h:
       
  5308         * qt/api/qscriptengine_p.cpp:
       
  5309         (QScriptEnginePrivate::globalObject):
       
  5310         * qt/api/qscriptengine_p.h:
       
  5311         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
       
  5312         (tst_QScriptEngine::globalObject):
       
  5313 
       
  5314 2010-03-26  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  5315 
       
  5316         Reviewed by Simon Hausmann.
       
  5317 
       
  5318         [Qt] Build JavaScriptCore as a static library.
       
  5319         https://bugs.webkit.org/show_bug.cgi?id=36590
       
  5320 
       
  5321         This patch takes what was left of the unused JavaScriptCore.pro
       
  5322         and moved the compilation logic from JavaScriptCore.pri to
       
  5323         JavaScriptCore.pro.
       
  5324 
       
  5325         * JavaScriptCore.pri:
       
  5326         * JavaScriptCore.pro:
       
  5327         * jsc.pro:
       
  5328         * qt/api/QtScript.pro:
       
  5329 
       
  5330 2010-03-25  Gavin Barraclough  <barraclough@apple.com>
       
  5331 
       
  5332         Reviewed by NOBODY (build fix).
       
  5333 
       
  5334         * profiler/ProfileGenerator.cpp:
       
  5335         (JSC::ProfileGenerator::willExecute):
       
  5336         (JSC::ProfileGenerator::didExecute):
       
  5337 
       
  5338 2010-03-25  Gavin Barraclough  <barraclough@apple.com>
       
  5339 
       
  5340         Reviewed by Geoff Garen.
       
  5341 
       
  5342         Bug 36611 - Cleanup JSC::CString
       
  5343         Rename CString::c_str() -> CString::data(), CString::size() -> CString::length(),
       
  5344         remove UString::getCString() (all uses are wrong, should use UString::UTF8String()).
       
  5345 
       
  5346         * bytecode/CodeBlock.cpp:
       
  5347         (JSC::CodeBlock::printUnaryOp):
       
  5348         (JSC::CodeBlock::printBinaryOp):
       
  5349         (JSC::CodeBlock::printConditionalJump):
       
  5350         (JSC::CodeBlock::printGetByIdOp):
       
  5351         (JSC::CodeBlock::printPutByIdOp):
       
  5352         (JSC::printGlobalResolveInfo):
       
  5353         (JSC::printStructureStubInfo):
       
  5354         (JSC::CodeBlock::printStructure):
       
  5355         (JSC::CodeBlock::printStructures):
       
  5356         (JSC::CodeBlock::dump):
       
  5357         * jsc.cpp:
       
  5358         (functionPrint):
       
  5359         (functionDebug):
       
  5360         (runInteractive):
       
  5361         (fillBufferWithContentsOfFile):
       
  5362         * profiler/CallIdentifier.h:
       
  5363         (JSC::CallIdentifier::c_str):
       
  5364         * profiler/Profile.cpp:
       
  5365         (JSC::Profile::debugPrintDataSampleStyle):
       
  5366         * profiler/ProfileNode.cpp:
       
  5367         (JSC::ProfileNode::debugPrintData):
       
  5368         (JSC::ProfileNode::debugPrintDataSampleStyle):
       
  5369         * runtime/DateConversion.cpp:
       
  5370         (JSC::parseDate):
       
  5371         * runtime/JSGlobalObjectFunctions.cpp:
       
  5372         (JSC::encode):
       
  5373         (JSC::globalFuncJSCPrint):
       
  5374         * runtime/UString.cpp:
       
  5375         (JSC::operator==):
       
  5376         (JSC::UString::toDouble):
       
  5377         * runtime/UString.h:
       
  5378         (JSC::CString::length):
       
  5379         (JSC::CString::data):
       
  5380 
       
  5381 2010-03-25  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  5382 
       
  5383         Reviewed by nobody, build fix.
       
  5384 
       
  5385         [Qt] Build fix on MSVC. Reverts r55633 for stdint.h
       
  5386 
       
  5387         This file gets included in generated moc files which don't
       
  5388         include the prefix header.
       
  5389 
       
  5390         * os-win32/stdint.h:
       
  5391 
       
  5392 2010-03-24  Gavin Barraclough  <barraclough@apple.com>
       
  5393 
       
  5394         Reviewed by NOBODY (windows build fix).
       
  5395 
       
  5396 2010-03-24  Gavin Barraclough  <barraclough@apple.com>
       
  5397 
       
  5398         Reviewed by Sam Weinig.
       
  5399 
       
  5400         Switch String::latin1, String::utf8, String::fromUTF8 to
       
  5401         use WTF's Unicode conversion methods rather than TextEncoder.
       
  5402         These methods only perform simple conversion, and don't need
       
  5403         really require TextEncoder's full capability (to look up arbitrary
       
  5404         encodings by name), switching to only be dependent on WTF will
       
  5405         make it easier if we chose to move WebCore::String to WTF.
       
  5406 
       
  5407         * JavaScriptCore.exp:
       
  5408 
       
  5409 2010-03-24  Alexey Proskuryakov  <ap@apple.com>
       
  5410 
       
  5411         Reviewed by Geoff Garen.
       
  5412 
       
  5413         * wtf/FastMalloc.h: Added a using directive for fastMallocSize, like we do for all public
       
  5414         WTF symbols. Also sorted the list alphabetically.
       
  5415 
       
  5416 2010-03-23  Gavin Barraclough  <barraclough@apple.com>
       
  5417 
       
  5418         Reviewed by NOBODY (speculative windows build fix part II).
       
  5419 
       
  5420 2010-03-23  Gavin Barraclough  <barraclough@apple.com>
       
  5421 
       
  5422         Reviewed by NOBODY (speculative windows build fix).
       
  5423 
       
  5424 2010-03-23  Gavin Barraclough  <barraclough@apple.com>
       
  5425 
       
  5426         Reviewed by Oliver Hunt.
       
  5427 
       
  5428         Bug 36519 - JSGlobalContextRelease is unnecessarily slow
       
  5429 
       
  5430         Since [ http://trac.webkit.org/changeset/35917 ], calling
       
  5431         JSGlobalContextRelease always triggers a GC heap collection
       
  5432         (if not a full destroy). As per 35917's changelog "This is
       
  5433         only really necessary when the (JSGlobalObject's) last
       
  5434         reference is released, but there is no way to determine that,
       
  5435         and no harm in collecting slightly more often."
       
  5436         
       
  5437         Well, we now know of cases of API clients who are harmed by
       
  5438         the performance penalty of collecting too often, so it's time
       
  5439         to add a way to determine whether a call to JSGlobalContextRelease
       
  5440         is removing the last protect from it's global object.  If further
       
  5441         protects are retaining the global object (likely from other
       
  5442         JSGlobalContextRefs), then don't trigger a GC collection.
       
  5443 
       
  5444         * API/JSContextRef.cpp:
       
  5445         * runtime/Collector.cpp:
       
  5446         (JSC::Heap::unprotect): return a boolean indicating that the value is now unprotected.
       
  5447         * runtime/Collector.h:
       
  5448         * wtf/HashCountedSet.h:
       
  5449         (WTF::::remove): return a boolean indicating whether the value was removed from the set.
       
  5450 
       
  5451 2010-03-23  Mark Rowe  <mrowe@apple.com>
       
  5452 
       
  5453         Build fix.
       
  5454 
       
  5455         * runtime/ArrayPrototype.cpp:
       
  5456         (JSC::arrayProtoFuncSplice): Some versions of GCC emit a warning about the implicit 64- to 32-bit truncation
       
  5457         that takes place here. An explicit cast is sufficient to silence it.
       
  5458 
       
  5459 2010-03-23  Alexey Proskuryakov  <ap@apple.com>
       
  5460 
       
  5461         Build fix.
       
  5462 
       
  5463         * runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice): Fixed a typo - length doesn't
       
  5464         need to be converted with toInteger().
       
  5465 
       
  5466 2010-03-23  Alexey Proskuryakov  <ap@apple.com>
       
  5467 
       
  5468         Reviewed by Geoff Garen.
       
  5469 
       
  5470         https://bugs.webkit.org/show_bug.cgi?id=36511
       
  5471         <rdar://problem/7753498> Safari freezes when using SPUTNIK JavaScript conformance check
       
  5472 
       
  5473         Test: fast/js/sputnik-S15.4.4.12_A3_T3.html
       
  5474 
       
  5475         * runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice): We were incorrectly computing
       
  5476         the start offset, and iterated over (almost) all integers. Note that this can be fixed
       
  5477         without using doubles, but the code would be much more complicated, and there is no important
       
  5478         reason to stick to integers here.
       
  5479 
       
  5480 2010-03-23  Kent Hansen  <kent.hansen@nokia.com>
       
  5481 
       
  5482         Reviewed by Darin Adler.
       
  5483 
       
  5484         Fix compilation on Itanium in 32-bit mode
       
  5485         https://bugs.webkit.org/show_bug.cgi?id=36494
       
  5486 
       
  5487         * wtf/Platform.h: Introduce CPU(IA64_32). Don't define
       
  5488           WTF_USE_JSVALUE64 if the CPU is in 32-bit mode.
       
  5489 
       
  5490 2010-03-23  Geoffrey Garen  <ggaren@apple.com>
       
  5491 
       
  5492         Reviewed by Mark Rowe.
       
  5493 
       
  5494         Interpreter fix for <rdar://problem/7728196> REGRESSION (r46701): -(-2147483648)
       
  5495         evaluates to -2147483648 on 32 bit (35842)
       
  5496 
       
  5497         * interpreter/Interpreter.cpp:
       
  5498         (JSC::Interpreter::privateExecute): Only take the fast negate path if
       
  5499         a bit other than bit 31 is set. If none of bits 0-30 are set, then the
       
  5500         value we're negating can only be 0 or -2147483648, and neither can be
       
  5501         negated in int space.
       
  5502 
       
  5503         * jit/JITArithmetic.cpp:
       
  5504         (JSC::JIT::emit_op_negate):
       
  5505         (JSC::JIT::emitSlow_op_negate): Updated the JIT implementation to match
       
  5506         the interpreter, since it's slightly simpler.
       
  5507 
       
  5508 2010-03-22  Siddharth Mathur  <siddharth.mathur@nokia.com>
       
  5509 
       
  5510         Reviewed by Laszlo Gombos.
       
  5511 
       
  5512         [Symbian] More efficient aligned memory allocation for JSC Collector
       
  5513         https://bugs.webkit.org/show_bug.cgi?id=34350
       
  5514 
       
  5515         * JavaScriptCore.pri: Added 2 new Symbian source files and HAL linkage
       
  5516 
       
  5517         * runtime/Collector.cpp: Reduced port-specific code and added private data member
       
  5518         (JSC::Heap::Heap):
       
  5519         (JSC::Heap::~Heap):
       
  5520         (JSC::Heap::destroy):
       
  5521         (JSC::Heap::allocateBlock):
       
  5522         (JSC::Heap::freeBlockPtr):
       
  5523 
       
  5524         * runtime/Collector.h: Added private data member
       
  5525 
       
  5526         * wtf/symbian: Added.
       
  5527         * wtf/symbian/BlockAllocatorSymbian.cpp: Added.
       
  5528         (WTF::AlignedBlockAllocator::AlignedBlockAllocator): Helper class to allocate 
       
  5529         aligned blocks more efficiently as required by Collector
       
  5530         (WTF::AlignedBlockAllocator::alloc):
       
  5531         (WTF::AlignedBlockAllocator::free):
       
  5532         (WTF::AlignedBlockAllocator::destroy):
       
  5533         (WTF::AlignedBlockAllocator::~AlignedBlockAllocator):
       
  5534         * wtf/symbian/BlockAllocatorSymbian.h: Added.
       
  5535 
       
  5536 2010-03-22  Geoffrey Garen  <ggaren@apple.com>
       
  5537 
       
  5538         Reviewed by Sam Weinig.
       
  5539 
       
  5540         Fixed <rdar://problem/7728196> REGRESSION (r46701): -(-2147483648)
       
  5541         evaluates to -2147483648 on 32 bit (35842)
       
  5542         
       
  5543         Two ways to fix the same bug:
       
  5544         
       
  5545         1. Check for overflow when negating, since negating the largest negative
       
  5546         int causes overflow.
       
  5547         
       
  5548         2. Constant-fold even when negating a negative, since, like they say in
       
  5549         high school, "math works."
       
  5550 
       
  5551         * assembler/MacroAssemblerARM.h:
       
  5552         (JSC::MacroAssemblerARM::branchNeg32):
       
  5553         * assembler/MacroAssemblerX86Common.h:
       
  5554         (JSC::MacroAssemblerX86Common::branchNeg32): Added a branching version
       
  5555         of the negate operator.
       
  5556 
       
  5557         * jit/JITArithmetic.cpp:
       
  5558         (JSC::JIT::emit_op_negate): Use the branching version of the negate 
       
  5559         operator to check for overflow.
       
  5560 
       
  5561         (JSC::JIT::emitSlow_op_negate): Link the check for overflow to a slow case.
       
  5562         (We could emit inline code for this, since we know what the result would
       
  5563         be, but that's probably just a waste of generated code.)
       
  5564 
       
  5565         * parser/Grammar.y: Constant fold even when negating a negative.
       
  5566 
       
  5567 2010-03-22  David Kilzer  <ddkilzer@apple.com>
       
  5568 
       
  5569         <http://webkit.org/b/36431> Clean up 'int' use in UString.cpp after r54789
       
  5570 
       
  5571         Reviewed by Darin Adler.
       
  5572 
       
  5573         * runtime/UString.cpp:
       
  5574         (JSC::UString::from): Changed argument type from 'unsigned int'
       
  5575         to 'unsigned' to match WebKit coding style.
       
  5576         (JSC::UString::find): Changed static_cast<int>() to
       
  5577         static_cast<unsigned>() now that this method returns unsigned.
       
  5578         (JSC::UString::rfind): Ditto.
       
  5579         * runtime/UString.h:
       
  5580         (JSC::UString::from): Changed argument type from 'unsigned int'
       
  5581         to 'unsigned' to match WebKit coding style.
       
  5582 
       
  5583 2010-03-22  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  5584 
       
  5585         Reviewed by Kenneth Rohde Christiansen.
       
  5586 
       
  5587         Add support for syntax checking in the QtScript API.
       
  5588 
       
  5589         New class was created; the QScriptSyntaxCheckResult which main
       
  5590         responsibility is to provide results of the ECMA Script code
       
  5591         syntax check. The class is not fully functional as the JSC C API
       
  5592         doesn't expose an error column number, but it is a good start point
       
  5593         for a future development.
       
  5594 
       
  5595         [Qt] QtScript functionality should be extended by syntax checking.
       
  5596         https://bugs.webkit.org/show_bug.cgi?id=36123
       
  5597 
       
  5598         * qt/api/QtScript.pro:
       
  5599         * qt/api/qscriptengine.cpp:
       
  5600         (QScriptEngine::checkSyntax):
       
  5601         * qt/api/qscriptengine.h:
       
  5602         * qt/api/qscriptengine_p.cpp:
       
  5603         (QScriptEnginePrivate::checkSyntax):
       
  5604         * qt/api/qscriptengine_p.h:
       
  5605         * qt/api/qscriptsyntaxcheckresult.cpp: Added.
       
  5606         (QScriptSyntaxCheckResult::QScriptSyntaxCheckResult):
       
  5607         (QScriptSyntaxCheckResult::~QScriptSyntaxCheckResult):
       
  5608         (QScriptSyntaxCheckResult::operator=):
       
  5609         (QScriptSyntaxCheckResult::state):
       
  5610         (QScriptSyntaxCheckResult::errorLineNumber):
       
  5611         (QScriptSyntaxCheckResult::errorColumnNumber):
       
  5612         (QScriptSyntaxCheckResult::errorMessage):
       
  5613         * qt/api/qscriptsyntaxcheckresult.h: Added.
       
  5614         * qt/api/qscriptsyntaxcheckresult_p.cpp: Added.
       
  5615         (QScriptSyntaxCheckResultPrivate::~QScriptSyntaxCheckResultPrivate):
       
  5616         (QScriptSyntaxCheckResultPrivate::errorMessage):
       
  5617         (QScriptSyntaxCheckResultPrivate::errorLineNumber):
       
  5618         * qt/api/qscriptsyntaxcheckresult_p.h: Added.
       
  5619         (QScriptSyntaxCheckResultPrivate::get):
       
  5620         (QScriptSyntaxCheckResultPrivate::QScriptSyntaxCheckResultPrivate):
       
  5621         (QScriptSyntaxCheckResultPrivate::state):
       
  5622         (QScriptSyntaxCheckResultPrivate::errorColumnNumber):
       
  5623         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
       
  5624         (tst_QScriptEngine::checkSyntax_data):
       
  5625         (tst_QScriptEngine::checkSyntax):
       
  5626 
       
  5627 2010-03-21  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  5628 
       
  5629         Reviewed by Simon Hausmann.
       
  5630 
       
  5631         New class; QScriptProgram.
       
  5632 
       
  5633         The class should be used to evaluate the same script multiple times
       
  5634         more efficiently.
       
  5635 
       
  5636         [Qt] QtScript should have QScriptProgram class
       
  5637         https://bugs.webkit.org/show_bug.cgi?id=36008
       
  5638 
       
  5639         * qt/api/QtScript.pro:
       
  5640         * qt/api/qscriptengine.cpp:
       
  5641         (QScriptEngine::evaluate):
       
  5642         * qt/api/qscriptengine.h:
       
  5643         * qt/api/qscriptengine_p.cpp:
       
  5644         (QScriptEnginePrivate::evaluate):
       
  5645         * qt/api/qscriptengine_p.h:
       
  5646         (QScriptEnginePrivate::evaluate):
       
  5647         * qt/api/qscriptprogram.cpp: Added.
       
  5648         (QScriptProgram::QScriptProgram):
       
  5649         (QScriptProgram::~QScriptProgram):
       
  5650         (QScriptProgram::operator=):
       
  5651         (QScriptProgram::isNull):
       
  5652         (QScriptProgram::sourceCode):
       
  5653         (QScriptProgram::fileName):
       
  5654         (QScriptProgram::firstLineNumber):
       
  5655         (QScriptProgram::operator==):
       
  5656         (QScriptProgram::operator!=):
       
  5657         * qt/api/qscriptprogram.h: Added.
       
  5658         * qt/api/qscriptprogram_p.h: Added.
       
  5659         (QScriptProgramPrivate::get):
       
  5660         (QScriptProgramPrivate::QScriptProgramPrivate):
       
  5661         (QScriptProgramPrivate::~QScriptProgramPrivate):
       
  5662         (QScriptProgramPrivate::isNull):
       
  5663         (QScriptProgramPrivate::sourceCode):
       
  5664         (QScriptProgramPrivate::fileName):
       
  5665         (QScriptProgramPrivate::firstLineNumber):
       
  5666         (QScriptProgramPrivate::operator==):
       
  5667         (QScriptProgramPrivate::operator!=):
       
  5668         (QScriptProgramPrivate::program):
       
  5669         (QScriptProgramPrivate::file):
       
  5670         (QScriptProgramPrivate::line):
       
  5671         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
       
  5672         (tst_QScriptEngine::evaluateProgram):
       
  5673 
       
  5674 2010-03-21  David Kilzer  <ddkilzer@apple.com>
       
  5675 
       
  5676         Blind attempt #2 to fix the Windows build after r56314
       
  5677 
       
  5678         * API/tests/testapi.c: Include JSObjectRefPrivate.h for the new
       
  5679         methods instead of declaring them locally (and non-extern).
       
  5680         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  5681         Backed out previous change.
       
  5682 
       
  5683 2010-03-21  David Kilzer  <ddkilzer@apple.com>
       
  5684 
       
  5685         Blind attempt to fix the Windows build after r56314
       
  5686 
       
  5687         Try to fix the following errors on the Windows buildbot:
       
  5688 
       
  5689             Linking...
       
  5690             testapi.obj : error LNK2001: unresolved external symbol "bool __cdecl JSObjectSetPrivateProperty(struct OpaqueJSContext const *,struct OpaqueJSValue *,struct OpaqueJSString *,struct OpaqueJSValue const *)" (?JSObjectSetPrivateProperty@@YA_NPBUOpaqueJSContext@@PAUOpaqueJSValue@@PAUOpaqueJSString@@PBU2@@Z)
       
  5691             testapi.obj : error LNK2001: unresolved external symbol "struct OpaqueJSValue const * __cdecl JSObjectGetPrivateProperty(struct OpaqueJSContext const *,struct OpaqueJSValue *,struct OpaqueJSString *)" (?JSObjectGetPrivateProperty@@YAPBUOpaqueJSValue@@PBUOpaqueJSContext@@PAU1@PAUOpaqueJSString@@@Z)
       
  5692             C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\bin\testapi.exe : fatal error LNK1120: 2 unresolved externals
       
  5693 
       
  5694         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Added
       
  5695         missing symbols to be exported.
       
  5696 
       
  5697 2010-03-21  Oliver Hunt  <oliver@apple.com>
       
  5698 
       
  5699         Reviewed by Maciej Stachowiak.
       
  5700 
       
  5701         Documentation fix for previous patch.
       
  5702 
       
  5703         * API/JSObjectRefPrivate.h:
       
  5704 
       
  5705 2010-03-20  Oliver Hunt  <oliver@apple.com>
       
  5706 
       
  5707         Reviewed by Maciej Stachowiak.
       
  5708 
       
  5709         JSC needs an API to allow custom objects to have aprivate GC-accessible properties
       
  5710         https://bugs.webkit.org/show_bug.cgi?id=36420
       
  5711 
       
  5712         Add new API methods to support "private" properties on custom
       
  5713         objects.
       
  5714 
       
  5715         * API/JSCallbackObject.h:
       
  5716         (JSC::JSCallbackObjectData::JSCallbackObjectData):
       
  5717         (JSC::JSCallbackObjectData::~JSCallbackObjectData):
       
  5718         (JSC::JSCallbackObjectData::getPrivateProperty):
       
  5719         (JSC::JSCallbackObjectData::setPrivateProperty):
       
  5720         (JSC::JSCallbackObjectData::deletePrivateProperty):
       
  5721         (JSC::JSCallbackObjectData::markChildren):
       
  5722         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty):
       
  5723         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
       
  5724         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::deletePrivateProperty):
       
  5725         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren):
       
  5726         (JSC::JSCallbackObject::getPrivateProperty):
       
  5727         (JSC::JSCallbackObject::setPrivateProperty):
       
  5728         (JSC::JSCallbackObject::deletePrivateProperty):
       
  5729         (JSC::JSCallbackObject::markChildren):
       
  5730         * API/JSObjectRef.cpp:
       
  5731         (JSObjectGetPrivateProperty):
       
  5732         (JSObjectSetPrivateProperty):
       
  5733         (JSObjectDeletePrivateProperty):
       
  5734         * API/JSObjectRefPrivate.h: Added.
       
  5735         * API/tests/testapi.c:
       
  5736         (main):
       
  5737         * JavaScriptCore.exp:
       
  5738         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  5739 
       
  5740 2010-03-20  Kevin Ollivier  <kevino@theolliviers.com>
       
  5741 
       
  5742         [wx] Build fixes after introduction of Brew files.
       
  5743 
       
  5744         * wscript:
       
  5745 
       
  5746 2010-03-18  Tom Callaway  <tcallawa@redhat.com>
       
  5747 
       
  5748         Reviewed by Darin Adler.
       
  5749 
       
  5750         Bug 35429: Fix compile on SPARC64
       
  5751         https://bugs.webkit.org/show_bug.cgi?id=35429
       
  5752 
       
  5753         * wtf/Platform.h: Set WTF_USE_JSVALUE64 for SPARC64
       
  5754 
       
  5755 2010-03-18  Oliver Hunt  <oliver@apple.com>
       
  5756 
       
  5757         Reviewed by Sam Weinig.
       
  5758 
       
  5759         Add API to directly expose JSON parsing
       
  5760         https://bugs.webkit.org/show_bug.cgi?id=34887
       
  5761 
       
  5762         Add API to expose JSON parsing directly, and add tests to testapi
       
  5763 
       
  5764         * API/JSValueRef.cpp:
       
  5765         (JSValueMakeFromJSONString):
       
  5766         (JSValueCreateJSONString):
       
  5767         * API/tests/testapi.c:
       
  5768         (main):
       
  5769         * JavaScriptCore.exp:
       
  5770         * runtime/JSONObject.cpp:
       
  5771         (JSC::JSONStringify):
       
  5772         * runtime/JSONObject.h:
       
  5773 
       
  5774 2010-03-16  Sam Weinig  <sam@webkit.org>
       
  5775 
       
  5776         Reviewed by Darin Adler and Mark Rowe.
       
  5777 
       
  5778         Update WebKit availability macros for release after 4.0.
       
  5779 
       
  5780         * API/WebKitAvailability.h:
       
  5781 
       
  5782 2010-03-17  Oliver Hunt  <oliver@apple.com>
       
  5783 
       
  5784         Reviewed by Gavin Barraclough.
       
  5785 
       
  5786         undefined, NaN, and Infinity should be ReadOnly
       
  5787         https://bugs.webkit.org/show_bug.cgi?id=36263
       
  5788 
       
  5789         Simply add the ReadOnly flag to these properties.
       
  5790 
       
  5791         * runtime/JSGlobalObject.cpp:
       
  5792         (JSC::JSGlobalObject::reset):
       
  5793 
       
  5794 2010-03-17  Darin Adler  <darin@apple.com>
       
  5795 
       
  5796         Reviewed by Oliver Hunt.
       
  5797 
       
  5798         Speed up Math.round a little by removing unneeded special case
       
  5799         https://bugs.webkit.org/show_bug.cgi?id=36107
       
  5800 
       
  5801         Test: fast/js/math.html
       
  5802 
       
  5803         * runtime/MathObject.cpp:
       
  5804         (JSC::mathProtoFuncRound): This function had a special case for numbers
       
  5805         between -0.5 and -0.0 to return -0.0. But the algorithm in the function
       
  5806         already yields -0.0 for those cases, so the extra checking and branching
       
  5807         is unneeded.
       
  5808 
       
  5809 2010-03-17  Mike Homey  <glandium@debian.org>
       
  5810 
       
  5811         Reviewed by Gustavo Noronha.
       
  5812 
       
  5813         Build fix for SPARC. Fix missing macro value.
       
  5814 
       
  5815         * wtf/Platform.h:
       
  5816 
       
  5817 2010-03-16  Gavin Barraclough  <barraclough@apple.com>
       
  5818 
       
  5819         Reviewed by Oliver Hunt, Darin Adler.
       
  5820 
       
  5821         Bug 36083 - REGRESSION (r55772-r55834): Crash in JavaScriptCore RegExp code on PowerPC
       
  5822 
       
  5823         The problem is a bug in our port of PCRE - that a read may take place from the first character in an
       
  5824         empty string.  For the time being, revert to using a valid pointer in the data segment rather than
       
  5825         an invalid non-null pointer into the zero-page for the empty string's data pointer.  A better fix for
       
  5826         this will be to remove PCRE.
       
  5827 
       
  5828         * runtime/UStringImpl.cpp:
       
  5829         (JSC::UStringImpl::empty):
       
  5830 
       
  5831 2010-03-16  Darin Adler  <darin@apple.com>
       
  5832 
       
  5833         Rolled out r56081 since it broke the Windows build.
       
  5834 
       
  5835 2010-03-16  Zoltan Horvath  <zoltan@webkit.org>
       
  5836 
       
  5837         Reviewed by Darin Adler.
       
  5838 
       
  5839         Remove extra <new> include and add guards to operator new/delete definitions
       
  5840         https://bugs.webkit.org/show_bug.cgi?id=35967
       
  5841 
       
  5842         Remove extra <new> header include from FastAlloc.cpp since it is included in 
       
  5843         FastAlloc.h. Add ENABLE(GLOBAL_FASTMALLOC_NEW) macro guard to operator
       
  5844         new/delete/new []/delete [] definitions.
       
  5845 
       
  5846         * wtf/FastMalloc.cpp:
       
  5847 
       
  5848 2010-03-15  Kwang Yul Seo  <skyul@company100.net>
       
  5849 
       
  5850         Reviewed by Eric Seidel.
       
  5851 
       
  5852         [BREWMP] Add a function to create a BREW instance without local variable declarations.
       
  5853         https://bugs.webkit.org/show_bug.cgi?id=34705
       
  5854 
       
  5855         Add a template function to create a BREW instance in one line.
       
  5856 
       
  5857         * wtf/brew/ShellBrew.h: Added.
       
  5858         (WTF::createInstance):
       
  5859 
       
  5860 2010-03-15  Geoffrey Garen  <ggaren@apple.com>
       
  5861 
       
  5862         Not reviewed.
       
  5863 
       
  5864         Removed a now-incorrect comment I forgot to remove in my last check-in.
       
  5865 
       
  5866         * wtf/FastMalloc.cpp:
       
  5867         (WTF::TCMalloc_PageHeap::scavenge):
       
  5868 
       
  5869 2010-03-15  Geoffrey Garen  <ggaren@apple.com>
       
  5870 
       
  5871         Reviewed by Sam Weinig.
       
  5872 
       
  5873         Fixed a portion of:
       
  5874         <rdar://problem/7165917> | https://bugs.webkit.org/show_bug.cgi?id=28676
       
  5875         Safari 4 does not release memory back to the operating system fast enough (28676)
       
  5876 
       
  5877         Every few seconds, release a percentage of the minimum unused page count
       
  5878         during that time period.
       
  5879 
       
  5880         SunSpider reports no change, command-line or in-browser, Mac or Windows.
       
  5881         
       
  5882         * wtf/FastMalloc.cpp:
       
  5883         (WTF::TCMalloc_PageHeap::init):
       
  5884         (WTF::TCMalloc_PageHeap::signalScavenger):
       
  5885         (WTF::TCMalloc_PageHeap::initializeScavenger): Renamed shouldContinueScavenging
       
  5886         to shouldScavenge, since scavenging is no longer something that we interrupt.
       
  5887 
       
  5888         (WTF::TCMalloc_PageHeap::scavenge): The new scavenging algorithm. Fixes
       
  5889         a bug where the old code would release only one item from each size class
       
  5890         per scavenge, potentially leaving large numbers of large-sized objects
       
  5891         unreleased for a long time.
       
  5892 
       
  5893         (WTF::TCMalloc_PageHeap::shouldScavenge):
       
  5894         (WTF::TCMalloc_PageHeap::New):
       
  5895         (WTF::TCMalloc_PageHeap::AllocLarge):
       
  5896         (WTF::TCMalloc_PageHeap::Delete):
       
  5897         (WTF::TCMalloc_PageHeap::GrowHeap):
       
  5898         (WTF::TCMalloc_PageHeap::scavengerThread):
       
  5899         (WTF::TCMalloc_PageHeap::periodicScavenge): Updated to track the minimum
       
  5900         value of free_committed_pages_ during a given scavenge period.
       
  5901 
       
  5902 2010-03-15  Gavin Barraclough  <barraclough@apple.com>
       
  5903 
       
  5904         Reviewed by Sam Weinig.
       
  5905 
       
  5906         https://bugs.webkit.org/show_bug.cgi?id=35843
       
  5907         Re-land reverted fix to JSString::getIndex()
       
  5908 
       
  5909         Calling getIndex() on a JSString in rope form may result in a JSException being thrown
       
  5910         if there is insuficient memory so value(exec) returns UString() with length zero,
       
  5911         which will be passed to jsSingleCharacterSubstring.
       
  5912         Add a slow case function to trap the error & return a safe null value, until the
       
  5913         exception is handled.
       
  5914 
       
  5915         * runtime/JSString.cpp:
       
  5916         (JSC::JSString::getIndexSlowCase):
       
  5917         (JSC::JSString::getStringPropertyDescriptor):
       
  5918         * runtime/JSString.h:
       
  5919         (JSC::jsSingleCharacterSubstring):
       
  5920         (JSC::JSString::getIndex):
       
  5921         (JSC::jsSingleCharacterString):
       
  5922         (JSC::JSString::getStringPropertySlot):
       
  5923 
       
  5924 2010-03-04  Kenneth Rohde Christiansen  <kenneth@webkit.org>
       
  5925 
       
  5926         Reviewed by Adam Roben.
       
  5927 
       
  5928         Add a long long version of abs() for MSVC.
       
  5929 
       
  5930         * wtf/MathExtras.h:
       
  5931         (abs):
       
  5932 
       
  5933 2010-03-15  Gabor Loki  <loki@webkit.org>
       
  5934 
       
  5935         Reviewed by Gavin Barraclough.
       
  5936 
       
  5937         Combine ctiTrampolines on ARM and Thumb-2
       
  5938         https://bugs.webkit.org/show_bug.cgi?id=36014
       
  5939 
       
  5940         * jit/JITStubs.cpp:
       
  5941         (JSC::JITThunks::JITThunks):
       
  5942 
       
  5943 2010-03-12  Gavin Barraclough  <barraclough@apple.com>
       
  5944 
       
  5945         Reviewed by NOBODY (build fix).
       
  5946 
       
  5947         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  5948 
       
  5949 2010-03-12  Gavin Barraclough  <barraclough@apple.com>
       
  5950 
       
  5951         Reviewed by NOBODY (build fix).
       
  5952 
       
  5953         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  5954 
       
  5955 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
       
  5956 
       
  5957         Reviewed by Oliver Hunt.
       
  5958 
       
  5959         Bug 36075 - Clean up screwyness re static string impls & Identifiers.
       
  5960 
       
  5961         * API/JSClassRef.cpp:
       
  5962         (OpaqueJSClass::~OpaqueJSClass): Classname may be null/empty, and these are an identifer.  This is okay, since the null/empty strings are shared across all threads.
       
  5963         * JavaScriptCore.exp:
       
  5964         * runtime/Identifier.cpp:
       
  5965         (JSC::Identifier::add): No need to explicitly hash null reps, this is done in the ststic UStringImpl constructor.
       
  5966         (JSC::Identifier::addSlowCase): UStringImpl::empty() handled & checkCurrentIdentifierTable now called in the header.
       
  5967         (JSC::Identifier::checkCurrentIdentifierTable): Replaces checkSameIdentifierTable (this no longer checked the rep since the identifierTable pointer was removed from UString::Rep long ago).
       
  5968         * runtime/Identifier.h:
       
  5969         (JSC::Identifier::add): Replace call to checkSameIdentifierTable with call to checkCurrentIdentifierTable at head of function.
       
  5970         * runtime/UStringImpl.cpp:
       
  5971         (JSC::UStringImpl::~UStringImpl): Remove call to checkConsistency - this function no longer checks anything interesting.
       
  5972         * runtime/UStringImpl.h:
       
  5973         (JSC::UStringOrRopeImpl::UStringOrRopeImpl): Set s_refCountFlagIsIdentifier in static constructor.
       
  5974         (JSC::UStringImpl::UStringImpl): remove calls to checkConsistency (see above), add new ASSERT to substring constructor.
       
  5975         (JSC::UStringImpl::setHash): ASSERT not static (static strings set the hash in their constructor, should not reach this code path).
       
  5976         (JSC::UStringImpl::create): Add missing ASSERT.
       
  5977         (JSC::UStringImpl::setIsIdentifier): ASSERT !isStatic() (static strings hash set in constructor).
       
  5978 
       
  5979 2010-03-12  Peter Varga  <pvarga@inf.u-szeged.hu>
       
  5980 
       
  5981         Reviewed by David Levin.
       
  5982 
       
  5983         Two functions tryConsumeCharacter() and tryConsumeCharacterClass() are
       
  5984         removed from yarr/RegexInterpreter.cpp because they are never called.
       
  5985 
       
  5986         * yarr/RegexInterpreter.cpp:
       
  5987 
       
  5988 2010-03-11  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  5989 
       
  5990         Reviewed by Simon Hausmann.
       
  5991 
       
  5992         The JSNative state was renamed to JSPrimitive. The new name better
       
  5993         coresponds to the ECMAScript standard.
       
  5994 
       
  5995         Enum QScriptValuePrivate::States was renamed to State to obey Qt
       
  5996         coding style rules ("States" name suggests that a state could
       
  5997         mixed together with an other state using bitwise logic operators.
       
  5998 
       
  5999         [Qt] QScriptValuePrivate::States has naming issues
       
  6000         https://bugs.webkit.org/show_bug.cgi?id=35968
       
  6001 
       
  6002         * qt/api/qscriptvalue_p.h:
       
  6003         (QScriptValuePrivate::):
       
  6004         (QScriptValuePrivate::QScriptValuePrivate):
       
  6005         (QScriptValuePrivate::isBool):
       
  6006         (QScriptValuePrivate::isNumber):
       
  6007         (QScriptValuePrivate::isNull):
       
  6008         (QScriptValuePrivate::isString):
       
  6009         (QScriptValuePrivate::isUndefined):
       
  6010         (QScriptValuePrivate::toString):
       
  6011         (QScriptValuePrivate::toNumber):
       
  6012         (QScriptValuePrivate::toBool):
       
  6013         (QScriptValuePrivate::assignEngine):
       
  6014         (QScriptValuePrivate::refinedJSValue):
       
  6015 
       
  6016 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
       
  6017 
       
  6018         Reviewed by NOBODY (Windows build fix).
       
  6019 
       
  6020         Add export.
       
  6021 
       
  6022         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  6023 
       
  6024 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
       
  6025 
       
  6026         Reviewed by NOBODY (Windows build fix).
       
  6027 
       
  6028         Add export.
       
  6029 
       
  6030         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  6031 
       
  6032 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
       
  6033 
       
  6034         Rubber stamped by Oliver Hunt.
       
  6035 
       
  6036         Remove nonsense comments used in development & commited in error.
       
  6037 
       
  6038         * runtime/UStringImpl.h:
       
  6039 
       
  6040 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
       
  6041 
       
  6042         Reviewed by NOBODY (Windows build fix).
       
  6043 
       
  6044         Remove export.
       
  6045 
       
  6046         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  6047 
       
  6048 2010-03-11  Gavin Barraclough  <barraclough@apple.com>
       
  6049 
       
  6050         Reviewed by Oliver Hunt.
       
  6051 
       
  6052         https://bugs.webkit.org/show_bug.cgi?id=36041
       
  6053         Remove unnecessary differences in common code between WebCore::StringImpl & JSC::UStringImpl
       
  6054 
       
  6055         Much of the code in WebCore::StringImpl and JSC::UStringImpl is now very similar,
       
  6056         but has trivial and unnecessary formatting differences, such as the exact wording
       
  6057         of comments, missing ASSERTs, functions implemented in the .h vs .cpp etc.
       
  6058 
       
  6059         * runtime/Identifier.cpp:
       
  6060         (JSC::Identifier::add): UStringImpl::empty() now automatically hashes, uas per WebCore strings.
       
  6061         (JSC::Identifier::addSlowCase): UStringImpl::empty() now automatically hashes, uas per WebCore strings.
       
  6062         * runtime/UStringImpl.cpp:
       
  6063         (JSC::UStringImpl::~UStringImpl): Only call bufferOwnership() once, add missing ASSERTs.
       
  6064         (JSC::UStringImpl::createUninitialized): Move from .h, not commonly called, no need to inline.
       
  6065         (JSC::UStringImpl::create): Move from .h, not commonly called, no need to inline.
       
  6066         (JSC::UStringImpl::sharedBuffer): Rewritten to more closely match WebCore implementation, remove need for separate baseSharedBuffer() method.
       
  6067         * runtime/UStringImpl.h:
       
  6068         (JSC::UStringImpl::UStringImpl): Automatically hash static strings, ASSERT m_data & m_length are non-null/non-zero in non-static strings.
       
  6069         (JSC::UStringImpl::setHash): Add missing ASSERT.
       
  6070         (JSC::UStringImpl::create): Moved to .cpp / added missing check for empty string creation.
       
  6071         (JSC::UStringImpl::adopt): Vector.size() returns size_t, not unsigned.
       
  6072         (JSC::UStringImpl::cost): Renamed m_bufferSubstring -> m_substringBuffer
       
  6073         (JSC::UStringImpl::hash): Reordered in file.
       
  6074         (JSC::UStringImpl::existingHash): Reordered in file.
       
  6075         (JSC::UStringImpl::computeHash): Reordered in file, renamed parameter.
       
  6076         (JSC::UStringImpl::checkConsistency): rewrote ASSERT.
       
  6077         (JSC::UStringImpl::bufferOwnership): Return type should be BufferOwnership.
       
  6078         (JSC::UStringImpl::): Moved friends to head of class.
       
  6079 
       
  6080 2010-03-11  Mark Rowe  <mrowe@apple.com>
       
  6081 
       
  6082         Reviewed by David Kilzer.
       
  6083 
       
  6084         <rdar://problem/7745082> Make it possible to build WebKit for older Mac OS X versions from the current Mac OS X version
       
  6085 
       
  6086         Default to using the appropriate SDK if the target Mac OS X version is not the current Mac OS X version.
       
  6087 
       
  6088         * Configurations/Base.xcconfig:
       
  6089 
       
  6090 2010-03-11  Mark Rowe  <mrowe@apple.com>
       
  6091 
       
  6092         Reviewed by Tim Hatcher.
       
  6093 
       
  6094         <rdar://problem/7745082> Make it possible to build WebKit for older Mac OS X versions from the current Mac OS X version
       
  6095 
       
  6096         Introduce TARGET_MAC_OS_X_VERSION_MAJOR to represent the Mac OS X version that is being targeted.  It defaults to the
       
  6097         current Mac OS X version unless otherwise specified.
       
  6098 
       
  6099         Key off TARGET_MAC_OS_X_VERSION_MAJOR where we'd previously been keying off MAC_OS_X_VERSION_MAJOR.
       
  6100 
       
  6101         Explicitly map from the target Mac OS X version to the preferred compiler since Xcode's default compiler choice
       
  6102         may not be usable when targetting a different Mac OS X version.
       
  6103 
       
  6104         Key off TARGET_GCC_VERSION rather than MAC_OS_X_VERSION_MAJOR in locations where we'd previously been keying off
       
  6105         MAC_OS_X_VERSION_MAJOR but the decision is really related to the compiler version being used.
       
  6106 
       
  6107         * Configurations/Base.xcconfig:
       
  6108         * Configurations/DebugRelease.xcconfig:
       
  6109         * Configurations/FeatureDefines.xcconfig:
       
  6110         * Configurations/JavaScriptCore.xcconfig:
       
  6111         * Configurations/Version.xcconfig:
       
  6112 
       
  6113 2010-03-11  Simon Fraser  <simon.fraser@apple.com>
       
  6114 
       
  6115         Reviewed by Mark Rowe.
       
  6116 
       
  6117         Sort the project file.
       
  6118 
       
  6119         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  6120 
       
  6121 2010-03-11  Simon Fraser  <simon.fraser@apple.com>
       
  6122 
       
  6123         Reviewed by Mark Rowe.
       
  6124 
       
  6125         Sort the project file .
       
  6126 
       
  6127         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  6128 
       
  6129 2010-03-11  Gabor Loki  <loki@webkit.org>
       
  6130 
       
  6131         Reviewed by Gavin Barraclough.
       
  6132 
       
  6133         Buildfix for Thumb-2 after r55684. Add branch8 and branchTest8 functions.
       
  6134         https://bugs.webkit.org/show_bug.cgi?id=35892
       
  6135 
       
  6136         * assembler/ARMv7Assembler.h:
       
  6137         (JSC::ARMv7Assembler::):
       
  6138         (JSC::ARMv7Assembler::ldrb):
       
  6139         * assembler/MacroAssemblerARMv7.h:
       
  6140         (JSC::MacroAssemblerARMv7::load8):
       
  6141         (JSC::MacroAssemblerARMv7::branch8):
       
  6142         (JSC::MacroAssemblerARMv7::branchTest8):
       
  6143         (JSC::MacroAssemblerARMv7::setTest8):
       
  6144 
       
  6145 2010-03-10  Gavin Barraclough  <barraclough@apple.com>
       
  6146 
       
  6147         Rubber stamped by Oliver Hunt.
       
  6148         
       
  6149         Rename JSC::UStringImpl::data() to characters(), to match WebCore::StringImpl.
       
  6150 
       
  6151         * API/JSClassRef.cpp:
       
  6152         (OpaqueJSClassContextData::OpaqueJSClassContextData):
       
  6153         * bytecompiler/BytecodeGenerator.cpp:
       
  6154         (JSC::keyForCharacterSwitch):
       
  6155         * bytecompiler/NodesCodegen.cpp:
       
  6156         (JSC::processClauseList):
       
  6157         * interpreter/Interpreter.cpp:
       
  6158         (JSC::Interpreter::privateExecute):
       
  6159         * jit/JITStubs.cpp:
       
  6160         (JSC::DEFINE_STUB_FUNCTION):
       
  6161         * runtime/ArrayPrototype.cpp:
       
  6162         (JSC::arrayProtoFuncToString):
       
  6163         * runtime/Identifier.cpp:
       
  6164         (JSC::Identifier::equal):
       
  6165         (JSC::Identifier::addSlowCase):
       
  6166         * runtime/JSString.cpp:
       
  6167         (JSC::JSString::resolveRope):
       
  6168         * runtime/UString.cpp:
       
  6169         (JSC::UString::toStrictUInt32):
       
  6170         (JSC::equal):
       
  6171         * runtime/UString.h:
       
  6172         (JSC::UString::data):
       
  6173         * runtime/UStringImpl.h:
       
  6174         (JSC::UStringImpl::characters):
       
  6175         (JSC::UStringImpl::hash):
       
  6176         (JSC::UStringImpl::setHash):
       
  6177 
       
  6178 2010-03-10  Gavin Barraclough  <barraclough@apple.com>
       
  6179 
       
  6180         Reviewed by Darin Adler, Geoffrey Garen, Maciej Stachowiak.
       
  6181 
       
  6182         https://bugs.webkit.org/show_bug.cgi?id=35991
       
  6183         Would be faster to not use a thread specific to implement StringImpl::empty()
       
  6184 
       
  6185         Change JSC::UStringImpl's implementation of empty() match to match StringImpl's new implementation
       
  6186         (use a static defined within the empty() method), and change the interface to match too (return
       
  6187         a pointer not a reference). 
       
  6188 
       
  6189         ~0% performance impact (possible minor progression from moving empty() from .h to .cpp).
       
  6190 
       
  6191         * JavaScriptCore.exp:
       
  6192         * runtime/Identifier.cpp:
       
  6193         (JSC::Identifier::add):
       
  6194         (JSC::Identifier::addSlowCase):
       
  6195         * runtime/PropertyNameArray.cpp:
       
  6196         (JSC::PropertyNameArray::add):
       
  6197         * runtime/UString.cpp:
       
  6198         (JSC::initializeUString):
       
  6199         (JSC::UString::UString):
       
  6200         * runtime/UStringImpl.cpp:
       
  6201         (JSC::UStringImpl::empty):
       
  6202         (JSC::UStringImpl::create):
       
  6203         * runtime/UStringImpl.h:
       
  6204         (JSC::UStringImpl::adopt):
       
  6205         (JSC::UStringImpl::createUninitialized):
       
  6206         (JSC::UStringImpl::tryCreateUninitialized):
       
  6207 
       
  6208 2010-03-10  Dmitry Titov  <dimich@chromium.org>
       
  6209 
       
  6210         Not reviewed, fixing Snow Leopard build.
       
  6211 
       
  6212         * wtf/mac/MainThreadMac.mm: Forgot 'static' for a new local function.
       
  6213         (WTF::postTimer):
       
  6214 
       
  6215 2010-03-10  Dmitry Titov  <dimich@chromium.org>
       
  6216 
       
  6217         Reviewed by Darin Adler.
       
  6218 
       
  6219         Make Document::postTask to use a single queue of tasks, to fire them in order
       
  6220         https://bugs.webkit.org/show_bug.cgi?id=35943
       
  6221 
       
  6222         The patch uses CFRunLoopTimer to schedule execution of tasks instead of performSelectorOnMainThread which apparently can starve other event sources.
       
  6223         The timer is used when the schedule request is coming on the main thread itself. This happens when the task is posted on the main thread or
       
  6224         when too many tasks are posted and the queue does 'stop and re-schedule' to make sure run loop has a chance to execute other events.
       
  6225 
       
  6226         * wtf/mac/MainThreadMac.mm:
       
  6227         (WTF::timerFired):
       
  6228         (WTF::postTimer):
       
  6229         (WTF::scheduleDispatchFunctionsOnMainThread): Use timer posted to the current RunLoop if scheduling the task execution while on the main thread.
       
  6230 
       
  6231 2010-03-10  Geoffrey Garen  <ggaren@apple.com>
       
  6232 
       
  6233         Windows build fix: added new symbol.
       
  6234 
       
  6235         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  6236 
       
  6237 2010-03-10  Geoffrey Garen  <ggaren@apple.com>
       
  6238 
       
  6239         Windows build fix: removed old symbol.
       
  6240 
       
  6241         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  6242 
       
  6243 2010-03-09  Geoffrey Garen  <ggaren@apple.com>
       
  6244 
       
  6245         Reviewed by Alexey Proskuryakov, Darin Adler, and Sam Weinig.
       
  6246 
       
  6247         Refactored fastCheckConsistency to match some review comments:
       
  6248             - renamed fastCheckConsistency to fastMallocSize, and changed ValueCheck
       
  6249               to ASSERT that a pointer's fastMallocSize is not 0.
       
  6250             - implemented a version of fastMallocSize for tcmalloc.
       
  6251             
       
  6252         Also moved some pre-existing code around to avoid a problem related to
       
  6253         mismatched #define/#undef of malloc/free in this source file.
       
  6254 
       
  6255         * JavaScriptCore.exp:
       
  6256         * wtf/FastMalloc.cpp:
       
  6257         (WTF::fastMallocSize): Renamed. Fixed indentation.
       
  6258 
       
  6259         (WTF::TCMalloc_PageHeap::scavenge): Removed an incorrect ASSERT that
       
  6260         got in the way of testing the tcmalloc implementation. (More information
       
  6261         on why this ASSERT is incorrect is in <rdar://problem/7165917>.)
       
  6262 
       
  6263         (WTF::TCMallocStats::fastMallocSize): Implemented for tcmalloc.
       
  6264 
       
  6265         * wtf/FastMalloc.h: Updated for rename.
       
  6266 
       
  6267         * wtf/ValueCheck.h:
       
  6268         (WTF::): Moved the ASSERT that used to be in fastCheckConsistency here.
       
  6269 
       
  6270 2010-03-10  Kevin Ollivier  <kevino@theolliviers.com>
       
  6271 
       
  6272         Reviewed by Eric Seidel.
       
  6273 
       
  6274         Make global new/delete operators configurable for all ports and disable it
       
  6275         for the wx port for now.
       
  6276 
       
  6277         * wtf/FastMalloc.h:
       
  6278         * wtf/Platform.h:
       
  6279 
       
  6280 2010-03-09  Gavin Barraclough  <barraclough@apple.com>
       
  6281 
       
  6282         Reviewed by NOBODY (reverting r54510).
       
  6283 
       
  6284         This caused a performance regression, by breaking the code
       
  6285         generator's logic to calculate the skip level for resolving
       
  6286         variables (traced by rdar:7683350)  Reverting for now.
       
  6287 
       
  6288         * parser/Grammar.y:
       
  6289         * parser/NodeConstructors.h:
       
  6290         (JSC::ContinueNode::ContinueNode):
       
  6291         (JSC::BreakNode::BreakNode):
       
  6292         (JSC::ForInNode::ForInNode):
       
  6293         * runtime/CommonIdentifiers.cpp:
       
  6294         (JSC::CommonIdentifiers::CommonIdentifiers):
       
  6295         * runtime/CommonIdentifiers.h:
       
  6296         * runtime/FunctionPrototype.cpp:
       
  6297         (JSC::FunctionPrototype::FunctionPrototype):
       
  6298         * runtime/Identifier.cpp:
       
  6299         (JSC::Identifier::add):
       
  6300         * runtime/PropertyNameArray.cpp:
       
  6301         (JSC::PropertyNameArray::add):
       
  6302 
       
  6303 2010-03-09  Geoffrey Garen  <ggaren@apple.com>
       
  6304 
       
  6305         Reviewed by Darin Adler.
       
  6306 
       
  6307         Changed FastMalloc statistics reporting to be a bit clearer. We now
       
  6308         report:
       
  6309             - Reserved VM Bytes: the VM that has been mapped into the process.
       
  6310             - Committed VM Bytes: the subset of Reserved VM Bytes actually in use.
       
  6311             - Free List Bytes: the subset of Committed VM Bytes in a free list.
       
  6312 
       
  6313         * wtf/FastMalloc.cpp:
       
  6314         (WTF::fastMallocStatistics):
       
  6315         (WTF::TCMallocStats::fastMallocStatistics): Updated to report the statistics
       
  6316         above. Standardized use of "ifdef WTF_CHANGES". Added a SpinLockHolder
       
  6317         around all statistics gathering, since it reads from the page heap.
       
  6318 
       
  6319         * wtf/FastMalloc.h: Updated to report the statistics above. 
       
  6320 
       
  6321 2010-03-09  Gabor Loki  <loki@webkit.org>
       
  6322 
       
  6323         Rubber-stamped by Maciej Stachowiak.
       
  6324 
       
  6325         Buildfix for ARM after r55684. Add branch8 and branchTest8 functions.
       
  6326         https://bugs.webkit.org/show_bug.cgi?id=35892
       
  6327 
       
  6328         * assembler/ARMAssembler.cpp:
       
  6329         (JSC::ARMAssembler::dataTransfer32):
       
  6330         * assembler/ARMAssembler.h:
       
  6331         (JSC::ARMAssembler::):
       
  6332         * assembler/MacroAssemblerARM.h:
       
  6333         (JSC::MacroAssemblerARM::load8):
       
  6334         (JSC::MacroAssemblerARM::branch8):
       
  6335         (JSC::MacroAssemblerARM::branchTest8):
       
  6336 
       
  6337 2010-03-08  Geoffrey Garen  <ggaren@apple.com>
       
  6338 
       
  6339         Windows build fix: 'P' is not a type. Luckily, 'void' is.
       
  6340 
       
  6341         * wtf/FastMalloc.cpp:
       
  6342         (WTF::fastCheckConsistency):
       
  6343 
       
  6344 2010-03-08  Geoffrey Garen  <ggaren@apple.com>
       
  6345 
       
  6346         Windows build fix: export a new symbol.
       
  6347 
       
  6348         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  6349 
       
  6350 2010-03-08  Geoffrey Garen  <ggaren@apple.com>
       
  6351 
       
  6352         Reviewed by Maciej Stachowiak.
       
  6353 
       
  6354         Switching malloc implementations requires a world rebuild
       
  6355         https://bugs.webkit.org/show_bug.cgi?id=35899
       
  6356 
       
  6357         * wtf/FastMalloc.cpp:
       
  6358         (WTF::fastCheckConsistency):
       
  6359         (WTF::TCMallocStats::fastCheckConsistency):
       
  6360         * wtf/FastMalloc.h:
       
  6361         * wtf/ValueCheck.h:
       
  6362         (WTF::): Moved pointer checking into a helper function in FastMalloc.cpp,
       
  6363         so you can switch malloc implementations without rebuilding the world.
       
  6364 
       
  6365 2010-03-07  Oliver Hunt  <oliver@apple.com>
       
  6366 
       
  6367         Reviewed by Darin Adler.
       
  6368 
       
  6369         TypeInfo is unnecessarily large
       
  6370         https://bugs.webkit.org/show_bug.cgi?id=35850
       
  6371 
       
  6372         Reduce the size of the type and flags members to a single
       
  6373         byte each, reducing the size of Structure by 8 bytes.
       
  6374 
       
  6375         * assembler/MacroAssemblerX86Common.h:
       
  6376         (JSC::MacroAssemblerX86Common::branch8):
       
  6377         (JSC::MacroAssemblerX86Common::branchTest8):
       
  6378         (JSC::MacroAssemblerX86Common::setTest8):
       
  6379           Add single byte branches, and correct setTest8 to do a
       
  6380           single byte read from memory, and actually store the result
       
  6381         * assembler/X86Assembler.h:
       
  6382         (JSC::X86Assembler::):
       
  6383         (JSC::X86Assembler::cmpb_im):
       
  6384         (JSC::X86Assembler::testb_im):
       
  6385         * jit/JITCall.cpp:
       
  6386         (JSC::JIT::emit_op_construct_verify):
       
  6387         * jit/JITOpcodes.cpp:
       
  6388         (JSC::JIT::emit_op_instanceof):
       
  6389         (JSC::JIT::emit_op_jeq_null):
       
  6390         (JSC::JIT::emit_op_jneq_null):
       
  6391         (JSC::JIT::emit_op_get_pnames):
       
  6392         (JSC::JIT::emit_op_convert_this):
       
  6393         (JSC::JIT::emit_op_construct_verify):
       
  6394         (JSC::JIT::emit_op_to_jsnumber):
       
  6395         (JSC::JIT::emit_op_eq_null):
       
  6396         (JSC::JIT::emit_op_neq_null):
       
  6397         * runtime/JSTypeInfo.h:
       
  6398         (JSC::TypeInfo::TypeInfo):
       
  6399         (JSC::TypeInfo::type):
       
  6400 
       
  6401 2010-03-08  Gavin Barraclough  <barraclough@apple.com>
       
  6402 
       
  6403         Reviewed by NOBODY (reverting regression).
       
  6404 
       
  6405         Reverting 55035, this caused a regression.
       
  6406         (https://bugs.webkit.org/show_bug.cgi?id=35843)
       
  6407 
       
  6408         * runtime/JSString.cpp:
       
  6409         (JSC::JSString::resolveRope):
       
  6410         (JSC::JSString::getStringPropertyDescriptor):
       
  6411         * runtime/JSString.h:
       
  6412         (JSC::jsSingleCharacterSubstring):
       
  6413         (JSC::JSString::getIndex):
       
  6414         (JSC::JSString::getStringPropertySlot):
       
  6415         * runtime/UStringImpl.cpp:
       
  6416         * runtime/UStringImpl.h:
       
  6417 
       
  6418 2010-03-08  Stuart Morgan  <stuartmorgan@chromium.org>
       
  6419 
       
  6420         Reviewed by Darin Adler.
       
  6421 
       
  6422         Added a new USE definition for secure text mode on the Mac.
       
  6423         https://bugs.webkit.org/show_bug.cgi?id=31265
       
  6424 
       
  6425         * wtf/Platform.h:
       
  6426 
       
  6427 2010-03-08  Jian Li  <jianli@chromium.org>
       
  6428 
       
  6429         Reviewed by Dmitry Titov.
       
  6430 
       
  6431         Blob.slice support.
       
  6432         https://bugs.webkit.org/show_bug.cgi?id=32993
       
  6433 
       
  6434         Add ENABLE_BLOB_SLICE feature define.
       
  6435         Also fix a problem that JSValue.toInteger is not exposed on Windows.
       
  6436 
       
  6437         * Configurations/FeatureDefines.xcconfig:
       
  6438         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  6439 
       
  6440 2010-03-07  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  6441 
       
  6442         Reviewed by Simon Hausmann.
       
  6443 
       
  6444         Small performance fix in the QScriptConverter::toString().
       
  6445 
       
  6446         The QByteArray was replaced by the QVarLengthArray which doesn't
       
  6447         have to allocate any memory on heap.
       
  6448 
       
  6449         [Qt] QScriptConverter::toString() should use QVarLengthArray instead of QByteArray
       
  6450         https://bugs.webkit.org/show_bug.cgi?id=35577
       
  6451 
       
  6452         * qt/api/qscriptconverter_p.h:
       
  6453         (QScriptConverter::toString):
       
  6454 
       
  6455 2010-03-06  Mark Rowe  <mrowe@apple.com>
       
  6456 
       
  6457         Rubber-stamped by Sam Weinig.
       
  6458 
       
  6459         Remove unnecessary includes of wtf/Platform.h.  This is already pulled in by config.h.
       
  6460 
       
  6461         * API/APICast.h:
       
  6462         * API/JSCallbackFunction.cpp:
       
  6463         * API/JSContextRef.cpp:
       
  6464         * API/JSObjectRef.cpp:
       
  6465         * API/JSValueRef.cpp:
       
  6466         * assembler/ARMAssembler.h:
       
  6467         * assembler/ARMv7Assembler.h:
       
  6468         * assembler/AbstractMacroAssembler.h:
       
  6469         * assembler/AssemblerBuffer.h:
       
  6470         * assembler/AssemblerBufferWithConstantPool.h:
       
  6471         * assembler/CodeLocation.h:
       
  6472         * assembler/LinkBuffer.h:
       
  6473         * assembler/MIPSAssembler.h:
       
  6474         * assembler/MacroAssembler.h:
       
  6475         * assembler/MacroAssemblerARM.h:
       
  6476         * assembler/MacroAssemblerARMv7.h:
       
  6477         * assembler/MacroAssemblerCodeRef.h:
       
  6478         * assembler/MacroAssemblerMIPS.h:
       
  6479         * assembler/MacroAssemblerX86.h:
       
  6480         * assembler/MacroAssemblerX86Common.h:
       
  6481         * assembler/MacroAssemblerX86_64.h:
       
  6482         * assembler/RepatchBuffer.h:
       
  6483         * assembler/X86Assembler.h:
       
  6484         * jit/JIT.h:
       
  6485         * jit/JITCode.h:
       
  6486         * jit/JITInlineMethods.h:
       
  6487         * jit/JITStubs.h:
       
  6488         * os-win32/stdint.h:
       
  6489         * runtime/JSAPIValueWrapper.h:
       
  6490         * runtime/JSImmediate.h:
       
  6491         * wtf/ASCIICType.h:
       
  6492         * wtf/StdLibExtras.h:
       
  6493         * wtf/VMTags.h:
       
  6494         * yarr/RegexCompiler.h:
       
  6495         * yarr/RegexInterpreter.h:
       
  6496         * yarr/RegexJIT.h:
       
  6497         * yarr/RegexParser.h:
       
  6498         * yarr/RegexPattern.h:
       
  6499 
       
  6500 2010-03-06  Kwang Yul Seo  <skyul@company100.net>
       
  6501 
       
  6502         Reviewed by Eric Seidel.
       
  6503 
       
  6504         [BREWMP] Share OwnPtr.
       
  6505         https://bugs.webkit.org/show_bug.cgi?id=35776
       
  6506 
       
  6507         Share OwnPtr implementation with BREW MP and remove OwnPtrBrew.
       
  6508 
       
  6509         * wtf/OwnPtrBrew.cpp: Added.
       
  6510         (WTF::deleteOwnedPtr):
       
  6511         * wtf/OwnPtrCommon.h:
       
  6512         * wtf/brew/OwnPtrBrew.cpp: Removed.
       
  6513         * wtf/brew/OwnPtrBrew.h: Removed.
       
  6514 
       
  6515 2010-03-06  Patrick Gansterer  <paroga@paroga.com>
       
  6516 
       
  6517         Reviewed by Eric Seidel.
       
  6518 
       
  6519         Implemented JIT_OPTIMIZE_NATIVE_CALL for WinCE
       
  6520         https://bugs.webkit.org/show_bug.cgi?id=33426
       
  6521 
       
  6522         * jit/JITOpcodes.cpp:
       
  6523         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
  6524 
       
  6525 2010-03-05  Oliver Hunt  <oliver@apple.com>
       
  6526 
       
  6527         Reviewed by NOBODY (build fix).
       
  6528 
       
  6529         Add enw exports to windows
       
  6530 
       
  6531         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  6532 
       
  6533 2010-03-05  Oliver Hunt  <oliver@apple.com>
       
  6534 
       
  6535         Reviewed by Gavin Barraclough.
       
  6536 
       
  6537         JSC should cache int to Identifier conversion as it does for ordinary strings
       
  6538         https://bugs.webkit.org/show_bug.cgi?id=35814
       
  6539 
       
  6540         Make the NumericStrings cache cache unsigned ints in addition to signed.
       
  6541         We keep them separate from the int cache as it both simplifies code, and
       
  6542         also because the unsigned path is exclusive to property access and therefore
       
  6543         seems to have different usage patterns.
       
  6544 
       
  6545         The primary trigger for the unsigned to Identifier propertyName conversion
       
  6546         is the construction of array-like objects out of normal objects.  Given these
       
  6547         tend to be relative small numbers, and the array-like behaviour lends itself
       
  6548         to sequential values this patch also adds a non-colliding cache for all small
       
  6549         numbers.
       
  6550 
       
  6551         * JavaScriptCore.exp:
       
  6552         * runtime/Identifier.cpp:
       
  6553         (JSC::Identifier::from):
       
  6554         * runtime/Identifier.h:
       
  6555         * runtime/NumericStrings.h:
       
  6556         (JSC::NumericStrings::add):
       
  6557         (JSC::NumericStrings::lookup):
       
  6558         (JSC::NumericStrings::lookupSmallString):
       
  6559 
       
  6560 2010-03-03  Oliver Hunt  <oliver@apple.com>
       
  6561 
       
  6562         Reviewed by Gavin Barraclough.
       
  6563 
       
  6564         Allow static property getters to interact with JSCs caching
       
  6565         https://bugs.webkit.org/show_bug.cgi?id=35716
       
  6566 
       
  6567         Add new opcodes for handling cached lookup of static value getters.
       
  6568         More or less the same as with JS getters, all that changes is that
       
  6569         instead of calling through a JSFunction we always know that we have
       
  6570         a C function to call.
       
  6571 
       
  6572         For the patching routines in the JIT we now need to pass a few
       
  6573         new parameters to allow us to pass enough information to the stub
       
  6574         function to allow us to call the C function correctly.  Logically
       
  6575         this shouldn't actually be necessary as all of these functions ignore
       
  6576         the identifier, but removing the ident parameter would require
       
  6577         somewhat involved changes to the way we implement getOwnPropertySlot,
       
  6578         etc.
       
  6579 
       
  6580         * bytecode/CodeBlock.cpp:
       
  6581         (JSC::CodeBlock::dump):
       
  6582         (JSC::CodeBlock::derefStructures):
       
  6583         (JSC::CodeBlock::refStructures):
       
  6584         * bytecode/Instruction.h:
       
  6585         (JSC::Instruction::Instruction):
       
  6586         (JSC::Instruction::):
       
  6587         * bytecode/Opcode.h:
       
  6588         * interpreter/Interpreter.cpp:
       
  6589         (JSC::Interpreter::tryCacheGetByID):
       
  6590         (JSC::Interpreter::privateExecute):
       
  6591         * jit/JIT.cpp:
       
  6592         (JSC::JIT::privateCompileMainPass):
       
  6593         * jit/JIT.h:
       
  6594         (JSC::JIT::compileGetByIdProto):
       
  6595         (JSC::JIT::compileGetByIdSelfList):
       
  6596         (JSC::JIT::compileGetByIdProtoList):
       
  6597         (JSC::JIT::compileGetByIdChainList):
       
  6598         (JSC::JIT::compileGetByIdChain):
       
  6599         * jit/JITPropertyAccess.cpp:
       
  6600         (JSC::JIT::privateCompileGetByIdProto):
       
  6601         (JSC::JIT::privateCompileGetByIdSelfList):
       
  6602         (JSC::JIT::privateCompileGetByIdProtoList):
       
  6603         (JSC::JIT::privateCompileGetByIdChainList):
       
  6604         (JSC::JIT::privateCompileGetByIdChain):
       
  6605         * jit/JITPropertyAccess32_64.cpp:
       
  6606         (JSC::JIT::privateCompileGetByIdProto):
       
  6607         (JSC::JIT::privateCompileGetByIdSelfList):
       
  6608         (JSC::JIT::privateCompileGetByIdProtoList):
       
  6609         (JSC::JIT::privateCompileGetByIdChainList):
       
  6610         (JSC::JIT::privateCompileGetByIdChain):
       
  6611         * jit/JITStubs.cpp:
       
  6612         (JSC::JITThunks::tryCacheGetByID):
       
  6613         (JSC::DEFINE_STUB_FUNCTION):
       
  6614         * jit/JITStubs.h:
       
  6615         (JSC::):
       
  6616         * runtime/JSFunction.cpp:
       
  6617         (JSC::JSFunction::getOwnPropertySlot):
       
  6618         * runtime/Lookup.h:
       
  6619         (JSC::getStaticPropertySlot):
       
  6620         (JSC::getStaticValueSlot):
       
  6621         * runtime/PropertySlot.h:
       
  6622         (JSC::PropertySlot::):
       
  6623         (JSC::PropertySlot::PropertySlot):
       
  6624         (JSC::PropertySlot::cachedPropertyType):
       
  6625         (JSC::PropertySlot::isCacheable):
       
  6626         (JSC::PropertySlot::isCacheableValue):
       
  6627         (JSC::PropertySlot::setValueSlot):
       
  6628         (JSC::PropertySlot::setCacheableCustom):
       
  6629         (JSC::PropertySlot::setGetterSlot):
       
  6630         (JSC::PropertySlot::setCacheableGetterSlot):
       
  6631         (JSC::PropertySlot::clearOffset):
       
  6632         (JSC::PropertySlot::customGetter):
       
  6633 
       
  6634 2010-03-04  Shinichiro Hamaji  <hamaji@chromium.org>
       
  6635 
       
  6636         Unreviewed. Remove a non-ASCII character introduced in the following bug.
       
  6637 
       
  6638         put_by_id does will incorrectly cache writes where a specific value exists, where at the point of caching the same value is being written.
       
  6639         https://bugs.webkit.org/show_bug.cgi?id=35537
       
  6640 
       
  6641         * runtime/JSObject.h:
       
  6642         (JSC::JSObject::putDirectInternal):
       
  6643 
       
  6644 2010-03-04  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
  6645 
       
  6646         Reviewed by Tor Arne Vestbø.
       
  6647 
       
  6648         [Qt] Make the OUTPUT_DIR variable in qmake projects independent of build-webkit's logic.
       
  6649 
       
  6650         This also allows shadow builds relying only on qmake to work properly.
       
  6651         * jsc.pro:
       
  6652         * qt/api/QtScript.pro:
       
  6653         * qt/tests/qscriptengine/qscriptengine.pro:
       
  6654         * qt/tests/qscriptvalue/qscriptvalue.pro:
       
  6655         * qt/tests/tests.pri:
       
  6656 
       
  6657 2010-03-03  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  6658 
       
  6659         Reviewed by Simon Hausmann.
       
  6660 
       
  6661         QScriptValue::isObject fix.
       
  6662 
       
  6663         Fix broken internal state evaluation from JSValue to JSNative / JSObject.
       
  6664         New function was introduced which should take care about promoting
       
  6665         JSValue state inside QScriptValuePrivate. It should be used instead of a
       
  6666         direct JSC C API call.
       
  6667 
       
  6668         The bug exposed a weakness in autotest suite, as the QScriptValuePrivate
       
  6669         is based on state machine with lazy state evaluation, there is a possibility
       
  6670         that serial sequencial calls to the same public const function could return
       
  6671         different results. The patch fix the issue.
       
  6672 
       
  6673         [Qt] Sometimes QScriptValue::isObject returns an incorrect value
       
  6674         https://bugs.webkit.org/show_bug.cgi?id=35387
       
  6675 
       
  6676         * qt/api/qscriptvalue_p.h:
       
  6677         (QScriptValuePrivate::isBool):
       
  6678         (QScriptValuePrivate::isNumber):
       
  6679         (QScriptValuePrivate::isNull):
       
  6680         (QScriptValuePrivate::isString):
       
  6681         (QScriptValuePrivate::isUndefined):
       
  6682         (QScriptValuePrivate::isError):
       
  6683         (QScriptValuePrivate::isObject):
       
  6684         (QScriptValuePrivate::isFunction):
       
  6685         (QScriptValuePrivate::call):
       
  6686         (QScriptValuePrivate::refineJSValue):
       
  6687         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
       
  6688         (tst_QScriptValue::initScriptValues):
       
  6689         (tst_QScriptValue::isValid_makeData):
       
  6690         (tst_QScriptValue::isValid_test):
       
  6691         (tst_QScriptValue::isBool_makeData):
       
  6692         (tst_QScriptValue::isBool_test):
       
  6693         (tst_QScriptValue::isBoolean_makeData):
       
  6694         (tst_QScriptValue::isBoolean_test):
       
  6695         (tst_QScriptValue::isNumber_makeData):
       
  6696         (tst_QScriptValue::isNumber_test):
       
  6697         (tst_QScriptValue::isFunction_test):
       
  6698         (tst_QScriptValue::isNull_makeData):
       
  6699         (tst_QScriptValue::isNull_test):
       
  6700         (tst_QScriptValue::isString_makeData):
       
  6701         (tst_QScriptValue::isString_test):
       
  6702         (tst_QScriptValue::isUndefined_makeData):
       
  6703         (tst_QScriptValue::isUndefined_test):
       
  6704         (tst_QScriptValue::isObject_makeData):
       
  6705         (tst_QScriptValue::isObject_test):
       
  6706         (tst_QScriptValue::toString_makeData):
       
  6707         (tst_QScriptValue::toString_test):
       
  6708         (tst_QScriptValue::toNumber_makeData):
       
  6709         (tst_QScriptValue::toNumber_test):
       
  6710         (tst_QScriptValue::toBool_makeData):
       
  6711         (tst_QScriptValue::toBool_test):
       
  6712         (tst_QScriptValue::toBoolean_makeData):
       
  6713         (tst_QScriptValue::toBoolean_test):
       
  6714         (tst_QScriptValue::toInteger_makeData):
       
  6715         (tst_QScriptValue::toInteger_test):
       
  6716         (tst_QScriptValue::toInt32_makeData):
       
  6717         (tst_QScriptValue::toInt32_test):
       
  6718         (tst_QScriptValue::toUInt32_makeData):
       
  6719         (tst_QScriptValue::toUInt32_test):
       
  6720         (tst_QScriptValue::toUInt16_makeData):
       
  6721         (tst_QScriptValue::toUInt16_test):
       
  6722 
       
  6723 2010-03-03  Chao-ying Fu  <fu@mips.com>
       
  6724 
       
  6725         Reviewed by Gavin Barraclough.
       
  6726 
       
  6727         MIPS JIT Supports
       
  6728         https://bugs.webkit.org/show_bug.cgi?id=30144
       
  6729 
       
  6730         The following changes enable MIPS YARR and YARR_JIT.
       
  6731 
       
  6732         * assembler/AbstractMacroAssembler.h:
       
  6733         (JSC::AbstractMacroAssembler::Imm32::Imm32):
       
  6734         * assembler/MIPSAssembler.h: Added.
       
  6735         (JSC::MIPSRegisters::):
       
  6736         (JSC::MIPSAssembler::MIPSAssembler):
       
  6737         (JSC::MIPSAssembler::):
       
  6738         (JSC::MIPSAssembler::JmpSrc::JmpSrc):
       
  6739         (JSC::MIPSAssembler::JmpDst::JmpDst):
       
  6740         (JSC::MIPSAssembler::JmpDst::isUsed):
       
  6741         (JSC::MIPSAssembler::JmpDst::used):
       
  6742         (JSC::MIPSAssembler::emitInst):
       
  6743         (JSC::MIPSAssembler::nop):
       
  6744         (JSC::MIPSAssembler::loadDelayNop):
       
  6745         (JSC::MIPSAssembler::copDelayNop):
       
  6746         (JSC::MIPSAssembler::move):
       
  6747         (JSC::MIPSAssembler::li):
       
  6748         (JSC::MIPSAssembler::lui):
       
  6749         (JSC::MIPSAssembler::addiu):
       
  6750         (JSC::MIPSAssembler::addu):
       
  6751         (JSC::MIPSAssembler::subu):
       
  6752         (JSC::MIPSAssembler::mult):
       
  6753         (JSC::MIPSAssembler::mfhi):
       
  6754         (JSC::MIPSAssembler::mflo):
       
  6755         (JSC::MIPSAssembler::mul):
       
  6756         (JSC::MIPSAssembler::andInsn):
       
  6757         (JSC::MIPSAssembler::andi):
       
  6758         (JSC::MIPSAssembler::nor):
       
  6759         (JSC::MIPSAssembler::orInsn):
       
  6760         (JSC::MIPSAssembler::ori):
       
  6761         (JSC::MIPSAssembler::xorInsn):
       
  6762         (JSC::MIPSAssembler::xori):
       
  6763         (JSC::MIPSAssembler::slt):
       
  6764         (JSC::MIPSAssembler::sltu):
       
  6765         (JSC::MIPSAssembler::sltiu):
       
  6766         (JSC::MIPSAssembler::sll):
       
  6767         (JSC::MIPSAssembler::sllv):
       
  6768         (JSC::MIPSAssembler::sra):
       
  6769         (JSC::MIPSAssembler::srav):
       
  6770         (JSC::MIPSAssembler::lw):
       
  6771         (JSC::MIPSAssembler::lwl):
       
  6772         (JSC::MIPSAssembler::lwr):
       
  6773         (JSC::MIPSAssembler::lhu):
       
  6774         (JSC::MIPSAssembler::sw):
       
  6775         (JSC::MIPSAssembler::jr):
       
  6776         (JSC::MIPSAssembler::jalr):
       
  6777         (JSC::MIPSAssembler::jal):
       
  6778         (JSC::MIPSAssembler::bkpt):
       
  6779         (JSC::MIPSAssembler::bgez):
       
  6780         (JSC::MIPSAssembler::bltz):
       
  6781         (JSC::MIPSAssembler::beq):
       
  6782         (JSC::MIPSAssembler::bne):
       
  6783         (JSC::MIPSAssembler::bc1t):
       
  6784         (JSC::MIPSAssembler::bc1f):
       
  6785         (JSC::MIPSAssembler::newJmpSrc):
       
  6786         (JSC::MIPSAssembler::appendJump):
       
  6787         (JSC::MIPSAssembler::addd):
       
  6788         (JSC::MIPSAssembler::subd):
       
  6789         (JSC::MIPSAssembler::muld):
       
  6790         (JSC::MIPSAssembler::lwc1):
       
  6791         (JSC::MIPSAssembler::ldc1):
       
  6792         (JSC::MIPSAssembler::swc1):
       
  6793         (JSC::MIPSAssembler::sdc1):
       
  6794         (JSC::MIPSAssembler::mtc1):
       
  6795         (JSC::MIPSAssembler::mfc1):
       
  6796         (JSC::MIPSAssembler::truncwd):
       
  6797         (JSC::MIPSAssembler::cvtdw):
       
  6798         (JSC::MIPSAssembler::ceqd):
       
  6799         (JSC::MIPSAssembler::cngtd):
       
  6800         (JSC::MIPSAssembler::cnged):
       
  6801         (JSC::MIPSAssembler::cltd):
       
  6802         (JSC::MIPSAssembler::cled):
       
  6803         (JSC::MIPSAssembler::cueqd):
       
  6804         (JSC::MIPSAssembler::coled):
       
  6805         (JSC::MIPSAssembler::coltd):
       
  6806         (JSC::MIPSAssembler::culed):
       
  6807         (JSC::MIPSAssembler::cultd):
       
  6808         (JSC::MIPSAssembler::label):
       
  6809         (JSC::MIPSAssembler::align):
       
  6810         (JSC::MIPSAssembler::getRelocatedAddress):
       
  6811         (JSC::MIPSAssembler::getDifferenceBetweenLabels):
       
  6812         (JSC::MIPSAssembler::size):
       
  6813         (JSC::MIPSAssembler::executableCopy):
       
  6814         (JSC::MIPSAssembler::getCallReturnOffset):
       
  6815         (JSC::MIPSAssembler::linkJump):
       
  6816         (JSC::MIPSAssembler::linkCall):
       
  6817         (JSC::MIPSAssembler::linkPointer):
       
  6818         (JSC::MIPSAssembler::relinkJump):
       
  6819         (JSC::MIPSAssembler::relinkCall):
       
  6820         (JSC::MIPSAssembler::repatchInt32):
       
  6821         (JSC::MIPSAssembler::repatchPointer):
       
  6822         (JSC::MIPSAssembler::repatchLoadPtrToLEA):
       
  6823         (JSC::MIPSAssembler::relocateJumps):
       
  6824         (JSC::MIPSAssembler::linkWithOffset):
       
  6825         (JSC::MIPSAssembler::linkCallInternal):
       
  6826         * assembler/MacroAssembler.h:
       
  6827         * assembler/MacroAssemblerMIPS.h: Added.
       
  6828         (JSC::MacroAssemblerMIPS::MacroAssemblerMIPS):
       
  6829         (JSC::MacroAssemblerMIPS::):
       
  6830         (JSC::MacroAssemblerMIPS::add32):
       
  6831         (JSC::MacroAssemblerMIPS::and32):
       
  6832         (JSC::MacroAssemblerMIPS::lshift32):
       
  6833         (JSC::MacroAssemblerMIPS::mul32):
       
  6834         (JSC::MacroAssemblerMIPS::not32):
       
  6835         (JSC::MacroAssemblerMIPS::or32):
       
  6836         (JSC::MacroAssemblerMIPS::rshift32):
       
  6837         (JSC::MacroAssemblerMIPS::sub32):
       
  6838         (JSC::MacroAssemblerMIPS::xor32):
       
  6839         (JSC::MacroAssemblerMIPS::load32):
       
  6840         (JSC::MacroAssemblerMIPS::load32WithUnalignedHalfWords):
       
  6841         (JSC::MacroAssemblerMIPS::load32WithAddressOffsetPatch):
       
  6842         (JSC::MacroAssemblerMIPS::loadPtrWithPatchToLEA):
       
  6843         (JSC::MacroAssemblerMIPS::loadPtrWithAddressOffsetPatch):
       
  6844         (JSC::MacroAssemblerMIPS::load16):
       
  6845         (JSC::MacroAssemblerMIPS::store32WithAddressOffsetPatch):
       
  6846         (JSC::MacroAssemblerMIPS::store32):
       
  6847         (JSC::MacroAssemblerMIPS::supportsFloatingPoint):
       
  6848         (JSC::MacroAssemblerMIPS::supportsFloatingPointTruncate):
       
  6849         (JSC::MacroAssemblerMIPS::pop):
       
  6850         (JSC::MacroAssemblerMIPS::push):
       
  6851         (JSC::MacroAssemblerMIPS::move):
       
  6852         (JSC::MacroAssemblerMIPS::swap):
       
  6853         (JSC::MacroAssemblerMIPS::signExtend32ToPtr):
       
  6854         (JSC::MacroAssemblerMIPS::zeroExtend32ToPtr):
       
  6855         (JSC::MacroAssemblerMIPS::branch32):
       
  6856         (JSC::MacroAssemblerMIPS::branch32WithUnalignedHalfWords):
       
  6857         (JSC::MacroAssemblerMIPS::branch16):
       
  6858         (JSC::MacroAssemblerMIPS::branchTest32):
       
  6859         (JSC::MacroAssemblerMIPS::jump):
       
  6860         (JSC::MacroAssemblerMIPS::branchAdd32):
       
  6861         (JSC::MacroAssemblerMIPS::branchMul32):
       
  6862         (JSC::MacroAssemblerMIPS::branchSub32):
       
  6863         (JSC::MacroAssemblerMIPS::breakpoint):
       
  6864         (JSC::MacroAssemblerMIPS::nearCall):
       
  6865         (JSC::MacroAssemblerMIPS::call):
       
  6866         (JSC::MacroAssemblerMIPS::ret):
       
  6867         (JSC::MacroAssemblerMIPS::set32):
       
  6868         (JSC::MacroAssemblerMIPS::setTest32):
       
  6869         (JSC::MacroAssemblerMIPS::moveWithPatch):
       
  6870         (JSC::MacroAssemblerMIPS::branchPtrWithPatch):
       
  6871         (JSC::MacroAssemblerMIPS::storePtrWithPatch):
       
  6872         (JSC::MacroAssemblerMIPS::tailRecursiveCall):
       
  6873         (JSC::MacroAssemblerMIPS::makeTailRecursiveCall):
       
  6874         (JSC::MacroAssemblerMIPS::loadDouble):
       
  6875         (JSC::MacroAssemblerMIPS::storeDouble):
       
  6876         (JSC::MacroAssemblerMIPS::addDouble):
       
  6877         (JSC::MacroAssemblerMIPS::subDouble):
       
  6878         (JSC::MacroAssemblerMIPS::mulDouble):
       
  6879         (JSC::MacroAssemblerMIPS::convertInt32ToDouble):
       
  6880         (JSC::MacroAssemblerMIPS::insertRelaxationWords):
       
  6881         (JSC::MacroAssemblerMIPS::branchTrue):
       
  6882         (JSC::MacroAssemblerMIPS::branchFalse):
       
  6883         (JSC::MacroAssemblerMIPS::branchEqual):
       
  6884         (JSC::MacroAssemblerMIPS::branchNotEqual):
       
  6885         (JSC::MacroAssemblerMIPS::branchDouble):
       
  6886         (JSC::MacroAssemblerMIPS::branchTruncateDoubleToInt32):
       
  6887         (JSC::MacroAssemblerMIPS::linkCall):
       
  6888         (JSC::MacroAssemblerMIPS::repatchCall):
       
  6889         * jit/ExecutableAllocator.h:
       
  6890         (JSC::ExecutableAllocator::cacheFlush):
       
  6891         * wtf/Platform.h:
       
  6892         * yarr/RegexJIT.cpp:
       
  6893         (JSC::Yarr::RegexGenerator::generateEnter):
       
  6894         (JSC::Yarr::RegexGenerator::generateReturn):
       
  6895 
       
  6896 2010-03-03  Steve Falkenburg  <sfalken@apple.com>
       
  6897 
       
  6898         Windows build fix.
       
  6899 
       
  6900         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
       
  6901         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
       
  6902 
       
  6903 2010-03-03  Steve Falkenburg  <sfalken@apple.com>
       
  6904 
       
  6905         Windows build fix.
       
  6906 
       
  6907         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
       
  6908 
       
  6909 2010-03-03  Mark Rowe  <mrowe@apple.com>
       
  6910 
       
  6911         Reviewed by Geoff Garen.
       
  6912 
       
  6913         Add virtual memory tags for TCMalloc and WebCore's purgeable buffers.
       
  6914 
       
  6915         * wtf/TCSystemAlloc.cpp:
       
  6916         (TryMmap): Use the VM tag.
       
  6917         * wtf/VMTags.h: Make use of VM_MEMORY_TCMALLOC and VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS.
       
  6918 
       
  6919 2010-03-03  Steve Falkenburg  <sfalken@apple.com>
       
  6920 
       
  6921         Rubber stamped by Adam Roben.
       
  6922 
       
  6923         Fix bogus xcopy that was polluting source tree at build time.
       
  6924 
       
  6925         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
       
  6926 
       
  6927 2010-03-02  Fridrich Strba  <fridrich.strba@bluewin.ch>
       
  6928 
       
  6929         Reviewed by Oliver Hunt.
       
  6930 
       
  6931         Allow building smoothly on win32 and win64 using GCC
       
  6932         https://bugs.webkit.org/show_bug.cgi?id=35607
       
  6933 
       
  6934         * jit/JITStubs.h:
       
  6935         * runtime/Collector.cpp:
       
  6936         (JSC::Heap::allocateBlock):
       
  6937         (JSC::Heap::freeBlockPtr):
       
  6938         (JSC::currentThreadStackBase):
       
  6939 
       
  6940 2010-03-02  Jeremy Orlow  <jorlow@chromium.org>
       
  6941 
       
  6942         Reviewed by David Levin.
       
  6943 
       
  6944         Revert database thread changes that are no longer required
       
  6945         https://bugs.webkit.org/show_bug.cgi?id=35519
       
  6946 
       
  6947         Jochen Eisinger created 55214 and 55247 to track which database
       
  6948         owns which thread.  Dmitry suggested that this could also
       
  6949         be done via TLS, though.  After exploring the options, Jochen
       
  6950         chose to go the TLS route, so these patches are no longer needed.
       
  6951 
       
  6952         * wtf/Threading.h:
       
  6953         * wtf/ThreadingNone.cpp:
       
  6954         (WTF::isMainThread):
       
  6955         * wtf/ThreadingPthreads.cpp:
       
  6956         (WTF::identifierByPthreadHandle):
       
  6957         (WTF::establishIdentifierForPthreadHandle):
       
  6958         (WTF::pthreadHandleForIdentifier):
       
  6959         (WTF::createThreadInternal):
       
  6960         (WTF::currentThread):
       
  6961         * wtf/ThreadingWin.cpp:
       
  6962         (WTF::threadMap):
       
  6963         (WTF::storeThreadHandleByIdentifier):
       
  6964         (WTF::threadHandleForIdentifier):
       
  6965         (WTF::createThreadInternal):
       
  6966 
       
  6967 2010-03-02  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  6968 
       
  6969         Reviewed by Simon Hausmann.
       
  6970 
       
  6971         Fix QScriptValue::toString().
       
  6972 
       
  6973         More ECMA Script compliance, especially for values as NaN, Inifinite
       
  6974         and really big/small numbers.
       
  6975 
       
  6976         [Qt] QScriptValue::toString() returns incorrect values
       
  6977         https://bugs.webkit.org/show_bug.cgi?id=34850
       
  6978 
       
  6979         * qt/api/qscriptconverter_p.h:
       
  6980         (QScriptConverter::toString):
       
  6981         * qt/api/qscriptvalue_p.h:
       
  6982         (QScriptValuePrivate::toString):
       
  6983         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
       
  6984         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
       
  6985         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
       
  6986         (tst_QScriptValue::toString_initData):
       
  6987         (tst_QScriptValue::toString_makeData):
       
  6988         (tst_QScriptValue::toString_test):
       
  6989 
       
  6990 2010-03-02  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  6991 
       
  6992         Reviewed by Simon Hausmann.
       
  6993 
       
  6994         Introduce a new class; QScriptString.
       
  6995 
       
  6996         The QScriptString class should act as a handle to "interned"
       
  6997         strings in a QScriptEngine.
       
  6998 
       
  6999         [Qt] QtScript should provide QScriptString
       
  7000         https://bugs.webkit.org/show_bug.cgi?id=34843
       
  7001 
       
  7002         * qt/api/QtScript.pro:
       
  7003         * qt/api/qscriptengine.cpp:
       
  7004         (QScriptEngine::toStringHandle):
       
  7005         * qt/api/qscriptengine.h:
       
  7006         * qt/api/qscriptengine_p.h:
       
  7007         (QScriptEnginePrivate::toStringHandle):
       
  7008         * qt/api/qscriptstring.cpp: Added.
       
  7009         (QScriptString::QScriptString):
       
  7010         (QScriptString::~QScriptString):
       
  7011         (QScriptString::operator=):
       
  7012         (QScriptString::isValid):
       
  7013         (QScriptString::operator==):
       
  7014         (QScriptString::operator!=):
       
  7015         (QScriptString::toArrayIndex):
       
  7016         (QScriptString::toString):
       
  7017         (QScriptString::operator QString):
       
  7018         (qHash):
       
  7019         * qt/api/qscriptstring.h: Added.
       
  7020         * qt/api/qscriptstring_p.h: Added.
       
  7021         (QScriptStringPrivate::QScriptStringPrivate):
       
  7022         (QScriptStringPrivate::~QScriptStringPrivate):
       
  7023         (QScriptStringPrivate::get):
       
  7024         (QScriptStringPrivate::isValid):
       
  7025         (QScriptStringPrivate::operator==):
       
  7026         (QScriptStringPrivate::operator!=):
       
  7027         (QScriptStringPrivate::toArrayIndex):
       
  7028         (QScriptStringPrivate::toString):
       
  7029         (QScriptStringPrivate::id):
       
  7030         * qt/tests/qscriptstring/qscriptstring.pro: Added.
       
  7031         * qt/tests/qscriptstring/tst_qscriptstring.cpp: Added.
       
  7032         (tst_QScriptString::tst_QScriptString):
       
  7033         (tst_QScriptString::~tst_QScriptString):
       
  7034         (tst_QScriptString::test):
       
  7035         (tst_QScriptString::hash):
       
  7036         (tst_QScriptString::toArrayIndex_data):
       
  7037         (tst_QScriptString::toArrayIndex):
       
  7038         * qt/tests/tests.pro:
       
  7039 
       
  7040 2010-03-02  Oliver Hunt  <oliver@apple.com>
       
  7041 
       
  7042         Reviewed by NOBODY (Build fix).
       
  7043 
       
  7044         Export function on windows.
       
  7045 
       
  7046         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  7047 
       
  7048 2010-03-01  Oliver Hunt  <oliver@apple.com>
       
  7049 
       
  7050         Reviewed by Maciej Stachowiak.
       
  7051 
       
  7052         Refactor named getter function signature to be in line with indexing getter signature
       
  7053         https://bugs.webkit.org/show_bug.cgi?id=35563
       
  7054 
       
  7055         This removes the PropertySlot argument from getter functions, and makes them directly
       
  7056         pass the slot base.  This makes the semantics for the functions match that of the
       
  7057         indexing getters.
       
  7058 
       
  7059         On the down side, this means that we can no longer simply use a proxy function for
       
  7060         JS getters, so we now add another marker value to indicate that a getter is present
       
  7061         and branch accordingly.
       
  7062 
       
  7063         Against all rationality sunspider reports this as a perf win, but i suspect it's just noise.
       
  7064 
       
  7065         * API/JSCallbackObject.h:
       
  7066         * API/JSCallbackObjectFunctions.h:
       
  7067         (JSC::::staticValueGetter):
       
  7068         (JSC::::staticFunctionGetter):
       
  7069         (JSC::::callbackGetter):
       
  7070         * JavaScriptCore.exp:
       
  7071         * runtime/JSActivation.cpp:
       
  7072         (JSC::JSActivation::argumentsGetter):
       
  7073         * runtime/JSActivation.h:
       
  7074         * runtime/JSFunction.cpp:
       
  7075         (JSC::JSFunction::argumentsGetter):
       
  7076         (JSC::JSFunction::callerGetter):
       
  7077         (JSC::JSFunction::lengthGetter):
       
  7078         * runtime/JSFunction.h:
       
  7079         * runtime/NumberConstructor.cpp:
       
  7080         (JSC::numberConstructorNaNValue):
       
  7081         (JSC::numberConstructorNegInfinity):
       
  7082         (JSC::numberConstructorPosInfinity):
       
  7083         (JSC::numberConstructorMaxValue):
       
  7084         (JSC::numberConstructorMinValue):
       
  7085         * runtime/PropertySlot.cpp:
       
  7086         (JSC::PropertySlot::functionGetter):
       
  7087         * runtime/PropertySlot.h:
       
  7088         (JSC::PropertySlot::getValue):
       
  7089         (JSC::PropertySlot::setGetterSlot):
       
  7090         (JSC::PropertySlot::setCacheableGetterSlot):
       
  7091         * runtime/RegExpConstructor.cpp:
       
  7092         (JSC::regExpConstructorDollar1):
       
  7093         (JSC::regExpConstructorDollar2):
       
  7094         (JSC::regExpConstructorDollar3):
       
  7095         (JSC::regExpConstructorDollar4):
       
  7096         (JSC::regExpConstructorDollar5):
       
  7097         (JSC::regExpConstructorDollar6):
       
  7098         (JSC::regExpConstructorDollar7):
       
  7099         (JSC::regExpConstructorDollar8):
       
  7100         (JSC::regExpConstructorDollar9):
       
  7101         (JSC::regExpConstructorInput):
       
  7102         (JSC::regExpConstructorMultiline):
       
  7103         (JSC::regExpConstructorLastMatch):
       
  7104         (JSC::regExpConstructorLastParen):
       
  7105         (JSC::regExpConstructorLeftContext):
       
  7106         (JSC::regExpConstructorRightContext):
       
  7107         * runtime/RegExpObject.cpp:
       
  7108         (JSC::regExpObjectGlobal):
       
  7109         (JSC::regExpObjectIgnoreCase):
       
  7110         (JSC::regExpObjectMultiline):
       
  7111         (JSC::regExpObjectSource):
       
  7112         (JSC::regExpObjectLastIndex):
       
  7113 
       
  7114 2010-03-01  Oliver Hunt  <oliver@apple.com>
       
  7115 
       
  7116         Reviewed by Gavin Barraclough.
       
  7117 
       
  7118         PropertySlot::getValue(ExecState, unsigned) unnecessarily converts index to an Identifier
       
  7119         https://bugs.webkit.org/show_bug.cgi?id=35561
       
  7120 
       
  7121         Fix this by defining a separate property getter function for index getters.  This allows
       
  7122         us to pass an unsigned number without the conversion to an Identifier.  We then update
       
  7123         setCustomIndex to take this new getter type.
       
  7124 
       
  7125         * runtime/PropertySlot.h:
       
  7126         (JSC::PropertySlot::getValue):
       
  7127         (JSC::PropertySlot::setCustom):
       
  7128         (JSC::PropertySlot::setCustomIndex):
       
  7129 
       
  7130 2010-03-01  Gavin Barraclough  <barraclough@apple.com>
       
  7131 
       
  7132         Reviewed by Oliver Hunt.
       
  7133 
       
  7134         Bug 35537 - put_by_id does will incorrectly cache writes where a specific value exists,
       
  7135                     where at the point of caching the same value is being written.
       
  7136 
       
  7137         When performing a put_by_id that is replacing a property already present on the object,
       
  7138         there are three interesting cases regarding the state of the specific value:
       
  7139 
       
  7140         (1) No specific value set - nothing to do, leave the structure in it's current state,
       
  7141             can cache.
       
  7142         (2) A specific value was set, the new put is not of a specified value (i.e. function),
       
  7143             or is of a different specific value - in these cases we need to perform a despecifying
       
  7144             transition to clear the specific value in the structure, but having done so this is a
       
  7145             normal property so as such we can again cache normally.
       
  7146         (3) A specific value was set, and we are overwriting with the same value - in these cases
       
  7147             leave the structure unchanged, but since a specific value is set we cannot cache this
       
  7148             put (we would need the JIT to dynamically check the value being written matched).
       
  7149 
       
  7150         Unfortunately, the current behaviour does not match this.  the checks for a specific value
       
  7151         being present & the value matching are combined in such a way that in case (2), above we
       
  7152         will unnecessarily prevent the transition being cached, but in case (3) we will incorrectly
       
  7153         fail to prevent caching.
       
  7154 
       
  7155         The bug exposes itself if multiple puts of the same specific value are performed to a
       
  7156         property, and erroneously the put is allowed to be cached by the JIT.  Method checks may be
       
  7157         generated caching calls of this structure.  Subsequent puts performed from JIT code may
       
  7158         write different values without triggering a despecify transition, and as such cached method
       
  7159         checks will continue to pass, despite the value having changed.
       
  7160 
       
  7161         * runtime/JSObject.h:
       
  7162         (JSC::JSObject::putDirectInternal):
       
  7163 
       
  7164 2010-03-01  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
       
  7165 
       
  7166         Reviewed by Simon Hausmann.
       
  7167 
       
  7168         Fix the Qt build on Mac OS X/Cocoa 64-bit
       
  7169 
       
  7170         * JavaScriptCore.pri: Add missing implementation file to resolve JSC symbols
       
  7171 
       
  7172 2010-02-26  Gavin Barraclough  <barraclough@apple.com>
       
  7173 
       
  7174         Rubber Stamped by Geoff Garen.
       
  7175 
       
  7176         Remove wrec.  All builds should have switched to yarr by now.
       
  7177 
       
  7178         * Android.mk:
       
  7179         * GNUmakefile.am:
       
  7180         * JavaScriptCore.gypi:
       
  7181         * JavaScriptCore.pri:
       
  7182         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
  7183         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
       
  7184         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
       
  7185         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  7186         * runtime/RegExp.cpp:
       
  7187         (JSC::RegExp::match):
       
  7188         * runtime/RegExp.h:
       
  7189         * wrec: Removed.
       
  7190         * wrec/CharacterClass.cpp: Removed.
       
  7191         * wrec/CharacterClass.h: Removed.
       
  7192         * wrec/CharacterClassConstructor.cpp: Removed.
       
  7193         * wrec/CharacterClassConstructor.h: Removed.
       
  7194         * wrec/Escapes.h: Removed.
       
  7195         * wrec/Quantifier.h: Removed.
       
  7196         * wrec/WREC.cpp: Removed.
       
  7197         * wrec/WREC.h: Removed.
       
  7198         * wrec/WRECFunctors.cpp: Removed.
       
  7199         * wrec/WRECFunctors.h: Removed.
       
  7200         * wrec/WRECGenerator.cpp: Removed.
       
  7201         * wrec/WRECGenerator.h: Removed.
       
  7202         * wrec/WRECParser.cpp: Removed.
       
  7203         * wrec/WRECParser.h: Removed.
       
  7204         * wscript:
       
  7205 
       
  7206 2010-02-26  Oliver Hunt  <oliver@apple.com>
       
  7207 
       
  7208         Reviewed by Geoff Garen.
       
  7209 
       
  7210         Make the lookup table generator include an explicit cast to expected
       
  7211         type of the function.  We do this because otherwise the blind intptr_t
       
  7212         cast that is subsequently applied allows incorrectly typed functions
       
  7213         to be inserted into the table, where they will only fail at runtime.
       
  7214         This change makes such errors produce a compile time failure.
       
  7215 
       
  7216         * create_hash_table:
       
  7217 
       
  7218 2010-02-26  Janne Koskinen  <janne.p.koskinen@digia.com>
       
  7219 
       
  7220         Reviewed by Simon Hausmann.
       
  7221 
       
  7222         [Qt] Symbian specific getCPUTime implemetation
       
  7223         https://bugs.webkit.org/show_bug.cgi?id=34742
       
  7224 
       
  7225         Default implementation doesn't work on Symbian devices.
       
  7226         This change adds a proper implementation by
       
  7227         asking thread execution time from the current thread.
       
  7228 
       
  7229         * runtime/TimeoutChecker.cpp:
       
  7230         (JSC::getCPUTime):
       
  7231 
       
  7232 2010-02-25  Alexey Proskuryakov  <ap@apple.com>
       
  7233 
       
  7234         Reviewed by Anders Carlsson.
       
  7235 
       
  7236         https://bugs.webkit.org/show_bug.cgi?id=35406
       
  7237         <rdar://problem/6945502> Make generic array methods work with JavaArray
       
  7238 
       
  7239         Renamed lazyCreationData to subclassData. This is extra data that can be used by JSArray
       
  7240         subclasses (you can't add new data members, because it wouldn't fit in JSCell otherwise).
       
  7241 
       
  7242         * JavaScriptCore.exp:
       
  7243         * runtime/JSArray.cpp:
       
  7244         (JSC::JSArray::JSArray):
       
  7245         (JSC::JSArray::subclassData):
       
  7246         (JSC::JSArray::setSubclassData):
       
  7247         * runtime/JSArray.h:
       
  7248         * runtime/RegExpConstructor.cpp:
       
  7249         (JSC::RegExpMatchesArray::RegExpMatchesArray):
       
  7250         (JSC::RegExpMatchesArray::~RegExpMatchesArray):
       
  7251         (JSC::RegExpMatchesArray::fillArrayInstance):
       
  7252         * runtime/RegExpMatchesArray.h:
       
  7253         (JSC::RegExpMatchesArray::getOwnPropertySlot):
       
  7254         (JSC::RegExpMatchesArray::getOwnPropertyDescriptor):
       
  7255         (JSC::RegExpMatchesArray::put):
       
  7256         (JSC::RegExpMatchesArray::deleteProperty):
       
  7257         (JSC::RegExpMatchesArray::getOwnPropertyNames):
       
  7258 
       
  7259 2010-02-25  Oliver Hunt  <oliver@apple.com>
       
  7260 
       
  7261         Reviewed by Geoff Garen.
       
  7262 
       
  7263         JSC crashes like crazy in the JSPropertyNameIterator destructor
       
  7264 
       
  7265         Add back null check of m_cachedStructure.  Curse last minute changes.
       
  7266 
       
  7267         * runtime/JSPropertyNameIterator.cpp:
       
  7268         (JSC::JSPropertyNameIterator::~JSPropertyNameIterator):
       
  7269 
       
  7270 2010-02-25  Oliver Hunt  <oliver@apple.com>
       
  7271 
       
  7272         Reviewed by Maciej Stachowiak.
       
  7273 
       
  7274         Race condition in JSPropertyNameIterator and Structure destruction
       
  7275         https://bugs.webkit.org/show_bug.cgi?id=35398
       
  7276 
       
  7277         JSPropertyNameIterator and Structure have a cyclic dependency that they
       
  7278         manage by clearing the appropriate reference in each other during their
       
  7279         destruction.  However if the Structure is destroyed while the 
       
  7280         JSPropertyNameIterator is dead but not yet finalized the Structures
       
  7281         WeakGCPtr will return null, and so prevent Structure from clearing
       
  7282         the m_cachedStructure pointer of the iterator.  When the iterator is
       
  7283         then finalised the m_cachedStructure is invalid, and the attempt to
       
  7284         clear the structures back reference fails.
       
  7285 
       
  7286         To fix this we simply make JSPropertyNameIterator keep the Structure
       
  7287         alive, using the weak pointer to break the ref cycle.
       
  7288 
       
  7289         * runtime/JSPropertyNameIterator.cpp:
       
  7290         (JSC::JSPropertyNameIterator::~JSPropertyNameIterator):
       
  7291           The iterator now keeps m_cachedStructure alive itself, so no longer needs
       
  7292           to check for it being cleared
       
  7293         * runtime/JSPropertyNameIterator.h:
       
  7294         (JSC::JSPropertyNameIterator::setCachedStructure):
       
  7295           Add an assertion to ensure correct usage
       
  7296         (JSC::JSPropertyNameIterator::cachedStructure):
       
  7297           Add .get()
       
  7298         * runtime/Structure.cpp:
       
  7299         (JSC::Structure::~Structure):
       
  7300           Add an assertion that our iterator isn't already dead, and remove
       
  7301           the now unnecessary attempt to clear the ref in the iterator
       
  7302         * runtime/WeakGCPtr.h:
       
  7303         (JSC::WeakGCPtr::hasDeadObject):
       
  7304           An assert-only function to allow us to assert correct behaviour
       
  7305           in the Structure destructor
       
  7306 
       
  7307 2010-02-25  Jochen Eisinger  <jochen@chromium.org>
       
  7308  
       
  7309         Reviewed by Jeremy Orlow.
       
  7310  
       
  7311         Make the context that was passed to the ThreadFunction accessible.
       
  7312         https://bugs.webkit.org/show_bug.cgi?id=35379
       
  7313 
       
  7314         When a database is opened, right now you
       
  7315         don't have any context from where it is opened. The problem is that
       
  7316         the actual calls that open a database go through the sqlite3 vfs
       
  7317         layer, so there's no easy way to pass this function down to to
       
  7318         platform/sql/chromium/SQLFileSystemChromium*.cpp
       
  7319 
       
  7320         This patch will allow you to get from anywhere within webkit a pointer
       
  7321         to the Thread object that actually created the thread you're currently
       
  7322         on (in case of the database, this can be either a thread forked of
       
  7323         from the main thread or from a worker thread), and query the object
       
  7324         for context information.
       
  7325 
       
  7326         * wtf/Threading.h:
       
  7327         * wtf/ThreadingNone.cpp:
       
  7328         (WTF::threadContext):
       
  7329         * wtf/ThreadingPthreads.cpp:
       
  7330         (WTF::):
       
  7331         (WTF::identifierByPthreadHandle):
       
  7332         (WTF::establishIdentifierForPthreadHandle):
       
  7333         (WTF::pthreadHandleForIdentifier):
       
  7334         (WTF::contextForIdentifier):
       
  7335         (WTF::createThreadInternal):
       
  7336         (WTF::currentThread):
       
  7337         (WTF::threadContext):
       
  7338         * wtf/ThreadingWin.cpp:
       
  7339         (WTF::):
       
  7340         (WTF::threadMap):
       
  7341         (WTF::storeThreadHandleByIdentifier):
       
  7342         (WTF::threadHandleForIdentifier):
       
  7343         (WTF::contextForIdentifier):
       
  7344         (WTF::createThreadInternal):
       
  7345         (WTF::threadContext):
       
  7346 
       
  7347 2010-02-25  Jeremy Orlow  <jorlow@chromium.org>
       
  7348 
       
  7349         Reverting to re-submit with better change log.
       
  7350 
       
  7351         * wtf/Threading.h:
       
  7352         * wtf/ThreadingNone.cpp:
       
  7353         (WTF::isMainThread):
       
  7354         * wtf/ThreadingPthreads.cpp:
       
  7355         (WTF::identifierByPthreadHandle):
       
  7356         (WTF::establishIdentifierForPthreadHandle):
       
  7357         (WTF::pthreadHandleForIdentifier):
       
  7358         (WTF::createThreadInternal):
       
  7359         (WTF::currentThread):
       
  7360         * wtf/ThreadingWin.cpp:
       
  7361         (WTF::threadMap):
       
  7362         (WTF::storeThreadHandleByIdentifier):
       
  7363         (WTF::threadHandleForIdentifier):
       
  7364         (WTF::createThreadInternal):
       
  7365 
       
  7366 2010-02-25  Jochen Eisinger  <jochen@chromium.org>
       
  7367 
       
  7368         Reviewed by Jeremy Orlow.
       
  7369 
       
  7370         Make the context that was passed to the ThreadFunction accessible.
       
  7371         https://bugs.webkit.org/show_bug.cgi?id=35379
       
  7372 
       
  7373         * wtf/Threading.h:
       
  7374         * wtf/ThreadingNone.cpp:
       
  7375         (WTF::threadContext):
       
  7376         * wtf/ThreadingPthreads.cpp:
       
  7377         (WTF::):
       
  7378         (WTF::identifierByPthreadHandle):
       
  7379         (WTF::establishIdentifierForPthreadHandle):
       
  7380         (WTF::pthreadHandleForIdentifier):
       
  7381         (WTF::contextForIdentifier):
       
  7382         (WTF::createThreadInternal):
       
  7383         (WTF::currentThread):
       
  7384         (WTF::threadContext):
       
  7385         * wtf/ThreadingWin.cpp:
       
  7386         (WTF::):
       
  7387         (WTF::threadMap):
       
  7388         (WTF::storeThreadHandleByIdentifier):
       
  7389         (WTF::threadHandleForIdentifier):
       
  7390         (WTF::contextForIdentifier):
       
  7391         (WTF::createThreadInternal):
       
  7392         (WTF::threadContext):
       
  7393 
       
  7394 2010-02-24  Oliver Hunt  <oliver@apple.com>
       
  7395 
       
  7396         Reviewed by Geoffrey Garen.
       
  7397 
       
  7398         [REGRESSION in r55185] EXC_BAD_ACCESS on opening inspector.
       
  7399         https://bugs.webkit.org/show_bug.cgi?id=35335
       
  7400 
       
  7401         compileGetDirectOffset modifies the contents of the object register
       
  7402         when the object is not using the inline storage array.  As the object
       
  7403         register contains our 'this' pointer we can't allow it to be clobbered.
       
  7404         The fix is simply to copy the register into a separate scratch register
       
  7405         when we're loading off an object that doesn't use inline storage.
       
  7406 
       
  7407         * jit/JITPropertyAccess.cpp:
       
  7408         (JSC::JIT::privateCompileGetByIdSelfList):
       
  7409         * jit/JITPropertyAccess32_64.cpp:
       
  7410         (JSC::JIT::privateCompileGetByIdSelfList):
       
  7411 
       
  7412 2010-02-24  Oliver Hunt  <oliver@apple.com>
       
  7413 
       
  7414         Reviewed by Gavin Barraclough.
       
  7415 
       
  7416         Speed up getter performance in the jit
       
  7417         https://bugs.webkit.org/show_bug.cgi?id=35332
       
  7418 
       
  7419         Implement getter lookup caching in the interpreter.
       
  7420         The getter stubs are generated through basically the
       
  7421         same code paths as the normal get_by_id caching.
       
  7422         Instead of simply loading a property and returning,
       
  7423         we load the getter slot, and pass the getter, base value
       
  7424         and return address to a shared stub used for getter
       
  7425         dispatch.
       
  7426 
       
  7427         * jit/JIT.h:
       
  7428         (JSC::JIT::compileGetByIdProto):
       
  7429         (JSC::JIT::compileGetByIdSelfList):
       
  7430         (JSC::JIT::compileGetByIdProtoList):
       
  7431         (JSC::JIT::compileGetByIdChainList):
       
  7432         (JSC::JIT::compileGetByIdChain):
       
  7433         * jit/JITPropertyAccess.cpp:
       
  7434         (JSC::JIT::privateCompileGetByIdProto):
       
  7435         (JSC::JIT::privateCompileGetByIdSelfList):
       
  7436         (JSC::JIT::privateCompileGetByIdProtoList):
       
  7437         (JSC::JIT::privateCompileGetByIdChainList):
       
  7438         (JSC::JIT::privateCompileGetByIdChain):
       
  7439         * jit/JITPropertyAccess32_64.cpp:
       
  7440         (JSC::JIT::privateCompileGetByIdProto):
       
  7441         (JSC::JIT::privateCompileGetByIdSelfList):
       
  7442         (JSC::JIT::privateCompileGetByIdProtoList):
       
  7443         (JSC::JIT::privateCompileGetByIdChainList):
       
  7444         (JSC::JIT::privateCompileGetByIdChain):
       
  7445         * jit/JITStubs.cpp:
       
  7446         (JSC::JITThunks::tryCacheGetByID):
       
  7447         (JSC::DEFINE_STUB_FUNCTION):
       
  7448         * jit/JITStubs.h:
       
  7449         (JSC::):
       
  7450         * runtime/GetterSetter.h:
       
  7451 
       
  7452 2010-02-23  Oliver Hunt  <oliver@apple.com>
       
  7453 
       
  7454         Reviewed by Maciej Stachowiak.
       
  7455 
       
  7456         Web Inspector: Regression: r55027+: Inspector broken
       
  7457         https://bugs.webkit.org/show_bug.cgi?id=35253
       
  7458 
       
  7459         op_get_by_id_getter_chain was not passing the correct this parameter.
       
  7460         The bug was caused by incorrect use of baseCell instead of baseValue,
       
  7461         baseValue contains the original object for the lookup (and hence the
       
  7462         correct this object), baseCell is clobbered as part of walking the
       
  7463         prototype chain.
       
  7464 
       
  7465         * interpreter/Interpreter.cpp:
       
  7466         (JSC::Interpreter::privateExecute):
       
  7467 
       
  7468 2010-02-23  Gustavo Noronha Silva  <gns@gnome.org>
       
  7469 
       
  7470         Rubber-stamped by Dimitri Glazkov.
       
  7471 
       
  7472         Chromium build fix.
       
  7473 
       
  7474         * JavaScriptCore.gyp/JavaScriptCore.gyp:
       
  7475 
       
  7476 2010-02-23  Leandro Pereira  <leandro@profusion.mobi>
       
  7477 
       
  7478         Reviewed by Gustavo Noronha Silva.
       
  7479 
       
  7480         Changes references of GOwnPtr to reflect their new place.
       
  7481         http://webkit.org/b/35084
       
  7482 
       
  7483         * JavaScriptCore/JavaScriptCore.gypi:
       
  7484         * JavaScriptCore/wtf/Threading.h:
       
  7485         * JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h:
       
  7486 
       
  7487 2010-02-23  Leandro Pereira  <leandro@profusion.mobi>
       
  7488 
       
  7489         Reviewed by Kenneth Rohde Christiansen.
       
  7490 
       
  7491         Adding the EFL implementation of JavaScriptCore.
       
  7492         See https://bugs.webkit.org/show_bug.cgi?id=35084 for details.
       
  7493 
       
  7494         * GNUmakefile.am: Updated to reflect the new location of GOwnPtr and
       
  7495                           GRefPtr.
       
  7496         * wtf/efl/MainThreadEfl.cpp: Added.
       
  7497         * wtf/gobject/GOwnPtr.cpp: Moved from wtf/gtk.
       
  7498         * wtf/gobject/GOwnPtr.h: Moved from wtf/gtk.
       
  7499         * wtf/gobject/GRefPtr.cpp: Moved from wtf/gtk.
       
  7500         * wtf/gobject/GRefPtr.h: Moved from wtf/gtk.
       
  7501 
       
  7502 2010-02-22  Julien Chaffraix  <jchaffraix@webkit.org>
       
  7503 
       
  7504         Reviewed by Darin Adler.
       
  7505 
       
  7506         Remove auto_ptr usage in JavaScriptCore.
       
  7507         https://bugs.webkit.org/show_bug.cgi?id=35221
       
  7508 
       
  7509         * parser/Nodes.h: Removed now unneeded adopt method.
       
  7510         * parser/Parser.cpp: Removed <memory> include as it is not required anymore.
       
  7511         * wtf/OwnPtr.h: Removed the constructor from auto_ptr.
       
  7512         * wtf/VectorTraits.h: Removed a template specialization for auto_ptr.
       
  7513         * wtf/unicode/Collator.h: Made userDefault return a PassOwnPtr.
       
  7514         * wtf/unicode/CollatorDefault.cpp:
       
  7515         (WTF::Collator::userDefault): Changed the method to match the next signature.
       
  7516         * wtf/unicode/icu/CollatorICU.cpp:
       
  7517         (WTF::Collator::userDefault): Ditto.
       
  7518 
       
  7519 2010-02-22  Huahui Wu  <hwu@google.com>
       
  7520 
       
  7521         Reviewed by Eric Seidel.
       
  7522 
       
  7523         Add code that enables SquirrelFish Extreme (a.k.a JSCX, JSC JIT)
       
  7524         in Android. It's disabled by default, but is enabled when the 
       
  7525         enveronment variable ENABLE_JSC_JIT is set to true.
       
  7526         https://bugs.webkit.org/show_bug.cgi?id=34855
       
  7527 
       
  7528         * Android.mk:
       
  7529         * wtf/Platform.h:
       
  7530 
       
  7531 2010-02-22  Gavin Barraclough  <barraclough@apple.com>
       
  7532 
       
  7533         Reviewed by Oliver Hunt.
       
  7534 
       
  7535         JSStringBuilder should not CRASH if allocation fails, it should throw a JSException.
       
  7536 
       
  7537         * runtime/JSGlobalObjectFunctions.cpp:
       
  7538         * runtime/JSStringBuilder.h:
       
  7539         (JSC::JSStringBuilder::JSStringBuilder):
       
  7540         (JSC::JSStringBuilder::append):
       
  7541         (JSC::JSStringBuilder::build):
       
  7542         * runtime/StringBuilder.h:
       
  7543         (JSC::StringBuilder::build):
       
  7544         * wtf/Vector.h:
       
  7545         (WTF::VectorBufferBase::tryAllocateBuffer):
       
  7546         (WTF::):
       
  7547         (WTF::VectorBuffer::tryAllocateBuffer):
       
  7548         (WTF::::tryExpandCapacity):
       
  7549         (WTF::::tryReserveCapacity):
       
  7550         (WTF::::tryAppend):
       
  7551 
       
  7552 2010-02-22  Kwang Yul Seo  <skyul@company100.net>
       
  7553 
       
  7554         Reviewed by Eric Seidel.
       
  7555 
       
  7556         [BREWMP] Map FastMalloc to BREW memory allocator
       
  7557         https://bugs.webkit.org/show_bug.cgi?id=33570
       
  7558 
       
  7559         Use MALLOC macro instead of the standard malloc function.
       
  7560         Although RVCT provides malloc, we can't use it in BREW
       
  7561         because the loader does not initialize the base address properly.
       
  7562 
       
  7563         * wtf/FastMalloc.cpp:
       
  7564         * wtf/brew/SystemMallocBrew.h: Added.
       
  7565         (mallocBrew):
       
  7566         (callocBrew):
       
  7567         (freeBrew):
       
  7568         (reallocBrew):
       
  7569 
       
  7570 2010-02-22  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
       
  7571 
       
  7572         Build fix for make distcheck.
       
  7573 
       
  7574         * GNUmakefile.am:
       
  7575 
       
  7576 2010-02-22  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  7577 
       
  7578         Unreviewed build fix.
       
  7579 
       
  7580         [Qt] Build fix for RVCT.
       
  7581 
       
  7582         Fix after r55024. The "-i" option is for perl not for the
       
  7583         script.
       
  7584 
       
  7585         * DerivedSources.pro:
       
  7586 
       
  7587 2010-02-21  Gavin Barraclough  <barraclough@apple.com>
       
  7588 
       
  7589         Reviewed by Oliver Hunt.
       
  7590 
       
  7591         Make UString::m_data be const, and make the UChar owned/ref-counted by CrossThreadRefCounted be const too.
       
  7592 
       
  7593         * runtime/UStringImpl.cpp:
       
  7594         (JSC::UStringImpl::baseSharedBuffer):
       
  7595         (JSC::UStringImpl::~UStringImpl):
       
  7596         * runtime/UStringImpl.h:
       
  7597         (JSC::UStringImpl::create):
       
  7598         (JSC::UStringImpl::data):
       
  7599         (JSC::UStringImpl::UStringImpl):
       
  7600         * wtf/OwnFastMallocPtr.h:
       
  7601         (WTF::OwnFastMallocPtr::~OwnFastMallocPtr):
       
  7602 
       
  7603 2010-02-21  Yuta Kitamura  <yutak@chromium.org>
       
  7604 
       
  7605         Reviewed by Darin Adler.
       
  7606 
       
  7607         HashMapTranslatorAdapter::translate() needs to set the mapped value.
       
  7608 
       
  7609         HTTPHeaderMap::add(const char*, const String&) does not work
       
  7610         https://bugs.webkit.org/show_bug.cgi?id=35227
       
  7611 
       
  7612         * wtf/HashMap.h:
       
  7613         (WTF::HashMapTranslatorAdapter::translate):
       
  7614 
       
  7615 2010-02-19  Maciej Stachowiak  <mjs@apple.com>
       
  7616 
       
  7617         Reviewed by David Levin.
       
  7618 
       
  7619         Add an ENABLE flag for sandboxed iframes to make it possible to disable it in releases
       
  7620         https://bugs.webkit.org/show_bug.cgi?id=35147
       
  7621 
       
  7622         * Configurations/FeatureDefines.xcconfig:
       
  7623 
       
  7624 2010-02-19  Gavin Barraclough  <barraclough@apple.com>
       
  7625 
       
  7626         Reviewed by Oliver Hunt.
       
  7627 
       
  7628         JSString::getIndex() calls value() to resolve the string value (is a rope)
       
  7629         to a UString, then passes the result to jsSingleCharacterSubstring without
       
  7630         checking for an exception.  In case of out-of-memory the returned UString
       
  7631         is null(), which may result in an out-of-buounds substring being created.
       
  7632         This is bad.
       
  7633 
       
  7634         Simple fix is to be able to get an index from a rope without resolving to
       
  7635         UString.  This may be a useful optimization in some test cases.
       
  7636 
       
  7637         The same bug exists in some other methods is JSString, these can be fixed
       
  7638         by changing them to call getIndex().
       
  7639 
       
  7640         * runtime/JSString.cpp:
       
  7641         (JSC::JSString::resolveRope):
       
  7642         (JSC::JSString::getStringPropertyDescriptor):
       
  7643         * runtime/JSString.h:
       
  7644         (JSC::jsSingleCharacterSubstring):
       
  7645         (JSC::JSString::getIndex):
       
  7646         (JSC::jsSingleCharacterString):
       
  7647         (JSC::JSString::getStringPropertySlot):
       
  7648         * runtime/UStringImpl.cpp:
       
  7649         (JSC::singleCharacterSubstring):
       
  7650         * runtime/UStringImpl.h:
       
  7651         (JSC::UStringImpl::singleCharacterSubstring):
       
  7652 
       
  7653 2010-02-19  Oliver Hunt  <oliver@apple.com>
       
  7654 
       
  7655         RS = Gavin Barraclough.
       
  7656 
       
  7657         Split the 32/64 version of JITPropertyAccess into a separate file.
       
  7658 
       
  7659         * GNUmakefile.am:
       
  7660         * JavaScriptCore.gypi:
       
  7661         * JavaScriptCore.pri:
       
  7662         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
  7663         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  7664         * jit/JITPropertyAccess.cpp:
       
  7665         * jit/JITPropertyAccess32_64.cpp: Added.
       
  7666         (JSC::JIT::emit_op_put_by_index):
       
  7667         (JSC::JIT::emit_op_put_getter):
       
  7668         (JSC::JIT::emit_op_put_setter):
       
  7669         (JSC::JIT::emit_op_del_by_id):
       
  7670         (JSC::JIT::emit_op_method_check):
       
  7671         (JSC::JIT::emitSlow_op_method_check):
       
  7672         (JSC::JIT::emit_op_get_by_val):
       
  7673         (JSC::JIT::emitSlow_op_get_by_val):
       
  7674         (JSC::JIT::emit_op_put_by_val):
       
  7675         (JSC::JIT::emitSlow_op_put_by_val):
       
  7676         (JSC::JIT::emit_op_get_by_id):
       
  7677         (JSC::JIT::emitSlow_op_get_by_id):
       
  7678         (JSC::JIT::emit_op_put_by_id):
       
  7679         (JSC::JIT::emitSlow_op_put_by_id):
       
  7680         (JSC::JIT::compileGetByIdHotPath):
       
  7681         (JSC::JIT::compileGetByIdSlowCase):
       
  7682         (JSC::JIT::compilePutDirectOffset):
       
  7683         (JSC::JIT::compileGetDirectOffset):
       
  7684         (JSC::JIT::testPrototype):
       
  7685         (JSC::JIT::privateCompilePutByIdTransition):
       
  7686         (JSC::JIT::patchGetByIdSelf):
       
  7687         (JSC::JIT::patchMethodCallProto):
       
  7688         (JSC::JIT::patchPutByIdReplace):
       
  7689         (JSC::JIT::privateCompilePatchGetArrayLength):
       
  7690         (JSC::JIT::privateCompileGetByIdProto):
       
  7691         (JSC::JIT::privateCompileGetByIdSelfList):
       
  7692         (JSC::JIT::privateCompileGetByIdProtoList):
       
  7693         (JSC::JIT::privateCompileGetByIdChainList):
       
  7694         (JSC::JIT::privateCompileGetByIdChain):
       
  7695         (JSC::JIT::emit_op_get_by_pname):
       
  7696         (JSC::JIT::emitSlow_op_get_by_pname):
       
  7697 
       
  7698 2010-02-19  Patrick Gansterer  <paroga@paroga.com>
       
  7699 
       
  7700         Reviewed by Laszlo Gombos.
       
  7701 
       
  7702         Added additional parameter to create_rvct_stubs 
       
  7703         for setting the regularexpression prefix.
       
  7704         Renamed it because it now works for other platforms too.
       
  7705         https://bugs.webkit.org/show_bug.cgi?id=34951
       
  7706 
       
  7707         * DerivedSources.pro:
       
  7708         * create_jit_stubs: Copied from JavaScriptCore/create_rvct_stubs.
       
  7709         * create_rvct_stubs: Removed.
       
  7710 
       
  7711 2010-02-18  Oliver Hunt  <oliver@apple.com>
       
  7712 
       
  7713         Reviewed by Gavin Barraclough.
       
  7714 
       
  7715         Improve interpreter getter performance
       
  7716         https://bugs.webkit.org/show_bug.cgi?id=35138
       
  7717 
       
  7718         Improve the performance of getter dispatch by making it possible
       
  7719         for the interpreter to cache the GetterSetter object lookup.
       
  7720 
       
  7721         To do this we simply need to make PropertySlot aware of getters
       
  7722         as a potentially cacheable property, and record the base and this
       
  7723         objects for a getter access.  This allows us to use more-or-less
       
  7724         identical code to that used by the normal get_by_id caching, with
       
  7725         the dispatch being the only actual difference.
       
  7726 
       
  7727         I'm holding off of implementing this in the JIT until I do some
       
  7728         cleanup to try and making coding in the JIT not be as horrible
       
  7729         as it is currently.
       
  7730 
       
  7731         * bytecode/CodeBlock.cpp:
       
  7732         (JSC::CodeBlock::dump):
       
  7733         (JSC::CodeBlock::derefStructures):
       
  7734         (JSC::CodeBlock::refStructures):
       
  7735         * bytecode/Opcode.h:
       
  7736         * interpreter/Interpreter.cpp:
       
  7737         (JSC::Interpreter::resolveGlobal):
       
  7738         (JSC::Interpreter::tryCacheGetByID):
       
  7739         (JSC::Interpreter::privateExecute):
       
  7740         * jit/JIT.cpp:
       
  7741         (JSC::JIT::privateCompileMainPass):
       
  7742         * jit/JITStubs.cpp:
       
  7743         (JSC::JITThunks::tryCacheGetByID):
       
  7744         (JSC::DEFINE_STUB_FUNCTION):
       
  7745         * runtime/JSObject.cpp:
       
  7746         (JSC::JSObject::fillGetterPropertySlot):
       
  7747         * runtime/PropertySlot.cpp:
       
  7748         (JSC::PropertySlot::functionGetter):
       
  7749         * runtime/PropertySlot.h:
       
  7750         (JSC::PropertySlot::isGetter):
       
  7751         (JSC::PropertySlot::isCacheable):
       
  7752         (JSC::PropertySlot::isCacheableValue):
       
  7753         (JSC::PropertySlot::setValueSlot):
       
  7754         (JSC::PropertySlot::setGetterSlot):
       
  7755         (JSC::PropertySlot::setCacheableGetterSlot):
       
  7756         (JSC::PropertySlot::clearOffset):
       
  7757         (JSC::PropertySlot::thisValue):
       
  7758 
       
  7759 2010-02-17  Geoffrey Garen  <ggaren@apple.com>
       
  7760 
       
  7761         Reviewed by Oliver Hunt.
       
  7762 
       
  7763         Fixed a portion of:
       
  7764         <rdar://problem/7165917> | https://bugs.webkit.org/show_bug.cgi?id=28676
       
  7765         Safari 4 does not release memory back to the operating system fast enough (28676)
       
  7766         
       
  7767         This patch fixes a surprisingly common edge case in which the page heap
       
  7768         would have only one free span, but that span would be larger than the
       
  7769         minimum free size, so we would decide not to free it, even though it
       
  7770         could be as large as 100MB or more!
       
  7771         
       
  7772         SunSpider reports no change on Mac or Windows.
       
  7773 
       
  7774         * wtf/FastMalloc.cpp:
       
  7775         (WTF::TCMalloc_PageHeap::scavenge): Call shouldContinueScavenging() instead
       
  7776         of doing the math ourselves. Don't keep a local value for pagesDecommitted
       
  7777         because that lets free_committed_pages_ be wrong temporarily. Instead,
       
  7778         update free_committed_pages_ as we go. ASSERT that we aren't releasing
       
  7779         a span that has already been released, because we think this is impossible.
       
  7780         Finally, don't be afraid to release all free memory in the page heap when
       
  7781         scavenging. We only scavenge after 5 seconds of the application's working
       
  7782         set not growing, and we keep both thread caches and a central cache on
       
  7783         top of the page heap, so the extra free pages in the page heap were just
       
  7784         overkill.
       
  7785 
       
  7786 2010-02-17  Gavin Barraclough  <barraclough@apple.com>
       
  7787 
       
  7788         Reviewed by Oliver Hunt.
       
  7789 
       
  7790         https://bugs.webkit.org/show_bug.cgi?id=35070
       
  7791         Addition of 2 strings of length 2^31 may result in a string of length 0.
       
  7792 
       
  7793         Check for overflow when creating a new JSString as a result of an addition
       
  7794         or concatenation, throw an out of memory exception.
       
  7795 
       
  7796         * runtime/JSString.h:
       
  7797         (JSC::):
       
  7798         * runtime/Operations.h:
       
  7799         (JSC::jsString):
       
  7800 
       
  7801 2010-02-17  Xan Lopez  <xlopez@igalia.com>
       
  7802 
       
  7803         Reviewed by Gustavo Noronha.
       
  7804 
       
  7805         [Linux] Webkit incompatible with Java plugins
       
  7806         https://bugs.webkit.org/show_bug.cgi?id=24912
       
  7807 
       
  7808         Add support for GFile to GOwnPtr.
       
  7809 
       
  7810         Based on original work by Gustavo Noronha.
       
  7811 
       
  7812         * wtf/gtk/GOwnPtr.cpp:
       
  7813         (WTF::GFile):
       
  7814         * wtf/gtk/GOwnPtr.h:
       
  7815 
       
  7816 2010-02-16  Gavin Barraclough  <barraclough@apple.com>
       
  7817 
       
  7818         Reviewed by Mark Rowe.
       
  7819 
       
  7820         Fix a handful of other leaks seen on the buildbot.
       
  7821 
       
  7822         * runtime/UStringImpl.h:
       
  7823         (JSC::UStringOrRopeImpl::deref): Delegate through to the subclass version of deref to ensure that
       
  7824         the correct cleanup takes place.  This function previously featured some code that attempted to
       
  7825         skip deletion of static UStringImpl's.  Closer inspection revealed that it was in fact equivalent
       
  7826         to "if (false)", meaning that UStringImpl's which had their final deref performed via this function
       
  7827         were leaked.
       
  7828 
       
  7829 2010-02-16  Mark Rowe  <mrowe@apple.com>
       
  7830 
       
  7831         Reviewed by Gavin Barraclough.
       
  7832 
       
  7833         Fix a handful of leaks seen on the buildbot.
       
  7834 
       
  7835         * runtime/UStringImpl.h:
       
  7836         (JSC::UStringOrRopeImpl::deref): Call URopeImpl::destructNonRecursive rather than delete
       
  7837         to ensure that the rope's fibers are also destroyed.
       
  7838 
       
  7839 2010-02-16  Gavin Barraclough  <barraclough@apple.com>
       
  7840 
       
  7841         Reviewed by Oliver Hunt.
       
  7842 
       
  7843         https://bugs.webkit.org/show_bug.cgi?id=34964
       
  7844         Leaks tool reports false memory leaks due to Rope implementation.
       
  7845 
       
  7846         A rope is a recursive data structure where each node in the rope holds a set of
       
  7847         pointers, each of which may reference either a string (in UStringImpl form) or
       
  7848         another rope node.  A low bit in each pointer is used to distinguish between
       
  7849         rope & string elements, in a fashion similar to the recently-removed
       
  7850         PtrAndFlags class (see https://bugs.webkit.org/show_bug.cgi?id=33731 ).  Again,
       
  7851         this causes a problem for Leaks - refactor to remove the magic pointer
       
  7852         mangling.
       
  7853 
       
  7854         Move Rope out from JSString.h and rename to URopeImpl, to match UStringImpl.
       
  7855         Give UStringImpl and URopeImpl a common parent class, UStringOrRopeImpl.
       
  7856         Repurpose an otherwise invalid permutation to flags (static & should report
       
  7857         memory cost) to identify ropes.
       
  7858 
       
  7859         This allows us to change the rope's fibers to interrogate the object rather
       
  7860         than storing a bool within the low bits of the pointer (or in some cases the
       
  7861         use of a common parent class removes the need to determine the type at all -
       
  7862         there is a common interface to ref or get the length of either ropes or strings).
       
  7863 
       
  7864         * API/JSClassRef.cpp:
       
  7865         (OpaqueJSClass::OpaqueJSClass):
       
  7866         (OpaqueJSClassContextData::OpaqueJSClassContextData):
       
  7867         * bytecompiler/BytecodeGenerator.cpp:
       
  7868         (JSC::keyForCharacterSwitch):
       
  7869         * interpreter/Interpreter.cpp:
       
  7870         (JSC::Interpreter::privateExecute):
       
  7871         * jit/JITStubs.cpp:
       
  7872         (JSC::DEFINE_STUB_FUNCTION):
       
  7873         * runtime/ArrayPrototype.cpp:
       
  7874         (JSC::arrayProtoFuncToString):
       
  7875         * runtime/Identifier.cpp:
       
  7876         (JSC::Identifier::equal):
       
  7877         (JSC::Identifier::addSlowCase):
       
  7878         * runtime/JSString.cpp:
       
  7879         (JSC::JSString::resolveRope):
       
  7880         * runtime/JSString.h:
       
  7881         (JSC::):
       
  7882         (JSC::RopeBuilder::JSString):
       
  7883         (JSC::RopeBuilder::~JSString):
       
  7884         (JSC::RopeBuilder::appendStringInConstruct):
       
  7885         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
       
  7886         (JSC::RopeBuilder::JSStringFinalizerStruct::JSStringFinalizerStruct):
       
  7887         (JSC::RopeBuilder::JSStringFinalizerStruct::):
       
  7888         * runtime/UString.cpp:
       
  7889         (JSC::UString::toStrictUInt32):
       
  7890         (JSC::equal):
       
  7891         * runtime/UString.h:
       
  7892         (JSC::UString::isEmpty):
       
  7893         (JSC::UString::size):
       
  7894         * runtime/UStringImpl.cpp:
       
  7895         (JSC::URopeImpl::derefFibersNonRecursive):
       
  7896         (JSC::URopeImpl::destructNonRecursive):
       
  7897         * runtime/UStringImpl.h:
       
  7898         (JSC::UStringOrRopeImpl::isRope):
       
  7899         (JSC::UStringOrRopeImpl::length):
       
  7900         (JSC::UStringOrRopeImpl::ref):
       
  7901         (JSC::UStringOrRopeImpl::):
       
  7902         (JSC::UStringOrRopeImpl::operator new):
       
  7903         (JSC::UStringOrRopeImpl::UStringOrRopeImpl):
       
  7904         (JSC::UStringImpl::adopt):
       
  7905         (JSC::UStringImpl::createUninitialized):
       
  7906         (JSC::UStringImpl::tryCreateUninitialized):
       
  7907         (JSC::UStringImpl::data):
       
  7908         (JSC::UStringImpl::cost):
       
  7909         (JSC::UStringImpl::deref):
       
  7910         (JSC::UStringImpl::UStringImpl):
       
  7911         (JSC::UStringImpl::):
       
  7912         (JSC::URopeImpl::tryCreateUninitialized):
       
  7913         (JSC::URopeImpl::initializeFiber):
       
  7914         (JSC::URopeImpl::fiberCount):
       
  7915         (JSC::URopeImpl::fibers):
       
  7916         (JSC::URopeImpl::deref):
       
  7917         (JSC::URopeImpl::URopeImpl):
       
  7918         (JSC::URopeImpl::hasOneRef):
       
  7919         (JSC::UStringOrRopeImpl::deref):
       
  7920 
       
  7921 2010-02-15  Gabor Loki  <loki@webkit.org>
       
  7922 
       
  7923         Reviewed by Gavin Barraclough.
       
  7924 
       
  7925         Fix the SP at ctiOpThrowNotCaught on Thumb2 (JSVALUE32)
       
  7926         https://bugs.webkit.org/show_bug.cgi?id=34939
       
  7927 
       
  7928         * jit/JITStubs.cpp:
       
  7929 
       
  7930 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
       
  7931 
       
  7932         Reviewed by NOBODY (Build Fix!).
       
  7933 
       
  7934         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  7935 
       
  7936 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
       
  7937 
       
  7938         Reviewed by Oliver Hunt.
       
  7939 
       
  7940         Some general Rope related refactoring.
       
  7941 
       
  7942         Rename Rope::m_ropeLength to m_fiberCount, to be more descriptive.
       
  7943         Rename Rope::m_stringLength to simply m_length (since this is the
       
  7944         more conventional name for the length of a string).  Move append
       
  7945         behaviour out into a new RopeBuilder class, so that Rope no longer
       
  7946         needs any knowledge of the JSString or UString implementation.
       
  7947 
       
  7948         Make Rope no longer be nested within JSString.
       
  7949         (Rope now no-longer need reside within JSString.h, but leaving
       
  7950         the change of moving this out to a different header as a separate
       
  7951         change from these renames).
       
  7952 
       
  7953         * JavaScriptCore.exp:
       
  7954         * jit/JITOpcodes.cpp:
       
  7955         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
  7956         * runtime/JSString.cpp:
       
  7957         (JSC::Rope::destructNonRecursive):
       
  7958         (JSC::Rope::~Rope):
       
  7959         (JSC::JSString::resolveRope):
       
  7960         (JSC::JSString::toBoolean):
       
  7961         (JSC::JSString::getStringPropertyDescriptor):
       
  7962         * runtime/JSString.h:
       
  7963         (JSC::Rope::Fiber::Fiber):
       
  7964         (JSC::Rope::Fiber::deref):
       
  7965         (JSC::Rope::Fiber::ref):
       
  7966         (JSC::Rope::Fiber::refAndGetLength):
       
  7967         (JSC::Rope::Fiber::isRope):
       
  7968         (JSC::Rope::Fiber::rope):
       
  7969         (JSC::Rope::Fiber::isString):
       
  7970         (JSC::Rope::Fiber::string):
       
  7971         (JSC::Rope::Fiber::nonFiber):
       
  7972         (JSC::Rope::tryCreateUninitialized):
       
  7973         (JSC::Rope::append):
       
  7974         (JSC::Rope::fiberCount):
       
  7975         (JSC::Rope::length):
       
  7976         (JSC::Rope::fibers):
       
  7977         (JSC::Rope::Rope):
       
  7978         (JSC::Rope::operator new):
       
  7979         (JSC::):
       
  7980         (JSC::RopeBuilder::JSString):
       
  7981         (JSC::RopeBuilder::~JSString):
       
  7982         (JSC::RopeBuilder::length):
       
  7983         (JSC::RopeBuilder::canGetIndex):
       
  7984         (JSC::RopeBuilder::appendStringInConstruct):
       
  7985         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength):
       
  7986         (JSC::RopeBuilder::isRope):
       
  7987         (JSC::RopeBuilder::fiberCount):
       
  7988         (JSC::JSString::getStringPropertySlot):
       
  7989         * runtime/Operations.h:
       
  7990         (JSC::jsString):
       
  7991 
       
  7992 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
       
  7993 
       
  7994         Reviewed by NOBODY (Build fix).
       
  7995 
       
  7996         Add missing cast for !YARR (PPC) builds.
       
  7997 
       
  7998         * runtime/RegExp.cpp:
       
  7999         (JSC::RegExp::match):
       
  8000 
       
  8001 2010-02-14  Gavin Barraclough  <barraclough@apple.com>
       
  8002 
       
  8003         Reviewed by Darin Adler.
       
  8004 
       
  8005         https://bugs.webkit.org/show_bug.cgi?id=33731
       
  8006         Many false leaks in release builds due to PtrAndFlags
       
  8007 
       
  8008         StructureTransitionTable was effectively a smart pointer type,
       
  8009         one machine word in size and wholly contained as a member of
       
  8010         of Structure.  It either pointed to an actual table, or could
       
  8011         be used to describe a single transtion entry without use of a
       
  8012         table.
       
  8013 
       
  8014         This, however, worked by using a PtrAndFlags, which is not
       
  8015         compatible with the leaks tool.  Since there is no clear way to
       
  8016         obtain another bit for 'free' here, and since there are bits
       
  8017         available up in Structure, merge this functionality back up into
       
  8018         Structure.  Having this in a separate class was quite clean
       
  8019         from an enacapsulation perspective, but this solution doesn't
       
  8020         seem to bad - all table access is now intermediated through the
       
  8021         Structure::structureTransitionTableFoo methods, keeping the
       
  8022         optimization fairly well contained.
       
  8023 
       
  8024         This was the last use of PtrAndFlags, so removing the file too.
       
  8025 
       
  8026         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  8027         * bytecode/CodeBlock.h:
       
  8028         * runtime/Structure.cpp:
       
  8029         (JSC::Structure::Structure):
       
  8030         (JSC::Structure::~Structure):
       
  8031         (JSC::Structure::addPropertyTransitionToExistingStructure):
       
  8032         (JSC::Structure::addPropertyTransition):
       
  8033         (JSC::Structure::hasTransition):
       
  8034         * runtime/Structure.h:
       
  8035         (JSC::Structure::):
       
  8036         (JSC::Structure::structureTransitionTableContains):
       
  8037         (JSC::Structure::structureTransitionTableGet):
       
  8038         (JSC::Structure::structureTransitionTableHasTransition):
       
  8039         (JSC::Structure::structureTransitionTableRemove):
       
  8040         (JSC::Structure::structureTransitionTableAdd):
       
  8041         (JSC::Structure::structureTransitionTable):
       
  8042         (JSC::Structure::setStructureTransitionTable):
       
  8043         (JSC::Structure::singleTransition):
       
  8044         (JSC::Structure::setSingleTransition):
       
  8045         * runtime/StructureTransitionTable.h:
       
  8046         * wtf/PtrAndFlags.h: Removed.
       
  8047 
       
  8048 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
       
  8049 
       
  8050         Rubber Stamped by Geoff Garen.
       
  8051 
       
  8052         Bug 34948 - tryMakeString should fail on error in length calculation
       
  8053 
       
  8054         Ooops! - "bool overflow" argument should have been "bool& overflow".
       
  8055 
       
  8056         * runtime/UString.h:
       
  8057         (JSC::sumWithOverflow):
       
  8058         (JSC::tryMakeString):
       
  8059 
       
  8060 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
       
  8061 
       
  8062         Reviewed by NOBODY (Build Fix (pt 2!)).
       
  8063 
       
  8064         Some symbol names have changed, remove, will readd if required.
       
  8065 
       
  8066         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  8067 
       
  8068 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
       
  8069 
       
  8070         Reviewed by NOBODY (Build Fix (pt 1?)).
       
  8071 
       
  8072         Some symbol names have changed, remove, will readd if required.
       
  8073 
       
  8074         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  8075 
       
  8076 2010-02-15  Geoffrey Garen  <ggaren@apple.com>
       
  8077 
       
  8078         Reviewed by Oliver Hunt.
       
  8079 
       
  8080         Removed some mistaken code added in http://trac.webkit.org/changeset/53860.
       
  8081 
       
  8082         * API/APIShims.h:
       
  8083         (JSC::APICallbackShim::APICallbackShim):
       
  8084         (JSC::APICallbackShim::~APICallbackShim): No need to start/stop the
       
  8085         timeout checker when calling out from the API to the client; we want to
       
  8086         monitor the VM for timeouts, not the client. This mistake was harmless /
       
  8087         undetectable, since it's totally redundant with the APIEntryShim, which
       
  8088         also starts / stops the timeout checker.
       
  8089 
       
  8090 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
       
  8091 
       
  8092         Reviewed by Geoff Garen.
       
  8093 
       
  8094         Bug 34952 - String lengths in UString should be unsigned.
       
  8095         This matches WebCore::StringImpl, and better unifies behaviour throughout JSC.
       
  8096 
       
  8097         * JavaScriptCore.exp:
       
  8098         * bytecode/EvalCodeCache.h:
       
  8099         * runtime/Identifier.cpp:
       
  8100         (JSC::Identifier::equal):
       
  8101         * runtime/Identifier.h:
       
  8102         * runtime/JSGlobalObjectFunctions.cpp:
       
  8103         (JSC::globalFuncEscape):
       
  8104         * runtime/JSONObject.cpp:
       
  8105         (JSC::gap):
       
  8106         (JSC::Stringifier::indent):
       
  8107         * runtime/NumberPrototype.cpp:
       
  8108         (JSC::numberProtoFuncToFixed):
       
  8109         (JSC::numberProtoFuncToPrecision):
       
  8110         * runtime/RegExp.cpp:
       
  8111         (JSC::RegExp::match):
       
  8112         * runtime/StringPrototype.cpp:
       
  8113         (JSC::substituteBackreferencesSlow):
       
  8114         (JSC::stringProtoFuncReplace):
       
  8115         (JSC::stringProtoFuncSplit):
       
  8116         (JSC::trimString):
       
  8117         * runtime/UString.cpp:
       
  8118         (JSC::UString::UString):
       
  8119         (JSC::UString::from):
       
  8120         (JSC::UString::getCString):
       
  8121         (JSC::UString::ascii):
       
  8122         (JSC::UString::operator[]):
       
  8123         (JSC::UString::toStrictUInt32):
       
  8124         (JSC::UString::find):
       
  8125         (JSC::UString::rfind):
       
  8126         (JSC::UString::substr):
       
  8127         (JSC::operator<):
       
  8128         (JSC::operator>):
       
  8129         (JSC::compare):
       
  8130         (JSC::equal):
       
  8131         (JSC::UString::UTF8String):
       
  8132         * runtime/UString.h:
       
  8133         (JSC::UString::size):
       
  8134         (JSC::operator==):
       
  8135         * runtime/UStringImpl.cpp:
       
  8136         (JSC::UStringImpl::create):
       
  8137         * runtime/UStringImpl.h:
       
  8138         (JSC::UStringImpl::create):
       
  8139         (JSC::UStringImpl::size):
       
  8140         (JSC::UStringImpl::computeHash):
       
  8141         (JSC::UStringImpl::UStringImpl):
       
  8142 
       
  8143 2010-02-15  Gavin Barraclough  <barraclough@apple.com>
       
  8144 
       
  8145         Reviewed by Geoff Garen.
       
  8146 
       
  8147         Bug 34948 - tryMakeString should fail on error in length calculation
       
  8148 
       
  8149         The sum of the length of substrings could overflow.
       
  8150 
       
  8151         * runtime/UString.h:
       
  8152         (JSC::sumWithOverflow):
       
  8153         (JSC::tryMakeString):
       
  8154 
       
  8155 2010-02-15  Geoffrey Garen  <ggaren@apple.com>
       
  8156 
       
  8157         Reviewed by Oliver Hunt.
       
  8158 
       
  8159         Fixed <rdar://problem/7628524> Crash beneath JSGlobalContextRelease when
       
  8160         typing in Google search field with GuardMalloc/full page heap enabled
       
  8161 
       
  8162         * API/JSContextRef.cpp: Don't use APIEntryShim, since that requires
       
  8163         a JSGlobalData, which this function destroys. Do use setCurrentIdentifierTable
       
  8164         and JSLock instead, since those are the two features of APIEntryShim we
       
  8165         require.
       
  8166 
       
  8167 2010-02-15  Patrick Gansterer  <paroga@paroga.com>
       
  8168 
       
  8169         Reviewed by Laszlo Gombos.
       
  8170 
       
  8171         Added additional parameter to create_rvct_stubs 
       
  8172         for setting the offset of thunkReturnAddress.
       
  8173         https://bugs.webkit.org/show_bug.cgi?id=34657
       
  8174 
       
  8175         * create_rvct_stubs:
       
  8176         * jit/JITStubs.cpp:
       
  8177 
       
  8178 2010-02-15  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  8179 
       
  8180         Reviewed by Simon Hausmann.
       
  8181 
       
  8182         Fix QScriptValue::toIntXX methods.
       
  8183 
       
  8184         More ECMA Script compliance.
       
  8185 
       
  8186         [Qt] QScriptValue::toIntXX returns incorrect values
       
  8187         https://bugs.webkit.org/show_bug.cgi?id=34847
       
  8188 
       
  8189         * qt/api/qscriptvalue_p.h:
       
  8190         (QScriptValuePrivate::toInteger):
       
  8191         (QScriptValuePrivate::toInt32):
       
  8192         (QScriptValuePrivate::toUInt32):
       
  8193         (QScriptValuePrivate::toUInt16):
       
  8194         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
       
  8195         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
       
  8196         (tst_QScriptValue::toInteger_initData):
       
  8197         (tst_QScriptValue::toInteger_makeData):
       
  8198         (tst_QScriptValue::toInteger_test):
       
  8199         (tst_QScriptValue::toInt32_initData):
       
  8200         (tst_QScriptValue::toInt32_makeData):
       
  8201         (tst_QScriptValue::toInt32_test):
       
  8202         (tst_QScriptValue::toUInt32_initData):
       
  8203         (tst_QScriptValue::toUInt32_makeData):
       
  8204         (tst_QScriptValue::toUInt32_test):
       
  8205         (tst_QScriptValue::toUInt16_initData):
       
  8206         (tst_QScriptValue::toUInt16_makeData):
       
  8207         (tst_QScriptValue::toUInt16_test):
       
  8208 
       
  8209 2010-02-14  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
  8210 
       
  8211         Reviewed by Adam Barth.
       
  8212 
       
  8213         Implement NEVER_INLINE and NO_RETURN for RVCT
       
  8214         https://bugs.webkit.org/show_bug.cgi?id=34740
       
  8215 
       
  8216         * wtf/AlwaysInline.h:
       
  8217 
       
  8218 2010-02-12  Gavin Barraclough  <barraclough@apple.com>
       
  8219 
       
  8220         Reviewed by Oliver Hunt.
       
  8221 
       
  8222         https://bugs.webkit.org/show_bug.cgi?id=33731
       
  8223         Remove uses of PtrAndFlags from JIT data stuctures.
       
  8224 
       
  8225         These break the OS X Leaks tool.  Free up a bit in CallLinkInfo, and invalid
       
  8226         permutation of pointer states in MethodCallLinkInfo to represent the removed bits.
       
  8227 
       
  8228         * bytecode/CodeBlock.h:
       
  8229         (JSC::CallLinkInfo::seenOnce):
       
  8230         (JSC::CallLinkInfo::setSeen):
       
  8231         (JSC::MethodCallLinkInfo::MethodCallLinkInfo):
       
  8232         (JSC::MethodCallLinkInfo::seenOnce):
       
  8233         (JSC::MethodCallLinkInfo::setSeen):
       
  8234         * jit/JIT.cpp:
       
  8235         (JSC::JIT::unlinkCall):
       
  8236         * jit/JITPropertyAccess.cpp:
       
  8237         (JSC::JIT::patchMethodCallProto):
       
  8238         * runtime/UString.h:
       
  8239 
       
  8240 2010-02-12  Gavin Barraclough  <barraclough@apple.com>
       
  8241 
       
  8242         Reviewed by Darin Adler.
       
  8243 
       
  8244         https://bugs.webkit.org/show_bug.cgi?id=33731
       
  8245         Many false leaks in release builds due to PtrAndFlags
       
  8246 
       
  8247         Remove UntypedPtrAndBitfield (similar to PtrAndFlags) in UStringImpl,
       
  8248         and steal bits from the refCount instead.
       
  8249 
       
  8250         * runtime/UStringImpl.cpp:
       
  8251         (JSC::UStringImpl::baseSharedBuffer):
       
  8252         (JSC::UStringImpl::~UStringImpl):
       
  8253         * runtime/UStringImpl.h:
       
  8254         (JSC::UStringImpl::cost):
       
  8255         (JSC::UStringImpl::isIdentifier):
       
  8256         (JSC::UStringImpl::setIsIdentifier):
       
  8257         (JSC::UStringImpl::ref):
       
  8258         (JSC::UStringImpl::deref):
       
  8259         (JSC::UStringImpl::UStringImpl):
       
  8260         (JSC::UStringImpl::bufferOwnerString):
       
  8261         (JSC::UStringImpl::bufferOwnership):
       
  8262         (JSC::UStringImpl::isStatic):
       
  8263         (JSC::UStringImpl::):
       
  8264 
       
  8265 2010-02-12  Geoffrey Garen  <ggaren@apple.com>
       
  8266 
       
  8267         Reviewed by Darin Adler.
       
  8268 
       
  8269         Removed an unnecessary data dependency from my last patch.
       
  8270 
       
  8271         * runtime/SmallStrings.cpp:
       
  8272         (JSC::SmallStrings::markChildren): Since isAnyStringMarked being false
       
  8273         is a condition of entering the loop, we can just use '=' instead of '|='.
       
  8274 
       
  8275 2010-02-12  Janne Koskinen  <janne.p.koskinen@digia.com>
       
  8276 
       
  8277         Reviewed by Tor Arne Vestbø.
       
  8278 
       
  8279         Additional refptr/passrefptr workarounds for WINSCW compiler
       
  8280         https://bugs.webkit.org/show_bug.cgi?id=28054
       
  8281 
       
  8282         * wtf/PassRefPtr.h:
       
  8283         (WTF::refIfNotNull):
       
  8284         (WTF::PassRefPtr::PassRefPtr):
       
  8285         (WTF::PassRefPtr::~PassRefPtr):
       
  8286         (WTF::PassRefPtr::clear):
       
  8287         (WTF::::operator):
       
  8288         * wtf/RefPtr.h:
       
  8289         (WTF::RefPtr::RefPtr):
       
  8290         (WTF::::operator):
       
  8291 
       
  8292 2010-02-12  Janne Koskinen  <janne.p.koskinen@digia.com>
       
  8293 
       
  8294         Reviewed by Tor Arne Vestbø.
       
  8295 
       
  8296         Additional refptr/passrefptr workarounds for WINSCW compiler
       
  8297         https://bugs.webkit.org/show_bug.cgi?id=28054
       
  8298 
       
  8299         * wtf/PassRefPtr.h:
       
  8300         (WTF::refIfNotNull):
       
  8301         (WTF::PassRefPtr::PassRefPtr):
       
  8302         (WTF::PassRefPtr::~PassRefPtr):
       
  8303         (WTF::PassRefPtr::clear):
       
  8304         (WTF::::operator):
       
  8305         * wtf/RefPtr.h:
       
  8306         (WTF::RefPtr::RefPtr):
       
  8307         (WTF::::operator):
       
  8308 
       
  8309 2010-02-12  Janne Koskinen  <janne.p.koskinen@digia.com>
       
  8310 
       
  8311         Reviewed by Tor Arne Vestbø.
       
  8312 
       
  8313         Additional refptr/passrefptr workarounds for WINSCW compiler
       
  8314         https://bugs.webkit.org/show_bug.cgi?id=28054
       
  8315 
       
  8316         * wtf/PassRefPtr.h:
       
  8317         (WTF::refIfNotNull):
       
  8318         (WTF::PassRefPtr::PassRefPtr):
       
  8319         (WTF::PassRefPtr::~PassRefPtr):
       
  8320         (WTF::PassRefPtr::clear):
       
  8321         (WTF::::operator):
       
  8322         * wtf/RefPtr.h:
       
  8323         (WTF::RefPtr::RefPtr):
       
  8324         (WTF::::operator):
       
  8325 
       
  8326 2010-02-12  Janne Koskinen  <janne.p.koskinen@digia.com>
       
  8327 
       
  8328         Reviewed by Simon Hausmann.
       
  8329 
       
  8330         Don't import the cmath functions from std:: for WINSCW.
       
  8331 
       
  8332         * wtf/MathExtras.h:
       
  8333 
       
  8334 2010-02-12  Kwang Yul Seo  <skyul@company100.net>
       
  8335 
       
  8336         Reviewed by Adam Barth.
       
  8337 
       
  8338         Typedef both JSChar and UChar to wchar_t in RVCT.
       
  8339         https://bugs.webkit.org/show_bug.cgi?id=34560
       
  8340 
       
  8341         Define both JSChar and UChar to wchar_t as the size
       
  8342         of wchar_t is 2 bytes in RVCT.
       
  8343 
       
  8344         * API/JSStringRef.h:
       
  8345         * wtf/unicode/qt4/UnicodeQt4.h:
       
  8346 
       
  8347 2010-02-11  Geoffrey Garen  <ggaren@apple.com>
       
  8348 
       
  8349         Reviewed by Oliver Hunt and Darin Adler.
       
  8350 
       
  8351         The rest of the fix for
       
  8352         https://bugs.webkit.org/show_bug.cgi?id=34864 | <rdar://problem/7594198>
       
  8353         Many objects left uncollected after visiting mail.google.com and closing
       
  8354         window
       
  8355         
       
  8356         Don't unconditionally hang onto small strings. Instead, hang onto all
       
  8357         small strings as long as any small string is still referenced.
       
  8358         
       
  8359         SunSpider reports no change.
       
  8360 
       
  8361         * runtime/Collector.cpp:
       
  8362         (JSC::Heap::markRoots): Mark the small strings cache last, so it can
       
  8363         check if anything else has kept any strings alive.
       
  8364 
       
  8365         * runtime/SmallStrings.cpp:
       
  8366         (JSC::isMarked):
       
  8367         (JSC::SmallStrings::markChildren): Only keep our strings alive if some
       
  8368         other reference to at least one of them exists, too.
       
  8369 
       
  8370 2010-02-11  Geoffrey Garen  <ggaren@apple.com>
       
  8371 
       
  8372         Reviewed by Gavin Barraclough.
       
  8373 
       
  8374         Some progress toward fixing
       
  8375         https://bugs.webkit.org/show_bug.cgi?id=34864 | <rdar://problem/7594198>
       
  8376         Many objects left uncollected after visiting mail.google.com and closing
       
  8377         window
       
  8378         
       
  8379         SunSpider reports no change.
       
  8380         
       
  8381         Keep weak references, rather than protected references, to cached for-in
       
  8382         property name enumerators.
       
  8383         
       
  8384         One problem with protected references is that a chain like 
       
  8385             [ gc object 1 ] => [ non-gc object ] => [ gc object 2 ]
       
  8386         takes two GC passes to break, since the first pass collects [ gc object 1 ],
       
  8387         releasing [ non-gc object ] and unprotecting [ gc object 2 ], and only
       
  8388         then can a second pass collect [ gc object 2 ].
       
  8389         
       
  8390         Another problem with protected references is that they can keep a bunch
       
  8391         of strings alive long after they're useful. In SunSpider and a few popular
       
  8392         websites, the size-speed tradeoff seems to favor weak references.
       
  8393 
       
  8394         * runtime/JSPropertyNameIterator.cpp:
       
  8395         (JSC::JSPropertyNameIterator::JSPropertyNameIterator): Moved this constructor
       
  8396         into the .cpp file, since it's not used elsewhere.
       
  8397 
       
  8398         (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): Added a destructor
       
  8399         to support our weak reference.
       
  8400 
       
  8401         * runtime/JSPropertyNameIterator.h:
       
  8402         (JSC::Structure::setEnumerationCache):
       
  8403         (JSC::Structure::clearEnumerationCache):
       
  8404         (JSC::Structure::enumerationCache): Added a function for clearing a
       
  8405         Structure's enumeration cache, used by our new destructor. Also fixed
       
  8406         indentation to match the rest of the file.
       
  8407 
       
  8408         * runtime/Structure.h: Changed from protected pointer to weak pointer.
       
  8409 
       
  8410 2010-02-11  Chris Rogers  <crogers@google.com>
       
  8411 
       
  8412         Reviewed by David Levin.
       
  8413 
       
  8414         audio engine: add Complex number class
       
  8415         https://bugs.webkit.org/show_bug.cgi?id=34538
       
  8416 
       
  8417         * wtf/Complex.h: Added.
       
  8418         (WebCore::complexFromMagnitudePhase):
       
  8419 
       
  8420 2010-02-10  Geoffrey Garen  <ggaren@apple.com>
       
  8421 
       
  8422         Reviewed by Oliver Hunt.
       
  8423 
       
  8424         Added an SPI for asking about all the different live objects on the heap.
       
  8425         Useful for memory debugging.
       
  8426 
       
  8427         * JavaScriptCore.exp: Export the new SPI.
       
  8428 
       
  8429         * runtime/Collector.cpp:
       
  8430         (JSC::typeName): Use a little capitalization. Don't crash in the case of
       
  8431         a non-object cell, since it might just be an uninitialized cell.
       
  8432 
       
  8433         (JSC::Heap::objectTypeCounts): The new SPI.
       
  8434 
       
  8435         * runtime/Collector.h:
       
  8436         * runtime/CollectorHeapIterator.h:
       
  8437         (JSC::CollectorHeapIterator::advance):
       
  8438         (JSC::LiveObjectIterator::operator++):
       
  8439         (JSC::DeadObjectIterator::operator++):
       
  8440         (JSC::ObjectIterator::operator++): Made 2 tweaks to these iterators:
       
  8441         (1) Skip the last cell in the block, since it's a dummy sentinel, and
       
  8442         we don't want it to confuse the object count; (2) Fixed a logic error
       
  8443         in LiveObjectIterator that could cause it to iterate dead objects if
       
  8444         m_block were equal to m_heap.nextBlock and m_cell were less than
       
  8445         m_heap.nextCell. No test for this since I can't think of a way that this
       
  8446         could make WebKit behave badly.
       
  8447 
       
  8448 2010-02-11  Steve Block  <steveblock@google.com>
       
  8449 
       
  8450         Reviewed by Darin Adler.
       
  8451 
       
  8452         Guard cmath using declarations in MathExtras.h on Android
       
  8453         https://bugs.webkit.org/show_bug.cgi?id=34840
       
  8454 
       
  8455         Android does not provide these functions.
       
  8456 
       
  8457         * wtf/MathExtras.h:
       
  8458 
       
  8459 2010-02-08  Maciej Stachowiak  <mjs@apple.com>
       
  8460 
       
  8461         Reviewed by Cameron Zwarich.
       
  8462 
       
  8463         Restore ENABLE_RUBY flag so vendors can ship with Ruby disabled if they choose.
       
  8464         https://bugs.webkit.org/show_bug.cgi?id=34698
       
  8465 
       
  8466         * Configurations/FeatureDefines.xcconfig:
       
  8467 
       
  8468 2010-02-10  Kevin Watters  <kevinwatters@gmail.com>
       
  8469 
       
  8470         Reviewed by Kevin Ollivier.
       
  8471 
       
  8472         [wx] Add Windows complex text support and Mac support for containsCharacters.
       
  8473         
       
  8474         https://bugs.webkit.org/show_bug.cgi?id=34759
       
  8475 
       
  8476         * wscript:
       
  8477 
       
  8478 2010-02-10  Alexey Proskuryakov  <ap@apple.com>
       
  8479 
       
  8480         Addressing issues found by style bot.
       
  8481 
       
  8482         * wtf/ValueCheck.h: Renamed header guard to match final file name.
       
  8483 
       
  8484         * wtf/Vector.h: (WTF::::checkConsistency): Remove braces around a one-line clause.
       
  8485 
       
  8486 2010-02-09  Alexey Proskuryakov  <ap@apple.com>
       
  8487 
       
  8488         Reviewed by Geoffrey Garen.
       
  8489 
       
  8490         https://bugs.webkit.org/show_bug.cgi?id=34490
       
  8491         WebCore::ImageEventSender::dispatchPendingEvents() crashes in certain conditions
       
  8492 
       
  8493         * GNUmakefile.am:
       
  8494         * JavaScriptCore.gypi:
       
  8495         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
       
  8496         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  8497         Added ValueCheck.h.
       
  8498 
       
  8499         * wtf/ValueCheck.h: Added. Moved code out of HashTraits, since it would be awkward to
       
  8500         include that from Vector.h.
       
  8501         (WTF::ValueCheck::checkConsistency): Allow null pointers, those are pretty consistent.
       
  8502 
       
  8503         * wtf/HashTraits.h: Moved value checking code out of here.
       
  8504 
       
  8505         * wtf/HashTable.h: (WTF::::checkTableConsistencyExceptSize): Updated for the above changes.
       
  8506 
       
  8507         * wtf/Vector.h:
       
  8508         (WTF::::checkConsistency): Check all vector elements.
       
  8509         (WTF::ValueCheck): Support checking a Vector as an element in other containers. Currently
       
  8510         unused.
       
  8511 
       
  8512 2010-02-10  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  8513 
       
  8514         Reviewed by Simon Hausmann.
       
  8515 
       
  8516         Fix QScriptValue::toBool.
       
  8517 
       
  8518         Fix ECMA compliance in the QScriptValue for values like 0, NaN and
       
  8519         empty strings.
       
  8520 
       
  8521         [Qt] QScriptValue::toBool problem
       
  8522         https://bugs.webkit.org/show_bug.cgi?id=34793
       
  8523 
       
  8524         * qt/api/qscriptvalue_p.h:
       
  8525         (QScriptValuePrivate::toBool):
       
  8526         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
       
  8527         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
       
  8528         (tst_QScriptValue::toBool_initData):
       
  8529         (tst_QScriptValue::toBool_makeData):
       
  8530         (tst_QScriptValue::toBool_test):
       
  8531         (tst_QScriptValue::toBoolean_initData):
       
  8532         (tst_QScriptValue::toBoolean_makeData):
       
  8533         (tst_QScriptValue::toBoolean_test):
       
  8534 
       
  8535 2009-10-06  Yongjun Zhang  <yongjun.zhang@nokia.com>
       
  8536 
       
  8537         Reviewed by Simon Hausmann.
       
  8538 
       
  8539         Use derefIfNotNull() to work around WINSCW compiler forward declaration bug
       
  8540 
       
  8541         The compiler bug is reported at
       
  8542         https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812.
       
  8543 
       
  8544         The change should be reverted when the above bug is fixed in WINSCW compiler.
       
  8545 
       
  8546         https://bugs.webkit.org/show_bug.cgi?id=28054
       
  8547 
       
  8548 2009-10-06  Yongjun Zhang  <yongjun.zhang@nokia.com>
       
  8549 
       
  8550         Reviewed by Simon Hausmann.
       
  8551 
       
  8552         Get rid of WINSCW hack for UnSpecifiedBoolType
       
  8553 
       
  8554         Add parenthesis around (RefPtr::*UnspecifiedBoolType) to make the WINSCW
       
  8555         compiler work with the default UnSpecifiedBoolType() operator.
       
  8556 
       
  8557         https://bugs.webkit.org/show_bug.cgi?id=28054
       
  8558 
       
  8559         * wtf/RefPtr.h:
       
  8560 
       
  8561 2010-02-09  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  8562 
       
  8563         Reviewed by Simon Hausmann.
       
  8564 
       
  8565         New functions nullValue() and undefinedValue().
       
  8566 
       
  8567         [Qt] QScriptEngine should contain nullValue and undefinedValue methods
       
  8568         https://bugs.webkit.org/show_bug.cgi?id=34749
       
  8569 
       
  8570         * qt/api/qscriptengine.cpp:
       
  8571         (QScriptEngine::nullValue):
       
  8572         (QScriptEngine::undefinedValue):
       
  8573         * qt/api/qscriptengine.h:
       
  8574         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
       
  8575         (tst_QScriptEngine::nullValue):
       
  8576         (tst_QScriptEngine::undefinedValue):
       
  8577 
       
  8578 2010-02-09  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  8579 
       
  8580         Reviewed by Simon Hausmann.
       
  8581 
       
  8582         Fixes for QScriptValue::toNumber().
       
  8583 
       
  8584         Fix ECMA compliance in QScriptValue for values unbound
       
  8585         to a QScriptEngine.
       
  8586 
       
  8587         [Qt] QScriptValue::toNumber() is broken
       
  8588         https://bugs.webkit.org/show_bug.cgi?id=34592
       
  8589 
       
  8590         * qt/api/qscriptvalue_p.h:
       
  8591         (QScriptValuePrivate::toNumber):
       
  8592         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
       
  8593         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
       
  8594         (tst_QScriptValue::toNumber_initData):
       
  8595         (tst_QScriptValue::toNumber_makeData):
       
  8596         (tst_QScriptValue::toNumber_test):
       
  8597 
       
  8598 2010-02-09  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  8599 
       
  8600         Reviewed by Simon Hausmann.
       
  8601 
       
  8602         Fix QScriptValue::isNumber().
       
  8603 
       
  8604         The isNumber() should return 'true' if the value is in the CNumber
       
  8605         state.
       
  8606 
       
  8607         [Qt] QScriptValue::isNumber() returns an incorrect value
       
  8608         https://bugs.webkit.org/show_bug.cgi?id=34575
       
  8609 
       
  8610         * qt/api/qscriptvalue_p.h:
       
  8611         (QScriptValuePrivate::isNumber):
       
  8612         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
       
  8613         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
       
  8614         (tst_QScriptValue::isNumber_initData):
       
  8615         (tst_QScriptValue::isNumber_makeData):
       
  8616         (tst_QScriptValue::isNumber_test):
       
  8617 
       
  8618 2010-02-09  Geoffrey Garen  <ggaren@apple.com>
       
  8619 
       
  8620         Reviewed by Oliver Hunt.
       
  8621 
       
  8622         Small refactoring to the small strings cache to allow it to be cleared
       
  8623         dynamically.
       
  8624 
       
  8625         * runtime/SmallStrings.cpp:
       
  8626         (JSC::SmallStrings::SmallStrings):
       
  8627         (JSC::SmallStrings::clear):
       
  8628         * runtime/SmallStrings.h: Moved initialization code into a shared function,
       
  8629         and changed the constructor to call it.
       
  8630 
       
  8631 2010-02-09  Gavin Barraclough  <barraclough@apple.com>
       
  8632 
       
  8633         Rubber Stamped by Geoff Garen.
       
  8634 
       
  8635         Rename StringBuilder::release && JSStringBuilder::releaseJSString
       
  8636         to 'build()'.
       
  8637 
       
  8638         * runtime/ArrayPrototype.cpp:
       
  8639         (JSC::arrayProtoFuncToLocaleString):
       
  8640         (JSC::arrayProtoFuncJoin):
       
  8641         * runtime/Executable.cpp:
       
  8642         (JSC::FunctionExecutable::paramString):
       
  8643         * runtime/FunctionConstructor.cpp:
       
  8644         (JSC::constructFunction):
       
  8645         * runtime/JSGlobalObjectFunctions.cpp:
       
  8646         (JSC::encode):
       
  8647         (JSC::decode):
       
  8648         (JSC::globalFuncEscape):
       
  8649         (JSC::globalFuncUnescape):
       
  8650         * runtime/JSONObject.cpp:
       
  8651         (JSC::Stringifier::stringify):
       
  8652         * runtime/JSStringBuilder.h:
       
  8653         (JSC::JSStringBuilder::build):
       
  8654         * runtime/LiteralParser.cpp:
       
  8655         (JSC::LiteralParser::Lexer::lexString):
       
  8656         * runtime/NumberPrototype.cpp:
       
  8657         (JSC::integerPartNoExp):
       
  8658         (JSC::numberProtoFuncToFixed):
       
  8659         * runtime/StringBuilder.h:
       
  8660         (JSC::StringBuilder::build):
       
  8661 
       
  8662 2010-02-09  John Sullivan  <sullivan@apple.com>
       
  8663 
       
  8664         https://bugs.webkit.org/show_bug.cgi?id=34772
       
  8665         Overzealous new assertion in URStringImpl::adopt()
       
  8666 
       
  8667         Reviewed by Adam Barth.
       
  8668 
       
  8669         * runtime/UStringImpl.h:
       
  8670         (JSC::UStringImpl::adopt):
       
  8671         Only assert that vector.data() is non-zero if vector.size() is non-zero.
       
  8672 
       
  8673 2010-02-09  Nikolas Zimmermann  <nzimmermann@rim.com>
       
  8674 
       
  8675         Not reviewed. Try to fix build problem on SnowLeopard slaves to bring them back.
       
  8676 
       
  8677         * API/JSClassRef.cpp:
       
  8678         (tryCreateStringFromUTF8): Mark method as 'static inline' to suppress "warning: no previous prototype for ..."
       
  8679 
       
  8680 2010-02-09  Gavin Barraclough  <barraclough@apple.com>
       
  8681 
       
  8682         Reviewed by Oliver Hunt.
       
  8683 
       
  8684         Three small string fixes:
       
  8685         (1) StringBuilder::release should CRASH if the buffer allocation failed.
       
  8686         (2) Remove weird, dead code from JSString::tryGetValue, replace with an ASSERT.
       
  8687         (3) Move UString::createFromUTF8 out to the API, as tryCreateStringFromUTF8.
       
  8688             This is only used from the API, and (now) unlike other UString::create
       
  8689             methods may return UString::null() to indicate failure cases.  Better
       
  8690             handle these in the API.
       
  8691 
       
  8692         * API/JSClassRef.cpp:
       
  8693         (tryCreateStringFromUTF8):
       
  8694         (OpaqueJSClass::OpaqueJSClass):
       
  8695         (OpaqueJSClassContextData::OpaqueJSClassContextData):
       
  8696         * runtime/JSString.h:
       
  8697         (JSC::Fiber::tryGetValue):
       
  8698         * runtime/StringBuilder.h:
       
  8699         (JSC::StringBuilder::release):
       
  8700         * runtime/UString.cpp:
       
  8701         (JSC::UString::UString):
       
  8702         (JSC::UString::from):
       
  8703         (JSC::UString::find):
       
  8704         * runtime/UString.h:
       
  8705 
       
  8706 2010-02-09  Janne Koskinen  <janne.p.koskinen@digia.com>
       
  8707 
       
  8708         Reviewed by Laszlo Gombos.
       
  8709 
       
  8710         [Qt] use nanval() for Symbian as nonInlineNaN
       
  8711         https://bugs.webkit.org/show_bug.cgi?id=34170
       
  8712 
       
  8713         numeric_limits<double>::quiet_NaN is broken in Symbian
       
  8714         causing NaN to be evaluated as a number.
       
  8715 
       
  8716         * runtime/JSValue.cpp:
       
  8717         (JSC::nonInlineNaN):
       
  8718 
       
  8719 2010-02-09  Tamas Szirbucz  <szirbucz@inf.u-szeged.hu>
       
  8720 
       
  8721         Reviewed by Gavin Barraclough.
       
  8722 
       
  8723         Add a soft modulo operation to ARM JIT using a trampoline function.
       
  8724         The performance progression is about ~1.8% on ARMv7
       
  8725         https://bugs.webkit.org/show_bug.cgi?id=34424
       
  8726 
       
  8727         Developed in cooperation with Gabor Loki.
       
  8728 
       
  8729         * jit/JIT.h:
       
  8730         * jit/JITArithmetic.cpp:
       
  8731         (JSC::JIT::emit_op_mod):
       
  8732         (JSC::JIT::emitSlow_op_mod):
       
  8733         * jit/JITOpcodes.cpp:
       
  8734         (JSC::JIT::softModulo):
       
  8735         * jit/JITStubs.h:
       
  8736         (JSC::JITThunks::ctiSoftModulo):
       
  8737         * wtf/Platform.h:
       
  8738 
       
  8739 2010-02-08  Gavin Barraclough  <barraclough@apple.com>
       
  8740 
       
  8741         Reviewed by NOBODY (SL/win build fixes).
       
  8742 
       
  8743         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  8744         * runtime/StringPrototype.cpp:
       
  8745 
       
  8746 2010-02-08  Gavin Barraclough  <barraclough@apple.com>
       
  8747 
       
  8748         Reviewed by Oliver Hunt
       
  8749 
       
  8750         Make String.replace throw an exception on out-of-memory, rather than
       
  8751         returning a null (err, empty-ish) string.  Move String::replaceRange
       
  8752         and String::spliceSubstringsWithSeparators out to StringPrototype -
       
  8753         these were fairly specific use anyway, and we can better integrate
       
  8754         throwing the JS expcetion this way.
       
  8755 
       
  8756         Also removes redundant assignment operator from UString.
       
  8757 
       
  8758         * JavaScriptCore.exp:
       
  8759         * runtime/StringPrototype.cpp:
       
  8760         (JSC::StringRange::StringRange):
       
  8761         (JSC::jsSpliceSubstringsWithSeparators):
       
  8762         (JSC::jsReplaceRange):
       
  8763         (JSC::stringProtoFuncReplace):
       
  8764         * runtime/UString.cpp:
       
  8765         * runtime/UString.h:
       
  8766 
       
  8767 2010-02-08  Kwang Yul Seo  <skyul@company100.net>
       
  8768 
       
  8769         Reviewed by Eric Seidel.
       
  8770 
       
  8771         [BREWMP] Undefine WTF_OS_WINDOWS and WTF_PLATFORM_WIN
       
  8772         https://bugs.webkit.org/show_bug.cgi?id=34561
       
  8773 
       
  8774         As the binary for simulator is built with MSVC 2005,
       
  8775         WTF_OS_WINDOWS and WTF_PLATFORM_WIN are defined.
       
  8776         Undefine them as we don't target Windows.
       
  8777 
       
  8778         * wtf/Platform.h:
       
  8779 
       
  8780 2010-02-08  Chris Rogers  <crogers@google.com>
       
  8781 
       
  8782         Reviewed by Darin Adler.
       
  8783 
       
  8784         audio engine: add Vector3 class
       
  8785         https://bugs.webkit.org/show_bug.cgi?id=34548
       
  8786 
       
  8787         * wtf/Vector3.h: Added.
       
  8788         (WebCore::Vector3::Vector3):
       
  8789         (WebCore::Vector3::abs):
       
  8790         (WebCore::Vector3::isZero):
       
  8791         (WebCore::Vector3::normalize):
       
  8792         (WebCore::Vector3::x):
       
  8793         (WebCore::Vector3::y):
       
  8794         (WebCore::Vector3::z):
       
  8795         (WebCore::operator+):
       
  8796         (WebCore::operator-):
       
  8797         (WebCore::operator*):
       
  8798         (WebCore::dot):
       
  8799         (WebCore::cross):
       
  8800         (WebCore::distance):
       
  8801 
       
  8802 2010-02-08  Oliver Hunt  <oliver@apple.com>
       
  8803 
       
  8804         Reviewed by Gavin Barraclough.
       
  8805 
       
  8806         Fix warning in clang++
       
  8807 
       
  8808         * runtime/Structure.h:
       
  8809         (JSC::Structure::propertyStorageSize):
       
  8810 
       
  8811 2010-02-08  Gavin Barraclough  <barraclough@apple.com>
       
  8812 
       
  8813         Reviewed by Geoff Garen.
       
  8814 
       
  8815         Make makeString CRASH if we fail to allocate a string.
       
  8816 
       
  8817         (tryMakeString or jsMakeNontrivialString can be used where we
       
  8818         expect allocation may fail and want to handle the error).
       
  8819 
       
  8820         * runtime/JSStringBuilder.h:
       
  8821         (JSC::jsMakeNontrivialString):
       
  8822         * runtime/UString.h:
       
  8823         (JSC::tryMakeString):
       
  8824         (JSC::makeString):
       
  8825 
       
  8826 2010-02-08  Gavin Barraclough  <barraclough@apple.com>
       
  8827 
       
  8828         Rubber Stamped by Oliver Hunt.
       
  8829 
       
  8830         Remove a couple of unnecesary C-style casts spotted by Darin.
       
  8831 
       
  8832         * runtime/JSGlobalObjectFunctions.cpp:
       
  8833         (JSC::encode):
       
  8834         (JSC::globalFuncEscape):
       
  8835 
       
  8836 2010-02-08  Gavin Barraclough  <barraclough@apple.com>
       
  8837 
       
  8838         Reviewed by Geoff Garen.
       
  8839 
       
  8840         Switch some more StringBuilder/jsNontrivialString code to use
       
  8841         JSStringBuilder/jsMakeNontrivialString - these methods will
       
  8842         throw an exception if we hit out-of-memory, rather than just
       
  8843         CRASHing.
       
  8844 
       
  8845         * runtime/FunctionPrototype.cpp:
       
  8846         (JSC::functionProtoFuncToString):
       
  8847         * runtime/JSGlobalObjectFunctions.cpp:
       
  8848         (JSC::encode):
       
  8849         (JSC::decode):
       
  8850         (JSC::globalFuncEscape):
       
  8851 
       
  8852 2010-02-08  Gavin Barraclough  <barraclough@apple.com>
       
  8853 
       
  8854         Reviewed by Sam Weinig.
       
  8855 
       
  8856         Use an empty identifier instead of a null identifier for parse
       
  8857         tokens without an identifier.
       
  8858 
       
  8859         This helps encapsulate the null UStringImpl within UString.
       
  8860 
       
  8861         * parser/Grammar.y:
       
  8862         * parser/NodeConstructors.h:
       
  8863         (JSC::ContinueNode::ContinueNode):
       
  8864         (JSC::BreakNode::BreakNode):
       
  8865         (JSC::ForInNode::ForInNode):
       
  8866         * runtime/CommonIdentifiers.cpp:
       
  8867         (JSC::CommonIdentifiers::CommonIdentifiers):
       
  8868         * runtime/CommonIdentifiers.h:
       
  8869         * runtime/FunctionPrototype.cpp:
       
  8870         (JSC::FunctionPrototype::FunctionPrototype):
       
  8871 
       
  8872 2010-02-08  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
       
  8873 
       
  8874         Build fix for make distcheck.
       
  8875 
       
  8876         * GNUmakefile.am:
       
  8877 
       
  8878 2010-02-08  Simon Hausmann  <simon.hausmann@nokia.com>
       
  8879 
       
  8880         Unreviewed RVCT build fix.
       
  8881 
       
  8882         Similar to r54391, don't import the cmath functions from std:: for RVCT.
       
  8883 
       
  8884         * wtf/MathExtras.h:
       
  8885 
       
  8886 2010-02-05  Gavin Barraclough  <barraclough@apple.com>
       
  8887 
       
  8888         Reviewed by Geoff Garen.
       
  8889 
       
  8890         Change UStringImpl::create to CRASH if the string cannot be allocated,
       
  8891         rather than returning a null string (which will behave like a zero-length
       
  8892         string if used).
       
  8893 
       
  8894         Also move createRep function from UString to become new overloaded
       
  8895         UStringImpl::create methods.  In doing so, bring their behaviour closer to
       
  8896         being in line with WebCore::StringImpl, in removing the behaviour that they
       
  8897         can be used to produce null UStrings (ASSERT the char* provided is non-null).
       
  8898         This behaviour of converting null C-strings to null UStrings is inefficient
       
  8899         (cmompared to just using UString::null()), incompatible with WebCore::StringImpl's
       
  8900         behaviour, and may generate unexpected behaviour, since in many cases a null
       
  8901         UString can be used like an empty string.
       
  8902 
       
  8903         With these changes UStringImpl need not have a concept of null impls, we can
       
  8904         start transitioning this to become an implementation detail of UString, that
       
  8905         internally it chooses to use a null-object rather than an actually zero impl
       
  8906         pointer.
       
  8907 
       
  8908         * JavaScriptCore.exp:
       
  8909         * debugger/Debugger.cpp:
       
  8910         (JSC::Debugger::recompileAllJSFunctions):
       
  8911         * debugger/DebuggerCallFrame.cpp:
       
  8912         (JSC::DebuggerCallFrame::calculatedFunctionName):
       
  8913         * parser/Parser.cpp:
       
  8914         (JSC::Parser::parse):
       
  8915         * profiler/Profile.cpp:
       
  8916         (JSC::Profile::Profile):
       
  8917         * profiler/ProfileGenerator.cpp:
       
  8918         (JSC::ProfileGenerator::stopProfiling):
       
  8919         * runtime/Error.cpp:
       
  8920         (JSC::Error::create):
       
  8921         (JSC::throwError):
       
  8922         * runtime/ExceptionHelpers.cpp:
       
  8923         (JSC::createError):
       
  8924         * runtime/Identifier.cpp:
       
  8925         (JSC::Identifier::add):
       
  8926         * runtime/PropertyNameArray.cpp:
       
  8927         (JSC::PropertyNameArray::add):
       
  8928         * runtime/UString.cpp:
       
  8929         (JSC::initializeUString):
       
  8930         (JSC::UString::UString):
       
  8931         (JSC::UString::operator=):
       
  8932         * runtime/UString.h:
       
  8933         (JSC::UString::isNull):
       
  8934         (JSC::UString::null):
       
  8935         (JSC::UString::rep):
       
  8936         (JSC::UString::UString):
       
  8937         * runtime/UStringImpl.cpp:
       
  8938         (JSC::UStringImpl::create):
       
  8939         * runtime/UStringImpl.h:
       
  8940 
       
  8941 2010-02-05  Kwang Yul Seo  <skyul@company100.net>
       
  8942 
       
  8943         Reviewed by Eric Seidel.
       
  8944 
       
  8945         [BREWMP] Define SYSTEM_MALLOC 1
       
  8946         https://bugs.webkit.org/show_bug.cgi?id=34640
       
  8947 
       
  8948         Make BREWMP use system malloc because FastMalloc is not ported.
       
  8949 
       
  8950         * wtf/Platform.h:
       
  8951 
       
  8952 2010-02-05  Kwang Yul Seo  <skyul@company100.net>
       
  8953 
       
  8954         Reviewed by Alexey Proskuryakov.
       
  8955 
       
  8956         Don't call CRASH() in fastMalloc and fastCalloc when the requested memory size is 0
       
  8957         https://bugs.webkit.org/show_bug.cgi?id=34569
       
  8958 
       
  8959         With USE_SYSTEM_MALLOC=1, fastMalloc and fastCalloc call CRASH()
       
  8960         if the return value of malloc and calloc is 0.
       
  8961         
       
  8962         However, these functions can return 0 when the request size is 0.
       
  8963         Libc manual says, "If size is 0, then malloc() returns either NULL,
       
  8964         or a unique pointer value that can later be successfully passed to free()."
       
  8965         Though malloc returns a unique pointer in most systems,
       
  8966         0 can be returned in some systems. For instance, BREW's MALLOC returns 0
       
  8967         when size is 0.
       
  8968 
       
  8969         If malloc or calloc returns 0 due to allocation size, increase the size
       
  8970         to 1 and try again.
       
  8971 
       
  8972         * wtf/FastMalloc.cpp:
       
  8973         (WTF::fastMalloc):
       
  8974         (WTF::fastCalloc):
       
  8975 
       
  8976 2010-02-04  Mark Rowe  <mrowe@apple.com>
       
  8977 
       
  8978         Reviewed by Timothy Hatcher.
       
  8979 
       
  8980         Build fix.  Remove a symbol corresponding to an inline function from the linker export
       
  8981         file to prevent a weak external failure.
       
  8982 
       
  8983         * JavaScriptCore.xcodeproj/project.pbxproj: Accommodate rename of script.
       
  8984 
       
  8985 2010-02-04  Daniel Bates  <dbates@webkit.org>
       
  8986 
       
  8987         [Qt] Unreviewed, build fix for Qt bot.
       
  8988 
       
  8989         * runtime/JSStringBuilder.h: Changed #include <X.h> notation #include "X.h".
       
  8990 
       
  8991 2010-02-04  Geoffrey Garen  <ggaren@apple.com>
       
  8992 
       
  8993         Reviewed by Oliver Hunt.
       
  8994 
       
  8995         Clearing a WeakGCPtr is weird
       
  8996         https://bugs.webkit.org/show_bug.cgi?id=34627
       
  8997 
       
  8998         Added a WeakGCPtr::clear interface.
       
  8999         
       
  9000         As discussed in https://bugs.webkit.org/show_bug.cgi?id=33383, the old
       
  9001         interface made it pretty weird for a client to conditionally clear a
       
  9002         WeakGCPtr, which is exactly what clients want to do when objects are
       
  9003         finalized.
       
  9004 
       
  9005         * API/JSClassRef.cpp:
       
  9006         (clearReferenceToPrototype): Use the new WeakGCPtr::clear() interface. 
       
  9007 
       
  9008         * runtime/WeakGCPtr.h:
       
  9009         (JSC::WeakGCPtr::clear): Added an interface for clearing a WeakGCPtr,
       
  9010         iff its current value is the value passed in. It's cumbersome for the
       
  9011         client to do this test, since WeakGCPtr sometimes pretends to be null.
       
  9012 
       
  9013 2010-02-04  Geoffrey Garen  <ggaren@apple.com>
       
  9014 
       
  9015         Build fix: export a header.
       
  9016 
       
  9017         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  9018 
       
  9019 2010-02-04  Gavin Barraclough  <barraclough@apple.com>
       
  9020 
       
  9021         Reviewed by Oliver Hunt.
       
  9022 
       
  9023         Add a JSStringBuilder class (similar-to, and derived-from StringBuilder) to
       
  9024         construct JSStrings, throwing a JS exception should we run out of memory whilst
       
  9025         allocating storage for the string.
       
  9026 
       
  9027         Similarly, add jsMakeNontrivialString methods to use in cases where previously
       
  9028         we were calling makeString & passing the result to jsNontrivialString.  Again,
       
  9029         these new methods throw if we hit an out of memory condition.
       
  9030 
       
  9031         Move throwOutOfMemoryError into ExceptionHelpers, to make it more widely available.
       
  9032 
       
  9033         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  9034         * runtime/ArrayPrototype.cpp:
       
  9035         (JSC::arrayProtoFuncToString):
       
  9036         (JSC::arrayProtoFuncToLocaleString):
       
  9037         (JSC::arrayProtoFuncJoin):
       
  9038         * runtime/DateConstructor.cpp:
       
  9039         (JSC::callDate):
       
  9040         * runtime/DatePrototype.cpp:
       
  9041         (JSC::dateProtoFuncToString):
       
  9042         (JSC::dateProtoFuncToUTCString):
       
  9043         (JSC::dateProtoFuncToGMTString):
       
  9044         * runtime/ErrorPrototype.cpp:
       
  9045         (JSC::errorProtoFuncToString):
       
  9046         * runtime/ExceptionHelpers.cpp:
       
  9047         (JSC::throwOutOfMemoryError):
       
  9048         * runtime/ExceptionHelpers.h:
       
  9049         * runtime/JSStringBuilder.h: Added.
       
  9050         (JSC::JSStringBuilder::releaseJSString):
       
  9051         (JSC::jsMakeNontrivialString):
       
  9052         * runtime/NumberPrototype.cpp:
       
  9053         (JSC::numberProtoFuncToPrecision):
       
  9054         * runtime/ObjectPrototype.cpp:
       
  9055         (JSC::objectProtoFuncToString):
       
  9056         * runtime/Operations.cpp:
       
  9057         * runtime/Operations.h:
       
  9058         * runtime/RegExpPrototype.cpp:
       
  9059         (JSC::regExpProtoFuncToString):
       
  9060         * runtime/StringBuilder.h:
       
  9061         (JSC::StringBuilder::append):
       
  9062         * runtime/StringPrototype.cpp:
       
  9063         (JSC::stringProtoFuncBig):
       
  9064         (JSC::stringProtoFuncSmall):
       
  9065         (JSC::stringProtoFuncBlink):
       
  9066         (JSC::stringProtoFuncBold):
       
  9067         (JSC::stringProtoFuncFixed):
       
  9068         (JSC::stringProtoFuncItalics):
       
  9069         (JSC::stringProtoFuncStrike):
       
  9070         (JSC::stringProtoFuncSub):
       
  9071         (JSC::stringProtoFuncSup):
       
  9072         (JSC::stringProtoFuncFontcolor):
       
  9073         (JSC::stringProtoFuncFontsize):
       
  9074         (JSC::stringProtoFuncAnchor):
       
  9075 
       
  9076 2010-02-04  Steve Falkenburg  <sfalken@apple.com>
       
  9077 
       
  9078         Windows build fix.
       
  9079 
       
  9080         * wtf/MathExtras.h:
       
  9081 
       
  9082 2010-02-04  Darin Adler  <darin@apple.com>
       
  9083 
       
  9084         Reviewed by David Levin.
       
  9085 
       
  9086         Make MathExtras.h compatible with <cmath>
       
  9087         https://bugs.webkit.org/show_bug.cgi?id=34618
       
  9088 
       
  9089         * wtf/MathExtras.h: Include <cmath> instead of <math.h>.
       
  9090         Use "using" as we do elsewhere in WTF for the four functions from <cmath>
       
  9091         we want to use without the prefix. Later we could consider making the std
       
  9092         explicit at call sites instead.
       
  9093 
       
  9094 2010-02-04  Tamas Szirbucz  <szirbucz@inf.u-szeged.hu>
       
  9095 
       
  9096         Reviewed by Gavin Barraclough.
       
  9097 
       
  9098         Use an easily appendable structure for trampolines instead of pointer parameters.
       
  9099         https://bugs.webkit.org/show_bug.cgi?id=34424
       
  9100 
       
  9101         * assembler/ARMAssembler.cpp:
       
  9102         (JSC::ARMAssembler::executableCopy):
       
  9103         * jit/JIT.h:
       
  9104         (JSC::JIT::compileCTIMachineTrampolines):
       
  9105         * jit/JITOpcodes.cpp:
       
  9106         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
  9107         * jit/JITStubs.cpp:
       
  9108         (JSC::JITThunks::JITThunks):
       
  9109         * jit/JITStubs.h:
       
  9110         (JSC::JITThunks::ctiStringLengthTrampoline):
       
  9111         (JSC::JITThunks::ctiVirtualCallLink):
       
  9112         (JSC::JITThunks::ctiVirtualCall):
       
  9113         (JSC::JITThunks::ctiNativeCallThunk):
       
  9114 
       
  9115 2010-02-04  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  9116 
       
  9117         Reviewed by Simon Hausmann.
       
  9118 
       
  9119         Increase test coverage for the QScriptValue.
       
  9120 
       
  9121         https://bugs.webkit.org/show_bug.cgi?id=34533
       
  9122 
       
  9123         * qt/tests/qscriptvalue/qscriptvalue.pro:
       
  9124         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
       
  9125         (tst_QScriptValue::tst_QScriptValue):
       
  9126         (tst_QScriptValue::~tst_QScriptValue):
       
  9127         (tst_QScriptValue::dataHelper):
       
  9128         (tst_QScriptValue::newRow):
       
  9129         (tst_QScriptValue::testHelper):
       
  9130         (tst_QScriptValue::ctor):
       
  9131         * qt/tests/qscriptvalue/tst_qscriptvalue.h: Added.
       
  9132         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: Added.
       
  9133         (tst_QScriptValue::initScriptValues):
       
  9134         (tst_QScriptValue::isValid_initData):
       
  9135         (tst_QScriptValue::isValid_makeData):
       
  9136         (tst_QScriptValue::isValid_test):
       
  9137         (tst_QScriptValue::isBool_initData):
       
  9138         (tst_QScriptValue::isBool_makeData):
       
  9139         (tst_QScriptValue::isBool_test):
       
  9140         (tst_QScriptValue::isBoolean_initData):
       
  9141         (tst_QScriptValue::isBoolean_makeData):
       
  9142         (tst_QScriptValue::isBoolean_test):
       
  9143         (tst_QScriptValue::isFunction_initData):
       
  9144         (tst_QScriptValue::isFunction_makeData):
       
  9145         (tst_QScriptValue::isFunction_test):
       
  9146         (tst_QScriptValue::isNull_initData):
       
  9147         (tst_QScriptValue::isNull_makeData):
       
  9148         (tst_QScriptValue::isNull_test):
       
  9149         (tst_QScriptValue::isString_initData):
       
  9150         (tst_QScriptValue::isString_makeData):
       
  9151         (tst_QScriptValue::isString_test):
       
  9152         (tst_QScriptValue::isUndefined_initData):
       
  9153         (tst_QScriptValue::isUndefined_makeData):
       
  9154         (tst_QScriptValue::isUndefined_test):
       
  9155         (tst_QScriptValue::isObject_initData):
       
  9156         (tst_QScriptValue::isObject_makeData):
       
  9157         (tst_QScriptValue::isObject_test):
       
  9158 
       
  9159 2010-02-03  Kwang Yul Seo  <skyul@company100.net>
       
  9160 
       
  9161         Reviewed by Eric Seidel.
       
  9162 
       
  9163         [BREWMP] Define WTF_PLATFORM_BREWMP_SIMULATOR when AEE_SIMULATOR is defined
       
  9164         https://bugs.webkit.org/show_bug.cgi?id=34514
       
  9165 
       
  9166         PLATFORM(BREWMP_SIMULATOR) guard is needed to make distinction between BREWMP
       
  9167         and BREWMP simulator.
       
  9168 
       
  9169         * wtf/Platform.h:
       
  9170 
       
  9171 2010-02-03  Kwang Yul Seo  <skyul@company100.net>
       
  9172 
       
  9173         Reviewed by Eric Seidel.
       
  9174 
       
  9175         [BREWMP] Remove COMPILE_ASSERT conflict with the underlying PLATFORM
       
  9176         https://bugs.webkit.org/show_bug.cgi?id=34190
       
  9177 
       
  9178         COMPILE_ASSERT conflicts with the underlying PLATFORM because it is defined
       
  9179         both in WTF's Assertions.h and BREWMP's AEEClassIDs.h. Include AEEClassIDs.h
       
  9180         in Assertions.h and undef COMPILE_ASSERT to avoid redefining COMPILE_ASSERT.
       
  9181 
       
  9182         * wtf/Assertions.h:
       
  9183 
       
  9184 2010-02-03  Kwang Yul Seo  <skyul@company100.net>
       
  9185 
       
  9186         Reviewed by Eric Seidel.
       
  9187 
       
  9188         [BREWMP] Implement OwnPtrBrew to make sure BREW instances are freed.
       
  9189         https://bugs.webkit.org/show_bug.cgi?id=34518
       
  9190 
       
  9191         Add OwnPtrBrew to release IFile, IFileMgr and IBitmap instances.
       
  9192 
       
  9193         * wtf/brew/OwnPtrBrew.cpp: Added.
       
  9194         (WTF::IFileMgr):
       
  9195         (WTF::IFile):
       
  9196         (WTF::IBitmap):
       
  9197         (WTF::freeOwnedPtrBrew):
       
  9198         * wtf/brew/OwnPtrBrew.h: Added.
       
  9199         (WTF::OwnPtrBrew::OwnPtrBrew):
       
  9200         (WTF::OwnPtrBrew::~OwnPtrBrew):
       
  9201         (WTF::OwnPtrBrew::get):
       
  9202         (WTF::OwnPtrBrew::release):
       
  9203         (WTF::OwnPtrBrew::outPtr):
       
  9204         (WTF::OwnPtrBrew::set):
       
  9205         (WTF::OwnPtrBrew::clear):
       
  9206         (WTF::OwnPtrBrew::operator*):
       
  9207         (WTF::OwnPtrBrew::operator->):
       
  9208         (WTF::OwnPtrBrew::operator!):
       
  9209         (WTF::OwnPtrBrew::operator UnspecifiedBoolType):
       
  9210         (WTF::OwnPtrBrew::swap):
       
  9211         (WTF::swap):
       
  9212         (WTF::operator==):
       
  9213         (WTF::operator!=):
       
  9214         (WTF::getPtr):
       
  9215 
       
  9216 2010-02-03  Kwang Yul Seo  <skyul@company100.net>
       
  9217 
       
  9218         Reviewed by Darin Adler.
       
  9219 
       
  9220         Export WTF::fastStrDup symbol
       
  9221         https://bugs.webkit.org/show_bug.cgi?id=34526
       
  9222 
       
  9223         * JavaScriptCore.exp:
       
  9224 
       
  9225 2010-02-03  Kevin Watters  <kevinwatters@gmail.com>
       
  9226 
       
  9227         Reviewed by Kevin Ollivier.
       
  9228 
       
  9229         [wx] Enable JIT compilation for wx.
       
  9230         
       
  9231         https://bugs.webkit.org/show_bug.cgi?id=34536
       
  9232 
       
  9233         * wtf/Platform.h:
       
  9234 
       
  9235 2010-02-02  Oliver Hunt  <oliver@apple.com>
       
  9236 
       
  9237         Reviewed by Geoffrey Garen.
       
  9238 
       
  9239         Crash in CollectorBitmap::get at nbcolympics.com
       
  9240         https://bugs.webkit.org/show_bug.cgi?id=34504
       
  9241 
       
  9242         This was caused by the use of m_offset to determine the offset of
       
  9243         a new property into the property storage.  This patch corrects
       
  9244         the effected cases by incorporating the anonymous slot count. It
       
  9245         also removes the duplicate copy of anonymous slot count from the
       
  9246         property table as keeping this up to date merely increased the
       
  9247         chance of a mismatch.  Finally I've added a large number of
       
  9248         assertions in an attempt to prevent such a bug from happening
       
  9249         again.
       
  9250 
       
  9251         With the new assertions in place the existing anonymous slot tests
       
  9252         all fail without the m_offset fixes.
       
  9253 
       
  9254         * runtime/PropertyMapHashTable.h:
       
  9255         * runtime/Structure.cpp:
       
  9256         (JSC::Structure::materializePropertyMap):
       
  9257         (JSC::Structure::addPropertyTransitionToExistingStructure):
       
  9258         (JSC::Structure::addPropertyTransition):
       
  9259         (JSC::Structure::removePropertyTransition):
       
  9260         (JSC::Structure::flattenDictionaryStructure):
       
  9261         (JSC::Structure::addPropertyWithoutTransition):
       
  9262         (JSC::Structure::removePropertyWithoutTransition):
       
  9263         (JSC::Structure::copyPropertyTable):
       
  9264         (JSC::Structure::get):
       
  9265         (JSC::Structure::put):
       
  9266         (JSC::Structure::remove):
       
  9267         (JSC::Structure::insertIntoPropertyMapHashTable):
       
  9268         (JSC::Structure::createPropertyMapHashTable):
       
  9269         (JSC::Structure::rehashPropertyMapHashTable):
       
  9270         (JSC::Structure::checkConsistency):
       
  9271 
       
  9272 2010-02-02  Steve Falkenburg  <sfalken@apple.com>
       
  9273 
       
  9274         Reviewed by Darin Adler.
       
  9275 
       
  9276         Copyright year updating for Windows version resources should be automatic
       
  9277         https://bugs.webkit.org/show_bug.cgi?id=34503
       
  9278 
       
  9279         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
       
  9280 
       
  9281 2010-02-02  Kwang Yul Seo  <skyul@company100.net>
       
  9282 
       
  9283         Reviewed by Eric Seidel.
       
  9284 
       
  9285         [BREWMP] Add dummy main thread functions
       
  9286         https://bugs.webkit.org/show_bug.cgi?id=33569
       
  9287 
       
  9288         Add dummy initializeMainThreadPlatform and
       
  9289         scheduleDispatchFunctionsOnMainThread.
       
  9290 
       
  9291         * wtf/brew/MainThreadBrew.cpp: Added.
       
  9292         (WTF::initializeMainThreadPlatform):
       
  9293         (WTF::scheduleDispatchFunctionsOnMainThread):
       
  9294 
       
  9295 2010-02-02  Kwang Yul Seo  <skyul@company100.net>
       
  9296 
       
  9297         Reviewed by Darin Adler.
       
  9298 
       
  9299         Add using WTF::getLocalTime to CurrentTime.h
       
  9300         https://bugs.webkit.org/show_bug.cgi?id=34493
       
  9301 
       
  9302         * wtf/CurrentTime.h:
       
  9303 
       
  9304 2010-02-02  Kwang Yul Seo  <skyul@company100.net>
       
  9305 
       
  9306         Reviewed by Eric Seidel.
       
  9307 
       
  9308         [BREWMP] Add HAVE_XXX definitions
       
  9309         https://bugs.webkit.org/show_bug.cgi?id=34414
       
  9310 
       
  9311         Add HAVE_ERRNO_H=1
       
  9312 
       
  9313         * wtf/Platform.h:
       
  9314 
       
  9315 2010-02-02  Kwang Yul Seo  <skyul@company100.net>
       
  9316 
       
  9317         Reviewed by Eric Seidel.
       
  9318 
       
  9319         [BREWMP] Don't define HAVE_TM_GMTOFF, HAVE_TM_ZONE and HAVE_TIMEGM
       
  9320         https://bugs.webkit.org/show_bug.cgi?id=34388
       
  9321 
       
  9322         BREWMP does not have these features.
       
  9323 
       
  9324         * wtf/Platform.h:
       
  9325 
       
  9326 2010-02-02  Kwang Yul Seo  <skyul@company100.net>
       
  9327 
       
  9328         Reviewed by Eric Seidel.
       
  9329 
       
  9330         [BREWMP] Define WTF_PLATFORM_BREWMP=1 when BUILDING_BREWMP is defined
       
  9331         https://bugs.webkit.org/show_bug.cgi?id=34386
       
  9332 
       
  9333         Define WTF_PLATFORM_BREWMP=1 so that PLATFORM(BREWMP) guard can be used.
       
  9334 
       
  9335         * wtf/Platform.h:
       
  9336 
       
  9337 2010-02-01  Kent Tamura  <tkent@chromium.org>
       
  9338 
       
  9339         Reviewed by Darin Adler.
       
  9340 
       
  9341         Date.UTC() should apply TimeClip operation.
       
  9342         https://bugs.webkit.org/show_bug.cgi?id=34461
       
  9343 
       
  9344         ECMAScript 5 15.9.4.3:
       
  9345         > 9 Return TimeClip(MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli))).
       
  9346 
       
  9347         * runtime/DateConstructor.cpp:
       
  9348         (JSC::dateUTC): Calls WTF::timeClip().
       
  9349 
       
  9350 2010-02-01  Kent Tamura  <tkent@chromium.org>
       
  9351 
       
  9352         Reviewed by Darin Adler.
       
  9353 
       
  9354         Fix a bug that Math.round() retunrs incorrect results for huge integers
       
  9355         https://bugs.webkit.org/show_bug.cgi?id=34462
       
  9356 
       
  9357         * runtime/MathObject.cpp:
       
  9358         (JSC::mathProtoFuncRound): Avoid "arg + 0.5".
       
  9359 
       
  9360 2010-02-01  Kwang Yul Seo  <skyul@company100.net>
       
  9361 
       
  9362         Reviewed by Eric Seidel.
       
  9363 
       
  9364         [BREWMP] Port WTF's currentTime
       
  9365         https://bugs.webkit.org/show_bug.cgi?id=33567
       
  9366 
       
  9367         Combine GETUTCSECONDS and GETTIMEMS to calculate the number
       
  9368         of milliseconds since 1970/01/01 00:00:00 UTC.
       
  9369 
       
  9370         * wtf/CurrentTime.cpp:
       
  9371         (WTF::currentTime):
       
  9372 
       
  9373 2010-02-01  Patrick Gansterer  <paroga@paroga.com>
       
  9374 
       
  9375         Reviewed by Darin Adler.
       
  9376 
       
  9377         [Qt] WinCE buildfix after r52729 and fix for Q_BIG_ENDIAN typo.
       
  9378         https://bugs.webkit.org/show_bug.cgi?id=34378
       
  9379 
       
  9380         * wtf/Platform.h:
       
  9381 
       
  9382 2010-02-01  Oliver Hunt  <oliver@apple.com>
       
  9383 
       
  9384         Reviewed by Gavin Barraclough.
       
  9385 
       
  9386         Structure not accounting for anonymous slots when computing property storage size
       
  9387         https://bugs.webkit.org/show_bug.cgi?id=34441
       
  9388 
       
  9389         Previously any Structure with anonymous storage would have a property map, so we
       
  9390         were only including anonymous slot size if there was a property map.  Given this
       
  9391         is no longer the case we should always include the anonymous slot count in the
       
  9392         property storage size.
       
  9393 
       
  9394         * runtime/Structure.h:
       
  9395         (JSC::Structure::propertyStorageSize):
       
  9396 
       
  9397 2010-02-01  Oliver Hunt  <oliver@apple.com>
       
  9398 
       
  9399         Windows build fix, update exports file (again)
       
  9400 
       
  9401         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  9402 
       
  9403 2010-02-01  Oliver Hunt  <oliver@apple.com>
       
  9404 
       
  9405         Windows build fix, update exports file
       
  9406 
       
  9407         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  9408 
       
  9409 2010-01-31  Oliver Hunt  <oliver@apple.com>
       
  9410 
       
  9411         Reviewed by Maciej Stachowiak.
       
  9412 
       
  9413         JSC is failing to propagate anonymous slot count on some transitions
       
  9414         https://bugs.webkit.org/show_bug.cgi?id=34321
       
  9415 
       
  9416         Remove secondary Structure constructor, and make Structure store a copy
       
  9417         of the number of anonymous slots directly so saving an immediate allocation
       
  9418         of a property map for all structures with anonymous storage, which also
       
  9419         avoids the leaked property map on new property transition in the original
       
  9420         version of this patch.
       
  9421 
       
  9422         We need to propagate the the anonymous slot count otherwise we can end up
       
  9423         with a structure recording incorrect information about the available and
       
  9424         needed space for property storage, or alternatively incorrectly reusing
       
  9425         some slots.
       
  9426 
       
  9427         * JavaScriptCore.exp:
       
  9428         * runtime/Structure.cpp:
       
  9429         (JSC::Structure::Structure):
       
  9430         (JSC::Structure::materializePropertyMap):
       
  9431         (JSC::Structure::addPropertyTransition):
       
  9432         (JSC::Structure::changePrototypeTransition):
       
  9433         (JSC::Structure::despecifyFunctionTransition):
       
  9434         (JSC::Structure::getterSetterTransition):
       
  9435         (JSC::Structure::toDictionaryTransition):
       
  9436         (JSC::Structure::flattenDictionaryStructure):
       
  9437         (JSC::Structure::copyPropertyTable):
       
  9438         (JSC::Structure::put):
       
  9439         (JSC::Structure::remove):
       
  9440         (JSC::Structure::insertIntoPropertyMapHashTable):
       
  9441         (JSC::Structure::createPropertyMapHashTable):
       
  9442         * runtime/Structure.h:
       
  9443         (JSC::Structure::create):
       
  9444         (JSC::Structure::hasAnonymousSlots):
       
  9445         (JSC::Structure::anonymousSlotCount):
       
  9446 
       
  9447 2010-01-31  Patrick Gansterer  <paroga@paroga.com>
       
  9448 
       
  9449         Reviewed by Darin Adler.
       
  9450 
       
  9451         Buildfix for WinCE + style fixes (TLS_OUT_OF_INDEXES is not defined).
       
  9452         https://bugs.webkit.org/show_bug.cgi?id=34380
       
  9453 
       
  9454         * wtf/ThreadSpecific.h:
       
  9455 
       
  9456 2010-01-31  Kent Tamura  <tkent@chromium.org>
       
  9457 
       
  9458         Reviewed by Darin Adler.
       
  9459 
       
  9460         [Windows] Fix a bug of round() with huge integral numbers
       
  9461         https://bugs.webkit.org/show_bug.cgi?id=34297
       
  9462 
       
  9463         Fix a bug that round() for huge integral numbers returns incorrect
       
  9464         results. For example, round(8639999913600001) returns
       
  9465         8639999913600002 without this change though the double type can
       
  9466         represent 8639999913600001 precisely.
       
  9467 
       
  9468         Math.round() of JavaScript has a similar problem. But this change
       
  9469         doesn't fix it because Math.round() doesn't use round() of
       
  9470         MathExtra.h.
       
  9471 
       
  9472         * wtf/MathExtras.h:
       
  9473         (round): Avoid to do "num + 0.5" or "num - 0.5".
       
  9474         (roundf): Fixed similarly.
       
  9475         (llround): Calls round().
       
  9476         (llroundf): Calls roundf().
       
  9477         (lround): Calls round().
       
  9478         (lroundf): Calls roundf().
       
  9479 
       
  9480 2010-01-29  Mark Rowe  <mrowe@apple.com>
       
  9481 
       
  9482         Sort Xcode projects.
       
  9483 
       
  9484         * JavaScriptCore.xcodeproj/project.pbxproj:
       
  9485 
       
  9486 2010-01-29  Mark Rowe  <mrowe@apple.com>
       
  9487 
       
  9488         Fix the Mac build.
       
  9489 
       
  9490         Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional".
       
  9491 
       
  9492         As the comment in FeatureDefines.xcconfig notes, the list of feature defines
       
  9493         needs to be kept in sync across the various files.  The default values also
       
  9494         need to be kept in sync between these files and build-webkit.
       
  9495 
       
  9496         * Configurations/FeatureDefines.xcconfig:
       
  9497 
       
  9498 2010-01-29  Simon Hausmann  <simon.hausmann@nokia.com>
       
  9499 
       
  9500         Rubber-stamped by Maciej Stachowiak.
       
  9501 
       
  9502         Fix the ARM build.
       
  9503 
       
  9504         * runtime/JSNumberCell.h:
       
  9505         (JSC::JSNumberCell::createStructure): Call the right Structure::create overload.
       
  9506 
       
  9507 2010-01-28  Kevin Ollivier  <kevino@theolliviers.com>
       
  9508 
       
  9509         [wx] Build fix for MSW, use ThreadingWin.cpp as the Windows pthreads implementation
       
  9510         implements pthread_t in a way that makes it impossible to check its validity,
       
  9511         which is needed by ThreadingPthreads.cpp.
       
  9512 
       
  9513         * wscript:
       
  9514 
       
  9515 2010-01-28  Oliver Hunt  <oliver@apple.com>
       
  9516 
       
  9517         Reviewed by Gavin Barraclough.
       
  9518 
       
  9519         DOM Objects shouldn't all require custom mark functions
       
  9520         https://bugs.webkit.org/show_bug.cgi?id=34291
       
  9521 
       
  9522         Make getAnonymousValue const-friendly
       
  9523 
       
  9524         * runtime/JSObject.h:
       
  9525         (JSC::JSObject::getAnonymousValue):
       
  9526 
       
  9527 2010-01-28  Oliver Hunt  <oliver@apple.com>
       
  9528 
       
  9529         Reviewed by Gavin Barraclough.
       
  9530 
       
  9531         Simplify anonymous slot implementation
       
  9532         https://bugs.webkit.org/show_bug.cgi?id=34282
       
  9533 
       
  9534         A class must now specify the number of slots it needs at construction time
       
  9535         rather than later on with a transition.  This makes many things simpler,
       
  9536         we no longer need to need an additional transition on object creation to
       
  9537         add the anonymous slots, and we remove the need for a number of transition
       
  9538         type checks. 
       
  9539 
       
  9540         * API/JSCallbackConstructor.h:
       
  9541         (JSC::JSCallbackConstructor::createStructure):
       
  9542         * API/JSCallbackFunction.h:
       
  9543         (JSC::JSCallbackFunction::createStructure):
       
  9544         * API/JSCallbackObject.h:
       
  9545         (JSC::JSCallbackObject::createStructure):
       
  9546         * JavaScriptCore.exp:
       
  9547         * debugger/DebuggerActivation.h:
       
  9548         (JSC::DebuggerActivation::createStructure):
       
  9549         * runtime/Arguments.h:
       
  9550         (JSC::Arguments::createStructure):
       
  9551         * runtime/BooleanObject.h:
       
  9552         (JSC::BooleanObject::createStructure):
       
  9553         * runtime/DateInstance.h:
       
  9554         (JSC::DateInstance::createStructure):
       
  9555         * runtime/DatePrototype.h:
       
  9556         (JSC::DatePrototype::createStructure):
       
  9557         * runtime/FunctionPrototype.h:
       
  9558         (JSC::FunctionPrototype::createStructure):
       
  9559         * runtime/GetterSetter.h:
       
  9560         (JSC::GetterSetter::createStructure):
       
  9561         * runtime/GlobalEvalFunction.h:
       
  9562         (JSC::GlobalEvalFunction::createStructure):
       
  9563         * runtime/InternalFunction.h:
       
  9564         (JSC::InternalFunction::createStructure):
       
  9565         * runtime/JSAPIValueWrapper.h:
       
  9566         (JSC::JSAPIValueWrapper::createStructure):
       
  9567         * runtime/JSActivation.h:
       
  9568         (JSC::JSActivation::createStructure):
       
  9569         * runtime/JSArray.h:
       
  9570         (JSC::JSArray::createStructure):
       
  9571         * runtime/JSByteArray.cpp:
       
  9572         (JSC::JSByteArray::createStructure):
       
  9573         * runtime/JSCell.h:
       
  9574         (JSC::JSCell::createDummyStructure):
       
  9575         * runtime/JSFunction.h:
       
  9576         (JSC::JSFunction::createStructure):
       
  9577         * runtime/JSGlobalObject.h:
       
  9578         (JSC::JSGlobalObject::createStructure):
       
  9579         * runtime/JSNotAnObject.h:
       
  9580         (JSC::JSNotAnObject::createStructure):
       
  9581         * runtime/JSONObject.h:
       
  9582         (JSC::JSONObject::createStructure):
       
  9583         * runtime/JSObject.h:
       
  9584         (JSC::JSObject::createStructure):
       
  9585         (JSC::JSObject::putAnonymousValue):
       
  9586         (JSC::JSObject::getAnonymousValue):
       
  9587         * runtime/JSPropertyNameIterator.h:
       
  9588         (JSC::JSPropertyNameIterator::createStructure):
       
  9589         * runtime/JSStaticScopeObject.h:
       
  9590         (JSC::JSStaticScopeObject::createStructure):
       
  9591         * runtime/JSString.h:
       
  9592         (JSC::Fiber::createStructure):
       
  9593         * runtime/JSVariableObject.h:
       
  9594         (JSC::JSVariableObject::createStructure):
       
  9595         * runtime/JSWrapperObject.h:
       
  9596         (JSC::JSWrapperObject::createStructure):
       
  9597         (JSC::JSWrapperObject::JSWrapperObject):
       
  9598         * runtime/MathObject.h:
       
  9599         (JSC::MathObject::createStructure):
       
  9600         * runtime/NumberConstructor.h:
       
  9601         (JSC::NumberConstructor::createStructure):
       
  9602         * runtime/NumberObject.h:
       
  9603         (JSC::NumberObject::createStructure):
       
  9604         * runtime/RegExpConstructor.h:
       
  9605         (JSC::RegExpConstructor::createStructure):
       
  9606         * runtime/RegExpObject.h:
       
  9607         (JSC::RegExpObject::createStructure):
       
  9608         * runtime/StringObject.h:
       
  9609         (JSC::StringObject::createStructure):
       
  9610         * runtime/StringObjectThatMasqueradesAsUndefined.h:
       
  9611         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
       
  9612         * runtime/Structure.cpp:
       
  9613         (JSC::Structure::~Structure):
       
  9614         (JSC::Structure::materializePropertyMap):
       
  9615         * runtime/Structure.h:
       
  9616         (JSC::Structure::create):
       
  9617         (JSC::Structure::anonymousSlotCount):
       
  9618         * runtime/StructureTransitionTable.h:
       
  9619 
       
  9620 2010-01-27  Oliver Hunt  <oliver@apple.com>
       
  9621 
       
  9622         Windows build fix.
       
  9623 
       
  9624         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
  9625 
       
  9626 2010-01-27  Oliver Hunt  <oliver@apple.com>
       
  9627 
       
  9628         Reviewed by Maciej Stachowiak.
       
  9629 
       
  9630         MessageEvent.data should deserialize in the context of the MessageEvent's global object
       
  9631         https://bugs.webkit.org/show_bug.cgi?id=34227
       
  9632 
       
  9633         Add logic to allow us to create an Object, Array, or Date instance
       
  9634         so we can create them in the context of a specific global object,
       
  9635         rather than just using the current lexical global object.
       
  9636 
       
  9637         * JavaScriptCore.exp:
       
  9638         * runtime/DateInstance.cpp:
       
  9639         (JSC::DateInstance::DateInstance):
       
  9640         * runtime/DateInstance.h:
       
  9641         * runtime/JSGlobalObject.h:
       
  9642         (JSC::constructEmptyObject):
       
  9643         (JSC::constructEmptyArray):
       
  9644 
       
  9645 2010-01-27  Alexey Proskuryakov  <ap@apple.com>
       
  9646 
       
  9647         Reviewed by Darin Adler.
       
  9648 
       
  9649         https://bugs.webkit.org/show_bug.cgi?id=34150
       
  9650         WebKit needs a mechanism to catch stale HashMap entries
       
  9651 
       
  9652         It is very difficult to catch stale pointers that are HashMap keys - since a pointer's hash
       
  9653         is just its value, it is very unlikely that any observable problem is reproducible.
       
  9654 
       
  9655         This extends hash table consistency checks to check that pointers are referencing allocated
       
  9656         memory blocks, and makes it possible to invoke the checks explicitly (it is not feasible
       
  9657         to enable CHECK_HASHTABLE_CONSISTENCY by default, because that affects performance too much).
       
  9658 
       
  9659         * wtf/HashMap.h: (WTF::::checkConsistency): Call through to HashTable implementation. We can
       
  9660         add similar calls to HashSet and HashCountedSet, but I haven't seen hard to debug problems
       
  9661         with those yet.
       
  9662 
       
  9663         * wtf/HashSet.h: (WTF::::remove): The version of checkTableConsistency that's guarded by
       
  9664         CHECK_HASHTABLE_CONSISTENCY is now called internalCheckTableConsistency().
       
  9665 
       
  9666         * wtf/HashTable.h:
       
  9667         (WTF::HashTable::internalCheckTableConsistency):
       
  9668         (WTF::HashTable::internalCheckTableConsistencyExceptSize):
       
  9669         (WTF::HashTable::checkTableConsistencyExceptSize):
       
  9670         Expose checkTableConsistency() even if CHECK_HASHTABLE_CONSISTENCY is off.
       
  9671         (WTF::::add): Updated for checkTableConsistency renaming.
       
  9672         (WTF::::addPassingHashCode): Ditto.
       
  9673         (WTF::::removeAndInvalidate): Ditto.
       
  9674         (WTF::::remove): Ditto.
       
  9675         (WTF::::rehash): Ditto.
       
  9676         (WTF::::checkTableConsistency): The assertion for !shouldExpand() was not correct - this
       
  9677         function returns true for tables with m_table == 0.
       
  9678         (WTF::::checkTableConsistencyExceptSize): Call checkValueConsistency for key. Potentially,
       
  9679         we could do the same for values.
       
  9680 
       
  9681         * wtf/HashTraits.h:
       
  9682         (WTF::GenericHashTraits::checkValueConsistency): An empty function that can be overridden
       
  9683         to add checks. Currently, the only override is for pointer hashes.
       
  9684 
       
  9685         * wtf/RefPtrHashMap.h: (WTF::::remove): Updated for checkTableConsistency renaming.
       
  9686 
       
  9687 2010-01-27  Anton Muhin  <antonm@chromium.org>
       
  9688 
       
  9689         Reviewed by Darin Adler.
       
  9690 
       
  9691         Remove trailing \ from inline function code
       
  9692         https://bugs.webkit.org/show_bug.cgi?id=34223
       
  9693 
       
  9694         * assembler/ARMv7Assembler.h:
       
  9695         (JSC::ARMThumbImmediate::countLeadingZerosPartial):
       
  9696 
       
  9697 2010-01-27  Kwang Yul Seo  <skyul@company100.net>
       
  9698 
       
  9699         Reviewed by Eric Seidel.
       
  9700 
       
  9701         [BREWMP] Port WTF's randomNumber
       
  9702         https://bugs.webkit.org/show_bug.cgi?id=33566
       
  9703 
       
  9704         Use GETRAND to generate 4 byte random byte sequence to implement
       
  9705         weakRandomNumber. Create a secure random number generator with
       
  9706         AEECLSID_RANDOM to implement randomNumber.
       
  9707 
       
  9708         * wtf/RandomNumber.cpp:
       
  9709         (WTF::weakRandomNumber):
       
  9710         (WTF::randomNumber):
       
  9711 
       
  9712 2010-01-27  Kwang Yul Seo  <skyul@company100.net>
       
  9713 
       
  9714         Reviewed by Eric Seidel.
       
  9715 
       
  9716         [BREWMP] Port getCPUTime
       
  9717         https://bugs.webkit.org/show_bug.cgi?id=33572
       
  9718 
       
  9719         Use GETUPTIMEMS which returns a continuously and
       
  9720         linearly increasing millisecond timer from the time the device
       
  9721         was powered on. This function is enough to implement getCPUTime.
       
  9722 
       
  9723         * runtime/TimeoutChecker.cpp:
       
  9724         (JSC::getCPUTime):
       
  9725 
       
  9726 2010-01-27  Kwang Yul Seo  <skyul@company100.net>
       
  9727 
       
  9728         Reviewed by Oliver Hunt.
       
  9729 
       
  9730         [BREWMP] Add MarkStack fastMalloc implementation for platforms without VirtualAlloc or mmap.
       
  9731         https://bugs.webkit.org/show_bug.cgi?id=33582
       
  9732 
       
  9733         Use fastMalloc and fastFree to implement MarkStack::allocateStack and
       
  9734         MarkStack::releaseStack for platforms without page level allocation.
       
  9735 
       
  9736         * runtime/MarkStack.h:
       
  9737         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
       
  9738         * runtime/MarkStackNone.cpp: Added.
       
  9739         (JSC::MarkStack::initializePagesize):
       
  9740         (JSC::MarkStack::allocateStack):
       
  9741         (JSC::MarkStack::releaseStack):
       
  9742 
       
  9743 2010-01-27  Kwang Yul Seo  <skyul@company100.net>
       
  9744 
       
  9745         Reviewed by Eric Seidel.
       
  9746 
       
  9747         [BREWMP] Don't use time function
       
  9748         https://bugs.webkit.org/show_bug.cgi?id=33577
       
  9749 
       
  9750         Calling time(0) in BREW devices causes a crash because time
       
  9751         is not properly ported in most devices. Cast currentTime() to
       
  9752         time_t to get the same result as time(0).
       
  9753 
       
  9754         * wtf/DateMath.cpp:
       
  9755         (WTF::calculateUTCOffset):
       
  9756 
       
  9757 2010-01-27  Alexey Proskuryakov  <ap@apple.com>
       
  9758 
       
  9759         Revert r53899 (HashMap<AtomicStringImpl*, Value> key checks) and subsequent build fixes,
       
  9760         because they make SVG tests crash in release builds.
       
  9761 
       
  9762         * wtf/HashMap.h:
       
  9763         (WTF::::remove):
       
  9764         * wtf/HashSet.h:
       
  9765         (WTF::::remove):
       
  9766         * wtf/HashTable.h:
       
  9767         (WTF::::add):
       
  9768         (WTF::::addPassingHashCode):
       
  9769         (WTF::::removeAndInvalidate):
       
  9770         (WTF::::remove):
       
  9771         (WTF::::rehash):
       
  9772         (WTF::::checkTableConsistency):
       
  9773         (WTF::::checkTableConsistencyExceptSize):
       
  9774         * wtf/HashTraits.h:
       
  9775         (WTF::GenericHashTraits::emptyValue):
       
  9776         (WTF::):
       
  9777         * wtf/RefPtrHashMap.h:
       
  9778         (WTF::::remove):
       
  9779 
       
  9780 2010-01-26  Alexey Proskuryakov  <ap@apple.com>
       
  9781 
       
  9782         More Windows build fixing.
       
  9783 
       
  9784         * wtf/HashTraits.h: _msize takes void*, remove const qualifier from type.
       
  9785 
       
  9786 2010-01-26  Alexey Proskuryakov  <ap@apple.com>
       
  9787 
       
  9788         Windows build fix.
       
  9789 
       
  9790         * wtf/HashTraits.h: Include malloc.h for _msize().
       
  9791 
       
  9792 2010-01-26  Alexey Proskuryakov  <ap@apple.com>
       
  9793 
       
  9794         Build fix.
       
  9795 
       
  9796         * wtf/HashTable.h: (WTF::HashTable::checkTableConsistencyExceptSize): Remove const from a
       
  9797         static (empty) version of this function.
       
  9798 
       
  9799 2010-01-26  Alexey Proskuryakov  <ap@apple.com>
       
  9800 
       
  9801         Reviewed by Darin Adler.
       
  9802 
       
  9803         https://bugs.webkit.org/show_bug.cgi?id=34150
       
  9804         WebKit needs a mechanism to catch stale HashMap entries
       
  9805 
       
  9806         It is very difficult to catch stale pointers that are HashMap keys - since a pointer's hash
       
  9807         is just its value, it is very unlikely that any observable problem is reproducible.
       
  9808 
       
  9809         This extends hash table consistency checks to check that pointers are referencing allocated
       
  9810         memory blocks, and makes it possible to invoke the checks explicitly (it is not feasible
       
  9811         to enable CHECK_HASHTABLE_CONSISTENCY by default, because that affects performance too much).
       
  9812 
       
  9813         * wtf/HashMap.h: (WTF::::checkConsistency): Call through to HashTable implementation. We can
       
  9814         add similar calls to HashSet and HashCountedSet, but I haven't seen hard to debug problems
       
  9815         with those yet.
       
  9816 
       
  9817         * wtf/HashSet.h: (WTF::::remove): The version of checkTableConsistency that's guarded by
       
  9818         CHECK_HASHTABLE_CONSISTENCY is now called internalCheckTableConsistency().
       
  9819 
       
  9820         * wtf/HashTable.h:
       
  9821         (WTF::HashTable::internalCheckTableConsistency):
       
  9822         (WTF::HashTable::internalCheckTableConsistencyExceptSize):
       
  9823         (WTF::HashTable::checkTableConsistencyExceptSize):
       
  9824         Expose checkTableConsistency() even if CHECK_HASHTABLE_CONSISTENCY is off.
       
  9825         (WTF::::add): Updated for checkTableConsistency renaming.
       
  9826         (WTF::::addPassingHashCode): Ditto.
       
  9827         (WTF::::removeAndInvalidate): Ditto.
       
  9828         (WTF::::remove): Ditto.
       
  9829         (WTF::::rehash): Ditto.
       
  9830         (WTF::::checkTableConsistency): The assertion for !shouldExpand() was not correct - this
       
  9831         function returns true for tables with m_table == 0.
       
  9832         (WTF::::checkTableConsistencyExceptSize): Call checkValueConsistency for key. Potentially,
       
  9833         we could do the same for values.
       
  9834 
       
  9835         * wtf/HashTraits.h:
       
  9836         (WTF::GenericHashTraits::checkValueConsistency): An empty function that can be overridden
       
  9837         to add checks. Currently, the only override is for pointer hashes.
       
  9838 
       
  9839         * wtf/RefPtrHashMap.h: (WTF::::remove): Updated for checkTableConsistency renaming.
       
  9840 
       
  9841 2010-01-26  Lyon Chen  <liachen@rim.com>
       
  9842 
       
  9843         Reviewed by Maciej Stachowiak.
       
  9844 
       
  9845         Opcode.h use const void* for Opcode cause error #1211 for RVCT compiler
       
  9846         https://bugs.webkit.org/show_bug.cgi?id=33902
       
  9847 
       
  9848         * bytecode/Opcode.h:
       
  9849 
       
  9850 2010-01-26  Steve Falkenburg  <sfalken@apple.com>
       
  9851 
       
  9852         Reviewed by Oliver Hunt.
       
  9853 
       
  9854         Windows build references non-existent include paths
       
  9855         https://bugs.webkit.org/show_bug.cgi?id=34175
       
  9856 
       
  9857         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
  9858         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
       
  9859         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
       
  9860         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
       
  9861         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
       
  9862         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
       
  9863 
       
  9864 2010-01-26  Oliver Hunt  <oliver@apple.com>
       
  9865 
       
  9866         Reviewed by Geoffrey Garen.
       
  9867 
       
  9868         Using JavaScriptCore API with a webkit vended context can result in slow script dialog
       
  9869         https://bugs.webkit.org/show_bug.cgi?id=34172
       
  9870 
       
  9871         Make the APIShim correctly increment and decrement the timeout
       
  9872         entry counter.
       
  9873 
       
  9874         * API/APIShims.h:
       
  9875         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
       
  9876         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
       
  9877         (JSC::APICallbackShim::APICallbackShim):
       
  9878         (JSC::APICallbackShim::~APICallbackShim):
       
  9879 
       
  9880 2010-01-26  Simon Hausmann  <simon.hausmann@nokia.com>
       
  9881 
       
  9882         [Qt] Fix compilation of QtScript with non-gcc compilers
       
  9883 
       
  9884         Variable length stack arrays are a gcc extension. Use QVarLengthArray
       
  9885         as a more portable solution that still tries to allocate on the stack
       
  9886         first.
       
  9887 
       
  9888         * qt/api/qscriptvalue_p.h:
       
  9889         (QScriptValuePrivate::call):
       
  9890 
       
  9891 2010-01-26  Simon Hausmann  <simon.hausmann@nokia.com>
       
  9892 
       
  9893         Reviewed by Tor Arne Vestbø.
       
  9894 
       
  9895         [Qt] Fix the build on platforms without JIT support.
       
  9896 
       
  9897         The JIT support should be determined at compile-time via wtf/Platform.h
       
  9898 
       
  9899         * qt/api/QtScript.pro:
       
  9900 
       
  9901 2010-01-26  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
  9902 
       
  9903         Reviewed by Simon Hausmann.
       
  9904 
       
  9905         First steps of the QtScript API.
       
  9906         
       
  9907         Two new classes were created; QScriptEngine and QScriptValue.
       
  9908         The first should encapsulate a javascript context and the second a script
       
  9909         value.
       
  9910         
       
  9911         This API is still in development, so it isn't compiled by default.
       
  9912         To trigger compilation, pass --qmakearg="CONFIG+=build-qtscript" to
       
  9913         build-webkit.
       
  9914 
       
  9915         https://bugs.webkit.org/show_bug.cgi?id=32565
       
  9916 
       
  9917         * qt/api/QtScript.pro: Added.
       
  9918         * qt/api/qscriptconverter_p.h: Added.
       
  9919         (QScriptConverter::toString):
       
  9920         * qt/api/qscriptengine.cpp: Added.
       
  9921         (QScriptEngine::QScriptEngine):
       
  9922         (QScriptEngine::~QScriptEngine):
       
  9923         (QScriptEngine::evaluate):
       
  9924         (QScriptEngine::collectGarbage):
       
  9925         * qt/api/qscriptengine.h: Added.
       
  9926         * qt/api/qscriptengine_p.cpp: Added.
       
  9927         (QScriptEnginePrivate::QScriptEnginePrivate):
       
  9928         (QScriptEnginePrivate::~QScriptEnginePrivate):
       
  9929         (QScriptEnginePrivate::evaluate):
       
  9930         * qt/api/qscriptengine_p.h: Added.
       
  9931         (QScriptEnginePrivate::get):
       
  9932         (QScriptEnginePrivate::collectGarbage):
       
  9933         (QScriptEnginePrivate::makeJSValue):
       
  9934         (QScriptEnginePrivate::context):
       
  9935         * qt/api/qscriptvalue.cpp: Added.
       
  9936         (QScriptValue::QScriptValue):
       
  9937         (QScriptValue::~QScriptValue):
       
  9938         (QScriptValue::isValid):
       
  9939         (QScriptValue::isBool):
       
  9940         (QScriptValue::isBoolean):
       
  9941         (QScriptValue::isNumber):
       
  9942         (QScriptValue::isNull):
       
  9943         (QScriptValue::isString):
       
  9944         (QScriptValue::isUndefined):
       
  9945         (QScriptValue::isError):
       
  9946         (QScriptValue::isObject):
       
  9947         (QScriptValue::isFunction):
       
  9948         (QScriptValue::toString):
       
  9949         (QScriptValue::toNumber):
       
  9950         (QScriptValue::toBool):
       
  9951         (QScriptValue::toBoolean):
       
  9952         (QScriptValue::toInteger):
       
  9953         (QScriptValue::toInt32):
       
  9954         (QScriptValue::toUInt32):
       
  9955         (QScriptValue::toUInt16):
       
  9956         (QScriptValue::call):
       
  9957         (QScriptValue::engine):
       
  9958         (QScriptValue::operator=):
       
  9959         (QScriptValue::equals):
       
  9960         (QScriptValue::strictlyEquals):
       
  9961         * qt/api/qscriptvalue.h: Added.
       
  9962         (QScriptValue::):
       
  9963         * qt/api/qscriptvalue_p.h: Added.
       
  9964         (QScriptValuePrivate::):
       
  9965         (QScriptValuePrivate::get):
       
  9966         (QScriptValuePrivate::QScriptValuePrivate):
       
  9967         (QScriptValuePrivate::isValid):
       
  9968         (QScriptValuePrivate::isBool):
       
  9969         (QScriptValuePrivate::isNumber):
       
  9970         (QScriptValuePrivate::isNull):
       
  9971         (QScriptValuePrivate::isString):
       
  9972         (QScriptValuePrivate::isUndefined):
       
  9973         (QScriptValuePrivate::isError):
       
  9974         (QScriptValuePrivate::isObject):
       
  9975         (QScriptValuePrivate::isFunction):
       
  9976         (QScriptValuePrivate::toString):
       
  9977         (QScriptValuePrivate::toNumber):
       
  9978         (QScriptValuePrivate::toBool):
       
  9979         (QScriptValuePrivate::toInteger):
       
  9980         (QScriptValuePrivate::toInt32):
       
  9981         (QScriptValuePrivate::toUInt32):
       
  9982         (QScriptValuePrivate::toUInt16):
       
  9983         (QScriptValuePrivate::equals):
       
  9984         (QScriptValuePrivate::strictlyEquals):
       
  9985         (QScriptValuePrivate::assignEngine):
       
  9986         (QScriptValuePrivate::call):
       
  9987         (QScriptValuePrivate::engine):
       
  9988         (QScriptValuePrivate::context):
       
  9989         (QScriptValuePrivate::value):
       
  9990         (QScriptValuePrivate::object):
       
  9991         (QScriptValuePrivate::inherits):
       
  9992         (QScriptValuePrivate::isJSBased):
       
  9993         (QScriptValuePrivate::isNumberBased):
       
  9994         (QScriptValuePrivate::isStringBased):
       
  9995         * qt/api/qtscriptglobal.h: Added.
       
  9996         * qt/tests/qscriptengine/qscriptengine.pro: Added.
       
  9997         * qt/tests/qscriptengine/tst_qscriptengine.cpp: Added.
       
  9998         (tst_QScriptEngine::tst_QScriptEngine):
       
  9999         (tst_QScriptEngine::~tst_QScriptEngine):
       
 10000         (tst_QScriptEngine::init):
       
 10001         (tst_QScriptEngine::cleanup):
       
 10002         (tst_QScriptEngine::collectGarbage):
       
 10003         (tst_QScriptEngine::evaluate):
       
 10004         * qt/tests/qscriptvalue/qscriptvalue.pro: Added.
       
 10005         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: Added.
       
 10006         (tst_QScriptValue::tst_QScriptValue):
       
 10007         (tst_QScriptValue::~tst_QScriptValue):
       
 10008         (tst_QScriptValue::init):
       
 10009         (tst_QScriptValue::cleanup):
       
 10010         (tst_QScriptValue::ctor):
       
 10011         (tst_QScriptValue::toString_data):
       
 10012         (tst_QScriptValue::toString):
       
 10013         (tst_QScriptValue::copyConstructor_data):
       
 10014         (tst_QScriptValue::copyConstructor):
       
 10015         (tst_QScriptValue::assignOperator_data):
       
 10016         (tst_QScriptValue::assignOperator):
       
 10017         (tst_QScriptValue::dataSharing):
       
 10018         (tst_QScriptValue::constructors_data):
       
 10019         (tst_QScriptValue::constructors):
       
 10020         (tst_QScriptValue::call):
       
 10021         * qt/tests/tests.pri: Added.
       
 10022         * qt/tests/tests.pro: Added.
       
 10023 
       
 10024 2010-01-25  Dmitry Titov  <dimich@chromium.org>
       
 10025 
       
 10026         Reviewed by David Levin.
       
 10027 
       
 10028         Fix Chromium Linux tests: the pthread functions on Linux produce segfault if they receive 0 thread handle.
       
 10029         After r53714, we can have 0 thread handles passed to pthread_join and pthread_detach if corresponding threads
       
 10030         were already terminated and their threadMap entries cleared.
       
 10031         Add a 0 check.
       
 10032 
       
 10033         * wtf/ThreadingPthreads.cpp:
       
 10034         (WTF::waitForThreadCompletion):
       
 10035         (WTF::detachThread):
       
 10036 
       
 10037 2010-01-24  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 10038 
       
 10039         Reviewed by Maciej Stachowiak.
       
 10040 
       
 10041         Refactor JITStubs.cpp so that DEFINE_STUB_FUNCTION is only used once for each function
       
 10042         https://bugs.webkit.org/show_bug.cgi?id=33866
       
 10043 
       
 10044         Place the guard USE(JSVALUE32_64) inside the body of the DEFINE_STUB_FUNCTION
       
 10045         macro for those functions that are always present.
       
 10046 
       
 10047         * jit/JITStubs.cpp:
       
 10048         (JSC::DEFINE_STUB_FUNCTION):
       
 10049 
       
 10050 2010-01-22  Kevin Watters  <kevinwatters@gmail.com>
       
 10051 
       
 10052         Reviewed by Kevin Ollivier.
       
 10053 
       
 10054         [wx] Remove the Bakefile build system, which is no longer being used.
       
 10055         
       
 10056         https://bugs.webkit.org/show_bug.cgi?id=34022
       
 10057 
       
 10058         * JavaScriptCoreSources.bkl: Removed.
       
 10059         * jscore.bkl: Removed.
       
 10060 
       
 10061 2010-01-22  Steve Falkenburg  <sfalken@apple.com>
       
 10062 
       
 10063         Reviewed by Darin Adler.
       
 10064 
       
 10065         https://bugs.webkit.org/show_bug.cgi?id=34025
       
 10066         Enable client-based Geolocation abstraction for Mac, Windows AppleWebKit targets.
       
 10067 
       
 10068         * Configurations/FeatureDefines.xcconfig:
       
 10069 
       
 10070 2010-01-22  Dmitry Titov  <dimich@chromium.org>
       
 10071 
       
 10072         Not reviewed, attempted Snow Leopard build fix.
       
 10073 
       
 10074         * wtf/ThreadingPthreads.cpp: Add a forward declaration of a function which is not 'static'.
       
 10075 
       
 10076 2009-01-22  Dmitry Titov  <dimich@chromium.org>
       
 10077 
       
 10078         Reviewed by Maciej Stachowiak.
       
 10079 
       
 10080         Fix the leak of ThreadIdentifiers in threadMap across threads.
       
 10081         https://bugs.webkit.org/show_bug.cgi?id=32689
       
 10082 
       
 10083         Test is added to DumpRenderTree.mm.
       
 10084 
       
 10085         * Android.mk: Added file ThreadIdentifierDataPthreads.(h|cpp) to build.
       
 10086         * Android.v8.wtf.mk: Ditto.
       
 10087         * GNUmakefile.am: Ditto.
       
 10088         * JavaScriptCore.gyp/JavaScriptCore.gyp: Ditto.
       
 10089         * JavaScriptCore.gypi: Ditto.
       
 10090         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
       
 10091 
       
 10092         * wtf/ThreadIdentifierDataPthreads.cpp: Added. Contains custom implementation of thread-specific data that uses custom destructor.
       
 10093         (WTF::ThreadIdentifierData::~ThreadIdentifierData): Removes the ThreadIdentifier from the threadMap.
       
 10094         (WTF::ThreadIdentifierData::identifier):
       
 10095         (WTF::ThreadIdentifierData::initialize):
       
 10096         (WTF::ThreadIdentifierData::destruct): Custom thread-specific destructor. Resets the value for the key again to cause second invoke.
       
 10097         (WTF::ThreadIdentifierData::initializeKeyOnceHelper):
       
 10098         (WTF::ThreadIdentifierData::initializeKeyOnce): Need to use pthread_once since initialization may come on any thread(s).
       
 10099         * wtf/ThreadIdentifierDataPthreads.h: Added.
       
 10100         (WTF::ThreadIdentifierData::ThreadIdentifierData):
       
 10101 
       
 10102         * wtf/Threading.cpp:
       
 10103         (WTF::threadEntryPoint): Move initializeCurrentThreadInternal to after the lock to make
       
 10104                                  sure it is invoked when ThreadIdentifier is already established.
       
 10105 
       
 10106         * wtf/Threading.h: Rename setThreadNameInternal -> initializeCurrentThreadInternal since it does more then only set the name now.
       
 10107         * wtf/ThreadingNone.cpp:
       
 10108         (WTF::initializeCurrentThreadInternal): Ditto.
       
 10109         * wtf/ThreadingWin.cpp:
       
 10110         (WTF::initializeCurrentThreadInternal): Ditto.
       
 10111         (WTF::initializeThreading): Ditto.
       
 10112         * wtf/gtk/ThreadingGtk.cpp:
       
 10113         (WTF::initializeCurrentThreadInternal): Ditto.
       
 10114         * wtf/qt/ThreadingQt.cpp:
       
 10115         (WTF::initializeCurrentThreadInternal): Ditto.
       
 10116 
       
 10117         * wtf/ThreadingPthreads.cpp:
       
 10118         (WTF::establishIdentifierForPthreadHandle):
       
 10119         (WTF::clearPthreadHandleForIdentifier): Make it not 'static' so the ~ThreadIdentifierData() in another file can call it.
       
 10120         (WTF::initializeCurrentThreadInternal): Set the thread-specific data. The ThreadIdentifier is already established by creating thread.
       
 10121         (WTF::waitForThreadCompletion): Remove call to clearPthreadHandleForIdentifier(threadID) since it is now done in ~ThreadIdentifierData().
       
 10122         (WTF::detachThread): Ditto.
       
 10123         (WTF::currentThread): Use the thread-specific data to get the ThreadIdentifier. It's many times faster then Mutex-protected iteration through the map.
       
 10124                               Also, set the thread-specific data if called first time on the thread.
       
 10125 
       
 10126 2010-01-21  Kwang Yul Seo  <skyul@company100.net>
       
 10127 
       
 10128         Reviewed by Alexey Proskuryakov.
       
 10129 
       
 10130         Add ThreadSpecific for ENABLE(SINGLE_THREADED)
       
 10131         https://bugs.webkit.org/show_bug.cgi?id=33878
       
 10132 
       
 10133         Implement ThreadSpecific with a simple getter/setter
       
 10134         when ENABLE(SINGLE_THREADED) is true.
       
 10135 
       
 10136         Due to the change in https://bugs.webkit.org/show_bug.cgi?id=33236,
       
 10137         an implementation of ThreadSpecific must be available to build WebKit.
       
 10138         This causes a build failure for platforms without a proper
       
 10139         ThreadSpecific implementation.
       
 10140 
       
 10141         * wtf/ThreadSpecific.h:
       
 10142         (WTF::::ThreadSpecific):
       
 10143         (WTF::::~ThreadSpecific):
       
 10144         (WTF::::get):
       
 10145         (WTF::::set):
       
 10146         (WTF::::destroy):
       
 10147 
       
 10148 2010-01-21  Kwang Yul Seo  <skyul@company100.net>
       
 10149 
       
 10150         Reviewed by Maciej Stachowiak.
       
 10151 
       
 10152         Add fastStrDup to FastMalloc
       
 10153         https://bugs.webkit.org/show_bug.cgi?id=33937
       
 10154 
       
 10155         The new string returned by fastStrDup is obtained with fastMalloc,
       
 10156         and can be freed with fastFree. This makes the memory management 
       
 10157         more consistent because we don't need to keep strdup allocated pointers
       
 10158         and free them with free(). Instead we can use fastFree everywhere.
       
 10159 
       
 10160         * wtf/FastMalloc.cpp:
       
 10161         (WTF::fastStrDup):
       
 10162         * wtf/FastMalloc.h:
       
 10163 
       
 10164 2010-01-21  Brady Eidson  <beidson@apple.com>
       
 10165 
       
 10166         Reviewed by Maciej Stachowiak.
       
 10167 
       
 10168         history.back() for same-document history traversals isn't synchronous as the specification states.
       
 10169         <rdar://problem/7535011> and https://bugs.webkit.org/show_bug.cgi?id=33538
       
 10170 
       
 10171         * wtf/Platform.h: Add a "HISTORY_ALWAYS_ASYNC" enable and turn it on for Chromium.
       
 10172 
       
 10173 2010-01-21  Geoffrey Garen  <ggaren@apple.com>
       
 10174 
       
 10175         Reviewed by Oliver Hunt.
       
 10176 
       
 10177         Always create a prototype for automatically managed classes.
       
 10178         
       
 10179         This fixes some errors where prototype chains were not correctly hooked
       
 10180         up, and also ensures that API classes work correctly with features like
       
 10181         instanceof.
       
 10182 
       
 10183         * API/JSClassRef.cpp:
       
 10184         (OpaqueJSClass::create): Cleaned up some of this code. Also changed it
       
 10185         to always create a prototype class.
       
 10186 
       
 10187         * API/tests/testapi.c:
       
 10188         (Derived2_class):
       
 10189         (main): Fixed a null value crash in the exception checking code.
       
 10190         * API/tests/testapi.js: Added some tests for the case where a prototype
       
 10191         chain would not be hooked up correctly.
       
 10192 
       
 10193 2010-01-21  Oliver Hunt  <oliver@apple.com>
       
 10194 
       
 10195         Reviewed by Geoff Garen.
       
 10196 
       
 10197         Force JSC to create a prototype chain for API classes with a
       
 10198         parent class but no static functions.
       
 10199 
       
 10200         * API/JSClassRef.cpp:
       
 10201         (OpaqueJSClass::create):
       
 10202 
       
 10203 2010-01-21  Kent Hansen  <kent.hansen@nokia.com>
       
 10204 
       
 10205         Reviewed by Geoffrey Garen.
       
 10206 
       
 10207         Object.getOwnPropertyDescriptor always returns undefined for JS API objects
       
 10208         https://bugs.webkit.org/show_bug.cgi?id=33946
       
 10209 
       
 10210         Ideally the getOwnPropertyDescriptor() reimplementation should return an
       
 10211         access descriptor that wraps the property getter and setter callbacks, but
       
 10212         that approach is much more involved than returning a value descriptor.
       
 10213         Keep it simple for now.
       
 10214 
       
 10215         * API/JSCallbackObject.h:
       
 10216         * API/JSCallbackObjectFunctions.h:
       
 10217         (JSC::::getOwnPropertyDescriptor):
       
 10218         * API/tests/testapi.js:
       
 10219 
       
 10220 2010-01-20  Mark Rowe  <mrowe@apple.com>
       
 10221 
       
 10222         Build fix.
       
 10223 
       
 10224         * wtf/FastMalloc.cpp:
       
 10225         (WTF::TCMalloc_PageHeap::initializeScavenger): Remove unnecessary function call.
       
 10226 
       
 10227 2010-01-20  Mark Rowe  <mrowe@apple.com>
       
 10228 
       
 10229         Reviewed by Oliver Hunt.
       
 10230 
       
 10231         Use the inline i386 assembly for x86_64 as well rather than falling back to using pthread mutexes.
       
 10232 
       
 10233         * wtf/TCSpinLock.h:
       
 10234         (TCMalloc_SpinLock::Lock):
       
 10235         (TCMalloc_SpinLock::Unlock):
       
 10236         (TCMalloc_SlowLock):
       
 10237 
       
 10238 2010-01-20  Mark Rowe  <mrowe@apple.com>
       
 10239 
       
 10240         Reviewed by Oliver Hunt.
       
 10241 
       
 10242         <rdar://problem/7215063> Use GCD instead of an extra thread for FastMalloc scavenging on platforms where it is supported
       
 10243 
       
 10244         Abstract the background scavenging slightly so that an alternate implementation that uses GCD can be used on platforms
       
 10245         where it is supported.
       
 10246 
       
 10247         * wtf/FastMalloc.cpp:
       
 10248         (WTF::TCMalloc_PageHeap::init):
       
 10249         (WTF::TCMalloc_PageHeap::initializeScavenger):
       
 10250         (WTF::TCMalloc_PageHeap::signalScavenger):
       
 10251         (WTF::TCMalloc_PageHeap::shouldContinueScavenging):
       
 10252         (WTF::TCMalloc_PageHeap::Delete):
       
 10253         (WTF::TCMalloc_PageHeap::periodicScavenge):
       
 10254         * wtf/Platform.h:
       
 10255 
       
 10256 2010-01-20  Geoffrey Garen  <ggaren@apple.com>
       
 10257 
       
 10258         Reviewed by Oliver Hunt.
       
 10259 
       
 10260         <rdar://problem/7562708> REGRESSION(53460): Heap::destroy may not run
       
 10261         all destructors
       
 10262 
       
 10263         * runtime/Collector.cpp:
       
 10264         (JSC::Heap::freeBlocks): Instead of fully marking protected objects,
       
 10265         just set their mark bits. This prevents protected objects from keeping
       
 10266         unprotected objects alive. Destructor order is not guaranteed, so it's
       
 10267         OK to destroy objects pointed to by protected objects before destroying
       
 10268         protected objects.
       
 10269 
       
 10270 2010-01-19  David Levin  <levin@chromium.org>
       
 10271 
       
 10272         Reviewed by Oliver Hunt.
       
 10273 
       
 10274         CrossThreadCopier needs to support ThreadSafeShared better.
       
 10275         https://bugs.webkit.org/show_bug.cgi?id=33698
       
 10276 
       
 10277         * wtf/TypeTraits.cpp: Added tests for the new type traits.
       
 10278         * wtf/TypeTraits.h:
       
 10279         (WTF::IsSubclass): Determines if a class is a derived from another class.
       
 10280         (WTF::IsSubclassOfTemplate): Determines if a class is a derived from a
       
 10281         template class (with one parameter that is unknown).
       
 10282         (WTF::RemoveTemplate): Reveals the type for a template parameter.
       
 10283 
       
 10284 2010-01-20  Steve Falkenburg  <sfalken@apple.com>
       
 10285 
       
 10286         Reviewed by Darin Adler and Adam Roben.
       
 10287 
       
 10288         Feature defines are difficult to maintain on Windows builds
       
 10289         https://bugs.webkit.org/show_bug.cgi?id=33883
       
 10290 
       
 10291         FeatureDefines.vsprops are now maintained in a way similar to
       
 10292         Configurations/FeatureDefines.xcconfig, with the added advantage
       
 10293         of having a single FeatureDefines file across all projects.
       
 10294 
       
 10295         * Configurations/FeatureDefines.xcconfig: Add comments about keeping feature definitions in sync.
       
 10296         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add FeatureDefines.vsprops inherited property sheet.
       
 10297         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add FeatureDefines.vsprops inherited property sheet.
       
 10298 
       
 10299 2010-01-20  Csaba Osztrogonác  <ossy@webkit.org>
       
 10300 
       
 10301         [Qt] Unreviewed buildfix for r53547.
       
 10302 
       
 10303         * DerivedSources.pro:
       
 10304 
       
 10305 2010-01-20  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
       
 10306 
       
 10307         Reviewed by Simon Hausmann.
       
 10308 
       
 10309         [Qt] Make extraCompilers for generated sources depend on their scripts
       
 10310 
       
 10311         * DerivedSources.pro:
       
 10312 
       
 10313 2010-01-19  Brian Weinstein  <bweinstein@apple.com>
       
 10314 
       
 10315         Reviewed by Tim Hatcher.
       
 10316 
       
 10317         When JavaScriptCore calls Debugger::Exception, have it pass a
       
 10318         hasHandler variable that represents if exception is being handled
       
 10319         in the same function (not in a parent on the call stack).
       
 10320         
       
 10321         This just adds a new parameter, no behavior is changed.
       
 10322 
       
 10323         * debugger/Debugger.h:
       
 10324         * interpreter/Interpreter.cpp:
       
 10325         (JSC::Interpreter::throwException):
       
 10326 
       
 10327 2010-01-18  Maciej Stachowiak  <mjs@apple.com>
       
 10328 
       
 10329         Reviewed by Adam Barth.
       
 10330 
       
 10331         Inline functions that are hot in DOM manipulation
       
 10332         https://bugs.webkit.org/show_bug.cgi?id=33820
       
 10333         
       
 10334         (3% speedup on Dromaeo DOM Core tests)
       
 10335 
       
 10336         * runtime/WeakGCMap.h:
       
 10337         (JSC::::get): inline
       
 10338 
       
 10339 2010-01-19  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 10340 
       
 10341         Unreviewed build fix for JIT with RVCT.
       
 10342 
       
 10343         Remove IMPORT statement; cti_vm_throw is already defined in JITStubs.h.
       
 10344         Remove extra ')'.
       
 10345 
       
 10346         * jit/JITStubs.cpp:
       
 10347         (JSC::ctiVMThrowTrampoline):
       
 10348 
       
 10349 2010-01-19  Geoffrey Garen  <ggaren@apple.com>
       
 10350 
       
 10351         Reviewed by Oliver Hunt.
       
 10352 
       
 10353         REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/
       
 10354         https://bugs.webkit.org/show_bug.cgi?id=33826
       
 10355 
       
 10356         This bug was caused by a GC-protected object being destroyed early by
       
 10357         Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers
       
 10358         to GC-protected memory to be valid.
       
 10359 
       
 10360         The solution is to do two passes of tear-down in Heap::destroy. The first
       
 10361         pass tears down all unprotected objects. The second pass ASSERTs that all
       
 10362         previously protected objects are now unprotected, and then tears down
       
 10363         all perviously protected objects. These two passes simulate the two passes
       
 10364         that would have been required to free a protected object during normal GC.
       
 10365         
       
 10366         * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap.
       
 10367 
       
 10368         * runtime/Collector.cpp:
       
 10369         (JSC::Heap::destroy): Moved ASSERTs to here.
       
 10370         (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its
       
 10371         setter to the function that does the shrinking.
       
 10372         (JSC::Heap::freeBlocks): Implemented above algorithm.
       
 10373         (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink.
       
 10374 
       
 10375 2010-01-19  Gavin Barraclough  <barraclough@apple.com>
       
 10376 
       
 10377         Reviewed by NOBODY (build fix).
       
 10378 
       
 10379         Reverting r53455, breaks 2 javascriptcore tests.
       
 10380 
       
 10381         * API/JSContextRef.cpp:
       
 10382         * runtime/Collector.cpp:
       
 10383         (JSC::Heap::destroy):
       
 10384         (JSC::Heap::freeBlock):
       
 10385         (JSC::Heap::freeBlocks):
       
 10386         (JSC::Heap::shrinkBlocks):
       
 10387 
       
 10388 2010-01-18  Gavin Barraclough  <barraclough@apple.com>
       
 10389 
       
 10390         Reviewed by NOBODY (build fix).
       
 10391 
       
 10392         Revert r53454, since it causes much sadness in this world.
       
 10393 
       
 10394         * runtime/UString.cpp:
       
 10395         (JSC::UString::spliceSubstringsWithSeparators):
       
 10396         (JSC::UString::replaceRange):
       
 10397         * runtime/UStringImpl.cpp:
       
 10398         (JSC::UStringImpl::baseSharedBuffer):
       
 10399         (JSC::UStringImpl::sharedBuffer):
       
 10400         (JSC::UStringImpl::~UStringImpl):
       
 10401         * runtime/UStringImpl.h:
       
 10402         (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
       
 10403         (JSC::UntypedPtrAndBitfield::asPtr):
       
 10404         (JSC::UntypedPtrAndBitfield::operator&=):
       
 10405         (JSC::UntypedPtrAndBitfield::operator|=):
       
 10406         (JSC::UntypedPtrAndBitfield::operator&):
       
 10407         (JSC::UStringImpl::create):
       
 10408         (JSC::UStringImpl::cost):
       
 10409         (JSC::UStringImpl::isIdentifier):
       
 10410         (JSC::UStringImpl::setIsIdentifier):
       
 10411         (JSC::UStringImpl::ref):
       
 10412         (JSC::UStringImpl::deref):
       
 10413         (JSC::UStringImpl::checkConsistency):
       
 10414         (JSC::UStringImpl::UStringImpl):
       
 10415         (JSC::UStringImpl::bufferOwnerString):
       
 10416         (JSC::UStringImpl::bufferOwnership):
       
 10417         (JSC::UStringImpl::isStatic):
       
 10418         * wtf/StringHashFunctions.h:
       
 10419         (WTF::stringHash):
       
 10420 
       
 10421 2010-01-18  Geoffrey Garen  <ggaren@apple.com>
       
 10422 
       
 10423         Reviewed by Oliver Hunt.
       
 10424 
       
 10425         REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/
       
 10426         https://bugs.webkit.org/show_bug.cgi?id=33826
       
 10427 
       
 10428         This bug was caused by a GC-protected object being destroyed early by
       
 10429         Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers
       
 10430         to GC-protected memory to be valid.
       
 10431 
       
 10432         The solution is to do two passes of tear-down in Heap::destroy. The first
       
 10433         pass tears down all unprotected objects. The second pass ASSERTs that all
       
 10434         previously protected objects are now unprotected, and then tears down
       
 10435         all perviously protected objects. These two passes simulate the two passes
       
 10436         that would have been required to free a protected object during normal GC.
       
 10437         
       
 10438         * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap.
       
 10439 
       
 10440         * runtime/Collector.cpp:
       
 10441         (JSC::Heap::destroy): Moved ASSERTs to here.
       
 10442         (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its
       
 10443         setter to the function that does the shrinking.
       
 10444         (JSC::Heap::freeBlocks): Implemented above algorithm.
       
 10445         (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink.
       
 10446 
       
 10447 2010-01-18  Gavin Barraclough  <barraclough@apple.com>
       
 10448 
       
 10449         Reviewed by Oliver Hunt.
       
 10450 
       
 10451         https://bugs.webkit.org/show_bug.cgi?id=33731
       
 10452         Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags).
       
 10453 
       
 10454         This break the OS X Leaks tool.  Instead, free up some more bits from the refCount.
       
 10455 
       
 10456         * runtime/UStringImpl.cpp:
       
 10457         (JSC::UStringImpl::sharedBuffer):
       
 10458         (JSC::UStringImpl::~UStringImpl):
       
 10459         * runtime/UStringImpl.h:
       
 10460         (JSC::UStringImpl::cost):
       
 10461         (JSC::UStringImpl::checkConsistency):
       
 10462         (JSC::UStringImpl::UStringImpl):
       
 10463         (JSC::UStringImpl::bufferOwnerString):
       
 10464         (JSC::UStringImpl::):
       
 10465         * wtf/StringHashFunctions.h:
       
 10466         (WTF::stringHash):
       
 10467 
       
 10468 2010-01-18  Kent Tamura  <tkent@chromium.org>
       
 10469 
       
 10470         Reviewed by Darin Adler.
       
 10471 
       
 10472         HTMLInputElement::valueAsDate setter support for type=month.
       
 10473         https://bugs.webkit.org/show_bug.cgi?id=33021
       
 10474 
       
 10475         Expose the following functions to be used by WebCore:
       
 10476          - WTF::msToyear()
       
 10477          - WTF::dayInYear()
       
 10478          - WTF::monthFromDayInYear()
       
 10479          - WTF::dayInMonthFromDayInYear()
       
 10480 
       
 10481         * JavaScriptCore.exp:
       
 10482         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 10483         * wtf/DateMath.cpp:
       
 10484         (WTF::msToYear): Remove "static inline".
       
 10485         (WTF::dayInYear): Remove "static inline".
       
 10486         (WTF::monthFromDayInYear): Remove "static inline".
       
 10487         (WTF::dayInMonthFromDayInYear): Remove "static inline".
       
 10488         * wtf/DateMath.h: Declare the above functions.
       
 10489 
       
 10490 2010-01-18  Darin Adler  <darin@apple.com>
       
 10491 
       
 10492         Fix build by reverting the previous change.
       
 10493 
       
 10494         * runtime/UString.h: Rolled out the FastAllocBase base class.
       
 10495         It was making UString larger, and therefore JSString larger,
       
 10496         and too big for a garbage collection cell.
       
 10497 
       
 10498         This raises the unpleasant possibility that many classes became
       
 10499         larger because we added the FastAllocBase base class. I am
       
 10500         worried about this, and it needs to be investigated.
       
 10501 
       
 10502 2010-01-18  Zoltan Horvath  <zoltan@webkit.org>
       
 10503 
       
 10504         Reviewed by Darin Adler.
       
 10505 
       
 10506         Allow custom memory allocation control for UString class
       
 10507         https://bugs.webkit.org/show_bug.cgi?id=27831
       
 10508 
       
 10509         Inherits the following class from FastAllocBase because it is
       
 10510         instantiated by 'new' and no need to be copyable:
       
 10511 
       
 10512         class name     - instantiated at:
       
 10513         classs UString - JavaScriptCore/runtime/UString.cpp:160
       
 10514 
       
 10515         * runtime/UString.h:
       
 10516 
       
 10517 2010-01-18  Evan Cheng  <evan.cheng@apple.com>
       
 10518 
       
 10519         Reviewed by Darin Adler.
       
 10520 
       
 10521         Add some ALWAYS_INLINE for key functions not inlined by some versions of GCC.
       
 10522         rdar://problem/7553780
       
 10523 
       
 10524         * runtime/JSObject.h:
       
 10525         (JSC::JSObject::getPropertySlot): ALWAYS_INLINE both overloads.
       
 10526         * runtime/JSString.h:
       
 10527         (JSC::JSString::JSString): ALWAYS_INLINE the version that takes a UString.
       
 10528         * runtime/UString.h:
       
 10529         (JSC::operator==): ALWAYS_INLINE the version that compares two UString objects.
       
 10530 
       
 10531 2010-01-18  Csaba Osztrogonác  <ossy@webkit.org>
       
 10532 
       
 10533         Reviewed by Darin Adler.
       
 10534 
       
 10535         Delete dftables-xxxxxxxx.in files automatically.
       
 10536         https://bugs.webkit.org/show_bug.cgi?id=33796
       
 10537 
       
 10538         * pcre/dftables: unlink unnecessary temporary file.
       
 10539 
       
 10540 2010-01-18  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
       
 10541 
       
 10542         Reviewed by Simon Hausmann.
       
 10543 
       
 10544         [Qt] Force qmake to generate a single makefile for DerivedSources.pro
       
 10545 
       
 10546         * DerivedSources.pro:
       
 10547 
       
 10548 2010-01-18  Csaba Osztrogonác  <ossy@webkit.org>
       
 10549 
       
 10550         Rubber-stamped by Gustavo Noronha Silva.
       
 10551 
       
 10552         Rolling out r53391 and r53392 because of random crashes on buildbots.
       
 10553         https://bugs.webkit.org/show_bug.cgi?id=33731
       
 10554 
       
 10555         * bytecode/CodeBlock.h:
       
 10556         (JSC::CallLinkInfo::seenOnce):
       
 10557         (JSC::CallLinkInfo::setSeen):
       
 10558         (JSC::MethodCallLinkInfo::MethodCallLinkInfo):
       
 10559         (JSC::MethodCallLinkInfo::seenOnce):
       
 10560         (JSC::MethodCallLinkInfo::setSeen):
       
 10561         * jit/JIT.cpp:
       
 10562         (JSC::JIT::unlinkCall):
       
 10563         * jit/JITPropertyAccess.cpp:
       
 10564         (JSC::JIT::patchMethodCallProto):
       
 10565         * runtime/UString.cpp:
       
 10566         (JSC::UString::spliceSubstringsWithSeparators):
       
 10567         (JSC::UString::replaceRange):
       
 10568         * runtime/UString.h:
       
 10569         * runtime/UStringImpl.cpp:
       
 10570         (JSC::UStringImpl::baseSharedBuffer):
       
 10571         (JSC::UStringImpl::sharedBuffer):
       
 10572         (JSC::UStringImpl::~UStringImpl):
       
 10573         * runtime/UStringImpl.h:
       
 10574         (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
       
 10575         (JSC::UntypedPtrAndBitfield::asPtr):
       
 10576         (JSC::UntypedPtrAndBitfield::operator&=):
       
 10577         (JSC::UntypedPtrAndBitfield::operator|=):
       
 10578         (JSC::UntypedPtrAndBitfield::operator&):
       
 10579         (JSC::UStringImpl::create):
       
 10580         (JSC::UStringImpl::cost):
       
 10581         (JSC::UStringImpl::isIdentifier):
       
 10582         (JSC::UStringImpl::setIsIdentifier):
       
 10583         (JSC::UStringImpl::ref):
       
 10584         (JSC::UStringImpl::deref):
       
 10585         (JSC::UStringImpl::checkConsistency):
       
 10586         (JSC::UStringImpl::UStringImpl):
       
 10587         (JSC::UStringImpl::bufferOwnerString):
       
 10588         (JSC::UStringImpl::bufferOwnership):
       
 10589         (JSC::UStringImpl::isStatic):
       
 10590         * wtf/StringHashFunctions.h:
       
 10591         (WTF::stringHash):
       
 10592 
       
 10593 2010-01-18  Simon Hausmann  <simon.hausmann@nokia.com>
       
 10594 
       
 10595         Reviewed by Kenneth Rohde Christiansen.
       
 10596 
       
 10597         Fix the build with strict gcc and RVCT versions: It's not legal to cast a
       
 10598         pointer to a function to a void* without an intermediate cast to a non-pointer
       
 10599         type. A cast to a ptrdiff_t inbetween fixes it.
       
 10600 
       
 10601         * runtime/JSString.h:
       
 10602         (JSC::Fiber::JSString):
       
 10603 
       
 10604 2010-01-15  Gavin Barraclough  <barraclough@apple.com>
       
 10605 
       
 10606         Reviewed by Oliver Hunt.
       
 10607 
       
 10608         https://bugs.webkit.org/show_bug.cgi?id=33731
       
 10609         Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags).
       
 10610 
       
 10611         This break the OS X Leaks tool.  Instead, free up some more bits from the refCount.
       
 10612 
       
 10613         * runtime/UStringImpl.cpp:
       
 10614         (JSC::UStringImpl::sharedBuffer):
       
 10615         (JSC::UStringImpl::~UStringImpl):
       
 10616         * runtime/UStringImpl.h:
       
 10617         (JSC::UStringImpl::cost):
       
 10618         (JSC::UStringImpl::checkConsistency):
       
 10619         (JSC::UStringImpl::UStringImpl):
       
 10620         (JSC::UStringImpl::bufferOwnerString):
       
 10621         (JSC::UStringImpl::):
       
 10622         * wtf/StringHashFunctions.h:
       
 10623         (WTF::stringHash):
       
 10624 
       
 10625 2010-01-15  Gavin Barraclough  <barraclough@apple.com>
       
 10626 
       
 10627         Reviewed by Oliver Hunt.
       
 10628 
       
 10629         https://bugs.webkit.org/show_bug.cgi?id=33731
       
 10630         Remove uses of PtrAndFlags from JIT data stuctures.
       
 10631 
       
 10632         These break the OS X Leaks tool.  Free up a bit in CallLinkInfo, and invalid
       
 10633         permutation of pointer states in MethodCallLinkInfo to represent the removed bits.
       
 10634 
       
 10635         * bytecode/CodeBlock.h:
       
 10636         (JSC::CallLinkInfo::seenOnce):
       
 10637         (JSC::CallLinkInfo::setSeen):
       
 10638         (JSC::MethodCallLinkInfo::MethodCallLinkInfo):
       
 10639         (JSC::MethodCallLinkInfo::seenOnce):
       
 10640         (JSC::MethodCallLinkInfo::setSeen):
       
 10641         * jit/JIT.cpp:
       
 10642         (JSC::JIT::unlinkCall):
       
 10643         * jit/JITPropertyAccess.cpp:
       
 10644         (JSC::JIT::patchMethodCallProto):
       
 10645         * runtime/UString.h:
       
 10646 
       
 10647 2010-01-16  Maciej Stachowiak  <mjs@apple.com>
       
 10648 
       
 10649         Reviewed by Oliver Hunt.
       
 10650 
       
 10651         Cache JS string values made from DOM strings (Dromaeo speedup)
       
 10652         https://bugs.webkit.org/show_bug.cgi?id=33768
       
 10653         <rdar://problem/7353576>
       
 10654 
       
 10655         * runtime/JSString.h:
       
 10656         (JSC::jsStringWithFinalizer): Added new mechanism for a string to have an optional
       
 10657         finalizer callback, for the benefit of weak-referencing caches.
       
 10658         (JSC::):
       
 10659         (JSC::Fiber::JSString):
       
 10660         (JSC::Fiber::~JSString):
       
 10661         * runtime/JSString.cpp:
       
 10662         (JSC::JSString::resolveRope): Clear fibers so this doesn't look like a string with a finalizer.
       
 10663         * runtime/WeakGCMap.h: Include "Collector.h" to make this header includable by itself.
       
 10664 
       
 10665 2010-01-15  Sam Weinig  <sam@webkit.org>
       
 10666 
       
 10667         Reviewed by Maciej Stachowiak.
       
 10668 
       
 10669         Fix for <rdar://problem/7548432>
       
 10670         Add ALWAYS_INLINE to jsLess for a 1% speedup on llvm-gcc.
       
 10671 
       
 10672         * runtime/Operations.h:
       
 10673         (JSC::jsLess):
       
 10674 
       
 10675 2010-01-14  Geoffrey Garen  <ggaren@apple.com>
       
 10676 
       
 10677         Reviewed by Oliver Hunt.
       
 10678 
       
 10679         REGRESISON: Google maps buttons not working properly
       
 10680         https://bugs.webkit.org/show_bug.cgi?id=31871
       
 10681 
       
 10682         REGRESSION(r52948): JavaScript exceptions thrown on Google Maps when
       
 10683         getting directions for a second time
       
 10684         https://bugs.webkit.org/show_bug.cgi?id=33446
       
 10685         
       
 10686         SunSpider and v8 report no change.
       
 10687 
       
 10688         * interpreter/Interpreter.cpp:
       
 10689         (JSC::Interpreter::tryCacheGetByID): Update our cached offset in case
       
 10690         flattening the dictionary changed any of its offsets.
       
 10691 
       
 10692         * jit/JITStubs.cpp:
       
 10693         (JSC::JITThunks::tryCacheGetByID):
       
 10694         (JSC::DEFINE_STUB_FUNCTION):
       
 10695         * runtime/Operations.h:
       
 10696         (JSC::normalizePrototypeChain): ditto
       
 10697 
       
 10698 2010-01-14  Gavin Barraclough  <barraclough@apple.com>
       
 10699 
       
 10700         Reviewed by Oliver Hunt.
       
 10701 
       
 10702         https://bugs.webkit.org/show_bug.cgi?id=33705
       
 10703         UStringImpl::create() should use internal storage
       
 10704 
       
 10705         When creating a UStringImpl copying of a UChar*, we can use an internal buffer,
       
 10706         by calling UStringImpl::tryCreateUninitialized().
       
 10707 
       
 10708         Also, remove duplicate of copyChars from JSString, call UStringImpl's version.
       
 10709 
       
 10710         Small (max 0.5%) progression on Sunspidey.
       
 10711 
       
 10712         * runtime/JSString.cpp:
       
 10713         (JSC::JSString::resolveRope):
       
 10714         * runtime/UStringImpl.h:
       
 10715         (JSC::UStringImpl::create):
       
 10716 
       
 10717 2010-01-14  Gavin Barraclough  <barraclough@apple.com>
       
 10718 
       
 10719         Reviewed by Sam Weinig.
       
 10720 
       
 10721         Make naming & behaviour of UString[Impl] methods more consistent.
       
 10722         https://bugs.webkit.org/show_bug.cgi?id=33702
       
 10723 
       
 10724         UString::create() creates a copy of the UChar* passed, but UStringImpl::create() assumes
       
 10725         that it should assume ownership of the provided buffer (with UString::createNonCopying()
       
 10726         and UStringImpl::createCopying() providing the alternate behaviours).  Unify on create()
       
 10727         taking a copy of the provided buffer.  For non-copying cases, use the name 'adopt', and
       
 10728         make this method take a Vector<UChar>&.  For cases where non-copying construction was being
       
 10729         used, other than from a Vector<UChar>, change the code to allocate the storage along with
       
 10730         the UStringImpl using UStringImpl::createUninitialized().  (The adopt() method also more
       
 10731         closely matches that of WebCore::StringImpl).
       
 10732 
       
 10733         Also, UString::createUninitialized() and UStringImpl::createUninitialized() have incompatible
       
 10734         behaviours, in that the UString form sets the provided UChar* to a null or non-null value to
       
 10735         indicate success or failure, but UStringImpl uses the returned PassRefPtr<UStringImpl> to
       
 10736         indicate when allocation has failed (potentially leaving the output Char* uninitialized).
       
 10737         This is also incompatible with WebCore::StringImpl's behaviour, in that
       
 10738         StringImpl::createUninitialized() will CRASH() if unable to allocate.  Some uses of
       
 10739         createUninitialized() in JSC are unsafe, since they do not test the result for null.
       
 10740         UStringImpl's indication is preferable, since we may want a successful call to set the result
       
 10741         buffer to 0 (specifically, StringImpl returns 0 for the buffer where createUninitialized()
       
 10742         returns the empty string, which seems reasonable to catch bugs early).  UString's method
       
 10743         cannot support UStringImpl's behaviour directly, since it returns an object rather than a
       
 10744         pointer.
       
 10745             - remove UString::createUninitialized(), replace with calls to UStringImpl::createUninitialized()
       
 10746             - create a UStringImpl::tryCreateUninitialized() form UStringImpl::createUninitialized(),
       
 10747               with current behaviour, make createUninitialized() crash on failure to allocate.
       
 10748             - make cases in JSC that do not check the result call createUninitialized(), and cases that do
       
 10749               check call tryCreateUninitialized().
       
 10750 
       
 10751         Rename computedHash() to existingHash(), to bring this in line wih WebCore::StringImpl.
       
 10752 
       
 10753         * API/JSClassRef.cpp:
       
 10754         (OpaqueJSClassContextData::OpaqueJSClassContextData):
       
 10755         * JavaScriptCore.exp:
       
 10756         * runtime/ArrayPrototype.cpp:
       
 10757         (JSC::arrayProtoFuncToString):
       
 10758         * runtime/Identifier.cpp:
       
 10759         (JSC::CStringTranslator::translate):
       
 10760         (JSC::UCharBufferTranslator::translate):
       
 10761         * runtime/JSString.cpp:
       
 10762         (JSC::JSString::resolveRope):
       
 10763         * runtime/Lookup.cpp:
       
 10764         (JSC::HashTable::createTable):
       
 10765         * runtime/Lookup.h:
       
 10766         (JSC::HashTable::entry):
       
 10767         * runtime/StringBuilder.h:
       
 10768         (JSC::StringBuilder::release):
       
 10769         * runtime/StringConstructor.cpp:
       
 10770         (JSC::stringFromCharCodeSlowCase):
       
 10771         * runtime/StringPrototype.cpp:
       
 10772         (JSC::substituteBackreferencesSlow):
       
 10773         (JSC::stringProtoFuncToLowerCase):
       
 10774         (JSC::stringProtoFuncToUpperCase):
       
 10775         (JSC::stringProtoFuncFontsize):
       
 10776         (JSC::stringProtoFuncLink):
       
 10777         * runtime/Structure.cpp:
       
 10778         (JSC::Structure::despecifyDictionaryFunction):
       
 10779         (JSC::Structure::get):
       
 10780         (JSC::Structure::despecifyFunction):
       
 10781         (JSC::Structure::put):
       
 10782         (JSC::Structure::remove):
       
 10783         (JSC::Structure::insertIntoPropertyMapHashTable):
       
 10784         (JSC::Structure::checkConsistency):
       
 10785         * runtime/Structure.h:
       
 10786         (JSC::Structure::get):
       
 10787         * runtime/StructureTransitionTable.h:
       
 10788         (JSC::StructureTransitionTableHash::hash):
       
 10789         * runtime/UString.cpp:
       
 10790         (JSC::createRep):
       
 10791         (JSC::UString::UString):
       
 10792         (JSC::UString::spliceSubstringsWithSeparators):
       
 10793         (JSC::UString::replaceRange):
       
 10794         (JSC::UString::operator=):
       
 10795         * runtime/UString.h:
       
 10796         (JSC::UString::adopt):
       
 10797         (JSC::IdentifierRepHash::hash):
       
 10798         (JSC::makeString):
       
 10799         * runtime/UStringImpl.h:
       
 10800         (JSC::UStringImpl::adopt):
       
 10801         (JSC::UStringImpl::create):
       
 10802         (JSC::UStringImpl::createUninitialized):
       
 10803         (JSC::UStringImpl::tryCreateUninitialized):
       
 10804         (JSC::UStringImpl::existingHash):
       
 10805 
       
 10806 2010-01-13  Kent Hansen  <kent.hansen@nokia.com>
       
 10807 
       
 10808         Reviewed by Oliver Hunt.
       
 10809 
       
 10810         JSON.stringify and JSON.parse needlessly process properties in the prototype chain
       
 10811         https://bugs.webkit.org/show_bug.cgi?id=33053
       
 10812 
       
 10813         * runtime/JSONObject.cpp:
       
 10814         (JSC::Stringifier::Holder::appendNextProperty):
       
 10815         (JSC::Walker::walk):
       
 10816 
       
 10817 2010-01-13  Gavin Barraclough  <barraclough@apple.com>
       
 10818 
       
 10819         Reviewed by NOBODY (buildfix).
       
 10820 
       
 10821         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 10822 
       
 10823 2010-01-13  Alexey Proskuryakov  <ap@apple.com>
       
 10824 
       
 10825         Reviewed by Darin Adler.
       
 10826 
       
 10827         https://bugs.webkit.org/show_bug.cgi?id=33641
       
 10828         Assertion failure in Lexer.cpp if input stream ends while in string escape
       
 10829 
       
 10830         Test: fast/js/end-in-string-escape.html
       
 10831 
       
 10832         * parser/Lexer.cpp: (JSC::Lexer::lex): Bail out quickly on end of stream, not giving the
       
 10833         assertion a chance to fire.
       
 10834 
       
 10835 2010-01-13  Gavin Barraclough  <barraclough@apple.com>
       
 10836 
       
 10837         Reviewed by NOBODY (buildfix).
       
 10838 
       
 10839         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 10840 
       
 10841 2010-01-13  Gavin Barraclough  <barraclough@apple.com>
       
 10842 
       
 10843         Rubber stamped by Sam Weinig & Darin Adler.
       
 10844 
       
 10845         Three quick fixes to UStringImpl.
       
 10846             - The destroy() method can be switched back to a normal destructor; since we've switched
       
 10847               the way we protect static strings to be using an odd ref-count the destroy() won't abort.
       
 10848             - The cost() calculation logic was wrong.  If you have multiple JSStrings wrapping substrings
       
 10849               of a base string, they would each report the full cost of the base string to the heap.
       
 10850               Instead we should only be reporting once for the base string.
       
 10851             - Remove the overloaded new operator calling fastMalloc, replace this with a 'using' to pick
       
 10852               up the implementation from the parent class.
       
 10853 
       
 10854         * JavaScriptCore.exp:
       
 10855         * runtime/UStringImpl.cpp:
       
 10856         (JSC::UStringImpl::~UStringImpl):
       
 10857         * runtime/UStringImpl.h:
       
 10858         (JSC::UStringImpl::cost):
       
 10859         (JSC::UStringImpl::deref):
       
 10860 
       
 10861 2010-01-13  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
 10862 
       
 10863         Reviewed by Simon Hausmann.
       
 10864 
       
 10865         [Qt] Split the build process in two different .pro files.
       
 10866         This allows qmake to be run once all source files are available.
       
 10867 
       
 10868         * DerivedSources.pro: Added.
       
 10869         * JavaScriptCore.pri: Moved source generation to DerivedSources.pro
       
 10870         * pcre/pcre.pri: Moved source generation to DerivedSources.pro
       
 10871 
       
 10872 2010-01-12  Kent Hansen  <kent.hansen@nokia.com>
       
 10873 
       
 10874         Reviewed by Geoffrey Garen.
       
 10875 
       
 10876         [ES5] Implement Object.getOwnPropertyNames
       
 10877         https://bugs.webkit.org/show_bug.cgi?id=32242
       
 10878 
       
 10879         Add an extra argument to getPropertyNames() and getOwnPropertyNames()
       
 10880         (and all reimplementations thereof) that indicates whether non-enumerable
       
 10881         properties should be added.
       
 10882 
       
 10883         * API/JSCallbackObject.h:
       
 10884         * API/JSCallbackObjectFunctions.h:
       
 10885         (JSC::::getOwnPropertyNames):
       
 10886         * JavaScriptCore.exp:
       
 10887         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 10888         * debugger/DebuggerActivation.cpp:
       
 10889         (JSC::DebuggerActivation::getOwnPropertyNames):
       
 10890         * debugger/DebuggerActivation.h:
       
 10891         * runtime/Arguments.cpp:
       
 10892         (JSC::Arguments::getOwnPropertyNames):
       
 10893         * runtime/Arguments.h:
       
 10894         * runtime/CommonIdentifiers.h:
       
 10895         * runtime/JSArray.cpp:
       
 10896         (JSC::JSArray::getOwnPropertyNames):
       
 10897         * runtime/JSArray.h:
       
 10898         * runtime/JSByteArray.cpp:
       
 10899         (JSC::JSByteArray::getOwnPropertyNames):
       
 10900         * runtime/JSByteArray.h:
       
 10901         * runtime/JSFunction.cpp:
       
 10902         (JSC::JSFunction::getOwnPropertyNames):
       
 10903         * runtime/JSFunction.h:
       
 10904         * runtime/JSNotAnObject.cpp:
       
 10905         (JSC::JSNotAnObject::getOwnPropertyNames):
       
 10906         * runtime/JSNotAnObject.h:
       
 10907         * runtime/JSObject.cpp:
       
 10908         (JSC::getClassPropertyNames):
       
 10909         (JSC::JSObject::getPropertyNames):
       
 10910         (JSC::JSObject::getOwnPropertyNames):
       
 10911         * runtime/JSObject.h:
       
 10912         * runtime/JSVariableObject.cpp:
       
 10913         (JSC::JSVariableObject::getOwnPropertyNames):
       
 10914         * runtime/JSVariableObject.h:
       
 10915         * runtime/ObjectConstructor.cpp:
       
 10916         (JSC::ObjectConstructor::ObjectConstructor):
       
 10917         (JSC::objectConstructorGetOwnPropertyNames):
       
 10918         * runtime/RegExpMatchesArray.h:
       
 10919         (JSC::RegExpMatchesArray::getOwnPropertyNames):
       
 10920         * runtime/StringObject.cpp:
       
 10921         (JSC::StringObject::getOwnPropertyNames):
       
 10922         * runtime/StringObject.h:
       
 10923         * runtime/Structure.cpp: Rename getEnumerablePropertyNames() to getPropertyNames(), which takes an extra argument.
       
 10924         (JSC::Structure::getPropertyNames):
       
 10925         * runtime/Structure.h:
       
 10926         (JSC::):
       
 10927 
       
 10928 2010-01-12  Alexey Proskuryakov  <ap@apple.com>
       
 10929 
       
 10930         Reviewed by Darin Adler.
       
 10931 
       
 10932         https://bugs.webkit.org/show_bug.cgi?id=33540
       
 10933         Make it possible to build in debug mode with assertions disabled
       
 10934 
       
 10935         * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION):
       
 10936         * runtime/Identifier.cpp: (JSC::Identifier::checkSameIdentifierTable):
       
 10937         * wtf/FastMalloc.cpp:
       
 10938         * wtf/HashTable.h: (WTF::HashTableConstIterator::checkValidity):
       
 10939         * yarr/RegexCompiler.cpp: (JSC::Yarr::compileRegex):
       
 10940 
       
 10941 2009-11-23  Yong Li  <yoli@rim.com>
       
 10942 
       
 10943         Reviewed by Adam Treat.
       
 10944 
       
 10945         Make GIF decoder support down-sampling
       
 10946         https://bugs.webkit.org/show_bug.cgi?id=31806
       
 10947 
       
 10948         * platform/image-decoders/ImageDecoder.cpp:
       
 10949         (WebCore::ImageDecoder::upperBoundScaledY):
       
 10950         (WebCore::ImageDecoder::lowerBoundScaledY):
       
 10951         * platform/image-decoders/ImageDecoder.h:
       
 10952         (WebCore::RGBA32Buffer::scaledRect):
       
 10953         (WebCore::RGBA32Buffer::setScaledRect):
       
 10954         (WebCore::ImageDecoder::scaledSize):
       
 10955         * platform/image-decoders/gif/GIFImageDecoder.cpp:
       
 10956         (WebCore::GIFImageDecoder::sizeNowAvailable):
       
 10957         (WebCore::GIFImageDecoder::initFrameBuffer):
       
 10958         (WebCore::copyOnePixel):
       
 10959         (WebCore::GIFImageDecoder::haveDecodedRow):
       
 10960         (WebCore::GIFImageDecoder::frameComplete):
       
 10961 
       
 10962 2010-01-12  Adam Barth  <abarth@webkit.org>
       
 10963 
       
 10964         Reviewed by Eric Seidel.
       
 10965 
       
 10966         ecma/Date/15.9.5.12-1.js fails every night at midnight
       
 10967         https://bugs.webkit.org/show_bug.cgi?id=28041
       
 10968 
       
 10969         Change the test to use a concrete time instead of "now".
       
 10970 
       
 10971         * tests/mozilla/ecma/Date/15.9.5.10-1.js:
       
 10972         * tests/mozilla/ecma/Date/15.9.5.12-1.js:
       
 10973 
       
 10974 2010-01-11  Csaba Osztrogonác  <ossy@webkit.org>
       
 10975 
       
 10976         Reviewed by Ariya Hidayat.
       
 10977 
       
 10978         [Qt] Enable JIT and YARR_JIT if (CPU(X86_64) && OS(LINUX) && GCC_VERSION >= 40100)
       
 10979 
       
 10980         * wtf/Platform.h:
       
 10981 
       
 10982 2010-01-11  Geoffrey Garen  <ggaren@apple.com>
       
 10983 
       
 10984         Reviewed by Alexey Proskuryakov.
       
 10985 
       
 10986         https://bugs.webkit.org/show_bug.cgi?id=33481
       
 10987         Uninitialized data members in ArrayStorage
       
 10988         
       
 10989         SunSpider reports no change.
       
 10990 
       
 10991         * runtime/JSArray.cpp:
       
 10992         (JSC::JSArray::JSArray): Initialize missing data members in the two cases
       
 10993         where we don't use fastZeroedMalloc, so it doesn't happen automatically.
       
 10994 
       
 10995 2010-01-11  Steve Falkenburg  <sfalken@apple.com>
       
 10996 
       
 10997         Reviewed by Sam Weinig.
       
 10998 
       
 10999         https://bugs.webkit.org/show_bug.cgi?id=33480
       
 11000         
       
 11001         Improve debugging reliability for WTF on Windows.
       
 11002         Store WTF static library's PDB file into a better location.
       
 11003 
       
 11004         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
       
 11005 
       
 11006 2010-01-11  Steve Falkenburg  <sfalken@apple.com>
       
 11007 
       
 11008         Windows build fix.
       
 11009         Remove extraneous entries from def file causing build warning.
       
 11010 
       
 11011         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 11012 
       
 11013 2010-01-10  Kent Hansen  <kent.hansen@nokia.com>
       
 11014 
       
 11015         Reviewed by Darin Adler.
       
 11016 
       
 11017         RegExp.prototype.toString returns "//" for empty regular expressions
       
 11018         https://bugs.webkit.org/show_bug.cgi?id=33319
       
 11019 
       
 11020         "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA.
       
 11021 
       
 11022         * runtime/RegExpPrototype.cpp:
       
 11023         (JSC::regExpProtoFuncToString):
       
 11024 
       
 11025         * tests/mozilla/ecma_2/RegExp/properties-001.js:
       
 11026         (AddRegExpCases):
       
 11027         * tests/mozilla/js1_2/regexp/toString.js:
       
 11028         Update relevant Mozilla tests (Mozilla has had this behavior since November 2003).
       
 11029 
       
 11030 2010-01-10  Darin Adler  <darin@apple.com>
       
 11031 
       
 11032         * tests/mozilla/ecma/Array/15.4.1.1.js: Added property allow-tabs.
       
 11033         * tests/mozilla/ecma/Array/15.4.1.2.js: Added property allow-tabs.
       
 11034         * tests/mozilla/ecma/Array/15.4.2.1-1.js: Added property allow-tabs.
       
 11035         * tests/mozilla/ecma/Array/15.4.2.2-1.js: Added property allow-tabs.
       
 11036         * tests/mozilla/ecma/Array/15.4.2.2-2.js: Added property allow-tabs.
       
 11037         * tests/mozilla/ecma/Array/15.4.2.3.js: Added property allow-tabs.
       
 11038         * tests/mozilla/ecma/Array/15.4.3.2.js: Added property allow-tabs.
       
 11039         * tests/mozilla/ecma/Array/15.4.3.js: Added property allow-tabs.
       
 11040         * tests/mozilla/ecma/Array/15.4.4.1.js: Added property allow-tabs.
       
 11041         * tests/mozilla/ecma/Array/15.4.4.js: Added property allow-tabs.
       
 11042         * tests/mozilla/ecma/LexicalConventions/7.7.4.js: Added property allow-tabs.
       
 11043         * tests/mozilla/ecma/Math/15.8.2.13.js: Added property allow-tabs.
       
 11044         * tests/mozilla/ecma/Math/15.8.2.16.js: Added property allow-tabs.
       
 11045         * tests/mozilla/ecma/Math/15.8.2.18.js: Added property allow-tabs.
       
 11046         * tests/mozilla/ecma/Math/15.8.2.2.js: Added property allow-tabs.
       
 11047         * tests/mozilla/ecma/Math/15.8.2.4.js: Added property allow-tabs.
       
 11048         * tests/mozilla/ecma/Math/15.8.2.5.js: Added property allow-tabs.
       
 11049         * tests/mozilla/ecma/Math/15.8.2.7.js: Added property allow-tabs.
       
 11050         * tests/mozilla/ecma/String/15.5.1.js: Added property allow-tabs.
       
 11051         * tests/mozilla/ecma/String/15.5.2.js: Added property allow-tabs.
       
 11052         * tests/mozilla/ecma/String/15.5.3.1-3.js: Added property allow-tabs.
       
 11053         * tests/mozilla/ecma/String/15.5.3.1-4.js: Added property allow-tabs.
       
 11054         * tests/mozilla/ecma/String/15.5.3.js: Added property allow-tabs.
       
 11055         * tests/mozilla/ecma/TypeConversion/9.5-2.js: Added property allow-tabs.
       
 11056         * tests/mozilla/ecma/jsref.js: Modified property allow-tabs.
       
 11057         * tests/mozilla/ecma/shell.js: Modified property allow-tabs.
       
 11058         * tests/mozilla/ecma_2/LexicalConventions/keywords-001.js: Added property allow-tabs.
       
 11059         * tests/mozilla/ecma_2/RegExp/exec-001.js: Added property allow-tabs.
       
 11060         * tests/mozilla/ecma_2/String/match-004.js: Added property allow-tabs.
       
 11061         * tests/mozilla/ecma_2/String/replace-001.js: Added property allow-tabs.
       
 11062         * tests/mozilla/ecma_2/String/split-002.js: Added property allow-tabs.
       
 11063         * tests/mozilla/ecma_2/jsref.js: Modified property allow-tabs.
       
 11064         * tests/mozilla/ecma_2/shell.js: Added property allow-tabs.
       
 11065         * tests/mozilla/ecma_3/Date/shell.js: Modified property allow-tabs.
       
 11066         * tests/mozilla/ecma_3/Exceptions/regress-181654.js: Added property allow-tabs.
       
 11067         * tests/mozilla/ecma_3/RegExp/regress-209067.js: Added property allow-tabs.
       
 11068         * tests/mozilla/ecma_3/RegExp/regress-85721.js: Added property allow-tabs.
       
 11069         * tests/mozilla/importList.html: Added property allow-tabs.
       
 11070         * tests/mozilla/js1_1/shell.js: Added property allow-tabs.
       
 11071         * tests/mozilla/js1_2/Array/general1.js: Added property allow-tabs.
       
 11072         * tests/mozilla/js1_2/Array/general2.js: Added property allow-tabs.
       
 11073         * tests/mozilla/js1_2/Array/slice.js: Added property allow-tabs.
       
 11074         * tests/mozilla/js1_2/Array/splice1.js: Added property allow-tabs.
       
 11075         * tests/mozilla/js1_2/Array/splice2.js: Added property allow-tabs.
       
 11076         * tests/mozilla/js1_2/Objects/toString-001.js: Added property allow-tabs.
       
 11077         * tests/mozilla/js1_2/String/charCodeAt.js: Added property allow-tabs.
       
 11078         * tests/mozilla/js1_2/String/concat.js: Modified property allow-tabs.
       
 11079         * tests/mozilla/js1_2/String/match.js: Added property allow-tabs.
       
 11080         * tests/mozilla/js1_2/String/slice.js: Added property allow-tabs.
       
 11081         * tests/mozilla/js1_2/function/Function_object.js: Added property allow-tabs.
       
 11082         * tests/mozilla/js1_2/function/Number.js: Modified property allow-tabs.
       
 11083         * tests/mozilla/js1_2/function/String.js: Modified property allow-tabs.
       
 11084         * tests/mozilla/js1_2/function/nesting.js: Added property allow-tabs.
       
 11085         * tests/mozilla/js1_2/function/regexparg-1.js: Added property allow-tabs.
       
 11086         * tests/mozilla/js1_2/function/regexparg-2-n.js: Added property allow-tabs.
       
 11087         * tests/mozilla/js1_2/jsref.js: Added property allow-tabs.
       
 11088         * tests/mozilla/js1_2/operator/equality.js: Added property allow-tabs.
       
 11089         * tests/mozilla/js1_2/operator/strictEquality.js: Added property allow-tabs.
       
 11090         * tests/mozilla/js1_2/regexp/RegExp_dollar_number.js: Added property allow-tabs.
       
 11091         * tests/mozilla/js1_2/regexp/RegExp_input.js: Added property allow-tabs.
       
 11092         * tests/mozilla/js1_2/regexp/RegExp_input_as_array.js: Added property allow-tabs.
       
 11093         * tests/mozilla/js1_2/regexp/RegExp_lastIndex.js: Added property allow-tabs.
       
 11094         * tests/mozilla/js1_2/regexp/RegExp_lastMatch.js: Added property allow-tabs.
       
 11095         * tests/mozilla/js1_2/regexp/RegExp_lastMatch_as_array.js: Added property allow-tabs.
       
 11096         * tests/mozilla/js1_2/regexp/RegExp_lastParen.js: Added property allow-tabs.
       
 11097         * tests/mozilla/js1_2/regexp/RegExp_lastParen_as_array.js: Added property allow-tabs.
       
 11098         * tests/mozilla/js1_2/regexp/RegExp_leftContext.js: Added property allow-tabs.
       
 11099         * tests/mozilla/js1_2/regexp/RegExp_leftContext_as_array.js: Added property allow-tabs.
       
 11100         * tests/mozilla/js1_2/regexp/RegExp_multiline.js: Added property allow-tabs.
       
 11101         * tests/mozilla/js1_2/regexp/RegExp_multiline_as_array.js: Added property allow-tabs.
       
 11102         * tests/mozilla/js1_2/regexp/RegExp_object.js: Added property allow-tabs.
       
 11103         * tests/mozilla/js1_2/regexp/RegExp_rightContext.js: Added property allow-tabs.
       
 11104         * tests/mozilla/js1_2/regexp/RegExp_rightContext_as_array.js: Added property allow-tabs.
       
 11105         * tests/mozilla/js1_2/regexp/alphanumeric.js: Added property allow-tabs.
       
 11106         * tests/mozilla/js1_2/regexp/asterisk.js: Added property allow-tabs.
       
 11107         * tests/mozilla/js1_2/regexp/backslash.js: Added property allow-tabs.
       
 11108         * tests/mozilla/js1_2/regexp/backspace.js: Added property allow-tabs.
       
 11109         * tests/mozilla/js1_2/regexp/beginLine.js: Added property allow-tabs.
       
 11110         * tests/mozilla/js1_2/regexp/character_class.js: Added property allow-tabs.
       
 11111         * tests/mozilla/js1_2/regexp/compile.js: Added property allow-tabs.
       
 11112         * tests/mozilla/js1_2/regexp/control_characters.js: Added property allow-tabs.
       
 11113         * tests/mozilla/js1_2/regexp/digit.js: Added property allow-tabs.
       
 11114         * tests/mozilla/js1_2/regexp/dot.js: Added property allow-tabs.
       
 11115         * tests/mozilla/js1_2/regexp/endLine.js: Added property allow-tabs.
       
 11116         * tests/mozilla/js1_2/regexp/everything.js: Added property allow-tabs.
       
 11117         * tests/mozilla/js1_2/regexp/exec.js: Added property allow-tabs.
       
 11118         * tests/mozilla/js1_2/regexp/flags.js: Added property allow-tabs.
       
 11119         * tests/mozilla/js1_2/regexp/global.js: Added property allow-tabs.
       
 11120         * tests/mozilla/js1_2/regexp/hexadecimal.js: Added property allow-tabs.
       
 11121         * tests/mozilla/js1_2/regexp/ignoreCase.js: Added property allow-tabs.
       
 11122         * tests/mozilla/js1_2/regexp/interval.js: Added property allow-tabs.
       
 11123         * tests/mozilla/js1_2/regexp/octal.js: Added property allow-tabs.
       
 11124         * tests/mozilla/js1_2/regexp/parentheses.js: Added property allow-tabs.
       
 11125         * tests/mozilla/js1_2/regexp/plus.js: Added property allow-tabs.
       
 11126         * tests/mozilla/js1_2/regexp/question_mark.js: Added property allow-tabs.
       
 11127         * tests/mozilla/js1_2/regexp/simple_form.js: Added property allow-tabs.
       
 11128         * tests/mozilla/js1_2/regexp/source.js: Added property allow-tabs.
       
 11129         * tests/mozilla/js1_2/regexp/special_characters.js: Added property allow-tabs.
       
 11130         * tests/mozilla/js1_2/regexp/string_replace.js: Added property allow-tabs.
       
 11131         * tests/mozilla/js1_2/regexp/string_search.js: Added property allow-tabs.
       
 11132         * tests/mozilla/js1_2/regexp/string_split.js: Added property allow-tabs.
       
 11133         * tests/mozilla/js1_2/regexp/test.js: Added property allow-tabs.
       
 11134         * tests/mozilla/js1_2/regexp/toString.js: Added property allow-tabs.
       
 11135         * tests/mozilla/js1_2/regexp/vertical_bar.js: Added property allow-tabs.
       
 11136         * tests/mozilla/js1_2/regexp/whitespace.js: Added property allow-tabs.
       
 11137         * tests/mozilla/js1_2/regexp/word_boundary.js: Added property allow-tabs.
       
 11138         * tests/mozilla/js1_2/shell.js: Added property allow-tabs.
       
 11139         * tests/mozilla/js1_2/statements/break.js: Added property allow-tabs.
       
 11140         * tests/mozilla/js1_2/statements/continue.js: Added property allow-tabs.
       
 11141         * tests/mozilla/js1_2/statements/do_while.js: Added property allow-tabs.
       
 11142         * tests/mozilla/js1_2/statements/switch.js: Added property allow-tabs.
       
 11143         * tests/mozilla/js1_2/statements/switch2.js: Added property allow-tabs.
       
 11144         * tests/mozilla/js1_3/shell.js: Added property allow-tabs.
       
 11145         * tests/mozilla/js1_4/shell.js: Added property allow-tabs.
       
 11146         * tests/mozilla/js1_5/Regress/regress-111557.js: Added property allow-tabs.
       
 11147         * tests/mozilla/js1_5/Regress/regress-216320.js: Added property allow-tabs.
       
 11148         * tests/mozilla/menuhead.html: Added property allow-tabs.
       
 11149         * tests/mozilla/mklistpage.pl: Added property allow-tabs.
       
 11150         * tests/mozilla/runtests.pl: Added property allow-tabs.
       
 11151 
       
 11152 2010-01-08  Daniel Bates  <dbates@webkit.org>
       
 11153 
       
 11154         Reviewed by Adam Barth.
       
 11155 
       
 11156         https://bugs.webkit.org/show_bug.cgi?id=33417
       
 11157 
       
 11158         Cleans up style errors exposed by the patch for bug #33198.
       
 11159         Moreover, fixes all "Weird number of spaces at line-start. Are you using a 4-space indent?"
       
 11160         errors reported by check-webkit-style.
       
 11161 
       
 11162         No functionality was changed. So, no new tests.
       
 11163 
       
 11164         * wtf/Platform.h:
       
 11165 
       
 11166 2010-01-08  Kent Hansen  <kent.hansen@nokia.com>
       
 11167 
       
 11168         Reviewed by Eric Seidel.
       
 11169 
       
 11170         Don't store RegExp flags string representation
       
 11171         https://bugs.webkit.org/show_bug.cgi?id=33321
       
 11172 
       
 11173         It's unused; the string representation is reconstructed from flags.
       
 11174 
       
 11175         * runtime/RegExp.cpp:
       
 11176         (JSC::RegExp::RegExp):
       
 11177         * runtime/RegExp.h:
       
 11178 
       
 11179 2010-01-08  Geoffrey Garen  <ggaren@apple.com>
       
 11180 
       
 11181         Reviewed by Oliver Hunt.
       
 11182 
       
 11183         Memory use grows grows possibly unbounded in this JavaScript Array test case
       
 11184         https://bugs.webkit.org/show_bug.cgi?id=31675
       
 11185 
       
 11186         This fixes one observed bug in this test case, which is that
       
 11187         arrays don't report extra cost for the sparse value maps.
       
 11188 
       
 11189         SunSpider reports a small speedup.
       
 11190 
       
 11191         * runtime/JSArray.cpp:
       
 11192         (JSC::JSArray::putSlowCase): Report extra memory cost for
       
 11193         the sparse value map.
       
 11194         * runtime/JSArray.h: 
       
 11195 
       
 11196 2010-01-08  Yong Li  <yoli@rim.com>
       
 11197 
       
 11198         Reviewed by Darin Adler.
       
 11199 
       
 11200         Remove unnecessary #include from FastMalloc.cpp
       
 11201         https://bugs.webkit.org/show_bug.cgi?id=33393
       
 11202 
       
 11203         * wtf/FastMalloc.cpp:
       
 11204 
       
 11205 2010-01-08  Eric Seidel  <eric@webkit.org>
       
 11206 
       
 11207         No review, rolling out r52983.
       
 11208         http://trac.webkit.org/changeset/52983
       
 11209         https://bugs.webkit.org/show_bug.cgi?id=33321
       
 11210 
       
 11211         Broke 59 JavaScriptCore tests.  I don't think Kent knew about
       
 11212         run-javascriptcore-tests.  Sadly neither does the commit-bot,
       
 11213         yet.
       
 11214 
       
 11215         * runtime/RegExp.cpp:
       
 11216         (JSC::RegExp::RegExp):
       
 11217         * runtime/RegExp.h:
       
 11218         (JSC::RegExp::flags):
       
 11219 
       
 11220 2010-01-08  Eric Seidel  <eric@webkit.org>
       
 11221 
       
 11222         No review, rolling out r52981.
       
 11223         http://trac.webkit.org/changeset/52981
       
 11224         https://bugs.webkit.org/show_bug.cgi?id=33319
       
 11225 
       
 11226         Caused two JS tests to start failing:
       
 11227         ecma_2/RegExp/properties-001.js and js1_2/regexp/toString.js
       
 11228 
       
 11229         * runtime/RegExpPrototype.cpp:
       
 11230         (JSC::regExpProtoFuncToString):
       
 11231 
       
 11232 2010-01-08  Kent Hansen  <kent.hansen@nokia.com>
       
 11233 
       
 11234         Reviewed by Darin Adler.
       
 11235 
       
 11236         Don't store RegExp flags string representation
       
 11237         https://bugs.webkit.org/show_bug.cgi?id=33321
       
 11238 
       
 11239         It's unused; the string representation is reconstructed from flags.
       
 11240 
       
 11241         * runtime/RegExp.cpp:
       
 11242         (JSC::RegExp::RegExp):
       
 11243         * runtime/RegExp.h:
       
 11244 
       
 11245 2010-01-08  Kent Hansen  <kent.hansen@nokia.com>
       
 11246 
       
 11247         Reviewed by Darin Adler.
       
 11248 
       
 11249         RegExp.prototype.toString returns "//" for empty regular expressions
       
 11250         https://bugs.webkit.org/show_bug.cgi?id=33319
       
 11251 
       
 11252         "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA.
       
 11253 
       
 11254         * runtime/RegExpPrototype.cpp:
       
 11255         (JSC::regExpProtoFuncToString):
       
 11256 
       
 11257 2010-01-08  Norbert Leser  <norbert.leser@nokia.com>
       
 11258 
       
 11259         Reviewed by Darin Adler.
       
 11260 
       
 11261         RVCT compiler with "-Otime -O3" optimization tries to optimize out 
       
 11262         inline new'ed pointers that are passed as arguments.
       
 11263         Proposed patch assigns new'ed pointer explicitly outside function call.
       
 11264 
       
 11265         https://bugs.webkit.org/show_bug.cgi?id=33084
       
 11266 
       
 11267         * API/JSClassRef.cpp:
       
 11268         (OpaqueJSClass::OpaqueJSClass):
       
 11269         (OpaqueJSClassContextData::OpaqueJSClassContextData):
       
 11270 
       
 11271 2010-01-08  Gabor Loki  <loki@webkit.org>
       
 11272 
       
 11273         Reviewed by Gavin Barraclough.
       
 11274 
       
 11275         Remove an unnecessary cacheFlush from ARM_TRADITIONAL JIT
       
 11276         https://bugs.webkit.org/show_bug.cgi?id=33203
       
 11277 
       
 11278         * assembler/ARMAssembler.cpp: Remove obsolete linkBranch function.
       
 11279         (JSC::ARMAssembler::executableCopy): Inline a clean linkBranch code.
       
 11280         * assembler/ARMAssembler.h:
       
 11281         (JSC::ARMAssembler::getLdrImmAddress): Use inline function.
       
 11282         (JSC::ARMAssembler::getLdrImmAddressOnPool): Ditto.
       
 11283         (JSC::ARMAssembler::patchPointerInternal): Remove an unnecessary cacheFlush.
       
 11284         (JSC::ARMAssembler::linkJump): Use patchPointerInternal instead of linkBranch.
       
 11285         (JSC::ARMAssembler::linkCall): Ditto.
       
 11286         (JSC::ARMAssembler::relinkCall): Ditto.
       
 11287 
       
 11288 2010-01-07  Gabor Loki  <loki@webkit.org>
       
 11289 
       
 11290         Reviewed by Gavin Barraclough.
       
 11291 
       
 11292         Build fix for JSVALUE32 when ENABLE_JIT_OPTIMIZE* are disabled
       
 11293         https://bugs.webkit.org/show_bug.cgi?id=33311
       
 11294 
       
 11295         Move compileGetDirectOffset function to common part of JSVALUE32
       
 11296 
       
 11297         * jit/JITPropertyAccess.cpp:
       
 11298         (JSC::JIT::compileGetDirectOffset):
       
 11299 
       
 11300 2010-01-07  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 11301 
       
 11302         Reviewed by Maciej Stachowiak.
       
 11303 
       
 11304         Allow call sites to determine if ASSERT_* and LOG_* macros are operational
       
 11305         https://bugs.webkit.org/show_bug.cgi?id=33020
       
 11306 
       
 11307         * wtf/Assertions.h: Set ASSERT_MSG_DISABLED, FATAL_DISABLED,
       
 11308         ERROR_DISABLED, LOG_DISABLED to 1 if the compiler does not support
       
 11309         variadic macros. Refactor for better readibility.
       
 11310 
       
 11311 2010-01-07  Daniel Bates  <dbates@rim.com>
       
 11312 
       
 11313         Reviewed by Eric Seidel.
       
 11314 
       
 11315         https://bugs.webkit.org/show_bug.cgi?id=32987
       
 11316 
       
 11317         Added ENABLE_XHTMLMP flag. Disabled by default.
       
 11318 
       
 11319         * Configurations/FeatureDefines.xcconfig:
       
 11320 
       
 11321 2010-01-07  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 11322 
       
 11323         Reviewed by Gavin Barraclough.
       
 11324 
       
 11325         [Symbian] Port ARM traditional JIT Trampolines to RVCT
       
 11326         https://bugs.webkit.org/show_bug.cgi?id=30552
       
 11327 
       
 11328         Take the GCC implementation and mechanically convert
       
 11329         it to RVCT syntax.
       
 11330 
       
 11331         Use 'bx rX' instead of 'mov pc, rX' when it is available.
       
 11332 
       
 11333         Developed in cooperation with Iain Campbell and Gabor Loki.
       
 11334 
       
 11335         * JavaScriptCore.pri: Extra step to generate RVCT stubs. The 
       
 11336         script generation intentionally executed all the time not just
       
 11337         for RVCT targets.
       
 11338 
       
 11339         * create_rvct_stubs: Added. Perl script to expand precompiler macros
       
 11340         for RVCT assembler - the template is defined in JITStubs.cpp.
       
 11341 
       
 11342         * jit/JITStubs.cpp:
       
 11343         (JSC::ctiTrampoline):
       
 11344         (JSC::ctiVMThrowTrampoline):
       
 11345         (JSC::ctiOpThrowNotCaught):
       
 11346 
       
 11347 2010-01-07  Geoffrey Garen  <ggaren@apple.com>
       
 11348 
       
 11349         Reviewed by Sam Weinig.
       
 11350 
       
 11351         Fix a crash seen on the buildbots.
       
 11352 
       
 11353         * runtime/JSGlobalObject.cpp:
       
 11354         (JSC::JSGlobalObject::init): Disable specific function tracking here,
       
 11355         instead of in WebCore, to ensure that the disabling happens before a
       
 11356         specific function can be registered.
       
 11357 
       
 11358 2010-01-07  Alexey Proskuryakov  <ap@apple.com>
       
 11359 
       
 11360         Mac build fix.
       
 11361 
       
 11362         * JavaScriptCore.exp: Export new JSGlobalData static data members.
       
 11363 
       
 11364 2010-01-07  Alexey Proskuryakov  <ap@apple.com>
       
 11365 
       
 11366         Reviewed by Geoffrey Garen.
       
 11367 
       
 11368         https://bugs.webkit.org/show_bug.cgi?id=33057
       
 11369         REGRESSION(r49365): typeof(xhr.responseText) != "string" in Windows
       
 11370 
       
 11371         <rdar://problem/7296920> REGRESSION: WebKit fails to start PeaceKeeper benchmark
       
 11372 
       
 11373         Test: fast/js/webcore-string-comparison.html
       
 11374 
       
 11375         In r49365, some code was moved from JSString.cpp to JSString.h, and as a result, WebCore
       
 11376         got a way to directly instantiate JSStrings over DLL borders. Since vftable for JSString was
       
 11377         not exported, objects created from WebCore got a different vptr, and JavaScriptCore
       
 11378         optimizations that relied on vptr of all JSString objects being equal failed.
       
 11379 
       
 11380         * config.h: Added a JS_EXPORTCLASS macro for exporting classes. It's currently the same as
       
 11381         JS_EXPORTDATA, but it clearly needed a new name.
       
 11382 
       
 11383         * runtime/InitializeThreading.cpp:
       
 11384         (JSC::initializeThreadingOnce):
       
 11385         * runtime/JSGlobalData.cpp:
       
 11386         (JSC::JSGlobalData::storeVPtrs):
       
 11387         (JSC::JSGlobalData::JSGlobalData):
       
 11388         (JSC::JSGlobalData::createNonDefault):
       
 11389         (JSC::JSGlobalData::create):
       
 11390         (JSC::JSGlobalData::sharedInstance):
       
 11391         * runtime/JSGlobalData.h:
       
 11392         Store vptrs just once, no need to repeatedly pick and copy them. This makes it possible to
       
 11393         assert vptr correctness in object destructors (which don't have access to JSGlobalData,
       
 11394         and even Heap::heap(this) will fail for fake objects created from storeVPtrs()).
       
 11395 
       
 11396         * runtime/JSArray.cpp: (JSC::JSArray::~JSArray): Assert that vptr is what we expect it to be.
       
 11397         It's important to assert in destructor, because MSVC changes the vptr after constructor
       
 11398         is invoked.
       
 11399         * runtime/JSByteArray.cpp: (JSC::JSByteArray::~JSByteArray): Ditto.
       
 11400         * runtime/JSByteArray.h: Ditto.
       
 11401         * runtime/JSFunction.h: Ditto.
       
 11402         * runtime/JSFunction.cpp: (JSC::JSFunction::~JSFunction): Ditto.
       
 11403 
       
 11404         * runtime/JSCell.h: (JSC::JSCell::setVPtr): Added a method to substitute vptr for another
       
 11405         one.
       
 11406 
       
 11407         * runtime/JSString.h: Export JSString class together with its vftable, and tell other
       
 11408         libraries tp import it. This is needed on platforms that have a separate JavaScriptCore
       
 11409         dynamic library - and on Mac, we already did the export via JavaScriptCore.exp.
       
 11410         (JSC::JSString::~JSString): Assert tha vptr is what we expect it to be.
       
 11411         (JSC::fixupVPtr): Store a previously saved primary vftable pointer (do nothing if building
       
 11412         JavaScriptCore itself).
       
 11413         (JSC::jsSingleCharacterString): Call fixupVPtr in case this is call across DLL boundary.
       
 11414         (JSC::jsSingleCharacterSubstring): Ditto.
       
 11415         (JSC::jsNontrivialString): Ditto.
       
 11416         (JSC::jsString): Ditto.
       
 11417         (JSC::jsSubstring): Ditto.
       
 11418         (JSC::jsOwnedString): Ditto.
       
 11419 
       
 11420         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export the new static
       
 11421         JSGlobalData members that are used in WebCore via inline functions.
       
 11422 
       
 11423 2010-01-07  Geoffrey Garen  <ggaren@apple.com>
       
 11424 
       
 11425         Reviewed by Sam Weinig.
       
 11426 
       
 11427         Safari memory usage skyrockets using new Google AdWords interface
       
 11428         https://bugs.webkit.org/show_bug.cgi?id=33343
       
 11429 
       
 11430         The memory use was caused by the global object creating too many structures
       
 11431         as it thrashed between different specific functions.
       
 11432 
       
 11433         * runtime/Structure.cpp:
       
 11434         (JSC::Structure::Structure):
       
 11435         (JSC::Structure::addPropertyTransition):
       
 11436         (JSC::Structure::changePrototypeTransition):
       
 11437         (JSC::Structure::despecifyFunctionTransition):
       
 11438         (JSC::Structure::addAnonymousSlotsTransition):
       
 11439         (JSC::Structure::getterSetterTransition):
       
 11440         (JSC::Structure::toDictionaryTransition):
       
 11441         (JSC::Structure::addPropertyWithoutTransition):
       
 11442         (JSC::Structure::despecifyAllFunctions):
       
 11443         * runtime/Structure.h:
       
 11444         (JSC::Structure::disableSpecificFunctionTracking): Track a thrash count
       
 11445         for specific functions. Disable specific function tracking once the
       
 11446         thrash count has been hit.
       
 11447 
       
 11448 2010-01-07  Csaba Osztrogonác  <ossy@webkit.org>
       
 11449 
       
 11450         Reviewed by Simon Hausmann.
       
 11451 
       
 11452         [Qt] Enable JIT in debug mode on win32 after r51141 fixed the crashes.
       
 11453 
       
 11454         * JavaScriptCore.pri:
       
 11455 
       
 11456 2010-01-07  Zoltan Horvath  <zoltan@webkit.org>
       
 11457 
       
 11458         Reviewed by Holger Freyther.
       
 11459 
       
 11460         [Mac] Build fix when FAST_MALLOC_MATCH_VALIDATION=1
       
 11461         https://bugs.webkit.org/show_bug.cgi?id=33312
       
 11462 
       
 11463         Using of operator += cause compile error on Mac, so it is changed to
       
 11464         "= static_cast<AllocAlignmentInteger*>(old_ptr) + 1".
       
 11465 
       
 11466         * wtf/FastMalloc.cpp:
       
 11467         (WTF::TCMallocStats::realloc):
       
 11468 
       
 11469 2010-01-07  Zoltan Horvath  <zoltan@webkit.org>
       
 11470 
       
 11471         Reviewed by Holger Freyther.
       
 11472 
       
 11473         [Qt] Build fix when FAST_MALLOC_MATCH_VALIDATION=1
       
 11474         https://bugs.webkit.org/show_bug.cgi?id=33312
       
 11475 
       
 11476         Remove pByte (committed in r42344 from #20422), because pByte doesn't
       
 11477         exist and it is unnecessary.
       
 11478 
       
 11479         * wtf/FastMalloc.cpp:
       
 11480         (WTF::TCMallocStats::realloc):
       
 11481 
       
 11482 2010-01-06  Gavin Barraclough  <barraclough@apple.com>
       
 11483 
       
 11484         QT build fix.
       
 11485 
       
 11486         * runtime/Identifier.cpp:
       
 11487         (JSC::createIdentifierTableSpecific):
       
 11488 
       
 11489 2010-01-06  Gavin Barraclough  <barraclough@apple.com>
       
 11490 
       
 11491         Windows build fix part I.
       
 11492 
       
 11493         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 11494 
       
 11495 2010-01-06  Dan Bernstein  <mitz@apple.com>
       
 11496 
       
 11497         Build fix
       
 11498 
       
 11499         * runtime/Identifier.cpp:
       
 11500         (JSC::createIdentifierTableSpecificCallback):
       
 11501 
       
 11502 2010-01-05  Gavin Barraclough  <barraclough@apple.com>
       
 11503 
       
 11504         Reviewed by Sam Weinig.
       
 11505 
       
 11506         https://bugs.webkit.org/show_bug.cgi?id=33236
       
 11507         Remove m_identifierTable pointer from UString
       
 11508 
       
 11509         Currently every string holds a pointer so that during destruction,
       
 11510         if a string has been used as an identifier, it can remove itself
       
 11511         from the table.  By instead accessing the identifierTable via a
       
 11512         thread specific tracking the table associated with the current
       
 11513         globaldata, we can save the memory cost of this pointer.
       
 11514 
       
 11515         * API/APIShims.h:
       
 11516         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
       
 11517         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
       
 11518         (JSC::APICallbackShim::APICallbackShim):
       
 11519         (JSC::APICallbackShim::~APICallbackShim):
       
 11520 
       
 11521             - change the API shims to track the identifierTable of the current JSGlobalData.
       
 11522 
       
 11523         * API/JSContextRef.cpp:
       
 11524         (JSContextGroupCreate):
       
 11525 
       
 11526             - update creation of JSGlobalData for API usage to use new create method.
       
 11527             - fix shim instanciation bug in JSGlobalContextCreateInGroup.
       
 11528 
       
 11529         * JavaScriptCore.exp:
       
 11530         * runtime/Completion.cpp:
       
 11531         (JSC::checkSyntax):
       
 11532         (JSC::evaluate):
       
 11533 
       
 11534             - add asserts to check the identifierTable is being tracked correctly.
       
 11535 
       
 11536         * runtime/Identifier.cpp:
       
 11537         (JSC::IdentifierTable::~IdentifierTable):
       
 11538         (JSC::IdentifierTable::add):
       
 11539         (JSC::Identifier::remove):
       
 11540         (JSC::Identifier::checkSameIdentifierTable):
       
 11541         (JSC::createIdentifierTableSpecificCallback):
       
 11542         (JSC::createIdentifierTableSpecific):
       
 11543         (JSC::createDefaultDataSpecific):
       
 11544 
       
 11545             - Use currentIdentifierTable() instead of UStringImpl::m_identifierTable.
       
 11546             - Define methods to access the thread specific identifier tables.
       
 11547 
       
 11548         * runtime/Identifier.h:
       
 11549         (JSC::ThreadIdentifierTableData::ThreadIdentifierTableData):
       
 11550         (JSC::defaultIdentifierTable):
       
 11551         (JSC::setDefaultIdentifierTable):
       
 11552         (JSC::currentIdentifierTable):
       
 11553         (JSC::setCurrentIdentifierTable):
       
 11554         (JSC::resetCurrentIdentifierTable):
       
 11555 
       
 11556             - Declare methods to access the thread specific identifier tables.
       
 11557 
       
 11558         * runtime/JSGlobalData.cpp:
       
 11559         (JSC::JSGlobalData::createNonDefault):
       
 11560         (JSC::JSGlobalData::create):
       
 11561         (JSC::JSGlobalData::sharedInstance):
       
 11562 
       
 11563             - creation of JSGlobalData objects, other than for API usage, associate themselves with the current thread.
       
 11564 
       
 11565         * runtime/JSGlobalData.h:
       
 11566         * runtime/UStringImpl.cpp:
       
 11567         (JSC::UStringImpl::destroy):
       
 11568 
       
 11569             - destroy() method should be using isIdentifier().
       
 11570 
       
 11571         * runtime/UStringImpl.h:
       
 11572         (JSC::UStringImpl::isIdentifier):
       
 11573         (JSC::UStringImpl::setIsIdentifier):
       
 11574         (JSC::UStringImpl::checkConsistency):
       
 11575         (JSC::UStringImpl::UStringImpl):
       
 11576 
       
 11577             - replace m_identifierTable with a single m_isIdentifier bit.
       
 11578 
       
 11579         * wtf/StringHashFunctions.h:
       
 11580         (WTF::stringHash):
       
 11581 
       
 11582             - change string hash result from 32-bit to 31-bit, to free a bit in UStringImpl for m_isIdentifier.
       
 11583 
       
 11584 2009-12-25 Patrick Gansterer <paroga@paroga.com>
       
 11585  
       
 11586         Reviewed by Eric Seidel.
       
 11587 
       
 11588         Buildfix for WinCE + style fixes.
       
 11589         https://bugs.webkit.org/show_bug.cgi?id=32939
       
 11590 
       
 11591         * jsc.cpp:
       
 11592         (functionPrint):
       
 11593         (functionQuit):
       
 11594         (parseArguments):
       
 11595         (fillBufferWithContentsOfFile):
       
 11596  
       
 11597 2010-01-05  Patrick Gansterer  <paroga@paroga.com>
       
 11598 
       
 11599         Reviewed by Eric Seidel.
       
 11600 
       
 11601         WinCE buildfix after r52791 (renamed PLATFORM(WINCE) to OS(WINCE)).
       
 11602         https://bugs.webkit.org/show_bug.cgi?id=33205
       
 11603 
       
 11604         * jit/ExecutableAllocator.h:
       
 11605 
       
 11606 2010-01-05  Patrick Gansterer  <paroga@paroga.com>
       
 11607 
       
 11608         Reviewed by Darin Adler.
       
 11609 
       
 11610         Added compiler error for unsupported platforms.
       
 11611         https://bugs.webkit.org/show_bug.cgi?id=33112
       
 11612 
       
 11613         * jit/JITStubs.cpp:
       
 11614 
       
 11615 2010-01-05  Gabor Loki  <loki@webkit.org>
       
 11616 
       
 11617         Reviewed by Maciej Stachowiak.
       
 11618 
       
 11619         Follow r52729 in ARMAssembler.
       
 11620         https://bugs.webkit.org/show_bug.cgi?id=33208
       
 11621 
       
 11622         Use WTF_ARM_ARCH_AT_LEAST instead of ARM_ARCH_VERSION
       
 11623 
       
 11624         * assembler/ARMAssembler.cpp:
       
 11625         (JSC::ARMAssembler::encodeComplexImm): Move tmp declaration to ARMv7
       
 11626         * assembler/ARMAssembler.h:
       
 11627         (JSC::ARMAssembler::):
       
 11628         (JSC::ARMAssembler::bkpt):
       
 11629 
       
 11630 2010-01-05  Maciej Stachowiak  <mjs@apple.com>
       
 11631 
       
 11632         Unreviewed build fix for Gtk+
       
 11633 
       
 11634         Don't use // comments in Platform.h, at least some of them seem to make the version of GCC
       
 11635         used on the Gtk buildbot unhappy.
       
 11636 
       
 11637         * wtf/Platform.h:
       
 11638 
       
 11639 2010-01-04  Maciej Stachowiak  <mjs@apple.com>
       
 11640 
       
 11641         Reviewed by Darin Fisher.
       
 11642 
       
 11643         Reorganize, document and rename OS() platform macros.
       
 11644         https://bugs.webkit.org/show_bug.cgi?id=33198
       
 11645 
       
 11646         * wtf/Platform.h: Rename, reorganize and document OS() macros.
       
 11647 
       
 11648         Adapt to name changes. Also fixed a few incorrect OS checks.
       
 11649 
       
 11650         * API/JSContextRef.cpp:
       
 11651         * assembler/MacroAssemblerARM.cpp:
       
 11652         (JSC::isVFPPresent):
       
 11653         * assembler/MacroAssemblerX86Common.h:
       
 11654         * bytecode/SamplingTool.cpp:
       
 11655         * config.h:
       
 11656         * interpreter/RegisterFile.cpp:
       
 11657         (JSC::RegisterFile::~RegisterFile):
       
 11658         * interpreter/RegisterFile.h:
       
 11659         (JSC::RegisterFile::RegisterFile):
       
 11660         (JSC::RegisterFile::grow):
       
 11661         * jit/ExecutableAllocator.h:
       
 11662         * jit/ExecutableAllocatorFixedVMPool.cpp:
       
 11663         * jit/ExecutableAllocatorPosix.cpp:
       
 11664         * jit/ExecutableAllocatorSymbian.cpp:
       
 11665         * jit/ExecutableAllocatorWin.cpp:
       
 11666         * jit/JITOpcodes.cpp:
       
 11667         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 11668         * jit/JITStubs.cpp:
       
 11669         * jsc.cpp:
       
 11670         (main):
       
 11671         * parser/Grammar.y:
       
 11672         * profiler/ProfileNode.cpp:
       
 11673         (JSC::getCount):
       
 11674         * runtime/Collector.cpp:
       
 11675         (JSC::Heap::Heap):
       
 11676         (JSC::Heap::allocateBlock):
       
 11677         (JSC::Heap::freeBlockPtr):
       
 11678         (JSC::currentThreadStackBase):
       
 11679         (JSC::getCurrentPlatformThread):
       
 11680         (JSC::suspendThread):
       
 11681         (JSC::resumeThread):
       
 11682         (JSC::getPlatformThreadRegisters):
       
 11683         (JSC::otherThreadStackPointer):
       
 11684         * runtime/Collector.h:
       
 11685         * runtime/DateConstructor.cpp:
       
 11686         * runtime/DatePrototype.cpp:
       
 11687         (JSC::formatLocaleDate):
       
 11688         * runtime/InitializeThreading.cpp:
       
 11689         (JSC::initializeThreading):
       
 11690         * runtime/MarkStack.h:
       
 11691         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
       
 11692         * runtime/MarkStackPosix.cpp:
       
 11693         * runtime/MarkStackSymbian.cpp:
       
 11694         * runtime/MarkStackWin.cpp:
       
 11695         * runtime/StringPrototype.cpp:
       
 11696         (JSC::stringProtoFuncLastIndexOf):
       
 11697         * runtime/TimeoutChecker.cpp:
       
 11698         (JSC::getCPUTime):
       
 11699         * runtime/UString.cpp:
       
 11700         (JSC::UString::from):
       
 11701         * wtf/Assertions.cpp:
       
 11702         * wtf/Assertions.h:
       
 11703         * wtf/CurrentTime.cpp:
       
 11704         (WTF::lowResUTCTime):
       
 11705         * wtf/CurrentTime.h:
       
 11706         (WTF::getLocalTime):
       
 11707         * wtf/DateMath.cpp:
       
 11708         * wtf/FastMalloc.cpp:
       
 11709         (WTF::TCMalloc_ThreadCache::InitModule):
       
 11710         (WTF::TCMallocStats::):
       
 11711         * wtf/FastMalloc.h:
       
 11712         * wtf/MathExtras.h:
       
 11713         * wtf/RandomNumber.cpp:
       
 11714         (WTF::randomNumber):
       
 11715         * wtf/RandomNumberSeed.h:
       
 11716         (WTF::initializeRandomNumberGenerator):
       
 11717         * wtf/StringExtras.h:
       
 11718         * wtf/TCSpinLock.h:
       
 11719         (TCMalloc_SpinLock::Unlock):
       
 11720         (TCMalloc_SlowLock):
       
 11721         * wtf/TCSystemAlloc.cpp:
       
 11722         * wtf/ThreadSpecific.h:
       
 11723         (WTF::::destroy):
       
 11724         * wtf/Threading.h:
       
 11725         * wtf/ThreadingPthreads.cpp:
       
 11726         (WTF::initializeThreading):
       
 11727         (WTF::isMainThread):
       
 11728         * wtf/ThreadingWin.cpp:
       
 11729         (WTF::wtfThreadEntryPoint):
       
 11730         (WTF::createThreadInternal):
       
 11731         * wtf/VMTags.h:
       
 11732         * wtf/unicode/icu/CollatorICU.cpp:
       
 11733         (WTF::Collator::userDefault):
       
 11734         * wtf/win/MainThreadWin.cpp:
       
 11735         (WTF::initializeMainThreadPlatform):
       
 11736 
       
 11737 2010-01-04  Gustavo Noronha Silva  <gns@gnome.org>
       
 11738 
       
 11739         Add missing files to the build system - make distcheck build fix.
       
 11740 
       
 11741         * GNUmakefile.am:
       
 11742 
       
 11743 2010-01-04  Gavin Barraclough <barraclough@apple.com>
       
 11744 
       
 11745         Reviewed by Sam Weinig, additional coding by Mark Rowe.
       
 11746 
       
 11747         https://bugs.webkit.org/show_bug.cgi?id=33163
       
 11748         Add string hashing functions to WTF.
       
 11749         Use WTF's string hashing functions from UStringImpl.
       
 11750 
       
 11751         * GNUmakefile.am:
       
 11752         * JavaScriptCore.exp:
       
 11753         * JavaScriptCore.gypi:
       
 11754         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 11755         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 11756         * runtime/UStringImpl.cpp:
       
 11757         * runtime/UStringImpl.h:
       
 11758         (JSC::UStringImpl::computeHash):
       
 11759         * wtf/HashFunctions.h:
       
 11760         * wtf/StringHashFunctions.h: Added.
       
 11761         (WTF::stringHash):
       
 11762 
       
 11763 2010-01-04  Dmitry Titov  <dimich@chromium.org>
       
 11764 
       
 11765         Not reviewed, attempt to fix ARM bulid.
       
 11766 
       
 11767         * wtf/Platform.h:
       
 11768 
       
 11769 2010-01-04  Gavin Barraclough  <barraclough@apple.com>
       
 11770 
       
 11771         Rubber stamped by Geoff Garen.
       
 11772 
       
 11773         Add an 'isIdentifier' to UStringImpl, use this where appropriate
       
 11774         (where previously 'identifierTable' was being tested).
       
 11775 
       
 11776         * API/JSClassRef.cpp:
       
 11777         (OpaqueJSClass::~OpaqueJSClass):
       
 11778         (OpaqueJSClassContextData::OpaqueJSClassContextData):
       
 11779         * runtime/Identifier.cpp:
       
 11780         (JSC::Identifier::addSlowCase):
       
 11781         * runtime/Identifier.h:
       
 11782         (JSC::Identifier::add):
       
 11783         * runtime/PropertyNameArray.cpp:
       
 11784         (JSC::PropertyNameArray::add):
       
 11785         * runtime/UStringImpl.h:
       
 11786         (JSC::UStringImpl::isIdentifier):
       
 11787 
       
 11788 2010-01-04  Gavin Barraclough  <barraclough@apple.com>
       
 11789 
       
 11790         Reviewed by Sam "Shimmey Shimmey" Weinig.
       
 11791 
       
 11792         https://bugs.webkit.org/show_bug.cgi?id=33158
       
 11793         Refactor JSC API entry/exit to use RAII instead of copy/pasting code.
       
 11794         Make it easier to change set of actions taken when passing across the API boundary.
       
 11795 
       
 11796         * API/APIShims.h: Added.
       
 11797         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
       
 11798         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
       
 11799         (JSC::APIEntryShim::APIEntryShim):
       
 11800         (JSC::APICallbackShim::APICallbackShim):
       
 11801         (JSC::APICallbackShim::~APICallbackShim):
       
 11802         * API/JSBase.cpp:
       
 11803         (JSEvaluateScript):
       
 11804         (JSCheckScriptSyntax):
       
 11805         (JSGarbageCollect):
       
 11806         (JSReportExtraMemoryCost):
       
 11807         * API/JSCallbackConstructor.cpp:
       
 11808         (JSC::constructJSCallback):
       
 11809         * API/JSCallbackFunction.cpp:
       
 11810         (JSC::JSCallbackFunction::call):
       
 11811         * API/JSCallbackObjectFunctions.h:
       
 11812         (JSC::::init):
       
 11813         (JSC::::getOwnPropertySlot):
       
 11814         (JSC::::put):
       
 11815         (JSC::::deleteProperty):
       
 11816         (JSC::::construct):
       
 11817         (JSC::::hasInstance):
       
 11818         (JSC::::call):
       
 11819         (JSC::::getOwnPropertyNames):
       
 11820         (JSC::::toNumber):
       
 11821         (JSC::::toString):
       
 11822         (JSC::::staticValueGetter):
       
 11823         (JSC::::callbackGetter):
       
 11824         * API/JSContextRef.cpp:
       
 11825         * API/JSObjectRef.cpp:
       
 11826         (JSObjectMake):
       
 11827         (JSObjectMakeFunctionWithCallback):
       
 11828         (JSObjectMakeConstructor):
       
 11829         (JSObjectMakeFunction):
       
 11830         (JSObjectMakeArray):
       
 11831         (JSObjectMakeDate):
       
 11832         (JSObjectMakeError):
       
 11833         (JSObjectMakeRegExp):
       
 11834         (JSObjectGetPrototype):
       
 11835         (JSObjectSetPrototype):
       
 11836         (JSObjectHasProperty):
       
 11837         (JSObjectGetProperty):
       
 11838         (JSObjectSetProperty):
       
 11839         (JSObjectGetPropertyAtIndex):
       
 11840         (JSObjectSetPropertyAtIndex):
       
 11841         (JSObjectDeleteProperty):
       
 11842         (JSObjectCallAsFunction):
       
 11843         (JSObjectCallAsConstructor):
       
 11844         (JSObjectCopyPropertyNames):
       
 11845         (JSPropertyNameArrayRelease):
       
 11846         (JSPropertyNameAccumulatorAddName):
       
 11847         * API/JSValueRef.cpp:
       
 11848         (JSValueGetType):
       
 11849         (JSValueIsUndefined):
       
 11850         (JSValueIsNull):
       
 11851         (JSValueIsBoolean):
       
 11852         (JSValueIsNumber):
       
 11853         (JSValueIsString):
       
 11854         (JSValueIsObject):
       
 11855         (JSValueIsObjectOfClass):
       
 11856         (JSValueIsEqual):
       
 11857         (JSValueIsStrictEqual):
       
 11858         (JSValueIsInstanceOfConstructor):
       
 11859         (JSValueMakeUndefined):
       
 11860         (JSValueMakeNull):
       
 11861         (JSValueMakeBoolean):
       
 11862         (JSValueMakeNumber):
       
 11863         (JSValueMakeString):
       
 11864         (JSValueToBoolean):
       
 11865         (JSValueToNumber):
       
 11866         (JSValueToStringCopy):
       
 11867         (JSValueToObject):
       
 11868         (JSValueProtect):
       
 11869         (JSValueUnprotect):
       
 11870         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 11871 
       
 11872 2010-01-04  Dan Bernstein  <mitz@apple.com>
       
 11873 
       
 11874         Reviewed by Ada Chan and Mark Rowe.
       
 11875 
       
 11876         Updated copyright string
       
 11877 
       
 11878         * Info.plist:
       
 11879         * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist:
       
 11880         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
       
 11881 
       
 11882 2010-01-04  Adam Roben  <aroben@apple.com>
       
 11883 
       
 11884         No review, rolling out r52741.
       
 11885         http://trac.webkit.org/changeset/52741
       
 11886         https://bugs.webkit.org/show_bug.cgi?id=33056
       
 11887 
       
 11888         * wtf/AlwaysInline.h:
       
 11889 
       
 11890 2010-01-04  Patrick Gansterer  <paroga@paroga.com>
       
 11891 
       
 11892         Reviewed by Darin Adler.
       
 11893 
       
 11894         Add cacheFlush support for WinCE
       
 11895         https://bugs.webkit.org/show_bug.cgi?id=33110
       
 11896 
       
 11897         * jit/ExecutableAllocator.h:
       
 11898         (JSC::ExecutableAllocator::cacheFlush):
       
 11899 
       
 11900 2010-01-04  Patrick Gansterer  <paroga@paroga.com>
       
 11901 
       
 11902         Reviewed by Adam Roben.
       
 11903 
       
 11904         Implement NO_RETURN for COMPILER(MSVC).
       
 11905         https://bugs.webkit.org/show_bug.cgi?id=33056
       
 11906 
       
 11907         * wtf/AlwaysInline.h:
       
 11908 
       
 11909 2010-01-04  Maciej Stachowiak  <mjs@apple.com>
       
 11910 
       
 11911         Reviewed by Simon Hausmann.
       
 11912 
       
 11913         Fix some PLATFORM(*_ENDIAN) uses to CPU()
       
 11914         https://bugs.webkit.org/show_bug.cgi?id=33148
       
 11915 
       
 11916         * runtime/JSCell.cpp:
       
 11917         (JSC::):
       
 11918         * runtime/JSValue.h:
       
 11919         (JSC::JSValue::):
       
 11920 
       
 11921 2010-01-04  Maciej Stachowiak  <mjs@apple.com>
       
 11922 
       
 11923         Reviewed by Adam Barth.
       
 11924 
       
 11925         Document CPU() macros in comments.
       
 11926         https://bugs.webkit.org/show_bug.cgi?id=33147
       
 11927 
       
 11928         * wtf/Platform.h:
       
 11929 
       
 11930 2010-01-04  Maciej Stachowiak  <mjs@apple.com>
       
 11931 
       
 11932         Reviewed by Adam Barth.
       
 11933 
       
 11934         Reorganize, document and rename CPU() platform macros.
       
 11935         https://bugs.webkit.org/show_bug.cgi?id=33145
       
 11936         ExecutableAllocatorSymbian appears to have buggy ARM version check
       
 11937         https://bugs.webkit.org/show_bug.cgi?id=33138
       
 11938         
       
 11939         * wtf/Platform.h:
       
 11940         Rename all macros related to detection of particular CPUs or
       
 11941         classes of CPUs to CPU(), reorganize and document them.
       
 11942 
       
 11943         All remaining changes are adapting to the renames, plus fixing the
       
 11944         second bug cited above.
       
 11945         
       
 11946         * assembler/ARMAssembler.cpp:
       
 11947         * assembler/ARMAssembler.h:
       
 11948         * assembler/ARMv7Assembler.h:
       
 11949         * assembler/AbstractMacroAssembler.h:
       
 11950         (JSC::AbstractMacroAssembler::Imm32::Imm32):
       
 11951         * assembler/MacroAssembler.h:
       
 11952         * assembler/MacroAssemblerARM.cpp:
       
 11953         * assembler/MacroAssemblerARM.h:
       
 11954         * assembler/MacroAssemblerCodeRef.h:
       
 11955         (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
       
 11956         * assembler/MacroAssemblerX86.h:
       
 11957         * assembler/MacroAssemblerX86Common.h:
       
 11958         * assembler/MacroAssemblerX86_64.h:
       
 11959         * assembler/X86Assembler.h:
       
 11960         (JSC::X86Registers::):
       
 11961         (JSC::X86Assembler::):
       
 11962         (JSC::X86Assembler::movl_mEAX):
       
 11963         (JSC::X86Assembler::movl_EAXm):
       
 11964         (JSC::X86Assembler::repatchLoadPtrToLEA):
       
 11965         (JSC::X86Assembler::X86InstructionFormatter::memoryModRM):
       
 11966         * jit/ExecutableAllocator.h:
       
 11967         * jit/ExecutableAllocatorFixedVMPool.cpp:
       
 11968         * jit/ExecutableAllocatorPosix.cpp:
       
 11969         * jit/ExecutableAllocatorSymbian.cpp:
       
 11970         (JSC::ExecutableAllocator::intializePageSize):
       
 11971         * jit/JIT.cpp:
       
 11972         * jit/JIT.h:
       
 11973         * jit/JITArithmetic.cpp:
       
 11974         * jit/JITInlineMethods.h:
       
 11975         (JSC::JIT::beginUninterruptedSequence):
       
 11976         (JSC::JIT::restoreArgumentReferenceForTrampoline):
       
 11977         (JSC::JIT::emitCount):
       
 11978         * jit/JITOpcodes.cpp:
       
 11979         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 11980         * jit/JITPropertyAccess.cpp:
       
 11981         (JSC::JIT::privateCompileGetByIdProto):
       
 11982         (JSC::JIT::privateCompileGetByIdProtoList):
       
 11983         (JSC::JIT::privateCompileGetByIdChainList):
       
 11984         (JSC::JIT::privateCompileGetByIdChain):
       
 11985         * jit/JITStubs.cpp:
       
 11986         (JSC::JITThunks::JITThunks):
       
 11987         * jit/JITStubs.h:
       
 11988         * runtime/Collector.cpp:
       
 11989         (JSC::currentThreadStackBase):
       
 11990         (JSC::getPlatformThreadRegisters):
       
 11991         (JSC::otherThreadStackPointer):
       
 11992         * wrec/WREC.h:
       
 11993         * wrec/WRECGenerator.cpp:
       
 11994         (JSC::WREC::Generator::generateEnter):
       
 11995         (JSC::WREC::Generator::generateReturnSuccess):
       
 11996         (JSC::WREC::Generator::generateReturnFailure):
       
 11997         * wrec/WRECGenerator.h:
       
 11998         * wtf/FastMalloc.cpp:
       
 11999         * wtf/TCSpinLock.h:
       
 12000         (TCMalloc_SpinLock::Lock):
       
 12001         (TCMalloc_SpinLock::Unlock):
       
 12002         (TCMalloc_SlowLock):
       
 12003         * wtf/Threading.h:
       
 12004         * wtf/dtoa.cpp:
       
 12005         * yarr/RegexJIT.cpp:
       
 12006         (JSC::Yarr::RegexGenerator::generateEnter):
       
 12007         (JSC::Yarr::RegexGenerator::generateReturn):
       
 12008         * yarr/RegexJIT.h:
       
 12009 
       
 12010 2010-01-04  Maciej Stachowiak  <mjs@apple.com>
       
 12011 
       
 12012         Reviewed by Adam Barth.
       
 12013 
       
 12014         Clean up COMPILER macros and remove unused ones.
       
 12015         https://bugs.webkit.org/show_bug.cgi?id=33132
       
 12016         
       
 12017         Removed values are COMPILER(BORLAND) and COMPILER(CYGWIN) - they were
       
 12018         not used anywhere.
       
 12019 
       
 12020         * wtf/Platform.h:
       
 12021 
       
 12022 2010-01-03  Maciej Stachowiak  <mjs@apple.com>
       
 12023 
       
 12024         Reviewed by Eric Seidel.
       
 12025 
       
 12026         Update wtf/Platform.h to document the new system for porting macros.
       
 12027         https://bugs.webkit.org/show_bug.cgi?id=33130
       
 12028 
       
 12029         * wtf/Platform.h:
       
 12030 
       
 12031 2009-12-29  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 12032 
       
 12033         Reviewed by Maciej Stachowiak.
       
 12034 
       
 12035         PLATFORM(CAIRO) should be defined by WIN_CAIRO define
       
 12036         https://bugs.webkit.org/show_bug.cgi?id=22250
       
 12037 
       
 12038         * wtf/Platform.h: Define WTF_PLATFORM_CAIRO for GTK port only
       
 12039         For the WinCairo port WTF_PLATFORM_CAIRO is already defined in config.h
       
 12040 
       
 12041 2009-12-28  Shu Chang  <Chang.Shu@nokia.com>
       
 12042 
       
 12043         Reviewed by Laszlo Gombos.
       
 12044 
       
 12045         [Qt] Delete ThreadPrivate instance after it is finished.
       
 12046         https://bugs.webkit.org/show_bug.cgi?id=32614
       
 12047 
       
 12048         * wtf/qt/ThreadingQt.cpp:
       
 12049         (WTF::ThreadMonitor::instance):
       
 12050         (WTF::ThreadMonitor::threadFinished):
       
 12051         (WTF::createThreadInternal):
       
 12052         (WTF::detachThread):
       
 12053 
       
 12054 2009-12-28  Patrick Gansterer  <paroga@paroga.com>
       
 12055 
       
 12056         Reviewed by Maciej Stachowiak.
       
 12057 
       
 12058         Cleanup of #define JS_EXPORT.
       
 12059 
       
 12060         * API/JSBase.h:
       
 12061 
       
 12062 2009-12-27  Patrick Gansterer  <paroga@paroga.com>
       
 12063 
       
 12064         Reviewed by Adam Barth.
       
 12065 
       
 12066         WinCE buildfix (HWND_MESSAGE isn't supported there)
       
 12067 
       
 12068         * wtf/win/MainThreadWin.cpp:
       
 12069         (WTF::initializeMainThreadPlatform):
       
 12070 
       
 12071 2009-12-27  Patrick Gansterer  <paroga@paroga.com>
       
 12072 
       
 12073         Reviewed by Adam Barth.
       
 12074 
       
 12075         Added a file with WinMain function to link agains in WinCE.
       
 12076 
       
 12077         * os-win32/WinMain.cpp: Added.
       
 12078         (convertToUtf8):
       
 12079         (WinMain):
       
 12080 
       
 12081 2009-12-24  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 12082 
       
 12083         Unreviewed; revert of r52550.
       
 12084 
       
 12085         The change regressed the following LayoutTests for QtWebKit.
       
 12086 
       
 12087         fast/workers/worker-call.html -> crashed
       
 12088         fast/workers/worker-close.html -> crashed
       
 12089 
       
 12090         * wtf/qt/ThreadingQt.cpp:
       
 12091         (WTF::waitForThreadCompletion):
       
 12092         (WTF::detachThread):
       
 12093 
       
 12094 2009-12-24  Shu Chang  <Chang.Shu@nokia.com>
       
 12095 
       
 12096         Reviewed by Laszlo Gombos.
       
 12097 
       
 12098         [Qt] Fix memory leak by deleting instance of ThreadPrivate
       
 12099         in function waitForThreadCompletion(), synchronously, or in
       
 12100         detachThread(), asynchronously.
       
 12101         https://bugs.webkit.org/show_bug.cgi?id=32614 
       
 12102 
       
 12103         * wtf/qt/ThreadingQt.cpp:
       
 12104         (WTF::waitForThreadCompletion):
       
 12105         (WTF::detachThread):
       
 12106 
       
 12107 2009-12-23  Kwang Yul Seo  <skyul@company100.net>
       
 12108 
       
 12109         Reviewed by Laszlo Gombos.
       
 12110 
       
 12111         Include stddef.h for ptrdiff_t
       
 12112         https://bugs.webkit.org/show_bug.cgi?id=32891
       
 12113 
       
 12114         ptrdiff_t is typedef-ed in stddef.h.
       
 12115         Include stddef.h in jit/ExecutableAllocator.h.
       
 12116 
       
 12117         * jit/ExecutableAllocator.h:
       
 12118 
       
 12119 2009-12-23  Patrick Gansterer  <paroga@paroga.com>
       
 12120 
       
 12121         Reviewed by Eric Seidel.
       
 12122 
       
 12123         Buildfix after r47092.
       
 12124 
       
 12125         * wtf/wince/MemoryManager.cpp:
       
 12126         (WTF::tryFastMalloc):
       
 12127         (WTF::tryFastZeroedMalloc):
       
 12128         (WTF::tryFastCalloc):
       
 12129         (WTF::tryFastRealloc):
       
 12130 
       
 12131 2009-12-23  Kent Tamura  <tkent@chromium.org>
       
 12132 
       
 12133         Reviewed by Darin Adler.
       
 12134 
       
 12135         HTMLInputElement::valueAsDate getter support.
       
 12136         https://bugs.webkit.org/show_bug.cgi?id=32876
       
 12137 
       
 12138         Expose dateToDaysFrom1970().
       
 12139 
       
 12140         * JavaScriptCore.exp:
       
 12141         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 12142         * wtf/DateMath.cpp:
       
 12143         (WTF::dateToDaysFrom1970):
       
 12144         * wtf/DateMath.h:
       
 12145 
       
 12146 2009-12-22  Darin Adler  <darin@apple.com>
       
 12147 
       
 12148         Reviewed by Mark Rowe.
       
 12149 
       
 12150         Turn off datagrid by default, at least for all platforms Apple ships.
       
 12151         The datagrid implementation isn't ready for general web use yet.
       
 12152 
       
 12153         * Configurations/FeatureDefines.xcconfig: Turn off datagrid by default.
       
 12154 
       
 12155 2009-12-22  Steve Block  <steveblock@google.com>
       
 12156 
       
 12157         Reviewed by David Levin.
       
 12158 
       
 12159         Updates Android's scheduleDispatchFunctionsOnMainThread() to use new
       
 12160         AndroidThreading class, rather than using JavaSharedClient directly.
       
 12161         This fixes the current layering violation.
       
 12162         https://bugs.webkit.org/show_bug.cgi?id=32651
       
 12163 
       
 12164         The pattern is copied from Chromium, which uses the ChromiumThreading
       
 12165         class. This patch also fixes the style in ChromiumThreading.h.
       
 12166 
       
 12167         * wtf/android/AndroidThreading.h: Added. Declares AndroidThreading.
       
 12168         * wtf/android/MainThreadAndroid.cpp: Modified
       
 12169         (WTF::scheduleDispatchFunctionsOnMainThread): Uses AndroidThreading.
       
 12170         * wtf/chromium/ChromiumThreading.h: Modified. Fixes style.
       
 12171 
       
 12172 2009-12-22  Gavin Barraclough  <barraclough@apple.com>
       
 12173 
       
 12174         Reviewed by Sam Weinig.
       
 12175 
       
 12176         Fix a couple of problems with UntypedPtrAndBitfield.
       
 12177 
       
 12178         Add a m_leaksPtr to reduce false positives from leaks in debug builds
       
 12179         (this isn't perfect because we'd like a solution for release builds,
       
 12180         but this is now at least as good as a PtrAndFlags would be).
       
 12181 
       
 12182         Switch SmallStringsto use a regular string for the base, rather than
       
 12183         a static one.  UntypedPtrAndBitfield assumes all strings are at least
       
 12184         8 byte aligned; this migt not be true of static strings.  Shared buffers
       
 12185         are heap allocated, as are all UStringImpls other than static strings.
       
 12186         Static strings cannot end up being the owner string of substrings,
       
 12187         since the only static strings are length 0.
       
 12188 
       
 12189         * runtime/SmallStrings.cpp:
       
 12190         (JSC::SmallStringsStorage::SmallStringsStorage):
       
 12191         * runtime/UStringImpl.h:
       
 12192         (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
       
 12193         (JSC::UStringImpl::UStringImpl):
       
 12194 
       
 12195 2009-12-22  Kwang Yul Seo  <skyul@company100.net>
       
 12196 
       
 12197         Reviewed by Darin Adler.
       
 12198 
       
 12199         RVCT (__ARMCC_VERSION < 400000) does not provide strcasecmp and strncasecmp
       
 12200         https://bugs.webkit.org/show_bug.cgi?id=32857
       
 12201 
       
 12202         Add implementation of strcasecmp and strncasecmp for RVCT < 4.0
       
 12203         because earlier versions of RVCT 4.0 does not provide these functions.
       
 12204 
       
 12205         * wtf/StringExtras.cpp: Added.
       
 12206         (strcasecmp):
       
 12207         (strncasecmp):
       
 12208         * wtf/StringExtras.h:
       
 12209 
       
 12210 2009-12-22  Kwang Yul Seo  <skyul@company100.net>
       
 12211 
       
 12212         Reviewed by Darin Adler.
       
 12213 
       
 12214         Define ALWAYS_INLINE and WTF_PRIVATE_INLINE to __forceinline for RVCT
       
 12215         https://bugs.webkit.org/show_bug.cgi?id=32853
       
 12216 
       
 12217         Use __forceinline forces RVCT to compile a C or C++ function
       
 12218         inline. The compiler attempts to inline the function, regardless of
       
 12219         the characteristics of the function.
       
 12220 
       
 12221         * wtf/AlwaysInline.h:
       
 12222         * wtf/FastMalloc.h:
       
 12223 
       
 12224 2009-12-21  Simon Hausmann  <simon.hausmann@nokia.com>
       
 12225 
       
 12226         Prospective GTK build fix: Add UStringImpl.cpp/h to the build.
       
 12227 
       
 12228         * GNUmakefile.am:
       
 12229 
       
 12230 2009-12-21  Simon Hausmann  <simon.hausmann@nokia.com>
       
 12231 
       
 12232         Fix the Qt build, add UStringImpl.cpp to the build.
       
 12233 
       
 12234         * JavaScriptCore.pri:
       
 12235 
       
 12236 2009-12-21  Gavin Barraclough  <barraclough@apple.com>
       
 12237 
       
 12238         Windows Build fix part 5.
       
 12239         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
 12240 
       
 12241 2009-12-21  Gavin Barraclough  <barraclough@apple.com>
       
 12242 
       
 12243         Reviewed by NOBODY (build fix).
       
 12244         Fix breakage of world introduced in build fix to r52463.
       
 12245 
       
 12246         * runtime/UStringImpl.h:
       
 12247 
       
 12248 2009-12-21  Gavin Barraclough  <barraclough@apple.com>
       
 12249 
       
 12250         Reviewed by Darin Adler.
       
 12251 
       
 12252         https://bugs.webkit.org/show_bug.cgi?id=32831
       
 12253         Replace UString::Rep implementation, following introduction of ropes to JSC.
       
 12254 
       
 12255             * Remove redundant overcapacity mechanisms.
       
 12256             * Reduce memory cost of Rep's.
       
 12257             * Add an inline storage mechanism akin to that in WebCore's StringImpl.
       
 12258 
       
 12259         ~1% Sunspider progression.
       
 12260 
       
 12261         * JavaScriptCore.exp:
       
 12262         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 12263         * runtime/JSString.cpp:
       
 12264         (JSC::JSString::resolveRope):
       
 12265         * runtime/SmallStrings.cpp:
       
 12266         (JSC::SmallStringsStorage::SmallStringsStorage):
       
 12267         * runtime/UString.cpp:
       
 12268         (JSC::initializeUString):
       
 12269         (JSC::createRep):
       
 12270         (JSC::UString::createFromUTF8):
       
 12271         (JSC::UString::createUninitialized):
       
 12272         (JSC::UString::spliceSubstringsWithSeparators):
       
 12273         (JSC::UString::replaceRange):
       
 12274         (JSC::UString::ascii):
       
 12275         (JSC::UString::operator=):
       
 12276         (JSC::UString::toStrictUInt32):
       
 12277         (JSC::equal):
       
 12278         * runtime/UString.h:
       
 12279         (JSC::UString::isEmpty):
       
 12280         (JSC::UString::cost):
       
 12281         (JSC::makeString):
       
 12282         * runtime/UStringImpl.cpp: Added.
       
 12283         (JSC::UStringImpl::baseSharedBuffer):
       
 12284         (JSC::UStringImpl::sharedBuffer):
       
 12285         (JSC::UStringImpl::destroy):
       
 12286         (JSC::UStringImpl::computeHash):
       
 12287         * runtime/UStringImpl.h: Added.
       
 12288         (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
       
 12289         (JSC::UntypedPtrAndBitfield::asPtr):
       
 12290         (JSC::UntypedPtrAndBitfield::operator&=):
       
 12291         (JSC::UntypedPtrAndBitfield::operator|=):
       
 12292         (JSC::UntypedPtrAndBitfield::operator&):
       
 12293         (JSC::UStringImpl::create):
       
 12294         (JSC::UStringImpl::createCopying):
       
 12295         (JSC::UStringImpl::createUninitialized):
       
 12296         (JSC::UStringImpl::data):
       
 12297         (JSC::UStringImpl::size):
       
 12298         (JSC::UStringImpl::cost):
       
 12299         (JSC::UStringImpl::hash):
       
 12300         (JSC::UStringImpl::computedHash):
       
 12301         (JSC::UStringImpl::setHash):
       
 12302         (JSC::UStringImpl::identifierTable):
       
 12303         (JSC::UStringImpl::setIdentifierTable):
       
 12304         (JSC::UStringImpl::ref):
       
 12305         (JSC::UStringImpl::deref):
       
 12306         (JSC::UStringImpl::allocChars):
       
 12307         (JSC::UStringImpl::copyChars):
       
 12308         (JSC::UStringImpl::computeHash):
       
 12309         (JSC::UStringImpl::null):
       
 12310         (JSC::UStringImpl::empty):
       
 12311         (JSC::UStringImpl::checkConsistency):
       
 12312         (JSC::UStringImpl::):
       
 12313         (JSC::UStringImpl::UStringImpl):
       
 12314         (JSC::UStringImpl::operator new):
       
 12315         (JSC::UStringImpl::bufferOwnerString):
       
 12316         (JSC::UStringImpl::bufferOwnership):
       
 12317         (JSC::UStringImpl::isStatic):
       
 12318 
       
 12319 2009-12-18  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 12320 
       
 12321         Reviewed by Kenneth Rohde Christiansen.
       
 12322 
       
 12323         Move some build decisions from Qt build system into source files
       
 12324         https://bugs.webkit.org/show_bug.cgi?id=31956
       
 12325 
       
 12326         * JavaScriptCore.pri: Compile files unconditionally
       
 12327         * jit/ExecutableAllocatorPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN)
       
 12328         * jit/ExecutableAllocatorWin.cpp: Guard with PLATFORM(WIN_OS)
       
 12329         * runtime/MarkStackPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN)
       
 12330         * runtime/MarkStackSymbian.cpp: Guard with PLATFORM(SYMBIAN)
       
 12331         * runtime/MarkStackWin.cpp: Guard with PLATFORM(WIN_OS)
       
 12332         * wtf/Platform.h: Guard ENABLE_JSC_MULTIPLE_THREADS with ENABLE_SINGLE_THREADED for the Qt port
       
 12333         * wtf/ThreadingNone.cpp: Guard with ENABLE(SINGLE_THREADED)
       
 12334         * wtf/qt/ThreadingQt.cpp: Guard with !ENABLE(SINGLE_THREADED)
       
 12335 
       
 12336 2009-12-18  Gavin Barraclough  <barraclough@apple.com>
       
 12337 
       
 12338         Reviewed by Sam Weinig.
       
 12339 
       
 12340         Add createNonCopying method to UString to make replace constructor passed bool,
       
 12341         to make behaviour more explicit.  Add createFromUTF8 to UString (wrapping method
       
 12342         on UString::Rep), since other cases of transliteration (e.g.  from ascii) are
       
 12343         performed in UString constructors.  Add/use setHash & size() accessors on Rep,
       
 12344         rather than accessing _hash/len directly.
       
 12345 
       
 12346         * API/JSClassRef.cpp:
       
 12347         (OpaqueJSClass::OpaqueJSClass):
       
 12348         * API/OpaqueJSString.cpp:
       
 12349         (OpaqueJSString::ustring):
       
 12350         * JavaScriptCore.exp:
       
 12351         * runtime/ArrayPrototype.cpp:
       
 12352         (JSC::arrayProtoFuncToString):
       
 12353         * runtime/Identifier.cpp:
       
 12354         (JSC::Identifier::equal):
       
 12355         (JSC::CStringTranslator::translate):
       
 12356         (JSC::UCharBufferTranslator::translate):
       
 12357         (JSC::Identifier::addSlowCase):
       
 12358         * runtime/JSString.cpp:
       
 12359         (JSC::JSString::resolveRope):
       
 12360         * runtime/JSString.h:
       
 12361         (JSC::JSString::Rope::Fiber::refAndGetLength):
       
 12362         (JSC::JSString::Rope::append):
       
 12363         * runtime/StringBuilder.h:
       
 12364         (JSC::StringBuilder::release):
       
 12365         * runtime/StringConstructor.cpp:
       
 12366         (JSC::stringFromCharCodeSlowCase):
       
 12367         * runtime/StringPrototype.cpp:
       
 12368         (JSC::substituteBackreferencesSlow):
       
 12369         (JSC::stringProtoFuncToLowerCase):
       
 12370         (JSC::stringProtoFuncToUpperCase):
       
 12371         (JSC::stringProtoFuncFontsize):
       
 12372         (JSC::stringProtoFuncLink):
       
 12373         * runtime/UString.cpp:
       
 12374         (JSC::UString::UString):
       
 12375         (JSC::UString::createNonCopying):
       
 12376         (JSC::UString::createFromUTF8):
       
 12377         * runtime/UString.h:
       
 12378         (JSC::UString::Rep::setHash):
       
 12379         (JSC::UString::~UString):
       
 12380         (JSC::makeString):
       
 12381 
       
 12382 2009-12-18  Geoffrey Garen  <ggaren@apple.com>
       
 12383 
       
 12384         Reviewed by Cameron Zwarich and Gavin Barraclough.
       
 12385         
       
 12386         Changed Register constructors to assignment operators, to streamline
       
 12387         moving values into registers. (In theory, there's no difference between
       
 12388         the two, since the constructor should just inline away, but there seems
       
 12389         to be a big difference in the addled mind of the GCC optimizer.)
       
 12390 
       
 12391         In the interpreter, this is a 3.5% SunSpider speedup and a 1K-2K
       
 12392         reduction in stack usage per privateExecute stack frame.
       
 12393 
       
 12394         * interpreter/CallFrame.h:
       
 12395         (JSC::ExecState::setCalleeArguments):
       
 12396         (JSC::ExecState::setCallerFrame):
       
 12397         (JSC::ExecState::setScopeChain):
       
 12398         (JSC::ExecState::init):
       
 12399         (JSC::ExecState::setArgumentCount):
       
 12400         (JSC::ExecState::setCallee):
       
 12401         (JSC::ExecState::setCodeBlock): Added a little bit of casting so these
       
 12402         functions could use the new Register assignment operators.
       
 12403 
       
 12404         * interpreter/Register.h:
       
 12405         (JSC::Register::withInt):
       
 12406         (JSC::Register::Register):
       
 12407         (JSC::Register::operator=): Swapped in assignment operators for constructors.
       
 12408 
       
 12409 2009-12-18  Yongjun Zhang  <yongjun.zhang@nokia.com>
       
 12410 
       
 12411         Reviewed by Simon Hausmann.
       
 12412 
       
 12413         https://bugs.webkit.org/show_bug.cgi?id=32713
       
 12414         [Qt] make wtf/Assertions.h compile in winscw compiler.
       
 12415 
       
 12416         Add string arg before ellipsis to help winscw compiler resolve variadic
       
 12417         macro definitions in wtf/Assertions.h. 
       
 12418 
       
 12419         * wtf/Assertions.h:
       
 12420 
       
 12421 2009-12-18  Geoffrey Garen  <ggaren@apple.com>
       
 12422 
       
 12423         Reviewed by Adam Roben.
       
 12424 
       
 12425         Fixed intermittent failure seen on Windows buildbot, and in other JSC
       
 12426         API clients.
       
 12427         
       
 12428         Added a WeakGCPtr class and changed OpaqueJSClass::cachedPrototype to
       
 12429         use it, to avoid vending a stale object as a prototype.
       
 12430 
       
 12431         * API/JSClassRef.cpp:
       
 12432         (OpaqueJSClassContextData::OpaqueJSClassContextData):
       
 12433         (OpaqueJSClass::prototype):
       
 12434         * API/JSClassRef.h: Use WeakGCPtr.
       
 12435 
       
 12436         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 12437         * runtime/WeakGCPtr.h: Added.
       
 12438         (JSC::WeakGCPtr::WeakGCPtr):
       
 12439         (JSC::WeakGCPtr::get):
       
 12440         (JSC::WeakGCPtr::clear):
       
 12441         (JSC::WeakGCPtr::operator*):
       
 12442         (JSC::WeakGCPtr::operator->):
       
 12443         (JSC::WeakGCPtr::operator!):
       
 12444         (JSC::WeakGCPtr::operator bool):
       
 12445         (JSC::WeakGCPtr::operator UnspecifiedBoolType):
       
 12446         (JSC::WeakGCPtr::assign):
       
 12447         (JSC::::operator):
       
 12448         (JSC::operator==):
       
 12449         (JSC::operator!=):
       
 12450         (JSC::static_pointer_cast):
       
 12451         (JSC::const_pointer_cast):
       
 12452         (JSC::getPtr): Added WeakGCPtr to the project.
       
 12453 
       
 12454 2009-12-18  Gavin Barraclough  <barraclough@apple.com>
       
 12455 
       
 12456         Reviewed by Sam Weinig.
       
 12457 
       
 12458         https://bugs.webkit.org/show_bug.cgi?id=32720
       
 12459 
       
 12460         * JavaScriptCore.exp:
       
 12461             - Remove exports for UString::append
       
 12462         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 12463             - Make StringBuilder a private header (was project).
       
 12464 
       
 12465 2009-12-18  Martin Robinson  <martin.james.robinson@gmail.com>
       
 12466 
       
 12467         Reviewed by Gustavo Noronha Silva.
       
 12468 
       
 12469         [GTK] GRefPtr does not take a reference when assigned a raw pointer
       
 12470         https://bugs.webkit.org/show_bug.cgi?id=32709
       
 12471 
       
 12472         Ensure that when assigning a raw pointer to a GRefPtr, the reference
       
 12473         count is incremented. Also remove the GRefPtr conversion overload as
       
 12474         GRefPtr types have necessarily incompatible reference counting.
       
 12475 
       
 12476         * wtf/gtk/GRefPtr.h:
       
 12477         (WTF::GRefPtr::operator=):
       
 12478 
       
 12479 2009-12-18  Simon Hausmann  <simon.hausmann@nokia.com>
       
 12480 
       
 12481         Reviewed by Tor Arne Vestbø.
       
 12482 
       
 12483         [Qt] Clean up the qmake build system to distinguish between trunk builds and package builds
       
 12484 
       
 12485         https://bugs.webkit.org/show_bug.cgi?id=32716
       
 12486 
       
 12487         * pcre/pcre.pri: Use standalone_package instead of QTDIR_build
       
 12488 
       
 12489 2009-12-18  Martin Robinson  <martin.james.robinson@gmail.com>
       
 12490 
       
 12491         Reviewed by Gustavo Noronha Silva.
       
 12492 
       
 12493         [GTK] Compile warning from line 29 of GRefPtr.cpp
       
 12494         https://bugs.webkit.org/show_bug.cgi?id=32703
       
 12495 
       
 12496         Fix memory leak and compiler warning in GRefPtr GHashTable template
       
 12497         specialization.
       
 12498 
       
 12499         * wtf/gtk/GRefPtr.cpp:
       
 12500         (WTF::refGPtr):
       
 12501 
       
 12502 2009-12-17  Sam Weinig  <sam@webkit.org>
       
 12503 
       
 12504         Reviewed by Mark Rowe.
       
 12505 
       
 12506         Add BUILDING_ON_SNOW_LEOPARD and TARGETING_SNOW_LEOPARD #defines.
       
 12507 
       
 12508         * wtf/Platform.h:
       
 12509 
       
 12510 2009-12-17  Adam Roben  <aroben@apple.com>
       
 12511 
       
 12512         Sync JavaScriptCore.vcproj with JavaScriptCore.xcodeproj and the
       
 12513         source tree
       
 12514 
       
 12515         Fixes <http://webkit.org/b/32665>.
       
 12516 
       
 12517         Reviewed by Ada Chan.
       
 12518 
       
 12519         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Moved
       
 12520         around files and filters so that the structure matches
       
 12521         JavaScriptCore.xcodeproj and the source tree. A few headers that were
       
 12522         previously omitted have been added, as well as JSZombie.{cpp,h}.
       
 12523 
       
 12524 2009-12-17  Adam Roben  <aroben@apple.com>
       
 12525 
       
 12526         Remove HeavyProfile and TreeProfile completely
       
 12527 
       
 12528         These were mostly removed in r42808, but the empty files were left in
       
 12529         place.
       
 12530 
       
 12531         Fixes <http://webkit.org/b/32664>.
       
 12532 
       
 12533         Reviewed by John Sullivan.
       
 12534 
       
 12535         * Android.mk:
       
 12536         * GNUmakefile.am:
       
 12537         * JavaScriptCore.gypi:
       
 12538         * JavaScriptCore.pri:
       
 12539         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
 12540         * JavaScriptCoreSources.bkl:
       
 12541         Removed HeavyProfile/TreeProfile source files.
       
 12542 
       
 12543         * profiler/HeavyProfile.cpp: Removed.
       
 12544         * profiler/HeavyProfile.h: Removed.
       
 12545         * profiler/TreeProfile.cpp: Removed.
       
 12546         * profiler/TreeProfile.h: Removed.
       
 12547 
       
 12548 2009-12-17  Martin Robinson  <martin.james.robinson@gmail.com>
       
 12549 
       
 12550         Reviewed by Gustavo Noronha Silva.
       
 12551 
       
 12552         [GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs
       
 12553         https://bugs.webkit.org/show_bug.cgi?id=21599
       
 12554 
       
 12555         Implement GRefPtr, a smart pointer for reference counted GObject types.
       
 12556 
       
 12557         * GNUmakefile.am:
       
 12558         * wtf/gtk/GOwnPtr.cpp:
       
 12559         (WTF::GDir):
       
 12560         * wtf/gtk/GRefPtr.h: Added.
       
 12561         (WTF::):
       
 12562         (WTF::GRefPtr::GRefPtr):
       
 12563         (WTF::GRefPtr::~GRefPtr):
       
 12564         (WTF::GRefPtr::clear):
       
 12565         (WTF::GRefPtr::get):
       
 12566         (WTF::GRefPtr::operator*):
       
 12567         (WTF::GRefPtr::operator->):
       
 12568         (WTF::GRefPtr::operator!):
       
 12569         (WTF::GRefPtr::operator UnspecifiedBoolType):
       
 12570         (WTF::GRefPtr::hashTableDeletedValue):
       
 12571         (WTF::::operator):
       
 12572         (WTF::::swap):
       
 12573         (WTF::swap):
       
 12574         (WTF::operator==):
       
 12575         (WTF::operator!=):
       
 12576         (WTF::static_pointer_cast):
       
 12577         (WTF::const_pointer_cast):
       
 12578         (WTF::getPtr):
       
 12579         (WTF::adoptGRef):
       
 12580         (WTF::refGPtr):
       
 12581         (WTF::derefGPtr):
       
 12582 
       
 12583 2009-12-17  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
       
 12584 
       
 12585         Unreviewed. Build fixes for make distcheck.
       
 12586 
       
 12587         * GNUmakefile.am:
       
 12588 
       
 12589 2009-12-16  Geoffrey Garen  <ggaren@apple.com>
       
 12590 
       
 12591         Reviewed by Oliver Hunt.
       
 12592 
       
 12593         Fixed <rdar://problem/7355025> Interpreter::privateExecute macro generates
       
 12594         bloated code
       
 12595         
       
 12596         This patch cuts Interpreter stack use by about a third.
       
 12597 
       
 12598         * bytecode/Opcode.h: Changed Opcode to const void* to work with the
       
 12599         const static initiliazation we want to do in Interpreter::privateExecute.
       
 12600 
       
 12601         * interpreter/Interpreter.cpp:
       
 12602         (JSC::Interpreter::Interpreter): Moved hashtable initialization here to
       
 12603         avoid polluting Interpreter::privateExecute's stack, and changed it from a
       
 12604         series of add() calls to one add() call in a loop, to cut down on code size.
       
 12605 
       
 12606         (JSC::Interpreter::privateExecute): Changed a series of label computations
       
 12607         to a copy of a compile-time constant array to cut down on code size.
       
 12608 
       
 12609 2009-12-16  Mark Rowe  <mrowe@apple.com>
       
 12610 
       
 12611         Build fix.  Disable debug variants of WebKit frameworks.
       
 12612 
       
 12613         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 12614 
       
 12615 2009-12-15  Geoffrey Garen  <ggaren@apple.com>
       
 12616 
       
 12617         Reviewed by Sam "r=me" Weinig.
       
 12618 
       
 12619         https://bugs.webkit.org/show_bug.cgi?id=32498
       
 12620         <rdar://problem/7471495>
       
 12621         REGRESSION(r51978-r52039): AJAX "Mark This Forum Read" function no longer
       
 12622         works
       
 12623         
       
 12624         Fixed a tyop.
       
 12625 
       
 12626         * runtime/Operations.h:
       
 12627         (JSC::jsAdd): Use the '&&' operator, not the ',' operator.
       
 12628 
       
 12629 2009-12-15  Geoffrey Garen  <ggaren@apple.com>
       
 12630 
       
 12631         Try to fix the windows build: don't export this inlined function.
       
 12632 
       
 12633         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 12634 
       
 12635 2009-12-15  Geoffrey Garen  <ggaren@apple.com>
       
 12636 
       
 12637         Reviewed by Beth Dakin.
       
 12638 
       
 12639         Inlined JSCell's operator new.
       
 12640         
       
 12641         3.7% speedup on bench-allocate-nonretained.js.
       
 12642 
       
 12643         * JavaScriptCore.exp:
       
 12644         * runtime/JSCell.cpp:
       
 12645         * runtime/JSCell.h:
       
 12646         (JSC::JSCell::operator new):
       
 12647 
       
 12648 2009-12-15  Geoffrey Garen  <ggaren@apple.com>
       
 12649 
       
 12650         Reviewed by Oliver Hunt.
       
 12651 
       
 12652         Removed the number heap, replacing it with a one-item free list for
       
 12653         numbers, taking advantage of the fact that two number cells fit inside
       
 12654         the space for one regular cell, and number cells don't require destruction.
       
 12655         
       
 12656         SunSpider says 1.6% faster in JSVALUE32 mode (the only mode that
       
 12657         heap-allocates numbers).
       
 12658         
       
 12659         SunSpider says 1.1% faster in JSVALUE32_64 mode. v8 says 0.8% faster
       
 12660         in JSVALUE32_64 mode. 10% speedup on bench-alloc-nonretained.js. 6%
       
 12661         speedup on bench-alloc-retained.js.
       
 12662         
       
 12663         There's a lot of formulaic change in this patch, but not much substance.
       
 12664 
       
 12665         * JavaScriptCore.exp:
       
 12666         * debugger/Debugger.cpp:
       
 12667         (JSC::Debugger::recompileAllJSFunctions):
       
 12668         * runtime/Collector.cpp:
       
 12669         (JSC::Heap::Heap):
       
 12670         (JSC::Heap::destroy):
       
 12671         (JSC::Heap::allocateBlock):
       
 12672         (JSC::Heap::freeBlock):
       
 12673         (JSC::Heap::freeBlockPtr):
       
 12674         (JSC::Heap::freeBlocks):
       
 12675         (JSC::Heap::recordExtraCost):
       
 12676         (JSC::Heap::allocate):
       
 12677         (JSC::Heap::resizeBlocks):
       
 12678         (JSC::Heap::growBlocks):
       
 12679         (JSC::Heap::shrinkBlocks):
       
 12680         (JSC::Heap::markConservatively):
       
 12681         (JSC::Heap::clearMarkBits):
       
 12682         (JSC::Heap::markedCells):
       
 12683         (JSC::Heap::sweep):
       
 12684         (JSC::Heap::markRoots):
       
 12685         (JSC::Heap::objectCount):
       
 12686         (JSC::Heap::addToStatistics):
       
 12687         (JSC::Heap::statistics):
       
 12688         (JSC::Heap::isBusy):
       
 12689         (JSC::Heap::reset):
       
 12690         (JSC::Heap::collectAllGarbage):
       
 12691         (JSC::Heap::primaryHeapBegin):
       
 12692         (JSC::Heap::primaryHeapEnd):
       
 12693         * runtime/Collector.h:
       
 12694         (JSC::): Removed all code pertaining to the number heap, and changed all
       
 12695         heap template functions and classes to non-template functions and classes.
       
 12696 
       
 12697         (JSC::Heap::allocateNumber): A new optimization to replace the number
       
 12698         heap: allocate half-sized number cells in pairs, returning the first
       
 12699         cell and caching the second cell for the next allocation.
       
 12700 
       
 12701         * runtime/CollectorHeapIterator.h:
       
 12702         (JSC::LiveObjectIterator::LiveObjectIterator):
       
 12703         (JSC::LiveObjectIterator::operator++):
       
 12704         (JSC::DeadObjectIterator::DeadObjectIterator):
       
 12705         (JSC::DeadObjectIterator::operator++):
       
 12706         (JSC::ObjectIterator::ObjectIterator):
       
 12707         (JSC::ObjectIterator::operator++):
       
 12708         * runtime/JSCell.h:
       
 12709         (JSC::JSCell::isNumber): Removed all code pertaining to the number heap,
       
 12710         and changed all heap template functions and classes to non-template functions
       
 12711         and classes.
       
 12712 
       
 12713 2009-12-15  Zoltan Horvath  <zoltan@webkit.org>
       
 12714 
       
 12715         Reviewed by Darin Adler.
       
 12716 
       
 12717         Allow custom memory allocation control for WeakGCMap class
       
 12718         https://bugs.webkit.org/show_bug.cgi?id=32547
       
 12719 
       
 12720         Inherits WeakGCMap from FastAllocBase because it is instantiated by
       
 12721         'new' at: WebCore/dom/Document.cpp:512.
       
 12722 
       
 12723         * runtime/WeakGCMap.h:
       
 12724 
       
 12725 2009-12-15  Zoltan Horvath  <zoltan@webkit.org>
       
 12726 
       
 12727         Reviewed by Darin Adler.
       
 12728 
       
 12729         Allow custom memory allocation control for dtoa's P5Node struct
       
 12730         https://bugs.webkit.org/show_bug.cgi?id=32544
       
 12731 
       
 12732         Inherits P5Node struct from Noncopyable because it is instantiated by
       
 12733         'new' at wtf/dtoa.cpp:588 and don't need to be copyable.
       
 12734 
       
 12735         * wtf/dtoa.cpp:
       
 12736 
       
 12737 2009-12-14  Geoffrey Garen  <ggaren@apple.com>
       
 12738 
       
 12739         Reviewed by Simon Fraser.
       
 12740 
       
 12741         https://bugs.webkit.org/show_bug.cgi?id=32524
       
 12742         REGRESSION(52084): fast/dom/prototypes.html failing two CSS tests
       
 12743 
       
 12744         * wtf/StdLibExtras.h:
       
 12745         (WTF::bitCount): The original patch put the parentheses in the wrong
       
 12746         place, completely changing the calculation and making it almost always
       
 12747         wrong. Moved the parentheses around the '+' operation, like the original
       
 12748         compiler warning suggested.
       
 12749 
       
 12750 2009-12-14  Gabor Loki  <loki@inf.u-szeged.hu>
       
 12751 
       
 12752         Unreviewed trivial buildfix.
       
 12753 
       
 12754         Fix crosses initialization of usedPrimaryBlocks for JSValue32
       
 12755 
       
 12756         * runtime/Collector.cpp:
       
 12757         (JSC::Heap::markConservatively):
       
 12758 
       
 12759 2009-12-14  Csaba Osztrogonác  <ossy@webkit.org>
       
 12760 
       
 12761         Reviewed by Simon Hausmann.
       
 12762 
       
 12763         GCC 4.3.x warning fixed. Suggested parantheses added.
       
 12764         warning: ../../../JavaScriptCore/wtf/StdLibExtras.h:77: warning: suggest parentheses around + or - in operand of &
       
 12765 
       
 12766         * wtf/StdLibExtras.h:
       
 12767         (WTF::bitCount):
       
 12768 
       
 12769 2009-12-13  Geoffrey Garen  <ggaren@apple.com>
       
 12770 
       
 12771         Reviewed by Sam Weinig.
       
 12772         
       
 12773         Changed GC from mark-sweep to mark-allocate.
       
 12774         
       
 12775         Added WeakGCMap to keep WebCore blissfully ignorant about objects that
       
 12776         have become garbage but haven't run their destructors yet.
       
 12777         
       
 12778         1% SunSpider speedup.
       
 12779         7.6% v8 speedup (37% splay speedup).
       
 12780         17% speedup on bench-alloc-nonretained.js.
       
 12781         18% speedup on bench-alloc-retained.js.
       
 12782 
       
 12783         * API/JSBase.cpp:
       
 12784         (JSGarbageCollect):
       
 12785         * API/JSContextRef.cpp:
       
 12786         * JavaScriptCore.exp:
       
 12787         * JavaScriptCore.xcodeproj/project.pbxproj: Updated for renames and new
       
 12788         files.
       
 12789 
       
 12790         * debugger/Debugger.cpp:
       
 12791         (JSC::Debugger::recompileAllJSFunctions): Updated to use the Collector
       
 12792         iterator abstraction.
       
 12793 
       
 12794         * jsc.cpp:
       
 12795         (functionGC): Updated for rename.
       
 12796 
       
 12797         * runtime/Collector.cpp: Slightly reduced the number of allocations per
       
 12798         collection, so that small workloads only allocate on collector block,
       
 12799         rather than two.
       
 12800 
       
 12801         (JSC::Heap::Heap): Updated to use the new allocateBlock function.
       
 12802 
       
 12803         (JSC::Heap::destroy): Updated to use the new freeBlocks function.
       
 12804 
       
 12805         (JSC::Heap::allocateBlock): New function to initialize a block when
       
 12806         allocating it.
       
 12807 
       
 12808         (JSC::Heap::freeBlock): Consolidated the responsibility for running
       
 12809         destructors into this function.
       
 12810 
       
 12811         (JSC::Heap::freeBlocks): Updated to use freeBlock.
       
 12812 
       
 12813         (JSC::Heap::recordExtraCost): Sweep the heap in this reporting function,
       
 12814         so that allocation, which is more common, doesn't have to check extraCost.
       
 12815 
       
 12816         (JSC::Heap::heapAllocate): Run destructors right before recycling a
       
 12817         garbage cell. This has better cache utilization than a separate sweep phase.
       
 12818 
       
 12819         (JSC::Heap::resizeBlocks):
       
 12820         (JSC::Heap::growBlocks):
       
 12821         (JSC::Heap::shrinkBlocks): New set of functions for managing the size of
       
 12822         the heap, now that the heap doesn't maintain any information about its
       
 12823         size.
       
 12824 
       
 12825         (JSC::isPointerAligned):
       
 12826         (JSC::isHalfCellAligned):
       
 12827         (JSC::isPossibleCell):
       
 12828         (JSC::isCellAligned):
       
 12829         (JSC::Heap::markConservatively): Cleaned up this code a bit.
       
 12830 
       
 12831         (JSC::Heap::clearMarkBits):
       
 12832         (JSC::Heap::markedCells): Some helper functions for examining the the mark
       
 12833         bitmap.
       
 12834 
       
 12835         (JSC::Heap::sweep): Simplified this function by using a DeadObjectIterator.
       
 12836 
       
 12837         (JSC::Heap::markRoots): Reordered some operations for clarity.
       
 12838 
       
 12839         (JSC::Heap::objectCount):
       
 12840         (JSC::Heap::addToStatistics):
       
 12841         (JSC::Heap::statistics): Rewrote these functions to calculate an object
       
 12842         count on demand, since the heap doesn't maintain this information by 
       
 12843         itself.
       
 12844 
       
 12845         (JSC::Heap::reset): New function for resetting the heap once we've
       
 12846         exhausted heap space.
       
 12847 
       
 12848         (JSC::Heap::collectAllGarbage): This function matches the old collect()
       
 12849         behavior, but it's now an uncommon function used only by API.
       
 12850 
       
 12851         * runtime/Collector.h:
       
 12852         (JSC::CollectorBitmap::count):
       
 12853         (JSC::CollectorBitmap::isEmpty): Added some helper functions for managing
       
 12854         the collector mark bitmap.
       
 12855 
       
 12856         (JSC::Heap::reportExtraMemoryCost): Changed reporting from cell equivalents
       
 12857         to bytes, so it's easier to understand.
       
 12858         
       
 12859         * runtime/CollectorHeapIterator.h:
       
 12860         (JSC::CollectorHeapIterator::CollectorHeapIterator):
       
 12861         (JSC::CollectorHeapIterator::operator!=):
       
 12862         (JSC::CollectorHeapIterator::operator*):
       
 12863         (JSC::CollectorHeapIterator::advance):
       
 12864         (JSC::::LiveObjectIterator):
       
 12865         (JSC::::operator):
       
 12866         (JSC::::DeadObjectIterator):
       
 12867         (JSC::::ObjectIterator): New iterators for encapsulating details about
       
 12868         heap layout, and what's live and dead on the heap.
       
 12869 
       
 12870         * runtime/JSArray.cpp:
       
 12871         (JSC::JSArray::putSlowCase):
       
 12872         (JSC::JSArray::increaseVectorLength): Delay reporting extra cost until
       
 12873         we're fully constructed, so the heap mark phase won't visit us in an
       
 12874         invalid state.
       
 12875 
       
 12876         * runtime/JSCell.h:
       
 12877         (JSC::JSCell::):
       
 12878         (JSC::JSCell::createDummyStructure):
       
 12879         (JSC::JSCell::JSCell):
       
 12880         * runtime/JSGlobalData.cpp:
       
 12881         (JSC::JSGlobalData::JSGlobalData):
       
 12882         * runtime/JSGlobalData.h: Added a dummy cell to simplify allocation logic.
       
 12883 
       
 12884         * runtime/JSString.h:
       
 12885         (JSC::jsSubstring): Don't report extra cost for substrings, since they
       
 12886         share a buffer that's already reported extra cost.
       
 12887 
       
 12888         * runtime/Tracing.d:
       
 12889         * runtime/Tracing.h: Changed these dtrace hooks not to report object
       
 12890         counts, since they're no longer cheap to compute.
       
 12891 
       
 12892         * runtime/UString.h: Updated for renames.
       
 12893 
       
 12894         * runtime/WeakGCMap.h: Added.
       
 12895         (JSC::WeakGCMap::isEmpty):
       
 12896         (JSC::WeakGCMap::uncheckedGet):
       
 12897         (JSC::WeakGCMap::uncheckedBegin):
       
 12898         (JSC::WeakGCMap::uncheckedEnd):
       
 12899         (JSC::::get):
       
 12900         (JSC::::take):
       
 12901         (JSC::::set):
       
 12902         (JSC::::uncheckedRemove): Mentioned above.
       
 12903 
       
 12904         * wtf/StdLibExtras.h:
       
 12905         (WTF::bitCount): Added a bit population count function, so the heap can
       
 12906         count live objects to fulfill statistics questions.
       
 12907 
       
 12908 The very last cell in the block is not allocated -- should not be marked.
       
 12909 
       
 12910 2009-12-13  Geoffrey Garen  <ggaren@apple.com>
       
 12911 
       
 12912         Windows build fix: Export some new symbols.
       
 12913 
       
 12914         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 12915 
       
 12916 2009-12-13  Geoffrey Garen  <ggaren@apple.com>
       
 12917 
       
 12918         Windows build fix: Removed some old exports.
       
 12919 
       
 12920         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 12921 
       
 12922 2009-12-13  Geoffrey Garen  <ggaren@apple.com>
       
 12923 
       
 12924         Windows build fix: Use unsigned instead of uint32_t to avoid dependencies.
       
 12925 
       
 12926         * wtf/StdLibExtras.h:
       
 12927         (WTF::bitCount):
       
 12928 
       
 12929 2009-12-13  Gavin Barraclough  <barraclough@apple.com>
       
 12930 
       
 12931         Reviewed by NOBODY (speculative Windows build fix).
       
 12932 
       
 12933         * runtime/JSGlobalObjectFunctions.cpp:
       
 12934 
       
 12935 2009-12-13  Gavin Barraclough  <barraclough@apple.com>
       
 12936 
       
 12937         Reviewed by Sam Weinig.
       
 12938 
       
 12939         https://bugs.webkit.org/show_bug.cgi?id=32496
       
 12940         Switch remaining cases of string construction to use StringBuilder.
       
 12941         Builds strings using a vector rather than using string append / addition.
       
 12942 
       
 12943         * JavaScriptCore.exp:
       
 12944         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 12945         * runtime/Executable.cpp:
       
 12946         (JSC::FunctionExecutable::paramString):
       
 12947         * runtime/FunctionConstructor.cpp:
       
 12948         (JSC::constructFunction):
       
 12949         * runtime/JSGlobalObjectFunctions.cpp:
       
 12950         (JSC::encode):
       
 12951         (JSC::decode):
       
 12952         (JSC::globalFuncEscape):
       
 12953         (JSC::globalFuncUnescape):
       
 12954         * runtime/JSONObject.cpp:
       
 12955         (JSC::Stringifier::stringify):
       
 12956         (JSC::Stringifier::indent):
       
 12957         * runtime/JSString.h:
       
 12958         * runtime/LiteralParser.cpp:
       
 12959         (JSC::LiteralParser::Lexer::lexString):
       
 12960         * runtime/NumberPrototype.cpp:
       
 12961         (JSC::integerPartNoExp):
       
 12962         (JSC::numberProtoFuncToFixed):
       
 12963         (JSC::numberProtoFuncToPrecision):
       
 12964         * runtime/Operations.h:
       
 12965         (JSC::jsString):
       
 12966         * runtime/StringPrototype.cpp:
       
 12967         (JSC::substituteBackreferencesSlow):
       
 12968         (JSC::substituteBackreferences):
       
 12969         (JSC::stringProtoFuncConcat):
       
 12970 
       
 12971 2009-12-08  Jeremy Moskovich  <jeremy@chromium.org>
       
 12972 
       
 12973         Reviewed by Eric Seidel.
       
 12974 
       
 12975         Add code to allow toggling ATSUI/Core Text rendering at runtime in ComplexTextController.
       
 12976         https://bugs.webkit.org/show_bug.cgi?id=31802
       
 12977 
       
 12978         The goal here is to allow for a zero runtime hit for ports that decide to select
       
 12979         the API at compile time.
       
 12980         When both USE(ATSUI) and USE(CORE_TEXT) are true, the API is toggled
       
 12981         at runtime.  Core Text is used for OS Versions >= 10.6.
       
 12982 
       
 12983         * wtf/Platform.h: #define USE_CORE_TEXT and USE_ATSUI on Chrome/Mac.
       
 12984 
       
 12985 2009-12-11  Maciej Stachowiak  <mjs@apple.com>
       
 12986 
       
 12987         Reviewed by Oliver Hunt.
       
 12988 
       
 12989         Unify codegen for forward and backward variants of branches
       
 12990         https://bugs.webkit.org/show_bug.cgi?id=32463
       
 12991 
       
 12992         * jit/JIT.h:
       
 12993         (JSC::JIT::emit_op_loop): Implemented in terms of forward variant.
       
 12994         (JSC::JIT::emit_op_loop_if_true): ditto
       
 12995         (JSC::JIT::emitSlow_op_loop_if_true): ditto
       
 12996         (JSC::JIT::emit_op_loop_if_false): ditto
       
 12997         (JSC::JIT::emitSlow_op_loop_if_false): ditto
       
 12998         (JSC::JIT::emit_op_loop_if_less): ditto
       
 12999         (JSC::JIT::emitSlow_op_loop_if_less): ditto
       
 13000         * jit/JITOpcodes.cpp:
       
 13001 
       
 13002 2009-12-11  Sam Weinig  <sam@webkit.org>
       
 13003 
       
 13004         Reviewed by Anders Carlsson.
       
 13005 
       
 13006         Allow WTFs concept of the main thread to differ from pthreads when necessary.
       
 13007 
       
 13008         * wtf/ThreadingPthreads.cpp:
       
 13009         (WTF::initializeThreading):
       
 13010         (WTF::isMainThread):
       
 13011         * wtf/mac/MainThreadMac.mm:
       
 13012         (WTF::initializeMainThreadPlatform):
       
 13013         (WTF::scheduleDispatchFunctionsOnMainThread):
       
 13014 
       
 13015 2009-12-11  Gavin Barraclough  <barraclough@apple.com>
       
 13016 
       
 13017         Reviewed by Oliver Hunt.
       
 13018 
       
 13019         https://bugs.webkit.org/show_bug.cgi?id=32454
       
 13020         Refactor construction of simple strings to avoid string concatenation.
       
 13021 
       
 13022         Building strings through concatenation has a memory and performance cost -
       
 13023         a memory cost since we must over-allocate the buffer to leave space to append
       
 13024         into, and performance in that the string may still require reallocation (and
       
 13025         thus copying during construction).  Instead move the full construction to
       
 13026         within a single function call (makeString), so that the arguments' lengths
       
 13027         can be calculated and an appropriate sized buffer allocated before copying
       
 13028         any characters.
       
 13029 
       
 13030         ~No performance change (~2% progression on date tests).
       
 13031 
       
 13032         * bytecode/CodeBlock.cpp:
       
 13033         (JSC::escapeQuotes):
       
 13034         (JSC::valueToSourceString):
       
 13035         (JSC::constantName):
       
 13036         (JSC::idName):
       
 13037         (JSC::CodeBlock::registerName):
       
 13038         (JSC::regexpToSourceString):
       
 13039         (JSC::regexpName):
       
 13040         * bytecompiler/NodesCodegen.cpp:
       
 13041         (JSC::substitute):
       
 13042         * profiler/Profiler.cpp:
       
 13043         (JSC::Profiler::createCallIdentifier):
       
 13044         * runtime/DateConstructor.cpp:
       
 13045         (JSC::callDate):
       
 13046         * runtime/DateConversion.cpp:
       
 13047         (JSC::formatDate):
       
 13048         (JSC::formatDateUTCVariant):
       
 13049         (JSC::formatTime):
       
 13050         (JSC::formatTimeUTC):
       
 13051         * runtime/DateConversion.h:
       
 13052         (JSC::):
       
 13053         * runtime/DatePrototype.cpp:
       
 13054         (JSC::dateProtoFuncToString):
       
 13055         (JSC::dateProtoFuncToUTCString):
       
 13056         (JSC::dateProtoFuncToDateString):
       
 13057         (JSC::dateProtoFuncToTimeString):
       
 13058         (JSC::dateProtoFuncToGMTString):
       
 13059         * runtime/ErrorPrototype.cpp:
       
 13060         (JSC::errorProtoFuncToString):
       
 13061         * runtime/ExceptionHelpers.cpp:
       
 13062         (JSC::createUndefinedVariableError):
       
 13063         (JSC::createErrorMessage):
       
 13064         (JSC::createInvalidParamError):
       
 13065         * runtime/FunctionPrototype.cpp:
       
 13066         (JSC::insertSemicolonIfNeeded):
       
 13067         (JSC::functionProtoFuncToString):
       
 13068         * runtime/ObjectPrototype.cpp:
       
 13069         (JSC::objectProtoFuncToString):
       
 13070         * runtime/RegExpConstructor.cpp:
       
 13071         (JSC::constructRegExp):
       
 13072         * runtime/RegExpObject.cpp:
       
 13073         (JSC::RegExpObject::match):
       
 13074         * runtime/RegExpPrototype.cpp:
       
 13075         (JSC::regExpProtoFuncCompile):
       
 13076         (JSC::regExpProtoFuncToString):
       
 13077         * runtime/StringPrototype.cpp:
       
 13078         (JSC::stringProtoFuncBig):
       
 13079         (JSC::stringProtoFuncSmall):
       
 13080         (JSC::stringProtoFuncBlink):
       
 13081         (JSC::stringProtoFuncBold):
       
 13082         (JSC::stringProtoFuncFixed):
       
 13083         (JSC::stringProtoFuncItalics):
       
 13084         (JSC::stringProtoFuncStrike):
       
 13085         (JSC::stringProtoFuncSub):
       
 13086         (JSC::stringProtoFuncSup):
       
 13087         (JSC::stringProtoFuncFontcolor):
       
 13088         (JSC::stringProtoFuncFontsize):
       
 13089         (JSC::stringProtoFuncAnchor):
       
 13090         * runtime/UString.h:
       
 13091         (JSC::):
       
 13092         (JSC::makeString):
       
 13093 
       
 13094 2009-12-10  Gavin Barraclough  <barraclough@apple.com>
       
 13095 
       
 13096         Reviewed by Oliver Hunt.
       
 13097 
       
 13098         https://bugs.webkit.org/show_bug.cgi?id=32400
       
 13099         Switch remaining cases of string addition to use ropes.
       
 13100 
       
 13101         Re-landing r51975 - added toPrimitiveString method,
       
 13102         performs toPrimitive then subsequent toString operations.
       
 13103 
       
 13104         ~1% progression on Sunspidey.
       
 13105 
       
 13106         * jit/JITStubs.cpp:
       
 13107         (JSC::DEFINE_STUB_FUNCTION):
       
 13108         * runtime/JSString.h:
       
 13109         (JSC::JSString::JSString):
       
 13110         (JSC::JSString::appendStringInConstruct):
       
 13111         * runtime/Operations.cpp:
       
 13112         (JSC::jsAddSlowCase):
       
 13113         * runtime/Operations.h:
       
 13114         (JSC::jsString):
       
 13115         (JSC::jsAdd):
       
 13116 
       
 13117 2009-12-11  Adam Roben  <aroben@apple.com>
       
 13118 
       
 13119         Windows build fix
       
 13120 
       
 13121         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added
       
 13122         $(WebKitOutputDir)/include/private to the include path.
       
 13123 
       
 13124 2009-12-11  Adam Roben  <aroben@apple.com>
       
 13125 
       
 13126         Move QuartzCorePresent.h to include/private
       
 13127 
       
 13128         This fixes other projects that use wtf/Platform.h
       
 13129 
       
 13130         Rubber-stamped by Steve Falkenburg.
       
 13131 
       
 13132         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Let VS do its thang.
       
 13133         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Write
       
 13134         QuartzCorePresent.h to $(WebKitOutputDir)/include/private.
       
 13135 
       
 13136         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
       
 13137         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
       
 13138         Added $(WebKitOutputDir)/include/private to the include path.
       
 13139 
       
 13140 2009-12-11  Adam Roben  <aroben@apple.com>
       
 13141 
       
 13142         Fix clean builds and everything rebuilding on every build
       
 13143 
       
 13144         Reviewed by Sam Weinig.
       
 13145 
       
 13146         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Don't
       
 13147         write out QuartzCorePresent.h if it exists but is older than
       
 13148         QuartzCore.h. Also, create the directory we write QuartzCorePresent.h
       
 13149         into first.
       
 13150 
       
 13151 2009-12-11  Adam Roben  <aroben@apple.com>
       
 13152 
       
 13153         Windows build fix for systems with spaces in their paths
       
 13154 
       
 13155         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Quote some paths.
       
 13156 
       
 13157 2009-12-11  Chris Marrin  <cmarrin@apple.com>
       
 13158 
       
 13159         Reviewed by Adam Roben.
       
 13160 
       
 13161         Add check for presence of QuartzCore headers
       
 13162         https://bugs.webkit.org/show_bug.cgi?id=31856
       
 13163         
       
 13164         The script now checks for the presence of QuartzCore.h. If present
       
 13165         it will turn on ACCELERATED_COMPOSITING and 3D_RENDERING to enable
       
 13166         HW compositing on Windows. The script writes QuartzCorePresent.h to
       
 13167         the build directory which has a define telling whether QuartzCore is 
       
 13168         present.
       
 13169 
       
 13170         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
       
 13171         * wtf/Platform.h:
       
 13172 
       
 13173 2009-12-11  Kent Tamura  <tkent@chromium.org>
       
 13174 
       
 13175         Reviewed by Darin Adler.
       
 13176 
       
 13177         Fix a problem that JSC::gregorianDateTimeToMS() returns a negative
       
 13178         value for a huge year value.
       
 13179         https://bugs.webkit.org/show_bug.cgi?id=32304
       
 13180 
       
 13181         * wtf/DateMath.cpp:
       
 13182         (WTF::dateToDaysFrom1970): Renamed from dateToDayInYear, and changed the return type to double.
       
 13183         (WTF::calculateDSTOffset): Follow the dateToDaysFrom1970() change.
       
 13184         (WTF::timeClip): Use maxECMAScriptTime.
       
 13185         (JSC::gregorianDateTimeToMS): Follow the dateToDaysFrom1970() change.
       
 13186 
       
 13187 2009-12-10  Adam Barth  <abarth@webkit.org>
       
 13188 
       
 13189         No review, rolling out r51975.
       
 13190         http://trac.webkit.org/changeset/51975
       
 13191 
       
 13192         * jit/JITStubs.cpp:
       
 13193         (JSC::DEFINE_STUB_FUNCTION):
       
 13194         * runtime/JSString.h:
       
 13195         (JSC::JSString::JSString):
       
 13196         (JSC::JSString::appendStringInConstruct):
       
 13197         * runtime/Operations.cpp:
       
 13198         (JSC::jsAddSlowCase):
       
 13199         * runtime/Operations.h:
       
 13200         (JSC::jsString):
       
 13201         (JSC::jsAdd):
       
 13202 
       
 13203 2009-12-10  Oliver Hunt  <oliver@apple.com>
       
 13204 
       
 13205         Reviewed by Gavin Barraclough.
       
 13206 
       
 13207         Incorrect caching of prototype lookup with dictionary base
       
 13208         https://bugs.webkit.org/show_bug.cgi?id=32402
       
 13209 
       
 13210         Make sure we don't add cached prototype lookup to the proto_list
       
 13211         lookup chain if the top level object is a dictionary.
       
 13212 
       
 13213         * jit/JITStubs.cpp:
       
 13214         (JSC::JITThunks::tryCacheGetByID):
       
 13215 
       
 13216 2009-12-10  Gavin Barraclough  <barraclough@apple.com>
       
 13217 
       
 13218         Reviewed by Oliver Hunt.
       
 13219 
       
 13220         https://bugs.webkit.org/show_bug.cgi?id=32400
       
 13221         Switch remaining cases of string addition to use ropes.
       
 13222 
       
 13223         ~1% progression on Sunspidey.
       
 13224 
       
 13225         * jit/JITStubs.cpp:
       
 13226         (JSC::DEFINE_STUB_FUNCTION):
       
 13227         * runtime/JSString.h:
       
 13228         (JSC::JSString::JSString):
       
 13229         (JSC::JSString::appendStringInConstruct):
       
 13230         * runtime/Operations.cpp:
       
 13231         (JSC::jsAddSlowCase):
       
 13232         * runtime/Operations.h:
       
 13233         (JSC::jsString):
       
 13234         (JSC::jsAdd):
       
 13235 
       
 13236 2009-12-10  Kent Hansen  <kent.hansen@nokia.com>
       
 13237 
       
 13238         Reviewed by Geoffrey Garen.
       
 13239 
       
 13240         Remove JSObject::getPropertyAttributes() and all usage of it.
       
 13241         https://bugs.webkit.org/show_bug.cgi?id=31933
       
 13242 
       
 13243         getOwnPropertyDescriptor() should be used instead.
       
 13244 
       
 13245         * JavaScriptCore.exp:
       
 13246         * JavaScriptCore.order:
       
 13247         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 13248         * debugger/DebuggerActivation.cpp:
       
 13249         (JSC::DebuggerActivation::getOwnPropertyDescriptor):
       
 13250         * debugger/DebuggerActivation.h:
       
 13251         * runtime/JSObject.cpp:
       
 13252         (JSC::JSObject::propertyIsEnumerable):
       
 13253         * runtime/JSObject.h:
       
 13254         * runtime/JSVariableObject.cpp:
       
 13255         * runtime/JSVariableObject.h:
       
 13256 
       
 13257 2009-12-10  Gavin Barraclough  <barraclough@apple.com>
       
 13258 
       
 13259         Reviewed by Oliver Hunt & Mark Rowe.
       
 13260 
       
 13261         https://bugs.webkit.org/show_bug.cgi?id=32367
       
 13262         Add support for short Ropes (up to 3 entries) inline within JSString.
       
 13263         (rather than externally allocating an object to hold the rope).
       
 13264         Switch jsAdd of (JSString* + JSString*) to now make use of Ropes.
       
 13265 
       
 13266         ~1% progression on Sunspidey.
       
 13267 
       
 13268         * interpreter/Interpreter.cpp:
       
 13269         (JSC::Interpreter::privateExecute):
       
 13270         * jit/JITOpcodes.cpp:
       
 13271         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 13272         * jit/JITStubs.cpp:
       
 13273         (JSC::DEFINE_STUB_FUNCTION):
       
 13274         * runtime/JSString.cpp:
       
 13275         (JSC::JSString::resolveRope):
       
 13276         (JSC::JSString::toBoolean):
       
 13277         (JSC::JSString::getStringPropertyDescriptor):
       
 13278         * runtime/JSString.h:
       
 13279         (JSC::JSString::Rope::Fiber::deref):
       
 13280         (JSC::JSString::Rope::Fiber::ref):
       
 13281         (JSC::JSString::Rope::Fiber::refAndGetLength):
       
 13282         (JSC::JSString::Rope::append):
       
 13283         (JSC::JSString::JSString):
       
 13284         (JSC::JSString::~JSString):
       
 13285         (JSC::JSString::value):
       
 13286         (JSC::JSString::tryGetValue):
       
 13287         (JSC::JSString::length):
       
 13288         (JSC::JSString::canGetIndex):
       
 13289         (JSC::JSString::appendStringInConstruct):
       
 13290         (JSC::JSString::appendValueInConstructAndIncrementLength):
       
 13291         (JSC::JSString::isRope):
       
 13292         (JSC::JSString::string):
       
 13293         (JSC::JSString::ropeLength):
       
 13294         (JSC::JSString::getStringPropertySlot):
       
 13295         * runtime/Operations.h:
       
 13296         (JSC::jsString):
       
 13297         (JSC::jsAdd):
       
 13298         (JSC::resolveBase):
       
 13299 
       
 13300 2009-12-09  Anders Carlsson  <andersca@apple.com>
       
 13301 
       
 13302         Reviewed by Geoffrey Garen.
       
 13303 
       
 13304         Fix three more things found by compiling with clang++.
       
 13305         
       
 13306         * runtime/Structure.h:
       
 13307         (JSC::StructureTransitionTable::reifySingleTransition):
       
 13308         Add the 'std' qualifier to the call to make_pair.
       
 13309 
       
 13310         * wtf/DateMath.cpp:
       
 13311         (WTF::initializeDates):
       
 13312         Incrementing a bool is deprecated according to the C++ specification.
       
 13313         
       
 13314         * wtf/PtrAndFlags.h:
       
 13315         (WTF::PtrAndFlags::PtrAndFlags):
       
 13316         Name lookup should not be done in dependent bases, so explicitly qualify the call to set.
       
 13317 
       
 13318 2009-12-09  Maciej Stachowiak  <mjs@apple.com>
       
 13319 
       
 13320         Reviewed by Oliver Hunt.
       
 13321 
       
 13322         Google reader gets stuck in the "Loading..." state and does not complete
       
 13323         https://bugs.webkit.org/show_bug.cgi?id=32256
       
 13324         <rdar://problem/7456388>
       
 13325 
       
 13326         * jit/JITArithmetic.cpp:
       
 13327         (JSC::JIT::emitSlow_op_jless): Fix some backward branches.
       
 13328 
       
 13329 2009-12-09  Gavin Barraclough  <barraclough@apple.com>
       
 13330 
       
 13331         Reviewed by Oliver Hunt.
       
 13332 
       
 13333         https://bugs.webkit.org/show_bug.cgi?id=32228
       
 13334         Make destruction of ropes non-recursive to prevent stack exhaustion.
       
 13335         Also, pass a UString& into initializeFiber rather than a Ustring::Rep*,
       
 13336         since the Rep is not being ref counted this could result in usage of a
       
 13337         Rep with refcount zero (where the Rep comes from a temporary UString
       
 13338         returned from a function).
       
 13339 
       
 13340         * runtime/JSString.cpp:
       
 13341         (JSC::JSString::Rope::destructNonRecursive):
       
 13342         (JSC::JSString::Rope::~Rope):
       
 13343         * runtime/JSString.h:
       
 13344         (JSC::JSString::Rope::initializeFiber):
       
 13345         * runtime/Operations.h:
       
 13346         (JSC::concatenateStrings):
       
 13347 
       
 13348 2009-12-09  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
       
 13349 
       
 13350         Reviewed by Eric Seidel.
       
 13351 
       
 13352         https://bugs.webkit.org/show_bug.cgi?id=31930
       
 13353 
       
 13354         Update to r51457. ASSERTs changed to COMPILE_ASSERTs.
       
 13355         The speedup is 25%.
       
 13356 
       
 13357         * runtime/JSGlobalData.cpp:
       
 13358         (JSC::VPtrSet::VPtrSet):
       
 13359 
       
 13360 2009-12-09  Steve Block  <steveblock@google.com>
       
 13361 
       
 13362         Reviewed by Adam Barth.
       
 13363 
       
 13364         Updates Android Makefiles with latest additions.
       
 13365         https://bugs.webkit.org/show_bug.cgi?id=32278
       
 13366 
       
 13367         * Android.mk: Modified.
       
 13368         * Android.v8.wtf.mk: Modified.
       
 13369 
       
 13370 2009-12-09  Sam Weinig  <sam@webkit.org>
       
 13371 
       
 13372         Reviewed by Gavin Barraclough.
       
 13373 
       
 13374         Fix a bug found while trying to compile JavaScriptCore with clang++.
       
 13375 
       
 13376         * yarr/RegexPattern.h:
       
 13377         (JSC::Yarr::PatternTerm::PatternTerm): Don't self assign here.  Use false instead.
       
 13378 
       
 13379 2009-12-09  Anders Carlsson  <andersca@apple.com>
       
 13380 
       
 13381         Reviewed by Sam Weinig.
       
 13382 
       
 13383         Attempt to fix the Windows build.
       
 13384         
       
 13385         * wtf/FastMalloc.h:
       
 13386 
       
 13387 2009-12-09  Anders Carlsson  <andersca@apple.com>
       
 13388 
       
 13389         Reviewed by Sam Weinig.
       
 13390 
       
 13391         Fix some things found while trying to compile JavaScriptCore with clang++.
       
 13392 
       
 13393         * wtf/FastMalloc.h:
       
 13394         Add correct exception specifications for the allocation/deallocation operators.
       
 13395         
       
 13396         * wtf/Vector.h:
       
 13397         * wtf/VectorTraits.h:
       
 13398         Fix a bunch of struct/class mismatches.
       
 13399 
       
 13400 2009-12-08  Maciej Stachowiak  <mjs@apple.com>
       
 13401 
       
 13402         Reviewed by Darin Adler.
       
 13403 
       
 13404         move code generation portions of Nodes.cpp to bytecompiler directory
       
 13405         https://bugs.webkit.org/show_bug.cgi?id=32284
       
 13406 
       
 13407         * bytecompiler/NodesCodegen.cpp: Copied from parser/Nodes.cpp. Removed parts that
       
 13408         are not about codegen.
       
 13409         * parser/Nodes.cpp: Removed everything that is about codegen.
       
 13410 
       
 13411         Update build systems:
       
 13412         
       
 13413         * Android.mk:
       
 13414         * GNUmakefile.am:
       
 13415         * JavaScriptCore.gypi:
       
 13416         * JavaScriptCore.pri:
       
 13417         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
 13418         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 13419         * JavaScriptCoreSources.bkl:
       
 13420 
       
 13421 2009-12-08  Kevin Watters  <kevinwatters@gmail.com>
       
 13422 
       
 13423         Reviewed by Kevin Ollivier.
       
 13424 
       
 13425         [wx] Mac plugins support.
       
 13426         
       
 13427         https://bugs.webkit.org/show_bug.cgi?id=32236
       
 13428 
       
 13429         * wtf/Platform.h:
       
 13430 
       
 13431 2009-12-08  Dmitry Titov  <dimich@chromium.org>
       
 13432 
       
 13433         Rubber-stamped by David Levin.
       
 13434 
       
 13435         Revert and reopen "Add asserts to RefCounted to make sure ref/deref happens on the right thread."
       
 13436         It may have caused massive increase of reported leaks on the bots.
       
 13437         https://bugs.webkit.org/show_bug.cgi?id=31639
       
 13438 
       
 13439         * GNUmakefile.am:
       
 13440         * JavaScriptCore.gypi:
       
 13441         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
       
 13442         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 13443         * runtime/Structure.cpp:
       
 13444         (JSC::Structure::Structure):
       
 13445         * wtf/RefCounted.h:
       
 13446         (WTF::RefCountedBase::ref):
       
 13447         (WTF::RefCountedBase::hasOneRef):
       
 13448         (WTF::RefCountedBase::refCount):
       
 13449         (WTF::RefCountedBase::derefBase):
       
 13450         * wtf/ThreadVerifier.h: Removed.
       
 13451 
       
 13452 2009-12-08  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
       
 13453 
       
 13454         Reviewed by Darin Adler.
       
 13455 
       
 13456         Make WebKit build correctly on FreeBSD, IA64, and Alpha.
       
 13457         Based on work by Petr Salinger <Petr.Salinger@seznam.cz>,
       
 13458         and Colin Watson <cjwatson@ubuntu.com>.
       
 13459 
       
 13460         * wtf/Platform.h:
       
 13461 
       
 13462 2009-12-08  Dmitry Titov  <dimich@chromium.org>
       
 13463 
       
 13464         Reviewed by Darin Adler.
       
 13465 
       
 13466         Add asserts to RefCounted to make sure ref/deref happens on the right thread.
       
 13467         https://bugs.webkit.org/show_bug.cgi?id=31639
       
 13468 
       
 13469         * runtime/Structure.cpp:
       
 13470         (JSC::Structure::Structure): Disable thread verification on this class since it uses addressOfCount().
       
 13471         * wtf/RefCounted.h:
       
 13472         (WTF::RefCountedBase::ref): Add ASSERT.
       
 13473         (WTF::RefCountedBase::hasOneRef): Ditto.
       
 13474         (WTF::RefCountedBase::refCount): Ditto.
       
 13475         (WTF::RefCountedBase::derefBase): Ditto.
       
 13476         (WTF::RefCountedBase::disableThreadVerification): delegate to ThreadVerifier method.
       
 13477         * wtf/ThreadVerifier.h: Added.
       
 13478         (WTF::ThreadVerifier::ThreadVerifier): New Debug-only class to verify that ref/deref of RefCounted is done on the same thread.
       
 13479         (WTF::ThreadVerifier::activate): Activates checks. Called when ref count becomes above 2.
       
 13480         (WTF::ThreadVerifier::deactivate): Deactivates checks. Called when ref count drops below 2.
       
 13481         (WTF::ThreadVerifier::disableThreadVerification): used on objects that should not be checked (StringImpl etc)
       
 13482         (WTF::ThreadVerifier::verifyThread):
       
 13483         * GNUmakefile.am: Add ThreadVerifier.h to the build file.
       
 13484         * JavaScriptCore.gypi: Ditto.
       
 13485         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
       
 13486         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
       
 13487 
       
 13488 2009-12-08  Steve Block  <steveblock@google.com>
       
 13489 
       
 13490         Reviewed by Adam Barth.
       
 13491 
       
 13492         [Android] Adds Makefiles for Android port.
       
 13493         https://bugs.webkit.org/show_bug.cgi?id=31325
       
 13494 
       
 13495         * Android.mk: Added.
       
 13496         * Android.v8.wtf.mk: Added.
       
 13497 
       
 13498 2009-12-07  Dmitry Titov  <dimich@chromium.org>
       
 13499 
       
 13500         Rubber-stamped by Darin Adler.
       
 13501 
       
 13502         Remove ENABLE_SHARED_SCRIPT flags
       
 13503         https://bugs.webkit.org/show_bug.cgi?id=32245
       
 13504         This patch was obtained by "git revert" command and then un-reverting of ChangeLog files.
       
 13505 
       
 13506         * Configurations/FeatureDefines.xcconfig:
       
 13507         * wtf/Platform.h:
       
 13508 
       
 13509 2009-12-07  Gavin Barraclough  <barraclough@apple.com>
       
 13510 
       
 13511         Reviewed by NOBODY (Windows build fixage part I).
       
 13512 
       
 13513         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 13514 
       
 13515 2009-12-05  Gavin Barraclough  <barraclough@apple.com>
       
 13516 
       
 13517         Reviewed by Oliver Hunt.
       
 13518 
       
 13519         https://bugs.webkit.org/show_bug.cgi?id=32184
       
 13520         Handle out-of-memory conditions with JSC Ropes with a JS exception, rather than crashing.
       
 13521         Switch from using fastMalloc to tryFastMalloc, pass an ExecState to record the exception on.
       
 13522 
       
 13523         * API/JSCallbackObjectFunctions.h:
       
 13524         (JSC::::toString):
       
 13525         * API/JSValueRef.cpp:
       
 13526         (JSValueIsStrictEqual):
       
 13527         * JavaScriptCore.exp:
       
 13528         * bytecompiler/BytecodeGenerator.cpp:
       
 13529         (JSC::BytecodeGenerator::emitEqualityOp):
       
 13530         * debugger/DebuggerCallFrame.cpp:
       
 13531         (JSC::DebuggerCallFrame::functionName):
       
 13532         (JSC::DebuggerCallFrame::calculatedFunctionName):
       
 13533         * interpreter/Interpreter.cpp:
       
 13534         (JSC::Interpreter::callEval):
       
 13535         (JSC::Interpreter::privateExecute):
       
 13536         * jit/JITStubs.cpp:
       
 13537         (JSC::DEFINE_STUB_FUNCTION):
       
 13538         * profiler/ProfileGenerator.cpp:
       
 13539         (JSC::ProfileGenerator::addParentForConsoleStart):
       
 13540         * profiler/Profiler.cpp:
       
 13541         (JSC::Profiler::willExecute):
       
 13542         (JSC::Profiler::didExecute):
       
 13543         (JSC::Profiler::createCallIdentifier):
       
 13544         (JSC::createCallIdentifierFromFunctionImp):
       
 13545         * profiler/Profiler.h:
       
 13546         * runtime/ArrayPrototype.cpp:
       
 13547         (JSC::arrayProtoFuncIndexOf):
       
 13548         (JSC::arrayProtoFuncLastIndexOf):
       
 13549         * runtime/DateConstructor.cpp:
       
 13550         (JSC::constructDate):
       
 13551         * runtime/FunctionPrototype.cpp:
       
 13552         (JSC::functionProtoFuncToString):
       
 13553         * runtime/InternalFunction.cpp:
       
 13554         (JSC::InternalFunction::name):
       
 13555         (JSC::InternalFunction::displayName):
       
 13556         (JSC::InternalFunction::calculatedDisplayName):
       
 13557         * runtime/InternalFunction.h:
       
 13558         * runtime/JSCell.cpp:
       
 13559         (JSC::JSCell::getString):
       
 13560         * runtime/JSCell.h:
       
 13561         (JSC::JSValue::getString):
       
 13562         * runtime/JSONObject.cpp:
       
 13563         (JSC::gap):
       
 13564         (JSC::Stringifier::Stringifier):
       
 13565         (JSC::Stringifier::appendStringifiedValue):
       
 13566         * runtime/JSObject.cpp:
       
 13567         (JSC::JSObject::putDirectFunction):
       
 13568         (JSC::JSObject::putDirectFunctionWithoutTransition):
       
 13569         (JSC::JSObject::defineOwnProperty):
       
 13570         * runtime/JSObject.h:
       
 13571         * runtime/JSPropertyNameIterator.cpp:
       
 13572         (JSC::JSPropertyNameIterator::get):
       
 13573         * runtime/JSString.cpp:
       
 13574         (JSC::JSString::Rope::~Rope):
       
 13575         (JSC::JSString::resolveRope):
       
 13576         (JSC::JSString::getPrimitiveNumber):
       
 13577         (JSC::JSString::toNumber):
       
 13578         (JSC::JSString::toString):
       
 13579         (JSC::JSString::toThisString):
       
 13580         (JSC::JSString::getStringPropertyDescriptor):
       
 13581         * runtime/JSString.h:
       
 13582         (JSC::JSString::Rope::createOrNull):
       
 13583         (JSC::JSString::Rope::operator new):
       
 13584         (JSC::JSString::value):
       
 13585         (JSC::JSString::tryGetValue):
       
 13586         (JSC::JSString::getIndex):
       
 13587         (JSC::JSString::getStringPropertySlot):
       
 13588         (JSC::JSValue::toString):
       
 13589         * runtime/JSValue.h:
       
 13590         * runtime/NativeErrorConstructor.cpp:
       
 13591         (JSC::NativeErrorConstructor::NativeErrorConstructor):
       
 13592         * runtime/Operations.cpp:
       
 13593         (JSC::JSValue::strictEqualSlowCase):
       
 13594         * runtime/Operations.h:
       
 13595         (JSC::JSValue::equalSlowCaseInline):
       
 13596         (JSC::JSValue::strictEqualSlowCaseInline):
       
 13597         (JSC::JSValue::strictEqual):
       
 13598         (JSC::jsLess):
       
 13599         (JSC::jsLessEq):
       
 13600         (JSC::jsAdd):
       
 13601         (JSC::concatenateStrings):
       
 13602         * runtime/PropertyDescriptor.cpp:
       
 13603         (JSC::PropertyDescriptor::equalTo):
       
 13604         * runtime/PropertyDescriptor.h:
       
 13605         * runtime/StringPrototype.cpp:
       
 13606         (JSC::stringProtoFuncReplace):
       
 13607         (JSC::stringProtoFuncToLowerCase):
       
 13608         (JSC::stringProtoFuncToUpperCase):
       
 13609 
       
 13610 2009-12-07  Nikolas Zimmermann  <nzimmermann@rim.com>
       
 13611 
       
 13612         Reviewed by Holger Freyther.
       
 13613 
       
 13614         Turn on (SVG) Filters support, by default.
       
 13615         https://bugs.webkit.org/show_bug.cgi?id=32224
       
 13616 
       
 13617         * Configurations/FeatureDefines.xcconfig: Enable FILTERS build flag.
       
 13618 
       
 13619 2009-12-07  Steve Falkenburg  <sfalken@apple.com>
       
 13620 
       
 13621         Build fix. Be flexible about which version of ICU is used on Windows.
       
 13622 
       
 13623         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Add optional xcopy commands to copy ICU 4.2.
       
 13624 
       
 13625 2009-12-07  Maciej Stachowiak  <mjs@apple.com>
       
 13626 
       
 13627         Reviewed by Oliver Hunt.
       
 13628 
       
 13629         op_loop_if_less JIT codegen is broken for 64-bit
       
 13630         https://bugs.webkit.org/show_bug.cgi?id=32221
       
 13631 
       
 13632         * jit/JITOpcodes.cpp:
       
 13633         (JSC::JIT::emit_op_loop_if_false): Fix codegen in this version - test was backwards.
       
 13634 
       
 13635 2009-12-07  Oliver Hunt  <oliver@apple.com>
       
 13636 
       
 13637         Reviewed by Maciej Stachowiak.
       
 13638 
       
 13639         Object.create fails if properties on the descriptor are getters
       
 13640         https://bugs.webkit.org/show_bug.cgi?id=32219
       
 13641 
       
 13642         Correctly initialise the PropertySlots with the descriptor object.
       
 13643 
       
 13644         * runtime/ObjectConstructor.cpp:
       
 13645         (JSC::toPropertyDescriptor):
       
 13646 
       
 13647 2009-12-06  Maciej Stachowiak  <mjs@apple.com>
       
 13648 
       
 13649         Not reviewed, build fix.
       
 13650 
       
 13651         Actually tested 64-bit *and* 32-bit build this time.
       
 13652 
       
 13653         * jit/JITOpcodes.cpp:
       
 13654         (JSC::JIT::emit_op_loop_if_false):
       
 13655 
       
 13656 2009-12-06  Maciej Stachowiak  <mjs@apple.com>
       
 13657 
       
 13658         Not reviewed, build fix.
       
 13659 
       
 13660         Really really fix 64-bit build for prior patch (actually tested this time).
       
 13661 
       
 13662         * jit/JITOpcodes.cpp:
       
 13663         (JSC::JIT::emit_op_loop_if_false):
       
 13664         (JSC::JIT::emitSlow_op_loop_if_false):
       
 13665 
       
 13666 2009-12-06  Maciej Stachowiak  <mjs@apple.com>
       
 13667 
       
 13668         Not reviewed, build fix.
       
 13669 
       
 13670         Really fix 64-bit build for prior patch.
       
 13671 
       
 13672         * jit/JITArithmetic.cpp:
       
 13673         (JSC::JIT::emitSlow_op_jless):
       
 13674 
       
 13675 2009-12-06  Maciej Stachowiak  <mjs@apple.com>
       
 13676 
       
 13677         Not reviewed, build fix.
       
 13678 
       
 13679         Fix 64-bit build for prior patch.
       
 13680 
       
 13681         * jit/JITOpcodes.cpp:
       
 13682         (JSC::JIT::emitSlow_op_loop_if_less):
       
 13683 
       
 13684 2009-12-05  Maciej Stachowiak  <mjs@apple.com>
       
 13685 
       
 13686         Reviewed by Oliver Hunt.
       
 13687 
       
 13688         conway benchmark spends half it's time in op_less (jump fusion fails)
       
 13689         https://bugs.webkit.org/show_bug.cgi?id=32190
       
 13690 
       
 13691         <1% speedup on SunSpider and V8
       
 13692         2x speedup on "conway" benchmark
       
 13693         
       
 13694         Two optimizations:
       
 13695         1) Improve codegen for logical operators &&, || and ! in a condition context
       
 13696         
       
 13697         When generating code for combinations of &&, || and !, in a
       
 13698         condition context (i.e. in an if statement or loop condition), we
       
 13699         used to produce a value, and then separately jump based on its
       
 13700         truthiness. Now we pass the false and true targets in, and let the
       
 13701         logical operators generate jumps directly. This helps in four
       
 13702         ways:
       
 13703 
       
 13704         a) Individual clauses of a short-circuit logical operator can now
       
 13705         jump directly to the then or else clause of an if statement (or to
       
 13706         the top or exit of a loop) instead of jumping to a jump.
       
 13707         
       
 13708         b) It used to be that jump fusion with the condition of the first
       
 13709         clause of a logical operator was inhibited, because the register
       
 13710         was ref'd to be used later, in the actual condition jump; this no
       
 13711         longer happens since a jump straight to the final target is
       
 13712         generated directly.
       
 13713 
       
 13714         c) It used to be that jump fusion with the condition of the second
       
 13715         clause of a logical operator was inhibited, because there was a
       
 13716         jump target right after the second clause and before the actual
       
 13717         condition jump. But now it's no longer necessary for the first
       
 13718         clause to jump there so jump fusion is not blocked.
       
 13719 
       
 13720         d) We avoid generating excess mov statements in some cases.
       
 13721         
       
 13722         As a concrete example this source:
       
 13723         
       
 13724         if (!((x < q && y < q) || (t < q && z < q))) {
       
 13725             // ...
       
 13726         }
       
 13727         
       
 13728         Used to generate this bytecode:
       
 13729         
       
 13730         [  34] less              r1, r-15, r-19
       
 13731         [  38] jfalse            r1, 7(->45)
       
 13732         [  41] less              r1, r-16, r-19
       
 13733         [  45] jtrue             r1, 14(->59)
       
 13734         [  48] less              r1, r-17, r-19
       
 13735         [  52] jfalse            r1, 7(->59)
       
 13736         [  55] less              r1, r-18, r-19
       
 13737         [  59] jtrue             r1, 17(->76)
       
 13738         
       
 13739         And now generates this bytecode (also taking advantage of the second optimization below):
       
 13740         
       
 13741         [  34] jnless            r-15, r-19, 8(->42)
       
 13742         [  38] jless             r-16, r-19, 26(->64)
       
 13743         [  42] jnless            r-17, r-19, 8(->50)
       
 13744         [  46] jless             r-18, r-19, 18(->64)
       
 13745         
       
 13746         Note the jump fusion and the fact that there's less jump
       
 13747         indirection - three of the four jumps go straight to the target
       
 13748         clause instead of indirecting through another jump.
       
 13749         
       
 13750         2) Implement jless opcode to take advantage of the above, since we'll now often generate
       
 13751         a less followed by a jtrue where fusion is not forbidden.
       
 13752        
       
 13753         * parser/Nodes.h:
       
 13754         (JSC::ExpressionNode::hasConditionContextCodegen): Helper function to determine
       
 13755         whether a node supports special conditional codegen. Return false as this is the default.
       
 13756         (JSC::ExpressionNode::emitBytecodeInConditionContext): Assert not reached - only really
       
 13757         defined for nodes that do have conditional codegen.
       
 13758         (JSC::UnaryOpNode::expr): Add const version.
       
 13759         (JSC::LogicalNotNode::hasConditionContextCodegen): Returne true only if subexpression
       
 13760         supports it.
       
 13761         (JSC::LogicalOpNode::hasConditionContextCodegen): Return true.
       
 13762         * parser/Nodes.cpp:
       
 13763         (JSC::LogicalNotNode::emitBytecodeInConditionContext): Implemented - just swap
       
 13764         the true and false targets for the child node.
       
 13765         (JSC::LogicalOpNode::emitBytecodeInConditionContext): Implemented - handle jumps
       
 13766         directly, improving codegen quality. Also handles further nested conditional codegen.
       
 13767         (JSC::ConditionalNode::emitBytecode): Use condition context codegen when available.
       
 13768         (JSC::IfNode::emitBytecode): ditto
       
 13769         (JSC::IfElseNode::emitBytecode): ditto
       
 13770         (JSC::DoWhileNode::emitBytecode): ditto
       
 13771         (JSC::WhileNode::emitBytecode): ditto
       
 13772         (JSC::ForNode::emitBytecode): ditto
       
 13773 
       
 13774         * bytecode/Opcode.h: 
       
 13775         - Added loop_if_false opcode - needed now that falsey jumps can be backwards.
       
 13776         - Added jless opcode to take advantage of new fusion opportunities.
       
 13777         * bytecode/CodeBlock.cpp:
       
 13778         (JSC::CodeBlock::dump): Handle above.
       
 13779         * bytecompiler/BytecodeGenerator.cpp:
       
 13780         (JSC::BytecodeGenerator::emitJumpIfTrue): Add peephole for less + jtrue ==> jless.
       
 13781         (JSC::BytecodeGenerator::emitJumpIfFalse): Add handling of backwrds falsey jumps.
       
 13782         * bytecompiler/BytecodeGenerator.h:
       
 13783         (JSC::BytecodeGenerator::emitNodeInConditionContext): Wrapper to handle tracking of
       
 13784         overly deep expressions etc.
       
 13785         * interpreter/Interpreter.cpp:
       
 13786         (JSC::Interpreter::privateExecute): Implement the two new opcodes (loop_if_false, jless).
       
 13787         * jit/JIT.cpp:
       
 13788         (JSC::JIT::privateCompileMainPass): Implement JIT support for the two new opcodes.
       
 13789         (JSC::JIT::privateCompileSlowCases): ditto
       
 13790         * jit/JIT.h:
       
 13791         * jit/JITArithmetic.cpp:
       
 13792         (JSC::JIT::emit_op_jless):
       
 13793         (JSC::JIT::emitSlow_op_jless): ditto
       
 13794         (JSC::JIT::emitBinaryDoubleOp): ditto
       
 13795         * jit/JITOpcodes.cpp:
       
 13796         (JSC::JIT::emitSlow_op_loop_if_less): ditto
       
 13797         (JSC::JIT::emit_op_loop_if_false): ditto
       
 13798         (JSC::JIT::emitSlow_op_loop_if_false): ditto
       
 13799         * jit/JITStubs.cpp:
       
 13800         * jit/JITStubs.h:
       
 13801         (JSC::):
       
 13802 
       
 13803 2009-12-04  Kent Hansen  <kent.hansen@nokia.com>
       
 13804 
       
 13805         Reviewed by Darin Adler.
       
 13806 
       
 13807         JavaScript delete operator should return false for string properties
       
 13808         https://bugs.webkit.org/show_bug.cgi?id=32012
       
 13809 
       
 13810         * runtime/StringObject.cpp:
       
 13811         (JSC::StringObject::deleteProperty):
       
 13812 
       
 13813 2009-12-03  Drew Wilson  <atwilson@chromium.org>
       
 13814 
       
 13815         Rolled back r51633 because it causes a perf regression in Chromium.
       
 13816 
       
 13817         * wtf/Platform.h:
       
 13818 
       
 13819 2009-12-03  Gavin Barraclough  <barraclough@apple.com>
       
 13820 
       
 13821         Try and fix the Windows build.
       
 13822 
       
 13823         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:  Export a symbol that should be exported.
       
 13824 
       
 13825 2009-12-03  Mark Rowe  <mrowe@apple.com>
       
 13826 
       
 13827         Try and fix the Mac build.
       
 13828 
       
 13829         * JavaScriptCore.exp:  Export a symbol that should be exported.
       
 13830 
       
 13831 2009-12-03  Oliver Hunt  <oliver@apple.com>
       
 13832 
       
 13833         Reviewed by Gavin Barraclough.
       
 13834 
       
 13835         REGRESSION(4.0.3-48777): Crash in JSC::ExecState::propertyNames() (Debug-only?)
       
 13836         https://bugs.webkit.org/show_bug.cgi?id=32133
       
 13837 
       
 13838         Work around odd GCC-ism and correct the scopechain for use by
       
 13839         calls made while a cachedcall is active on the callstack.
       
 13840 
       
 13841         * interpreter/CachedCall.h:
       
 13842         (JSC::CachedCall::newCallFrame):
       
 13843         * runtime/JSArray.cpp:
       
 13844         (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
       
 13845         * runtime/StringPrototype.cpp:
       
 13846         (JSC::stringProtoFuncReplace):
       
 13847 
       
 13848 2009-12-03  Gavin Barraclough  <barraclough@apple.com>
       
 13849 
       
 13850         Reviewed by Oliver "Brraaaaiiiinnnnnzzzzzzzz" Hunt.
       
 13851 
       
 13852         https://bugs.webkit.org/show_bug.cgi?id=32136
       
 13853         Add a rope representation to JSString.  Presently JSString always holds its data in UString form.
       
 13854         Instead, allow the result of a string concatenation to be represented in a tree form - with a
       
 13855         variable sized, reference-counted rope node retaining a set of UString::Reps (or other rope nopes).
       
 13856 
       
 13857         Strings must still currently be resolved down to a flat UString representation before being used,
       
 13858         but by holding the string in a rope representation during construction we can avoid copying data
       
 13859         until we know the final size of the string.
       
 13860 
       
 13861         ~2% progression on SunSpider (~25% on date-format-xparb, ~20% on string-validate-input).
       
 13862 
       
 13863         * JavaScriptCore.exp:
       
 13864 
       
 13865             - Update exports.
       
 13866 
       
 13867         * interpreter/Interpreter.cpp:
       
 13868         (JSC::Interpreter::privateExecute):
       
 13869 
       
 13870             - Make use of new JSString::length() method to avoid prematurely resolving ropes.
       
 13871 
       
 13872         * jit/JITOpcodes.cpp:
       
 13873         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 13874 
       
 13875             - Switch the string length trampoline to read the length directly from JSString::m_length,
       
 13876               rather than from the JSString's UString::Rep's 'len' property.
       
 13877 
       
 13878         * jit/JITStubs.cpp:
       
 13879         (JSC::DEFINE_STUB_FUNCTION):
       
 13880 
       
 13881             - Modify op_add such that addition of two strings, where either or both strings are already
       
 13882               in rope representation, produces a rope as a result.
       
 13883 
       
 13884         * runtime/JSString.cpp:
       
 13885         (JSC::JSString::Rope::~Rope):
       
 13886         (JSC::copyChars):
       
 13887         (JSC::JSString::resolveRope):
       
 13888         (JSC::JSString::getPrimitiveNumber):
       
 13889         (JSC::JSString::toBoolean):
       
 13890         (JSC::JSString::toNumber):
       
 13891         (JSC::JSString::toString):
       
 13892         (JSC::JSString::toThisString):
       
 13893         (JSC::JSString::getStringPropertyDescriptor):
       
 13894         * runtime/JSString.h:
       
 13895         (JSC::JSString::Rope::Fiber::Fiber):
       
 13896         (JSC::JSString::Rope::Fiber::destroy):
       
 13897         (JSC::JSString::Rope::Fiber::isRope):
       
 13898         (JSC::JSString::Rope::Fiber::rope):
       
 13899         (JSC::JSString::Rope::Fiber::string):
       
 13900         (JSC::JSString::Rope::create):
       
 13901         (JSC::JSString::Rope::initializeFiber):
       
 13902         (JSC::JSString::Rope::ropeLength):
       
 13903         (JSC::JSString::Rope::stringLength):
       
 13904         (JSC::JSString::Rope::fibers):
       
 13905         (JSC::JSString::Rope::Rope):
       
 13906         (JSC::JSString::Rope::operator new):
       
 13907         (JSC::JSString::JSString):
       
 13908         (JSC::JSString::value):
       
 13909         (JSC::JSString::length):
       
 13910         (JSC::JSString::isRope):
       
 13911         (JSC::JSString::rope):
       
 13912         (JSC::JSString::string):
       
 13913         (JSC::JSString::canGetIndex):
       
 13914         (JSC::jsSingleCharacterSubstring):
       
 13915         (JSC::JSString::getIndex):
       
 13916         (JSC::jsSubstring):
       
 13917         (JSC::JSString::getStringPropertySlot):
       
 13918 
       
 13919             - Add rope form.
       
 13920 
       
 13921         * runtime/Operations.h:
       
 13922         (JSC::jsAdd):
       
 13923         (JSC::concatenateStrings):
       
 13924 
       
 13925             - Update string concatenation, and addition of ropes, to produce ropes.
       
 13926 
       
 13927         * runtime/StringObject.cpp:
       
 13928         (JSC::StringObject::getOwnPropertyNames):
       
 13929 
       
 13930             - Make use of new JSString::length() method to avoid prematurely resolving ropes.
       
 13931 
       
 13932 2009-11-23  Jeremy Moskovich  <jeremy@chromium.org>
       
 13933 
       
 13934         Reviewed by Eric Seidel.
       
 13935 
       
 13936         Switch Chrome/Mac to use Core Text APIs rather than ATSUI APIs.
       
 13937         https://bugs.webkit.org/show_bug.cgi?id=31802
       
 13938 
       
 13939         No test since this is already covered by existing pixel tests.
       
 13940 
       
 13941         * wtf/Platform.h: #define USE_CORE_TEXT for Chrome/Mac.
       
 13942 
       
 13943 2009-12-02  Oliver Hunt  <oliver@apple.com>
       
 13944 
       
 13945         Reviewed by Gavin Barraclough.
       
 13946 
       
 13947         Add files missed in prior patch.
       
 13948 
       
 13949         * runtime/JSZombie.cpp:
       
 13950         (JSC::):
       
 13951         (JSC::JSZombie::leakedZombieStructure):
       
 13952         * runtime/JSZombie.h: Added.
       
 13953         (JSC::JSZombie::JSZombie):
       
 13954         (JSC::JSZombie::isZombie):
       
 13955         (JSC::JSZombie::classInfo):
       
 13956         (JSC::JSZombie::isGetterSetter):
       
 13957         (JSC::JSZombie::isAPIValueWrapper):
       
 13958         (JSC::JSZombie::isPropertyNameIterator):
       
 13959         (JSC::JSZombie::getCallData):
       
 13960         (JSC::JSZombie::getConstructData):
       
 13961         (JSC::JSZombie::getUInt32):
       
 13962         (JSC::JSZombie::toPrimitive):
       
 13963         (JSC::JSZombie::getPrimitiveNumber):
       
 13964         (JSC::JSZombie::toBoolean):
       
 13965         (JSC::JSZombie::toNumber):
       
 13966         (JSC::JSZombie::toString):
       
 13967         (JSC::JSZombie::toObject):
       
 13968         (JSC::JSZombie::markChildren):
       
 13969         (JSC::JSZombie::put):
       
 13970         (JSC::JSZombie::deleteProperty):
       
 13971         (JSC::JSZombie::toThisObject):
       
 13972         (JSC::JSZombie::toThisString):
       
 13973         (JSC::JSZombie::toThisJSString):
       
 13974         (JSC::JSZombie::getJSNumber):
       
 13975         (JSC::JSZombie::getOwnPropertySlot):
       
 13976 
       
 13977 2009-12-02  Oliver Hunt  <oliver@apple.com>
       
 13978 
       
 13979         Reviewed by Gavin Barraclough.
       
 13980 
       
 13981         Add zombies to JSC
       
 13982         https://bugs.webkit.org/show_bug.cgi?id=32103
       
 13983 
       
 13984         Add a compile time flag to make the JSC collector replace "unreachable"
       
 13985         objects with zombie objects.  The zombie object is a JSCell subclass that
       
 13986         ASSERTs on any attempt to use the JSCell methods.  In addition there are
       
 13987         a number of additional assertions in bottleneck code to catch zombie usage
       
 13988         as quickly as possible.
       
 13989 
       
 13990         Grrr. Argh. Brains.
       
 13991 
       
 13992         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 13993         * interpreter/Register.h:
       
 13994         (JSC::Register::Register):
       
 13995         * runtime/ArgList.h:
       
 13996         (JSC::MarkedArgumentBuffer::append):
       
 13997         (JSC::ArgList::ArgList):
       
 13998         * runtime/Collector.cpp:
       
 13999         (JSC::Heap::destroy):
       
 14000         (JSC::Heap::sweep):
       
 14001         * runtime/Collector.h:
       
 14002         * runtime/JSCell.h:
       
 14003         (JSC::JSCell::isZombie):
       
 14004         (JSC::JSValue::isZombie):
       
 14005         * runtime/JSValue.h:
       
 14006         (JSC::JSValue::decode):
       
 14007         (JSC::JSValue::JSValue):
       
 14008         * wtf/Platform.h:
       
 14009 
       
 14010 2009-12-01  Jens Alfke  <snej@chromium.org>
       
 14011 
       
 14012         Reviewed by Darin Adler.
       
 14013 
       
 14014         Added variants of find/contains/add that allow a foreign key type to be used.
       
 14015         This will allow AtomicString-keyed maps to be queried by C string without
       
 14016         having to create a temporary AtomicString (see HTTPHeaderMap.)
       
 14017         The code for this is adapted from the equivalent in HashSet.h.
       
 14018 
       
 14019         * wtf/HashMap.h:
       
 14020         (WTF::HashMap::find):
       
 14021         (WTF::HashMap::contains):
       
 14022         (WTF::HashMap::add):
       
 14023         * wtf/HashSet.h: Changed "method" to "function member" in a comment.
       
 14024 
       
 14025 2009-12-01  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
       
 14026 
       
 14027         Revert 51551 because it broke GTK+.
       
 14028 
       
 14029         * wtf/Platform.h:
       
 14030 
       
 14031 2009-11-30  Gavin Barraclough  <barraclough@apple.com>
       
 14032 
       
 14033         Windows Build fix.  Reviewed by NOBODY.
       
 14034 
       
 14035         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 14036 
       
 14037 2009-11-24  Gavin Barraclough  <barraclough@apple.com>
       
 14038 
       
 14039         Reviewed by Geoff Garen.
       
 14040 
       
 14041         Bug 31859 - Make world selection for JSC IsolatedWorlds automagical.
       
 14042 
       
 14043         WebCore presently has to explicitly specify the world before entering into JSC,
       
 14044         which is a little fragile (particularly since property access via a
       
 14045         getter/setter might invoke execution). Instead derive the current world from
       
 14046         the lexical global object.
       
 14047         
       
 14048         Remove the temporary duct tape of willExecute/didExecute virtual hooks on the JSGlobalData::ClientData - these are no longer necessary.
       
 14049 
       
 14050         * API/JSBase.cpp:
       
 14051         (JSEvaluateScript):
       
 14052         * API/JSObjectRef.cpp:
       
 14053         (JSObjectCallAsFunction):
       
 14054         * JavaScriptCore.exp:
       
 14055         * runtime/JSGlobalData.cpp:
       
 14056         * runtime/JSGlobalData.h:
       
 14057 
       
 14058 2009-11-30  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 14059 
       
 14060         Reviewed by Kenneth Rohde Christiansen.
       
 14061 
       
 14062         [Qt] Remove obsolete PLATFORM(KDE) code
       
 14063         https://bugs.webkit.org/show_bug.cgi?id=31958
       
 14064 
       
 14065         KDE is now using unpatched QtWebKit.
       
 14066 
       
 14067         * parser/Lexer.cpp: Remove obsolete KDE_USE_FINAL guard
       
 14068         * wtf/Platform.h: Remove PLATFORM(KDE) definition and code 
       
 14069         section that is guarded with it.
       
 14070 
       
 14071 2009-11-30  Jan-Arve Sæther  <jan-arve.saether@nokia.com>
       
 14072 
       
 14073         Reviewed by Simon Hausmann.
       
 14074 
       
 14075         [Qt] Fix compilation with win32-icc
       
 14076 
       
 14077         The Intel compiler does not support the __has_trivial_constructor type
       
 14078         trait.  The Intel Compiler can report itself as _MSC_VER >= 1400. The
       
 14079         reason for that is that the Intel Compiler depends on the Microsoft
       
 14080         Platform SDK, and in order to try to be "fully" MS compatible it will
       
 14081         "pretend" to be the same MS compiler as was shipped with the MS PSDK.
       
 14082         (Thus, compiling with win32-icc with VC8 SDK will make the source code
       
 14083         "think" the compiler at hand supports this type trait).
       
 14084 
       
 14085         * wtf/TypeTraits.h:
       
 14086 
       
 14087 2009-11-29  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 14088 
       
 14089         Reviewed by Eric Seidel.
       
 14090 
       
 14091         [Qt] Mac build has JIT disabled
       
 14092         https://bugs.webkit.org/show_bug.cgi?id=31828
       
 14093 
       
 14094         * wtf/Platform.h: Enable JIT for Qt Mac builds
       
 14095 
       
 14096 2009-11-28  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 14097 
       
 14098         Reviewed by Eric Seidel.
       
 14099 
       
 14100         Apply workaround for the limitation of VirtualFree with MEM_RELEASE to all ports running on Windows
       
 14101         https://bugs.webkit.org/show_bug.cgi?id=31943
       
 14102 
       
 14103         * runtime/MarkStack.h:
       
 14104         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
       
 14105 
       
 14106 2009-11-28  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
       
 14107 
       
 14108         Reviewed by Gavin Barraclough.
       
 14109 
       
 14110         https://bugs.webkit.org/show_bug.cgi?id=31930
       
 14111 
       
 14112         Seems a typo. We don't need ~270k memory to determine the vptrs.
       
 14113 
       
 14114         * runtime/JSGlobalData.cpp:
       
 14115         (JSC::VPtrSet::VPtrSet):
       
 14116 
       
 14117 2009-11-27  Shinichiro Hamaji  <hamaji@chromium.org>
       
 14118 
       
 14119         Unreviewed. 
       
 14120 
       
 14121         Move GOwnPtr* from wtf to wtf/gtk
       
 14122         https://bugs.webkit.org/show_bug.cgi?id=31793
       
 14123 
       
 14124         Build fix for chromium after r51423.
       
 14125         Exclude gtk directory from chromium build.
       
 14126 
       
 14127         * JavaScriptCore.gyp/JavaScriptCore.gyp:
       
 14128 
       
 14129 2009-11-25  Oliver Hunt  <oliver@apple.com>
       
 14130 
       
 14131         Reviewed by Gavin Barraclough.
       
 14132 
       
 14133         Incorrect behaviour of jneq_null in the interpreter
       
 14134         https://bugs.webkit.org/show_bug.cgi?id=31901
       
 14135 
       
 14136         Correct the logic of jneq_null.  This is already covered by existing tests.
       
 14137 
       
 14138         * interpreter/Interpreter.cpp:
       
 14139         (JSC::Interpreter::privateExecute):
       
 14140 
       
 14141 2009-11-26  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 14142 
       
 14143         Reviewed by Oliver Hunt.
       
 14144 
       
 14145         Move GOwnPtr* from wtf to wtf/gtk
       
 14146         https://bugs.webkit.org/show_bug.cgi?id=31793
       
 14147 
       
 14148         * GNUmakefile.am: Change the path for GOwnPtr.*.
       
 14149         * JavaScriptCore.gyp/JavaScriptCore.gyp: Remove
       
 14150           GOwnPtr.cpp from the exclude list.
       
 14151         * JavaScriptCore.gypi: Change the path for GOwnPtr.*.
       
 14152         * wscript: Remove GOwnPtr.cpp from the exclude list.
       
 14153         * wtf/GOwnPtr.cpp: Removed.
       
 14154         * wtf/GOwnPtr.h: Removed.
       
 14155         * wtf/Threading.h: Change the path for GOwnPtr.h.
       
 14156         * wtf/gtk/GOwnPtr.cpp: Copied from JavaScriptCore/wtf/GOwnPtr.cpp.
       
 14157         * wtf/gtk/GOwnPtr.h: Copied from JavaScriptCore/wtf/GOwnPtr.h.
       
 14158         * wtf/unicode/glib/UnicodeGLib.h: Change the path for GOwnPtr.h.
       
 14159 
       
 14160 2009-11-24  Dmitry Titov  <dimich@chromium.org>
       
 14161 
       
 14162         Reviewed by Eric Seidel.
       
 14163 
       
 14164         Add ENABLE_SHARED_SCRIPT feature define and flag for build-webkit
       
 14165         https://bugs.webkit.org/show_bug.cgi?id=31444
       
 14166 
       
 14167         * Configurations/FeatureDefines.xcconfig:
       
 14168         * wtf/Platform.h:
       
 14169 
       
 14170 2009-11-24  Chris Marrin  <cmarrin@apple.com>
       
 14171 
       
 14172         Reviewed by Simon Fraser.
       
 14173 
       
 14174         Add ability to enable ACCELERATED_COMPOSITING on Windows (currently disabled)
       
 14175         https://bugs.webkit.org/show_bug.cgi?id=27314
       
 14176 
       
 14177         * wtf/Platform.h:
       
 14178 
       
 14179 2009-11-24  Jason Smith  <dark.panda@gmail.com>
       
 14180 
       
 14181         Reviewed by Alexey Proskuryakov.
       
 14182 
       
 14183         RegExp#exec's returned Array-like object behaves differently from
       
 14184         regular Arrays
       
 14185         https://bugs.webkit.org/show_bug.cgi?id=31689
       
 14186 
       
 14187         * JavaScriptCore/runtime/RegExpConstructor.cpp: ensure that undefined
       
 14188         values are added to the returned RegExpMatchesArray
       
 14189 
       
 14190 2009-11-24  Oliver Hunt  <oliver@apple.com>
       
 14191 
       
 14192         Reviewed by Alexey Proskuryakov.
       
 14193 
       
 14194         JSON.stringify performance on undefined is very poor
       
 14195         https://bugs.webkit.org/show_bug.cgi?id=31839
       
 14196 
       
 14197         Switch from a UString to a Vector<UChar> when building
       
 14198         the JSON string, allowing us to safely remove the substr-copy
       
 14199         we otherwise did when unwinding an undefined property.
       
 14200 
       
 14201         Also turns out to be a ~5% speedup on stringification.
       
 14202 
       
 14203         * runtime/JSONObject.cpp:
       
 14204         (JSC::Stringifier::StringBuilder::append):
       
 14205         (JSC::Stringifier::stringify):
       
 14206         (JSC::Stringifier::Holder::appendNextProperty):
       
 14207 
       
 14208 2009-11-24  Mark Rowe  <mrowe@apple.com>
       
 14209 
       
 14210         Fix production builds where the source tree may be read-only.
       
 14211 
       
 14212         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 14213 
       
 14214 2009-11-23  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 14215 
       
 14216         Reviewed by Kenneth Rohde Christiansen.
       
 14217 
       
 14218         Include "config.h" to meet Coding Style Guidelines
       
 14219         https://bugs.webkit.org/show_bug.cgi?id=31792
       
 14220 
       
 14221         * wtf/unicode/UTF8.cpp:
       
 14222         * wtf/unicode/glib/UnicodeGLib.cpp:
       
 14223         * wtf/unicode/wince/UnicodeWince.cpp:
       
 14224 
       
 14225 2009-11-23  Geoffrey Garen  <ggaren@apple.com>
       
 14226 
       
 14227         Reviewed by Oliver Hunt.
       
 14228 
       
 14229         Streamlined some Math functions where we expect or know the result not
       
 14230         to be representable as an int.
       
 14231         
       
 14232         SunSpider says 0.6% faster.
       
 14233 
       
 14234         * runtime/JSNumberCell.h:
       
 14235         (JSC::JSValue::JSValue):
       
 14236         * runtime/JSValue.h:
       
 14237         (JSC::JSValue::):
       
 14238         (JSC::jsDoubleNumber):
       
 14239         (JSC::JSValue::JSValue): Added a function for making a numeric JSValue
       
 14240         and skipping the "can I encode this as an int?" check, avoiding the
       
 14241         overhead of int <-> double roundtripping and double <-> double comparison
       
 14242         and branching.
       
 14243 
       
 14244         * runtime/MathObject.cpp:
       
 14245         (JSC::mathProtoFuncACos):
       
 14246         (JSC::mathProtoFuncASin):
       
 14247         (JSC::mathProtoFuncATan):
       
 14248         (JSC::mathProtoFuncATan2):
       
 14249         (JSC::mathProtoFuncCos):
       
 14250         (JSC::mathProtoFuncExp):
       
 14251         (JSC::mathProtoFuncLog):
       
 14252         (JSC::mathProtoFuncRandom):
       
 14253         (JSC::mathProtoFuncSin):
       
 14254         (JSC::mathProtoFuncSqrt):
       
 14255         (JSC::mathProtoFuncTan): For these functions, which we expect or know
       
 14256         to produce results not representable as ints, call jsDoubleNumber instead
       
 14257         of jsNumber.
       
 14258 
       
 14259 2009-11-23  Mark Rowe  <mrowe@apple.com>
       
 14260 
       
 14261         Unreviewed. Unbreak the regression tests after r51329.
       
 14262 
       
 14263         * API/JSBase.cpp:
       
 14264         (JSEvaluateScript): Null-check clientData before dereferencing it.
       
 14265         * API/JSObjectRef.cpp:
       
 14266         (JSObjectCallAsFunction): Ditto.
       
 14267 
       
 14268 2009-11-23  Gavin Barraclough  <barraclough@apple.com>
       
 14269 
       
 14270         Reviewed by Geoff Garen.
       
 14271 
       
 14272         Part 1/3 of <rdar://problem/7377477> REGRESSION: Many web pages fail to render after interesting script runs in isolated world
       
 14273 
       
 14274         Some clients of the JavaScriptCore API expect to be able to make callbacks over the JSC API,
       
 14275         and for this to automagically cause execution to take place in the world associated with the
       
 14276         global object associated with the ExecState (JSContextRef) passed.  However this is not how
       
 14277         things work - the world must be explicitly set within WebCore.
       
 14278 
       
 14279         Making this work just for API calls to evaluate & call will be a far from perfect solution,
       
 14280         since direct (non-API) use of JSC still relies on WebCore setting the current world correctly.
       
 14281         A better solution would be to make this all work automagically all throughout WebCore, but this
       
 14282         will require more refactoring.
       
 14283 
       
 14284         Since the API is in JSC but worlds only exist in WebCore, add callbacks on the JSGlobalData::ClientData
       
 14285         to allow it to update the current world on entry/exit via the JSC API.  This is temporary duck
       
 14286         tape, and should be removed once the current world no longer needs to be explicitly tracked.
       
 14287 
       
 14288         * API/JSBase.cpp:
       
 14289         (JSEvaluateScript):
       
 14290         * API/JSObjectRef.cpp:
       
 14291         (JSObjectCallAsFunction):
       
 14292         * JavaScriptCore.exp:
       
 14293         * runtime/JSGlobalData.cpp:
       
 14294         (JSC::JSGlobalData::ClientData::beginningExecution):
       
 14295         (JSC::JSGlobalData::ClientData::completedExecution):
       
 14296         * runtime/JSGlobalData.h:
       
 14297 
       
 14298 2009-11-23  Steve Block  <steveblock@google.com>
       
 14299 
       
 14300         Reviewed by Dmitry Titov.
       
 14301 
       
 14302         Adds MainThreadAndroid.cpp with Android-specific WTF threading functions.
       
 14303         https://bugs.webkit.org/show_bug.cgi?id=31807
       
 14304 
       
 14305         * wtf/android: Added.
       
 14306         * wtf/android/MainThreadAndroid.cpp: Added.
       
 14307         (WTF::timeoutFired):
       
 14308         (WTF::initializeMainThreadPlatform):
       
 14309         (WTF::scheduleDispatchFunctionsOnMainThread):
       
 14310 
       
 14311 2009-11-23  Alexey Proskuryakov  <ap@apple.com>
       
 14312 
       
 14313         Reviewed by Brady Eidson.
       
 14314 
       
 14315         https://bugs.webkit.org/show_bug.cgi?id=31748
       
 14316         Make WebSocketHandleCFNet respect proxy auto-configuration files via CFProxySupport
       
 14317 
       
 14318         * JavaScriptCore.exp: Export callOnMainThreadAndWait.
       
 14319 
       
 14320 2009-11-23  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 14321 
       
 14322         Reviewed by Kenneth Rohde Christiansen.
       
 14323 
       
 14324         [Symbian] Fix lastIndexOf() for Symbian
       
 14325         https://bugs.webkit.org/show_bug.cgi?id=31773
       
 14326 
       
 14327         Symbian soft floating point library has problems with operators
       
 14328         comparing NaN to numbers. Without a workaround lastIndexOf() 
       
 14329         function does not work.
       
 14330 
       
 14331         Patch developed by David Leong.
       
 14332 
       
 14333         * runtime/StringPrototype.cpp:
       
 14334         (JSC::stringProtoFuncLastIndexOf):Add an extra test 
       
 14335         to check for NaN for Symbian.
       
 14336 
       
 14337 2009-11-23  Steve Block  <steveblock@google.com>
       
 14338 
       
 14339         Reviewed by Eric Seidel.
       
 14340 
       
 14341         Android port lacks implementation of atomicIncrement and atomicDecrement.
       
 14342         https://bugs.webkit.org/show_bug.cgi?id=31715
       
 14343 
       
 14344         * wtf/Threading.h: Modified.
       
 14345         (WTF::atomicIncrement): Added Android implementation.
       
 14346         (WTF::atomicDecrement): Added Android implementation.
       
 14347 
       
 14348 2009-11-22  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 14349 
       
 14350         Unreviewed.
       
 14351 
       
 14352         [Qt] Sort source lists and remove obsolete comments 
       
 14353         from the build system.
       
 14354 
       
 14355         * JavaScriptCore.pri:
       
 14356 
       
 14357 2009-11-21  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 14358 
       
 14359         Reviewed by Eric Seidel.
       
 14360 
       
 14361         [Qt][Mac] Turn on multiple JavaScript threads for QtWebkit on Mac
       
 14362         https://bugs.webkit.org/show_bug.cgi?id=31753
       
 14363 
       
 14364         * wtf/Platform.h:
       
 14365 
       
 14366 2009-11-19  Steve Block  <steveblock@google.com>
       
 14367 
       
 14368         Android port lacks configuration in Platform.h and config.h.
       
 14369         https://bugs.webkit.org/show_bug.cgi?id=31671
       
 14370 
       
 14371         * wtf/Platform.h: Modified. Added Android-specific configuration.
       
 14372 
       
 14373 2009-11-19  Alexey Proskuryakov  <ap@apple.com>
       
 14374 
       
 14375         Reviewed by Darin Adler.
       
 14376 
       
 14377         https://bugs.webkit.org/show_bug.cgi?id=31690
       
 14378         Make SocketStreamHandleCFNet work on Windows
       
 14379 
       
 14380         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 14381         * wtf/MainThread.cpp:
       
 14382         (WTF::FunctionWithContext::FunctionWithContext):
       
 14383         (WTF::dispatchFunctionsFromMainThread):
       
 14384         (WTF::callOnMainThreadAndWait):
       
 14385         * wtf/MainThread.h:
       
 14386         Re-add callOnMainThreadAndWait(), which was removed in bug 23926.
       
 14387 
       
 14388 2009-11-19  Dmitry Titov  <dimich@chromium.org>
       
 14389 
       
 14390         Reviewed by David Levin.
       
 14391 
       
 14392         isMainThread() on Chromium (Mac and Linux) is so slow it timeouts LayoutTests..
       
 14393         https://bugs.webkit.org/show_bug.cgi?id=31693
       
 14394 
       
 14395         * wtf/ThreadingPthreads.cpp:
       
 14396         (WTF::initializeThreading): grab and use the pthread_t of the main thread instead of ThreadIdentifier.
       
 14397         (WTF::isMainThread): Ditto.
       
 14398 
       
 14399 2009-11-19  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 14400 
       
 14401         Reviewed by Darin Adler.
       
 14402 
       
 14403         Remove HAVE(STRING_H) guard from JavaScriptCore
       
 14404         https://bugs.webkit.org/show_bug.cgi?id=31668
       
 14405 
       
 14406         * config.h:
       
 14407         * runtime/UString.cpp:
       
 14408 
       
 14409 2009-11-19  Dumitru Daniliuc  <dumi@chromium.org>
       
 14410 
       
 14411         Reviewed by Dmitry Titov.
       
 14412 
       
 14413         Fixing a bug in MessageQueue::removeIf() that leads to an
       
 14414         assertion failure.
       
 14415 
       
 14416         https://bugs.webkit.org/show_bug.cgi?id=31657
       
 14417 
       
 14418         * wtf/MessageQueue.h:
       
 14419         (WTF::MessageQueue::removeIf):
       
 14420 
       
 14421 2009-11-19  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 14422 
       
 14423         Reviewed by Darin Adler.
       
 14424 
       
 14425         Remove HAVE(FLOAT_H) guard
       
 14426         https://bugs.webkit.org/show_bug.cgi?id=31661
       
 14427 
       
 14428         JavaScriptCore has a dependency on float.h, there is
       
 14429         no need to guard float.h.
       
 14430 
       
 14431         * runtime/DatePrototype.cpp: Remove include directive 
       
 14432         for float.h as it is included in MathExtras.h already.
       
 14433         * runtime/Operations.cpp: Ditto.
       
 14434         * runtime/UString.cpp: Ditto.
       
 14435         * wtf/dtoa.cpp: Ditto.
       
 14436         * wtf/MathExtras.h: Remove HAVE(FLOAT_H) guard.
       
 14437         * wtf/Platform.h: Ditto.
       
 14438 
       
 14439 2009-11-19  Thiago Macieira <thiago.macieira@nokia.com>
       
 14440 
       
 14441         Reviewed by Simon Hausmann.
       
 14442 
       
 14443         Build fix for 32-bit Sparc machines: these machines are big-endian.
       
 14444 
       
 14445         * wtf/Platform.h:
       
 14446 
       
 14447 2009-11-18  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 14448 
       
 14449         Reviewed by Kenneth Rohde Christiansen.
       
 14450 
       
 14451         [Qt] Remove support for Qt v4.3 or older versions
       
 14452         https://bugs.webkit.org/show_bug.cgi?id=29469
       
 14453 
       
 14454         * JavaScriptCore.pro:
       
 14455         * jsc.pro:
       
 14456         * wtf/unicode/qt4/UnicodeQt4.h:
       
 14457 
       
 14458 2009-11-18  Kent Tamura  <tkent@chromium.org>
       
 14459 
       
 14460         Reviewed by Darin Adler.
       
 14461 
       
 14462         Move UString::from(double) implementation to new
       
 14463         WTF::doubleToStringInJavaScriptFormat(), and expose it because WebCore
       
 14464         code will use it.
       
 14465         https://bugs.webkit.org/show_bug.cgi?id=31330
       
 14466 
       
 14467         - Introduce new function createRep(const char*, unsigned) and
       
 14468           UString::UString(const char*, unsigned) to reduce 2 calls to strlen().
       
 14469         - Fix a bug that dtoa() doesn't update *rve if the input value is NaN
       
 14470           or Infinity.
       
 14471 
       
 14472         No new tests because this doesn't change the behavior.
       
 14473 
       
 14474         * JavaScriptCore.exp:
       
 14475         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 14476         * runtime/UString.cpp:
       
 14477         (JSC::createRep):
       
 14478         (JSC::UString::UString):
       
 14479         (JSC::UString::from): Move the code to doubleToStringInJavaScriptFormat().
       
 14480         * runtime/UString.h:
       
 14481         * wtf/dtoa.cpp:
       
 14482         (WTF::dtoa): Fix a bug about rve.
       
 14483         (WTF::append): A helper for doubleToStringInJavaScriptFormat().
       
 14484         (WTF::doubleToStringInJavaScriptFormat): Move the code from UString::from(double).
       
 14485         * wtf/dtoa.h:
       
 14486 
       
 14487 2009-11-18  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 14488 
       
 14489         Reviewed by Kenneth Rohde Christiansen.
       
 14490 
       
 14491         [Qt] Remove WTF_USE_JAVASCRIPTCORE_BINDINGS as it is no longer used
       
 14492         https://bugs.webkit.org/show_bug.cgi?id=31643
       
 14493 
       
 14494         * JavaScriptCore.pro:
       
 14495 
       
 14496 2009-11-18  Nate Chapin  <japhet@chromium.org>
       
 14497 
       
 14498         Reviewed by Darin Fisher.
       
 14499 
       
 14500         Remove Chromium's unnecessary dependency on wtf's tcmalloc files.
       
 14501 
       
 14502         https://bugs.webkit.org/show_bug.cgi?id=31648
       
 14503 
       
 14504         * JavaScriptCore.gyp/JavaScriptCore.gyp:
       
 14505 
       
 14506 2009-11-18  Thiago Macieira <thiago.macieira@nokia.com>
       
 14507 
       
 14508         Reviewed by Gavin Barraclough.
       
 14509 
       
 14510         [Qt] Implement symbol hiding for JSC's JIT functions.
       
 14511 
       
 14512         These functions are implemented directly in assembly, so they need the
       
 14513         proper directives to enable/disable visibility. On ELF systems, it's
       
 14514         .hidden, whereas on Mach-O systems (Mac) it's .private_extern. On
       
 14515         Windows, it's not necessary since you have to explicitly export. I
       
 14516         also implemented the AIX idiom, though it's unlikely anyone will
       
 14517         implement AIX/POWER JIT.
       
 14518         https://bugs.webkit.org/show_bug.cgi?id=30864
       
 14519 
       
 14520         * jit/JITStubs.cpp:
       
 14521 
       
 14522 2009-11-18  Oliver Hunt  <oliver@apple.com>
       
 14523 
       
 14524         Reviewed by Alexey Proskuryakov.
       
 14525 
       
 14526         Interpreter may do an out of range access when throwing an exception in the profiler.
       
 14527         https://bugs.webkit.org/show_bug.cgi?id=31635
       
 14528 
       
 14529         Add bounds check.
       
 14530 
       
 14531         * interpreter/Interpreter.cpp:
       
 14532         (JSC::Interpreter::throwException):
       
 14533 
       
 14534 2009-11-18  Gabor Loki  <loki@inf.u-szeged.hu>
       
 14535 
       
 14536         Reviewed by Darin Adler.
       
 14537 
       
 14538         Fix the clobber list of cacheFlush for ARM and Thumb2 on Linux
       
 14539         https://bugs.webkit.org/show_bug.cgi?id=31631
       
 14540 
       
 14541         * jit/ExecutableAllocator.h:
       
 14542         (JSC::ExecutableAllocator::cacheFlush):
       
 14543 
       
 14544 2009-11-18  Harald Fernengel  <harald.fernengel@nokia.com>
       
 14545 
       
 14546         Reviewed by Simon Hausmann.
       
 14547 
       
 14548         [Qt] Fix detection of linux-g++
       
 14549 
       
 14550         Never use "linux-g++*" to check for linux-g++, since this will break embedded
       
 14551         builds which use linux-arm-g++ and friends. Use 'linux*-g++*' to check for any
       
 14552         g++ on linux mkspec.
       
 14553 
       
 14554         * JavaScriptCore.pri:
       
 14555 
       
 14556 2009-11-17  Jon Honeycutt  <jhoneycutt@apple.com>
       
 14557 
       
 14558         Add JSContextRefPrivate.h to list of copied files.
       
 14559 
       
 14560         Reviewed by Mark Rowe.
       
 14561 
       
 14562         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
       
 14563 
       
 14564 2009-11-17  Martin Robinson  <martin.james.robinson@gmail.com>
       
 14565 
       
 14566         Reviewed by Adam Barth.
       
 14567 
       
 14568         [GTK] Style cleanup for GOwnPtr
       
 14569         https://bugs.webkit.org/show_bug.cgi?id=31506
       
 14570 
       
 14571         Remove forward declaration in GOwnPtr and do some style cleanup.
       
 14572 
       
 14573         * wtf/GOwnPtr.cpp:
       
 14574         * wtf/GOwnPtr.h:
       
 14575         (WTF::GOwnPtr::GOwnPtr):
       
 14576         (WTF::GOwnPtr::~GOwnPtr):
       
 14577         (WTF::GOwnPtr::get):
       
 14578         (WTF::GOwnPtr::release):
       
 14579         (WTF::GOwnPtr::outPtr):
       
 14580         (WTF::GOwnPtr::set):
       
 14581         (WTF::GOwnPtr::clear):
       
 14582         (WTF::GOwnPtr::operator*):
       
 14583         (WTF::GOwnPtr::operator->):
       
 14584         (WTF::GOwnPtr::operator!):
       
 14585         (WTF::GOwnPtr::operator UnspecifiedBoolType):
       
 14586         (WTF::GOwnPtr::swap):
       
 14587         (WTF::swap):
       
 14588         (WTF::operator==):
       
 14589         (WTF::operator!=):
       
 14590         (WTF::getPtr):
       
 14591         (WTF::freeOwnedGPtr):
       
 14592 
       
 14593 2009-11-17  Oliver Hunt  <oliver@apple.com>
       
 14594 
       
 14595         Reviewed by Maciej Stachowiak.
       
 14596 
       
 14597         Incorrect use of JavaScriptCore API in DumpRenderTree
       
 14598         https://bugs.webkit.org/show_bug.cgi?id=31577
       
 14599 
       
 14600         Add assertions to the 'toJS' functions to catch mistakes like
       
 14601         this early.  Restructure existing code which blindly passed potentially
       
 14602         null values to toJS when forwarding exceptions so that a null check is
       
 14603         performed first.
       
 14604 
       
 14605         * API/APICast.h:
       
 14606         (toJS):
       
 14607         (toJSForGC):
       
 14608         * API/JSCallbackObjectFunctions.h:
       
 14609         (JSC::::getOwnPropertySlot):
       
 14610         (JSC::::put):
       
 14611         (JSC::::deleteProperty):
       
 14612         (JSC::::construct):
       
 14613         (JSC::::hasInstance):
       
 14614         (JSC::::call):
       
 14615         (JSC::::toNumber):
       
 14616         (JSC::::toString):
       
 14617         (JSC::::staticValueGetter):
       
 14618         (JSC::::callbackGetter):
       
 14619         * API/tests/testapi.c: Fix errors in the API tester.
       
 14620         (MyObject_getProperty):
       
 14621         (MyObject_convertToType):
       
 14622         (EvilExceptionObject_convertToType):
       
 14623 
       
 14624 2009-11-16  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
       
 14625 
       
 14626         Reviewed by Gavin Barraclough.
       
 14627 
       
 14628         https://bugs.webkit.org/show_bug.cgi?id=31050
       
 14629 
       
 14630         Minor fixes for JSVALUE32_64: branchConvertDoubleToInt32
       
 14631         failed on a CortexA8 CPU, but not on a simulator; and
       
 14632         JITCall.cpp modifications was somehow not committed to mainline.
       
 14633 
       
 14634         * assembler/ARMAssembler.h:
       
 14635         (JSC::ARMAssembler::fmrs_r):
       
 14636         * assembler/MacroAssemblerARM.h:
       
 14637         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
       
 14638         * jit/JITCall.cpp:
       
 14639         (JSC::JIT::compileOpCall):
       
 14640 
       
 14641 2009-11-16  Joerg Bornemann  <joerg.bornemann@trolltech.com>
       
 14642 
       
 14643         Reviewed by Simon Hausmann.
       
 14644 
       
 14645         Fix Qt build on Windows CE 6.
       
 14646 
       
 14647         * JavaScriptCore.pri: Add missing include path.
       
 14648         * wtf/Platform.h: Include ce_time.h for Windows CE 6.
       
 14649 
       
 14650 2009-11-13  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
       
 14651 
       
 14652         Reviewed by Gavin Barraclough.
       
 14653 
       
 14654         https://bugs.webkit.org/show_bug.cgi?id=31050
       
 14655 
       
 14656         Adding optimization support for mode JSVALUE32_64
       
 14657         on ARM systems.
       
 14658 
       
 14659         * jit/JIT.h:
       
 14660         * jit/JITCall.cpp:
       
 14661         (JSC::JIT::compileOpCall):
       
 14662         * jit/JITPropertyAccess.cpp:
       
 14663         (JSC::JIT::emit_op_method_check):
       
 14664         (JSC::JIT::compileGetByIdHotPath):
       
 14665         (JSC::JIT::compileGetByIdSlowCase):
       
 14666         (JSC::JIT::emit_op_put_by_id):
       
 14667 
       
 14668 2009-11-14  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
       
 14669 
       
 14670         Reviewed by Gavin Barraclough.
       
 14671 
       
 14672         https://bugs.webkit.org/show_bug.cgi?id=31050
       
 14673 
       
 14674         Adding JSVALUE32_64 support for ARM (but not turning it
       
 14675         on by default). All optimizations must be disabled, since
       
 14676         this patch is only the first of a series of patches.
       
 14677 
       
 14678         During the work, a lot of x86 specific code revealed and
       
 14679         made platform independent.
       
 14680         See revisions: 50531 50541 50593 50594 50595
       
 14681 
       
 14682         * assembler/ARMAssembler.h:
       
 14683         (JSC::ARMAssembler::):
       
 14684         (JSC::ARMAssembler::fdivd_r):
       
 14685         * assembler/MacroAssemblerARM.h:
       
 14686         (JSC::MacroAssemblerARM::lshift32):
       
 14687         (JSC::MacroAssemblerARM::neg32):
       
 14688         (JSC::MacroAssemblerARM::rshift32):
       
 14689         (JSC::MacroAssemblerARM::branchOr32):
       
 14690         (JSC::MacroAssemblerARM::set8):
       
 14691         (JSC::MacroAssemblerARM::setTest8):
       
 14692         (JSC::MacroAssemblerARM::loadDouble):
       
 14693         (JSC::MacroAssemblerARM::divDouble):
       
 14694         (JSC::MacroAssemblerARM::convertInt32ToDouble):
       
 14695         (JSC::MacroAssemblerARM::zeroDouble):
       
 14696         * jit/JIT.cpp:
       
 14697         * jit/JIT.h:
       
 14698         * jit/JITOpcodes.cpp:
       
 14699         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 14700         * jit/JITStubs.cpp:
       
 14701         * wtf/StdLibExtras.h:
       
 14702 
       
 14703 2009-11-13  Dominik Röttsches  <dominik.roettsches@access-company.com>
       
 14704 
       
 14705         Reviewed by Eric Seidel.
       
 14706 
       
 14707         Unify TextBoundaries implementations by only relying on WTF Unicode abstractions
       
 14708         https://bugs.webkit.org/show_bug.cgi?id=31468
       
 14709 
       
 14710         Adding isAlphanumeric abstraction, required
       
 14711         by TextBoundaries.cpp.
       
 14712 
       
 14713         * wtf/unicode/glib/UnicodeGLib.h:
       
 14714         (WTF::Unicode::isAlphanumeric):
       
 14715         * wtf/unicode/icu/UnicodeIcu.h:
       
 14716         (WTF::Unicode::isAlphanumeric):
       
 14717 
       
 14718 2009-11-13  Norbert Leser  <norbert.leser&nokia.com>
       
 14719 
       
 14720         Reviewed by Eric Seidel.
       
 14721 
       
 14722         Added macros for USERINCLUDE paths within symbian blocks
       
 14723         to guarantee inclusion of respective header files from local path
       
 14724         first (to avoid clashes with same names of header files in system include path).
       
 14725 
       
 14726         * JavaScriptCore.pri:
       
 14727 
       
 14728 2009-11-13  Oliver Hunt  <oliver@apple.com>
       
 14729 
       
 14730         Reviewed by Geoff Garen.
       
 14731 
       
 14732         JSValueProtect and JSValueUnprotect don't protect API wrapper values
       
 14733         https://bugs.webkit.org/show_bug.cgi?id=31485
       
 14734 
       
 14735         Make JSValueProtect/Unprotect use a new 'toJS' function, 'toJSForGC' that
       
 14736         does not attempt to to strip out API wrapper objects.
       
 14737 
       
 14738         * API/APICast.h:
       
 14739         (toJSForGC):
       
 14740         * API/JSValueRef.cpp:
       
 14741         (JSValueProtect):
       
 14742         (JSValueUnprotect):
       
 14743         * API/tests/testapi.c:
       
 14744         (makeGlobalNumberValue):
       
 14745         (main):
       
 14746 
       
 14747 2009-11-13  İsmail Dönmez  <ismail@namtrac.org>
       
 14748 
       
 14749         Reviewed by Antti Koivisto.
       
 14750 
       
 14751         Fix typo, ce_time.cpp should be ce_time.c
       
 14752 
       
 14753         * JavaScriptCore.pri:
       
 14754 
       
 14755 2009-11-12  Steve VanDeBogart  <vandebo@chromium.org>
       
 14756 
       
 14757         Reviewed by Adam Barth.
       
 14758 
       
 14759         Calculate the time offset only if we were able to parse
       
 14760         the date string. This saves an IPC in Chromium for
       
 14761         invalid date strings.
       
 14762         https://bugs.webkit.org/show_bug.cgi?id=31416
       
 14763 
       
 14764         * wtf/DateMath.cpp:
       
 14765         (WTF::parseDateFromNullTerminatedCharacters):
       
 14766         (JSC::parseDateFromNullTerminatedCharacters):
       
 14767 
       
 14768 2009-11-12  Oliver Hunt  <oliver@apple.com>
       
 14769 
       
 14770         Rollout r50896 until i can work out why it causes failures.
       
 14771 
       
 14772         * bytecompiler/BytecodeGenerator.cpp:
       
 14773         (JSC::BytecodeGenerator::emitReturn):
       
 14774         * interpreter/Interpreter.cpp:
       
 14775         (JSC::Interpreter::execute):
       
 14776         * parser/Nodes.cpp:
       
 14777         (JSC::EvalNode::emitBytecode):
       
 14778 
       
 14779 2009-11-12  Steve Falkenburg  <sfalken@apple.com>
       
 14780 
       
 14781         Reviewed by Stephanie Lewis.
       
 14782 
       
 14783         Remove LIBRARY directive from def file to fix Debug_All target.
       
 14784 
       
 14785         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 14786 
       
 14787 2009-11-12  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
       
 14788 
       
 14789         Rubber-stamped by Holger Freyther.
       
 14790 
       
 14791         Revert r50204, since it makes DRT crash on 32 bits release builds
       
 14792         for GTK+.
       
 14793 
       
 14794         * wtf/FastMalloc.h:
       
 14795 
       
 14796 2009-11-12  Oliver Hunt  <oliver@apple.com>
       
 14797 
       
 14798         Reviewed by Gavin Barraclough.
       
 14799 
       
 14800         Start unifying entry logic for function and eval code.
       
 14801 
       
 14802         Eval now uses a ret instruction to end execution, and sets up
       
 14803         a callframe more in line with what we do for function entry.
       
 14804 
       
 14805         * bytecompiler/BytecodeGenerator.cpp:
       
 14806         (JSC::BytecodeGenerator::emitReturn):
       
 14807         * interpreter/Interpreter.cpp:
       
 14808         (JSC::Interpreter::execute):
       
 14809         * parser/Nodes.cpp:
       
 14810         (JSC::EvalNode::emitBytecode):
       
 14811 
       
 14812 2009-11-12  Richard Moe Gustavsen  <richard.gustavsen@nokia.com>
       
 14813 
       
 14814         Reviewed by Kenneth Rohde Christiansen.
       
 14815 
       
 14816         [Qt] Disable pthread_setname_np.
       
 14817 
       
 14818         This allows Qt builds on Mac from 10.6 to run on earlier version
       
 14819         where this symbol is not present.
       
 14820         https://bugs.webkit.org/show_bug.cgi?id=31403
       
 14821 
       
 14822         * wtf/Platform.h:
       
 14823 
       
 14824 2009-11-12  Thiago Macieira <thiago.macieira@nokia.com>
       
 14825 
       
 14826         Reviewed by Kenneth Rohde Christiansen.
       
 14827 
       
 14828         [Qt] Fix linking on Linux 32-bit.
       
 14829 
       
 14830         It was missing the ".text" directive at the top of the file,
       
 14831         indicating that code would follow. Without it, the assembler created
       
 14832         "NOTYPE" symbols, which would result in linker errors.
       
 14833         https://bugs.webkit.org/show_bug.cgi?id=30863
       
 14834 
       
 14835         * jit/JITStubs.cpp:
       
 14836 
       
 14837 2009-11-11  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 14838 
       
 14839         Reviewed by Alexey Proskuryakov.
       
 14840 
       
 14841         Refactor multiple JavaScriptCore threads
       
 14842         https://bugs.webkit.org/show_bug.cgi?id=31328
       
 14843 
       
 14844         Remove the id field from the PlatformThread structure 
       
 14845         as it is not used.
       
 14846 
       
 14847         * runtime/Collector.cpp:
       
 14848         (JSC::getCurrentPlatformThread):
       
 14849         (JSC::suspendThread):
       
 14850         (JSC::resumeThread):
       
 14851         (JSC::getPlatformThreadRegisters):
       
 14852 
       
 14853 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
       
 14854 
       
 14855         Linux build fix: Added an #include for UINT_MAX.
       
 14856 
       
 14857         * runtime/WeakRandom.h:
       
 14858 
       
 14859 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
       
 14860 
       
 14861         JavaScriptGlue build fix: Marked a file 'private' instead of 'project'.
       
 14862 
       
 14863         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 14864 
       
 14865 2009-11-10  Geoffrey Garen  <ggaren@apple.com>
       
 14866 
       
 14867         Reviewed by Gavin "avGni arBalroguch" Barraclough.
       
 14868 
       
 14869         Faster Math.random, based on GameRand.
       
 14870         
       
 14871         SunSpider says 1.4% faster.
       
 14872 
       
 14873         * GNUmakefile.am:
       
 14874         * JavaScriptCore.gypi:
       
 14875         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
 14876         * JavaScriptCore.xcodeproj/project.pbxproj: Added the header to the project.
       
 14877 
       
 14878         * runtime/JSGlobalData.cpp:
       
 14879         (JSC::JSGlobalData::JSGlobalData):
       
 14880         * runtime/JSGlobalData.h: Use an object to track random number generation
       
 14881         state, initialized to the current time.
       
 14882 
       
 14883         * runtime/MathObject.cpp:
       
 14884         (JSC::MathObject::MathObject):
       
 14885         (JSC::mathProtoFuncRandom): Use the new hotness.
       
 14886 
       
 14887         * runtime/WeakRandom.h: Added.
       
 14888         (JSC::WeakRandom::WeakRandom):
       
 14889         (JSC::WeakRandom::get):
       
 14890         (JSC::WeakRandom::advance): The new hotness.
       
 14891 
       
 14892 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
       
 14893 
       
 14894         Reviewed by Oliver Hunt.
       
 14895 
       
 14896         Imported the v8 DST cache.
       
 14897         
       
 14898         SunSpider says 1.5% faster.
       
 14899 
       
 14900         * runtime/JSGlobalData.cpp:
       
 14901         (JSC::JSGlobalData::resetDateCache): Reset the DST cache when resetting
       
 14902         other date data.
       
 14903 
       
 14904         * runtime/JSGlobalData.h:
       
 14905         (JSC::DSTOffsetCache::DSTOffsetCache):
       
 14906         (JSC::DSTOffsetCache::reset): Added a struct for the DST cache.
       
 14907 
       
 14908         * wtf/DateMath.cpp:
       
 14909         (WTF::calculateDSTOffsetSimple):
       
 14910         (WTF::calculateDSTOffset):
       
 14911         (WTF::parseDateFromNullTerminatedCharacters):
       
 14912         (JSC::getDSTOffset):
       
 14913         (JSC::gregorianDateTimeToMS):
       
 14914         (JSC::msToGregorianDateTime):
       
 14915         (JSC::parseDateFromNullTerminatedCharacters):
       
 14916         * wtf/DateMath.h: The imported code for probing and updating the cache.
       
 14917 
       
 14918 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
       
 14919 
       
 14920         Reviewed by Oliver Hunt.
       
 14921 
       
 14922         Fixed an edge case that could cause the engine not to notice a timezone
       
 14923         change.
       
 14924         
       
 14925         No test because this case would require manual intervention to change
       
 14926         the timezone during the test.
       
 14927         
       
 14928         SunSpider reports no change.
       
 14929 
       
 14930         * runtime/DateInstanceCache.h:
       
 14931         (JSC::DateInstanceCache::DateInstanceCache):
       
 14932         (JSC::DateInstanceCache::reset): Added a helper function for resetting
       
 14933         this cache. Also, shrank the cache, since we'll be resetting it often.
       
 14934 
       
 14935         * runtime/JSGlobalData.cpp:
       
 14936         (JSC::JSGlobalData::resetDateCache): Include resetting the DateInstanceCache
       
 14937         in resetting Date data. (Otherwise, a cache hit could bypass a necessary
       
 14938         timezone update check.)
       
 14939 
       
 14940 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
       
 14941 
       
 14942         Reviewed by Sam Weinig.
       
 14943 
       
 14944         Some manual inlining and constant propogation in Date code.
       
 14945         
       
 14946         SunSpider reports a 0.4% speedup on date-*, no overall speedup. Shark
       
 14947         says some previously evident stalls are now gone.
       
 14948 
       
 14949         * runtime/DateConstructor.cpp:
       
 14950         (JSC::callDate):
       
 14951         * runtime/DateConversion.cpp:
       
 14952         (JSC::formatTime):
       
 14953         (JSC::formatTimeUTC): Split formatTime into UTC and non-UTC variants.
       
 14954 
       
 14955         * runtime/DateConversion.h:
       
 14956         * runtime/DateInstance.cpp:
       
 14957         (JSC::DateInstance::calculateGregorianDateTime):
       
 14958         (JSC::DateInstance::calculateGregorianDateTimeUTC):
       
 14959         * runtime/DateInstance.h:
       
 14960         (JSC::DateInstance::gregorianDateTime):
       
 14961         (JSC::DateInstance::gregorianDateTimeUTC): Split gregorianDateTime into
       
 14962         a UTC and non-UTC variant, and split each variant into a fast inline
       
 14963         case and a slow out-of-line case.
       
 14964 
       
 14965         * runtime/DatePrototype.cpp:
       
 14966         (JSC::formatLocaleDate):
       
 14967         (JSC::dateProtoFuncToString):
       
 14968         (JSC::dateProtoFuncToUTCString):
       
 14969         (JSC::dateProtoFuncToISOString):
       
 14970         (JSC::dateProtoFuncToDateString):
       
 14971         (JSC::dateProtoFuncToTimeString):
       
 14972         (JSC::dateProtoFuncGetFullYear):
       
 14973         (JSC::dateProtoFuncGetUTCFullYear):
       
 14974         (JSC::dateProtoFuncToGMTString):
       
 14975         (JSC::dateProtoFuncGetMonth):
       
 14976         (JSC::dateProtoFuncGetUTCMonth):
       
 14977         (JSC::dateProtoFuncGetDate):
       
 14978         (JSC::dateProtoFuncGetUTCDate):
       
 14979         (JSC::dateProtoFuncGetDay):
       
 14980         (JSC::dateProtoFuncGetUTCDay):
       
 14981         (JSC::dateProtoFuncGetHours):
       
 14982         (JSC::dateProtoFuncGetUTCHours):
       
 14983         (JSC::dateProtoFuncGetMinutes):
       
 14984         (JSC::dateProtoFuncGetUTCMinutes):
       
 14985         (JSC::dateProtoFuncGetSeconds):
       
 14986         (JSC::dateProtoFuncGetUTCSeconds):
       
 14987         (JSC::dateProtoFuncGetTimezoneOffset):
       
 14988         (JSC::setNewValueFromTimeArgs):
       
 14989         (JSC::setNewValueFromDateArgs):
       
 14990         (JSC::dateProtoFuncSetYear):
       
 14991         (JSC::dateProtoFuncGetYear): Updated for the gregorianDateTime change above.
       
 14992 
       
 14993 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
       
 14994 
       
 14995         Build fix: export a new symbol.
       
 14996 
       
 14997         * JavaScriptCore.exp:
       
 14998         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 14999 
       
 15000 2009-11-09  Geoffrey Garen  <ggaren@apple.com>
       
 15001 
       
 15002         Reviewed by Sam "Home Wrecker" Weinig.
       
 15003 
       
 15004         Added a tiny cache for Date parsing.
       
 15005         
       
 15006         SunSpider says 1.2% faster.
       
 15007 
       
 15008         * runtime/DateConversion.cpp:
       
 15009         (JSC::parseDate): Try to reuse the last parsed Date, if present.
       
 15010 
       
 15011         * runtime/JSGlobalData.cpp:
       
 15012         (JSC::JSGlobalData::resetDateCache):
       
 15013         * runtime/JSGlobalData.h: Added storage for last parsed Date. Refactored
       
 15014         this code to make resetting the date cache easier.
       
 15015 
       
 15016         * runtime/JSGlobalObject.h:
       
 15017         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for
       
 15018         refactoring.
       
 15019 
       
 15020         * wtf/DateMath.cpp:
       
 15021         (JSC::parseDateFromNullTerminatedCharacters):
       
 15022         * wtf/DateMath.h: Changed ExecState to be first parameter, as is the JSC custom.
       
 15023 
       
 15024 2009-11-09  Oliver Hunt  <oliver@apple.com>
       
 15025 
       
 15026         Reviewed by Gavin Barraclough.
       
 15027 
       
 15028         Can cache prototype lookups on uncacheable dictionaries.
       
 15029         https://bugs.webkit.org/show_bug.cgi?id=31198
       
 15030 
       
 15031         Replace fromDictionaryTransition with flattenDictionaryObject and
       
 15032         flattenDictionaryStructure.  This change is necessary as we need to
       
 15033         guarantee that our attempt to convert away from a dictionary structure
       
 15034         will definitely succeed, and in some cases this requires mutating the
       
 15035         object storage itself.
       
 15036 
       
 15037         * interpreter/Interpreter.cpp:
       
 15038         (JSC::Interpreter::tryCacheGetByID):
       
 15039         * jit/JITStubs.cpp:
       
 15040         (JSC::JITThunks::tryCacheGetByID):
       
 15041         (JSC::DEFINE_STUB_FUNCTION):
       
 15042         * runtime/BatchedTransitionOptimizer.h:
       
 15043         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
       
 15044         * runtime/JSObject.h:
       
 15045         (JSC::JSObject::flattenDictionaryObject):
       
 15046         * runtime/Operations.h:
       
 15047         (JSC::normalizePrototypeChain):
       
 15048         * runtime/Structure.cpp:
       
 15049         (JSC::Structure::flattenDictionaryStructure):
       
 15050         (JSC::comparePropertyMapEntryIndices):
       
 15051         * runtime/Structure.h:
       
 15052 
       
 15053 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 15054 
       
 15055         Not reviewed, build fix.
       
 15056 
       
 15057         Remove extra character from r50701.
       
 15058 
       
 15059         * JavaScriptCore.pri:
       
 15060 
       
 15061 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 15062 
       
 15063         Not reviewed, build fix.
       
 15064 
       
 15065         Revert r50695 because it broke QtWebKit (clean builds).
       
 15066 
       
 15067         * JavaScriptCore.pri:
       
 15068 
       
 15069 2009-11-09  Norbert Leser  <norbert.leser@nokia.com>
       
 15070 
       
 15071         Reviewed by Kenneth Rohde Christiansen.
       
 15072 
       
 15073         Prepended $$PWD to GENERATED_SOURCES_DIR to avoid potential ambiguities when included from WebCore.pro.
       
 15074         Some preprocessors consider this GENERATED_SOURCES_DIR relative to current invoking dir (e.g., ./WebCore),
       
 15075         and not the working dir of JavaCriptCore.pri (i.e., ../JavaScriptCore/).
       
 15076 
       
 15077         * JavaScriptCore.pri:
       
 15078 
       
 15079 2009-11-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 15080 
       
 15081         Reviewed by Kenneth Rohde Christiansen.
       
 15082 
       
 15083         Use explicit parentheses to silence gcc 4.4 -Wparentheses warnings
       
 15084         https://bugs.webkit.org/show_bug.cgi?id=31040
       
 15085 
       
 15086         * interpreter/Interpreter.cpp:
       
 15087         (JSC::Interpreter::privateExecute):
       
 15088 
       
 15089 2009-11-08  David Levin  <levin@chromium.org>
       
 15090 
       
 15091         Reviewed by NOBODY (speculative snow leopard and windows build fixes).
       
 15092 
       
 15093         * wtf/DateMath.cpp:
       
 15094         (WTF::parseDateFromNullTerminatedCharacters):
       
 15095         (JSC::gregorianDateTimeToMS):
       
 15096         (JSC::msToGregorianDateTime):
       
 15097         (JSC::parseDateFromNullTerminatedCharacters):
       
 15098         * wtf/DateMath.h:
       
 15099         (JSC::GregorianDateTime::GregorianDateTime):
       
 15100 
       
 15101 2009-11-08  David Levin  <levin@chromium.org>
       
 15102 
       
 15103         Reviewed by NOBODY (chromium build fix).
       
 15104         
       
 15105         Hopefully, the last build fix.
       
 15106 
       
 15107         Create better separation in DateMath about the JSC
       
 15108         and non-JSC portions. Also, only expose the non-JSC
       
 15109         version in the exports.
       
 15110 
       
 15111         * JavaScriptCore.exp:
       
 15112         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 15113         * wtf/DateMath.cpp:
       
 15114         (WTF::parseDateFromNullTerminatedCharacters):
       
 15115         (JSC::getUTCOffset):
       
 15116         (JSC::gregorianDateTimeToMS):
       
 15117         (JSC::msToGregorianDateTime):
       
 15118         (JSC::parseDateFromNullTerminatedCharacters):
       
 15119         * wtf/DateMath.h:
       
 15120         (JSC::gmtoffset):
       
 15121 
       
 15122 2009-11-08  David Levin  <levin@chromium.org>
       
 15123 
       
 15124         Reviewed by NOBODY (chromium build fix).
       
 15125 
       
 15126         For the change in DateMath.
       
 15127 
       
 15128         * config.h:
       
 15129         * wtf/DateMath.cpp:
       
 15130 
       
 15131 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
       
 15132 
       
 15133         Windows build fix: export some symbols.
       
 15134 
       
 15135         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 15136 
       
 15137 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
       
 15138 
       
 15139         Build fix: updated export file.
       
 15140 
       
 15141         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 15142 
       
 15143 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
       
 15144 
       
 15145         Build fix: added some #includes.
       
 15146 
       
 15147         * wtf/CurrentTime.h:
       
 15148         * wtf/DateMath.h:
       
 15149 
       
 15150 2009-11-06  Geoffrey Garen  <ggaren@apple.com>
       
 15151 
       
 15152         Reviewed by Oliver Hunt.
       
 15153         
       
 15154         https://bugs.webkit.org/show_bug.cgi?id=31197
       
 15155         Implemented a timezone cache not based on Mac OS X's notify_check API.
       
 15156         
       
 15157         If the VM calculates the local timezone offset from UTC, it caches the
       
 15158         result until the end of the current VM invocation. (We don't want to cache
       
 15159         forever, because the user's timezone may change over time.)
       
 15160         
       
 15161         This removes notify_* overhead on Mac, and, more significantly, removes
       
 15162         OS time and date call overhead on non-Mac platforms.
       
 15163 
       
 15164         ~8% speedup on Date microbenchmark on Mac. SunSpider reports maybe a tiny
       
 15165         speedup on Mac. (Speedup on non-Mac platforms should be even more noticeable.)
       
 15166 
       
 15167         * JavaScriptCore.exp:
       
 15168 
       
 15169         * interpreter/CachedCall.h:
       
 15170         (JSC::CachedCall::CachedCall):
       
 15171         * interpreter/Interpreter.cpp:
       
 15172         (JSC::Interpreter::execute):
       
 15173         * runtime/JSGlobalObject.h:
       
 15174         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Made the 
       
 15175         DynamicGlobalObjectScope constructor responsible for checking whether a
       
 15176         dynamicGlobalObject has already been set. This eliminated some duplicate
       
 15177         client code, and allowed me to avoid adding even more duplicate client
       
 15178         code. Made DynamicGlobalObjectScope responsible for resetting the
       
 15179         local timezone cache upon first entry to the VM.
       
 15180 
       
 15181         * runtime/DateConstructor.cpp:
       
 15182         (JSC::constructDate):
       
 15183         (JSC::callDate):
       
 15184         (JSC::dateParse):
       
 15185         (JSC::dateUTC):
       
 15186         * runtime/DateConversion.cpp:
       
 15187         (JSC::parseDate):
       
 15188         * runtime/DateConversion.h:
       
 15189         * runtime/DateInstance.cpp:
       
 15190         (JSC::DateInstance::gregorianDateTime):
       
 15191         * runtime/DateInstance.h:
       
 15192         * runtime/DateInstanceCache.h:
       
 15193         * runtime/DatePrototype.cpp:
       
 15194         (JSC::setNewValueFromTimeArgs):
       
 15195         (JSC::setNewValueFromDateArgs):
       
 15196         (JSC::dateProtoFuncSetYear):
       
 15197         * runtime/InitializeThreading.cpp:
       
 15198         (JSC::initializeThreadingOnce):
       
 15199         * runtime/JSGlobalData.cpp:
       
 15200         (JSC::JSGlobalData::JSGlobalData):
       
 15201         * runtime/JSGlobalData.h:
       
 15202         * wtf/DateMath.cpp:
       
 15203         (WTF::getCurrentUTCTime):
       
 15204         (WTF::getCurrentUTCTimeWithMicroseconds):
       
 15205         (WTF::getLocalTime):
       
 15206         (JSC::getUTCOffset): Use the new cache. Also, see below.
       
 15207         (JSC::gregorianDateTimeToMS):
       
 15208         (JSC::msToGregorianDateTime):
       
 15209         (JSC::initializeDates):
       
 15210         (JSC::parseDateFromNullTerminatedCharacters): Simplified the way this function
       
 15211         accounts for the local timezone offset, to accomodate our new caching API,
       
 15212         and a (possibly misguided) caller in WebCore. Also, see below.
       
 15213         * wtf/DateMath.h:
       
 15214         (JSC::GregorianDateTime::GregorianDateTime): Moved most of the code in
       
 15215         DateMath.* into the JSC namespace. The code needed to move so it could
       
 15216         naturally interact with ExecState and JSGlobalData to support caching.
       
 15217         Logically, it seemed right to move it, too, since this code is not really
       
 15218         as low-level as the WTF namespace might imply -- it implements a set of
       
 15219         date parsing and conversion quirks that are finely tuned to the JavaScript
       
 15220         language. Also removed the Mac OS X notify_* infrastructure.
       
 15221         
       
 15222         * wtf/CurrentTime.h:
       
 15223         (WTF::currentTimeMS):
       
 15224         (WTF::getLocalTime): Moved the rest of the DateMath code here, and renamed
       
 15225         it to make it consistent with WTF's currentTime function.
       
 15226 
       
 15227 2009-11-06  Gabor Loki  <loki@inf.u-szeged.hu>
       
 15228 
       
 15229         Unreviewed trivial buildfix after r50595.
       
 15230 
       
 15231         Rename the remaining rshiftPtr calls to rshift32
       
 15232 
       
 15233         * jit/JITArithmetic.cpp:
       
 15234         (JSC::JIT::emit_op_rshift):
       
 15235         * jit/JITInlineMethods.h:
       
 15236         (JSC::JIT::emitFastArithImmToInt):
       
 15237 
       
 15238 2009-11-06  Gavin Barraclough  <barraclough@apple.com>
       
 15239 
       
 15240         Reviewed by Oliver Hunt.
       
 15241 
       
 15242         Tidy up the shift methods on the macro-assembler interface.
       
 15243 
       
 15244         Currently behaviour of shifts of a magnitude > 0x1f is undefined.
       
 15245         Instead defined that all shifts are masked to this range.  This makes a lot of
       
 15246         practical sense, both since having undefined behaviour is not particularly
       
 15247         desirable, and because this behaviour is commonly required (particularly since
       
 15248         it is required bt ECMA-262 for shifts).
       
 15249 
       
 15250         Update the ARM assemblers to provide this behaviour.  Remove (now) redundant
       
 15251         masks from JITArithmetic, and remove rshiftPtr (this was used in case that
       
 15252         could be rewritten in a simpler form using rshift32, only optimized JSVALUE32
       
 15253         on x86-64, which uses JSVALUE64!)
       
 15254 
       
 15255         * assembler/MacroAssembler.h:
       
 15256         * assembler/MacroAssemblerARM.h:
       
 15257         (JSC::MacroAssemblerARM::lshift32):
       
 15258         (JSC::MacroAssemblerARM::rshift32):
       
 15259         * assembler/MacroAssemblerARMv7.h:
       
 15260         (JSC::MacroAssemblerARMv7::lshift32):
       
 15261         (JSC::MacroAssemblerARMv7::rshift32):
       
 15262         * assembler/MacroAssemblerX86_64.h:
       
 15263         * jit/JITArithmetic.cpp:
       
 15264         (JSC::JIT::emit_op_lshift):
       
 15265         (JSC::JIT::emit_op_rshift):
       
 15266 
       
 15267 2009-11-05  Gavin Barraclough  <barraclough@apple.com>
       
 15268 
       
 15269         Rubber Stamped by Oliver Hunt.
       
 15270 
       
 15271         Remove a magic number (1) from the JIT, instead compute the value with OBJECT_OFFSET.
       
 15272 
       
 15273         * jit/JITInlineMethods.h:
       
 15274         (JSC::JIT::emitPutJITStubArg):
       
 15275         (JSC::JIT::emitPutJITStubArgConstant):
       
 15276         (JSC::JIT::emitGetJITStubArg):
       
 15277         (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
       
 15278         * jit/JITStubCall.h:
       
 15279         (JSC::JITStubCall::JITStubCall):
       
 15280         (JSC::JITStubCall::getArgument):
       
 15281         * jit/JITStubs.h:
       
 15282 
       
 15283 2009-11-05  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
       
 15284 
       
 15285         Reviewed by Gavin Barraclough.
       
 15286 
       
 15287         https://bugs.webkit.org/show_bug.cgi?id=31159
       
 15288         Fix branchDouble behaviour on ARM THUMB2 JIT.
       
 15289 
       
 15290         The x86 branchDouble behaviour is reworked, and all JIT
       
 15291         ports should follow the x86 port. See bug 31104 and 31151
       
 15292 
       
 15293         This patch contains a fix for the traditional ARM port
       
 15294 
       
 15295         * assembler/ARMAssembler.h:
       
 15296         (JSC::ARMAssembler::):
       
 15297         (JSC::ARMAssembler::fmrs_r):
       
 15298         (JSC::ARMAssembler::ftosid_r):
       
 15299         * assembler/MacroAssemblerARM.h:
       
 15300         (JSC::MacroAssemblerARM::):
       
 15301         (JSC::MacroAssemblerARM::branchDouble):
       
 15302         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
       
 15303 
       
 15304 2009-11-05  Chris Jerdonek  <chris.jerdonek@gmail.com>
       
 15305 
       
 15306         Reviewed by Eric Seidel.
       
 15307 
       
 15308         Removed the "this is part of the KDE project" comments from 
       
 15309         all *.h, *.cpp, *.idl, and *.pm files.
       
 15310         
       
 15311         https://bugs.webkit.org/show_bug.cgi?id=31167
       
 15312         
       
 15313         The maintenance and architecture page in the project wiki lists
       
 15314         this as a task.
       
 15315         
       
 15316         This change includes no changes or additions to test cases 
       
 15317         since the change affects only comments.
       
 15318         
       
 15319         * wtf/wince/FastMallocWince.h:
       
 15320 
       
 15321 2009-11-05  Gabor Loki  <loki@inf.u-szeged.hu>
       
 15322 
       
 15323         Reviewed by Gavin Barraclough.
       
 15324 
       
 15325         Use ARMv7 specific encoding for immediate constants on ARMv7 target
       
 15326         https://bugs.webkit.org/show_bug.cgi?id=31060
       
 15327 
       
 15328         * assembler/ARMAssembler.cpp:
       
 15329         (JSC::ARMAssembler::getOp2): Use INVALID_IMM
       
 15330         (JSC::ARMAssembler::getImm): Use encodeComplexImm for complex immediate
       
 15331         (JSC::ARMAssembler::moveImm): Ditto.
       
 15332         (JSC::ARMAssembler::encodeComplexImm): Encode a constant by one or two
       
 15333         instructions or a PC relative load.
       
 15334         * assembler/ARMAssembler.h: Use INVALID_IMM if a constant cannot be
       
 15335         encoded as an immediate constant.
       
 15336         (JSC::ARMAssembler::):
       
 15337         (JSC::ARMAssembler::movw_r): 16-bit immediate load
       
 15338         (JSC::ARMAssembler::movt_r): High halfword 16-bit immediate load
       
 15339         (JSC::ARMAssembler::getImm16Op2): Encode immediate constant for
       
 15340         movw_r and mowt_r
       
 15341 
       
 15342 2009-11-04  Mark Mentovai  <mark@chromium.org>
       
 15343 
       
 15344         Reviewed by Mark Rowe.
       
 15345 
       
 15346         Provide TARGETING_TIGER and TARGETING_LEOPARD as analogues to
       
 15347         BUILDING_ON_TIGER and BUILDING_ON_LEOPARD.  The TARGETING_ macros
       
 15348         consider the deployment target; the BUILDING_ON_ macros consider the
       
 15349         headers being built against.
       
 15350 
       
 15351         * wtf/Platform.h:
       
 15352 
       
 15353 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
       
 15354 
       
 15355         Reviewed by Oliver Hunt.
       
 15356 
       
 15357         https://bugs.webkit.org/show_bug.cgi?id=31151
       
 15358         Fix branchDouble behaviour on ARM THUMB2 JIT.
       
 15359 
       
 15360         The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch
       
 15361         for DoubleEqualOrUnordered, however this is incorrect - ConditionEQ won't
       
 15362         branch on unordered operands.  Similarly, DoubleLessThanOrUnordered &
       
 15363         DoubleLessThanOrEqualOrUnordered use ARMv7Assembler::ConditionLO &
       
 15364         ARMv7Assembler::ConditionLS, whereas they should be using
       
 15365         ARMv7Assembler::ConditionLT & ARMv7Assembler::ConditionLE.
       
 15366 
       
 15367         Fix these, and fill out the missing DoubleConditions.
       
 15368 
       
 15369         * assembler/MacroAssemblerARMv7.h:
       
 15370         (JSC::MacroAssemblerARMv7::):
       
 15371         (JSC::MacroAssemblerARMv7::branchDouble):
       
 15372 
       
 15373 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
       
 15374 
       
 15375         Rubber Stamped by Oliver Hunt.
       
 15376 
       
 15377         Enable native call optimizations on ARMv7.  (Existing ARM_TRADITIONAL
       
 15378         implementation was generic, worked perfectly, just needed turning on).
       
 15379 
       
 15380         * jit/JITOpcodes.cpp:
       
 15381         * wtf/Platform.h:
       
 15382 
       
 15383 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
       
 15384 
       
 15385         Rubber Stamped by Mark Rowe, Oliver Hunt, and Sam Weinig.
       
 15386 
       
 15387         Add a missing assert to the ARMv7 JIT.
       
 15388 
       
 15389         * assembler/ARMv7Assembler.h:
       
 15390         (JSC::ARMThumbImmediate::ARMThumbImmediate):
       
 15391 
       
 15392 2009-11-04  Mark Rowe  <mrowe@apple.com>
       
 15393 
       
 15394         Rubber-stamped by Oliver Hunt.
       
 15395 
       
 15396         Remove bogus op_ prefix on dumped version of three opcodes.
       
 15397 
       
 15398         * bytecode/CodeBlock.cpp:
       
 15399         (JSC::CodeBlock::dump):
       
 15400 
       
 15401 2009-11-04  Mark Rowe  <mrowe@apple.com>
       
 15402 
       
 15403         Reviewed by Sam Weinig.
       
 15404 
       
 15405         Fix dumping of constants in bytecode so that they aren't printed as large positive register numbers.
       
 15406 
       
 15407         We do this by having the registerName function return information about the constant if the register
       
 15408         number corresponds to a constant.  This requires that registerName, and several functions that call it,
       
 15409         be converted to member functions of CodeBlock so that the constant value can be retrieved.  The
       
 15410         ExecState also needs to be threaded down through these functions so that it can be passed on to
       
 15411         constantName when needed.
       
 15412 
       
 15413         * bytecode/CodeBlock.cpp:
       
 15414         (JSC::constantName):
       
 15415         (JSC::CodeBlock::registerName):
       
 15416         (JSC::CodeBlock::printUnaryOp):
       
 15417         (JSC::CodeBlock::printBinaryOp):
       
 15418         (JSC::CodeBlock::printConditionalJump):
       
 15419         (JSC::CodeBlock::printGetByIdOp):
       
 15420         (JSC::CodeBlock::printPutByIdOp):
       
 15421         (JSC::CodeBlock::dump):
       
 15422         * bytecode/CodeBlock.h:
       
 15423         (JSC::CodeBlock::isConstantRegisterIndex):
       
 15424 
       
 15425 2009-11-04  Pavel Heimlich  <tropikhajma@gmail.com>
       
 15426 
       
 15427         Reviewed by Alexey Proskuryakov.
       
 15428 
       
 15429         https://bugs.webkit.org/show_bug.cgi?id=30647
       
 15430         Solaris build failure due to strnstr.
       
 15431 
       
 15432         * wtf/StringExtras.h: Enable strnstr on Solaris, too.
       
 15433 
       
 15434 2009-11-04  Gavin Barraclough  <barraclough@apple.com>
       
 15435 
       
 15436         Reviewed by Oliver Hunt.
       
 15437 
       
 15438         https://bugs.webkit.org/show_bug.cgi?id=31104
       
 15439         Refactor x86-specific behaviour out of the JIT.
       
 15440 
       
 15441         - Add explicit double branch conditions for ordered and unordered comparisons (presently the brehaviour is a mix).
       
 15442         - Refactor double to int conversion out into the MacroAssembler.
       
 15443         - Remove broken double to int conversion for !JSVALUE32_64 builds - this code was broken and slowing us down, fixing it showed it not to be an improvement.
       
 15444         - Remove exclusion of double to int conversion from (1 % X) cases in JSVALUE32_64 builds - if this was of benefit this is no longer the case; simplify.
       
 15445 
       
 15446         * assembler/MacroAssemblerARM.h:
       
 15447         (JSC::MacroAssemblerARM::):
       
 15448         * assembler/MacroAssemblerARMv7.h:
       
 15449         (JSC::MacroAssemblerARMv7::):
       
 15450         * assembler/MacroAssemblerX86Common.h:
       
 15451         (JSC::MacroAssemblerX86Common::):
       
 15452         (JSC::MacroAssemblerX86Common::convertInt32ToDouble):
       
 15453         (JSC::MacroAssemblerX86Common::branchDouble):
       
 15454         (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
       
 15455         * jit/JITArithmetic.cpp:
       
 15456         (JSC::JIT::emitBinaryDoubleOp):
       
 15457         (JSC::JIT::emit_op_div):
       
 15458         (JSC::JIT::emitSlow_op_jnless):
       
 15459         (JSC::JIT::emitSlow_op_jnlesseq):
       
 15460         * jit/JITOpcodes.cpp:
       
 15461         (JSC::JIT::emit_op_jfalse):
       
 15462 
       
 15463 2009-11-04  Mark Mentovai  <mark@chromium.org>
       
 15464 
       
 15465         Reviewed by Eric Seidel.
       
 15466 
       
 15467         Remove BUILDING_ON_LEOPARD from JavaScriptCore.gyp.  This is supposed
       
 15468         to be set as needed only in wtf/Platform.h.
       
 15469 
       
 15470         * JavaScriptCore.gyp/JavaScriptCore.gyp:
       
 15471 
       
 15472 2009-11-02  Oliver Hunt  <oliver@apple.com>
       
 15473 
       
 15474         Reviewed by Gavin Barraclough.
       
 15475 
       
 15476         REGRESSION (r48573): JSC may incorrectly cache chain lookups with a dictionary at the head of the chain
       
 15477         https://bugs.webkit.org/show_bug.cgi?id=31045
       
 15478 
       
 15479         Add guards to prevent caching of prototype chain lookups with dictionaries at the
       
 15480         head of the chain.  Also add a few tighter assertions to cached prototype lookups
       
 15481         to catch this in future.
       
 15482 
       
 15483         * interpreter/Interpreter.cpp:
       
 15484         (JSC::Interpreter::tryCacheGetByID):
       
 15485         (JSC::Interpreter::privateExecute):
       
 15486         * jit/JITStubs.cpp:
       
 15487         (JSC::JITThunks::tryCacheGetByID):
       
 15488 
       
 15489 2009-11-02  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 15490 
       
 15491         Reviewed by Darin Adler.
       
 15492 
       
 15493         PLATFORM(CF) should be set when building for Qt on Darwin
       
 15494         https://bugs.webkit.org/show_bug.cgi?id=23671
       
 15495 
       
 15496         * wtf/Platform.h: Turn on CF support if both QT and DARWIN
       
 15497         platforms are defined.
       
 15498 
       
 15499 2009-11-02  Dmitry Titov  <dimich@chromium.org>
       
 15500 
       
 15501         Reviewed by David Levin.
       
 15502 
       
 15503         Remove threadsafe refcounting from tasks used with WTF::MessageQueue.
       
 15504         https://bugs.webkit.org/show_bug.cgi?id=30612
       
 15505 
       
 15506         * wtf/MessageQueue.h:
       
 15507         (WTF::MessageQueue::alwaysTruePredicate):
       
 15508         (WTF::MessageQueue::~MessageQueue):
       
 15509         (WTF::MessageQueue::append):
       
 15510         (WTF::MessageQueue::appendAndCheckEmpty):
       
 15511         (WTF::MessageQueue::prepend):
       
 15512         (WTF::MessageQueue::waitForMessage):
       
 15513         (WTF::MessageQueue::waitForMessageFilteredWithTimeout):
       
 15514         (WTF::MessageQueue::tryGetMessage):
       
 15515         (WTF::MessageQueue::removeIf):
       
 15516         The MessageQueue is changed to act as a queue of OwnPtr<DataType>. It takes ownership
       
 15517         of posted tasks and passes it to the new owner (in another thread) when the task is fetched.
       
 15518         All methods have arguments of type PassOwnPtr<DataType> and return the same type.
       
 15519 
       
 15520         * wtf/Threading.cpp:
       
 15521         (WTF::createThread):
       
 15522         Superficial change to trigger rebuild of JSC project on Windows,
       
 15523         workaround for https://bugs.webkit.org/show_bug.cgi?id=30890
       
 15524 
       
 15525 2009-10-30  Geoffrey Garen  <ggaren@apple.com>
       
 15526 
       
 15527         Reviewed by Oliver Hunt.
       
 15528 
       
 15529         Fixed failing layout test: restore a special case I accidentally deleted.
       
 15530 
       
 15531         * runtime/DatePrototype.cpp:
       
 15532         (JSC::setNewValueFromDateArgs): In the case of applying a change to a date
       
 15533         that is NaN, reset the date to 0 *and* then apply the change; don't just
       
 15534         reset the date to 0.
       
 15535 
       
 15536 2009-10-30  Geoffrey Garen  <ggaren@apple.com>
       
 15537 
       
 15538         Windows build fix: update for object-to-pointer change.
       
 15539 
       
 15540         * runtime/DatePrototype.cpp:
       
 15541         (JSC::formatLocaleDate):
       
 15542 
       
 15543 2009-10-29  Geoffrey Garen  <ggaren@apple.com>
       
 15544 
       
 15545         Reviewed by Darin Adler.
       
 15546 
       
 15547         https://bugs.webkit.org/show_bug.cgi?id=30942
       
 15548         Use pointers instead of copies to pass GregorianDateTime objects around.
       
 15549         
       
 15550         SunSpider reports a shocking 4.5% speedup on date-format-xparb, and 1.3%
       
 15551         speedup on date-format-tofte.
       
 15552 
       
 15553         * runtime/DateInstance.cpp:
       
 15554         (JSC::DateInstance::gregorianDateTime):
       
 15555         * runtime/DateInstance.h:
       
 15556         * runtime/DatePrototype.cpp:
       
 15557         (JSC::formatLocaleDate):
       
 15558         (JSC::dateProtoFuncToString):
       
 15559         (JSC::dateProtoFuncToUTCString):
       
 15560         (JSC::dateProtoFuncToISOString):
       
 15561         (JSC::dateProtoFuncToDateString):
       
 15562         (JSC::dateProtoFuncToTimeString):
       
 15563         (JSC::dateProtoFuncGetFullYear):
       
 15564         (JSC::dateProtoFuncGetUTCFullYear):
       
 15565         (JSC::dateProtoFuncToGMTString):
       
 15566         (JSC::dateProtoFuncGetMonth):
       
 15567         (JSC::dateProtoFuncGetUTCMonth):
       
 15568         (JSC::dateProtoFuncGetDate):
       
 15569         (JSC::dateProtoFuncGetUTCDate):
       
 15570         (JSC::dateProtoFuncGetDay):
       
 15571         (JSC::dateProtoFuncGetUTCDay):
       
 15572         (JSC::dateProtoFuncGetHours):
       
 15573         (JSC::dateProtoFuncGetUTCHours):
       
 15574         (JSC::dateProtoFuncGetMinutes):
       
 15575         (JSC::dateProtoFuncGetUTCMinutes):
       
 15576         (JSC::dateProtoFuncGetSeconds):
       
 15577         (JSC::dateProtoFuncGetUTCSeconds):
       
 15578         (JSC::dateProtoFuncGetTimezoneOffset):
       
 15579         (JSC::setNewValueFromTimeArgs):
       
 15580         (JSC::setNewValueFromDateArgs):
       
 15581         (JSC::dateProtoFuncSetYear):
       
 15582         (JSC::dateProtoFuncGetYear): Renamed getGregorianDateTime to gregorianDateTime,
       
 15583         since it no longer has an out parameter. Uses 0 to indicate invalid dates.
       
 15584 
       
 15585 2009-10-30  Zoltan Horvath  <zoltan@webkit.org>
       
 15586 
       
 15587         Reviewed by Darin Adler.
       
 15588 
       
 15589         Allow custom memory allocation control for JavaScriptCore's ListHashSet
       
 15590         https://bugs.webkit.org/show_bug.cgi?id=30853
       
 15591 
       
 15592         Inherits ListHashSet class from FastAllocBase because it is
       
 15593         instantiated by 'new' in WebCore/rendering/RenderBlock.cpp:1813.
       
 15594 
       
 15595         * wtf/ListHashSet.h:
       
 15596 
       
 15597 2009-10-30  Oliver Hunt  <oliver@apple.com>
       
 15598 
       
 15599         Reviewed by Gavin Barraclough.
       
 15600 
       
 15601         Regression: crash enumerating properties of an object with getters or setters
       
 15602         https://bugs.webkit.org/show_bug.cgi?id=30948
       
 15603 
       
 15604         Add a guard to prevent us trying to cache property enumeration on
       
 15605         objects with getters or setters.
       
 15606 
       
 15607         * runtime/JSPropertyNameIterator.cpp:
       
 15608         (JSC::JSPropertyNameIterator::create):
       
 15609 
       
 15610 2009-10-30  Roland Steiner  <rolandsteiner@chromium.org>
       
 15611 
       
 15612         Reviewed by Eric Seidel.
       
 15613 
       
 15614         Remove ENABLE_RUBY guards as discussed with Dave Hyatt and Maciej Stachowiak.
       
 15615 
       
 15616         Bug 28420 -  Implement HTML5 <ruby> rendering
       
 15617         (https://bugs.webkit.org/show_bug.cgi?id=28420)
       
 15618  
       
 15619         No new tests (no functional change).
       
 15620 
       
 15621         * Configurations/FeatureDefines.xcconfig:
       
 15622 
       
 15623 2009-10-29  Oliver Hunt  <oliver@apple.com>
       
 15624 
       
 15625         Reviewed by Maciej Stachowiak.
       
 15626 
       
 15627         REGRESSION (r50218-r50262): E*TRADE accounts page is missing content
       
 15628         https://bugs.webkit.org/show_bug.cgi?id=30947
       
 15629         <rdar://problem/7348833>
       
 15630 
       
 15631         The logic for flagging that a structure has non-enumerable properties
       
 15632         was in addPropertyWithoutTransition, rather than in the core Structure::put
       
 15633         method.  Despite this I was unable to produce a testcase that caused
       
 15634         the failure that etrade was experiencing, but the new assertion in
       
 15635         getEnumerablePropertyNames triggers on numerous layout tests without
       
 15636         the fix, so in effecti all for..in enumeration in any test ends up
       
 15637         doing the required consistency check.
       
 15638 
       
 15639         * runtime/Structure.cpp:
       
 15640         (JSC::Structure::addPropertyWithoutTransition):
       
 15641         (JSC::Structure::put):
       
 15642         (JSC::Structure::getEnumerablePropertyNames):
       
 15643         (JSC::Structure::checkConsistency):
       
 15644 
       
 15645 2009-10-29  Gabor Loki  <loki@inf.u-szeged.hu>
       
 15646 
       
 15647         Reviewed by Gavin Barraclough.
       
 15648 
       
 15649         Add cacheFlush support for Thumb-2 on Linux
       
 15650         https://bugs.webkit.org/show_bug.cgi?id=30865
       
 15651 
       
 15652         * jit/ExecutableAllocator.h:
       
 15653         (JSC::ExecutableAllocator::cacheFlush):
       
 15654 
       
 15655 2009-10-28  Gavin Barraclough  <barraclough@apple.com>
       
 15656 
       
 15657         Reviewed by Oliver Hunt.
       
 15658 
       
 15659         JSC JIT on ARMv7 cannot link jumps >16Mb range
       
 15660         https://bugs.webkit.org/show_bug.cgi?id=30891
       
 15661 
       
 15662         Start planing all relative jumps as move-32-bit-immediate-to-register-BX.
       
 15663         In the cases where the jump would fall within a relative jump range, use a relative jump.
       
 15664 
       
 15665         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 15666         * assembler/ARMv7Assembler.h:
       
 15667         (JSC::ARMv7Assembler::~ARMv7Assembler):
       
 15668         (JSC::ARMv7Assembler::LinkRecord::LinkRecord):
       
 15669         (JSC::ARMv7Assembler::):
       
 15670         (JSC::ARMv7Assembler::executableCopy):
       
 15671         (JSC::ARMv7Assembler::linkJump):
       
 15672         (JSC::ARMv7Assembler::relinkJump):
       
 15673         (JSC::ARMv7Assembler::setInt32):
       
 15674         (JSC::ARMv7Assembler::isB):
       
 15675         (JSC::ARMv7Assembler::isBX):
       
 15676         (JSC::ARMv7Assembler::isMOV_imm_T3):
       
 15677         (JSC::ARMv7Assembler::isMOVT):
       
 15678         (JSC::ARMv7Assembler::isNOP_T1):
       
 15679         (JSC::ARMv7Assembler::isNOP_T2):
       
 15680         (JSC::ARMv7Assembler::linkJumpAbsolute):
       
 15681         (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmFirst):
       
 15682         (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmSecond):
       
 15683         (JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp5i6Imm4Reg4EncodedImm):
       
 15684         * assembler/MacroAssemblerARMv7.h:
       
 15685         (JSC::MacroAssemblerARMv7::makeJump):
       
 15686         (JSC::MacroAssemblerARMv7::makeBranch):
       
 15687         * jit/JIT.h:
       
 15688         * wtf/Platform.h:
       
 15689 
       
 15690 2009-10-28  Oliver Hunt  <oliver@apple.com>
       
 15691 
       
 15692         Reviewed by Geoff Garen.
       
 15693 
       
 15694         Improve for..in enumeration performance
       
 15695         https://bugs.webkit.org/show_bug.cgi?id=30887
       
 15696 
       
 15697         Improve indexing of an object with a for..in iterator by
       
 15698         identifying cases where get_by_val is being used with a iterator
       
 15699         as the subscript and replace it with a new get_by_pname
       
 15700         bytecode.  get_by_pname then optimizes lookups that directly access
       
 15701         the base object.
       
 15702 
       
 15703         * bytecode/CodeBlock.cpp:
       
 15704         (JSC::CodeBlock::dump):
       
 15705         * bytecode/Opcode.h:
       
 15706         * bytecompiler/BytecodeGenerator.cpp:
       
 15707         (JSC::BytecodeGenerator::emitGetByVal):
       
 15708         * bytecompiler/BytecodeGenerator.h:
       
 15709         (JSC::BytecodeGenerator::pushOptimisedForIn):
       
 15710         (JSC::BytecodeGenerator::popOptimisedForIn):
       
 15711         * interpreter/Interpreter.cpp:
       
 15712         (JSC::Interpreter::privateExecute):
       
 15713         * jit/JIT.cpp:
       
 15714         (JSC::JIT::privateCompileMainPass):
       
 15715         (JSC::JIT::privateCompileSlowCases):
       
 15716         * jit/JIT.h:
       
 15717         * jit/JITPropertyAccess.cpp:
       
 15718         (JSC::JIT::compileGetDirectOffset):
       
 15719         (JSC::JIT::emit_op_get_by_pname):
       
 15720         (JSC::JIT::emitSlow_op_get_by_pname):
       
 15721         * parser/Nodes.cpp:
       
 15722         (JSC::ForInNode::emitBytecode):
       
 15723         * runtime/JSObject.h:
       
 15724         * runtime/JSPropertyNameIterator.cpp:
       
 15725         (JSC::JSPropertyNameIterator::create):
       
 15726         * runtime/JSPropertyNameIterator.h:
       
 15727         (JSC::JSPropertyNameIterator::getOffset):
       
 15728         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
       
 15729         * runtime/JSValue.h:
       
 15730         (JSC::JSValue::):
       
 15731         * runtime/Structure.cpp:
       
 15732         (JSC::Structure::addPropertyTransition):
       
 15733         (JSC::Structure::changePrototypeTransition):
       
 15734         (JSC::Structure::despecifyFunctionTransition):
       
 15735         (JSC::Structure::addAnonymousSlotsTransition):
       
 15736         (JSC::Structure::getterSetterTransition):
       
 15737         (JSC::Structure::toDictionaryTransition):
       
 15738         (JSC::Structure::addPropertyWithoutTransition):
       
 15739           Track the existence (or not) of non-enumerable properties.
       
 15740         * runtime/Structure.h:
       
 15741         (JSC::Structure::propertyStorageCapacity):
       
 15742         (JSC::Structure::propertyStorageSize):
       
 15743         (JSC::Structure::hasNonEnumerableProperties):
       
 15744         (JSC::Structure::hasAnonymousSlots):
       
 15745 
       
 15746 2009-10-28  Dmitry Titov  <dimich@chromium.org>
       
 15747 
       
 15748         Not reviewed, attemp to fix Windows build.
       
 15749 
       
 15750         Touch the cpp file to cause recompile.
       
 15751 
       
 15752         * wtf/Threading.cpp:
       
 15753         (WTF::threadEntryPoint):
       
 15754 
       
 15755 2009-10-28  Dmitry Titov  <dimich@chromium.org>
       
 15756 
       
 15757         Reviewed by David Levin.
       
 15758 
       
 15759         https://bugs.webkit.org/show_bug.cgi?id=30805
       
 15760         Add MessageQueue::removeIf(Predicate&) to remove certain tasks without pulling them from the queue.
       
 15761         Existing Database tests cover this since Database removes tasks when it is stopped.
       
 15762 
       
 15763         * wtf/MessageQueue.h:
       
 15764         (WTF::::removeIf):
       
 15765 
       
 15766 2009-10-28  Afonso R. Costa Jr.  <afonso.costa@openbossa.org>
       
 15767 
       
 15768         Reviewed by Oliver Hunt.
       
 15769 
       
 15770         [Qt] Enable YARR when YARR_JIT is enabled
       
 15771         https://bugs.webkit.org/show_bug.cgi?id=30730
       
 15772 
       
 15773         When enabling or disabling JIT using JAVASCRIPTCORE_JIT, the ENABLE_YARR should
       
 15774         be toggled also.
       
 15775 
       
 15776         * JavaScriptCore.pri:
       
 15777 
       
 15778 2009-10-24  Martin Robinson  <martin.james.robinson@gmail.com>
       
 15779 
       
 15780         Reviewed by Oliver Hunt.
       
 15781 
       
 15782         Fix strict aliasing warning by switching reinterpret_cast to bitwise_cast.
       
 15783 
       
 15784         strict-aliasing warnings in JSFunction.h
       
 15785         https://bugs.webkit.org/show_bug.cgi?id=27869
       
 15786 
       
 15787         * runtime/JSFunction.h:
       
 15788         (JSC::JSFunction::nativeFunction):
       
 15789         (JSC::JSFunction::scopeChain):
       
 15790         (JSC::JSFunction::setScopeChain):
       
 15791         (JSC::JSFunction::setNativeFunction):
       
 15792 
       
 15793 2009-10-28  Jan-Arve Sæther <jan-arve.saether@nokia.com>
       
 15794 
       
 15795         Reviewed by Tor Arne Vestbø.
       
 15796 
       
 15797         Build-fix for 64-bit Windows
       
 15798 
       
 15799         * wtf/Platform.h: Make sure to use WTF_USE_JSVALUE64
       
 15800 
       
 15801 2009-10-28  Gavin Barraclough  <barraclough@apple.com>
       
 15802 
       
 15803         Reviewed by NOBODY (build fix!).
       
 15804 
       
 15805         * jit/JIT.h:
       
 15806 
       
 15807 2009-10-26  Holger Hans Peter Freyther  <zecke@selfish.org>
       
 15808 
       
 15809         Rubber-stamped by Darin Adler.
       
 15810 
       
 15811         Export fastMalloc, fastCalloc, fastRealloc and fastFree on GCC/Unix
       
 15812         https://bugs.webkit.org/show_bug.cgi?id=30769
       
 15813 
       
 15814         When using -fvisibility=hidden to hide all internal symbols by default
       
 15815         the malloc symbols will be hidden as well. For memory instrumentation
       
 15816         it is needed to provide an instrumented version of these symbols and
       
 15817         override the normal routines and by changing the visibility back to
       
 15818         default this becomes possible.
       
 15819 
       
 15820         The only other solution would be to use system malloc instead of the
       
 15821         TCmalloc implementation but this will not allow to analyze memory
       
 15822         behavior with the default allocator.
       
 15823 
       
 15824         * wtf/FastMalloc.h: Define WTF_FAST_MALLOC_EXPORT for GCC and !darwin
       
 15825 
       
 15826 2009-10-27  Gavin Barraclough  <barraclough@apple.com>
       
 15827 
       
 15828         Rubber Stamped by Samuel Q. Weinig.
       
 15829 
       
 15830         Make the asserts protecting the offsets in the JIT more descriptive.
       
 15831 
       
 15832         * jit/JIT.h:
       
 15833         * jit/JITCall.cpp:
       
 15834         (JSC::JIT::compileOpCall):
       
 15835         * jit/JITPropertyAccess.cpp:
       
 15836         (JSC::JIT::emit_op_method_check):
       
 15837         (JSC::JIT::compileGetByIdHotPath):
       
 15838         (JSC::JIT::compileGetByIdSlowCase):
       
 15839         (JSC::JIT::emit_op_put_by_id):
       
 15840 
       
 15841 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
       
 15842 
       
 15843         Reviewed by Sam Weinig.
       
 15844 
       
 15845         A little bit of refactoring in the date code.
       
 15846 
       
 15847         * JavaScriptCore.exp: Don't export this unused symbol.
       
 15848 
       
 15849         * runtime/DateConstructor.cpp:
       
 15850         (JSC::constructDate):
       
 15851 
       
 15852         * runtime/DateInstance.cpp:
       
 15853         (JSC::DateInstance::DateInstance):
       
 15854         * runtime/DateInstance.h: Removed some unused functions. Changed the default
       
 15855         constructor to ensure that a DateInstance is always initialized.
       
 15856 
       
 15857         * runtime/DatePrototype.cpp:
       
 15858         (JSC::DatePrototype::DatePrototype): Pass an initializer to our constructor,
       
 15859         since it now requires one.
       
 15860 
       
 15861         * wtf/DateMath.cpp:
       
 15862         (WTF::msToGregorianDateTime): Only compute our offset from UTC if our
       
 15863         output will require it. Otherwise, our offset is 0.
       
 15864 
       
 15865 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
       
 15866 
       
 15867         Build fix: Mark DateInstaceCache.h private, so other frameworks can see it.
       
 15868 
       
 15869         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 15870 
       
 15871 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
       
 15872 
       
 15873         Build fix: re-readded this file.
       
 15874 
       
 15875         * runtime/DateInstanceCache.h: Added.
       
 15876         (JSC::DateInstanceData::create):
       
 15877         (JSC::DateInstanceData::DateInstanceData):
       
 15878         (JSC::DateInstanceCache::DateInstanceCache):
       
 15879         (JSC::DateInstanceCache::add):
       
 15880         (JSC::DateInstanceCache::lookup):
       
 15881 
       
 15882 2009-10-27  Geoffrey Garen  <ggaren@apple.com>
       
 15883 
       
 15884         Reviewed by Darin Adler and Oliver Hunt.
       
 15885 
       
 15886         https://bugs.webkit.org/show_bug.cgi?id=30800
       
 15887         Cache recently computed date data.
       
 15888         
       
 15889         SunSpider reports a ~0.5% speedup, mostly from date-format-tofte.js.
       
 15890 
       
 15891         * GNUmakefile.am:
       
 15892         * JavaScriptCore.gypi:
       
 15893         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
 15894         * JavaScriptCore.xcodeproj/project.pbxproj: Added new file.
       
 15895 
       
 15896         * runtime/DateInstance.cpp:
       
 15897         (JSC::DateInstance::DateInstance):
       
 15898         (JSC::DateInstance::getGregorianDateTime): Use the shared cache.
       
 15899 
       
 15900         * runtime/DateInstance.h: Renamed m_cache to m_data, to avoid the confusion
       
 15901         of a "cache cache".
       
 15902 
       
 15903         * runtime/DatePrototype.cpp:
       
 15904         (JSC::formatLocaleDate):
       
 15905         (JSC::dateProtoFuncToString):
       
 15906         (JSC::dateProtoFuncToUTCString):
       
 15907         (JSC::dateProtoFuncToISOString):
       
 15908         (JSC::dateProtoFuncToDateString):
       
 15909         (JSC::dateProtoFuncToTimeString):
       
 15910         (JSC::dateProtoFuncGetFullYear):
       
 15911         (JSC::dateProtoFuncGetUTCFullYear):
       
 15912         (JSC::dateProtoFuncToGMTString):
       
 15913         (JSC::dateProtoFuncGetMonth):
       
 15914         (JSC::dateProtoFuncGetUTCMonth):
       
 15915         (JSC::dateProtoFuncGetDate):
       
 15916         (JSC::dateProtoFuncGetUTCDate):
       
 15917         (JSC::dateProtoFuncGetDay):
       
 15918         (JSC::dateProtoFuncGetUTCDay):
       
 15919         (JSC::dateProtoFuncGetHours):
       
 15920         (JSC::dateProtoFuncGetUTCHours):
       
 15921         (JSC::dateProtoFuncGetMinutes):
       
 15922         (JSC::dateProtoFuncGetUTCMinutes):
       
 15923         (JSC::dateProtoFuncGetSeconds):
       
 15924         (JSC::dateProtoFuncGetUTCSeconds):
       
 15925         (JSC::dateProtoFuncGetTimezoneOffset):
       
 15926         (JSC::setNewValueFromTimeArgs):
       
 15927         (JSC::setNewValueFromDateArgs):
       
 15928         (JSC::dateProtoFuncSetYear):
       
 15929         (JSC::dateProtoFuncGetYear): Pass an ExecState to these functions, so they
       
 15930         can access the DateInstanceCache.
       
 15931 
       
 15932         * runtime/JSGlobalData.h: Keep a DateInstanceCache.
       
 15933 
       
 15934 2009-10-27  James Robinson  <jamesr@chromium.org>
       
 15935 
       
 15936         Reviewed by Darin Fisher.
       
 15937 
       
 15938         Ensures that JavaScriptCore/wtf/CurrentTime.cpp is not built in PLATFORM(CHROMIUM) builds.
       
 15939 
       
 15940         Chromium uses a different method to calculate the current time than is used in
       
 15941         JavaScriptCore/wtf/CurrentTime.cpp. This can lead to time skew when calls to currentTime() and Chromium's time
       
 15942         function are mixed.  In particular, timers can get scheduled in the past which leads to 100% CPU use.
       
 15943         See http://code.google.com/p/chromium/issues/detail?id=25892 for an example.
       
 15944 
       
 15945         https://bugs.webkit.org/show_bug.cgi?id=30833
       
 15946 
       
 15947         * JavaScriptCore.gyp/JavaScriptCore.gyp:
       
 15948         * wtf/CurrentTime.cpp:
       
 15949 
       
 15950 2009-10-27  Peter Varga  <pvarga@inf.u-szeged.hu>
       
 15951 
       
 15952         Rubber-stamped by Tor Arne Vestbø.
       
 15953 
       
 15954         Fix typo in RegexInterpreter.cpp and RegexJIT.cpp alterantive to
       
 15955         alternative.
       
 15956 
       
 15957         * yarr/RegexInterpreter.cpp:
       
 15958         (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction):
       
 15959         (JSC::Yarr::ByteCompiler::alternativeDisjunction):
       
 15960         (JSC::Yarr::ByteCompiler::emitDisjunction):
       
 15961         * yarr/RegexJIT.cpp:
       
 15962         (JSC::Yarr::RegexGenerator::generateDisjunction):
       
 15963 
       
 15964 2009-10-26  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 15965 
       
 15966         Reviewed by Darin Adler.
       
 15967 
       
 15968         Make .rc files compile on Windows without depending on MFC headers
       
 15969         https://bugs.webkit.org/show_bug.cgi?id=30750
       
 15970 
       
 15971         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Use
       
 15972         winresrc.h because it exists even when MFC is not installed, and is
       
 15973         all that's needed here.
       
 15974 
       
 15975 2009-10-26  Gabor Loki  <loki@inf.u-szeged.hu>
       
 15976 
       
 15977         Reviewed by Gavin Barraclough.
       
 15978 
       
 15979         The thunkReturnAddress is on JITStackFrame on ARM JIT as well
       
 15980         https://bugs.webkit.org/show_bug.cgi?id=30782
       
 15981 
       
 15982         Move the thunkReturnAddress from top of the stack into the JITStackFrame
       
 15983         structure. This is a requirement for JSValue32_64 support on ARM.
       
 15984 
       
 15985         * assembler/MacroAssemblerARM.h:
       
 15986         (JSC::MacroAssemblerARM::ret): Return with link register
       
 15987         (JSC::MacroAssemblerARM::prepareCall): Store the return address in link register
       
 15988         * jit/JIT.h: Remove unused ctiReturnRegister
       
 15989         * jit/JITInlineMethods.h: Same as ARMv7
       
 15990         (JSC::JIT::restoreArgumentReference): Ditto.
       
 15991         (JSC::JIT::restoreArgumentReferenceForTrampoline): Ditto.
       
 15992         * jit/JITOpcodes.cpp: Remove ctiReturnRegister related instruction
       
 15993         * jit/JITStubs.cpp: Store thunkReturnAddress on JITStackFrame. Use
       
 15994         small trampoline functions which handle return addresses for each
       
 15995         CTI_STUB_FUNCTION.
       
 15996         * jit/JITStubs.h: Store thunkReturnAddress on JITStackFrame
       
 15997         (JSC::JITStackFrame::returnAddressSlot): Return with the address of thunkReturnAddress
       
 15998         * yarr/RegexJIT.cpp:
       
 15999         (JSC::Yarr::RegexGenerator::generateEnter): Remove the unnecessary instruction
       
 16000 
       
 16001 2009-10-26  Steve Block  <steveblock@google.com>
       
 16002 
       
 16003         Reviewed by Darin Adler.
       
 16004 
       
 16005         Adds ability to disable ReadWriteLock on platforms (eg Android) that use pthreads but do not support pthread_rwlock.
       
 16006         https://bugs.webkit.org/show_bug.cgi?id=30713
       
 16007 
       
 16008         * wtf/Platform.h: Modified. Defines HAVE_PTHREAD_RWLOCK for all platforms currently using pthreads.
       
 16009         * wtf/Threading.h: Modified. Use pthread_rwlock_t only when HAVE_PTHREAD_RWLOCK is defined.
       
 16010         * wtf/ThreadingPthreads.cpp: Modified. Build ReadWriteLock methods only when HAVE_PTHREAD_RWLOCK is defined.
       
 16011 
       
 16012 2009-10-24  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 16013 
       
 16014         Reviewed by Holger Freyther.
       
 16015 
       
 16016         [Qt] [Symbian] Set the capability and memory required to run QtWebKit for Symbian
       
 16017         https://bugs.webkit.org/show_bug.cgi?id=30476
       
 16018 
       
 16019         Assign ReadUserData WriteUserData NetworkServices Symbian capabilities
       
 16020         to jsc.exe.
       
 16021 
       
 16022         * jsc.pro:
       
 16023 
       
 16024 2009-10-23  Steve Block  <steveblock@google.com>
       
 16025 
       
 16026         Reviewed by Dmitry Titov.
       
 16027 
       
 16028         Fixes a leak in createThreadInternal on Android.
       
 16029         https://bugs.webkit.org/show_bug.cgi?id=30698
       
 16030 
       
 16031         * wtf/ThreadingPthreads.cpp: Modified.
       
 16032         (WTF::createThreadInternal): Avoid leaking a ThreadData object on failure.
       
 16033 
       
 16034 2009-10-22  Geoffrey Garen  <ggaren@apple.com>
       
 16035 
       
 16036         Reviewed by Alexey Proskuryakov.
       
 16037 
       
 16038         Fixed ASSERT when opening Safari's Caches window while the Web Inspector
       
 16039         is open.
       
 16040 
       
 16041         * runtime/Collector.cpp:
       
 16042         (JSC::typeName): Added two new types to the type name list in the Collector.
       
 16043         These types have been around for a while, but nobody remembered to consider them here.
       
 16044 
       
 16045         * runtime/JSCell.h:
       
 16046         (JSC::JSCell::isPropertyNameIterator):
       
 16047         * runtime/JSPropertyNameIterator.h:
       
 16048         (JSC::JSPropertyNameIterator::isPropertyNameIterator): Give the Collector
       
 16049         a way to tell if a cell is a JSPropertyNameIterator.
       
 16050 
       
 16051 2009-10-22  Steve Falkenburg  <sfalken@apple.com>
       
 16052 
       
 16053         Reviewed by Jon Honeycutt.
       
 16054 
       
 16055         https://bugs.webkit.org/show_bug.cgi?id=30686
       
 16056         Remove debug-specific def file.
       
 16057         Only Debug_All target uses JavaScriptCore_debug.dll naming, and since
       
 16058         that target is only used internally, maintaining two files just to
       
 16059         suppress a single link warning isn't worthwhile.
       
 16060 
       
 16061         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
       
 16062         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Removed.
       
 16063 
       
 16064 2009-10-21  Jon Honeycutt  <jhoneycutt@apple.com>
       
 16065 
       
 16066         <rdar://problem/7270320> Screenshots of off-screen plug-ins are blank
       
 16067         <rdar://problem/7270314> After halting a transparent PluginView on
       
 16068         Windows, the transparency is applied twice
       
 16069 
       
 16070         Reviewed by Dan Bernstein.
       
 16071 
       
 16072         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 16073         Export WTF::deleteOwnedPtr(HDC).
       
 16074 
       
 16075         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 16076         Ditto.
       
 16077 
       
 16078 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
       
 16079 
       
 16080         Windows build fix: updated variable name.
       
 16081 
       
 16082         * runtime/DatePrototype.cpp:
       
 16083         (JSC::formatLocaleDate):
       
 16084 
       
 16085 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
       
 16086 
       
 16087         Reviewed by Mark Rowe.
       
 16088 
       
 16089         * jit/JITOpcodes.cpp:
       
 16090         (JSC::JIT::emit_op_next_pname): Slightly tweaked this #ifdef to match the
       
 16091         size of a JSValue because m_jsStrings is an array of JSValues.
       
 16092 
       
 16093 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
       
 16094 
       
 16095         Reviewed by Mark Rowe.
       
 16096 
       
 16097         Fixed a 64-bit regression caused by the fix for
       
 16098         https://bugs.webkit.org/show_bug.cgi?id=30570.
       
 16099 
       
 16100         * jit/JITOpcodes.cpp:
       
 16101         (JSC::JIT::emit_op_next_pname): Use TimesEight stepping on 64-bit, since
       
 16102         64-bit pointers are eight bytes long.
       
 16103 
       
 16104 2009-10-20  Geoffrey Garen  <ggaren@apple.com>
       
 16105 
       
 16106         Reviewed by Sam Weinig.
       
 16107 
       
 16108         Refactored DateInstance::msToGregorianDateTime so that a DateInstance's
       
 16109         caller doesn't need to supply the DateInstance's own internal value to
       
 16110         the DateInstance.
       
 16111 
       
 16112         * runtime/DateInstance.cpp:
       
 16113         (JSC::DateInstance::getGregorianDateTime): Renamed from "msToGregorianDateTime".
       
 16114 
       
 16115         * runtime/DateInstance.h:
       
 16116         * runtime/DatePrototype.cpp:
       
 16117         (JSC::formatLocaleDate):
       
 16118         (JSC::dateProtoFuncToString):
       
 16119         (JSC::dateProtoFuncToUTCString):
       
 16120         (JSC::dateProtoFuncToISOString):
       
 16121         (JSC::dateProtoFuncToDateString):
       
 16122         (JSC::dateProtoFuncToTimeString):
       
 16123         (JSC::dateProtoFuncToLocaleString):
       
 16124         (JSC::dateProtoFuncToLocaleDateString):
       
 16125         (JSC::dateProtoFuncToLocaleTimeString):
       
 16126         (JSC::dateProtoFuncGetTime):
       
 16127         (JSC::dateProtoFuncGetFullYear):
       
 16128         (JSC::dateProtoFuncGetUTCFullYear):
       
 16129         (JSC::dateProtoFuncToGMTString):
       
 16130         (JSC::dateProtoFuncGetMonth):
       
 16131         (JSC::dateProtoFuncGetUTCMonth):
       
 16132         (JSC::dateProtoFuncGetDate):
       
 16133         (JSC::dateProtoFuncGetUTCDate):
       
 16134         (JSC::dateProtoFuncGetDay):
       
 16135         (JSC::dateProtoFuncGetUTCDay):
       
 16136         (JSC::dateProtoFuncGetHours):
       
 16137         (JSC::dateProtoFuncGetUTCHours):
       
 16138         (JSC::dateProtoFuncGetMinutes):
       
 16139         (JSC::dateProtoFuncGetUTCMinutes):
       
 16140         (JSC::dateProtoFuncGetSeconds):
       
 16141         (JSC::dateProtoFuncGetUTCSeconds):
       
 16142         (JSC::dateProtoFuncGetTimezoneOffset):
       
 16143         (JSC::setNewValueFromTimeArgs):
       
 16144         (JSC::setNewValueFromDateArgs):
       
 16145         (JSC::dateProtoFuncSetYear):
       
 16146         (JSC::dateProtoFuncGetYear): Also renamed "utc" to "outputIsUTC", for clarity.
       
 16147 
       
 16148 2009-10-20  Gabor Loki  <loki@inf.u-szeged.hu>
       
 16149 
       
 16150         Reviewed by Geoffrey Garen.
       
 16151 
       
 16152         The op_next_pname should use 4 bytes addressing mode in case of JSValue32
       
 16153         https://bugs.webkit.org/show_bug.cgi?id=30570
       
 16154 
       
 16155         * jit/JITOpcodes.cpp:
       
 16156         (JSC::JIT::emit_op_next_pname):
       
 16157 
       
 16158 2009-10-20  Gabor Loki  <loki@inf.u-szeged.hu>
       
 16159 
       
 16160         Reviewed by Oliver Hunt.
       
 16161 
       
 16162         Move OverridesMarkChildren flag from DatePrototype to its parent class
       
 16163         https://bugs.webkit.org/show_bug.cgi?id=30372
       
 16164 
       
 16165         * runtime/DateInstance.h:
       
 16166         (JSC::DateInstance::createStructure):
       
 16167         * runtime/DatePrototype.h:
       
 16168 
       
 16169 2009-10-19  Geoffrey Garen  <ggaren@apple.com>
       
 16170 
       
 16171         Reviewed by Oliver Hunt.
       
 16172 
       
 16173         Tightened up some put_by_id_transition code generation.
       
 16174         https://bugs.webkit.org/show_bug.cgi?id=30539
       
 16175 
       
 16176         * jit/JIT.h:
       
 16177         * jit/JITPropertyAccess.cpp:
       
 16178         (JSC::JIT::testPrototype):
       
 16179         (JSC::JIT::privateCompilePutByIdTransition): No need to do object type
       
 16180         checks or read Structures and prototypes from objects: they're all known
       
 16181         constants at compile time.
       
 16182 
       
 16183 2009-10-19  Geoffrey Garen  <ggaren@apple.com>
       
 16184 
       
 16185         Reviewed by Sam Weinig.
       
 16186 
       
 16187         Added a private API for getting a global context from a context, for
       
 16188         clients who want to preserve a context for a later callback.
       
 16189 
       
 16190         * API/APICast.h:
       
 16191         (toGlobalRef): Added an ASSERT, since this function is used more often
       
 16192         than before.
       
 16193 
       
 16194         * API/JSContextRef.cpp:
       
 16195         * API/JSContextRefPrivate.h: Added. The new API.
       
 16196 
       
 16197         * API/tests/testapi.c:
       
 16198         (print_callAsFunction):
       
 16199         (main): Test the new API.
       
 16200 
       
 16201         * JavaScriptCore.exp:
       
 16202         * JavaScriptCore.xcodeproj/project.pbxproj: Build and export the new API.
       
 16203 
       
 16204 2009-10-17  Geoffrey Garen  <ggaren@apple.com>
       
 16205 
       
 16206         Reviewed by Oliver Hunt.
       
 16207         
       
 16208         Tightened up some instanceof code generation.
       
 16209         https://bugs.webkit.org/show_bug.cgi?id=30488
       
 16210 
       
 16211         * jit/JITOpcodes.cpp:
       
 16212         (JSC::JIT::emit_op_instanceof):
       
 16213         (JSC::JIT::emitSlow_op_instanceof): No need to do object type checks - 
       
 16214         cell type checks and ImplementsDefaultHasIntance checks implicitly
       
 16215         supersede object type checks.
       
 16216 
       
 16217 2009-10-18  Kwang Yul Seo  <skyul@company100.net>
       
 16218 
       
 16219         Reviewed by Darin Adler.
       
 16220 
       
 16221         Use _stricmp and _strnicmp instead of deprecated stricmp and strnicmp.
       
 16222         https://bugs.webkit.org/show_bug.cgi?id=30474
       
 16223 
       
 16224         stricmp and strnicmp are deprecated beginning in Visual
       
 16225         C++ 2005. Use _stricmp and _strnicmp instead in StringExtras.h.
       
 16226 
       
 16227         * wtf/StringExtras.h:
       
 16228         (strncasecmp):
       
 16229         (strcasecmp):
       
 16230 
       
 16231 2009-10-16  Geoffrey Garen  <ggaren@apple.com>
       
 16232 
       
 16233         Build fix: apparently we shouldn't export those symbols?
       
 16234 
       
 16235         * JavaScriptCore.exp:
       
 16236 
       
 16237 2009-10-16  Geoffrey Garen  <ggaren@apple.com>
       
 16238 
       
 16239         Build fix: export some symbols.
       
 16240 
       
 16241         * JavaScriptCore.exp:
       
 16242 
       
 16243 2009-10-16  Oliver Hunt  <oliver@apple.com>
       
 16244 
       
 16245         Reviewed by Gavin Barraclough.
       
 16246 
       
 16247         structure typeinfo flags should be inherited.
       
 16248         https://bugs.webkit.org/show_bug.cgi?id=30468
       
 16249 
       
 16250         Add StructureFlag constant to the various JSC classes and use
       
 16251         it for the TypeInfo construction.  This allows us to simply
       
 16252         accumulate flags by basing each classes StructureInfo on its parents.
       
 16253 
       
 16254         * API/JSCallbackConstructor.h:
       
 16255         (JSC::JSCallbackConstructor::createStructure):
       
 16256         * API/JSCallbackFunction.h:
       
 16257         (JSC::JSCallbackFunction::createStructure):
       
 16258         * API/JSCallbackObject.h:
       
 16259         (JSC::JSCallbackObject::createStructure):
       
 16260         * debugger/DebuggerActivation.h:
       
 16261         (JSC::DebuggerActivation::createStructure):
       
 16262         * runtime/Arguments.h:
       
 16263         (JSC::Arguments::createStructure):
       
 16264         * runtime/BooleanObject.h:
       
 16265         (JSC::BooleanObject::createStructure):
       
 16266         * runtime/DatePrototype.h:
       
 16267         (JSC::DatePrototype::createStructure):
       
 16268         * runtime/FunctionPrototype.h:
       
 16269         (JSC::FunctionPrototype::createStructure):
       
 16270         * runtime/GlobalEvalFunction.h:
       
 16271         (JSC::GlobalEvalFunction::createStructure):
       
 16272         * runtime/InternalFunction.h:
       
 16273         (JSC::InternalFunction::createStructure):
       
 16274         * runtime/JSActivation.h:
       
 16275         (JSC::JSActivation::createStructure):
       
 16276         * runtime/JSArray.h:
       
 16277         (JSC::JSArray::createStructure):
       
 16278         * runtime/JSByteArray.cpp:
       
 16279         (JSC::JSByteArray::createStructure):
       
 16280         * runtime/JSByteArray.h:
       
 16281         * runtime/JSFunction.h:
       
 16282         (JSC::JSFunction::createStructure):
       
 16283         * runtime/JSGlobalObject.h:
       
 16284         (JSC::JSGlobalObject::createStructure):
       
 16285         * runtime/JSNotAnObject.h:
       
 16286         (JSC::JSNotAnObject::createStructure):
       
 16287         * runtime/JSONObject.h:
       
 16288         (JSC::JSONObject::createStructure):
       
 16289         * runtime/JSObject.h:
       
 16290         (JSC::JSObject::createStructure):
       
 16291         * runtime/JSStaticScopeObject.h:
       
 16292         (JSC::JSStaticScopeObject::createStructure):
       
 16293         * runtime/JSVariableObject.h:
       
 16294         (JSC::JSVariableObject::createStructure):
       
 16295         * runtime/JSWrapperObject.h:
       
 16296         (JSC::JSWrapperObject::createStructure):
       
 16297         * runtime/MathObject.h:
       
 16298         (JSC::MathObject::createStructure):
       
 16299         * runtime/NumberConstructor.h:
       
 16300         (JSC::NumberConstructor::createStructure):
       
 16301         * runtime/NumberObject.h:
       
 16302         (JSC::NumberObject::createStructure):
       
 16303         * runtime/RegExpConstructor.h:
       
 16304         (JSC::RegExpConstructor::createStructure):
       
 16305         * runtime/RegExpObject.h:
       
 16306         (JSC::RegExpObject::createStructure):
       
 16307         * runtime/StringObject.h:
       
 16308         (JSC::StringObject::createStructure):
       
 16309         * runtime/StringObjectThatMasqueradesAsUndefined.h:
       
 16310         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
       
 16311 
       
 16312 2009-10-16  Geoffrey Garen  <ggaren@apple.com>
       
 16313 
       
 16314         Reviewed by Oliver Hunt.
       
 16315         
       
 16316         Fast for-in enumeration: Cache JSPropertyNameIterator; cache JSStrings
       
 16317         in JSPropertyNameIterator; inline more code.
       
 16318 
       
 16319         1.024x as fast on SunSpider (fasta: 1.43x as fast).
       
 16320 
       
 16321         * bytecode/CodeBlock.cpp:
       
 16322         (JSC::CodeBlock::dump):
       
 16323         * bytecode/Opcode.h:
       
 16324         * bytecompiler/BytecodeGenerator.cpp:
       
 16325         (JSC::BytecodeGenerator::emitGetPropertyNames):
       
 16326         (JSC::BytecodeGenerator::emitNextPropertyName):
       
 16327         * bytecompiler/BytecodeGenerator.h: Added a few extra operands to
       
 16328         op_get_pnames and op_next_pname so that we can track iteration state
       
 16329         in the register file instead of in the JSPropertyNameIterator. (To be
       
 16330         cacheable, the JSPropertyNameIterator must be stateless.)
       
 16331 
       
 16332         * interpreter/Interpreter.cpp:
       
 16333         (JSC::Interpreter::tryCachePutByID):
       
 16334         (JSC::Interpreter::tryCacheGetByID): Updated for rename to
       
 16335         "normalizePrototypeChain" and removal of "isCacheable". 
       
 16336 
       
 16337         (JSC::Interpreter::privateExecute): Updated for in-RegisterFile
       
 16338         iteration state tracking.
       
 16339 
       
 16340         * jit/JIT.cpp:
       
 16341         (JSC::JIT::privateCompileMainPass):
       
 16342         * jit/JIT.h:
       
 16343         * jit/JITOpcodes.cpp:
       
 16344         (JSC::JIT::emit_op_get_pnames): Updated for in-RegisterFile
       
 16345         iteration state tracking.
       
 16346 
       
 16347         (JSC::JIT::emit_op_next_pname): Inlined code generation for op_next_pname.
       
 16348 
       
 16349         * jit/JITStubs.cpp:
       
 16350         (JSC::JITThunks::tryCachePutByID):
       
 16351         (JSC::JITThunks::tryCacheGetByID): Updated for rename to
       
 16352         "normalizePrototypeChain" and removal of "isCacheable". 
       
 16353 
       
 16354         (JSC::DEFINE_STUB_FUNCTION):
       
 16355         * jit/JITStubs.h:
       
 16356         (JSC::): Added has_property and to_object stubs. Removed op_next_pname
       
 16357         stub, since has_property is all we need anymore.
       
 16358 
       
 16359         * parser/Nodes.cpp:
       
 16360         (JSC::ForInNode::emitBytecode): Updated for in-RegisterFile
       
 16361         iteration state tracking.
       
 16362 
       
 16363         * runtime/JSCell.h:
       
 16364         * runtime/JSObject.cpp:
       
 16365         (JSC::JSObject::getPropertyNames): Don't do caching at this layer
       
 16366         anymore, since we don't create a JSPropertyNameIterator at this layer.
       
 16367 
       
 16368         * runtime/JSPropertyNameIterator.cpp:
       
 16369         (JSC::JSPropertyNameIterator::create): Do do caching at this layer.
       
 16370         (JSC::JSPropertyNameIterator::get):  Updated for in-RegisterFile
       
 16371         iteration state tracking.
       
 16372         (JSC::JSPropertyNameIterator::markChildren): Mark our JSStrings.
       
 16373 
       
 16374         * runtime/JSPropertyNameIterator.h:
       
 16375         (JSC::JSPropertyNameIterator::size):
       
 16376         (JSC::JSPropertyNameIterator::setCachedStructure):
       
 16377         (JSC::JSPropertyNameIterator::cachedStructure):
       
 16378         (JSC::JSPropertyNameIterator::setCachedPrototypeChain):
       
 16379         (JSC::JSPropertyNameIterator::cachedPrototypeChain):
       
 16380         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
       
 16381         (JSC::Structure::setEnumerationCache): Don't store iteration state in
       
 16382         a JSPropertyNameIterator. Do cache a JSPropertyNameIterator in a
       
 16383         Structure.
       
 16384 
       
 16385         * runtime/JSValue.h:
       
 16386         (JSC::asCell):
       
 16387         * runtime/MarkStack.h: Make those mischievous #include gods happy.
       
 16388 
       
 16389         * runtime/ObjectConstructor.cpp:
       
 16390 
       
 16391         * runtime/Operations.h:
       
 16392         (JSC::normalizePrototypeChain): Renamed countPrototypeChainEntriesAndCheckForProxies
       
 16393         to normalizePrototypeChain, since it changes dictionary prototypes to
       
 16394         non-dictionary objects.
       
 16395 
       
 16396         * runtime/PropertyNameArray.cpp:
       
 16397         (JSC::PropertyNameArray::add):
       
 16398         * runtime/PropertyNameArray.h:
       
 16399         (JSC::PropertyNameArrayData::PropertyNameArrayData):
       
 16400         (JSC::PropertyNameArray::data):
       
 16401         (JSC::PropertyNameArray::size):
       
 16402         (JSC::PropertyNameArray::begin):
       
 16403         (JSC::PropertyNameArray::end): Simplified some code here to help with
       
 16404         current and future refactoring.
       
 16405 
       
 16406         * runtime/Protect.h:
       
 16407         * runtime/Structure.cpp:
       
 16408         (JSC::Structure::~Structure):
       
 16409         (JSC::Structure::addPropertyWithoutTransition):
       
 16410         (JSC::Structure::removePropertyWithoutTransition): No need to clear
       
 16411         the enumeration cache with adding / removing properties without
       
 16412         transition. It is an error to add / remove properties without transition
       
 16413         once an object has been observed, and we can ASSERT to catch that.
       
 16414 
       
 16415         * runtime/Structure.h:
       
 16416         (JSC::Structure::enumerationCache): Changed the enumeration cache to
       
 16417         hold a JSPropertyNameIterator.
       
 16418 
       
 16419         * runtime/StructureChain.cpp:
       
 16420         * runtime/StructureChain.h:
       
 16421         (JSC::StructureChain::head): Removed StructureChain::isCacheable because
       
 16422         it was wrong-headed in two ways: (1) It gave up when a prototype was a
       
 16423         dictionary, but instead we want un-dictionary heavily accessed
       
 16424         prototypes; (2) It folded a test for hasDefaultGetPropertyNames() into
       
 16425         a generic test for "cacheable-ness", but hasDefaultGetPropertyNames()
       
 16426         is only releavant to for-in caching.
       
 16427 
       
 16428 2009-10-16  Steve Falkenburg  <sfalken@apple.com>
       
 16429 
       
 16430         Reviewed by Adam Roben.
       
 16431 
       
 16432         Add a Debug_All configuration to build entire stack as debug.
       
 16433         Change Debug_Internal to:
       
 16434         - stop using _debug suffix for all WebKit/Safari binaries
       
 16435         - not use _debug as a DLL naming suffix
       
 16436         - use non-debug C runtime lib.
       
 16437 
       
 16438         * JavaScriptCore.vcproj/JavaScriptCore.make: Debug build in makefile should build Debug_All.
       
 16439         * JavaScriptCore.vcproj/JavaScriptCore.sln: Add Debug_All configuration.
       
 16440         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add Debug_All configuration.
       
 16441         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Renamed single configuration from "Release" to "all".
       
 16442         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Add Debug_All configuration.
       
 16443         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add Debug_All configuration.
       
 16444         * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_All configuration.
       
 16445         * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_All configuration.
       
 16446 
       
 16447 2009-10-16  Oliver Hunt  <oliver@apple.com>
       
 16448 
       
 16449         Reviewed by Gavin Barraclough.
       
 16450 
       
 16451         Make typeinfo flags default to false
       
 16452         https://bugs.webkit.org/show_bug.cgi?id=30372
       
 16453 
       
 16454         Last part -- replace HasDefaultGetPropertyNames with OverridesGetPropertyNames
       
 16455         flag.
       
 16456 
       
 16457         * API/JSCallbackConstructor.h:
       
 16458         (JSC::JSCallbackConstructor::createStructure):
       
 16459         * API/JSCallbackObject.h:
       
 16460         (JSC::JSCallbackObject::createStructure):
       
 16461         * debugger/DebuggerActivation.h:
       
 16462         (JSC::DebuggerActivation::createStructure):
       
 16463         * runtime/Arguments.h:
       
 16464         (JSC::Arguments::createStructure):
       
 16465         * runtime/BooleanObject.h:
       
 16466         (JSC::BooleanObject::createStructure):
       
 16467         * runtime/DatePrototype.h:
       
 16468         (JSC::DatePrototype::createStructure):
       
 16469         * runtime/FunctionPrototype.h:
       
 16470         (JSC::FunctionPrototype::createStructure):
       
 16471         * runtime/GlobalEvalFunction.h:
       
 16472         (JSC::GlobalEvalFunction::createStructure):
       
 16473         * runtime/JSAPIValueWrapper.h:
       
 16474         (JSC::JSAPIValueWrapper::createStructure):
       
 16475         * runtime/JSActivation.h:
       
 16476         (JSC::JSActivation::createStructure):
       
 16477         * runtime/JSArray.h:
       
 16478         (JSC::JSArray::createStructure):
       
 16479         * runtime/JSByteArray.cpp:
       
 16480         (JSC::JSByteArray::createStructure):
       
 16481         * runtime/JSFunction.h:
       
 16482         (JSC::JSFunction::createStructure):
       
 16483         * runtime/JSGlobalObject.h:
       
 16484         (JSC::JSGlobalObject::createStructure):
       
 16485         * runtime/JSNotAnObject.h:
       
 16486         (JSC::JSNotAnObject::createStructure):
       
 16487         * runtime/JSONObject.h:
       
 16488         (JSC::JSONObject::createStructure):
       
 16489         * runtime/JSObject.cpp:
       
 16490         (JSC::JSObject::getPropertyNames):
       
 16491         * runtime/JSObject.h:
       
 16492         (JSC::JSObject::createStructure):
       
 16493         * runtime/JSStaticScopeObject.h:
       
 16494         (JSC::JSStaticScopeObject::createStructure):
       
 16495         * runtime/JSTypeInfo.h:
       
 16496         (JSC::TypeInfo::overridesGetPropertyNames):
       
 16497         * runtime/JSVariableObject.h:
       
 16498         (JSC::JSVariableObject::createStructure):
       
 16499         * runtime/JSWrapperObject.h:
       
 16500         (JSC::JSWrapperObject::createStructure):
       
 16501         * runtime/MathObject.h:
       
 16502         (JSC::MathObject::createStructure):
       
 16503         * runtime/NumberConstructor.h:
       
 16504         (JSC::NumberConstructor::createStructure):
       
 16505         * runtime/NumberObject.h:
       
 16506         (JSC::NumberObject::createStructure):
       
 16507         * runtime/RegExpConstructor.h:
       
 16508         (JSC::RegExpConstructor::createStructure):
       
 16509         * runtime/RegExpObject.h:
       
 16510         (JSC::RegExpObject::createStructure):
       
 16511         * runtime/StringObject.h:
       
 16512         (JSC::StringObject::createStructure):
       
 16513         * runtime/StringObjectThatMasqueradesAsUndefined.h:
       
 16514         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
       
 16515         * runtime/StructureChain.cpp:
       
 16516         (JSC::StructureChain::isCacheable):
       
 16517 
       
 16518 2009-10-16  Kevin Ollivier  <kevino@theolliviers.com>
       
 16519 
       
 16520         wxMSW build fix, we can't use the simple hash there because the PlatformModuleVersion 
       
 16521         structure differs.
       
 16522 
       
 16523         * wtf/Platform.h:
       
 16524 
       
 16525 2009-10-16  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 16526 
       
 16527         Reviewed by Simon Hausmann.
       
 16528 
       
 16529         [Qt] Implement ExecutableAllocator for Symbian
       
 16530         https://bugs.webkit.org/show_bug.cgi?id=29946
       
 16531 
       
 16532         Tested with YARR JIT enabled for Symbian; 
       
 16533         This patch does not (yet) enable YARR JIT by default.
       
 16534 
       
 16535         * JavaScriptCore.pri:
       
 16536         * jit/ExecutableAllocator.h:
       
 16537         * jit/ExecutableAllocatorSymbian.cpp: Added.
       
 16538         (JSC::ExecutableAllocator::intializePageSize):
       
 16539         (JSC::ExecutablePool::systemAlloc):
       
 16540         (JSC::ExecutablePool::systemRelease):
       
 16541 
       
 16542 2009-10-15  Oliver Hunt  <oliver@apple.com>
       
 16543 
       
 16544         Reviewed by Darin Adler.
       
 16545 
       
 16546         Make typeinfo flags default to false
       
 16547         https://bugs.webkit.org/show_bug.cgi?id=30372
       
 16548 
       
 16549         Part 2 -- Reverse the TypeInfo HasDefaultMark flag to OverridesMarkChildren, etc
       
 16550 
       
 16551         * API/JSCallbackConstructor.h:
       
 16552         (JSC::JSCallbackConstructor::createStructure):
       
 16553         * API/JSCallbackFunction.h:
       
 16554         (JSC::JSCallbackFunction::createStructure):
       
 16555         * API/JSCallbackObject.h:
       
 16556         (JSC::JSCallbackObject::createStructure):
       
 16557         * debugger/DebuggerActivation.h:
       
 16558         (JSC::DebuggerActivation::createStructure):
       
 16559         * runtime/Arguments.h:
       
 16560         (JSC::Arguments::createStructure):
       
 16561         * runtime/BooleanObject.h:
       
 16562         (JSC::BooleanObject::createStructure):
       
 16563         * runtime/DatePrototype.h:
       
 16564         (JSC::DatePrototype::createStructure):
       
 16565         * runtime/FunctionPrototype.h:
       
 16566         (JSC::FunctionPrototype::createStructure):
       
 16567         * runtime/GetterSetter.h:
       
 16568         (JSC::GetterSetter::createStructure):
       
 16569         * runtime/GlobalEvalFunction.h:
       
 16570         (JSC::GlobalEvalFunction::createStructure):
       
 16571         * runtime/InternalFunction.h:
       
 16572         (JSC::InternalFunction::createStructure):
       
 16573         * runtime/JSAPIValueWrapper.h:
       
 16574         (JSC::JSAPIValueWrapper::createStructure):
       
 16575         * runtime/JSActivation.h:
       
 16576         (JSC::JSActivation::createStructure):
       
 16577         * runtime/JSArray.h:
       
 16578         (JSC::JSArray::createStructure):
       
 16579         (JSC::MarkStack::markChildren):
       
 16580         * runtime/JSByteArray.cpp:
       
 16581         (JSC::JSByteArray::createStructure):
       
 16582         * runtime/JSFunction.h:
       
 16583         (JSC::JSFunction::createStructure):
       
 16584         * runtime/JSGlobalObject.h:
       
 16585         (JSC::JSGlobalObject::createStructure):
       
 16586         * runtime/JSNotAnObject.h:
       
 16587         (JSC::JSNotAnObject::createStructure):
       
 16588         * runtime/JSNumberCell.h:
       
 16589         (JSC::JSNumberCell::createStructure):
       
 16590         * runtime/JSONObject.h:
       
 16591         (JSC::JSONObject::createStructure):
       
 16592         * runtime/JSObject.h:
       
 16593         (JSC::JSObject::createStructure):
       
 16594         * runtime/JSPropertyNameIterator.h:
       
 16595         (JSC::JSPropertyNameIterator::createStructure):
       
 16596         * runtime/JSStaticScopeObject.h:
       
 16597         (JSC::JSStaticScopeObject::createStructure):
       
 16598         * runtime/JSString.h:
       
 16599         (JSC::JSString::createStructure):
       
 16600         * runtime/JSTypeInfo.h:
       
 16601         (JSC::TypeInfo::overridesMarkChildren):
       
 16602         * runtime/JSVariableObject.h:
       
 16603         (JSC::JSVariableObject::createStructure):
       
 16604         * runtime/JSWrapperObject.h:
       
 16605         (JSC::JSWrapperObject::createStructure):
       
 16606         * runtime/MathObject.h:
       
 16607         (JSC::MathObject::createStructure):
       
 16608         * runtime/NumberConstructor.h:
       
 16609         (JSC::NumberConstructor::createStructure):
       
 16610         * runtime/NumberObject.h:
       
 16611         (JSC::NumberObject::createStructure):
       
 16612         * runtime/RegExpConstructor.h:
       
 16613         (JSC::RegExpConstructor::createStructure):
       
 16614         * runtime/RegExpObject.h:
       
 16615         (JSC::RegExpObject::createStructure):
       
 16616         * runtime/StringObject.h:
       
 16617         (JSC::StringObject::createStructure):
       
 16618         * runtime/StringObjectThatMasqueradesAsUndefined.h:
       
 16619         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
       
 16620 
       
 16621 2009-10-14  Oliver Hunt  <oliver@apple.com>
       
 16622 
       
 16623         Reviewed by Geoff Garen.
       
 16624 
       
 16625         Make typeinfo flags default to false
       
 16626         https://bugs.webkit.org/show_bug.cgi?id=30372
       
 16627         
       
 16628         Part 1. Reverse the HasStandardGetOwnPropertySlot flag.
       
 16629 
       
 16630         * API/JSCallbackConstructor.h:
       
 16631         (JSC::JSCallbackConstructor::createStructure):
       
 16632         * API/JSCallbackFunction.h:
       
 16633         (JSC::JSCallbackFunction::createStructure):
       
 16634         * API/JSCallbackObject.h:
       
 16635         (JSC::JSCallbackObject::createStructure):
       
 16636         * debugger/DebuggerActivation.h:
       
 16637         (JSC::DebuggerActivation::createStructure):
       
 16638         * jit/JITStubs.cpp:
       
 16639         (JSC::DEFINE_STUB_FUNCTION):
       
 16640         * runtime/Arguments.h:
       
 16641         (JSC::Arguments::createStructure):
       
 16642         * runtime/BooleanObject.h:
       
 16643         (JSC::BooleanObject::createStructure):
       
 16644         * runtime/DatePrototype.h:
       
 16645         (JSC::DatePrototype::createStructure):
       
 16646         * runtime/FunctionPrototype.h:
       
 16647         (JSC::FunctionPrototype::createStructure):
       
 16648         * runtime/GlobalEvalFunction.h:
       
 16649         (JSC::GlobalEvalFunction::createStructure):
       
 16650         * runtime/InternalFunction.h:
       
 16651         (JSC::InternalFunction::createStructure):
       
 16652         * runtime/JSActivation.h:
       
 16653         (JSC::JSActivation::createStructure):
       
 16654         * runtime/JSArray.h:
       
 16655         (JSC::JSArray::createStructure):
       
 16656         * runtime/JSByteArray.cpp:
       
 16657         (JSC::JSByteArray::createStructure):
       
 16658         * runtime/JSFunction.h:
       
 16659         (JSC::JSFunction::createStructure):
       
 16660         * runtime/JSGlobalObject.h:
       
 16661         (JSC::JSGlobalObject::createStructure):
       
 16662         * runtime/JSNumberCell.h:
       
 16663         (JSC::JSNumberCell::createStructure):
       
 16664         * runtime/JSONObject.h:
       
 16665         (JSC::JSONObject::createStructure):
       
 16666         * runtime/JSObject.h:
       
 16667         (JSC::JSObject::createStructure):
       
 16668         (JSC::JSCell::fastGetOwnPropertySlot):
       
 16669         * runtime/JSStaticScopeObject.h:
       
 16670         (JSC::JSStaticScopeObject::createStructure):
       
 16671         * runtime/JSString.h:
       
 16672         (JSC::JSString::createStructure):
       
 16673         * runtime/JSTypeInfo.h:
       
 16674         (JSC::TypeInfo::overridesGetOwnPropertySlot):
       
 16675         * runtime/JSVariableObject.h:
       
 16676         (JSC::JSVariableObject::createStructure):
       
 16677         * runtime/JSWrapperObject.h:
       
 16678         (JSC::JSWrapperObject::createStructure):
       
 16679         * runtime/MathObject.h:
       
 16680         (JSC::MathObject::createStructure):
       
 16681         * runtime/NumberConstructor.h:
       
 16682         (JSC::NumberConstructor::createStructure):
       
 16683         * runtime/NumberObject.h:
       
 16684         (JSC::NumberObject::createStructure):
       
 16685         * runtime/RegExpConstructor.h:
       
 16686         (JSC::RegExpConstructor::createStructure):
       
 16687         * runtime/RegExpObject.h:
       
 16688         (JSC::RegExpObject::createStructure):
       
 16689         * runtime/StringObject.h:
       
 16690         (JSC::StringObject::createStructure):
       
 16691         * runtime/StringObjectThatMasqueradesAsUndefined.h:
       
 16692         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
       
 16693 
       
 16694 2009-10-14  Kevin Ollivier  <kevino@theolliviers.com>
       
 16695 2009-10-14  Darin Adler  <darin@apple.com>
       
 16696 
       
 16697         Additions so fix for https://bugs.webkit.org/show_bug.cgi?id=18994
       
 16698         can build on Windows.
       
 16699 
       
 16700         * wtf/MathExtras.h: Added llround and llroundf for Windows.
       
 16701 
       
 16702 2009-10-14  Kevin Ollivier  <kevino@theolliviers.com>
       
 16703 
       
 16704         wx build fix. Set ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH for plugins while we're still building stubs.
       
 16705 
       
 16706         * wtf/Platform.h:
       
 16707 
       
 16708 2009-10-13  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 16709 
       
 16710         Reviewed by Simon Hausmann.
       
 16711 
       
 16712         Refactor ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH
       
 16713         https://bugs.webkit.org/show_bug.cgi?id=30278
       
 16714 
       
 16715         Move the definition of ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH
       
 16716         from the make system into common code.
       
 16717 
       
 16718         * wtf/Platform.h:
       
 16719 
       
 16720 2009-10-13  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 16721 
       
 16722         Reviewed by Darin Adler.
       
 16723 
       
 16724         ARM compiler does not understand reinterpret_cast<void*>
       
 16725         https://bugs.webkit.org/show_bug.cgi?id=29034
       
 16726 
       
 16727         Change reinterpret_cast<void*> to regular C style (void*) cast 
       
 16728         for the ARM RVCT compiler.
       
 16729 
       
 16730         * assembler/MacroAssemblerCodeRef.h:
       
 16731         (JSC::FunctionPtr::FunctionPtr): 
       
 16732         * jit/JITOpcodes.cpp: Cast to FunctionPtr first 
       
 16733            instead of directly casting to reinterpret_cast
       
 16734         * jit/JITStubCall.h: Ditto + change the type of m_stub
       
 16735           from void* to FunctionPtr.
       
 16736         (JSC::JITStubCall::JITStubCall): 
       
 16737         (JSC::JITStubCall::call):
       
 16738         * jit/JITStubs.cpp: Ditto.
       
 16739         (JSC::DEFINE_STUB_FUNCTION(EncodedJSValue, op_throw)):
       
 16740 
       
 16741 2009-10-11  Oliver Hunt  <oliver@apple.com>
       
 16742 
       
 16743         Re-enable the JIT.
       
 16744 
       
 16745         * wtf/Platform.h:
       
 16746 
       
 16747 2009-10-10  Oliver Hunt  <oliver@apple.com>
       
 16748 
       
 16749         Reviewed by Maciej Stachowiak.
       
 16750 
       
 16751         Support for String.trim(), String.trimLeft() and String.trimRight() methods
       
 16752         https://bugs.webkit.org/show_bug.cgi?id=26590
       
 16753 
       
 16754         Implement trim, trimLeft, and trimRight
       
 16755 
       
 16756         * runtime/StringPrototype.cpp:
       
 16757         (JSC::isTrimWhitespace):
       
 16758            Our normal string whitespace function does not include U+200B which
       
 16759            is needed for compatibility with mozilla's implementation of trim.
       
 16760            U+200B does not appear to be expected according to spec, however I am
       
 16761            choosing to be lax, and match mozilla behavior so have added this
       
 16762            exception.
       
 16763         (JSC::trimString):
       
 16764 
       
 16765 2009-10-09  Geoffrey Garen  <ggaren@apple.com>
       
 16766 
       
 16767         Reviewed by Oliver Hunt.
       
 16768 
       
 16769         Eliminated some legacy bytecode weirdness.
       
 16770         
       
 16771         Use vPC[x] subscripting instead of ++vPC to access instruction operands.
       
 16772         This is simpler, and often more efficient.
       
 16773 
       
 16774         To support this, and to remove use of hard-coded offsets in bytecode and
       
 16775         JIT code generation and dumping, calculate jump offsets from the beginning
       
 16776         of an instruction, rather than the middle or end.
       
 16777         
       
 16778         Also, use OPCODE_LENGTH instead of hard-coded constants for the sizes of
       
 16779         opcodes.
       
 16780         
       
 16781         SunSpider reports no change in JIT mode, and a 1.01x speedup in Interpreter
       
 16782         mode.
       
 16783 
       
 16784         * bytecode/CodeBlock.cpp:
       
 16785         (JSC::printConditionalJump):
       
 16786         (JSC::CodeBlock::dump):
       
 16787         * bytecompiler/BytecodeGenerator.cpp:
       
 16788         (JSC::BytecodeGenerator::emitJump):
       
 16789         (JSC::BytecodeGenerator::emitJumpIfTrue):
       
 16790         (JSC::BytecodeGenerator::emitJumpIfFalse):
       
 16791         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
       
 16792         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
       
 16793         (JSC::BytecodeGenerator::emitComplexJumpScopes):
       
 16794         (JSC::BytecodeGenerator::emitJumpScopes):
       
 16795         (JSC::BytecodeGenerator::emitNextPropertyName):
       
 16796         (JSC::BytecodeGenerator::emitCatch):
       
 16797         (JSC::BytecodeGenerator::emitJumpSubroutine):
       
 16798         (JSC::prepareJumpTableForImmediateSwitch):
       
 16799         (JSC::prepareJumpTableForCharacterSwitch):
       
 16800         (JSC::prepareJumpTableForStringSwitch):
       
 16801         (JSC::BytecodeGenerator::endSwitch):
       
 16802         * bytecompiler/Label.h:
       
 16803         (JSC::Label::setLocation):
       
 16804         (JSC::Label::bind):
       
 16805         * interpreter/Interpreter.cpp:
       
 16806         (JSC::Interpreter::resolve):
       
 16807         (JSC::Interpreter::resolveSkip):
       
 16808         (JSC::Interpreter::resolveGlobal):
       
 16809         (JSC::Interpreter::resolveBase):
       
 16810         (JSC::Interpreter::resolveBaseAndProperty):
       
 16811         (JSC::Interpreter::createExceptionScope):
       
 16812         (JSC::Interpreter::privateExecute):
       
 16813         * interpreter/Interpreter.h:
       
 16814         * jit/JIT.cpp:
       
 16815         (JSC::JIT::privateCompile):
       
 16816         * jit/JITArithmetic.cpp:
       
 16817         (JSC::JIT::emit_op_jnless):
       
 16818         (JSC::JIT::emitSlow_op_jnless):
       
 16819         (JSC::JIT::emit_op_jnlesseq):
       
 16820         (JSC::JIT::emitSlow_op_jnlesseq):
       
 16821         (JSC::JIT::emitBinaryDoubleOp):
       
 16822         * jit/JITOpcodes.cpp:
       
 16823         (JSC::JIT::emit_op_jmp):
       
 16824         (JSC::JIT::emit_op_loop):
       
 16825         (JSC::JIT::emit_op_loop_if_less):
       
 16826         (JSC::JIT::emitSlow_op_loop_if_less):
       
 16827         (JSC::JIT::emit_op_loop_if_lesseq):
       
 16828         (JSC::JIT::emitSlow_op_loop_if_lesseq):
       
 16829         (JSC::JIT::emit_op_loop_if_true):
       
 16830         (JSC::JIT::emitSlow_op_loop_if_true):
       
 16831         (JSC::JIT::emit_op_jfalse):
       
 16832         (JSC::JIT::emitSlow_op_jfalse):
       
 16833         (JSC::JIT::emit_op_jtrue):
       
 16834         (JSC::JIT::emitSlow_op_jtrue):
       
 16835         (JSC::JIT::emit_op_jeq_null):
       
 16836         (JSC::JIT::emit_op_jneq_null):
       
 16837         (JSC::JIT::emit_op_jneq_ptr):
       
 16838         (JSC::JIT::emit_op_jsr):
       
 16839         (JSC::JIT::emit_op_next_pname):
       
 16840         (JSC::JIT::emit_op_jmp_scopes):
       
 16841 
       
 16842 2009-10-09  Geoffrey Garen  <ggaren@apple.com>
       
 16843 
       
 16844         Reviewed by Sam Weinig.
       
 16845 
       
 16846         Migrated some code that didn't belong out of Structure.
       
 16847         
       
 16848         SunSpider says maybe 1.03x faster.
       
 16849 
       
 16850         * runtime/JSCell.h: Nixed Structure::markAggregate, and made marking of
       
 16851         a Structure's prototype the direct responsility of the object using it.
       
 16852         (Giving Structure a mark function was misleading because it implied that
       
 16853         all live structures get marked during GC, when they don't.)
       
 16854         
       
 16855         * runtime/JSGlobalObject.cpp:
       
 16856         (JSC::markIfNeeded):
       
 16857         (JSC::JSGlobalObject::markChildren): Added code to mark prototypes stored
       
 16858         on the global object. Maybe this wasn't necessary, but now we don't have
       
 16859         to wonder.
       
 16860 
       
 16861         * runtime/JSObject.cpp:
       
 16862         (JSC::JSObject::getPropertyNames):
       
 16863         (JSC::JSObject::getOwnPropertyNames):
       
 16864         (JSC::JSObject::getEnumerableNamesFromClassInfoTable):
       
 16865         * runtime/JSObject.h:
       
 16866         (JSC::JSObject::markChildrenDirect):
       
 16867         * runtime/PropertyNameArray.h:
       
 16868         * runtime/Structure.cpp:
       
 16869         * runtime/Structure.h:
       
 16870         (JSC::Structure::setEnumerationCache):
       
 16871         (JSC::Structure::enumerationCache): Moved property name gathering code
       
 16872         from Structure to JSObject because having a Structure iterate its JSObject
       
 16873         was a layering violation. A JSObject is implemented using a Structure; not
       
 16874         the other way around.
       
 16875 
       
 16876 2009-10-09  Mark Rowe  <mrowe@apple.com>
       
 16877 
       
 16878         Attempt to fix the GTK release build.
       
 16879 
       
 16880         * GNUmakefile.am: Include Grammar.cpp in release builds now that
       
 16881         AllInOneFile.cpp is gone.
       
 16882 
       
 16883 2009-10-09  Gabor Loki  <loki@inf.u-szeged.hu>
       
 16884 
       
 16885         Rubber-stamped by Eric Seidel.
       
 16886 
       
 16887         Add ARM JIT support for Gtk port (disabled by default)
       
 16888         https://bugs.webkit.org/show_bug.cgi?id=30228
       
 16889 
       
 16890         * GNUmakefile.am:
       
 16891 
       
 16892 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
       
 16893 
       
 16894         Tiger build fix: added a few more variable initializations.
       
 16895 
       
 16896         * runtime/StringPrototype.cpp:
       
 16897         (JSC::stringProtoFuncReplace):
       
 16898         (JSC::stringProtoFuncSearch):
       
 16899 
       
 16900 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
       
 16901 
       
 16902         Qt build fix: added missing #include.
       
 16903 
       
 16904         * jsc.cpp:
       
 16905 
       
 16906 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
       
 16907 
       
 16908         Tiger build fix: initialize variable whose initialization the compiler
       
 16909         can't otherwise figure out.
       
 16910 
       
 16911         * runtime/RegExpObject.cpp:
       
 16912         (JSC::RegExpObject::match):
       
 16913 
       
 16914 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
       
 16915 
       
 16916         Windows build fix: updated exports.
       
 16917 
       
 16918         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 16919         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 16920 
       
 16921 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
       
 16922 
       
 16923         Tiger build fix: fixed file name case.
       
 16924 
       
 16925         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 16926 
       
 16927 2009-10-08  Geoffrey Garen  <ggaren@apple.com>
       
 16928 
       
 16929         Reviewed by Maciej Stachowiak.
       
 16930 
       
 16931         At long last, I pronounce the death of AllInOneFile.cpp.
       
 16932         
       
 16933         SunSpider reports a 1.01x speedup.
       
 16934 
       
 16935         * AllInOneFile.cpp: Removed.
       
 16936         * GNUmakefile.am:
       
 16937         * JavaScriptCore.exp:
       
 16938         * JavaScriptCore.gypi:
       
 16939         * JavaScriptCore.xcodeproj/project.pbxproj: Added missing project files
       
 16940         to compilation stages.
       
 16941 
       
 16942         * parser/Grammar.y:
       
 16943         * parser/Lexer.cpp:
       
 16944         * parser/Lexer.h:
       
 16945         (JSC::jscyylex):
       
 16946         * runtime/ArrayConstructor.cpp:
       
 16947         (JSC::constructArrayWithSizeQuirk):
       
 16948         * runtime/Collector.h:
       
 16949         * runtime/JSCell.cpp:
       
 16950         (JSC::JSCell::operator new):
       
 16951         * runtime/JSCell.h:
       
 16952         (JSC::JSCell::operator new):
       
 16953         * runtime/JSGlobalObject.cpp:
       
 16954         (JSC::JSGlobalObject::operator new):
       
 16955         * runtime/JSNumberCell.h:
       
 16956         (JSC::JSNumberCell::operator new):
       
 16957         * runtime/JSString.cpp:
       
 16958         * runtime/JSString.h:
       
 16959         (JSC::jsString):
       
 16960         (JSC::jsSubstring):
       
 16961         (JSC::jsOwnedString):
       
 16962         * runtime/RegExpConstructor.cpp:
       
 16963         * runtime/RegExpConstructor.h:
       
 16964         (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate):
       
 16965         (JSC::RegExpConstructorPrivate::lastOvector):
       
 16966         (JSC::RegExpConstructorPrivate::tempOvector):
       
 16967         (JSC::RegExpConstructorPrivate::changeLastOvector):
       
 16968         (JSC::RegExpConstructor::performMatch):
       
 16969         * runtime/StringPrototype.cpp:
       
 16970         (JSC::stringProtoFuncMatch):
       
 16971         * yarr/RegexJIT.cpp:
       
 16972         * yarr/RegexJIT.h:
       
 16973         (JSC::Yarr::executeRegex): Inlined a few things that Shark said
       
 16974         were hot, on the presumption that AllInOneFile.cpp used to inline them
       
 16975         automatically.
       
 16976 
       
 16977 2009-10-08  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
       
 16978 
       
 16979         Reviewed by Gavin Barraclough.
       
 16980 
       
 16981         Fix for JIT'ed op_call instructions (evals, constructs, etc.)
       
 16982         when !ENABLE(JIT_OPTIMIZE_CALL) && USE(JSVALUE32_64)
       
 16983 
       
 16984         https://bugs.webkit.org/show_bug.cgi?id=30201
       
 16985 
       
 16986         * jit/JITCall.cpp:
       
 16987         (JSC::JIT::compileOpCall):
       
 16988 
       
 16989 2009-10-07  Geoffrey Garen  <ggaren@apple.com>
       
 16990 
       
 16991         Windows build fix: removed no longer exported symbol.
       
 16992 
       
 16993         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 16994         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 16995 
       
 16996 2009-10-07  Geoffrey Garen  <ggaren@apple.com>
       
 16997 
       
 16998         Reviewed by Oliver Hunt.
       
 16999 
       
 17000         Fixed <rdar://problem/5751979> Database code takes JSLock on secondary
       
 17001         thread, permanently slowing down JavaScript
       
 17002         
       
 17003         Removed the optional lock from Heap::protect, Heap::unprotect, and friends,
       
 17004         since WebCore no longer uses it.
       
 17005 
       
 17006         * JavaScriptCore.exp:
       
 17007         * runtime/Collector.cpp:
       
 17008         (JSC::Heap::protect):
       
 17009         (JSC::Heap::unprotect):
       
 17010         (JSC::Heap::markProtectedObjects):
       
 17011         (JSC::Heap::protectedGlobalObjectCount):
       
 17012         (JSC::Heap::protectedObjectCount):
       
 17013         (JSC::Heap::protectedObjectTypeCounts):
       
 17014         * runtime/Collector.h:
       
 17015 
       
 17016 2009-10-07  Zoltan Horvath  <zoltan@webkit.org>
       
 17017 
       
 17018         Reviewed by Darin Adler.
       
 17019 
       
 17020         Allow custom memory allocation control for JavaScriptCore's IdentifierArena
       
 17021         https://bugs.webkit.org/show_bug.cgi?id=30158
       
 17022 
       
 17023         Inherits IdentifierArena class from FastAllocBase because it has been
       
 17024         instantiated by 'new' in JavaScriptCore/parser/ParserArena.cpp:36.
       
 17025 
       
 17026         * parser/ParserArena.h:
       
 17027 
       
 17028 2009-10-07  Adam Roben  <aroben@apple.com>
       
 17029 
       
 17030         Export DateInstance::info in a way that works on Windows
       
 17031 
       
 17032         Fixes <http://webkit.org/b/30171>
       
 17033         fast/dom/Window/window-postmessage-clone.html fails on Windows
       
 17034 
       
 17035         Reviewed by Anders Carlsson.
       
 17036 
       
 17037         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 17038         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 17039         Removed the export of DateInstance::info from here.
       
 17040 
       
 17041         * runtime/DateInstance.h: Use JS_EXPORTDATA to export
       
 17042         DateInstance::info, which is the required way of exporting data on
       
 17043         Windows.
       
 17044 
       
 17045 2009-10-07  Jørgen Lind  <jorgen.lind@nokia.com>
       
 17046 
       
 17047         Reviewed by Simon Hausmann.
       
 17048 
       
 17049         When enabling or disabling the JIT through .qmake.cache, make sure
       
 17050         to also toggle ENABLE_YARR_JIT.
       
 17051 
       
 17052         * JavaScriptCore.pri:
       
 17053 
       
 17054 2009-10-06  Priit Laes  <plaes@plaes.org>
       
 17055 
       
 17056         Reviewed by Gavin Barraclough.
       
 17057 
       
 17058         Linking fails with "relocation R_X86_64_PC32 against symbol
       
 17059         `cti_vm_throw'"
       
 17060         https://bugs.webkit.org/show_bug.cgi?id=28422
       
 17061 
       
 17062         * jit/JITStubs.cpp:
       
 17063         Mark cti_vm_throw symbol as PLT-indirect symbol, so it doesn't end up
       
 17064         in text segment causing relocation errors on amd64 architecture.
       
 17065         Introduced new define SYMBOL_STRING_RELOCATION for such symbols.
       
 17066 
       
 17067 2009-10-06  Oliver Hunt  <oliver@apple.com>
       
 17068 
       
 17069         Windows linking fix
       
 17070 
       
 17071         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 17072         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 17073 
       
 17074 2009-10-06  Oliver Hunt  <oliver@apple.com>
       
 17075 
       
 17076         Reviewed by NOBODY (build fix).
       
 17077 
       
 17078         Windows build fix.
       
 17079 
       
 17080         * runtime/DateInstance.cpp:
       
 17081 
       
 17082 2009-10-05  Oliver Hunt  <oliver@apple.com>
       
 17083 
       
 17084         Reviewed by Gavin Barraclough.
       
 17085 
       
 17086         It should be possible to post (clone) built-in JS objects to Workers
       
 17087         https://bugs.webkit.org/show_bug.cgi?id=22878
       
 17088 
       
 17089         Expose helpers to throw correct exceptions during object graph walk
       
 17090         used for cloning and add a helper function to create Date instances
       
 17091         without going through the JS Date constructor function.
       
 17092 
       
 17093         * JavaScriptCore.exp:
       
 17094         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 17095         * runtime/DateInstance.cpp:
       
 17096         (JSC::DateInstance::DateInstance):
       
 17097         * runtime/DateInstance.h:
       
 17098         * runtime/ExceptionHelpers.cpp:
       
 17099         (JSC::createTypeError):
       
 17100         * runtime/ExceptionHelpers.h:
       
 17101 
       
 17102 2009-10-06  David Levin  <levin@chromium.org>
       
 17103 
       
 17104         Reviewed by Oliver Hunt.
       
 17105 
       
 17106         StringImpl needs a method to get an instance for another thread which doesn't copy the underlying buffer.
       
 17107         https://bugs.webkit.org/show_bug.cgi?id=30095
       
 17108 
       
 17109         * wtf/CrossThreadRefCounted.h:
       
 17110         Removed an unused function and assert improvement.
       
 17111         (WTF::CrossThreadRefCounted::isOwnedByCurrentThread): Moved out common code from asserts.
       
 17112         (WTF::CrossThreadRefCounted::ref): Changed assert to use the common method.
       
 17113         (WTF::CrossThreadRefCounted::deref): Changed assert to use the common method.
       
 17114         (WTF::CrossThreadRefCounted::crossThreadCopy): Since this includes a potentially
       
 17115         non-threadsafe operation, add an assert that the class is owned by the current thread.
       
 17116 
       
 17117 2009-10-05  Kevin Ollivier  <kevino@theolliviers.com>
       
 17118 
       
 17119         wx build fix. Add Symbian files to the list of excludes.
       
 17120 
       
 17121         * wscript:
       
 17122 
       
 17123 2009-10-05  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
 17124 
       
 17125         Reviewed by Simon Hausmann.
       
 17126 
       
 17127         [Qt] Remove precompiled header from JavaScriptCore compilation to
       
 17128         prevent qmake warning during autonomous compilation.
       
 17129         https://bugs.webkit.org/show_bug.cgi?id=30069
       
 17130 
       
 17131         * JavaScriptCore.pro:
       
 17132 
       
 17133 2009-10-02  Geoffrey Garen  <ggaren@apple.com>
       
 17134 
       
 17135         Reviewed by Sam Weinig.
       
 17136 
       
 17137         Removed the concept of a "fast access cutoff" in arrays, because it
       
 17138         punished some patterns of array access too much, and made things too
       
 17139         complex for inlining in some cases.
       
 17140         
       
 17141         1.3% speedup on SunSpider.
       
 17142 
       
 17143         * jit/JITOpcodes.cpp:
       
 17144         (JSC::JIT::emitSlow_op_get_by_val):
       
 17145         (JSC::JIT::emitSlow_op_put_by_val):
       
 17146         * jit/JITPropertyAccess.cpp:
       
 17147         (JSC::JIT::emit_op_get_by_val):
       
 17148         (JSC::JIT::emitSlow_op_get_by_val):
       
 17149         (JSC::JIT::emit_op_put_by_val):
       
 17150         (JSC::JIT::emitSlow_op_put_by_val):
       
 17151         * jit/JITStubs.cpp:
       
 17152         * jit/JITStubs.h:
       
 17153         (JSC::): Check m_vectorLength instead of m_fastAccessCutoff when
       
 17154         getting / putting from / to an array. Inline putting past the end of
       
 17155         the array.
       
 17156 
       
 17157         * runtime/JSArray.cpp:
       
 17158         (JSC::JSArray::JSArray):
       
 17159         (JSC::JSArray::getOwnPropertySlot):
       
 17160         (JSC::JSArray::getOwnPropertyDescriptor):
       
 17161         (JSC::JSArray::put):
       
 17162         (JSC::JSArray::putSlowCase):
       
 17163         (JSC::JSArray::deleteProperty):
       
 17164         (JSC::JSArray::getOwnPropertyNames):
       
 17165         (JSC::JSArray::increaseVectorLength):
       
 17166         (JSC::JSArray::setLength):
       
 17167         (JSC::JSArray::pop):
       
 17168         (JSC::JSArray::push):
       
 17169         (JSC::JSArray::sort):
       
 17170         (JSC::JSArray::fillArgList):
       
 17171         (JSC::JSArray::copyToRegisters):
       
 17172         (JSC::JSArray::compactForSorting):
       
 17173         (JSC::JSArray::checkConsistency):
       
 17174         * runtime/JSArray.h:
       
 17175         (JSC::JSArray::canGetIndex):
       
 17176         (JSC::JSArray::canSetIndex):
       
 17177         (JSC::JSArray::setIndex):
       
 17178         (JSC::JSArray::markChildrenDirect): Removed m_fastAccessCutoff, and
       
 17179         replaced with checks for JSValue() to detect reads and writes from / to
       
 17180         uninitialized parts of the array.
       
 17181 
       
 17182 2009-10-02  Jonni Rainisto  <jonni.rainisto@nokia.com>
       
 17183 
       
 17184         Reviewed by Darin Adler.
       
 17185 
       
 17186         Math.random() gives too low values on Win32 when _CRT_RAND_S is not defined
       
 17187         https://bugs.webkit.org/show_bug.cgi?id=29956
       
 17188 
       
 17189         * wtf/RandomNumber.cpp:
       
 17190         (WTF::randomNumber): Added PLATFORM(WIN_OS) to handle 15bit rand()
       
 17191 
       
 17192 2009-10-02  Geoffrey Garen  <ggaren@apple.com>
       
 17193 
       
 17194         Reviewed by Sam Weinig.
       
 17195 
       
 17196         Take one branch instead of two to test for JSValue().
       
 17197         
       
 17198         1.1% SunSpider speedup.
       
 17199 
       
 17200         * jit/JITCall.cpp:
       
 17201         (JSC::JIT::compileOpCall):
       
 17202         * jit/JITOpcodes.cpp:
       
 17203         (JSC::JIT::emit_op_to_jsnumber):
       
 17204         (JSC::JIT::emit_op_create_arguments):
       
 17205         * jit/JITPropertyAccess.cpp:
       
 17206         (JSC::JIT::emitSlow_op_get_by_val):
       
 17207         (JSC::JIT::emit_op_put_by_val): Test for the empty value tag, instead
       
 17208         of testing for the cell tag with a 0 payload.
       
 17209 
       
 17210         * runtime/JSValue.cpp:
       
 17211         (JSC::JSValue::description): Added support for dumping the new empty value,
       
 17212         and deleted values, in debug builds.
       
 17213 
       
 17214         * runtime/JSValue.h:
       
 17215         (JSC::JSValue::JSValue()): Construct JSValue() with the empty value tag.
       
 17216 
       
 17217         (JSC::JSValue::JSValue(JSCell*)): Convert null pointer to the empty value
       
 17218         tag, to avoid having two different c++ versions of null / empty.
       
 17219 
       
 17220         (JSC::JSValue::operator bool): Test for the empty value tag, instead
       
 17221         of testing for the cell tag with a 0 payload.
       
 17222 
       
 17223 2009-10-02  Steve Falkenburg  <sfalken@apple.com>
       
 17224 
       
 17225         Reviewed by Mark Rowe.
       
 17226 
       
 17227         <https://bugs.webkit.org/show_bug.cgi?id=29989>
       
 17228         Safari version number shouldn't be exposed in WebKit code
       
 17229         
       
 17230         For a WebKit version of 532.3.4:
       
 17231         Product version is: 5.32.3.4 (was 4.0.3.0)
       
 17232         File version is: 5.32.3.4 (was 4.532.3.4)
       
 17233 
       
 17234         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
       
 17235 
       
 17236 2009-10-02  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
       
 17237 
       
 17238         Rubber-stamped by Simon Hausmann.
       
 17239 
       
 17240         Fix the Qt on Mac OS X build.
       
 17241 
       
 17242         * wtf/FastMalloc.cpp:
       
 17243 
       
 17244 2009-10-02  Jørgen Lind  <jorgen.lind@nokia.com>
       
 17245 
       
 17246         Reviewed by Simon Hausmann.
       
 17247 
       
 17248         Allow enabling and disabling of the JIT through a qmake variable.
       
 17249 
       
 17250         Qt's configure may set this variable through .qmake.cache if a
       
 17251         commandline option is given and/or the compile test for hwcap.h
       
 17252         failed/succeeded.
       
 17253 
       
 17254         * JavaScriptCore.pri:
       
 17255 
       
 17256 2009-10-01  Mark Rowe  <mrowe@apple.com>
       
 17257 
       
 17258         Fix the Tiger build.  Don't unconditionally enable 3D canvas as it is not supported on Tiger.
       
 17259 
       
 17260         * Configurations/FeatureDefines.xcconfig:
       
 17261 
       
 17262 2009-10-01  Yongjun Zhang  <yongjun.zhang@nokia.com>
       
 17263 
       
 17264         Reviewed by Darin Adler.
       
 17265 
       
 17266         https://bugs.webkit.org/show_bug.cgi?id=29187
       
 17267 
       
 17268         Don't inline ~ListRefPtr() to work around winscw compiler forward declaration
       
 17269         bug regarding templated classes.
       
 17270 
       
 17271         The compiler bug is reported at:
       
 17272         https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812
       
 17273 
       
 17274         The change will be reverted when the above bug is fixed in winscw compiler.
       
 17275 
       
 17276         * wtf/ListRefPtr.h:
       
 17277         (WTF::::~ListRefPtr):
       
 17278 
       
 17279 2009-10-01  Zoltan Horvath  <zoltan@webkit.org>
       
 17280 
       
 17281         Reviewed by Simon Hausmann.
       
 17282 
       
 17283         [Qt] Allow custom memory allocation control for the whole JavaScriptCore
       
 17284         https://bugs.webkit.org/show_bug.cgi?id=27029
       
 17285 
       
 17286         Since in JavaScriptCore almost every class which has been instantiated by operator new is
       
 17287         inherited from FastAllocBase (bug #20422), we disable customizing global operator new for the Qt-port
       
 17288         when USE_SYSTEM_MALLOC=0.
       
 17289 
       
 17290         Add #include <unistd.h> to FastMalloc.cpp because it's used by TCMalloc_PageHeap::scavengerThread().
       
 17291         (It's needed for the functionality of TCmalloc.)
       
 17292 
       
 17293         Add TCSystemAlloc.cpp to JavaScriptCore.pri if USE_SYSTEM_MALLOC is disabled.
       
 17294 
       
 17295         * JavaScriptCore.pri:
       
 17296         * wtf/FastMalloc.cpp:
       
 17297         (WTF::sleep):
       
 17298         * wtf/FastMalloc.h:
       
 17299 
       
 17300 2009-09-30  Gabor Loki  <loki@inf.u-szeged.hu>
       
 17301 
       
 17302         Reviewed by George Staikos.
       
 17303 
       
 17304         Defines two pseudo-platforms for ARM and Thumb-2 instruction set.
       
 17305         https://bugs.webkit.org/show_bug.cgi?id=29122
       
 17306 
       
 17307         Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2
       
 17308         macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used
       
 17309         when Thumb-2 instruction set is the required target. The
       
 17310         PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In
       
 17311         case where the code is common the PLATFORM(ARM) have to be used.
       
 17312 
       
 17313         Modified by George Wright  <gwright@rim.com> to correctly work
       
 17314         with the RVCT-defined __TARGET_ARCH_ARM and __TARGET_ARCH_THUMB
       
 17315         compiler macros, as well as adding readability changes.
       
 17316 
       
 17317         * wtf/Platform.h:
       
 17318 
       
 17319 2009-09-30  Oliver Hunt  <oliver@apple.com>
       
 17320 
       
 17321         Reviewed by Geoff Garen.
       
 17322 
       
 17323         Devirtualise array toString conversion
       
 17324 
       
 17325         Tweak the implementation of Array.prototype.toString to have a fast path
       
 17326         when acting on a true JSArray.
       
 17327 
       
 17328         * runtime/ArrayPrototype.cpp:
       
 17329         (JSC::arrayProtoFuncToString):
       
 17330 
       
 17331 2009-09-30  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
       
 17332 
       
 17333         Reviewed by Geoffrey Garen.
       
 17334 
       
 17335         Buildfix for platforms using JSVALUE32.
       
 17336         https://bugs.webkit.org/show_bug.cgi?id=29915
       
 17337 
       
 17338         After http://trac.webkit.org/changeset/48905 the build broke in JSVALUE32 case.
       
 17339         Also removed unreachable code.
       
 17340 
       
 17341         * jit/JITArithmetic.cpp:
       
 17342         (JSC::JIT::emit_op_add):
       
 17343          - Declaration of "OperandTypes types" moved before first use.
       
 17344          - Typos fixed: dst modified to result, regT2 added.
       
 17345          - Unreachable code removed.
       
 17346         (JSC::JIT::emitSlow_op_add):
       
 17347          - Missing declaration of "OperandTypes types" added.
       
 17348 
       
 17349 2009-09-30  Janne Koskinen  <janne.p.koskinen@digia.com> 
       
 17350 
       
 17351         Reviewed by Simon Hausmann.
       
 17352 
       
 17353         Reduce heap size on Symbian from 64MB to 8MB.
       
 17354 
       
 17355         This is not a perfect fix, it requires more fine tuning.
       
 17356         But this makes it possible again to debug in the emulator,
       
 17357         which is more important in order to be able to fix other
       
 17358         run-time issues.
       
 17359 
       
 17360         * runtime/Collector.h:
       
 17361 
       
 17362 2009-09-30  Janne Koskinen  <janne.p.koskinen@digia.com> 
       
 17363 
       
 17364         Reviewed by Simon Hausmann.
       
 17365 
       
 17366         Fix CRASH() macro for Symbian build.
       
 17367 
       
 17368         * wtf/Assertions.h: Added missing }
       
 17369 
       
 17370 2009-09-29  Geoffrey Garen  <ggaren@apple.com>
       
 17371 
       
 17372         Reviewed by Gavin Barraclough.
       
 17373 
       
 17374         Inlined a few math operations.
       
 17375         
       
 17376         ~1% SunSpider speedup.
       
 17377 
       
 17378         * jit/JIT.h:
       
 17379         * jit/JITArithmetic.cpp:
       
 17380         (JSC::JIT::compileBinaryArithOpSlowCase):
       
 17381         (JSC::JIT::emitSlow_op_add):
       
 17382         (JSC::JIT::emitSlow_op_mul):
       
 17383         (JSC::JIT::emit_op_sub):
       
 17384         (JSC::JIT::emitSlow_op_sub): Don't take a stub call when operating on
       
 17385         a constant int and a double.
       
 17386 
       
 17387 2009-09-28  Oliver Hunt  <oliver@apple.com>
       
 17388 
       
 17389         Reviewed by Gavin Barraclough.
       
 17390 
       
 17391         Tidy up codeblock sampler
       
 17392         https://bugs.webkit.org/show_bug.cgi?id=29836
       
 17393 
       
 17394         Some rather simple refactoring of codeblock sampler so that
       
 17395         it's easier for us to use it to find problems in non-jsc
       
 17396         environments
       
 17397 
       
 17398         * JavaScriptCore.exp:
       
 17399         * bytecode/SamplingTool.h:
       
 17400         * debugger/Debugger.cpp:
       
 17401         (JSC::evaluateInGlobalCallFrame):
       
 17402         * debugger/DebuggerCallFrame.cpp:
       
 17403         (JSC::DebuggerCallFrame::evaluate):
       
 17404         * interpreter/Interpreter.cpp:
       
 17405         (JSC::Interpreter::Interpreter):
       
 17406         (JSC::Interpreter::execute):
       
 17407         (JSC::Interpreter::privateExecute):
       
 17408         (JSC::Interpreter::enableSampler):
       
 17409         (JSC::Interpreter::dumpSampleData):
       
 17410         (JSC::Interpreter::startSampling):
       
 17411         (JSC::Interpreter::stopSampling):
       
 17412         * interpreter/Interpreter.h:
       
 17413         (JSC::Interpreter::sampler):
       
 17414         * jit/JIT.h:
       
 17415         * jsc.cpp:
       
 17416         (runWithScripts):
       
 17417         * runtime/Completion.cpp:
       
 17418         (JSC::checkSyntax):
       
 17419         (JSC::evaluate):
       
 17420         * runtime/Executable.h:
       
 17421         (JSC::EvalExecutable::EvalExecutable):
       
 17422         (JSC::ProgramExecutable::create):
       
 17423         (JSC::ProgramExecutable::ProgramExecutable):
       
 17424         * runtime/JSGlobalData.cpp:
       
 17425         (JSC::JSGlobalData::startSampling):
       
 17426         (JSC::JSGlobalData::stopSampling):
       
 17427         (JSC::JSGlobalData::dumpSampleData):
       
 17428         * runtime/JSGlobalData.h:
       
 17429         * runtime/JSGlobalObjectFunctions.cpp:
       
 17430         (JSC::globalFuncEval):
       
 17431 
       
 17432 2009-09-29  Jeremy Orlow  <jorlow@chromium.org>
       
 17433 
       
 17434         Reviewed by Dimitri Glazkov.
       
 17435 
       
 17436         Add GYP generated files to svn:ignore
       
 17437         https://bugs.webkit.org/show_bug.cgi?id=29895
       
 17438 
       
 17439         The following files are generated by JavaScriptCore's GYP file and should be ignored:
       
 17440 
       
 17441         pcre.mk
       
 17442         wtf.scons
       
 17443         wtf.mk
       
 17444         SConstruct
       
 17445         wtf_config.scons
       
 17446         wtf_config.mk
       
 17447         pcre.scons
       
 17448 
       
 17449         * JavaScriptCore.gyp: Changed property svn:ignore.
       
 17450 
       
 17451 2009-09-29  Geoffrey Garen  <ggaren@apple.com>
       
 17452 
       
 17453         Reviewed by Sam Weinig.
       
 17454 
       
 17455         Standardized an optimization for adding non-numbers.
       
 17456         
       
 17457         SunSpider says maybe a tiny speedup.
       
 17458 
       
 17459         * jit/JITArithmetic.cpp:
       
 17460         (JSC::JIT::emit_op_add):
       
 17461         (JSC::JIT::emitSlow_op_add):
       
 17462 
       
 17463 2009-09-29  Geoffrey Garen  <ggaren@apple.com>
       
 17464 
       
 17465         Windows build fix: export a new symbol.
       
 17466 
       
 17467         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 17468         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 17469 
       
 17470 2009-09-28  Geoffrey Garen  <ggaren@apple.com>
       
 17471 
       
 17472         Reviewed by Sam Weinig.
       
 17473 
       
 17474         Removed virtual destructor from JSGlobalObjectData to eliminate pointer
       
 17475         fix-ups when accessing JSGlobalObject::d.
       
 17476         
       
 17477         Replaced with an explicit destructor function pointer.
       
 17478         
       
 17479         6% speedup on bench-alloc-nonretained.js.
       
 17480 
       
 17481         * JavaScriptCore.exp:
       
 17482         * runtime/JSGlobalObject.cpp:
       
 17483         (JSC::JSGlobalObject::~JSGlobalObject):
       
 17484         (JSC::JSGlobalObject::destroyJSGlobalObjectData):
       
 17485         * runtime/JSGlobalObject.h:
       
 17486         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
       
 17487         (JSC::JSGlobalObject::JSGlobalObject):
       
 17488 
       
 17489 2009-09-29  Janne Koskinen  <janne.p.koskinen@digia.com>
       
 17490 
       
 17491         Reviewed by David Kilzer.
       
 17492 
       
 17493         [Qt] Assert messages prints visible in Symbian
       
 17494         https://bugs.webkit.org/show_bug.cgi?id=29808
       
 17495 
       
 17496         Asserts use vprintf to print the messages to stderr.
       
 17497         In Symbian Open C it is not possible to see stderr so
       
 17498         I routed the messages to stdout instead.
       
 17499 
       
 17500         * wtf/Assertions.cpp:
       
 17501 
       
 17502 2009-09-29  Janne Koskinen  <janne.p.koskinen@digia.com>
       
 17503 
       
 17504         Reviewed by Darin Adler.
       
 17505 
       
 17506         [Qt] Symbian CRASH macro implementation
       
 17507 
       
 17508         Added Symbian specific crash macro that
       
 17509         stops to crash line if JIT debugging is used.
       
 17510         Additional differentiation of access violation
       
 17511         (KERN-EXEC 3) and CRASH panic.
       
 17512 
       
 17513         * wtf/Assertions.h:
       
 17514 
       
 17515 2009-09-28  Mark Rowe  <mrowe@apple.com>
       
 17516 
       
 17517         Fix the PowerPC build.
       
 17518 
       
 17519         * JavaScriptCore.exp:
       
 17520 
       
 17521 2009-09-28  Mark Rowe  <mrowe@apple.com>
       
 17522 
       
 17523         Reviewed by Gavin Barraclough.
       
 17524 
       
 17525         <rdar://problem/7195704> JavaScriptCore fails to mark registers when built for x86_64 using LLVM GCC.
       
 17526 
       
 17527         * runtime/Collector.cpp:
       
 17528         (JSC::Heap::markCurrentThreadConservatively): Force jmp_buf to use the appropriate alignment for a pointer
       
 17529         to ensure that we correctly interpret the contents of registers during marking.
       
 17530 
       
 17531 2009-09-28  Geoffrey Garen  <ggaren@apple.com>
       
 17532 
       
 17533         Windows build fix: added new exports.
       
 17534 
       
 17535         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 17536         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 17537 
       
 17538 2009-09-28  Geoffrey Garen  <ggaren@apple.com>
       
 17539 
       
 17540         Windows build fix: removed exports that no longer exist.
       
 17541 
       
 17542         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 17543         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 17544 
       
 17545 2009-09-28  Geoffrey Garen  <ggaren@apple.com>
       
 17546 
       
 17547         Reviewed by Darin Adler.
       
 17548 
       
 17549         NotNullPassRefPtr: smart pointer optimized for passing references that are not null
       
 17550         https://bugs.webkit.org/show_bug.cgi?id=29822
       
 17551         
       
 17552         Added NotNullPassRefPtr, and deployed it in all places that initialize
       
 17553         JavaScript objects.
       
 17554         
       
 17555         2.2% speedup on bench-allocate-nonretained.js.
       
 17556 
       
 17557         * API/JSCallbackConstructor.cpp:
       
 17558         (JSC::JSCallbackConstructor::JSCallbackConstructor):
       
 17559         * API/JSCallbackConstructor.h:
       
 17560         * API/JSCallbackObject.h:
       
 17561         * API/JSCallbackObjectFunctions.h:
       
 17562         (JSC::JSCallbackObject::JSCallbackObject):
       
 17563         * JavaScriptCore.exp:
       
 17564         * bytecode/CodeBlock.h:
       
 17565         (JSC::CodeBlock::addFunctionDecl):
       
 17566         (JSC::CodeBlock::addFunctionExpr):
       
 17567         * runtime/ArrayConstructor.cpp:
       
 17568         (JSC::ArrayConstructor::ArrayConstructor):
       
 17569         * runtime/ArrayConstructor.h:
       
 17570         * runtime/ArrayPrototype.cpp:
       
 17571         (JSC::ArrayPrototype::ArrayPrototype):
       
 17572         * runtime/ArrayPrototype.h:
       
 17573         * runtime/BooleanConstructor.cpp:
       
 17574         (JSC::BooleanConstructor::BooleanConstructor):
       
 17575         * runtime/BooleanConstructor.h:
       
 17576         * runtime/BooleanObject.cpp:
       
 17577         (JSC::BooleanObject::BooleanObject):
       
 17578         * runtime/BooleanObject.h:
       
 17579         * runtime/BooleanPrototype.cpp:
       
 17580         (JSC::BooleanPrototype::BooleanPrototype):
       
 17581         * runtime/BooleanPrototype.h:
       
 17582         * runtime/DateConstructor.cpp:
       
 17583         (JSC::DateConstructor::DateConstructor):
       
 17584         * runtime/DateConstructor.h:
       
 17585         * runtime/DateInstance.cpp:
       
 17586         (JSC::DateInstance::DateInstance):
       
 17587         * runtime/DateInstance.h:
       
 17588         * runtime/DatePrototype.cpp:
       
 17589         (JSC::DatePrototype::DatePrototype):
       
 17590         * runtime/DatePrototype.h:
       
 17591         * runtime/ErrorConstructor.cpp:
       
 17592         (JSC::ErrorConstructor::ErrorConstructor):
       
 17593         * runtime/ErrorConstructor.h:
       
 17594         * runtime/ErrorInstance.cpp:
       
 17595         (JSC::ErrorInstance::ErrorInstance):
       
 17596         * runtime/ErrorInstance.h:
       
 17597         * runtime/ErrorPrototype.cpp:
       
 17598         (JSC::ErrorPrototype::ErrorPrototype):
       
 17599         * runtime/ErrorPrototype.h:
       
 17600         * runtime/FunctionConstructor.cpp:
       
 17601         (JSC::FunctionConstructor::FunctionConstructor):
       
 17602         * runtime/FunctionConstructor.h:
       
 17603         * runtime/FunctionPrototype.cpp:
       
 17604         (JSC::FunctionPrototype::FunctionPrototype):
       
 17605         * runtime/FunctionPrototype.h:
       
 17606         * runtime/GlobalEvalFunction.cpp:
       
 17607         (JSC::GlobalEvalFunction::GlobalEvalFunction):
       
 17608         * runtime/GlobalEvalFunction.h:
       
 17609         * runtime/InternalFunction.cpp:
       
 17610         (JSC::InternalFunction::InternalFunction):
       
 17611         * runtime/InternalFunction.h:
       
 17612         (JSC::InternalFunction::InternalFunction):
       
 17613         * runtime/JSActivation.cpp:
       
 17614         (JSC::JSActivation::JSActivation):
       
 17615         * runtime/JSActivation.h:
       
 17616         (JSC::JSActivation::JSActivationData::JSActivationData):
       
 17617         * runtime/JSArray.cpp:
       
 17618         (JSC::JSArray::JSArray):
       
 17619         * runtime/JSArray.h:
       
 17620         * runtime/JSByteArray.cpp:
       
 17621         (JSC::JSByteArray::JSByteArray):
       
 17622         * runtime/JSByteArray.h:
       
 17623         * runtime/JSFunction.cpp:
       
 17624         (JSC::JSFunction::JSFunction):
       
 17625         * runtime/JSFunction.h:
       
 17626         * runtime/JSGlobalObject.h:
       
 17627         (JSC::JSGlobalObject::JSGlobalObject):
       
 17628         * runtime/JSONObject.h:
       
 17629         (JSC::JSONObject::JSONObject):
       
 17630         * runtime/JSObject.h:
       
 17631         (JSC::JSObject::JSObject):
       
 17632         (JSC::JSObject::setStructure):
       
 17633         * runtime/JSVariableObject.h:
       
 17634         (JSC::JSVariableObject::JSVariableObject):
       
 17635         * runtime/JSWrapperObject.h:
       
 17636         (JSC::JSWrapperObject::JSWrapperObject):
       
 17637         * runtime/MathObject.cpp:
       
 17638         (JSC::MathObject::MathObject):
       
 17639         * runtime/MathObject.h:
       
 17640         * runtime/NativeErrorConstructor.cpp:
       
 17641         (JSC::NativeErrorConstructor::NativeErrorConstructor):
       
 17642         * runtime/NativeErrorConstructor.h:
       
 17643         * runtime/NativeErrorPrototype.cpp:
       
 17644         (JSC::NativeErrorPrototype::NativeErrorPrototype):
       
 17645         * runtime/NativeErrorPrototype.h:
       
 17646         * runtime/NumberConstructor.cpp:
       
 17647         (JSC::NumberConstructor::NumberConstructor):
       
 17648         * runtime/NumberConstructor.h:
       
 17649         * runtime/NumberObject.cpp:
       
 17650         (JSC::NumberObject::NumberObject):
       
 17651         * runtime/NumberObject.h:
       
 17652         * runtime/NumberPrototype.cpp:
       
 17653         (JSC::NumberPrototype::NumberPrototype):
       
 17654         * runtime/NumberPrototype.h:
       
 17655         * runtime/ObjectConstructor.cpp:
       
 17656         (JSC::ObjectConstructor::ObjectConstructor):
       
 17657         * runtime/ObjectConstructor.h:
       
 17658         * runtime/ObjectPrototype.cpp:
       
 17659         (JSC::ObjectPrototype::ObjectPrototype):
       
 17660         * runtime/ObjectPrototype.h:
       
 17661         * runtime/PropertyNameArray.h:
       
 17662         (JSC::PropertyNameArrayData::setCachedPrototypeChain):
       
 17663         * runtime/PrototypeFunction.cpp:
       
 17664         (JSC::PrototypeFunction::PrototypeFunction):
       
 17665         * runtime/PrototypeFunction.h:
       
 17666         * runtime/RegExpConstructor.cpp:
       
 17667         (JSC::RegExpConstructor::RegExpConstructor):
       
 17668         * runtime/RegExpConstructor.h:
       
 17669         * runtime/RegExpObject.cpp:
       
 17670         (JSC::RegExpObject::RegExpObject):
       
 17671         * runtime/RegExpObject.h:
       
 17672         (JSC::RegExpObject::RegExpObjectData::RegExpObjectData):
       
 17673         * runtime/RegExpPrototype.cpp:
       
 17674         (JSC::RegExpPrototype::RegExpPrototype):
       
 17675         * runtime/RegExpPrototype.h:
       
 17676         * runtime/StringConstructor.cpp:
       
 17677         (JSC::StringConstructor::StringConstructor):
       
 17678         * runtime/StringConstructor.h:
       
 17679         * runtime/StringObject.cpp:
       
 17680         (JSC::StringObject::StringObject):
       
 17681         * runtime/StringObject.h:
       
 17682         * runtime/StringObjectThatMasqueradesAsUndefined.h:
       
 17683         (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
       
 17684         * runtime/StringPrototype.cpp:
       
 17685         (JSC::StringPrototype::StringPrototype):
       
 17686         * runtime/StringPrototype.h:
       
 17687         * wtf/PassRefPtr.h:
       
 17688         (WTF::NotNullPassRefPtr::NotNullPassRefPtr):
       
 17689         (WTF::NotNullPassRefPtr::~NotNullPassRefPtr):
       
 17690         (WTF::NotNullPassRefPtr::get):
       
 17691         (WTF::NotNullPassRefPtr::clear):
       
 17692         (WTF::NotNullPassRefPtr::releaseRef):
       
 17693         (WTF::NotNullPassRefPtr::operator*):
       
 17694         (WTF::NotNullPassRefPtr::operator->):
       
 17695         (WTF::NotNullPassRefPtr::operator!):
       
 17696         (WTF::NotNullPassRefPtr::operator UnspecifiedBoolType):
       
 17697         * wtf/RefPtr.h:
       
 17698         (WTF::RefPtr::RefPtr):
       
 17699         (WTF::operator==):
       
 17700 
       
 17701 2009-09-28  Oliver Hunt  <oliver@apple.com>
       
 17702 
       
 17703         Reviewed by Geoff Garen.
       
 17704 
       
 17705         Hard dependency on SSE2 instruction set with JIT
       
 17706         https://bugs.webkit.org/show_bug.cgi?id=29779
       
 17707 
       
 17708         Add floating point support checks to op_jfalse and op_jtrue, and
       
 17709         fix the logic for the slow case of op_add
       
 17710 
       
 17711         * jit/JITArithmetic.cpp:
       
 17712         (JSC::JIT::emitSlow_op_add):
       
 17713         * jit/JITOpcodes.cpp:
       
 17714         (JSC::JIT::emit_op_jfalse):
       
 17715         (JSC::JIT::emit_op_jtrue):
       
 17716 
       
 17717 2009-09-28  Yaar Schnitman  <yaar@chromium.org>
       
 17718 
       
 17719         Reviewed by Dimitri Glazkov.
       
 17720 
       
 17721         Chromium port - recognize we are being built independently
       
 17722         of chromium and look for dependencies under webkit/chromium rather
       
 17723         than chromium/src.
       
 17724 
       
 17725         https://bugs.webkit.org/show_bug.cgi?id=29722
       
 17726 
       
 17727         * JavaScriptCore.gyp/JavaScriptCore.gyp:
       
 17728 
       
 17729 2009-09-28  Jakub Wieczorek  <faw217@gmail.com>
       
 17730 
       
 17731         Reviewed by Simon Hausmann.
       
 17732 
       
 17733         [Qt] Implement XSLT support with QtXmlPatterns.
       
 17734         https://bugs.webkit.org/show_bug.cgi?id=28303
       
 17735 
       
 17736         * wtf/Platform.h: Add a WTF_USE_QXMLQUERY #define.
       
 17737 
       
 17738 2009-09-28  Gabor Loki  <loki@inf.u-szeged.hu>
       
 17739 
       
 17740         Reviewed by Simon Hausmann.
       
 17741 
       
 17742         Remove __clear_cache which is an internal function of GCC
       
 17743         https://bugs.webkit.org/show_bug.cgi?id=28886
       
 17744 
       
 17745         Although __clear_cache is exported from GCC, this is an internal
       
 17746         function. GCC makes no promises about it.
       
 17747 
       
 17748         * jit/ExecutableAllocator.h:
       
 17749         (JSC::ExecutableAllocator::cacheFlush):
       
 17750 
       
 17751 2009-09-28  Sam Weinig  <sam@webkit.org>
       
 17752 
       
 17753         Reviewed by Oliver Hunt.
       
 17754 
       
 17755         Fix an absolute path to somewhere in Oliver's machine to a relative path
       
 17756         for derived JSONObject.lut.h.
       
 17757 
       
 17758         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 17759 
       
 17760 2009-09-28  Joerg Bornemann  <joerg.bornemann@nokia.com>
       
 17761 
       
 17762         Reviewed by Simon Hausmann.
       
 17763 
       
 17764         Add ARM version detection for Windows CE.
       
 17765 
       
 17766         * wtf/Platform.h:
       
 17767 
       
 17768 2009-09-26  Yongjun Zhang  <yongjun.zhang@nokia.com>
       
 17769 
       
 17770         Reviewed by Simon Hausmann.
       
 17771 
       
 17772         Add MarkStackSymbian.cpp to build JavascriptCore for Symbian.
       
 17773 
       
 17774         Re-use Windows shrinkAllocation implementation because Symbian doesn't
       
 17775         support releasing part of memory region.
       
 17776         
       
 17777         Use fastMalloc and fastFree to implement allocateStack and releaseStack
       
 17778         for Symbian port.
       
 17779 
       
 17780         * JavaScriptCore.pri:
       
 17781         * runtime/MarkStack.h:
       
 17782         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
       
 17783         * runtime/MarkStackSymbian.cpp: Added.
       
 17784         (JSC::MarkStack::initializePagesize):
       
 17785         (JSC::MarkStack::allocateStack):
       
 17786         (JSC::MarkStack::releaseStack):
       
 17787 
       
 17788 2009-09-25  Gabor Loki  <loki@inf.u-szeged.hu>
       
 17789 
       
 17790         Reviewed by Gavin Barraclough.
       
 17791 
       
 17792         Fix unaligned data access in YARR_JIT on ARMv5 and below.
       
 17793         https://bugs.webkit.org/show_bug.cgi?id=29695
       
 17794 
       
 17795         On ARMv5 and below all data access should be naturally aligned.
       
 17796         In the YARR_JIT there is a case when character pairs are
       
 17797         loaded from the input string, but this data access is not
       
 17798         naturally aligned. This fix introduces load32WithUnalignedHalfWords
       
 17799         and branch32WithUnalignedHalfWords functions which contain
       
 17800         naturally aligned memory loads - half word loads - on ARMv5 and below.
       
 17801 
       
 17802         * assembler/MacroAssemblerARM.cpp:
       
 17803         (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords):
       
 17804         * assembler/MacroAssemblerARM.h:
       
 17805         (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords):
       
 17806         (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords):
       
 17807         * assembler/MacroAssemblerARMv7.h:
       
 17808         (JSC::MacroAssemblerARMv7::load32WithUnalignedHalfWords):
       
 17809         (JSC::MacroAssemblerARMv7::branch32):
       
 17810         (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords):
       
 17811         * assembler/MacroAssemblerX86Common.h:
       
 17812         (JSC::MacroAssemblerX86Common::load32WithUnalignedHalfWords):
       
 17813         (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords):
       
 17814         * wtf/Platform.h:
       
 17815         * yarr/RegexJIT.cpp:
       
 17816         (JSC::Yarr::RegexGenerator::generatePatternCharacterPair):
       
 17817 
       
 17818 2009-09-25  Jeremy Orlow  <jorlow@chromium.org>
       
 17819 
       
 17820         This is breaking Chromium try bots, so I'm counting this as a build fix.
       
 17821 
       
 17822         Add more svn:ignore exceptions.  On different platforms, these files are
       
 17823         generated with different case for JavaScriptCore.  Also there are some
       
 17824         wtf project files that get built apparently.
       
 17825 
       
 17826         * JavaScriptCore.gyp: Changed property svn:ignore.
       
 17827 
       
 17828 2009-09-25  Ada Chan  <adachan@apple.com>
       
 17829 
       
 17830         Build fix.
       
 17831 
       
 17832         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 17833         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 17834 
       
 17835 2009-09-25  Geoffrey Garen  <ggaren@apple.com>
       
 17836 
       
 17837         Reviewed by Darin Adler.
       
 17838 
       
 17839         Inlined some object creation code, including lexicalGlobalObject access
       
 17840         https://bugs.webkit.org/show_bug.cgi?id=29750
       
 17841         
       
 17842         SunSpider says 0.5% faster.
       
 17843         
       
 17844         0.8% speedup on bench-alloc-nonretained.js.
       
 17845         2.5% speedup on v8-splay.js.
       
 17846 
       
 17847         * interpreter/CachedCall.h:
       
 17848         (JSC::CachedCall::CachedCall):
       
 17849         * interpreter/CallFrame.h:
       
 17850         (JSC::ExecState::lexicalGlobalObject):
       
 17851         (JSC::ExecState::globalThisValue):
       
 17852         * interpreter/Interpreter.cpp:
       
 17853         (JSC::Interpreter::dumpRegisters):
       
 17854         (JSC::Interpreter::execute):
       
 17855         (JSC::Interpreter::privateExecute):
       
 17856         * jit/JITStubs.cpp:
       
 17857         (JSC::DEFINE_STUB_FUNCTION):
       
 17858         * runtime/FunctionConstructor.cpp:
       
 17859         (JSC::constructFunction):
       
 17860         * runtime/ScopeChain.cpp:
       
 17861         (JSC::ScopeChainNode::print):
       
 17862         * runtime/ScopeChain.h:
       
 17863         (JSC::ScopeChainNode::ScopeChainNode):
       
 17864         (JSC::ScopeChainNode::~ScopeChainNode):
       
 17865         (JSC::ScopeChainNode::push):
       
 17866         (JSC::ScopeChain::ScopeChain):
       
 17867         (JSC::ScopeChain::globalObject): Added a globalObject data member to ScopeChainNode.
       
 17868         Replaced accessor function for globalObject() with data member. Replaced
       
 17869         globalThisObject() accessor with direct access to globalThis, to match.
       
 17870 
       
 17871         * runtime/JSGlobalObject.cpp:
       
 17872         (JSC::JSGlobalObject::init):
       
 17873         * runtime/JSGlobalObject.h: Inlined array and object construction.
       
 17874 
       
 17875 2009-09-25  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 17876 
       
 17877         Reviewed by Gavin Barraclough.
       
 17878 
       
 17879         Add ARM version detection rules for Symbian
       
 17880         https://bugs.webkit.org/show_bug.cgi?id=29715
       
 17881 
       
 17882         * wtf/Platform.h:
       
 17883 
       
 17884 2009-09-24  Xan Lopez  <xlopez@igalia.com>
       
 17885 
       
 17886         Reviewed by Mark "Do It!" Rowe.
       
 17887 
       
 17888         Some GCC versions don't like C++-style comments in preprocessor
       
 17889         directives, change to C-style to shut them up.
       
 17890 
       
 17891         * wtf/Platform.h:
       
 17892 
       
 17893 2009-09-24  Oliver Hunt  <oliver@apple.com>
       
 17894 
       
 17895         Reviewed by Gavin Barraclough.
       
 17896 
       
 17897         Division is needlessly slow in 64-bit
       
 17898         https://bugs.webkit.org/show_bug.cgi?id=29723
       
 17899 
       
 17900         Add codegen for op_div on x86-64
       
 17901 
       
 17902         * jit/JIT.cpp:
       
 17903         (JSC::JIT::privateCompileMainPass):
       
 17904         (JSC::JIT::privateCompileSlowCases):
       
 17905         * jit/JIT.h:
       
 17906         * jit/JITArithmetic.cpp:
       
 17907         (JSC::JIT::compileBinaryArithOpSlowCase):
       
 17908         (JSC::JIT::emit_op_div):
       
 17909         (JSC::JIT::emitSlow_op_div):
       
 17910         * jit/JITInlineMethods.h:
       
 17911         (JSC::JIT::isOperandConstantImmediateDouble):
       
 17912         (JSC::JIT::addressFor):
       
 17913         (JSC::JIT::emitLoadDouble):
       
 17914         (JSC::JIT::emitLoadInt32ToDouble):
       
 17915         (JSC::JIT::emitJumpSlowCaseIfNotImmediateNumber):
       
 17916 
       
 17917 2009-09-24  Jeremy Orlow  <jorlow@chromium.org>
       
 17918 
       
 17919         Reviewed by Dimitri Glazkov.
       
 17920 
       
 17921         Add GYP generated files to svn:ignore
       
 17922         https://bugs.webkit.org/show_bug.cgi?id=29724
       
 17923 
       
 17924         Adding the following files to the svn:ignore list (all in the
       
 17925         JavaScriptCore/JavaScriptCore.gyp directory)
       
 17926 
       
 17927         JavaScriptCore.xcodeproj
       
 17928         JavaScriptCore.sln
       
 17929         JavaScriptCore.vcproj
       
 17930         JavaScriptCore_Debug.rules
       
 17931         JavaScriptCore_Release.rules
       
 17932         JavaScriptCore_Release - no tcmalloc.rules
       
 17933         JavaScriptCore_Purify.rules
       
 17934         JavaScriptCore.mk
       
 17935         JavaScriptCore_Debug_rules.mk
       
 17936         JavaScriptCore_Release_rules.mk
       
 17937         JavaScriptCore_Release - no tcmalloc_rules.mk
       
 17938         JavaScriptCore_Purify_rules.mk
       
 17939         JavaScriptCore.scons
       
 17940         JavaScriptCore_main.scons
       
 17941 
       
 17942         * JavaScriptCore.gyp: Changed property svn:ignore.
       
 17943 
       
 17944 2009-09-24  Yong Li  <yong.li@torchmobile.com>
       
 17945 
       
 17946         Reviewed by Adam Barth.
       
 17947 
       
 17948         Replace platform-dependent code with WTF::currentTime()
       
 17949         https://bugs.webkit.org/show_bug.cgi?id=29148
       
 17950 
       
 17951         * jsc.cpp:
       
 17952         (StopWatch::start):
       
 17953         (StopWatch::stop):
       
 17954         (StopWatch::getElapsedMS):
       
 17955         * runtime/TimeoutChecker.cpp:
       
 17956         (JSC::getCPUTime):
       
 17957 
       
 17958 2009-09-24  Mark Rowe  <mrowe@apple.com>
       
 17959 
       
 17960         Reviewed by Sam Weinig.
       
 17961 
       
 17962         <rdar://problem/7215058> FastMalloc scavenging thread should be named
       
 17963 
       
 17964         * wtf/FastMalloc.cpp:
       
 17965         (WTF::TCMalloc_PageHeap::scavengerThread): Set the thread name.
       
 17966         * wtf/Platform.h: Move the knowledge of whether pthread_setname_np exists to here as HAVE(PTHREAD_SETNAME_NP).
       
 17967         * wtf/ThreadingPthreads.cpp:
       
 17968         (WTF::setThreadNameInternal): Use HAVE(PTHREAD_SETNAME_NP).
       
 17969 
       
 17970 2009-09-24  Geoffrey Garen  <ggaren@apple.com>
       
 17971 
       
 17972         Reviewed by Sam Weinig.
       
 17973 
       
 17974         Renamed clear to removeAll, as suggested by Darin Adler.
       
 17975 
       
 17976         * wtf/HashCountedSet.h:
       
 17977         (WTF::::removeAll):
       
 17978 
       
 17979 2009-09-24  Mark Rowe  <mrowe@apple.com>
       
 17980 
       
 17981         Reviewed by Gavin Barraclough.
       
 17982 
       
 17983         Fix FastMalloc to build with assertions enabled.
       
 17984 
       
 17985         * wtf/FastMalloc.cpp:
       
 17986         (WTF::TCMalloc_Central_FreeList::ReleaseToSpans):
       
 17987         * wtf/TCSpinLock.h:
       
 17988         (TCMalloc_SpinLock::IsHeld):
       
 17989 
       
 17990 2009-09-24  Geoffrey Garen  <ggaren@apple.com>
       
 17991 
       
 17992         Suggested by Darin Adler.
       
 17993 
       
 17994         Removed some unnecessary parameter names.
       
 17995 
       
 17996         * wtf/HashCountedSet.h:
       
 17997 
       
 17998 2009-09-24  Janne Koskinen  <janne.p.koskinen@digia.com>
       
 17999 
       
 18000         Reviewed by Simon Hausmann.
       
 18001 
       
 18002         On Windows JSChar is typedef'ed to wchar_t.
       
 18003 
       
 18004         When building with WINSCW for Symbian we need to do the
       
 18005         same typedef.
       
 18006 
       
 18007         * API/JSStringRef.h:
       
 18008 
       
 18009 2009-09-23  Geoffrey Garen  <ggaren@apple.com>
       
 18010 
       
 18011         A piece of my last patch that I forgot.
       
 18012 
       
 18013         * wtf/HashCountedSet.h:
       
 18014         (WTF::::clear): Added HashCountedSet::clear.
       
 18015 
       
 18016 2009-09-24  Gabor Loki  <loki@inf.u-szeged.hu>
       
 18017 
       
 18018         Reviewed by Gavin Barraclough.
       
 18019 
       
 18020         Avoid __clear_cache built-in function if DISABLE_BUILTIN_CLEAR_CACHE define is set
       
 18021         https://bugs.webkit.org/show_bug.cgi?id=28886
       
 18022 
       
 18023         There are some GCC packages (for example GCC-2006q3 from CodeSourcery)
       
 18024         which contain __clear_cache built-in function only for C while the C++
       
 18025         version of __clear_cache is missing on ARM architectures.
       
 18026 
       
 18027         Fixed a small bug in the inline assembly of cacheFlush function on
       
 18028         ARM_TRADITIONAL.
       
 18029 
       
 18030         * jit/ExecutableAllocator.h:
       
 18031         (JSC::ExecutableAllocator::cacheFlush):
       
 18032 
       
 18033 2009-09-23  Geoffrey Garen  <ggaren@apple.com>
       
 18034 
       
 18035         Reviewed by Sam Weinig.
       
 18036 
       
 18037         Added the ability to swap vectors with inline capacities, so you can
       
 18038         store a vector with inline capacity in a hash table.
       
 18039 
       
 18040         * wtf/Vector.h:
       
 18041         (WTF::swap):
       
 18042         (WTF::VectorBuffer::swap):
       
 18043 
       
 18044 2009-09-23  David Kilzer  <ddkilzer@apple.com>
       
 18045 
       
 18046         Move definition of USE(PLUGIN_HOST_PROCESS) from WebKitPrefix.h to Platform.h
       
 18047 
       
 18048         Reviewed by Mark Rowe.
       
 18049 
       
 18050         * wtf/Platform.h: Define WTF_USE_PLUGIN_HOST_PROCESS to 1 when
       
 18051         building on 64-bit SnowLeopard.  Define to 0 elsewhere.
       
 18052 
       
 18053 2009-09-22  Oliver Hunt  <oliver@apple.com>
       
 18054 
       
 18055         Reviewed by Geoff Garen.
       
 18056 
       
 18057         Code sampling builds are broken.
       
 18058         https://bugs.webkit.org/show_bug.cgi?id=29662
       
 18059 
       
 18060         Fix build.
       
 18061 
       
 18062         * bytecode/EvalCodeCache.h:
       
 18063         (JSC::EvalCodeCache::get):
       
 18064         * bytecode/SamplingTool.cpp:
       
 18065         (JSC::ScriptSampleRecord::sample):
       
 18066         (JSC::SamplingTool::doRun):
       
 18067         (JSC::SamplingTool::notifyOfScope):
       
 18068         (JSC::compareScriptSampleRecords):
       
 18069         (JSC::SamplingTool::dump):
       
 18070         * bytecode/SamplingTool.h:
       
 18071         (JSC::ScriptSampleRecord::ScriptSampleRecord):
       
 18072         (JSC::ScriptSampleRecord::~ScriptSampleRecord):
       
 18073         (JSC::SamplingTool::SamplingTool):
       
 18074         * bytecompiler/BytecodeGenerator.cpp:
       
 18075         (JSC::BytecodeGenerator::BytecodeGenerator):
       
 18076         (JSC::BytecodeGenerator::emitNewFunction):
       
 18077         (JSC::BytecodeGenerator::emitNewFunctionExpression):
       
 18078         * bytecompiler/BytecodeGenerator.h:
       
 18079         (JSC::BytecodeGenerator::makeFunction):
       
 18080         * debugger/Debugger.cpp:
       
 18081         (JSC::evaluateInGlobalCallFrame):
       
 18082         * debugger/DebuggerCallFrame.cpp:
       
 18083         (JSC::DebuggerCallFrame::evaluate):
       
 18084         * parser/Nodes.cpp:
       
 18085         (JSC::ScopeNode::ScopeNode):
       
 18086         * runtime/Completion.cpp:
       
 18087         (JSC::checkSyntax):
       
 18088         (JSC::evaluate):
       
 18089         * runtime/Executable.cpp:
       
 18090         (JSC::FunctionExecutable::fromGlobalCode):
       
 18091         * runtime/Executable.h:
       
 18092         (JSC::ScriptExecutable::ScriptExecutable):
       
 18093         (JSC::EvalExecutable::EvalExecutable):
       
 18094         (JSC::EvalExecutable::create):
       
 18095         (JSC::ProgramExecutable::ProgramExecutable):
       
 18096         (JSC::FunctionExecutable::create):
       
 18097         (JSC::FunctionExecutable::FunctionExecutable):
       
 18098         * runtime/JSGlobalObjectFunctions.cpp:
       
 18099         (JSC::globalFuncEval):
       
 18100 
       
 18101 2009-09-22  Darin Adler  <darin@apple.com>
       
 18102 
       
 18103         Reviewed by Sam Weinig.
       
 18104 
       
 18105         * wtf/Forward.h: Added PassOwnPtr.
       
 18106 
       
 18107 2009-09-22  Yaar Schnitman  <yaar@chromium.org>
       
 18108 
       
 18109         Reviewed by David Levin.
       
 18110 
       
 18111         Ported chromium.org's javascriptcore.gyp for the webkit chromium port.
       
 18112 
       
 18113         https://bugs.webkit.org/show_bug.cgi?id=29617
       
 18114 
       
 18115         * JavaScriptCore.gyp/JavaScriptCore.gyp: Added.
       
 18116 
       
 18117 2009-09-22  Thiago Macieira  <thiago.macieira@nokia.com>
       
 18118 
       
 18119         Reviewed by Simon Hausmann.
       
 18120 
       
 18121         Fix compilation with WINSCW: no varargs macros
       
 18122 
       
 18123         Disable variadic arguments for WINSCW just like we do
       
 18124         for MSVC7.
       
 18125 
       
 18126         * wtf/Assertions.h:
       
 18127 
       
 18128 2009-09-22  Kent Hansen  <khansen@trolltech.com>
       
 18129 
       
 18130         Reviewed by Simon Hausmann.
       
 18131 
       
 18132         Disable variadic macros on MSVC7.
       
 18133 
       
 18134         This was originally added in r26589 but not extended
       
 18135         when LOG_DISABLED/ASSERT_DISABLED was introduced.
       
 18136 
       
 18137         * wtf/Assertions.h:
       
 18138 
       
 18139 2009-09-22  Simon Hausmann  <simon.hausmann@nokia.com>
       
 18140 
       
 18141         Unreviewed build fix for Windows CE < 5
       
 18142 
       
 18143         Define WINCEBASIC to disable the IsDebuggerPresent() code in
       
 18144         wtf/Assertions.cpp.
       
 18145 
       
 18146         * JavaScriptCore.pri:
       
 18147 
       
 18148 2009-09-22  Joerg Bornemann  <joerg.bornemann@nokia.com>
       
 18149 
       
 18150         Reviewed by Simon Hausmann.
       
 18151 
       
 18152         Fix major memory leak in JavaScriptCore RegisterFile on Windows CE
       
 18153 
       
 18154         https://bugs.webkit.org/show_bug.cgi?id=29367
       
 18155 
       
 18156         On Widows CE we must decommit all committed pages before we release
       
 18157         them. See VirtualFree documentation.
       
 18158         Desktop Windows behaves much smoother in this situation.
       
 18159 
       
 18160         * interpreter/RegisterFile.cpp:
       
 18161         (JSC::RegisterFile::~RegisterFile):
       
 18162 
       
 18163 2009-09-21  Greg Bolsinga  <bolsinga@apple.com>
       
 18164 
       
 18165         Reviewed by Simon Fraser & Sam Weinig.
       
 18166 
       
 18167         Add ENABLE(ORIENTATION_EVENTS)
       
 18168         https://bugs.webkit.org/show_bug.cgi?id=29508
       
 18169 
       
 18170         * wtf/Platform.h: Also sort PLATFORM(IPHONE) #defines.
       
 18171 
       
 18172 2009-09-21  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
 18173 
       
 18174         Reviewed by Eric Seidel.
       
 18175 
       
 18176         [Fix] SourceCode's uninitialized member
       
 18177         
       
 18178         Potential source of crashes and bugs was fixed. Default constructor
       
 18179         didn't initialized m_provider member.
       
 18180 
       
 18181         https://bugs.webkit.org/show_bug.cgi?id=29364
       
 18182 
       
 18183         * parser/SourceCode.h:
       
 18184         (JSC::SourceCode::SourceCode):
       
 18185 
       
 18186 2009-09-21  Oliver Hunt  <oliver@apple.com>
       
 18187 
       
 18188         Reviewed by Geoff Garen.
       
 18189 
       
 18190         REGRESSION (r48582): Crash in StructureStubInfo::initPutByIdTransition when reloading trac.webkit.org
       
 18191         https://bugs.webkit.org/show_bug.cgi?id=29599
       
 18192 
       
 18193         It is unsafe to attempt to cache new property transitions on
       
 18194         dictionaries of any type.
       
 18195 
       
 18196         * interpreter/Interpreter.cpp:
       
 18197         (JSC::Interpreter::tryCachePutByID):
       
 18198         * jit/JITStubs.cpp:
       
 18199         (JSC::JITThunks::tryCachePutByID):
       
 18200 
       
 18201 2009-09-21  Oliver Hunt  <oliver@apple.com>
       
 18202 
       
 18203         RS=Maciej Stachowiak.
       
 18204 
       
 18205         Re-land SNES fix with corrected assertion.
       
 18206 
       
 18207         * interpreter/Interpreter.cpp:
       
 18208         (JSC::Interpreter::resolveGlobal):
       
 18209         (JSC::Interpreter::tryCachePutByID):
       
 18210         (JSC::Interpreter::tryCacheGetByID):
       
 18211         * jit/JITStubs.cpp:
       
 18212         (JSC::JITThunks::tryCachePutByID):
       
 18213         (JSC::JITThunks::tryCacheGetByID):
       
 18214         (JSC::DEFINE_STUB_FUNCTION):
       
 18215         * runtime/BatchedTransitionOptimizer.h:
       
 18216         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
       
 18217         * runtime/JSObject.cpp:
       
 18218         (JSC::JSObject::removeDirect):
       
 18219         * runtime/Structure.cpp:
       
 18220         (JSC::Structure::Structure):
       
 18221         (JSC::Structure::getEnumerablePropertyNames):
       
 18222         (JSC::Structure::despecifyDictionaryFunction):
       
 18223         (JSC::Structure::addPropertyTransitionToExistingStructure):
       
 18224         (JSC::Structure::addPropertyTransition):
       
 18225         (JSC::Structure::removePropertyTransition):
       
 18226         (JSC::Structure::toDictionaryTransition):
       
 18227         (JSC::Structure::toCacheableDictionaryTransition):
       
 18228         (JSC::Structure::toUncacheableDictionaryTransition):
       
 18229         (JSC::Structure::fromDictionaryTransition):
       
 18230         (JSC::Structure::removePropertyWithoutTransition):
       
 18231         * runtime/Structure.h:
       
 18232         (JSC::Structure::isDictionary):
       
 18233         (JSC::Structure::isUncacheableDictionary):
       
 18234         (JSC::Structure::):
       
 18235         * runtime/StructureChain.cpp:
       
 18236         (JSC::StructureChain::isCacheable):
       
 18237 
       
 18238 2009-09-21  Adam Roben  <aroben@apple.com>
       
 18239 
       
 18240         Revert r48573, as it caused many assertion failures
       
 18241 
       
 18242         * interpreter/Interpreter.cpp:
       
 18243         * jit/JITStubs.cpp:
       
 18244         * runtime/BatchedTransitionOptimizer.h:
       
 18245         * runtime/JSObject.cpp:
       
 18246         * runtime/Structure.cpp:
       
 18247         * runtime/Structure.h:
       
 18248         * runtime/StructureChain.cpp:
       
 18249 
       
 18250 2009-09-21  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
       
 18251 
       
 18252         Unreviewed make dist build fix. Missing files.
       
 18253 
       
 18254         * GNUmakefile.am:
       
 18255 
       
 18256 2009-09-19  Gavin Barraclough  <barraclough@apple.com>
       
 18257 
       
 18258         Reviewed by Sam 'Cabin Boy' Weinig.
       
 18259 
       
 18260         Fix stack alignment with ARM THUMB2 JIT.
       
 18261         https://bugs.webkit.org/show_bug.cgi?id=29526
       
 18262         
       
 18263         Stack is currently being decremented by 0x3c, bump this to 0x40 to make this a
       
 18264         multiple of 16 bytes.
       
 18265 
       
 18266         * jit/JITStubs.cpp:
       
 18267         (JSC::JITThunks::JITThunks):
       
 18268         * jit/JITStubs.h:
       
 18269 
       
 18270 2009-09-20  Oliver Hunt  <oliver@apple.com>
       
 18271 
       
 18272         Reviewed by Maciej Stachowiak.
       
 18273 
       
 18274         SNES is too slow
       
 18275         https://bugs.webkit.org/show_bug.cgi?id=29534
       
 18276 
       
 18277         The problem was that the emulator used multiple classes with
       
 18278         more properties than our dictionary cutoff allowed, this resulted
       
 18279         in more or less all critical logic inside the emulator requiring
       
 18280         uncached property access.
       
 18281 
       
 18282         Rather than simply bumping the dictionary cutoff, this patch
       
 18283         recognises that there are two ways to create a "dictionary"
       
 18284         structure.  Either by adding a large number of properties, or
       
 18285         by removing a property.  In the case of adding properties we
       
 18286         know all the existing properties will maintain their existing
       
 18287         offsets, so we could cache access to those properties, if we
       
 18288         know they won't be removed.
       
 18289 
       
 18290         To make this possible, this patch adds the logic required to
       
 18291         distinguish a dictionary created by addition from one created
       
 18292         by removal.  With this logic in place we can now cache access
       
 18293         to objects with large numbers of properties.
       
 18294 
       
 18295         SNES performance improved by more than 6x.
       
 18296 
       
 18297         * interpreter/Interpreter.cpp:
       
 18298         (JSC::Interpreter::resolveGlobal):
       
 18299         (JSC::Interpreter::tryCachePutByID):
       
 18300         (JSC::Interpreter::tryCacheGetByID):
       
 18301         * jit/JITStubs.cpp:
       
 18302         (JSC::JITThunks::tryCachePutByID):
       
 18303         (JSC::JITThunks::tryCacheGetByID):
       
 18304         (JSC::DEFINE_STUB_FUNCTION):
       
 18305         * runtime/BatchedTransitionOptimizer.h:
       
 18306         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
       
 18307         * runtime/JSObject.cpp:
       
 18308         (JSC::JSObject::removeDirect):
       
 18309         * runtime/Structure.cpp:
       
 18310         (JSC::Structure::Structure):
       
 18311         (JSC::Structure::getEnumerablePropertyNames):
       
 18312         (JSC::Structure::despecifyDictionaryFunction):
       
 18313         (JSC::Structure::addPropertyTransitionToExistingStructure):
       
 18314         (JSC::Structure::addPropertyTransition):
       
 18315         (JSC::Structure::removePropertyTransition):
       
 18316         (JSC::Structure::toDictionaryTransition):
       
 18317         (JSC::Structure::toCacheableDictionaryTransition):
       
 18318         (JSC::Structure::toUncacheableDictionaryTransition):
       
 18319         (JSC::Structure::fromDictionaryTransition):
       
 18320         (JSC::Structure::removePropertyWithoutTransition):
       
 18321         * runtime/Structure.h:
       
 18322         (JSC::Structure::isDictionary):
       
 18323         (JSC::Structure::isUncacheableDictionary):
       
 18324         (JSC::Structure::):
       
 18325         * runtime/StructureChain.cpp:
       
 18326         (JSC::StructureChain::isCacheable):
       
 18327 
       
 18328 2009-09-19  Oliver Hunt  <oliver@apple.com>
       
 18329 
       
 18330         Reviewed by Maciej Stachowiak.
       
 18331 
       
 18332         Implement ES5 Object.create function
       
 18333         https://bugs.webkit.org/show_bug.cgi?id=29524
       
 18334 
       
 18335         Implement Object.create.  Very simple patch, effectively Object.defineProperties
       
 18336         only creating the target object itself.
       
 18337 
       
 18338         * runtime/CommonIdentifiers.h:
       
 18339         * runtime/ObjectConstructor.cpp:
       
 18340         (JSC::ObjectConstructor::ObjectConstructor):
       
 18341         (JSC::objectConstructorCreate):
       
 18342 
       
 18343 2009-09-19  Dan Bernstein  <mitz@apple.com>
       
 18344 
       
 18345         Fix clean debug builds.
       
 18346 
       
 18347         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 18348 
       
 18349 2009-09-19  Joerg Bornemann  <joerg.bornemann@nokia.com>
       
 18350 
       
 18351         Reviewed by George Staikos.
       
 18352 
       
 18353         QtWebKit Windows CE compile fix
       
 18354 
       
 18355         https://bugs.webkit.org/show_bug.cgi?id=29379
       
 18356 
       
 18357         There is no _aligned_alloc or _aligned_free on Windows CE.
       
 18358         We just use the Windows code that was there before and use VirtualAlloc.
       
 18359         But that also means that the BLOCK_SIZE must be 64K as this function
       
 18360         allocates on 64K boundaries.
       
 18361 
       
 18362         * runtime/Collector.cpp:
       
 18363         (JSC::Heap::allocateBlock):
       
 18364         (JSC::Heap::freeBlock):
       
 18365         * runtime/Collector.h:
       
 18366 
       
 18367 2009-09-19  Oliver Hunt  <oliver@apple.com>
       
 18368 
       
 18369         Reviewed by Sam Weinig.
       
 18370 
       
 18371         Implement ES5 Object.defineProperties function
       
 18372         https://bugs.webkit.org/show_bug.cgi?id=29522
       
 18373 
       
 18374         Implement Object.defineProperties.  Fairly simple patch, simply makes use of
       
 18375         existing functionality used for defineProperty.
       
 18376 
       
 18377         * runtime/CommonIdentifiers.h:
       
 18378         * runtime/ObjectConstructor.cpp:
       
 18379         (JSC::ObjectConstructor::ObjectConstructor):
       
 18380         (JSC::defineProperties):
       
 18381         (JSC::objectConstructorDefineProperties):
       
 18382 
       
 18383 2009-09-19  Oliver Hunt  <oliver@apple.com>
       
 18384 
       
 18385         Reviewed by NOBODY (Build fix).
       
 18386 
       
 18387         Windows build fix part2
       
 18388 
       
 18389         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 18390         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 18391 
       
 18392 2009-09-19  Oliver Hunt  <oliver@apple.com>
       
 18393 
       
 18394         Reviewed by NOBODY (Buildfix).
       
 18395 
       
 18396         Windows build fix part 1.
       
 18397 
       
 18398         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 18399         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 18400 
       
 18401 2009-09-18  Oliver Hunt  <oliver@apple.com>
       
 18402 
       
 18403         Reviewed by Geoff Garen.
       
 18404 
       
 18405         Implement ES5 Object.defineProperty function
       
 18406         https://bugs.webkit.org/show_bug.cgi?id=29503
       
 18407 
       
 18408         Implement Object.defineProperty.  This requires adding the API to
       
 18409         ObjectConstructor, along with a helper function that implements the
       
 18410         ES5 internal [[ToPropertyDescriptor]] function.  It then adds
       
 18411         JSObject::defineOwnProperty that implements the appropriate ES5 semantics.
       
 18412         Currently defineOwnProperty uses a delete followed by a put to redefine
       
 18413         attributes of a property, clearly this is less efficient than it could be
       
 18414         but we can improve this if it needs to be possible in future.
       
 18415 
       
 18416         * JavaScriptCore.exp:
       
 18417         * debugger/DebuggerActivation.cpp:
       
 18418         (JSC::DebuggerActivation::defineGetter):
       
 18419         (JSC::DebuggerActivation::defineSetter):
       
 18420         * debugger/DebuggerActivation.h:
       
 18421         * interpreter/Interpreter.cpp:
       
 18422         (JSC::Interpreter::privateExecute):
       
 18423         * jit/JITStubs.cpp:
       
 18424           Update defineGetter/Setter calls
       
 18425         * runtime/CommonIdentifiers.h:
       
 18426         * runtime/JSArray.cpp:
       
 18427         (JSC::JSArray::getOwnPropertySlot):
       
 18428         * runtime/JSGlobalObject.cpp:
       
 18429         (JSC::JSGlobalObject::defineGetter):
       
 18430         (JSC::JSGlobalObject::defineSetter):
       
 18431         * runtime/JSGlobalObject.h:
       
 18432         * runtime/JSObject.cpp:
       
 18433         (JSC::JSObject::defineGetter):
       
 18434         (JSC::JSObject::defineSetter):
       
 18435         (JSC::putDescriptor):
       
 18436         (JSC::JSObject::defineOwnProperty):
       
 18437         * runtime/JSObject.h:
       
 18438         * runtime/ObjectConstructor.cpp:
       
 18439         (JSC::ObjectConstructor::ObjectConstructor):
       
 18440         (JSC::objectConstructorGetOwnPropertyDescriptor):
       
 18441         (JSC::toPropertyDescriptor):
       
 18442         (JSC::objectConstructorDefineProperty):
       
 18443         * runtime/ObjectPrototype.cpp:
       
 18444         (JSC::objectProtoFuncDefineGetter):
       
 18445         (JSC::objectProtoFuncDefineSetter):
       
 18446         * runtime/PropertyDescriptor.cpp:
       
 18447         (JSC::PropertyDescriptor::writable):
       
 18448         (JSC::PropertyDescriptor::enumerable):
       
 18449         (JSC::PropertyDescriptor::configurable):
       
 18450         (JSC::PropertyDescriptor::isDataDescriptor):
       
 18451         (JSC::PropertyDescriptor::isGenericDescriptor):
       
 18452         (JSC::PropertyDescriptor::isAccessorDescriptor):
       
 18453         (JSC::PropertyDescriptor::getter):
       
 18454         (JSC::PropertyDescriptor::setter):
       
 18455         (JSC::PropertyDescriptor::setDescriptor):
       
 18456         (JSC::PropertyDescriptor::setAccessorDescriptor):
       
 18457         (JSC::PropertyDescriptor::setWritable):
       
 18458         (JSC::PropertyDescriptor::setEnumerable):
       
 18459         (JSC::PropertyDescriptor::setConfigurable):
       
 18460         (JSC::PropertyDescriptor::setSetter):
       
 18461         (JSC::PropertyDescriptor::setGetter):
       
 18462         (JSC::PropertyDescriptor::equalTo):
       
 18463         (JSC::PropertyDescriptor::attributesEqual):
       
 18464         (JSC::PropertyDescriptor::attributesWithOverride):
       
 18465         * runtime/PropertyDescriptor.h:
       
 18466         (JSC::PropertyDescriptor::PropertyDescriptor):
       
 18467         (JSC::PropertyDescriptor::value):
       
 18468         (JSC::PropertyDescriptor::setValue):
       
 18469         (JSC::PropertyDescriptor::isEmpty):
       
 18470         (JSC::PropertyDescriptor::writablePresent):
       
 18471         (JSC::PropertyDescriptor::enumerablePresent):
       
 18472         (JSC::PropertyDescriptor::configurablePresent):
       
 18473         (JSC::PropertyDescriptor::setterPresent):
       
 18474         (JSC::PropertyDescriptor::getterPresent):
       
 18475         (JSC::PropertyDescriptor::operator==):
       
 18476         (JSC::PropertyDescriptor::):
       
 18477 
       
 18478 2009-09-18  Gabor Loki  <loki@inf.u-szeged.hu>
       
 18479 
       
 18480         Reviewed by Gavin Barraclough.
       
 18481 
       
 18482         Build fix to enable ARM_THUMB2 on Linux
       
 18483         https://bugs.webkit.org/show_bug.cgi?id=
       
 18484 
       
 18485         * jit/ExecutableAllocator.h:
       
 18486         (JSC::ExecutableAllocator::cacheFlush):
       
 18487         * jit/JITStubs.cpp:
       
 18488         * wtf/Platform.h:
       
 18489 
       
 18490 2009-09-18  Gabor Loki  <loki@inf.u-szeged.hu>
       
 18491 
       
 18492         Reviewed by Gavin Barraclough.
       
 18493 
       
 18494         Defines two pseudo-platforms for ARM and Thumb-2 instruction set.
       
 18495         https://bugs.webkit.org/show_bug.cgi?id=29122
       
 18496 
       
 18497         Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2
       
 18498         macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used
       
 18499         when Thumb-2 instruction set is the required target. The
       
 18500         PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In
       
 18501         case where the code is common the PLATFORM(ARM) have to be used.
       
 18502 
       
 18503         * assembler/ARMAssembler.cpp:
       
 18504         * assembler/ARMAssembler.h:
       
 18505         * assembler/ARMv7Assembler.h:
       
 18506         * assembler/MacroAssembler.h:
       
 18507         * assembler/MacroAssemblerARM.cpp:
       
 18508         * assembler/MacroAssemblerARM.h:
       
 18509         * assembler/MacroAssemblerCodeRef.h:
       
 18510         (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
       
 18511         * jit/ExecutableAllocator.h:
       
 18512         * jit/JIT.h:
       
 18513         * jit/JITInlineMethods.h:
       
 18514         (JSC::JIT::beginUninterruptedSequence):
       
 18515         (JSC::JIT::preserveReturnAddressAfterCall):
       
 18516         (JSC::JIT::restoreReturnAddressBeforeReturn):
       
 18517         (JSC::JIT::restoreArgumentReference):
       
 18518         (JSC::JIT::restoreArgumentReferenceForTrampoline):
       
 18519         * jit/JITOpcodes.cpp:
       
 18520         * jit/JITStubs.cpp:
       
 18521         (JSC::JITThunks::JITThunks):
       
 18522         * jit/JITStubs.h:
       
 18523         * wtf/Platform.h:
       
 18524         * yarr/RegexJIT.cpp:
       
 18525         (JSC::Yarr::RegexGenerator::generateEnter):
       
 18526 
       
 18527 2009-09-18  Joerg Bornemann  <joerg.bornemann@nokia.com>
       
 18528 
       
 18529         Reviewed by Simon Hausmann.
       
 18530 
       
 18531         Fix the Qt/Windows CE build.
       
 18532 
       
 18533         * JavaScriptCore.pri: Build the ce_time.cpp functions from
       
 18534         within Qt externally.
       
 18535         * wtf/DateMath.cpp: Removed unnecessary Qt #ifdef, for the
       
 18536         Qt build these functions are no external, too.
       
 18537 
       
 18538 2009-09-17  Janne Koskinen  <janne.p.koskinen@digia.com>
       
 18539 
       
 18540         Reviewed by Simon Hausmann.
       
 18541 
       
 18542         Symbian/WINSCW build fox.
       
 18543 
       
 18544         Repeat Q_OS_WIN wchar_t hack for WINSCW, similar to
       
 18545         revision 24774.
       
 18546 
       
 18547         WINSCW defines wchar_t, thus UChar has to be wchar_t
       
 18548 
       
 18549         * wtf/unicode/qt4/UnicodeQt4.h:
       
 18550 
       
 18551 2009-09-17  Janne Koskinen  <janne.p.koskinen@digia.com>
       
 18552 
       
 18553         Reviewed by Simon Hausmann.
       
 18554 
       
 18555         Symbian/WINSCW build fix.
       
 18556 
       
 18557         https://bugs.webkit.org/show_bug.cgi?id=29186
       
 18558 
       
 18559         WINSCW Template specialisation name in declaration must the be the same as in implementation.
       
 18560 
       
 18561         * runtime/LiteralParser.h:
       
 18562 
       
 18563 2009-09-15  Norbert Leser  <norbert.leser@nokia.com>
       
 18564 
       
 18565         Reviewed by Darin Adler.
       
 18566 
       
 18567         https://bugs.webkit.org/show_bug.cgi?id=27060
       
 18568 
       
 18569         Symbian compiler for emulator target (WINSCW) fails with
       
 18570         "illegal operand" for m_attributesInPrevious in structure.ccp
       
 18571         (when calling make_pair functions).
       
 18572         This error is apparently due to the compiler not properly
       
 18573         resolving the unsigned type of the declared bitfield.
       
 18574 
       
 18575         Initial patch explicitly casted m_attributesInPrevious
       
 18576         to unsigned, but since bitfield optimization is not critical for
       
 18577         the emulator target, this conditional change in header file
       
 18578         appears to be least intrusive.
       
 18579 
       
 18580         * runtime/Structure.h:
       
 18581 
       
 18582 2009-09-16  Gabor Loki  <loki@inf.u-szeged.hu>
       
 18583 
       
 18584         Reviewed by Darin Adler.
       
 18585 
       
 18586         Fix GCC warnings on ARM_THUMB2 platform
       
 18587 
       
 18588         * assembler/ARMv7Assembler.h:
       
 18589         (JSC::ARMThumbImmediate::countLeadingZerosPartial):
       
 18590         * assembler/MacroAssemblerARMv7.h:
       
 18591         (JSC::MacroAssemblerARMv7::branchTruncateDoubleToInt32):
       
 18592         (JSC::MacroAssemblerARMv7::moveFixedWidthEncoding):
       
 18593 
       
 18594 2009-09-16  Greg Bolsinga  <bolsinga@apple.com>
       
 18595 
       
 18596         Add ENABLE(INSPECTOR)
       
 18597         https://bugs.webkit.org/show_bug.cgi?id=29260
       
 18598 
       
 18599         Reviewed by David Kilzer.
       
 18600 
       
 18601         * wtf/Platform.h:
       
 18602 
       
 18603 2009-09-16  Greg Bolsinga  <bolsinga@apple.com>
       
 18604 
       
 18605         Add ENABLE(CONTEXT_MENUS)
       
 18606         https://bugs.webkit.org/show_bug.cgi?id=29225
       
 18607 
       
 18608         Reviewed by David Kilzer.
       
 18609 
       
 18610         * wtf/Platform.h:
       
 18611 
       
 18612 2009-09-16  Benjamin C Meyer  <benjamin.meyer@torchmobile.com>
       
 18613 
       
 18614         Reviewed by Eric Seidel.
       
 18615 
       
 18616         The webkit stdint and stdbool headers exists because
       
 18617         the compiler MSVC doesn't include them.  The check
       
 18618         should not check for PLATFORM(WIN_OS) but for MSVC.
       
 18619 
       
 18620         * os-win32/stdbool.h:
       
 18621         * os-win32/stdint.h:
       
 18622 
       
 18623 2009-09-16  Greg Bolsinga  <bolsinga@apple.com>
       
 18624 
       
 18625         Add ENABLE(DRAG_SUPPORT)
       
 18626         https://bugs.webkit.org/show_bug.cgi?id=29233
       
 18627 
       
 18628         Reviewed by David Kilzer.
       
 18629 
       
 18630         * wtf/Platform.h:
       
 18631 
       
 18632 2009-09-16  Kevin Ollivier  <kevino@theolliviers.com>
       
 18633 
       
 18634         waf build fix after flag was moved to correct place.
       
 18635 
       
 18636         * wscript:
       
 18637 
       
 18638 2009-09-16  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
       
 18639 
       
 18640         Reviewed by Simon Hausmann.
       
 18641 
       
 18642         [Qt] Build fix for 64-bit Qt on Mac OS X
       
 18643 
       
 18644         * wtf/Platform.h: Use JSVALUE64 on DARWIN, not only on MAC
       
 18645 
       
 18646 2009-09-16  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
       
 18647 
       
 18648         Reviewed by Simon Hausmann.
       
 18649 
       
 18650         [Qt] Fix wtf/ThreadSpecific.h under Qt to free thread local objects.
       
 18651         https://bugs.webkit.org/show_bug.cgi?id=29295
       
 18652 
       
 18653         This is an important fix when JavaScript workers are in use, since
       
 18654         unfreed ThreadGlobalDatas leak a big amount of memory (50-100k each).
       
 18655         QThreadStorage calls the destructor of a given object, which is the
       
 18656         ThreadSpecific::Data. Unlike pthread, Qt is object oriented, and does
       
 18657         not support the calling of a static utility function when the thread
       
 18658         is about to close. In this patch we call the ThreadSpecific::destroy()
       
 18659         utility function from the destructor of ThreadSpecific::Data. Moreover,
       
 18660         since Qt resets all thread local values to 0 before the calling of the
       
 18661         appropriate destructors, we set back the pointer to its original value.
       
 18662         This is necessary because the get() method of the ThreadSpecific
       
 18663         object may be called during the exuction of the destructor.
       
 18664 
       
 18665         * wtf/ThreadSpecific.h:
       
 18666         (WTF::ThreadSpecific::Data::~Data):
       
 18667         (WTF::::~ThreadSpecific):
       
 18668         (WTF::::set):
       
 18669         (WTF::::destroy):
       
 18670 
       
 18671 2009-09-10  Oliver Hunt  <oliver@apple.com>
       
 18672 
       
 18673         Reviewed by Geoff Garen.
       
 18674 
       
 18675         Allow anonymous storage inside JSObject
       
 18676         https://bugs.webkit.org/show_bug.cgi?id=29168
       
 18677 
       
 18678         Add the concept of anonymous slots to Structures so that it is
       
 18679         possible to store references to values that need marking in the
       
 18680         standard JSObject storage buffer.  This allows us to reduce the
       
 18681         malloc overhead of some objects (by allowing them to store JS
       
 18682         values in the inline storage of the object) and reduce the 
       
 18683         dependence of custom mark functions (if all an objects children
       
 18684         are in the standard object property storage there's no need to
       
 18685         mark them manually).
       
 18686 
       
 18687         * JavaScriptCore.exp:
       
 18688         * runtime/JSObject.h:
       
 18689         (JSC::JSObject::putAnonymousValue):
       
 18690         (JSC::JSObject::getAnonymousValue):
       
 18691         (JSC::JSObject::addAnonymousSlots):
       
 18692         * runtime/JSWrapperObject.h:
       
 18693         (JSC::JSWrapperObject::createStructure):
       
 18694         (JSC::JSWrapperObject::JSWrapperObject):
       
 18695         (JSC::JSWrapperObject::setInternalValue):
       
 18696         * runtime/PropertyMapHashTable.h:
       
 18697         * runtime/Structure.cpp:
       
 18698         (JSC::Structure::~Structure):
       
 18699         (JSC::Structure::materializePropertyMap):
       
 18700         (JSC::Structure::addAnonymousSlotsTransition):
       
 18701         (JSC::Structure::copyPropertyTable):
       
 18702         (JSC::Structure::put):
       
 18703         (JSC::Structure::rehashPropertyMapHashTable):
       
 18704         * runtime/Structure.h:
       
 18705         (JSC::Structure::propertyStorageSize):
       
 18706         (JSC::StructureTransitionTable::reifySingleTransition):
       
 18707         * runtime/StructureTransitionTable.h:
       
 18708         (JSC::StructureTransitionTable::TransitionTable::addSlotTransition):
       
 18709         (JSC::StructureTransitionTable::TransitionTable::removeSlotTransition):
       
 18710         (JSC::StructureTransitionTable::TransitionTable::getSlotTransition):
       
 18711         (JSC::StructureTransitionTable::getAnonymousSlotTransition):
       
 18712         (JSC::StructureTransitionTable::addAnonymousSlotTransition):
       
 18713         (JSC::StructureTransitionTable::removeAnonymousSlotTransition):
       
 18714 
       
 18715 2009-09-15  Alex Milowski  <alex@milowski.com>
       
 18716 
       
 18717         Reviewed by Tor Arne Vestbø.
       
 18718 
       
 18719         Added the ENABLE_MATHML define to the features
       
 18720 
       
 18721         * Configurations/FeatureDefines.xcconfig:
       
 18722 
       
 18723 2009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
       
 18724 
       
 18725         Reviewed by Tor Arne Vestbø.
       
 18726 
       
 18727         [Qt] Build fix for windows.
       
 18728 
       
 18729         After http://trac.webkit.org/changeset/47795 the MinGW build broke,
       
 18730         because MinGW has __mingw_aligned_malloc instead of _aligned_malloc.
       
 18731 
       
 18732         * runtime/Collector.cpp:
       
 18733         (JSC::Heap::allocateBlock): MinGW case added.
       
 18734         (JSC::Heap::freeBlock): MinGW case added.
       
 18735 
       
 18736 2009-09-15  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
       
 18737 
       
 18738         Reviewed by Tor Arne Vestbø.
       
 18739 
       
 18740         [Qt] Build fix for Windows/MinGW
       
 18741 
       
 18742         https://bugs.webkit.org/show_bug.cgi?id=29268
       
 18743 
       
 18744         * wtf/Platform.h: JSVALUE32_64 temporarily disabled on PLATFORM(WIN_OS) with COMPILER(MINGW)
       
 18745 
       
 18746 2009-09-14  Gabor Loki  <loki@inf.u-szeged.hu>
       
 18747 
       
 18748         Reviewed by Gavin Barraclough.
       
 18749 
       
 18750         Detect VFP at runtime in generic ARM port on Linux platform.
       
 18751         https://bugs.webkit.org/show_bug.cgi?id=29076
       
 18752 
       
 18753         * JavaScriptCore.pri:
       
 18754         * assembler/MacroAssemblerARM.cpp: Added.
       
 18755         (JSC::isVFPPresent):
       
 18756         * assembler/MacroAssemblerARM.h:
       
 18757         (JSC::MacroAssemblerARM::supportsFloatingPoint):
       
 18758 
       
 18759 2009-09-14  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
       
 18760 
       
 18761         Reviewed by Tor Arne Vestbø.
       
 18762 
       
 18763         [Qt] Build fix for windows build.
       
 18764 
       
 18765         * JavaScriptCore.pri: Correct a logic error.
       
 18766         * pcre/dftables: Add missing paranthesis for tmpdir function.
       
 18767 
       
 18768 2009-09-12  Oliver Hunt  <oliver@apple.com>
       
 18769 
       
 18770         Reviewed by NOBODY (Build fix).
       
 18771 
       
 18772         Build fix for windows exports (again).
       
 18773 
       
 18774         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 18775         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 18776 
       
 18777 2009-09-12  Oliver Hunt  <oliver@apple.com>
       
 18778 
       
 18779         Reviewed by NOBODY (Build fix).
       
 18780 
       
 18781         Build fix for windows exports.
       
 18782 
       
 18783         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 18784         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 18785 
       
 18786 2009-09-12  Oliver Hunt  <oliver@apple.com>
       
 18787 
       
 18788         Reviewed by NOBODY (Build fix).
       
 18789 
       
 18790         Correct fix for non-allinonefile builds
       
 18791 
       
 18792         * runtime/ObjectConstructor.cpp:
       
 18793 
       
 18794 2009-09-12  Oliver Hunt  <oliver@apple.com>
       
 18795 
       
 18796         Reviewed by NOBODY (Build fix).
       
 18797 
       
 18798         Fix non-allinonefile builds
       
 18799 
       
 18800         * runtime/ObjectConstructor.cpp:
       
 18801 
       
 18802 2009-09-12  Oliver Hunt  <oliver@apple.com>
       
 18803 
       
 18804         Reviewed by Maciej Stachowiak.
       
 18805 
       
 18806         [ES5] Implement Object.keys
       
 18807         https://bugs.webkit.org/show_bug.cgi?id=29170
       
 18808 
       
 18809         This patch basically requires two separate steps, the first is to split getPropertyNames
       
 18810         into two functions -- getOwnPropertyNames and getPropertyNames, basically making them behave
       
 18811         in the same way as getOwnPropertySlot and getPropertySlot.  In essence getOwnPropertyNames
       
 18812         produces the list of properties on an object excluding its prototype chain and getPropertyNames
       
 18813         just iterates the the object and its prototype chain calling getOwnPropertyNames at each level.
       
 18814 
       
 18815         * API/JSCallbackObject.h:
       
 18816         * API/JSCallbackObjectFunctions.h:
       
 18817         (JSC::::getOwnPropertyNames):
       
 18818         * JavaScriptCore.exp:
       
 18819         * debugger/DebuggerActivation.cpp:
       
 18820         (JSC::DebuggerActivation::getOwnPropertyNames):
       
 18821         * debugger/DebuggerActivation.h:
       
 18822         * runtime/CommonIdentifiers.h:
       
 18823         * runtime/JSArray.cpp:
       
 18824         (JSC::JSArray::getOwnPropertyNames):
       
 18825         * runtime/JSArray.h:
       
 18826         * runtime/JSByteArray.cpp:
       
 18827         (JSC::JSByteArray::getOwnPropertyNames):
       
 18828         * runtime/JSByteArray.h:
       
 18829         * runtime/JSNotAnObject.cpp:
       
 18830         (JSC::JSNotAnObject::getOwnPropertyNames):
       
 18831         * runtime/JSNotAnObject.h:
       
 18832         * runtime/JSObject.cpp:
       
 18833         (JSC::JSObject::getOwnPropertyNames):
       
 18834         * runtime/JSObject.h:
       
 18835         * runtime/JSVariableObject.cpp:
       
 18836         (JSC::JSVariableObject::getOwnPropertyNames):
       
 18837         * runtime/JSVariableObject.h:
       
 18838         * runtime/ObjectConstructor.cpp:
       
 18839         (JSC::ObjectConstructor::ObjectConstructor):
       
 18840         (JSC::objectConstructorKeys):
       
 18841         * runtime/RegExpMatchesArray.h:
       
 18842         (JSC::RegExpMatchesArray::getOwnPropertyNames):
       
 18843         * runtime/StringObject.cpp:
       
 18844         (JSC::StringObject::getOwnPropertyNames):
       
 18845         * runtime/StringObject.h:
       
 18846         * runtime/Structure.cpp:
       
 18847         (JSC::Structure::getOwnEnumerablePropertyNames):
       
 18848         (JSC::Structure::getEnumerablePropertyNames):
       
 18849         * runtime/Structure.h:
       
 18850 
       
 18851 2009-09-11  Oliver Hunt  <oliver@apple.com>
       
 18852 
       
 18853         Reviewed by Sam Weinig.
       
 18854 
       
 18855         getPropertyNames caching is invalid when the prototype chain contains objects with custom getPropertyNames
       
 18856         https://bugs.webkit.org/show_bug.cgi?id=29214
       
 18857 
       
 18858         Add a flag to TypeInfo to indicate whether a type overrides getPropertyNames.
       
 18859         This flag is used to make sure that caching of the property name data is safe.
       
 18860 
       
 18861         * API/JSCallbackConstructor.h:
       
 18862         (JSC::JSCallbackConstructor::createStructure):
       
 18863         * debugger/DebuggerActivation.h:
       
 18864         (JSC::DebuggerActivation::createStructure):
       
 18865         * runtime/BooleanObject.h:
       
 18866         (JSC::BooleanObject::createStructure):
       
 18867         * runtime/DatePrototype.h:
       
 18868         (JSC::DatePrototype::createStructure):
       
 18869         * runtime/FunctionPrototype.h:
       
 18870         (JSC::FunctionPrototype::createStructure):
       
 18871         * runtime/JSONObject.h:
       
 18872         (JSC::JSONObject::createStructure):
       
 18873         * runtime/JSObject.h:
       
 18874         (JSC::JSObject::createStructure):
       
 18875         * runtime/JSTypeInfo.h:
       
 18876         (JSC::TypeInfo::hasDefaultGetPropertyNames):
       
 18877         * runtime/JSVariableObject.h:
       
 18878         (JSC::JSVariableObject::createStructure):
       
 18879         * runtime/JSWrapperObject.h:
       
 18880         (JSC::JSWrapperObject::createStructure):
       
 18881         * runtime/MathObject.h:
       
 18882         (JSC::MathObject::createStructure):
       
 18883         * runtime/NumberConstructor.h:
       
 18884         (JSC::NumberConstructor::createStructure):
       
 18885         * runtime/NumberObject.h:
       
 18886         (JSC::NumberObject::createStructure):
       
 18887         * runtime/RegExpConstructor.h:
       
 18888         (JSC::RegExpConstructor::createStructure):
       
 18889         * runtime/RegExpObject.h:
       
 18890         (JSC::RegExpObject::createStructure):
       
 18891         * runtime/StructureChain.cpp:
       
 18892         (JSC::StructureChain::isCacheable):
       
 18893 
       
 18894 2009-09-11  Alexey Proskuryakov  <ap@webkit.org>
       
 18895 
       
 18896         Reviewed by Geoff Garen.
       
 18897 
       
 18898         https://bugs.webkit.org/show_bug.cgi?id=29207
       
 18899         Add checks for using WebCore JS context on secondary threads
       
 18900 
       
 18901         * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData):
       
 18902         * runtime/JSGlobalData.h:
       
 18903         Added a new mainThreadOnly flag that WebCore would set.
       
 18904 
       
 18905         * runtime/Collector.cpp: (JSC::Heap::registerThread): JSC API methods always call this,
       
 18906         so this is a good place to check that the API isn't used form a wrong thread.
       
 18907 
       
 18908 2009-09-11  Jocelyn Turcotte  <jocelyn.turcotte@nokia.com>
       
 18909 
       
 18910         Reviewed by Simon Hausmann.
       
 18911 
       
 18912         Compiling JavaScriptCore on sparc 64 with gcc fails.
       
 18913 
       
 18914         ThreadSafeShared uses the atomic __gnu_cxx::__exchange_and_add with an int,
       
 18915         however on sparc 64 the _Atomic_word argument is typedefed to long (8 bytes).
       
 18916 
       
 18917         The patch disables WTF_USE_LOCKFREE_THREADSAFESHARED in ThreadSafeShared to use
       
 18918         a mutex instead when compiling for sparc 64 with gcc.
       
 18919 
       
 18920         https://bugs.webkit.org/show_bug.cgi?id=29175
       
 18921 
       
 18922         * wtf/Platform.h:
       
 18923         __sparc64__ is not defined on all OS.
       
 18924         Uses instead: __sparc__ && __arch64__ || __sparcv9
       
 18925         * wtf/Threading.h:
       
 18926 
       
 18927 2009-09-11  Prasanth Ullattil  <prasanth.ullattil@nokia.com>
       
 18928 
       
 18929         Reviewed by Simon Hausmann.
       
 18930 
       
 18931         Fix compile error on Windows7(64Bit) with latest SDK.
       
 18932 
       
 18933         Added the missing include file.
       
 18934 
       
 18935         * runtime/UString.cpp:
       
 18936 
       
 18937 2009-09-11  Joerg Bornemann  <joerg.bornemann@trolltech.com>
       
 18938 
       
 18939         Reviewed by Simon Hausmann.
       
 18940 
       
 18941         Qt/Windows CE compile fix, include the executable allocator and
       
 18942         markstack implementation in the windows build.
       
 18943 
       
 18944         * JavaScriptCore.pri:
       
 18945 
       
 18946 2009-09-08  John Abd-El-Malek  <jam@chromium.org>
       
 18947 
       
 18948         Reviewed by Dimitri Glazkov.
       
 18949 
       
 18950         Remove unneeded define for ActiveX.
       
 18951         https://bugs.webkit.org/show_bug.cgi?id=29054
       
 18952 
       
 18953         * wtf/Platform.h:
       
 18954 
       
 18955 2009-09-10  Mark Rowe  <mrowe@apple.com>
       
 18956 
       
 18957         Rubber-stamped by Sam Weinig.
       
 18958 
       
 18959         Update JavaScriptCore and WebKit's FeatureDefines.xcconfig so that they are in sync with WebCore as they need to be.
       
 18960 
       
 18961         * Configurations/FeatureDefines.xcconfig:
       
 18962 
       
 18963 2009-09-10  Fumitoshi Ukai  <ukai@chromium.org>
       
 18964 
       
 18965         Reviewed by Alexey Proskuryakov.
       
 18966 
       
 18967         Export WTF::tryFastMalloc used in WebSocketChannel.
       
 18968         https://bugs.webkit.org/show_bug.cgi?id=28038
       
 18969 
       
 18970         * JavaScriptCore.exp:
       
 18971         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 18972         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 18973 
       
 18974 2009-09-10  Oliver Hunt  <oliver@apple.com>
       
 18975 
       
 18976         Reviewed by NOBODY (Build fix).
       
 18977 
       
 18978         Make StructureTransitionTable use an enum for the PtrAndFlags member
       
 18979         used for the single transition slot optimisation.
       
 18980 
       
 18981         * runtime/StructureTransitionTable.h:
       
 18982         (JSC::StructureTransitionTable::StructureTransitionTable):
       
 18983         (JSC::StructureTransitionTable::usingSingleTransitionSlot):
       
 18984         (JSC::StructureTransitionTable::):
       
 18985 
       
 18986 2009-09-10  Oliver Hunt  <oliver@apple.com>
       
 18987 
       
 18988         Reviewed by Geoff Garen.
       
 18989 
       
 18990         Refactor StructureTransitionTable and Structure to unify handling of the single slot optimization
       
 18991         https://bugs.webkit.org/show_bug.cgi?id=29141
       
 18992 
       
 18993         Make StructureTransitionTable encapsulate the single transition slot optimization.
       
 18994 
       
 18995         * runtime/Structure.cpp:
       
 18996         (JSC::Structure::Structure):
       
 18997         (JSC::Structure::~Structure):
       
 18998         (JSC::Structure::addPropertyTransitionToExistingStructure):
       
 18999         (JSC::Structure::addPropertyTransition):
       
 19000         (JSC::Structure::addPropertyWithoutTransition):
       
 19001         (JSC::Structure::removePropertyWithoutTransition):
       
 19002         (JSC::Structure::hasTransition):
       
 19003         * runtime/Structure.h:
       
 19004         (JSC::StructureTransitionTable::contains):
       
 19005         (JSC::StructureTransitionTable::get):
       
 19006         (JSC::StructureTransitionTable::hasTransition):
       
 19007         (JSC::StructureTransitionTable::reifySingleTransition):
       
 19008         * runtime/StructureTransitionTable.h:
       
 19009         (JSC::StructureTransitionTable::StructureTransitionTable):
       
 19010         (JSC::StructureTransitionTable::~StructureTransitionTable):
       
 19011         (JSC::StructureTransitionTable::remove):
       
 19012         (JSC::StructureTransitionTable::add):
       
 19013         (JSC::StructureTransitionTable::table):
       
 19014         (JSC::StructureTransitionTable::singleTransition):
       
 19015         (JSC::StructureTransitionTable::usingSingleTransitionSlot):
       
 19016         (JSC::StructureTransitionTable::setSingleTransition):
       
 19017         (JSC::StructureTransitionTable::setTransitionTable):
       
 19018         (JSC::StructureTransitionTable::):
       
 19019         * wtf/PtrAndFlags.h:
       
 19020         (WTF::PtrAndFlags::PtrAndFlags):
       
 19021 
       
 19022 2009-09-10  Zoltan Horvath  <zoltan@webkit.org>
       
 19023 
       
 19024         Reviewed by Darin Adler.
       
 19025 
       
 19026         Implement fastDeleteSkippingDestructor for FastAllocBase and fastDeleteAllValues for HashSet
       
 19027         https://bugs.webkit.org/show_bug.cgi?id=25930
       
 19028 
       
 19029         FastAllocBase has been extended with fastDeleteSkippingDestructor function which
       
 19030         releases memory without destructor call. fastDeleteAllValues has been implemented 
       
 19031         similar as deleteAllValues but it uses fastDelete function to release memory.
       
 19032 
       
 19033         * wtf/FastAllocBase.h:
       
 19034         (WTF::fastDeleteSkippingDestructor):
       
 19035         * wtf/HashSet.h:
       
 19036         (WTF::fastDeleteAllValues):
       
 19037 
       
 19038 2009-09-10  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 19039 
       
 19040         Reviewed by Darin Adler.
       
 19041 
       
 19042         ARM compiler does not understand GCC visibility attribute
       
 19043         https://bugs.webkit.org/show_bug.cgi?id=29079
       
 19044 
       
 19045         * API/JSBase.h: Make the test more specific to hit only
       
 19046         the GCC compiler
       
 19047 
       
 19048 2009-09-10  Adam Barth  <abarth@webkit.org>
       
 19049 
       
 19050         Unreviewed revert of the previous change.  It broke the tests.
       
 19051 
       
 19052         * wtf/dtoa.cpp:
       
 19053         (WTF::dtoa):
       
 19054 
       
 19055 2009-09-10  Ben Laurie  <benl@google.com>
       
 19056 
       
 19057         Reviewed by Adam Barth.
       
 19058 
       
 19059         <https://bugs.webkit.org/show_bug.cgi?id=26836>
       
 19060 
       
 19061         If dtoa was given a small buffer and the number was either infinite or
       
 19062         NaN, then the buffer would be overflowed.
       
 19063 
       
 19064         * wtf/dtoa.cpp:
       
 19065 
       
 19066 2009-09-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 19067 
       
 19068         Reviewed by Darin Adler.
       
 19069 
       
 19070         Change reinterpret_cast to static_cast in r48212.
       
 19071 
       
 19072         * jit/ExecutableAllocator.h:
       
 19073         (JSC::ExecutableAllocator::cacheFlush):
       
 19074 
       
 19075 2009-09-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 19076 
       
 19077         Reviewed by Darin Adler.
       
 19078 
       
 19079         Remove WTF_PLATFORM_FORCE_PACK as it is no longer used
       
 19080         https://bugs.webkit.org/show_bug.cgi?id=29066
       
 19081 
       
 19082         * wtf/Platform.h:
       
 19083 
       
 19084 2009-09-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 19085 
       
 19086         Reviewed by Ariya Hidayat.
       
 19087 
       
 19088         Implement flushing the instruction cache for Symbian
       
 19089         https://bugs.webkit.org/show_bug.cgi?id=29075
       
 19090 
       
 19091         * jit/ExecutableAllocator.h:
       
 19092         (JSC::ExecutableAllocator::cacheFlush): Call IMB_Range to flush
       
 19093         the instruction cache on Symbian
       
 19094 
       
 19095 2009-09-09  Kent Hansen  <khansen@trolltech.com>
       
 19096 
       
 19097         Reviewed by Darin Adler.
       
 19098 
       
 19099         https://bugs.webkit.org/show_bug.cgi?id=29024
       
 19100         Make JavaScriptCore compile on platforms with case-insensitive file systems and typeinfo.h in STL
       
 19101 
       
 19102         These platforms include Microsoft Visual Studio 2003, and Symbian with Metrowerks compiler.
       
 19103 
       
 19104         * JavaScriptCore.gypi:
       
 19105         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 19106         * runtime/JSTypeInfo.h: Copied from JavaScriptCore/runtime/TypeInfo.h.
       
 19107         * runtime/Structure.h:
       
 19108         * runtime/TypeInfo.h: Removed.
       
 19109 
       
 19110 2009-09-08  Oliver Hunt  <oliver@apple.com>
       
 19111 
       
 19112         Reviewed by Maciej Stachowiak.
       
 19113 
       
 19114         JSON.stringify(Date) loses the milliseconds information
       
 19115         https://bugs.webkit.org/show_bug.cgi?id=29063
       
 19116 
       
 19117         Make sure we include milliseconds in the output of toISOString.
       
 19118 
       
 19119         * runtime/DatePrototype.cpp:
       
 19120         (JSC::dateProtoFuncToISOString):
       
 19121 
       
 19122 2009-09-08  Kevin Ollivier  <kevino@theolliviers.com>
       
 19123 
       
 19124         wx build fix, generate derived sources earlier in order to make sure
       
 19125         they're found by the build system when generating the list of sources to build.
       
 19126 
       
 19127         * wscript:
       
 19128 
       
 19129 2009-09-08  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 19130 
       
 19131         Reviewed by Simon Hausmann.
       
 19132 
       
 19133         Build fix when USE(LOCKFREE_THREADSAFESHARED) is not defined
       
 19134         https://bugs.webkit.org/show_bug.cgi?id=29011
       
 19135 
       
 19136         * wtf/Threading.h: Use LOCKFREE_THREADSAFESHARED guard for 
       
 19137         atomicIncrement and atomicDecrement
       
 19138 
       
 19139 2009-09-07  Zoltan Horvath  <zoltan@webkit.org>
       
 19140 
       
 19141         Reviewed by Darin Adler.
       
 19142 
       
 19143         Allow custom memory allocation control in Yarr's RegexInterpreter
       
 19144         https://bugs.webkit.org/show_bug.cgi?id=29025
       
 19145 
       
 19146         Inherits RegexInterpreter classes from FastAllocBase (bug #20422), which has
       
 19147         been instantiated by 'new':
       
 19148 
       
 19149         class ByteDisjunction
       
 19150         -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1462
       
 19151 
       
 19152         struct BytecodePattern
       
 19153         -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1279
       
 19154 
       
 19155         * yarr/RegexInterpreter.h:
       
 19156 
       
 19157 2009-09-07  Drew Wilson  <atwilson@google.com>
       
 19158 
       
 19159         Reverting r48121 to fix Windows build errors.
       
 19160 
       
 19161         * JavaScriptCore.exp:
       
 19162 
       
 19163 2009-09-07  Drew Wilson  <atwilson@google.com>
       
 19164 
       
 19165         Reviewed by David Levin.
       
 19166 
       
 19167         Enable SHARED_WORKERS by default
       
 19168         https://bugs.webkit.org/show_bug.cgi?id=28959
       
 19169 
       
 19170         * Configurations/FeatureDefines.xcconfig:
       
 19171 
       
 19172 2009-09-07  Fumitoshi Ukai  <ukai@chromium.org>
       
 19173 
       
 19174         Reviewed by Alexey Proskuryakov.
       
 19175 
       
 19176         Export WTF::tryFastMalloc used in WebSocketChannel.
       
 19177         https://bugs.webkit.org/show_bug.cgi?id=28038
       
 19178 
       
 19179         * JavaScriptCore.exp:
       
 19180 
       
 19181 2009-09-04  Oliver Hunt  <oliver@apple.com>
       
 19182 
       
 19183         Reviewed by NOBODY (Build fix).
       
 19184 
       
 19185         Fix windows export files
       
 19186 
       
 19187         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 19188         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 19189 
       
 19190 2009-09-04  Oliver Hunt  <oliver@apple.com>
       
 19191 
       
 19192         Reviewed by Gavin Barraclough.
       
 19193 
       
 19194         [[ToString]] conversion should use the actual toString function for String objects.
       
 19195 
       
 19196         Remove incorrect specialisations of toString conversions on StringObject.
       
 19197 
       
 19198         * JavaScriptCore.exp:
       
 19199         * runtime/StringObject.cpp:
       
 19200         * runtime/StringObject.h:
       
 19201 
       
 19202 2009-09-04  Steve Falkenburg  <sfalken@apple.com>
       
 19203 
       
 19204         Windows build fix.
       
 19205 
       
 19206         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Add new export.
       
 19207         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Add new export.
       
 19208 
       
 19209 2009-09-04  Steve Falkenburg  <sfalken@apple.com>
       
 19210 
       
 19211         Windows build fix.
       
 19212 
       
 19213         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove unneeded export.
       
 19214         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Remove unneeded export.
       
 19215 
       
 19216 2009-09-04  Darin Adler  <darin@apple.com>
       
 19217 
       
 19218         Reviewed by Geoff Garen.
       
 19219 
       
 19220         DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32)
       
 19221         https://bugs.webkit.org/show_bug.cgi?id=28909
       
 19222 
       
 19223         Part two.
       
 19224 
       
 19225         Make some improvements to garbage collection code:
       
 19226 
       
 19227             1) Create a runtime assertion that catches any classes that
       
 19228                override markChildren but have the HasDefaultMark bit set.
       
 19229             2) Remove checks of the mark bit outside the MarkStack::append
       
 19230                function; they are redundant.
       
 19231             3) Improve the efficiency of the asObject and asArray functions
       
 19232                when called on JSCell* to avoid a round trip to JSValue.
       
 19233             4) Make more callers use the checked asCell and asObject
       
 19234                casting functions rather than unchecked casts.
       
 19235             5) Removed the JSCell::marked function and other GC-related
       
 19236                functions because these operations are no longer things that
       
 19237                code other than the core GC code needs to do directly. Fixed
       
 19238                callers that were calling them.
       
 19239 
       
 19240         * runtime/Collector.cpp:
       
 19241         (JSC::Heap::markConservatively): Removed unneeded call to MarkStack::drain.
       
 19242         (JSC::Heap::markProtectedObjects): Removed unneeded check of the mark
       
 19243         bit and call to MarkStack::drain.
       
 19244         (JSC::Heap::collect): Removed unneeded checks of the mark bit and also
       
 19245         changed call to SmallStrings::mark to call markChildren instead to match
       
 19246         the rest of the objects.
       
 19247         (JSC::typeName): Removed unneeded cast to JSObject*.
       
 19248 
       
 19249         * runtime/JSArray.h:
       
 19250         (JSC::asArray): Added an overload for JSCell* and changed the JSValue
       
 19251         version to call it. Removed some unneeded casts.
       
 19252         (JSC::JSArray::markChildrenDirect): Marked this function inline. It's in
       
 19253         a header, and if not marked inline this could lead to linking problems.
       
 19254         (JSC::MarkStack::markChildren): Added. This helper function is used by
       
 19255         the drain function to avoid repating code. Also added the code here to
       
 19256         check fro default mark violations in debug code. If a markChildren
       
 19257         function adds something to the mark stack, but the type info claimed
       
 19258         hasDefaultMark was true, then we will get an assertion now. Also fixed
       
 19259         the assertion about the mark bit to use the Heap function directly
       
 19260         because we don't have a JSCell::marked function any more.
       
 19261         (JSC::MarkStack::drain): Changed a local variable from "v" to "value",
       
 19262         and from "currentCell" to "cell". Changed to call markChildren in two
       
 19263         places instead of repeating a chain of if statements twice. Changed
       
 19264         code that reads and writes the mark bit to use Heap::isCellMarked and
       
 19265         Heap::markCell so we can eliminate the JSCell::marked and
       
 19266         JSCell::markCellDirect functions.
       
 19267 
       
 19268         * runtime/JSCell.h: Removed JSCell's markCellDirect and marked member
       
 19269         functions. Added a comment explaining that asCell should be deprecated
       
 19270         in favor of the JSValue asCell member function.
       
 19271         (JSC::MarkStack::append): Added the assertion that catches callers
       
 19272         that have set the HasDefaultMark bit incorrectly. Changed
       
 19273         code that reads and writes the mark bit to use Heap::isCellMarked and
       
 19274         Heap::markCell so we can eliminate the JSCell::marked and
       
 19275         JSCell::markCellDirect functions. Moved the overload of
       
 19276         MarkStack::append for JSValue here so it can call through to the cell
       
 19277         version. The old version had a copy of all the code instead, but that
       
 19278         repeated the conversion from JSValue to JSCell* and the check for
       
 19279         whether a value is a cell multiple times.
       
 19280         (JSC::Structure::markAggregate): Moved this function here to avoid
       
 19281         dependencies for Structure.h, since this calls MarkStack::append.
       
 19282 
       
 19283         * runtime/JSObject.cpp:
       
 19284         (JSC::JSObject::markChildren): Added code to clear
       
 19285         m_isCheckingForDefaultMarkViolation so the marking done by JSObject
       
 19286         doesn't trigger the assertion.
       
 19287 
       
 19288         * runtime/JSValue.h: Moved some stray includes that were outside the
       
 19289         header guard inside it. Not sure how that happened! Removed the
       
 19290         GC-related member functions markChildren, hasChildren, marked, and
       
 19291         markDirect.
       
 19292 
       
 19293         * runtime/JSWrapperObject.h: Made markChildren private.
       
 19294         (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the
       
 19295         HasDefaultMark bit was set.
       
 19296 
       
 19297         * runtime/MarkStack.h: Added m_isCheckingForDefaultMarkViolation and
       
 19298         initialized it to false. Moved the append function body from here to
       
 19299         JSCell.h. Added a declaration of a private markChildren function used
       
 19300         inside the drain function.
       
 19301 
       
 19302         * runtime/SmallStrings.cpp:
       
 19303         (JSC::SmallStrings::markChildren): Changed the name and style of this
       
 19304         function to match other functions. This allows us to share the normal
       
 19305         mark stack code path.
       
 19306 
       
 19307         * runtime/SmallStrings.h: Changed the name and interface of mark to
       
 19308         the more-normal markChildren style.
       
 19309 
       
 19310         * runtime/Structure.h: Moved the body of markAggregate into the
       
 19311         JSCell.h to avoid a circular dependency with JSCell.h.
       
 19312 
       
 19313 2009-09-04  Darin Adler  <darin@apple.com>
       
 19314 
       
 19315         Reviewed by Geoff Garen.
       
 19316 
       
 19317         DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32)
       
 19318         https://bugs.webkit.org/show_bug.cgi?id=28909
       
 19319 
       
 19320         Part one.
       
 19321 
       
 19322         Make some improvements to garbage collection code:
       
 19323 
       
 19324             1) Fix the two classes that had the default mark bit set but
       
 19325                should not.
       
 19326             2) Remove checks of the mark bit outside the MarkStack::append
       
 19327                function; they are redundant.
       
 19328             3) Make more callers use the checked asCell and asObject
       
 19329                casting functions rather than unchecked casts.
       
 19330             4) Removed some GC-related functions because these operations are
       
 19331                no longer things that code other than the core GC code needs
       
 19332                to do directly. Fixed callers that were calling them.
       
 19333 
       
 19334         * bytecode/CodeBlock.cpp:
       
 19335         (JSC::CodeBlock::markAggregate): Removed unneeded check of the mark
       
 19336         bit before calling MarkStack::append.
       
 19337 
       
 19338         * interpreter/Register.h: Removed unneeded marked and markChildren
       
 19339         functions.
       
 19340 
       
 19341         * jit/JITStubs.cpp:
       
 19342         (op_eq): Removed unneeded assertions, instead using checked casting
       
 19343         functions such as asObject.
       
 19344 
       
 19345         * runtime/ArgList.h: Added now-needed forward declaration of MarkStack.
       
 19346 
       
 19347         * runtime/GetterSetter.cpp:
       
 19348         (JSC::GetterSetter::markChildren): Remmoved unneeded check of the mark bit.
       
 19349 
       
 19350         * runtime/GlobalEvalFunction.h:
       
 19351         (JSC::GlobalEvalFunction::createStructure): Added. Fixes a bug where the
       
 19352         HasDefaultMark bit was set.
       
 19353 
       
 19354         * runtime/JSCell.cpp:
       
 19355         (JSC::JSCell::getObject): Use asObject to avoid a direct static_cast.
       
 19356 
       
 19357         * runtime/JSObject.h:
       
 19358         (JSC::asObject): Added an overload for JSCell* and changed the JSValue
       
 19359         version to call it.
       
 19360         (JSC::JSValue::get): Use asObject to avoid a direct static_cast.
       
 19361 
       
 19362         * runtime/JSWrapperObject.h: Made markChildren private.
       
 19363         (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the
       
 19364         HasDefaultMark bit was set. Later we may want to optimize this for
       
 19365         wrapper types that never have cells in their internal values, but there
       
 19366         is no measured performance regression in SunSpider or V8 doing this
       
 19367         all the time.
       
 19368 
       
 19369         * runtime/MarkStack.cpp: Tweaked formatting.
       
 19370 
       
 19371 2009-09-04  Kevin Ollivier  <kevino@theolliviers.com>
       
 19372 
       
 19373         wx build fix. Switch USE_ defines over to the compiler so that they can be
       
 19374         checked by files not including config.h (like WebCorePrefix.h).
       
 19375 
       
 19376         * wtf/Platform.h:
       
 19377 
       
 19378 2009-09-03  Yong Li  <yong.li@torchmobile.com>
       
 19379 
       
 19380         Reviewed by David Levin.
       
 19381 
       
 19382         Remove unnecessary dependency on unistd.h
       
 19383         https://bugs.webkit.org/show_bug.cgi?id=28962
       
 19384 
       
 19385         * runtime/Completion.cpp:
       
 19386 
       
 19387 2009-09-03  Fumitoshi Ukai  <ukai@chromium.org>
       
 19388 
       
 19389         Reviewed by Eric Seidel.
       
 19390 
       
 19391         Add strnstr for Linux and Windows in StringExtras.h
       
 19392         https://bugs.webkit.org/show_bug.cgi?id=28901
       
 19393 
       
 19394         * wtf/StringExtras.h:
       
 19395         (strnstr):
       
 19396 
       
 19397 2009-09-03  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 19398 
       
 19399         Reviewed by Darin Adler.
       
 19400 
       
 19401         Allow custom memory allocation control for JavaScriptCore's HashEntry class
       
 19402         https://bugs.webkit.org/show_bug.cgi?id=27830
       
 19403 
       
 19404         Inherits HashEntry class from FastAllocBase because it has been
       
 19405         instantiated by 'new' JavaScriptCore/runtime/Lookup.cpp:32.
       
 19406 
       
 19407         * runtime/Lookup.h:
       
 19408 
       
 19409 2009-09-02  Gavin Barraclough  <barraclough@apple.com>
       
 19410 
       
 19411         Should crash if JIT code buffer allocation fails.
       
 19412 
       
 19413         https://bugs.webkit.org/show_bug.cgi?id=28926
       
 19414         <rdar://problem/7031922>
       
 19415 
       
 19416         * jit/ExecutableAllocatorPosix.cpp:
       
 19417         (JSC::ExecutablePool::systemAlloc):
       
 19418         * jit/ExecutableAllocatorWin.cpp:
       
 19419         (JSC::ExecutablePool::systemAlloc):
       
 19420 
       
 19421 2009-09-02  Kevin Ollivier  <kevino@theolliviers.com>
       
 19422 
       
 19423         waf build fixes for Windows/MSVC.
       
 19424 
       
 19425         * wscript:
       
 19426 
       
 19427 2009-09-02  Kevin Ollivier  <kevino@theolliviers.com>
       
 19428 
       
 19429         Build fix for building on Windows.
       
 19430 
       
 19431         * wtf/ThreadingPthreads.cpp:
       
 19432 
       
 19433 2009-09-02  Norbert Leser  <norbert.leser@nokia.com>
       
 19434 
       
 19435         Reviewed by Eric Seidel.
       
 19436 
       
 19437         Use fastMalloc when neither MMAP nor VIRTUALALLOC are enabled
       
 19438         
       
 19439         RegisterFile constructor currently throws #error when both
       
 19440         MMAP and VIRTUALALLOC conditions fail.
       
 19441         On any platform that does not provide these features
       
 19442         (for instance, Symbian),
       
 19443         the fallback should be regular malloc (or fastMalloc).
       
 19444         It is functionally equivalent in this case, even though it may
       
 19445         have certain drawbacks such as lack of dynamic pre-allocation.
       
 19446 
       
 19447         * interpreter/RegisterFile.cpp:
       
 19448         (JSC::RegisterFile::~RegisterFile):
       
 19449         * interpreter/RegisterFile.h:
       
 19450         (JSC::RegisterFile::RegisterFile):
       
 19451 
       
 19452 2009-08-31  Robert Agoston  <Agoston.Robert@stud.u-szeged.hu>
       
 19453 
       
 19454         Reviewed by Gavin Barraclough.
       
 19455 
       
 19456         Fixed typo.
       
 19457         https://bugs.webkit.org/show_bug.cgi?id=28691
       
 19458 
       
 19459         * parser/Parser.h:
       
 19460         (JSC::Parser::parse):
       
 19461 
       
 19462 2009-08-27  Oliver Hunt  <oliver@apple.com>
       
 19463 
       
 19464         Reviewed by Maciej Stachowiak.
       
 19465 
       
 19466         JSON Stringifier does not follow ES5 spec for handling of Number, String and Boolean objects
       
 19467         https://bugs.webkit.org/show_bug.cgi?id=28797
       
 19468 
       
 19469         Fixed unwrapBoxedPrimitive to do the right thing, which necessitated a couple of new exception
       
 19470         checks, and corrected the logic in gap to correctly convert Number and String objects.
       
 19471 
       
 19472         * runtime/JSONObject.cpp:
       
 19473         (JSC::unwrapBoxedPrimitive):
       
 19474         (JSC::gap):
       
 19475         (JSC::Stringifier::Stringifier):
       
 19476         (JSC::Stringifier::appendStringifiedValue):
       
 19477 
       
 19478 2009-08-27  Oliver Hunt  <oliver@apple.com>
       
 19479 
       
 19480         Reviewed by Adam Roben.
       
 19481 
       
 19482         JSON.stringify replacer array does not accept values that are not string primitives.
       
 19483         https://bugs.webkit.org/show_bug.cgi?id=28788
       
 19484 
       
 19485         Update the JSON stringifier to initialise its replacer array according to the most
       
 19486         recent version of the spec.
       
 19487 
       
 19488         * runtime/Identifier.h:
       
 19489         (JSC::Identifier::from):
       
 19490         * runtime/JSONObject.cpp:
       
 19491         (JSC::Stringifier::Stringifier):
       
 19492 
       
 19493 2009-08-27  Alexey Proskuryakov  <ap@apple.com>
       
 19494 
       
 19495         Reviewed by Oliver Hunt.
       
 19496 
       
 19497         https://bugs.webkit.org/show_bug.cgi?id=28753
       
 19498         <rdar://problem/7173448> Excessive number of threads (and a crash)
       
 19499 
       
 19500         * wtf/Threading.h: (WTF::atomicIncrement): Changed atomicIncrement to match decrement
       
 19501         and return the new value. Also added using directives for these functions, to match
       
 19502         te rest of WTF.
       
 19503 
       
 19504 2009-08-27  Brent Fulgham  <bfulgham@webkit.org>
       
 19505 
       
 19506         Reviewed by Adam Roben.
       
 19507 
       
 19508         Link the testapi against CFLite when building the WinCairo port.
       
 19509 
       
 19510         * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add new Release_CFLite
       
 19511           target.  Update all targets to inherit from either the
       
 19512           JavaScriptCF.vsprops (Apple target) or the JavaScriptCFLite.vsprops
       
 19513           file (WinCairo target).
       
 19514         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Remove
       
 19515           input file CoreFoundation.lib. This is provided by either the
       
 19516           JavaScriptCF.vsprops or JavaScriptCFLite.vsprops file.
       
 19517 
       
 19518 2009-08-27  Steve Falkenburg  <sfalken@apple.com>
       
 19519 
       
 19520         Reviewed by Geoff Garen.
       
 19521         
       
 19522         Fix Windows-specific crash due to missing memory clearing call.
       
 19523         
       
 19524         * runtime/Collector.cpp:
       
 19525         (JSC::Heap::allocateBlock):
       
 19526 
       
 19527 2009-08-27  Brent Fulgham  <bfulgham@webkit.org>
       
 19528 
       
 19529         Build fix: JavaScriptCore_debug.def missing some exports.  Apple
       
 19530         Windows build does not use this file, so it was not noticed previously.
       
 19531 
       
 19532         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 19533 
       
 19534 2009-08-27  Gavin Barraclough  <barraclough@apple.com>
       
 19535 
       
 19536         Reviewed by Oliver Hunt.
       
 19537 
       
 19538         x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates.
       
 19539         https://bugs.webkit.org/show_bug.cgi?id=28317
       
 19540 
       
 19541         Missed one, fix part II.
       
 19542 
       
 19543         * assembler/MacroAssemblerX86Common.h:
       
 19544         (JSC::MacroAssemblerX86Common::move):
       
 19545         * assembler/X86Assembler.h:
       
 19546         (JSC::CAN_SIGN_EXTEND_8_32):
       
 19547 
       
 19548 2009-08-27  Oliver Hunt  <oliver@apple.com>
       
 19549 
       
 19550         Reviewed by Adam Roben.
       
 19551 
       
 19552         JSON.stringify replacer array does not accept values that are not string primitives.
       
 19553         https://bugs.webkit.org/show_bug.cgi?id=28788
       
 19554 
       
 19555         Update the JSON stringifier to initialise its replacer array according to the most
       
 19556         recent version of the spec.
       
 19557 
       
 19558         * runtime/Identifier.h:
       
 19559         (JSC::Identifier::from):
       
 19560         * runtime/JSONObject.cpp:
       
 19561         (JSC::Stringifier::Stringifier):
       
 19562 
       
 19563 2009-08-27  Oliver Hunt  <oliver@apple.com>
       
 19564 
       
 19565         Reviewed by Alexey Proskuryakov.
       
 19566 
       
 19567         JSON parser accepts trailing comma in array literals
       
 19568         https://bugs.webkit.org/show_bug.cgi?id=28779
       
 19569 
       
 19570         Update parser to correctly fail if there's a trailing comma.
       
 19571 
       
 19572         * runtime/LiteralParser.cpp:
       
 19573         (JSC::LiteralParser::parse):
       
 19574 
       
 19575 2009-08-26  Oliver Hunt  <oliver@apple.com>
       
 19576 
       
 19577         Reviewed by Gavin Barraclough.
       
 19578 
       
 19579         'this' in JSON.parse reviver is the global object
       
 19580         https://bugs.webkit.org/show_bug.cgi?id=28752
       
 19581 
       
 19582         This is a technically simple change, we merely update the code for calling
       
 19583         the reviver function to pass the correct this object.  Doing so however
       
 19584         exposes the holder to arbitrary mutation by the reviver function so it is
       
 19585         necessary for us to now guard all property accesses against the possibility
       
 19586         of failure.
       
 19587 
       
 19588         * runtime/JSArray.h:
       
 19589           JSON needs to delete a property from the array, so we friend its 
       
 19590           Walker class so that we can make a non-virtual call to the arrays
       
 19591           delete and getOwnPropertySlot methods.
       
 19592         * runtime/JSONObject.cpp:
       
 19593         (JSC::Walker::callReviver):
       
 19594           We need to pass the correct this object
       
 19595         (JSC::Walker::walk):
       
 19596           Update calls to callReviver, and update property logic logic
       
 19597           to correctly handle the holder being mutated by the reviver
       
 19598           function.
       
 19599 
       
 19600 2009-08-26  Alice Liu  <alice.liu@apple.com>
       
 19601 
       
 19602         Windows build fix: added some exported symbols
       
 19603 
       
 19604         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 19605         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 19606 
       
 19607 2009-08-26  Geoffrey Garen  <ggaren@apple.com>
       
 19608 
       
 19609         Windows build fix: Removed some exported symbols that no longer exist.
       
 19610 
       
 19611         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 19612         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 19613 
       
 19614 2009-08-26  Gavin Barraclough  <barraclough@apple.com>
       
 19615 
       
 19616         Reviewed by Olliejver Hunt.
       
 19617 
       
 19618         x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates.
       
 19619         https://bugs.webkit.org/show_bug.cgi?id=28317
       
 19620 
       
 19621         We rely on a slightly OS X specific behaviour, that x86-64 applications have a 4Gb zero page,
       
 19622         so pointers are never representable as a 32-bit integer, and always have to be represented by
       
 19623         a separate immediate load instruction, rather than within the immediate field of an arithmetic
       
 19624         or memory operation.
       
 19625 
       
 19626         We explicitly check for a couple of cases where a value might be representable in 32-bit, but
       
 19627         these probably never kick in on Mac OS, and only kick in to hose GTK.  Deleting these does not
       
 19628         show a performance degradation on SunSpider.  Remove.
       
 19629 
       
 19630         * assembler/MacroAssemblerX86_64.h:
       
 19631         (JSC::MacroAssemblerX86_64::storePtr):
       
 19632         (JSC::MacroAssemblerX86_64::branchPtr):
       
 19633 
       
 19634 2009-08-26  Geoffrey Garen  <ggaren@apple.com>
       
 19635 
       
 19636         Reviewed by Oliver Hunt.
       
 19637 
       
 19638         A bit of Collector refatoring.
       
 19639         
       
 19640         SunSpider says no change. v8 says 1.003x faster (1.02x faster on splay).
       
 19641 
       
 19642         * JavaScriptCore.exp:
       
 19643 
       
 19644         * runtime/JSCell.cpp:
       
 19645         (JSC::JSCell::toPrimitive):
       
 19646         (JSC::JSCell::getPrimitiveNumber):
       
 19647         (JSC::JSCell::toBoolean):
       
 19648         (JSC::JSCell::toNumber):
       
 19649         (JSC::JSCell::toString):
       
 19650         (JSC::JSCell::toObject): Removed pure virtual functions from
       
 19651         JSCell, so the collector can construct one. This allowed
       
 19652         me to remove a bunch of ASSERT_NOT_REACHED throughout the
       
 19653         code, too.
       
 19654 
       
 19655         * runtime/JSCell.h:
       
 19656         (JSC::JSCell::JSCell): ditto
       
 19657         (JSC::Heap::heap): Inlined this function because it's trivial.
       
 19658 
       
 19659         * JavaScriptCore.exp:
       
 19660 
       
 19661         * runtime/Collector.cpp:
       
 19662         (JSC::Heap::destroy):
       
 19663         (JSC::Heap::allocateBlock):
       
 19664         (JSC::Heap::freeBlock):
       
 19665         (JSC::Heap::freeBlocks): Renamed freeHeap to freeBlocks, since
       
 19666         it doesn't actually free the Heap object.
       
 19667         (JSC::Heap::heapAllocate):
       
 19668         (JSC::Heap::sweep):
       
 19669         * runtime/Collector.h: Refactored block allocation and destruction
       
 19670         into helper functions.
       
 19671         
       
 19672         * runtime/GetterSetter.cpp:
       
 19673         * runtime/JSAPIValueWrapper.cpp:
       
 19674         * runtime/JSPropertyNameIterator.cpp: Removed dummy implementations
       
 19675         of pure virtual functions. (See above.)
       
 19676 
       
 19677 === End re-roll-in of r47738:47740 with Windows crash fixed ===
       
 19678 
       
 19679 2009-08-26  Geoffrey Garen  <ggaren@apple.com>
       
 19680 
       
 19681         Build fix: start out with a 32-bit value to avoid a shortening warning.
       
 19682 
       
 19683         * runtime/Collector.cpp:
       
 19684         (JSC::Heap::sweep):
       
 19685 
       
 19686 2009-08-24  Geoffrey Garen  <ggaren@apple.com>
       
 19687 
       
 19688         Reviewed by Oliver Hunt.
       
 19689 
       
 19690         Substantially reduced VM thrash in the GC heap.
       
 19691         
       
 19692         1.08x faster on v8 (1.60x faster on v8-splay).
       
 19693         
       
 19694         1.40x faster on bench-alloc-nonretained.
       
 19695         
       
 19696         1.90x faster on bench-alloc-retained.
       
 19697         
       
 19698         SunSpider says no change.
       
 19699         
       
 19700         * runtime/Collector.cpp:
       
 19701         (JSC::Heap::heapAllocate): Fixed a long-standing bug: update a few local
       
 19702         variables unconditionally after calling collect(), since they may be used
       
 19703         even if we don't "goto scan". (In the bug I saw, usedBlocks got out of
       
 19704         sync with heap.usedBlocks).
       
 19705         (JSC::Heap::sweep): Keep enough free heap space to accomodate 
       
 19706         the number of objects we'll allocate before the next GC, plus 25%, for
       
 19707         good measure.
       
 19708         * runtime/Collector.h: Bumped the block size to 256k. This seems to give
       
 19709         the best cache performance, and it prevents us from initiating lots of
       
 19710         VM traffic to recover very small chunks of memory.
       
 19711 
       
 19712 === Begin re-roll-in of r47738:47740 with Windows crash fixed ===
       
 19713 
       
 19714 2009-08-25  Drew Wilson  <atwilson@google.com>
       
 19715 
       
 19716         Reviewed by David Levin.
       
 19717 
       
 19718         postMessage() spec now supports sending arrays of ports
       
 19719         https://bugs.webkit.org/show_bug.cgi?id=26902
       
 19720 
       
 19721         Added OwnPtr to VectorTraits so we can store OwnPtrs in Vectors.
       
 19722 
       
 19723         * wtf/VectorTraits.h:
       
 19724 
       
 19725 2009-08-26  Xan Lopez  <xlopez@igalia.com>
       
 19726 
       
 19727         Rubber-stamped by Gustavo Noronha.
       
 19728 
       
 19729         Remove duplicated files from file list.
       
 19730 
       
 19731         * GNUmakefile.am:
       
 19732 
       
 19733 2009-08-26  Oliver Hunt  <oliver@apple.com>
       
 19734 
       
 19735         Reviewed by NOBODY (Build fix).
       
 19736 
       
 19737         More export fixes.
       
 19738 
       
 19739         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 19740         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 19741 
       
 19742 2009-08-26  Oliver Hunt  <oliver@apple.com>
       
 19743 
       
 19744         Reviewed by NOBODY (Build fix).
       
 19745 
       
 19746         Hopefully fix all the exports from JSC on windows
       
 19747 
       
 19748         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 19749         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 19750 
       
 19751 2009-08-26  Oliver Hunt  <oliver@apple.com>
       
 19752 
       
 19753         Reviewed by NOBODY (Build fixes).
       
 19754 
       
 19755         Forgot I added files to JavaScriptCore. 
       
 19756 
       
 19757         * GNUmakefile.am:
       
 19758         * JavaScriptCore.gypi:
       
 19759         * JavaScriptCore.pri:
       
 19760         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
 19761         * JavaScriptCoreSources.bkl:
       
 19762 
       
 19763 2009-08-25  Oliver Hunt  <oliver@apple.com>
       
 19764 
       
 19765         Reviewed by Gavin Barraclough.
       
 19766 
       
 19767         [ES5] Implement getOwnPropertyDescriptor
       
 19768         https://bugs.webkit.org/show_bug.cgi?id=28724
       
 19769 
       
 19770         Implement the core runtime support for getOwnPropertyDescriptor.
       
 19771         This adds a virtual getOwnPropertyDescriptor method to every class
       
 19772         that implements getOwnPropertySlot that shadows the behaviour of
       
 19773         getOwnPropertySlot.  The alternative would be to make getOwnPropertySlot
       
 19774         (or PropertySlots in general) provide property attribute information,
       
 19775         but quick testing showed this to be a regression.
       
 19776 
       
 19777         * JavaScriptCore.exp:
       
 19778         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 19779         * runtime/Arguments.cpp:
       
 19780         (JSC::Arguments::getOwnPropertyDescriptor):
       
 19781         * runtime/Arguments.h:
       
 19782         * runtime/ArrayPrototype.cpp:
       
 19783         (JSC::ArrayPrototype::getOwnPropertyDescriptor):
       
 19784         * runtime/ArrayPrototype.h:
       
 19785         * runtime/CommonIdentifiers.h:
       
 19786         * runtime/DatePrototype.cpp:
       
 19787         (JSC::DatePrototype::getOwnPropertyDescriptor):
       
 19788         * runtime/DatePrototype.h:
       
 19789         * runtime/JSArray.cpp:
       
 19790         (JSC::JSArray::getOwnPropertyDescriptor):
       
 19791         * runtime/JSArray.h:
       
 19792         * runtime/JSByteArray.cpp:
       
 19793         (JSC::JSByteArray::getOwnPropertyDescriptor):
       
 19794         * runtime/JSByteArray.h:
       
 19795         * runtime/JSFunction.cpp:
       
 19796         (JSC::JSFunction::getOwnPropertyDescriptor):
       
 19797         * runtime/JSFunction.h:
       
 19798         * runtime/JSGlobalObject.h:
       
 19799         (JSC::JSGlobalObject::getOwnPropertyDescriptor):
       
 19800         * runtime/JSNotAnObject.cpp:
       
 19801         (JSC::JSNotAnObject::getOwnPropertyDescriptor):
       
 19802         * runtime/JSNotAnObject.h:
       
 19803         * runtime/JSONObject.cpp:
       
 19804         (JSC::JSONObject::getOwnPropertySlot):
       
 19805         (JSC::JSONObject::getOwnPropertyDescriptor):
       
 19806         * runtime/JSONObject.h:
       
 19807         * runtime/JSObject.cpp:
       
 19808         (JSC::JSObject::getOwnPropertyDescriptor):
       
 19809         (JSC::JSObject::getPropertyDescriptor):
       
 19810         * runtime/JSObject.h:
       
 19811         * runtime/JSString.cpp:
       
 19812         (JSC::JSString::getStringPropertyDescriptor):
       
 19813         (JSC::JSString::getOwnPropertyDescriptor):
       
 19814         * runtime/JSString.h:
       
 19815         * runtime/JSVariableObject.cpp:
       
 19816         (JSC::JSVariableObject::symbolTableGet):
       
 19817         * runtime/JSVariableObject.h:
       
 19818         * runtime/Lookup.h:
       
 19819         (JSC::getStaticPropertyDescriptor):
       
 19820         (JSC::getStaticFunctionDescriptor):
       
 19821         (JSC::getStaticValueDescriptor):
       
 19822           Add property descriptor equivalents of the lookup
       
 19823           table access functions
       
 19824 
       
 19825         * runtime/MathObject.cpp:
       
 19826         (JSC::MathObject::getOwnPropertySlot):
       
 19827         (JSC::MathObject::getOwnPropertyDescriptor):
       
 19828         * runtime/MathObject.h:
       
 19829         * runtime/NumberConstructor.cpp:
       
 19830         (JSC::NumberConstructor::getOwnPropertyDescriptor):
       
 19831         * runtime/NumberConstructor.h:
       
 19832         * runtime/ObjectConstructor.cpp:
       
 19833         (JSC::ObjectConstructor::ObjectConstructor):
       
 19834         (JSC::objectConstructorGetOwnPropertyDescriptor):
       
 19835         * runtime/PropertyDescriptor.cpp: Added.
       
 19836         (JSC::PropertyDescriptor::writable):
       
 19837         (JSC::PropertyDescriptor::enumerable):
       
 19838         (JSC::PropertyDescriptor::configurable):
       
 19839         (JSC::PropertyDescriptor::hasAccessors):
       
 19840         (JSC::PropertyDescriptor::setUndefined):
       
 19841         (JSC::PropertyDescriptor::getter):
       
 19842         (JSC::PropertyDescriptor::setter):
       
 19843         (JSC::PropertyDescriptor::setDescriptor):
       
 19844         (JSC::PropertyDescriptor::setAccessorDescriptor):
       
 19845         * runtime/PropertyDescriptor.h: Added.
       
 19846         (JSC::PropertyDescriptor::PropertyDescriptor):
       
 19847         (JSC::PropertyDescriptor::attributes):
       
 19848         (JSC::PropertyDescriptor::isValid):
       
 19849         (JSC::PropertyDescriptor::value):
       
 19850         * runtime/RegExpConstructor.cpp:
       
 19851         (JSC::RegExpConstructor::getOwnPropertyDescriptor):
       
 19852         * runtime/RegExpConstructor.h:
       
 19853         * runtime/RegExpMatchesArray.h:
       
 19854         (JSC::RegExpMatchesArray::getOwnPropertyDescriptor):
       
 19855         * runtime/RegExpObject.cpp:
       
 19856         (JSC::RegExpObject::getOwnPropertyDescriptor):
       
 19857         * runtime/RegExpObject.h:
       
 19858         * runtime/StringObject.cpp:
       
 19859         (JSC::StringObject::getOwnPropertyDescriptor):
       
 19860         * runtime/StringObject.h:
       
 19861         * runtime/StringPrototype.cpp:
       
 19862         (JSC::StringPrototype::getOwnPropertyDescriptor):
       
 19863         * runtime/StringPrototype.h:
       
 19864 
       
 19865 2009-08-24  Gavin Barraclough  <barraclough@apple.com>
       
 19866 
       
 19867         Reviewed by Darin Adler.
       
 19868 
       
 19869         How many copies of the parameters do you need?
       
 19870         https://bugs.webkit.org/show_bug.cgi?id=28701
       
 19871 
       
 19872         The function parameters in JSC get copied a lot - and unnecessarily so.
       
 19873 
       
 19874         Originally this happened due to duplicating FunctionBodyNodes on recompilation,
       
 19875         though the problem has been exacerbated by copying the parameters from the
       
 19876         original function body onto the executable, then back onto the real body that
       
 19877         will be generated (this happens on every function).  And this is all made worse
       
 19878         since the data structures in question are a little ugly - C style arrays of C++
       
 19879         objects containing ref counts, so they need a full copy-construct (rather than
       
 19880         a simple memcpy).
       
 19881 
       
 19882         This can all be greatly simplified by just punting the parameters off into
       
 19883         their own ref-counted object, and forgoing all the copying.
       
 19884 
       
 19885         ~no performance change, possible slight progression.
       
 19886 
       
 19887         * bytecompiler/BytecodeGenerator.cpp:
       
 19888         (JSC::BytecodeGenerator::BytecodeGenerator):
       
 19889         * bytecompiler/BytecodeGenerator.h:
       
 19890         (JSC::BytecodeGenerator::makeFunction):
       
 19891         * parser/Nodes.cpp:
       
 19892         (JSC::FunctionParameters::FunctionParameters):
       
 19893         (JSC::FunctionBodyNode::FunctionBodyNode):
       
 19894         (JSC::FunctionBodyNode::finishParsing):
       
 19895         * parser/Nodes.h:
       
 19896         (JSC::FunctionBodyNode::parameters):
       
 19897         (JSC::FunctionBodyNode::parameterCount):
       
 19898         * runtime/Executable.cpp:
       
 19899         (JSC::FunctionExecutable::~FunctionExecutable):
       
 19900         (JSC::FunctionExecutable::compile):
       
 19901         (JSC::FunctionExecutable::reparseExceptionInfo):
       
 19902         (JSC::FunctionExecutable::fromGlobalCode):
       
 19903         (JSC::FunctionExecutable::paramString):
       
 19904         * runtime/Executable.h:
       
 19905         (JSC::FunctionExecutable::FunctionExecutable):
       
 19906         (JSC::FunctionExecutable::parameterCount):
       
 19907 
       
 19908 2009-08-25  Brent Fulgham  <bfulgham@webkit.org>
       
 19909 
       
 19910         Reviewed by NOBODY (Buildfix).
       
 19911 
       
 19912         * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_CFLite target
       
 19913           that inherits from the debug_wincairo property sheet and therefore
       
 19914           links to the proper debug library.
       
 19915         * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_CFLite target
       
 19916           that inherits from the debug_wincairo property sheet and therefore
       
 19917           links to the proper debug library.
       
 19918 
       
 19919 2009-08-25  Chris Marrin  <cmarrin@apple.com>
       
 19920 
       
 19921         Reviewed by Simon Fraser.
       
 19922 
       
 19923         Export tryFastMalloc for Canvas3D work
       
 19924         https://bugs.webkit.org/show_bug.cgi?id=28018
       
 19925 
       
 19926         * JavaScriptCore.exp:
       
 19927 
       
 19928 2009-08-25  David Levin  <levin@chromium.org>
       
 19929 
       
 19930         Reviewed by Adam Roben.
       
 19931 
       
 19932         PLATFORM(CFNETWORK) should be USE(CFNETWORK).
       
 19933         https://bugs.webkit.org/show_bug.cgi?id=28713
       
 19934 
       
 19935         * wtf/Platform.h: Added a #define to catch this issue in the
       
 19936         future. The define would generate an error on gcc without the
       
 19937         space in the expansion, but Visual C++ needs the space to cause an error.
       
 19938 
       
 19939 2009-08-24  Brent Fulgham  <bfulgham@webkit.org>
       
 19940 
       
 19941         Reviewed by Steve Falkenburg.
       
 19942 
       
 19943         Revise CFLite Debug build to emit DLL's with _debug label.
       
 19944         https://bugs.webkit.org/show_bug.cgi?id=28695.
       
 19945 
       
 19946         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modify
       
 19947           Cairo debug build to inherit from new debug_cairo property sheet.
       
 19948         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops:
       
 19949           Modify to look for debug CFLite when in debug build.
       
 19950 
       
 19951 2009-08-24  Gavin Barraclough  <barraclough@apple.com>
       
 19952 
       
 19953         Reviewed by Oliver Adler & Darin Hunt.
       
 19954 
       
 19955         https://bugs.webkit.org/show_bug.cgi?id=28691
       
 19956         Do not retain ScopeNodes outside of parsing
       
 19957         
       
 19958         There is now no need for these to exist outside of parsing - their use in the runtime is replaced by Executable types.
       
 19959 
       
 19960         * bytecode/EvalCodeCache.h:
       
 19961         (JSC::EvalCodeCache::get):
       
 19962         * bytecompiler/BytecodeGenerator.cpp:
       
 19963         (JSC::BytecodeGenerator::BytecodeGenerator):
       
 19964         (JSC::BytecodeGenerator::emitNewFunction):
       
 19965         (JSC::BytecodeGenerator::emitNewFunctionExpression):
       
 19966         * bytecompiler/BytecodeGenerator.h:
       
 19967         (JSC::BytecodeGenerator::makeFunction):
       
 19968         * debugger/Debugger.cpp:
       
 19969         (JSC::Debugger::recompileAllJSFunctions):
       
 19970         (JSC::evaluateInGlobalCallFrame):
       
 19971         * debugger/DebuggerCallFrame.cpp:
       
 19972         (JSC::DebuggerCallFrame::evaluate):
       
 19973         * interpreter/Interpreter.cpp:
       
 19974         (JSC::Interpreter::execute):
       
 19975         (JSC::Interpreter::prepareForRepeatCall):
       
 19976         (JSC::Interpreter::privateExecute):
       
 19977         * jit/JITStubs.cpp:
       
 19978         (JSC::DEFINE_STUB_FUNCTION):
       
 19979         * parser/Nodes.cpp:
       
 19980         (JSC::ScopeNodeData::ScopeNodeData):
       
 19981         (JSC::ProgramNode::create):
       
 19982         (JSC::EvalNode::create):
       
 19983         (JSC::FunctionBodyNode::create):
       
 19984         * parser/Nodes.h:
       
 19985         (JSC::ScopeNode::adoptData):
       
 19986         (JSC::FunctionBodyNode::parameterCount):
       
 19987         * parser/Parser.cpp:
       
 19988         * parser/Parser.h:
       
 19989         (JSC::Parser::arena):
       
 19990         (JSC::Parser::Parser):
       
 19991         (JSC::Parser::parse):
       
 19992         * runtime/ArrayPrototype.cpp:
       
 19993         (JSC::isNumericCompareFunction):
       
 19994         (JSC::arrayProtoFuncSort):
       
 19995         * runtime/Completion.cpp:
       
 19996         (JSC::checkSyntax):
       
 19997         (JSC::evaluate):
       
 19998         * runtime/Executable.cpp:
       
 19999         (JSC::FunctionExecutable::~FunctionExecutable):
       
 20000         (JSC::EvalExecutable::compile):
       
 20001         (JSC::ProgramExecutable::checkSyntax):
       
 20002         (JSC::ProgramExecutable::compile):
       
 20003         (JSC::FunctionExecutable::compile):
       
 20004         (JSC::EvalExecutable::generateJITCode):
       
 20005         (JSC::ProgramExecutable::generateJITCode):
       
 20006         (JSC::FunctionExecutable::generateJITCode):
       
 20007         (JSC::FunctionExecutable::reparseExceptionInfo):
       
 20008         (JSC::EvalExecutable::reparseExceptionInfo):
       
 20009         (JSC::FunctionExecutable::recompile):
       
 20010         (JSC::FunctionExecutable::fromGlobalCode):
       
 20011         (JSC::FunctionExecutable::copyParameters):
       
 20012         (JSC::FunctionExecutable::paramString):
       
 20013         * runtime/Executable.h:
       
 20014         (JSC::ScriptExecutable::ScriptExecutable):
       
 20015         (JSC::ScriptExecutable::sourceID):
       
 20016         (JSC::ScriptExecutable::sourceURL):
       
 20017         (JSC::ScriptExecutable::lineNo):
       
 20018         (JSC::ScriptExecutable::lastLine):
       
 20019         (JSC::ScriptExecutable::usesEval):
       
 20020         (JSC::ScriptExecutable::usesArguments):
       
 20021         (JSC::ScriptExecutable::needsActivation):
       
 20022         (JSC::ScriptExecutable::recordParse):
       
 20023         (JSC::EvalExecutable::bytecode):
       
 20024         (JSC::EvalExecutable::jitCode):
       
 20025         (JSC::ProgramExecutable::bytecode):
       
 20026         (JSC::ProgramExecutable::reparseExceptionInfo):
       
 20027         (JSC::ProgramExecutable::jitCode):
       
 20028         (JSC::FunctionExecutable::FunctionExecutable):
       
 20029         (JSC::FunctionExecutable::make):
       
 20030         (JSC::FunctionExecutable::bytecode):
       
 20031         (JSC::FunctionExecutable::isGenerated):
       
 20032         (JSC::FunctionExecutable::name):
       
 20033         (JSC::FunctionExecutable::parameterCount):
       
 20034         (JSC::FunctionExecutable::jitCode):
       
 20035         * runtime/FunctionConstructor.cpp:
       
 20036         (JSC::constructFunction):
       
 20037         * runtime/JSGlobalData.cpp:
       
 20038         (JSC::JSGlobalData::numericCompareFunction):
       
 20039         * runtime/JSGlobalObjectFunctions.cpp:
       
 20040         (JSC::globalFuncEval):
       
 20041 
       
 20042 2009-08-24  Darin Adler  <darin@apple.com>
       
 20043 
       
 20044         * runtime/ObjectPrototype.cpp:
       
 20045         (JSC::ObjectPrototype::put): Landed revised version I had tested but forgot
       
 20046         to land. Leave out the branch, since we don't need one.
       
 20047 
       
 20048 2009-08-24  Darin Adler  <darin@apple.com>
       
 20049 
       
 20050         Reviewed by Geoff Garen.
       
 20051 
       
 20052         Array index miss case creates a string every time
       
 20053         https://bugs.webkit.org/show_bug.cgi?id=28664
       
 20054 
       
 20055         SunSpider test results I saw:
       
 20056 
       
 20057             0.5% faster overall
       
 20058             1% faster on crypto-aes
       
 20059             20% faster on crypto-md5
       
 20060             13% faster on crypto-sha1
       
 20061 
       
 20062         * runtime/ObjectPrototype.cpp:
       
 20063         (JSC::ObjectPrototype::ObjectPrototype): Initialize m_hasNoPropertiesWithUInt32Names
       
 20064         to true.
       
 20065         (JSC::ObjectPrototype::put): Clearly m_hasNoPropertiesWithUInt32Names if the new
       
 20066         property has a name that is the string form of a UInt32.
       
 20067         (JSC::ObjectPrototype::getOwnPropertySlot): Don't call JSObject::getOwnPropertySlot
       
 20068         if m_hasNoPropertiesWithUInt32Names is true, and it is highly likely to be true.
       
 20069 
       
 20070         * runtime/ObjectPrototype.h: Added declarations for the above.
       
 20071 
       
 20072 2009-08-24  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
       
 20073 
       
 20074         Unreviewed. Fix a typo in my distcheck build fix.
       
 20075 
       
 20076         * GNUmakefile.am:
       
 20077 
       
 20078 2009-08-23  Gustavo Noronha Silva  <gns@gnome.org>
       
 20079 
       
 20080         Unreviewed build fix for make distcheck.
       
 20081 
       
 20082         * GNUmakefile.am: Added files required for the build.
       
 20083 
       
 20084 2009-08-22  Maciej Stachowiak  <mjs@apple.com>
       
 20085 
       
 20086         Reviewed by Mark Rowe.
       
 20087 
       
 20088         REGRESSION(r47639-r47660): Webkit crashes on launch on PowerPC
       
 20089         https://bugs.webkit.org/show_bug.cgi?id=28655
       
 20090 
       
 20091         * runtime/JSFunction.cpp:
       
 20092         (JSC::JSFunction::JSFunction): Initialize properly with a VPtrHackExecutable.
       
 20093         * wtf/Platform.h:
       
 20094 
       
 20095 2009-08-22  Darin Adler  <darin@apple.com>
       
 20096 
       
 20097         Fix storage leak from syntax tree arena allocation patch.
       
 20098 
       
 20099         * parser/Nodes.h: CommaNode needs to inherit from ParserArenaDeletable
       
 20100         because it has a vector.
       
 20101 
       
 20102 2009-08-21  Darin Adler  <darin@apple.com>
       
 20103 
       
 20104         Fix Qt build.
       
 20105 
       
 20106         * parser/Nodes.cpp:
       
 20107         (JSC::ScopeNodeData::ScopeNodeData): Made non-inline again.
       
 20108         This is used outside Nodes.cpp so can't be inline unless
       
 20109         it is in the header.
       
 20110 
       
 20111 2009-08-21  Darin Adler  <darin@apple.com>
       
 20112 
       
 20113         Two loose ends from the last commit.
       
 20114 
       
 20115         * JavaScriptCore.xcodeproj/project.pbxproj: Made ParserArena.h
       
 20116         and create_hash_table project-internal instead of "private".
       
 20117         * runtime/Executable.h: Removed accidentally-added constructor.
       
 20118 
       
 20119 2009-08-21  Darin Adler  <darin@apple.com>
       
 20120 
       
 20121         Reviewed by Gavin Barraclough.
       
 20122 
       
 20123         Syntax tree nodes should use arena allocation
       
 20124         https://bugs.webkit.org/show_bug.cgi?id=25674
       
 20125 
       
 20126         Use an actual arena now. 0.6% speedup on SunSpider.
       
 20127 
       
 20128         New and improved with 100% less leaking of the universe.
       
 20129 
       
 20130         * JavaScriptCore.exp:
       
 20131         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 20132         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 20133         Removed all exports involving the class FunctionBodyNode, which no
       
 20134         longer needs to be used outside JavaScriptCore.
       
 20135 
       
 20136         * JavaScriptCore.xcodeproj/project.pbxproj: Made Nodes.h and
       
 20137         Executable.h project-internal instead of "private".
       
 20138 
       
 20139         * bytecompiler/BytecodeGenerator.cpp:
       
 20140         (JSC::BytecodeGenerator::BytecodeGenerator): Updated since VarStack
       
 20141         contains const Identifier* now.
       
 20142 
       
 20143         * parser/Grammar.y: Made identifiers from the lexer be const
       
 20144         Identifier* and updated since VarStack contains const Identifier* now.
       
 20145 
       
 20146         * parser/Lexer.cpp:
       
 20147         (JSC::Lexer::setCode): Pass in ParserArena, used for identifiers.
       
 20148         (JSC::Lexer::makeIdentifier): Changed return type to const Identifier*
       
 20149         and changed to call ParserArena.
       
 20150         (JSC::Lexer::clear): Removed the code to manage m_identifiers and
       
 20151         added code to set m_arena to 0.
       
 20152         * parser/Lexer.h: Updated for changes above.
       
 20153 
       
 20154         * parser/NodeConstructors.h:
       
 20155         (JSC::ParserArenaFreeable::operator new): Added. Calls allocateFreeable
       
 20156         on the arena.
       
 20157         (JSC::ParserArenaDeletable::operator new): Changed to call the
       
 20158         allocateDeletable function on the arena instead of deleteWithArena.
       
 20159         (JSC::PropertyNode::PropertyNode): Added new constructor that makes
       
 20160         numeric identifiers. Some day we might want to optimize this for
       
 20161         integers so it doesn't create a string for each one.
       
 20162         (JSC::ContinueNode::ContinueNode): Initialize m_ident to nullIdentifier
       
 20163         since it's now a const Identifier& so it can't be left uninitialized.
       
 20164         (JSC::BreakNode::BreakNode): Ditto.
       
 20165         (JSC::CaseClauseNode::CaseClauseNode): Updated to use SourceElements*
       
 20166         to keep track of the statements rather than a separate statement vector.
       
 20167         (JSC::BlockNode::BlockNode): Ditto.
       
 20168         (JSC::ForInNode::ForInNode): Initialize m_ident to nullIdentifier.
       
 20169 
       
 20170         * parser/Nodes.cpp: Moved the comment explaining emitBytecode in here.
       
 20171         It seemed strangely out of place in the header.
       
 20172         (JSC::ThrowableExpressionData::emitThrowError): Added an overload for
       
 20173         UString as well as Identifier.
       
 20174         (JSC::SourceElements::singleStatement): Added.
       
 20175         (JSC::SourceElements::lastStatement): Added.
       
 20176         (JSC::RegExpNode::emitBytecode): Changed the throwError code to use
       
 20177         the substitution mechanism instead of doing a string append.
       
 20178         (JSC::SourceElements::emitBytecode): Added. Replaces the old
       
 20179         statementListEmitCode function, since we now keep the SourceElements
       
 20180         objects around.
       
 20181         (JSC::BlockNode::lastStatement): Added.
       
 20182         (JSC::BlockNode::emitBytecode): Changed to use emitBytecode instead of
       
 20183         statementListEmitCode.
       
 20184         (JSC::CaseClauseNode::emitBytecode): Added.
       
 20185         (JSC::CaseBlockNode::emitBytecodeForBlock): Changed to use emitBytecode
       
 20186         instead of statementListEmitCode.
       
 20187         (JSC::ScopeNodeData::ScopeNodeData): Changed to store the
       
 20188         SourceElements* instead of using releaseContentsIntoVector.
       
 20189         (JSC::ScopeNode::emitStatementsBytecode): Added.
       
 20190         (JSC::ScopeNode::singleStatement): Added.
       
 20191         (JSC::ProgramNode::emitBytecode): Call emitStatementsBytecode instead
       
 20192         of statementListEmitCode.
       
 20193         (JSC::EvalNode::emitBytecode): Ditto.
       
 20194         (JSC::FunctionBodyNode::emitBytecode): Call emitStatementsBytecode
       
 20195         insetad of statementListEmitCode and check for the return node using
       
 20196         the new functions.
       
 20197 
       
 20198         * parser/Nodes.h: Changed VarStack to store const Identifier* instead
       
 20199         of Identifier and rely on the arena to control lifetime. Added a new
       
 20200         ParserArenaFreeable class. Made ParserArenaDeletable inherit from
       
 20201         FastAllocBase instead of having its own operator new. Base the Node
       
 20202         class on ParserArenaFreeable. Changed the various Node classes
       
 20203         to use const Identifier& instead of Identifier to avoid the need to
       
 20204         call their destructors and allow them to function as "freeable" in the
       
 20205         arena. Removed extraneous JSC_FAST_CALL on definitions of inline functions.
       
 20206         Changed ElementNode, PropertyNode, ArgumentsNode, ParameterNode,
       
 20207         CaseClauseNode, ClauseListNode, and CaseBlockNode to use ParserArenaFreeable
       
 20208         as a base class since they do not descend from Node. Eliminated the
       
 20209         StatementVector type and instead have various classes use SourceElements*
       
 20210         instead of StatementVector. This prevents those classes from having to
       
 20211         use ParserArenaDeletable to make sure the vector destructor is called.
       
 20212 
       
 20213         * parser/Parser.cpp:
       
 20214         (JSC::Parser::parse): Pass the arena to the lexer.
       
 20215 
       
 20216         * parser/Parser.h: Added an include of ParserArena.h, which is no longer
       
 20217         included by Nodes.h.
       
 20218         (JSC::Parser::parseFunctionFromGlobalCode): Changed to use the
       
 20219         singleStatement function, since there is no longer any children function.
       
 20220         Removed some unneeded use of RefPtr.
       
 20221 
       
 20222         * parser/ParserArena.cpp:
       
 20223         (JSC::ParserArena::ParserArena): Added. Initializes the new members,
       
 20224         m_freeableMemory, m_freeablePoolEnd, and m_identifiers.
       
 20225         (JSC::ParserArena::freeablePool): Added. Computes the pool pointer,
       
 20226         since we store only the current pointer and the end of pool pointer.
       
 20227         (JSC::ParserArena::deallocateObjects): Added. Contains the common
       
 20228         memory-deallocation logic used by both the destructor and the
       
 20229         reset function.
       
 20230         (JSC::ParserArena::~ParserArena): Changed to call deallocateObjects.
       
 20231         (JSC::ParserArena::reset): Ditto. Also added code to zero out the
       
 20232         new structures, and switched to use clear() instead of shrink(0) since
       
 20233         we don't really reuse arenas.
       
 20234         (JSC::ParserArena::makeNumericIdentifier): Added.
       
 20235         (JSC::ParserArena::allocateFreeablePool): Added. Used when the pool
       
 20236         is empty.
       
 20237         (JSC::ParserArena::isEmpty): Added. No longer inline, which is fine
       
 20238         since this is used only for assertions at the moment.
       
 20239         (JSC::ParserArena::derefWithArena): Make non-inline.
       
 20240 
       
 20241         * parser/ParserArena.h: Added an actual arena of "freeable" objects,
       
 20242         ones that don't need destructors to be called. Also added a separate
       
 20243         IdentifierArena object, a segmented vector of identifiers that used
       
 20244         to be in the Lexer.
       
 20245 
       
 20246         * runtime/Executable.h: Moved the definition of the
       
 20247         FunctionExecutable::make function here. It can't go in JSFunction.h
       
 20248         since that header has to be used outside JavaScriptCore and so can't
       
 20249         include this, which includes Nodes.h. The function could be moved
       
 20250         elswhere if we don't want to include JSFunction.h in this header, but
       
 20251         for now this seems to be the best place.
       
 20252 
       
 20253         * runtime/JSFunction.h: Removed the include of Executable.h and
       
 20254         definition of the FunctionExecutable::make function.
       
 20255 
       
 20256         * wtf/FastMalloc.cpp: Fixed an incorrect comment.
       
 20257 
       
 20258 2009-08-21  Mark Rowe  <mrowe@apple.com>
       
 20259 
       
 20260         Fix the non-JIT build.
       
 20261 
       
 20262         * runtime/Executable.cpp:
       
 20263         * runtime/Executable.h:
       
 20264 
       
 20265 2009-08-21  Gavin Barraclough  <barraclough@apple.com>
       
 20266 
       
 20267         Speculative QuickTime build fix.
       
 20268 
       
 20269         * runtime/JSArray.cpp:
       
 20270 
       
 20271 2009-08-21  Gavin Barraclough  <barraclough@apple.com>
       
 20272 
       
 20273         Speculative QT build fix.
       
 20274 
       
 20275         * runtime/StringPrototype.cpp:
       
 20276 
       
 20277 2009-08-21  Gavin Barraclough  <barraclough@apple.com>
       
 20278 
       
 20279         Reviewed by Oliver Hunt.
       
 20280 
       
 20281         Restructure Executable types so that host functions do not hold a FunctionExecutable.
       
 20282         https://bugs.webkit.org/show_bug.cgi?id=28621
       
 20283 
       
 20284         All JSFunction objects have a pointer to an Executable*.  This is currently always a
       
 20285         FunctionExecutable, however this has a couple of drawbacks.  Host functions do not
       
 20286         store a range of information that the FunctionExecutable provides (source, name,
       
 20287         CodeBlock & information presently held on the FunctionBodyNode). 
       
 20288 
       
 20289         [ * nearly all... see below! ]
       
 20290 
       
 20291         Instead, make JSFunctions hold a pointer to an ExecutableBase, move fields specific
       
 20292         to JS sourced executable types (source, node) into a new subclass (ScriptExecutable),
       
 20293         and create a new NativeExecutable type.  We now provide a new method in JSFunction
       
 20294         to access & downcast to FunctionExecutable, but in doing so we can make an early
       
 20295         check (with an ASSERT) to ensure that the Executable read from a function will only
       
 20296         be treated as a FunctionExecutable (and thus the JS sepcific fields will only be
       
 20297         accessed) if the JSFunction is not a host function.
       
 20298 
       
 20299         There is one JSFunction that currently does not have an Executable, which is the
       
 20300         object created to allow us to read out the vtable pointer.  By making this change
       
 20301         we can also add a new Executable type fror this object (VPtrHackExecutable).
       
 20302         Since this means that really all JSFunctions have an Executable we no longer have
       
 20303         to null-check m_executable before us it - particularly in isHostFunction().
       
 20304 
       
 20305         This patch removes CacheableEvalExecutable, since all subclasses of ExecutableBase
       
 20306         can now be ref-counted - since both JSFunction holds (and ref-counts) an ExecutableBase
       
 20307         that might be a FunctionExecutable or a NativeExecutable.  This does now mean that all
       
 20308         ProgramExecutables and EvalExecutables (unnecessarily) provide an interface to be
       
 20309         ref-counted, however this seems less-bad than host functions unnecessarily providing
       
 20310         interface to access non-host specific information.
       
 20311 
       
 20312         The class hierarcy has changed from this:
       
 20313         
       
 20314         - ExecutableBase
       
 20315             - ProgramExecutable
       
 20316             - EvalExecutable
       
 20317                 - CacheableEvalExecutable (also RefCounted by multiple-inheritance)
       
 20318             - FunctionExecutable (also RefCounted by multiple-inheritance, 'special' FunctionExecutable also used for host functions)
       
 20319 
       
 20320         To this:
       
 20321         
       
 20322         - RefCounted
       
 20323             - ExecutableBase
       
 20324                 - NativeExecutable
       
 20325                 - VPtrHackExecutable
       
 20326                 - ScriptExecutable
       
 20327                     - ProgramExecutable
       
 20328                     - EvalExecutable
       
 20329                     - FunctionExecutable
       
 20330 
       
 20331         This patch speeds up sunspidey by a couple of ms (presumably due to the changes to isHostFunction()).
       
 20332 
       
 20333         * bytecode/CodeBlock.cpp:
       
 20334         (JSC::CodeBlock::CodeBlock):
       
 20335         * bytecode/CodeBlock.h:
       
 20336         (JSC::CodeBlock::ownerExecutable):
       
 20337         (JSC::GlobalCodeBlock::GlobalCodeBlock):
       
 20338         * bytecode/EvalCodeCache.h:
       
 20339         (JSC::EvalCodeCache::get):
       
 20340         * debugger/Debugger.cpp:
       
 20341         (JSC::Debugger::recompileAllJSFunctions):
       
 20342         * interpreter/CachedCall.h:
       
 20343         (JSC::CachedCall::CachedCall):
       
 20344         * interpreter/Interpreter.cpp:
       
 20345         (JSC::Interpreter::callEval):
       
 20346         (JSC::Interpreter::privateExecute):
       
 20347         * jit/JITStubs.cpp:
       
 20348         (JSC::DEFINE_STUB_FUNCTION):
       
 20349         * profiler/Profiler.cpp:
       
 20350         (JSC::createCallIdentifierFromFunctionImp):
       
 20351         * runtime/Arguments.h:
       
 20352         (JSC::Arguments::getArgumentsData):
       
 20353         (JSC::Arguments::Arguments):
       
 20354         * runtime/Executable.cpp:
       
 20355         (JSC::NativeExecutable::~NativeExecutable):
       
 20356         (JSC::VPtrHackExecutable::~VPtrHackExecutable):
       
 20357         * runtime/Executable.h:
       
 20358         (JSC::ExecutableBase::ExecutableBase):
       
 20359         (JSC::ExecutableBase::~ExecutableBase):
       
 20360         (JSC::ExecutableBase::isHostFunction):
       
 20361         (JSC::NativeExecutable::NativeExecutable):
       
 20362         (JSC::VPtrHackExecutable::VPtrHackExecutable):
       
 20363         (JSC::ScriptExecutable::ScriptExecutable):
       
 20364         (JSC::ScriptExecutable::source):
       
 20365         (JSC::ScriptExecutable::sourceID):
       
 20366         (JSC::ScriptExecutable::sourceURL):
       
 20367         (JSC::ScriptExecutable::lineNo):
       
 20368         (JSC::ScriptExecutable::lastLine):
       
 20369         (JSC::ScriptExecutable::usesEval):
       
 20370         (JSC::ScriptExecutable::usesArguments):
       
 20371         (JSC::ScriptExecutable::needsActivation):
       
 20372         (JSC::EvalExecutable::EvalExecutable):
       
 20373         (JSC::EvalExecutable::create):
       
 20374         (JSC::ProgramExecutable::ProgramExecutable):
       
 20375         (JSC::FunctionExecutable::FunctionExecutable):
       
 20376         * runtime/FunctionPrototype.cpp:
       
 20377         (JSC::functionProtoFuncToString):
       
 20378         * runtime/JSFunction.cpp:
       
 20379         (JSC::JSFunction::JSFunction):
       
 20380         (JSC::JSFunction::~JSFunction):
       
 20381         (JSC::JSFunction::markChildren):
       
 20382         (JSC::JSFunction::getCallData):
       
 20383         (JSC::JSFunction::call):
       
 20384         (JSC::JSFunction::lengthGetter):
       
 20385         (JSC::JSFunction::getConstructData):
       
 20386         (JSC::JSFunction::construct):
       
 20387         * runtime/JSFunction.h:
       
 20388         (JSC::JSFunction::executable):
       
 20389         (JSC::JSFunction::jsExecutable):
       
 20390         (JSC::JSFunction::isHostFunction):
       
 20391 
       
 20392 2009-08-20  Oliver Hunt  <oliver@apple.com>
       
 20393 
       
 20394         Reviewed by Maciej Stachowiak.
       
 20395 
       
 20396         Browser hangs on opening Web Inspector.
       
 20397         https://bugs.webkit.org/show_bug.cgi?id=28438
       
 20398 
       
 20399         Code generation needs to be able to walk the entire scopechain in some
       
 20400         cases, however the symbol table used by activations was a member of the
       
 20401         codeblock.  Following recompilation this may no longer exist, leading
       
 20402         to a crash or hang on lookup.
       
 20403 
       
 20404         We fix this by introducing a refcounted SymbolTable subclass, SharedSymbolTable,
       
 20405         for the CodeBlocks used by function code.  This allows activations to
       
 20406         maintain ownership of a copy of the symbol table even after recompilation so
       
 20407         they can continue to work.
       
 20408 
       
 20409         * bytecode/CodeBlock.cpp:
       
 20410         (JSC::CodeBlock::CodeBlock):
       
 20411         * bytecode/CodeBlock.h:
       
 20412         (JSC::CodeBlock::symbolTable):
       
 20413         (JSC::CodeBlock::sharedSymbolTable):
       
 20414         (JSC::GlobalCodeBlock::GlobalCodeBlock):
       
 20415         (JSC::FunctionCodeBlock::FunctionCodeBlock):
       
 20416         (JSC::FunctionCodeBlock::~FunctionCodeBlock):
       
 20417         * interpreter/Interpreter.cpp:
       
 20418         (JSC::Interpreter::retrieveArguments):
       
 20419         * runtime/Executable.cpp:
       
 20420         (JSC::EvalExecutable::generateBytecode):
       
 20421         (JSC::FunctionExecutable::generateBytecode):
       
 20422         (JSC::FunctionExecutable::reparseExceptionInfo):
       
 20423         (JSC::EvalExecutable::reparseExceptionInfo):
       
 20424         * runtime/JSActivation.h:
       
 20425         (JSC::JSActivation::JSActivationData::JSActivationData):
       
 20426         (JSC::JSActivation::JSActivationData::~JSActivationData):
       
 20427         * runtime/SymbolTable.h:
       
 20428 
       
 20429 2009-08-20  Xan Lopez  <xlopez@igalia.com>
       
 20430 
       
 20431         Add new file to GTK+ build.
       
 20432 
       
 20433         * GNUmakefile.am:
       
 20434 
       
 20435 2009-08-20  Geoffrey Garen  <ggaren@apple.com>
       
 20436 
       
 20437         Reviewed by Maciej Stachowiak.
       
 20438 
       
 20439         Added a number => string cache.
       
 20440         
       
 20441         1.07x faster on v8 (1.7x faster on v8-splay).
       
 20442         1.004x faster on SunSpider.
       
 20443 
       
 20444         * runtime/JSCell.h: Moved JSValue::toString to JSString.h.
       
 20445         * runtime/JSGlobalData.h: Holds the cache.
       
 20446         * runtime/JSNumberCell.cpp:
       
 20447         (JSC::JSNumberCell::toString):
       
 20448         (JSC::JSNumberCell::toThisString): Removed -0 special case.
       
 20449         UString handles this now, since too many clients were
       
 20450         special-casing it.
       
 20451 
       
 20452         * runtime/JSString.h:
       
 20453         (JSC::JSValue::toString): Use the cache when converting
       
 20454         an int or double to string.
       
 20455 
       
 20456         * runtime/Operations.h:
       
 20457         (JSC::concatenateStrings): Call toString to take advantage
       
 20458         of the cache.
       
 20459 
       
 20460         * runtime/SmallStrings.h:
       
 20461         (JSC::NumericStrings::add):
       
 20462         (JSC::NumericStrings::lookup): The cache.
       
 20463 
       
 20464         * runtime/UString.cpp:
       
 20465         (JSC::UString::from): Added -0 special case mentioned above.
       
 20466         Removed appendNumeric because it's mutually exclusive with the
       
 20467         cache.
       
 20468 
       
 20469 2009-08-20  Oliver Hunt  <oliver@apple.com>
       
 20470 
       
 20471         Reviewed by Gavin Barraclough.
       
 20472 
       
 20473         REGRESSION: fast/profiler/call.html is crashing occasionally
       
 20474         https://bugs.webkit.org/show_bug.cgi?id=28476
       
 20475 
       
 20476         Using the codeblock for information about how many parameters and
       
 20477         locals a function has is unsafe in certain circumstances.  The
       
 20478         basic scenario is all function code being cleared in response to
       
 20479         the debugger or profiler being enabled, and then an activation is
       
 20480         marked before its associated function is re-executed.
       
 20481 
       
 20482         To deal with this scenario we store the variable count of a function
       
 20483         directly in the FunctionExecutable, and then use that information.
       
 20484 
       
 20485         * runtime/Arguments.h:
       
 20486         (JSC::Arguments::getArgumentsData):
       
 20487         * runtime/Executable.cpp:
       
 20488         (JSC::FunctionExecutable::generateBytecode):
       
 20489         * runtime/Executable.h:
       
 20490         (JSC::FunctionExecutable::FunctionExecutable):
       
 20491         (JSC::FunctionExecutable::variableCount):
       
 20492         * runtime/JSActivation.cpp:
       
 20493         (JSC::JSActivation::markChildren):
       
 20494 
       
 20495 2009-08-20  Gavin Barraclough  <barraclough@apple.com>
       
 20496 
       
 20497         Reviewed by Oliver Hunt.
       
 20498 
       
 20499         Numbering of arguments to emitGetJITStubArg/emitPutJITStubArg incorrect
       
 20500         <bug lost in the great bug disasteroony of 08/20/09!>
       
 20501 
       
 20502         The argumentNumber argument to emitGetJITStubArg/emitPutJITStubArg should match
       
 20503         the argument number used within the stub functions in JITStubs.cpp, but it doesn't.
       
 20504 
       
 20505         Firstly, all the numbers changed when we added a void* 'reserved' as the first slot
       
 20506         (rather than leaving argument 0 unused), and secondly in 32_64 builds the index to
       
 20507         peek/poke needs to be multiplies by 2 (since the argument to peek/poke is a number
       
 20508         of machine words, and on 32_64 build the argument slots to stub functions are two
       
 20509         words wide).
       
 20510 
       
 20511         * jit/JIT.h:
       
 20512         * jit/JITCall.cpp:
       
 20513         (JSC::JIT::compileOpCallSetupArgs):
       
 20514         (JSC::JIT::compileOpConstructSetupArgs):
       
 20515         (JSC::JIT::compileOpCallVarargsSetupArgs):
       
 20516         (JSC::JIT::compileOpCall):
       
 20517         * jit/JITInlineMethods.h:
       
 20518         (JSC::JIT::emitPutJITStubArg):
       
 20519         (JSC::JIT::emitPutJITStubArgConstant):
       
 20520         (JSC::JIT::emitGetJITStubArg):
       
 20521         (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
       
 20522         * jit/JITOpcodes.cpp:
       
 20523         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 20524         * jit/JITPropertyAccess.cpp:
       
 20525         (JSC::JIT::privateCompilePutByIdTransition):
       
 20526 
       
 20527 2009-08-20  Oliver Hunt  <oliver@apple.com>
       
 20528 
       
 20529         Reviewed by Geoff Garen.
       
 20530 
       
 20531         REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest
       
 20532         https://bugs.webkit.org/show_bug.cgi?id=28332
       
 20533 
       
 20534         Follow up style fixes that were missed in review.
       
 20535 
       
 20536         * runtime/Structure.cpp:
       
 20537         (JSC::Structure::hasTransition):
       
 20538         * runtime/Structure.h:
       
 20539         (JSC::Structure::get):
       
 20540         (JSC::StructureTransitionTable::contains):
       
 20541         * runtime/StructureTransitionTable.h:
       
 20542         (JSC::StructureTransitionTable::add):
       
 20543 
       
 20544 2009-08-20  Oliver Hunt  <oliver@apple.com>
       
 20545 
       
 20546         Add new exports to windows jsc build
       
 20547 
       
 20548         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 20549         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 20550 
       
 20551 2009-08-20  Oliver Hunt  <oliver@apple.com>
       
 20552 
       
 20553         Reviewed by Gavin Barraclough.
       
 20554 
       
 20555         REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest
       
 20556         https://bugs.webkit.org/show_bug.cgi?id=28332
       
 20557 
       
 20558         The method check optimisation made transitions aware of the value being
       
 20559         assigned when a transition was assigning a function.  This had the side
       
 20560         effect of making every assignment of a function expression result in a
       
 20561         new transition, and thus a new Structure.  The net result of this is that
       
 20562         the common JS idiom of
       
 20563 
       
 20564             function MyObject() {
       
 20565                 this.myFunction = function(...){...};
       
 20566             }
       
 20567             new MyObject();
       
 20568 
       
 20569         Will produce a unique structure on every iteration, meaning that all
       
 20570         caching is defeated and there is a significant amount of structure churn.
       
 20571 
       
 20572         The fix is to return the transition to its original form where it is
       
 20573         keyed off a property name + attributes tuple, but have each transition
       
 20574         support an optional transition on a specific value.
       
 20575 
       
 20576         * JavaScriptCore.exp:
       
 20577         * runtime/JSObject.h:
       
 20578         (JSC::JSObject::putDirectInternal):
       
 20579         * runtime/Structure.cpp:
       
 20580         (JSC::Structure::~Structure):
       
 20581         (JSC::Structure::addPropertyTransitionToExistingStructure):
       
 20582         (JSC::Structure::addPropertyTransition):
       
 20583         (JSC::Structure::hasTransition):
       
 20584         * runtime/Structure.h:
       
 20585         (JSC::Structure::transitionedFor):
       
 20586         (JSC::Structure::hasTransition):
       
 20587         (JSC::Structure::):
       
 20588         (JSC::StructureTransitionTable::contains):
       
 20589         (JSC::StructureTransitionTable::get):
       
 20590         * runtime/StructureTransitionTable.h:
       
 20591         (JSC::StructureTransitionTableHashTraits::emptyValue):
       
 20592         (JSC::StructureTransitionTable::hasTransition):
       
 20593         (JSC::StructureTransitionTable::remove):
       
 20594         (JSC::StructureTransitionTable::add):
       
 20595 
       
 20596 2009-08-20  Gavin Barraclough  <barraclough@apple.com>
       
 20597 
       
 20598         Reviewed by Oliver Hunt.
       
 20599 
       
 20600         Remove FunctionCodeBlock.
       
 20601         https://bugs.webkit.org/show_bug.cgi?id=28502
       
 20602 
       
 20603         These only exist to allow JIT code to dereference properties off the
       
 20604         CodeBlock for any callee, regardless of whether it is a host function.
       
 20605 
       
 20606         Instead just use the FunctionExecutable.  Copy the m_parameters field
       
 20607         from the CodeBlock into the Executable, and use this to distinguish
       
 20608         between host functions, functions that have been bytecompiled, and
       
 20609         functions that have not.
       
 20610 
       
 20611         m_parameters is moved to ExecutableBase rather than FunctionExecutable
       
 20612         so that (as a separate change) we can move make a separate class of
       
 20613         executable for host code, which is not devived from FunctionExecutable
       
 20614         (host code does not feature any of the properties that normal executable
       
 20615         do and will provide, such as source, attributes, and a parsed name).
       
 20616 
       
 20617         1% win on v8 tests, 0.5% on sunspider.
       
 20618 
       
 20619         * bytecode/CodeBlock.cpp:
       
 20620         (JSC::CodeBlock::derefStructures):
       
 20621         (JSC::CodeBlock::refStructures):
       
 20622         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
       
 20623         (JSC::CodeBlock::handlerForBytecodeOffset):
       
 20624         (JSC::CodeBlock::lineNumberForBytecodeOffset):
       
 20625         (JSC::CodeBlock::expressionRangeForBytecodeOffset):
       
 20626         (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
       
 20627         (JSC::CodeBlock::functionRegisterForBytecodeOffset):
       
 20628         (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset):
       
 20629         (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset):
       
 20630         * bytecode/CodeBlock.h:
       
 20631         (JSC::):
       
 20632         (JSC::CodeBlock::source):
       
 20633         (JSC::CodeBlock::sourceOffset):
       
 20634         (JSC::CodeBlock::evalCodeCache):
       
 20635         (JSC::CodeBlock::createRareDataIfNecessary):
       
 20636         
       
 20637             remove NativeCodeBlocks and the NativeCode code type.
       
 20638         
       
 20639         * jit/JIT.cpp:
       
 20640         (JSC::JIT::linkCall):
       
 20641 
       
 20642             Revert to previous behaviour (as currently still commented!) that Hhost functions have a null codeblock.
       
 20643 
       
 20644         * jit/JITCall.cpp:
       
 20645         (JSC::JIT::compileOpCallInitializeCallFrame):
       
 20646         (JSC::JIT::compileOpCallSetupArgs):
       
 20647         (JSC::JIT::compileOpCallVarargsSetupArgs):
       
 20648         (JSC::JIT::compileOpConstructSetupArgs):
       
 20649         (JSC::JIT::compileOpCallVarargs):
       
 20650         (JSC::JIT::compileOpCall):
       
 20651         (JSC::JIT::compileOpCallSlowCase):
       
 20652 
       
 20653             Bring the 32_64 & non-32_64 JITs into line with each other, callee in regT0.
       
 20654 
       
 20655         * jit/JITOpcodes.cpp:
       
 20656         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 20657 
       
 20658             Rewrite call trampolines to not use the CodeBlock.
       
 20659 
       
 20660         * jit/JITStubs.cpp:
       
 20661         (JSC::DEFINE_STUB_FUNCTION):
       
 20662 
       
 20663             Make call_JSFunction & call_arityCheck return the callee, don't expect to be passed the CodeBlock.
       
 20664 
       
 20665         * runtime/Executable.cpp:
       
 20666         (JSC::FunctionExecutable::generateBytecode):
       
 20667         (JSC::FunctionExecutable::recompile):
       
 20668         (JSC::FunctionExecutable::FunctionExecutable):
       
 20669         * runtime/Executable.h:
       
 20670         (JSC::ExecutableBase::):
       
 20671         (JSC::ExecutableBase::ExecutableBase):
       
 20672         (JSC::FunctionExecutable::isHostFunction):
       
 20673 
       
 20674             Add m_numParameters.
       
 20675 
       
 20676         * runtime/JSFunction.cpp:
       
 20677         (JSC::JSFunction::~JSFunction):
       
 20678 
       
 20679             Only call generatedBytecode() on JSFunctions non-host FunctionExecutables.
       
 20680 
       
 20681 2009-08-20  Yongjun Zhang  <yongjun.zhang@nokia.com>
       
 20682 
       
 20683         Reviewed by Eric Seidel.
       
 20684 
       
 20685         https://bugs.webkit.org/show_bug.cgi?id=28054
       
 20686        
       
 20687         Use a helper function to work around winscw compiler forward declaration bug
       
 20688         regarding templated classes.
       
 20689 
       
 20690         Add parenthesis around (PassRefPtr::*UnspecifiedBoolType) to make winscw compiler
       
 20691         work with the default UnSpecifiedBoolType() operator, which removes the winscw
       
 20692         specific bool cast hack.
       
 20693 
       
 20694         * wtf/PassRefPtr.h:
       
 20695         (WTF::derefIfNotNull):
       
 20696         (WTF::PassRefPtr::~PassRefPtr):
       
 20697 
       
 20698 2009-08-19  Yong Li  <yong.li@torchmobile.com>
       
 20699 
       
 20700         Reviewed by Gavin Barraclough.
       
 20701 
       
 20702         Change namespace ARM to ARMRegisters
       
 20703         X86 to X86Registers to avoid conflict with macros
       
 20704         https://bugs.webkit.org/show_bug.cgi?id=28428
       
 20705 
       
 20706         * assembler/ARMAssembler.cpp:
       
 20707         * assembler/ARMAssembler.h:
       
 20708         * assembler/ARMv7Assembler.h:
       
 20709         * assembler/MacroAssemblerARM.h:
       
 20710         * assembler/MacroAssemblerARMv7.h:
       
 20711         * assembler/MacroAssemblerX86Common.h:
       
 20712         * assembler/MacroAssemblerX86_64.h:
       
 20713         * assembler/X86Assembler.h:
       
 20714         * jit/JIT.h:
       
 20715         * jit/JITArithmetic.cpp:
       
 20716         * jit/JITInlineMethods.h:
       
 20717         * jit/JITOpcodes.cpp:
       
 20718         * wrec/WRECGenerator.cpp:
       
 20719         * wrec/WRECGenerator.h:
       
 20720         * yarr/RegexJIT.cpp:
       
 20721 
       
 20722 2009-08-19  Oliver Hunt  <oliver@apple.com>
       
 20723 
       
 20724         Reviewed by Gavin Barraclough.
       
 20725 
       
 20726         Devirtualise marking
       
 20727         https://bugs.webkit.org/show_bug.cgi?id=28294
       
 20728 
       
 20729         We actually need to mark the value in a number object if we're using the
       
 20730         32bit number representation.
       
 20731 
       
 20732         * runtime/NumberObject.h:
       
 20733         (JSC::NumberObject::createStructure):
       
 20734 
       
 20735 2009-08-19  Gavin Barraclough  <barraclough@apple.com>
       
 20736 
       
 20737         Reviewed by Darin Adler.
       
 20738 
       
 20739          We probably shouldn't be keeping the AST for eval nodes around forevar.
       
 20740         https://bugs.webkit.org/show_bug.cgi?id=28469
       
 20741 
       
 20742         EvalNodes don't destroyData() (delete their parser data) since they need to hold onto
       
 20743         their varStack.  Copy a list of variable onto EvalCodeBlock, and this can go away.
       
 20744 
       
 20745         * bytecode/CodeBlock.h:
       
 20746         (JSC::EvalCodeBlock::variable):
       
 20747         (JSC::EvalCodeBlock::numVariables):
       
 20748         (JSC::EvalCodeBlock::adoptVariables):
       
 20749         * bytecompiler/BytecodeGenerator.cpp:
       
 20750         (JSC::BytecodeGenerator::BytecodeGenerator):
       
 20751         * interpreter/Interpreter.cpp:
       
 20752         (JSC::Interpreter::execute):
       
 20753         * parser/Nodes.h:
       
 20754         * runtime/Executable.cpp:
       
 20755         (JSC::EvalExecutable::generateBytecode):
       
 20756         * runtime/Executable.h:
       
 20757 
       
 20758 2009-08-19  Jungshik Shin  <jshin@chromium.org>
       
 20759 
       
 20760         Reviewed by Darin Adler.
       
 20761 
       
 20762         http://bugs.webkit.org/show_bug.cgi?id=28441
       
 20763 
       
 20764         Fix a build issue with ICU 4.2 or later on Windows with Visual C++. 
       
 20765         Instead of defining all isXXX and toupper/tolower as 
       
 20766           WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h,
       
 20767         #define them to be different by prepending 'WTF_...ASCIIType_h' with
       
 20768         the originial names like 'toupper_WTF_...ASCIIType_h'. 
       
 20769 
       
 20770         * wtf/DisallowCType.h:
       
 20771 
       
 20772 2009-08-18  Oliver Hunt  <oliver@apple.com>
       
 20773 
       
 20774         Reviewed by Gavin Barraclough.
       
 20775 
       
 20776         Assigning a function to an object should always use the existing transition, even if the transition is not specialized
       
 20777         https://bugs.webkit.org/show_bug.cgi?id=28442
       
 20778 
       
 20779         Check for an unspecialized transition as an alternative to always failing if specialisation does not match.
       
 20780 
       
 20781         * runtime/Structure.cpp:
       
 20782         (JSC::Structure::addPropertyTransitionToExistingStructure):
       
 20783 
       
 20784 2009-08-18  Dirk Schulze  <krit@webkit.org>
       
 20785 
       
 20786         Reviewed by Oliver Hunt.
       
 20787 
       
 20788         Added additional getter to ByteArray with an unsigned char as return.
       
 20789         ByteArray can take unsigned char directly now.
       
 20790 
       
 20791         * wtf/ByteArray.h:
       
 20792         (WTF::ByteArray::set):
       
 20793         (WTF::ByteArray::get):
       
 20794 
       
 20795 2009-08-18  Peter Kasting  <pkasting@google.com>
       
 20796 
       
 20797         Reviewed by Eric Seidel.
       
 20798 
       
 20799         https://bugs.webkit.org/show_bug.cgi?id=28415
       
 20800         Set svn:eol-style CRLF on all .sln and .vcproj files that don't already
       
 20801         have it.
       
 20802 
       
 20803         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
       
 20804         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
       
 20805         
       
 20806 2009-08-18  Xan Lopez  <xlopez@igalia.com>
       
 20807 
       
 20808         Try to fix the GTK+ build.
       
 20809 
       
 20810         * GNUmakefile.am:
       
 20811 
       
 20812 2009-08-17  Gavin Barraclough  <barraclough@apple.com>
       
 20813 
       
 20814         Reviewed by Sam Weinig.
       
 20815 
       
 20816         No, silly runtime, AST nodes are not for you.
       
 20817 
       
 20818         We still use AST nodes (ScopeNodes, particularly FunctionBodyNodes) within
       
 20819         the runtime, which means that these nodes must be persisted outside of the
       
 20820         arena, contain both parser & runtime data, etc.  This is all a bit of a mess.
       
 20821 
       
 20822         Move functionality into a new FunctionExecutable class.
       
 20823 
       
 20824         * API/JSCallbackFunction.cpp:
       
 20825         * API/JSObjectRef.cpp:
       
 20826         * JavaScriptCore.exp:
       
 20827         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 20828         * bytecode/CodeBlock.cpp:
       
 20829         (JSC::CodeBlock::CodeBlock):
       
 20830         (JSC::CodeBlock::markAggregate):
       
 20831         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
       
 20832         (JSC::CodeBlock::lineNumberForBytecodeOffset):
       
 20833         (JSC::CodeBlock::shrinkToFit):
       
 20834         * bytecode/CodeBlock.h:
       
 20835         (JSC::CodeBlock::getBytecodeIndex):
       
 20836         (JSC::CodeBlock::discardBytecode):
       
 20837         (JSC::CodeBlock::instructionCount):
       
 20838         (JSC::CodeBlock::getJITCode):
       
 20839         (JSC::CodeBlock::executablePool):
       
 20840         (JSC::CodeBlock::ownerExecutable):
       
 20841         (JSC::CodeBlock::extractExceptionInfo):
       
 20842         (JSC::CodeBlock::addFunctionDecl):
       
 20843         (JSC::CodeBlock::functionDecl):
       
 20844         (JSC::CodeBlock::numberOfFunctionDecls):
       
 20845         (JSC::CodeBlock::addFunctionExpr):
       
 20846         (JSC::CodeBlock::functionExpr):
       
 20847         (JSC::GlobalCodeBlock::GlobalCodeBlock):
       
 20848         (JSC::ProgramCodeBlock::ProgramCodeBlock):
       
 20849         (JSC::EvalCodeBlock::EvalCodeBlock):
       
 20850         (JSC::FunctionCodeBlock::FunctionCodeBlock):
       
 20851         (JSC::NativeCodeBlock::NativeCodeBlock):
       
 20852         * bytecode/EvalCodeCache.h:
       
 20853         * bytecode/SamplingTool.cpp:
       
 20854         (JSC::SamplingTool::doRun):
       
 20855         * bytecompiler/BytecodeGenerator.cpp:
       
 20856         (JSC::BytecodeGenerator::BytecodeGenerator):
       
 20857         (JSC::BytecodeGenerator::emitNewFunction):
       
 20858         (JSC::BytecodeGenerator::emitNewFunctionExpression):
       
 20859         * bytecompiler/BytecodeGenerator.h:
       
 20860         * debugger/Debugger.cpp:
       
 20861         (JSC::Debugger::recompileAllJSFunctions):
       
 20862         * interpreter/CachedCall.h:
       
 20863         (JSC::CachedCall::CachedCall):
       
 20864         * interpreter/CallFrameClosure.h:
       
 20865         * interpreter/Interpreter.cpp:
       
 20866         (JSC::Interpreter::unwindCallFrame):
       
 20867         (JSC::Interpreter::throwException):
       
 20868         (JSC::Interpreter::execute):
       
 20869         (JSC::Interpreter::prepareForRepeatCall):
       
 20870         (JSC::Interpreter::debug):
       
 20871         (JSC::Interpreter::privateExecute):
       
 20872         (JSC::Interpreter::retrieveLastCaller):
       
 20873         * interpreter/Interpreter.h:
       
 20874         * jit/JIT.cpp:
       
 20875         (JSC::JIT::privateCompile):
       
 20876         * jit/JIT.h:
       
 20877         (JSC::JIT::compile):
       
 20878         * jit/JITOpcodes.cpp:
       
 20879         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 20880         (JSC::JIT::emit_op_new_func):
       
 20881         (JSC::JIT::emit_op_new_func_exp):
       
 20882         * jit/JITStubs.cpp:
       
 20883         (JSC::DEFINE_STUB_FUNCTION):
       
 20884         * jit/JITStubs.h:
       
 20885         (JSC::):
       
 20886         * parser/Nodes.cpp:
       
 20887         (JSC::FunctionBodyNode::reparseDataIfNecessary):
       
 20888         * parser/Nodes.h:
       
 20889         (JSC::EvalNode::partialDestroyData):
       
 20890         * parser/Parser.h:
       
 20891         * profiler/ProfileGenerator.cpp:
       
 20892         * profiler/Profiler.cpp:
       
 20893         (JSC::Profiler::createCallIdentifier):
       
 20894         (JSC::createCallIdentifierFromFunctionImp):
       
 20895         * runtime/Arguments.h:
       
 20896         (JSC::Arguments::getArgumentsData):
       
 20897         (JSC::Arguments::Arguments):
       
 20898         (JSC::JSActivation::copyRegisters):
       
 20899         * runtime/ArrayPrototype.cpp:
       
 20900         (JSC::isNumericCompareFunction):
       
 20901         * runtime/CallData.h:
       
 20902         (JSC::):
       
 20903         * runtime/Collector.cpp:
       
 20904         (JSC::Heap::collect):
       
 20905         * runtime/ConstructData.h:
       
 20906         (JSC::):
       
 20907         * runtime/ExceptionHelpers.cpp:
       
 20908         (JSC::createUndefinedVariableError):
       
 20909         (JSC::createInvalidParamError):
       
 20910         (JSC::createNotAConstructorError):
       
 20911         (JSC::createNotAFunctionError):
       
 20912         (JSC::createNotAnObjectError):
       
 20913         * runtime/Executable.cpp: Added.
       
 20914         (JSC::EvalExecutable::generateBytecode):
       
 20915         (JSC::ProgramExecutable::generateBytecode):
       
 20916         (JSC::FunctionExecutable::generateBytecode):
       
 20917         (JSC::EvalExecutable::generateJITCode):
       
 20918         (JSC::ProgramExecutable::generateJITCode):
       
 20919         (JSC::FunctionExecutable::generateJITCode):
       
 20920         (JSC::FunctionExecutable::isHostFunction):
       
 20921         (JSC::FunctionExecutable::markAggregate):
       
 20922         (JSC::FunctionExecutable::reparseExceptionInfo):
       
 20923         (JSC::EvalExecutable::reparseExceptionInfo):
       
 20924         (JSC::FunctionExecutable::recompile):
       
 20925         (JSC::FunctionExecutable::FunctionExecutable):
       
 20926         * runtime/Executable.h:
       
 20927         (JSC::ExecutableBase::~ExecutableBase):
       
 20928         (JSC::ExecutableBase::ExecutableBase):
       
 20929         (JSC::ExecutableBase::source):
       
 20930         (JSC::ExecutableBase::sourceID):
       
 20931         (JSC::ExecutableBase::lastLine):
       
 20932         (JSC::ExecutableBase::usesEval):
       
 20933         (JSC::ExecutableBase::usesArguments):
       
 20934         (JSC::ExecutableBase::needsActivation):
       
 20935         (JSC::ExecutableBase::astNode):
       
 20936         (JSC::ExecutableBase::generatedJITCode):
       
 20937         (JSC::ExecutableBase::getExecutablePool):
       
 20938         (JSC::EvalExecutable::EvalExecutable):
       
 20939         (JSC::EvalExecutable::bytecode):
       
 20940         (JSC::EvalExecutable::varStack):
       
 20941         (JSC::EvalExecutable::evalNode):
       
 20942         (JSC::EvalExecutable::jitCode):
       
 20943         (JSC::ProgramExecutable::ProgramExecutable):
       
 20944         (JSC::ProgramExecutable::reparseExceptionInfo):
       
 20945         (JSC::ProgramExecutable::bytecode):
       
 20946         (JSC::ProgramExecutable::programNode):
       
 20947         (JSC::ProgramExecutable::jitCode):
       
 20948         (JSC::FunctionExecutable::FunctionExecutable):
       
 20949         (JSC::FunctionExecutable::name):
       
 20950         (JSC::FunctionExecutable::bytecode):
       
 20951         (JSC::FunctionExecutable::generatedBytecode):
       
 20952         (JSC::FunctionExecutable::usesEval):
       
 20953         (JSC::FunctionExecutable::usesArguments):
       
 20954         (JSC::FunctionExecutable::parameterCount):
       
 20955         (JSC::FunctionExecutable::paramString):
       
 20956         (JSC::FunctionExecutable::isGenerated):
       
 20957         (JSC::FunctionExecutable::body):
       
 20958         (JSC::FunctionExecutable::jitCode):
       
 20959         (JSC::FunctionExecutable::createNativeThunk):
       
 20960         * runtime/FunctionConstructor.cpp:
       
 20961         (JSC::constructFunction):
       
 20962         * runtime/FunctionPrototype.cpp:
       
 20963         (JSC::functionProtoFuncToString):
       
 20964         * runtime/JSActivation.cpp:
       
 20965         (JSC::JSActivation::JSActivation):
       
 20966         (JSC::JSActivation::markChildren):
       
 20967         (JSC::JSActivation::isDynamicScope):
       
 20968         (JSC::JSActivation::argumentsGetter):
       
 20969         * runtime/JSActivation.h:
       
 20970         (JSC::JSActivation::JSActivationData::JSActivationData):
       
 20971         * runtime/JSFunction.cpp:
       
 20972         (JSC::JSFunction::isHostFunction):
       
 20973         (JSC::JSFunction::JSFunction):
       
 20974         (JSC::JSFunction::~JSFunction):
       
 20975         (JSC::JSFunction::markChildren):
       
 20976         (JSC::JSFunction::getCallData):
       
 20977         (JSC::JSFunction::call):
       
 20978         (JSC::JSFunction::lengthGetter):
       
 20979         (JSC::JSFunction::getConstructData):
       
 20980         (JSC::JSFunction::construct):
       
 20981         * runtime/JSFunction.h:
       
 20982         (JSC::JSFunction::executable):
       
 20983         (JSC::FunctionExecutable::make):
       
 20984         * runtime/JSGlobalData.cpp:
       
 20985         (JSC::JSGlobalData::JSGlobalData):
       
 20986         (JSC::JSGlobalData::numericCompareFunction):
       
 20987         * runtime/JSGlobalData.h:
       
 20988 
       
 20989 2009-08-17  Mark Rowe  <mrowe@apple.com>
       
 20990 
       
 20991         Reviewed by Darin Adler.
       
 20992 
       
 20993         Fix 300,000+ leaks seen during the regression tests.
       
 20994 
       
 20995         EvalCodeCache::get was heap-allocating an EvalExecutable instance without adopting the initial reference.
       
 20996         While fixing this we noticed that EvalExecutable was a RefCounted type that was sometimes stack allocated.
       
 20997         To make this cleaner and to prevent clients from attempting to ref a stack-allocated instance, we move the
       
 20998         refcounting down to a new CacheableEvalExecutable class that derives from EvalExecutable. EvalCodeCache::get
       
 20999         now uses CacheableEvalExecutable::create and avoids the leak.
       
 21000 
       
 21001         * bytecode/EvalCodeCache.h:
       
 21002         (JSC::EvalCodeCache::get):
       
 21003         * interpreter/Interpreter.cpp:
       
 21004         (JSC::Interpreter::callEval):
       
 21005         * runtime/Executable.h:
       
 21006         (JSC::CacheableEvalExecutable::create):
       
 21007         (JSC::CacheableEvalExecutable::CacheableEvalExecutable):
       
 21008 
       
 21009 2009-08-17  Oliver Hunt  <oliver@apple.com>
       
 21010 
       
 21011         RS=Mark Rowe.
       
 21012 
       
 21013         REGRESSION (r47292): Prototype.js is broken by ES5 Arguments changes
       
 21014         https://bugs.webkit.org/show_bug.cgi?id=28341
       
 21015         <rdar://problem/7145615>
       
 21016 
       
 21017         Reverting r47292.  Alas Prototype.js breaks with Arguments inheriting
       
 21018         from Array as ES5 attempted.  Prototype.js defines $A in terms of a 
       
 21019         function it places on (among other global objects) the Array prototype,
       
 21020         thus breaking $A for arrays.
       
 21021 
       
 21022         * runtime/Arguments.h:
       
 21023         (JSC::Arguments::Arguments):
       
 21024         * runtime/JSGlobalObject.cpp:
       
 21025         (JSC::JSGlobalObject::reset):
       
 21026         (JSC::JSGlobalObject::markChildren):
       
 21027         * runtime/JSGlobalObject.h:
       
 21028         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
       
 21029         * runtime/ObjectPrototype.cpp:
       
 21030         (JSC::ObjectPrototype::ObjectPrototype):
       
 21031         * runtime/ObjectPrototype.h:
       
 21032         * tests/mozilla/ecma_3/Function/arguments-001.js:
       
 21033 
       
 21034 2009-08-17  Peter Kasting  <pkasting@google.com>
       
 21035 
       
 21036         Reviewed by Steve Falkenburg.
       
 21037 
       
 21038         https://bugs.webkit.org/show_bug.cgi?id=27323
       
 21039         Only add Cygwin to the path when it isn't already there.  This avoids
       
 21040         causing problems for people who purposefully have non-Cygwin versions of
       
 21041         executables like svn in front of the Cygwin ones in their paths.
       
 21042 
       
 21043         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
       
 21044         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
       
 21045         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
       
 21046         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
       
 21047         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
       
 21048 
       
 21049 2009-08-17  Xan Lopez  <xlopez@igalia.com>
       
 21050 
       
 21051         Reviewed by Mark Rowe.
       
 21052 
       
 21053         Fix build with FAST_MALLOC_MATCH_VALIDATION enabled.
       
 21054 
       
 21055         * wtf/FastMalloc.cpp:
       
 21056         (WTF::fastMalloc):
       
 21057         (WTF::fastCalloc):
       
 21058         (WTF::fastRealloc):
       
 21059 
       
 21060 2009-08-16  Holger Hans Peter Freyther  <zecke@selfish.org>
       
 21061 
       
 21062         Reviewed by Mark Rowe.
       
 21063 
       
 21064         Fix crash on ./ecma_2/RegExp/exec-002.js.
       
 21065         https://bugs.webkit.org/show_bug.cgi?id=28353
       
 21066 
       
 21067         Change the order of freeParenthesesDisjunctionContext and
       
 21068         popParenthesesDisjunctionContext on all call sites as the pop
       
 21069         method is accessing backTrack->lastContext which is the context
       
 21070         that is about to be freed.
       
 21071 
       
 21072         * yarr/RegexInterpreter.cpp:
       
 21073         (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
       
 21074         (JSC::Yarr::Interpreter::backtrackParentheses):
       
 21075 
       
 21076 2009-08-16  Holger Hans Peter Freyther  <zecke@selfish.org>
       
 21077 
       
 21078         Reviewed by Mark Rowe.
       
 21079 
       
 21080         https://bugs.webkit.org/show_bug.cgi?id=28352
       
 21081 
       
 21082         Fix coding style violations. Use m_ for C++ class members. Remove
       
 21083         trailing whitespace on empty lines.
       
 21084 
       
 21085         * yarr/RegexInterpreter.cpp:
       
 21086         (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext):
       
 21087         (JSC::Yarr::Interpreter::tryConsumeCharacter):
       
 21088         (JSC::Yarr::Interpreter::tryConsumeBackReference):
       
 21089         (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
       
 21090         (JSC::Yarr::Interpreter::backtrackParentheses):
       
 21091         (JSC::Yarr::ByteCompiler::ByteCompiler):
       
 21092         (JSC::Yarr::ByteCompiler::compile):
       
 21093         (JSC::Yarr::ByteCompiler::checkInput):
       
 21094         (JSC::Yarr::ByteCompiler::assertionBOL):
       
 21095         (JSC::Yarr::ByteCompiler::assertionEOL):
       
 21096         (JSC::Yarr::ByteCompiler::assertionWordBoundary):
       
 21097         (JSC::Yarr::ByteCompiler::atomPatternCharacter):
       
 21098         (JSC::Yarr::ByteCompiler::atomCharacterClass):
       
 21099         (JSC::Yarr::ByteCompiler::atomBackReference):
       
 21100         (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
       
 21101         (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
       
 21102         (JSC::Yarr::ByteCompiler::popParenthesesStack):
       
 21103         (JSC::Yarr::ByteCompiler::closeAlternative):
       
 21104         (JSC::Yarr::ByteCompiler::closeBodyAlternative):
       
 21105         (JSC::Yarr::ByteCompiler::atomParenthesesEnd):
       
 21106         (JSC::Yarr::ByteCompiler::regexBegin):
       
 21107         (JSC::Yarr::ByteCompiler::alterantiveBodyDisjunction):
       
 21108         (JSC::Yarr::ByteCompiler::alterantiveDisjunction):
       
 21109         (JSC::Yarr::ByteCompiler::emitDisjunction):
       
 21110 
       
 21111 2009-08-15  Mark Rowe  <mrowe@apple.com>
       
 21112 
       
 21113         Fix the build with JIT disabled.
       
 21114 
       
 21115         * runtime/Arguments.h: Only compile the jitCode method when the JIT is enabled.
       
 21116         * runtime/Executable.h: Include PrototypeFunction.h so the compiler knows what
       
 21117         NativeFunctionWrapper is when the JIT is disabled.
       
 21118 
       
 21119 2009-08-15  Adam Bergkvist  <adam.bergkvist@ericsson.com>
       
 21120 
       
 21121         Reviewed by Sam Weinig.
       
 21122 
       
 21123         Added ENABLE_EVENTSOURCE flag.
       
 21124         https://bugs.webkit.org/show_bug.cgi?id=14997
       
 21125 
       
 21126         * Configurations/FeatureDefines.xcconfig:
       
 21127 
       
 21128 2009-08-14  Gavin Barraclough  <barraclough@apple.com>
       
 21129 
       
 21130         * parser/Parser.h:
       
 21131         (JSC::EvalExecutable::parse):
       
 21132         (JSC::ProgramExecutable::parse):
       
 21133         * runtime/Executable.h:
       
 21134 
       
 21135 2009-08-14  Gavin Barraclough  <barraclough@apple.com>
       
 21136 
       
 21137         Reviewed by Oliver Hunt.
       
 21138 
       
 21139         Remove AST nodes from use within the Runtime (outside of parsing), stage 1
       
 21140         https://bugs.webkit.org/show_bug.cgi?id=28330
       
 21141 
       
 21142         Remove the EvalNode and ProgramNode from use in the runtime.  They still exist
       
 21143         after this patch, but are hidden behind EvalExecutable and FunctionExecutable,
       
 21144         and are also still reachable behind CodeBlock::m_ownerNode.
       
 21145 
       
 21146         The next step will be to beat back FunctionBodyNode in the same fashion.
       
 21147         Then remove the usage via CodeBlock, then only construct these nodes only on
       
 21148         demand during bytecode generation.
       
 21149 
       
 21150         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 21151         * bytecode/CodeBlock.h:
       
 21152         (JSC::GlobalCodeBlock::GlobalCodeBlock):
       
 21153         (JSC::GlobalCodeBlock::~GlobalCodeBlock):
       
 21154         (JSC::ProgramCodeBlock::ProgramCodeBlock):
       
 21155         (JSC::EvalCodeBlock::EvalCodeBlock):
       
 21156         (JSC::FunctionCodeBlock::FunctionCodeBlock):
       
 21157         (JSC::NativeCodeBlock::NativeCodeBlock):
       
 21158         * bytecode/EvalCodeCache.h:
       
 21159         (JSC::EvalCodeCache::get):
       
 21160         * debugger/Debugger.cpp:
       
 21161         (JSC::evaluateInGlobalCallFrame):
       
 21162         * debugger/DebuggerCallFrame.cpp:
       
 21163         (JSC::DebuggerCallFrame::evaluate):
       
 21164         * interpreter/Interpreter.cpp:
       
 21165         (JSC::Interpreter::callEval):
       
 21166         (JSC::Interpreter::execute):
       
 21167         * interpreter/Interpreter.h:
       
 21168         * parser/Nodes.cpp:
       
 21169         (JSC::FunctionBodyNode::createNativeThunk):
       
 21170         (JSC::FunctionBodyNode::generateBytecode):
       
 21171         (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse):
       
 21172         * parser/Parser.h:
       
 21173         (JSC::Parser::parse):
       
 21174         (JSC::Parser::reparse):
       
 21175         (JSC::Parser::parseFunctionFromGlobalCode):
       
 21176         (JSC::::parse):
       
 21177         * runtime/Completion.cpp:
       
 21178         (JSC::checkSyntax):
       
 21179         (JSC::evaluate):
       
 21180         * runtime/Error.cpp:
       
 21181         (JSC::throwError):
       
 21182         * runtime/Error.h:
       
 21183         * runtime/Executable.h: Added.
       
 21184         (JSC::TemplateExecutable::TemplateExecutable):
       
 21185         (JSC::TemplateExecutable::markAggregate):
       
 21186         (JSC::TemplateExecutable::sourceURL):
       
 21187         (JSC::TemplateExecutable::lineNo):
       
 21188         (JSC::TemplateExecutable::bytecode):
       
 21189         (JSC::TemplateExecutable::jitCode):
       
 21190         (JSC::EvalExecutable::EvalExecutable):
       
 21191         (JSC::ProgramExecutable::ProgramExecutable):
       
 21192         * runtime/FunctionConstructor.cpp:
       
 21193         (JSC::constructFunction):
       
 21194         * runtime/FunctionConstructor.h:
       
 21195         * runtime/JSGlobalData.cpp:
       
 21196         (JSC::JSGlobalData::numericCompareFunction):
       
 21197         * runtime/JSGlobalObject.cpp:
       
 21198         (JSC::JSGlobalObject::~JSGlobalObject):
       
 21199         (JSC::JSGlobalObject::markChildren):
       
 21200         * runtime/JSGlobalObject.h:
       
 21201         (JSC::JSGlobalObject::codeBlocks):
       
 21202         * runtime/JSGlobalObjectFunctions.cpp:
       
 21203         (JSC::globalFuncEval):
       
 21204 
       
 21205 2009-08-14  Darin Adler  <darin@apple.com>
       
 21206 
       
 21207         Reviewed by Sam Weinig.
       
 21208 
       
 21209         Rename the confusing isObject(<class>) to inherits(<class>).
       
 21210         It still works on non-objects, returning false.
       
 21211 
       
 21212         * runtime/ArrayConstructor.cpp:
       
 21213         (JSC::arrayConstructorIsArray): Removed unneeded isObject call
       
 21214         and updated remaining isObject call to new name, inherits.
       
 21215 
       
 21216         * runtime/JSCell.h: Renamed isObject(<class>) to inherits(<class>)
       
 21217         but more importantly, made it non-virtual (it was already inline)
       
 21218         so it is now as fast as JSObject::inherits was.
       
 21219 
       
 21220         * runtime/JSObject.h: Removed inherits function since the one
       
 21221         in the base class is fine as-is. Also made various JSCell functions
       
 21222         that should not be called on JSObject uncallable by making them
       
 21223         both private and not implemented.
       
 21224         (JSC::JSCell::inherits): Updated name.
       
 21225         (JSC::JSValue::inherits): Ditto.
       
 21226 
       
 21227         * debugger/Debugger.cpp:
       
 21228         (JSC::Debugger::recompileAllJSFunctions):
       
 21229         * interpreter/Interpreter.cpp:
       
 21230         (JSC::Interpreter::unwindCallFrame):
       
 21231         * runtime/ArrayPrototype.cpp:
       
 21232         (JSC::arrayProtoFuncToString):
       
 21233         (JSC::arrayProtoFuncToLocaleString):
       
 21234         (JSC::arrayProtoFuncConcat):
       
 21235         * runtime/BooleanPrototype.cpp:
       
 21236         (JSC::booleanProtoFuncToString):
       
 21237         (JSC::booleanProtoFuncValueOf):
       
 21238         * runtime/DateConstructor.cpp:
       
 21239         (JSC::constructDate):
       
 21240         * runtime/DatePrototype.cpp:
       
 21241         (JSC::dateProtoFuncToString):
       
 21242         (JSC::dateProtoFuncToUTCString):
       
 21243         (JSC::dateProtoFuncToISOString):
       
 21244         (JSC::dateProtoFuncToDateString):
       
 21245         (JSC::dateProtoFuncToTimeString):
       
 21246         (JSC::dateProtoFuncToLocaleString):
       
 21247         (JSC::dateProtoFuncToLocaleDateString):
       
 21248         (JSC::dateProtoFuncToLocaleTimeString):
       
 21249         (JSC::dateProtoFuncGetTime):
       
 21250         (JSC::dateProtoFuncGetFullYear):
       
 21251         (JSC::dateProtoFuncGetUTCFullYear):
       
 21252         (JSC::dateProtoFuncToGMTString):
       
 21253         (JSC::dateProtoFuncGetMonth):
       
 21254         (JSC::dateProtoFuncGetUTCMonth):
       
 21255         (JSC::dateProtoFuncGetDate):
       
 21256         (JSC::dateProtoFuncGetUTCDate):
       
 21257         (JSC::dateProtoFuncGetDay):
       
 21258         (JSC::dateProtoFuncGetUTCDay):
       
 21259         (JSC::dateProtoFuncGetHours):
       
 21260         (JSC::dateProtoFuncGetUTCHours):
       
 21261         (JSC::dateProtoFuncGetMinutes):
       
 21262         (JSC::dateProtoFuncGetUTCMinutes):
       
 21263         (JSC::dateProtoFuncGetSeconds):
       
 21264         (JSC::dateProtoFuncGetUTCSeconds):
       
 21265         (JSC::dateProtoFuncGetMilliSeconds):
       
 21266         (JSC::dateProtoFuncGetUTCMilliseconds):
       
 21267         (JSC::dateProtoFuncGetTimezoneOffset):
       
 21268         (JSC::dateProtoFuncSetTime):
       
 21269         (JSC::setNewValueFromTimeArgs):
       
 21270         (JSC::setNewValueFromDateArgs):
       
 21271         (JSC::dateProtoFuncSetYear):
       
 21272         (JSC::dateProtoFuncGetYear):
       
 21273         * runtime/FunctionPrototype.cpp:
       
 21274         (JSC::functionProtoFuncToString):
       
 21275         * runtime/JSActivation.cpp:
       
 21276         (JSC::JSActivation::argumentsGetter):
       
 21277         * runtime/JSValue.h:
       
 21278         * runtime/RegExpConstructor.cpp:
       
 21279         (JSC::constructRegExp):
       
 21280         * runtime/RegExpPrototype.cpp:
       
 21281         (JSC::regExpProtoFuncTest):
       
 21282         (JSC::regExpProtoFuncExec):
       
 21283         (JSC::regExpProtoFuncCompile):
       
 21284         (JSC::regExpProtoFuncToString):
       
 21285         * runtime/ScopeChain.cpp:
       
 21286         (JSC::ScopeChain::localDepth):
       
 21287         * runtime/StringPrototype.cpp:
       
 21288         (JSC::stringProtoFuncReplace):
       
 21289         (JSC::stringProtoFuncToString):
       
 21290         (JSC::stringProtoFuncMatch):
       
 21291         (JSC::stringProtoFuncSearch):
       
 21292         (JSC::stringProtoFuncSplit):
       
 21293         Updated to new name, inherits, from old name, isObject.
       
 21294 
       
 21295 2009-07-31  Harald Fernengel  <harald.fernengel@nokia.com>
       
 21296 
       
 21297         Reviewed by Simon Hausmann.
       
 21298 
       
 21299         Adding QNX as a platform. Currently only tested with Qt.
       
 21300 
       
 21301         https://bugs.webkit.org/show_bug.cgi?id=27885
       
 21302 
       
 21303         * JavaScriptCore/runtime/Collector.cpp: Added retrieving of stack base
       
 21304           since QNX doesn't have the pthread _nt functions
       
 21305         * JavaScriptCore/wtf/Platform.h: Added WTF_PLATFORM_QNX and corresponding
       
 21306           defines
       
 21307         * WebCore/bridge/npapi.h: Build fix for missing typedefs on QNX
       
 21308 
       
 21309 2009-08-14  Gabor Loki  <loki@inf.u-szeged.hu>
       
 21310 
       
 21311         Reviewed by Simon Hausmann.
       
 21312 
       
 21313         Currently generic ARM and ARMv7 platforms work only with JSVALUE32
       
 21314         https://bugs.webkit.org/show_bug.cgi?id=28300
       
 21315 
       
 21316         * wtf/Platform.h:
       
 21317 
       
 21318 2009-08-14  Gabor Loki  <loki@inf.u-szeged.hu>
       
 21319 
       
 21320         Reviewed by Simon Hausmann.
       
 21321 
       
 21322         Enable JIT on ARM for QT by default
       
 21323         https://bugs.webkit.org/show_bug.cgi?id=28259
       
 21324 
       
 21325         * wtf/Platform.h:
       
 21326 
       
 21327 2009-08-14  Gabor Loki  <loki@inf.u-szeged.hu>
       
 21328 
       
 21329         Reviewed by Simon Hausmann.
       
 21330 
       
 21331         Enable YARR_JIT on ARM for QT by default
       
 21332         https://bugs.webkit.org/show_bug.cgi?id=28259
       
 21333 
       
 21334         * wtf/Platform.h:
       
 21335 
       
 21336 2009-08-14  Oliver Hunt  <oliver@apple.com>
       
 21337 
       
 21338         Reviewed by Gavin Barraclough.
       
 21339 
       
 21340         [ES5] Arguments object should inherit from Array
       
 21341         https://bugs.webkit.org/show_bug.cgi?id=28298
       
 21342 
       
 21343         Make the Arguments object conform to the behaviour specified in ES5.
       
 21344         The simple portion of this is to make Arguments use Array.prototype
       
 21345         as its prototype rather than Object.prototype.
       
 21346 
       
 21347         The spec then requires us to set instance.constructor to the pristine
       
 21348         Object constructor, and instance.toString and instance.toLocaleString
       
 21349         to the pristine versions from Object.prototype.  To do this we now 
       
 21350         make the ObjectPrototype constructor return its toString and
       
 21351         toLocaleString functions (similar to the call and apply functions
       
 21352         from FunctionPrototype).
       
 21353 
       
 21354         Oddly enough this reports itself as a slight win, but given the code
       
 21355         isn't hit in the tests that claim to have improved I put this down to
       
 21356         code motion.
       
 21357 
       
 21358         * runtime/Arguments.h:
       
 21359         (JSC::Arguments::Arguments):
       
 21360         (JSC::Arguments::initializeStandardProperties):
       
 21361         * runtime/JSGlobalObject.cpp:
       
 21362         (JSC::JSGlobalObject::reset):
       
 21363         (JSC::JSGlobalObject::markChildren):
       
 21364         * runtime/JSGlobalObject.h:
       
 21365         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
       
 21366         (JSC::JSGlobalObject::objectConstructor):
       
 21367         (JSC::JSGlobalObject::objectToStringFunction):
       
 21368         (JSC::JSGlobalObject::objectToLocaleStringFunction):
       
 21369         * runtime/ObjectPrototype.cpp:
       
 21370         (JSC::ObjectPrototype::ObjectPrototype):
       
 21371         * runtime/ObjectPrototype.h:
       
 21372         * tests/mozilla/ecma_3/Function/arguments-001.js:
       
 21373           Update test to new es5 behaviour
       
 21374 
       
 21375 2009-08-14  Oliver Hunt  <oliver@apple.com>
       
 21376 
       
 21377         Remove MarkStack::drain from the JSC exports file
       
 21378 
       
 21379         MarkStack::drain is now marked inline, the including it in the exports file
       
 21380         produces an ld warning
       
 21381 
       
 21382         * JavaScriptCore.exp:
       
 21383 
       
 21384 2009-08-13  Sam Weinig  <sam@webkit.org>
       
 21385 
       
 21386         Reviewed by Oliver Hunt.
       
 21387 
       
 21388         Remove accidentally left in debugging statement.
       
 21389 
       
 21390         * runtime/JSArray.h:
       
 21391         (JSC::MarkStack::drain):
       
 21392 
       
 21393 2009-08-13  Oliver Hunt  <oliver@apple.com>
       
 21394 
       
 21395         Reviewed by Maciej Stachowiak.
       
 21396 
       
 21397         [ES5] Implement Array.isArray
       
 21398         https://bugs.webkit.org/show_bug.cgi?id=28296
       
 21399 
       
 21400         Add support for Array.isArray to the Array constructor
       
 21401 
       
 21402         * runtime/ArrayConstructor.cpp:
       
 21403         (JSC::ArrayConstructor::ArrayConstructor):
       
 21404         (JSC::arrayConstructorIsArray):
       
 21405         * runtime/ArrayConstructor.h:
       
 21406         * runtime/CommonIdentifiers.h:
       
 21407         * runtime/JSArray.h:
       
 21408         (JSC::MarkStack::drain):
       
 21409         * runtime/JSGlobalObject.cpp:
       
 21410         (JSC::JSGlobalObject::reset):
       
 21411 
       
 21412 2009-08-13  Oliver Hunt  <oliver@apple.com>
       
 21413 
       
 21414         Reviewed by NOBODY (Buildfix).
       
 21415 
       
 21416         Attempt to fix windows build
       
 21417 
       
 21418         * runtime/Collector.cpp:
       
 21419 
       
 21420 2009-08-13  Oliver Hunt  <oliver@apple.com>
       
 21421 
       
 21422         Reviewed by Maciej Stachowiak.
       
 21423 
       
 21424         Devirtualise marking
       
 21425         https://bugs.webkit.org/show_bug.cgi?id=28294
       
 21426 
       
 21427         Add a bit to TypeInfo to indicate that an object uses the standard
       
 21428         JSObject::markChildren method.  This allows us to devirtualise marking
       
 21429         of most objects (though a branch is still needed).  We also add a branch
       
 21430         to identify arrays thus devirtualising marking in that case as well.
       
 21431 
       
 21432         In order to make the best use of this devirtualisation I've also reworked
       
 21433         the MarkStack::drain() logic to make the iteration more efficient.
       
 21434 
       
 21435         * API/JSCallbackConstructor.h:
       
 21436         (JSC::JSCallbackConstructor::createStructure):
       
 21437         * API/JSCallbackFunction.h:
       
 21438         (JSC::JSCallbackFunction::createStructure):
       
 21439         * JavaScriptCore.exp:
       
 21440         * runtime/BooleanObject.h:
       
 21441         (JSC::BooleanObject::createStructure):
       
 21442         * runtime/FunctionPrototype.h:
       
 21443         (JSC::FunctionPrototype::createStructure):
       
 21444         * runtime/InternalFunction.h:
       
 21445         (JSC::InternalFunction::createStructure):
       
 21446         * runtime/JSAPIValueWrapper.h:
       
 21447         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
       
 21448         * runtime/JSArray.cpp:
       
 21449         (JSC::JSArray::markChildren):
       
 21450         * runtime/JSArray.h:
       
 21451         (JSC::JSArray::markChildrenDirect):
       
 21452         (JSC::MarkStack::drain):
       
 21453         * runtime/JSByteArray.cpp:
       
 21454         (JSC::JSByteArray::createStructure):
       
 21455         * runtime/JSCell.h:
       
 21456         (JSC::MarkStack::append):
       
 21457         * runtime/JSGlobalData.cpp:
       
 21458         (JSC::JSGlobalData::JSGlobalData):
       
 21459         * runtime/JSNumberCell.h:
       
 21460         (JSC::JSNumberCell::createStructure):
       
 21461         * runtime/JSONObject.h:
       
 21462         (JSC::JSONObject::createStructure):
       
 21463         * runtime/JSObject.cpp:
       
 21464         (JSC::JSObject::markChildren):
       
 21465         * runtime/JSObject.h:
       
 21466         (JSC::JSObject::markChildrenDirect):
       
 21467         (JSC::JSObject::createStructure):
       
 21468         * runtime/JSString.h:
       
 21469         (JSC::JSString::createStructure):
       
 21470         * runtime/JSType.h:
       
 21471         (JSC::):
       
 21472         * runtime/MarkStack.h:
       
 21473         (JSC::MarkStack::MarkStack):
       
 21474         (JSC::MarkStack::MarkSet::MarkSet):
       
 21475         (JSC::MarkStack::MarkStackArray::last):
       
 21476         * runtime/MathObject.h:
       
 21477         (JSC::MathObject::createStructure):
       
 21478         * runtime/NumberConstructor.h:
       
 21479         (JSC::NumberConstructor::createStructure):
       
 21480         * runtime/NumberObject.h:
       
 21481         (JSC::NumberObject::createStructure):
       
 21482         * runtime/RegExpConstructor.h:
       
 21483         (JSC::RegExpConstructor::createStructure):
       
 21484         * runtime/RegExpObject.h:
       
 21485         (JSC::RegExpObject::createStructure):
       
 21486         * runtime/StringObjectThatMasqueradesAsUndefined.h:
       
 21487         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
       
 21488         * runtime/TypeInfo.h:
       
 21489         (JSC::TypeInfo::hasDefaultMark):
       
 21490 
       
 21491 2009-08-13  Darin Adler  <darin@apple.com>
       
 21492 
       
 21493         Reviewed by Mark Rowe.
       
 21494 
       
 21495         Some small bits of housekeeping.
       
 21496 
       
 21497         * JavaScriptCore.xcodeproj/project.pbxproj: Make Parser.h
       
 21498         project instead of private. Remove JSONObject.lut.h.
       
 21499 
       
 21500         * assembler/ARMAssembler.h: Remove unneeded WTF prefix.
       
 21501         * assembler/AssemblerBufferWithConstantPool.h: Ditto.
       
 21502         * bytecompiler/BytecodeGenerator.h: Ditto.
       
 21503 
       
 21504         * wtf/SegmentedVector.h: Add a "using" statement as we do
       
 21505         with the other WTF headers.
       
 21506 
       
 21507 2009-08-13  Darin Adler  <darin@apple.com>
       
 21508 
       
 21509         Fix Tiger build.
       
 21510 
       
 21511         * parser/Grammar.y: Use a template function so we can compile
       
 21512         setStatementLocation even if it comes before YYLTYPE is defined.
       
 21513 
       
 21514 2009-08-13  Darin Adler  <darin@apple.com>
       
 21515 
       
 21516         Reviewed by George Staikos.
       
 21517 
       
 21518         Too much use of void* in Grammar.y
       
 21519         https://bugs.webkit.org/show_bug.cgi?id=28287
       
 21520 
       
 21521         * parser/Grammar.y: Changed all the helper functions to
       
 21522         take a JSGlobalData* instead of a void*. A couple formatting
       
 21523         tweaks that I missed when breaking this into pieces.
       
 21524 
       
 21525 2009-08-13  Darin Adler  <darin@apple.com>
       
 21526 
       
 21527         Reviewed by George Staikos.
       
 21528 
       
 21529         Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
       
 21530 
       
 21531         * parser/Grammar.y: Reduced and sorted includes. Tweaked comment
       
 21532         format. Marked a few more functions inline.
       
 21533 
       
 21534 2009-08-13  Darin Adler  <darin@apple.com>
       
 21535 
       
 21536         Reviewed by George Staikos.
       
 21537 
       
 21538         Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
       
 21539 
       
 21540         * parser/Grammar.y: Pass the number to the PropertyNode instead of
       
 21541         first turning it into an Identifier.
       
 21542 
       
 21543         * parser/NodeConstructors.h:
       
 21544         (JSC::PropertyNode::PropertyNode): Add an overload that takes a double
       
 21545         so the code to convert to a string can be here instead of Grammar.y.
       
 21546         * parser/Nodes.h: Ditto.
       
 21547 
       
 21548 2009-08-13  Darin Adler  <darin@apple.com>
       
 21549 
       
 21550         Reviewed by George Staikos.
       
 21551 
       
 21552         Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
       
 21553 
       
 21554         * parser/Grammar.y: Eliminate the DBG macro.
       
 21555 
       
 21556 2009-08-13  Darin Adler  <darin@apple.com>
       
 21557 
       
 21558         Reviewed by George Staikos.
       
 21559 
       
 21560         Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
       
 21561 
       
 21562         * parser/Grammar.y: Eliminate the SET_EXCEPTION_LOCATION macro.
       
 21563 
       
 21564 2009-08-13  Darin Adler  <darin@apple.com>
       
 21565 
       
 21566         Reviewed by George Staikos.
       
 21567 
       
 21568         George asked me to break the patch from
       
 21569         https://bugs.webkit.org/show_bug.cgi?id=28287
       
 21570         into smaller pieces and land it in stages.
       
 21571 
       
 21572         * parser/Grammar.y: Eliminate the LEXER macro.
       
 21573 
       
 21574 2009-08-13  Mark Rowe  <mrowe@apple.com>
       
 21575 
       
 21576         Try some more to fix the Windows build.
       
 21577 
       
 21578         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol.
       
 21579         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto.
       
 21580 
       
 21581 2009-08-13  Mark Rowe  <mrowe@apple.com>
       
 21582 
       
 21583         Try and fix the Windows build.
       
 21584 
       
 21585         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol.
       
 21586         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto.
       
 21587 
       
 21588 2009-08-13  Darin Adler  <darin@apple.com>
       
 21589 
       
 21590         Reviewed by David Levin.
       
 21591 
       
 21592         JavaScriptCore tweaks to get ready for the parser arena
       
 21593         https://bugs.webkit.org/show_bug.cgi?id=28243
       
 21594 
       
 21595         Eliminate dependencies on Nodes.h outside JavaScriptCore,
       
 21596         and cut down on them inside JavaScriptCore.
       
 21597 
       
 21598         Change regular expression parsing to use identifiers as
       
 21599         with other strings we parse.
       
 21600 
       
 21601         Fix a couple things that are needed to use const Identifier
       
 21602         more, which will be part of the parser arena work.
       
 21603 
       
 21604         * JavaScriptCore.exp: Resorted and updated.
       
 21605 
       
 21606         * JavaScriptCore.xcodeproj/project.pbxproj: Changed
       
 21607         CollectorHeapIterator.h to be project-internal.
       
 21608 
       
 21609         * bytecompiler/BytecodeGenerator.cpp:
       
 21610         (JSC::BytecodeGenerator::emitPushNewScope): Added const.
       
 21611         * bytecompiler/BytecodeGenerator.h: Ditto.
       
 21612 
       
 21613         * debugger/Debugger.cpp:
       
 21614         (JSC::Debugger::recompileAllJSFunctions): Moved this function
       
 21615         here from WebCore. Here is better since it uses so many internals.
       
 21616         Removed unimportant optimization for the no listener case.
       
 21617         * debugger/Debugger.h: Ditto. Also removed unneeded include
       
 21618         and tweaked formatting and comments.
       
 21619 
       
 21620         * debugger/DebuggerCallFrame.cpp:
       
 21621         (JSC::DebuggerCallFrame::functionName): Call asFunction instead
       
 21622         of doing the unchecked static_cast.
       
 21623         (JSC::DebuggerCallFrame::calculatedFunctionName): Ditto.
       
 21624 
       
 21625         * jit/JITStubs.cpp:
       
 21626         (JSC::op_call_JSFunction): Call isHostFunction on the body rather
       
 21627         than on the JSFunction.
       
 21628         (JSC::vm_lazyLinkCall): Ditto.
       
 21629         (JSC::op_construct_JSConstruct): Ditto.
       
 21630 
       
 21631         * parser/Grammar.y: Changed callers to use new scanRegExp with
       
 21632         out arguments instead of relying on state in the Lexer. And
       
 21633         callers that just want to skip a regular expression to use
       
 21634         skipRegExp.
       
 21635 
       
 21636         * parser/Lexer.cpp:
       
 21637         (JSC::Lexer::scanRegExp): Changed to use out arguments, and to
       
 21638         add a prefix argument so we can add in the "=" character as needed.
       
 21639         Also rewrote to streamline the logic a bit inspired by suggestions
       
 21640         by David Levin.
       
 21641         (JSC::Lexer::skipRegExp): Added. Version of the function above that
       
 21642         does not actually put the regular expression into a string.
       
 21643         (JSC::Lexer::clear): Removed code to clear m_pattern and m_flags.
       
 21644         * parser/Lexer.h: Changed scanRegExp to have out arguments. Added
       
 21645         skipRegExp. Eliminated pattern, flags, m_pattern, and m_flags.
       
 21646 
       
 21647         * parser/NodeConstructors.h:
       
 21648         (JSC::RegExpNode::RegExpNode): Changed to take const Identifier&.
       
 21649         * parser/Nodes.cpp:
       
 21650         (JSC::RegExpNode::emitBytecode): Changed since m_pattern and
       
 21651         m_flags are now Identifier instead of UString.
       
 21652         (JSC::FunctionBodyNode::make): Moved this function here instead
       
 21653         of putting it in the JSFunction.h header.
       
 21654         * parser/Nodes.h: Changed RegExpNode to use Identifier.
       
 21655 
       
 21656         * profiler/Profiler.cpp:
       
 21657         (JSC::Profiler::createCallIdentifier): Changed to use isHostFunction
       
 21658         on the body instead of on the JSFunction object.
       
 21659         * runtime/FunctionPrototype.cpp:
       
 21660         (JSC::functionProtoFuncToString): Ditto.
       
 21661 
       
 21662         * runtime/JSFunction.cpp:
       
 21663         (JSC::JSFunction::isHostFunction): Moved here from header.
       
 21664         (JSC::JSFunction::isHostFunctionNonInline): Added.
       
 21665         (JSC::JSFunction::JSFunction): Removed unneeded initialization of
       
 21666         m_body to 0.
       
 21667         (JSC::JSFunction::setBody): Moved here from header.
       
 21668 
       
 21669         * runtime/JSFunction.h: Removed unneeded includes. Moved private
       
 21670         constructor down to the private section. Made virtual functions
       
 21671         private. Removed unneeded overload of setBody and moved the body
       
 21672         of the function into the .cpp file. Changed assertions to use
       
 21673         the non-inline version of isHostFunction.
       
 21674 
       
 21675         * runtime/PropertySlot.cpp:
       
 21676         (JSC::PropertySlot::functionGetter): Use asFunction instead
       
 21677         of doing the unchecked static_cast.
       
 21678 
       
 21679         * wtf/SegmentedVector.h:
       
 21680         (WTF::SegmentedVector::isEmpty): Added.
       
 21681 
       
 21682 2009-08-13  Mark Rowe  <mrowe@apple.com>
       
 21683 
       
 21684         Rubber-stamped by Darin Adler.
       
 21685 
       
 21686         Use the version of operator new that takes a JSGlobalData when allocating FuncDeclNode and FuncExprNode
       
 21687         from within the grammar to prevent these nodes from being leaked.
       
 21688 
       
 21689         * parser/Grammar.y:
       
 21690 
       
 21691 2009-08-13  Simon Hausmann  <simon.hausmann@nokia.com>
       
 21692 
       
 21693         Reviewed by Ariya Hidayat.
       
 21694 
       
 21695         Remove the special-case for Qt wrt JSVALUE_32 introduced in
       
 21696         r46709. It must've been a dependency issue on the bot, as
       
 21697         after a manual build all the tests pass on amd64 and ia32.
       
 21698 
       
 21699         * wtf/Platform.h:
       
 21700 
       
 21701 2009-08-12  Gabor Loki  <loki@inf.u-szeged.hu>
       
 21702 
       
 21703         Reviewed by Gavin Barraclough.
       
 21704 
       
 21705         Add optimize call and property access support for ARM JIT.
       
 21706         https://bugs.webkit.org/show_bug.cgi?id=24986
       
 21707 
       
 21708         For tightly coupled sequences the BEGIN_UNINTERRUPTED_SEQUENCE and
       
 21709         END_UNINTERRUPTED_SEQUENCE macros have been introduced which ensure
       
 21710         space for instructions and constants of the named sequence. This
       
 21711         method is vital for those architecture which are using constant pool.
       
 21712 
       
 21713         The 'latePatch' method - which was linked to JmpSrc - is replaced with
       
 21714         a port specific solution (each calls are marked to place their address
       
 21715         on the constant pool).
       
 21716 
       
 21717         * assembler/ARMAssembler.cpp:
       
 21718         (JSC::ARMAssembler::linkBranch):
       
 21719         (JSC::ARMAssembler::executableCopy): Add extra align for constant pool.
       
 21720         * assembler/ARMAssembler.h:
       
 21721         (JSC::ARMAssembler::JmpSrc::JmpSrc):
       
 21722         (JSC::ARMAssembler::sizeOfConstantPool):
       
 21723         (JSC::ARMAssembler::jmp):
       
 21724         (JSC::ARMAssembler::linkCall):
       
 21725         * assembler/ARMv7Assembler.h:
       
 21726         * assembler/AbstractMacroAssembler.h:
       
 21727         * assembler/AssemblerBufferWithConstantPool.h:
       
 21728         (JSC::AssemblerBufferWithConstantPool::flushIfNoSpaceFor): Fix the
       
 21729         computation of the remaining space.
       
 21730         * assembler/MacroAssemblerARM.h:
       
 21731         (JSC::MacroAssemblerARM::branch32):
       
 21732         (JSC::MacroAssemblerARM::nearCall):
       
 21733         (JSC::MacroAssemblerARM::call):
       
 21734         (JSC::MacroAssemblerARM::branchPtrWithPatch):
       
 21735         (JSC::MacroAssemblerARM::ensureSpace):
       
 21736         (JSC::MacroAssemblerARM::sizeOfConstantPool):
       
 21737         (JSC::MacroAssemblerARM::prepareCall):
       
 21738         * assembler/X86Assembler.h:
       
 21739         * jit/JIT.h:
       
 21740         * jit/JITCall.cpp:
       
 21741         (JSC::JIT::compileOpCall):
       
 21742         * jit/JITInlineMethods.h:
       
 21743         (JSC::JIT::beginUninterruptedSequence):
       
 21744         (JSC::JIT::endUninterruptedSequence):
       
 21745         * jit/JITPropertyAccess.cpp:
       
 21746         (JSC::JIT::emit_op_method_check):
       
 21747         (JSC::JIT::compileGetByIdHotPath):
       
 21748         (JSC::JIT::compileGetByIdSlowCase):
       
 21749         (JSC::JIT::emit_op_put_by_id):
       
 21750 
       
 21751 2009-08-12  Gavin Barraclough  <barraclough@apple.com>
       
 21752 
       
 21753         Rubber Stamped by Dave Kilzer.
       
 21754 
       
 21755         Disable WTF_USE_JSVALUE32_64 on iPhone for now (support not yet added for ARMv7).
       
 21756 
       
 21757         * wtf/Platform.h:
       
 21758 
       
 21759 2009-08-12  Gavin Barraclough  <barraclough@apple.com>
       
 21760 
       
 21761         Reviewed by Maciej Stachoviak.
       
 21762 
       
 21763         Ooops - moved code that had been accidentally added to op_new_func instead of
       
 21764         op_new_func_exp, to where it shoulds be.
       
 21765 
       
 21766         * interpreter/Interpreter.cpp:
       
 21767         (JSC::Interpreter::privateExecute):
       
 21768         * wtf/Platform.h:
       
 21769 
       
 21770 2009-08-12  Ada Chan  <adachan@apple.com>
       
 21771 
       
 21772         Added workaround for the limitation that VirtualFree with MEM_RELEASE
       
 21773         can only accept the base address returned by VirtualAlloc when the region
       
 21774         was reserved and it can only free the entire region, and not a part of it.
       
 21775 
       
 21776         Reviewed by Oliver Hunt.
       
 21777 
       
 21778         * runtime/MarkStack.h:
       
 21779         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
       
 21780         * runtime/MarkStackWin.cpp:
       
 21781         (JSC::MarkStack::releaseStack):
       
 21782 
       
 21783 2009-08-12  Balazs Kelemen  <kelemen.balazs.3@stud.u-szeged.hu>
       
 21784 
       
 21785         Reviewed by Ariya Hidayat.
       
 21786 
       
 21787         Build fix: use std::numeric_limits<long long>::min() instead of LLONG_MIN
       
 21788         since LLONG_MIN is not defined in standard c++.
       
 21789 
       
 21790         * runtime/UString.cpp:
       
 21791         (JSC::UString::from):
       
 21792 
       
 21793 2009-08-12  Benjamin Otte  <otte@gnome.org>
       
 21794 
       
 21795         Reviewed by Jan Alonzo.
       
 21796 
       
 21797         Buildfix for Gtk platforms debug builds.
       
 21798 
       
 21799         * GNUmakefile.am: Choose MarkStackPosix.cpp or MarkStackWin.cpp
       
 21800         depending on platform.
       
 21801 
       
 21802 2009-08-12  Simon Hausmann  <simon.hausmann@nokia.com>
       
 21803 
       
 21804         Prospective build fix for Mac and 32-bit Windows.
       
 21805 
       
 21806         * runtime/UString.cpp: Include wtf/StringExtras.h for snprintf.
       
 21807         (JSC::UString::from): Use %lld instead of %I64d for snprintf
       
 21808         on non-windows platforms.
       
 21809 
       
 21810 2009-08-12  Prasanth Ullattil  <prasanth.ullattil@nokia.com>
       
 21811 
       
 21812         Reviewed by Simon Hausmann.
       
 21813 
       
 21814         Fix compile error on 64Bit Windows, when UString::from
       
 21815         is called with an intptr_t.
       
 21816 
       
 21817         Added new UString::From overload with long long parameter.
       
 21818 
       
 21819         Thanks to Holger for the long long idea.
       
 21820 
       
 21821         * runtime/UString.cpp:
       
 21822         (JSC::UString::from):
       
 21823         * runtime/UString.h:
       
 21824 
       
 21825 2009-08-11  Oliver Hunt  <oliver@apple.com>
       
 21826 
       
 21827         Reviewed by Mark Rowe.
       
 21828 
       
 21829         Minor style fixes.
       
 21830 
       
 21831         * runtime/UString.h:
       
 21832         (JSC::UString::Rep::createEmptyBuffer):
       
 21833         * wtf/FastMalloc.h:
       
 21834         (WTF::TryMallocReturnValue::getValue):
       
 21835 
       
 21836 2009-08-11  Oliver Hunt  <oliver@apple.com>
       
 21837 
       
 21838         Reviewed by Gavin Barraclough.
       
 21839 
       
 21840         Make it harder to misuse try* allocation routines
       
 21841         https://bugs.webkit.org/show_bug.cgi?id=27469
       
 21842 
       
 21843         Jump through a few hoops to make it much harder to accidentally
       
 21844         miss null-checking of values returned by the try-* allocation
       
 21845         routines.
       
 21846 
       
 21847         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 21848         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 21849         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 21850         * runtime/JSArray.cpp:
       
 21851         (JSC::JSArray::putSlowCase):
       
 21852         (JSC::JSArray::increaseVectorLength):
       
 21853         * runtime/StringPrototype.cpp:
       
 21854         (JSC::stringProtoFuncFontsize):
       
 21855         (JSC::stringProtoFuncLink):
       
 21856         * runtime/UString.cpp:
       
 21857         (JSC::allocChars):
       
 21858         (JSC::reallocChars):
       
 21859         (JSC::expandCapacity):
       
 21860         (JSC::UString::Rep::reserveCapacity):
       
 21861         (JSC::UString::expandPreCapacity):
       
 21862         (JSC::createRep):
       
 21863         (JSC::concatenate):
       
 21864         (JSC::UString::spliceSubstringsWithSeparators):
       
 21865         (JSC::UString::replaceRange):
       
 21866         (JSC::UString::append):
       
 21867         (JSC::UString::operator=):
       
 21868         * runtime/UString.h:
       
 21869         (JSC::UString::Rep::createEmptyBuffer):
       
 21870         * wtf/FastMalloc.cpp:
       
 21871         (WTF::tryFastZeroedMalloc):
       
 21872         (WTF::tryFastMalloc):
       
 21873         (WTF::tryFastCalloc):
       
 21874         (WTF::tryFastRealloc):
       
 21875         (WTF::TCMallocStats::tryFastMalloc):
       
 21876         (WTF::TCMallocStats::tryFastCalloc):
       
 21877         (WTF::TCMallocStats::tryFastRealloc):
       
 21878         * wtf/FastMalloc.h:
       
 21879         (WTF::TryMallocReturnValue::TryMallocReturnValue):
       
 21880         (WTF::TryMallocReturnValue::~TryMallocReturnValue):
       
 21881         (WTF::TryMallocReturnValue::operator PossiblyNull<T>):
       
 21882         (WTF::TryMallocReturnValue::getValue):
       
 21883         * wtf/Platform.h:
       
 21884         * wtf/PossiblyNull.h: Added.
       
 21885         (WTF::PossiblyNull::PossiblyNull):
       
 21886         (WTF::PossiblyNull::~PossiblyNull):
       
 21887         (WTF::::getValue):
       
 21888 
       
 21889 2009-08-11  Gavin Barraclough  <barraclough@apple.com>
       
 21890 
       
 21891         Reviewed by NOBODY (build fix part deux).
       
 21892 
       
 21893         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 21894         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 21895 
       
 21896 2009-08-11  Gavin Barraclough  <barraclough@apple.com>
       
 21897 
       
 21898         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 21899         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 21900 
       
 21901 2009-08-11  Gavin Barraclough  <barraclough@apple.com>
       
 21902 
       
 21903         Reviewed by Oliver Hunt.
       
 21904 
       
 21905         Restrict use of FuncDeclNode & FuncExprNode to the parser.
       
 21906         https://bugs.webkit.org/show_bug.cgi?id=28209
       
 21907 
       
 21908         These objects were also being referenced from the CodeBlock.  By changing this
       
 21909         to just retain pointers to FunctionBodyNodes these classes can be restricted to
       
 21910         use during parsing.
       
 21911 
       
 21912         No performance impact (or sub-percent progression).
       
 21913 
       
 21914         * JavaScriptCore.exp:
       
 21915             Update symbols.
       
 21916 
       
 21917         * bytecode/CodeBlock.cpp:
       
 21918         (JSC::CodeBlock::mark):
       
 21919         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
       
 21920         (JSC::CodeBlock::shrinkToFit):
       
 21921         * bytecode/CodeBlock.h:
       
 21922         (JSC::CodeBlock::addFunction):
       
 21923         (JSC::CodeBlock::function):
       
 21924             Unify m_functions & m_functionExpressions into a single Vector<RefPtr<FuncExprNode> >.
       
 21925 
       
 21926         * bytecompiler/BytecodeGenerator.cpp:
       
 21927         (JSC::BytecodeGenerator::BytecodeGenerator):
       
 21928         (JSC::BytecodeGenerator::addConstant):
       
 21929         (JSC::BytecodeGenerator::emitNewFunction):
       
 21930         (JSC::BytecodeGenerator::emitNewFunctionExpression):
       
 21931         * bytecompiler/BytecodeGenerator.h:
       
 21932             FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes.
       
 21933 
       
 21934         * interpreter/Interpreter.cpp:
       
 21935         (JSC::Interpreter::execute):
       
 21936         (JSC::Interpreter::privateExecute):
       
 21937             Update to reflect chnages in CodeBlock.
       
 21938 
       
 21939         * jit/JITOpcodes.cpp:
       
 21940         (JSC::JIT::emit_op_new_func_exp):
       
 21941         * jit/JITStubs.cpp:
       
 21942         (JSC::DEFINE_STUB_FUNCTION):
       
 21943         * jit/JITStubs.h:
       
 21944         (JSC::):
       
 21945             Update to reflect chnages in CodeBlock.
       
 21946 
       
 21947         * parser/Grammar.y:
       
 21948             FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes.
       
 21949 
       
 21950         * parser/NodeConstructors.h:
       
 21951         (JSC::FuncExprNode::FuncExprNode):
       
 21952         (JSC::FuncDeclNode::FuncDeclNode):
       
 21953         * parser/Nodes.cpp:
       
 21954         (JSC::ScopeNodeData::mark):
       
 21955         (JSC::FunctionBodyNode::finishParsing):
       
 21956         * parser/Nodes.h:
       
 21957         (JSC::FunctionBodyNode::ident):
       
 21958             Move m_ident & make methods from FuncDeclNode & FuncExprNode to FunctionBodyNode.
       
 21959 
       
 21960         * runtime/JSFunction.h:
       
 21961         (JSC::FunctionBodyNode::make):
       
 21962             Make this method inline (was FuncDeclNode::makeFunction).
       
 21963 
       
 21964 2009-08-11  Oliver Hunt  <oliver@apple.com>
       
 21965 
       
 21966         Reviewed by Gavin Barraclough.
       
 21967 
       
 21968         Native JSON.stringify does not omit functions
       
 21969         https://bugs.webkit.org/show_bug.cgi?id=28117
       
 21970 
       
 21971         Objects that are callable should be treated as undefined when
       
 21972         serialising to JSON.
       
 21973 
       
 21974         * runtime/JSONObject.cpp:
       
 21975         (JSC::Stringifier::appendStringifiedValue):
       
 21976 
       
 21977 2009-08-11  Oliver Hunt  <oliver@apple.com>
       
 21978 
       
 21979         Reviewed by Geoff Garen.
       
 21980 
       
 21981         REGRESSION: Hang/crash in BytecodeGenerator::constRegisterFor loading simple page
       
 21982         https://bugs.webkit.org/show_bug.cgi?id=28169
       
 21983 
       
 21984         Handle the case where someone has attempted to shadow a property
       
 21985         on the global object with a constant.
       
 21986 
       
 21987         * bytecompiler/BytecodeGenerator.cpp:
       
 21988         (JSC::BytecodeGenerator::constRegisterFor):
       
 21989         * parser/Nodes.cpp:
       
 21990         (JSC::ConstDeclNode::emitCodeSingle):
       
 21991 
       
 21992 2009-08-11  John Gregg  <johnnyg@google.com>
       
 21993 
       
 21994         Reviewed by Maciej Stachowiak.
       
 21995 
       
 21996         Desktop Notifications API
       
 21997         https://bugs.webkit.org/show_bug.cgi?id=25463
       
 21998 
       
 21999         Adds ENABLE_NOTIFICATION flag.
       
 22000 
       
 22001         * Configurations/FeatureDefines.xcconfig:
       
 22002         * wtf/Platform.h:
       
 22003 
       
 22004 2009-08-11  Maxime Simon  <simon.maxime@gmail.com>
       
 22005 
       
 22006         Reviewed by Eric Seidel.
       
 22007 
       
 22008         Modifications on JavaScriptCore to allow Haiku port.
       
 22009         https://bugs.webkit.org/show_bug.cgi?id=28121
       
 22010 
       
 22011         * runtime/Collector.cpp: Haiku doesn't have sys/mman.h, using OS.h instead.
       
 22012         (JSC::currentThreadStackBase): Haiku uses its own threading system.
       
 22013         * wtf/Platform.h: Defining all Haiku platform values.
       
 22014         * wtf/haiku/MainThreadHaiku.cpp: Adding a missing header (NotImplemented.h).
       
 22015 
       
 22016 2009-08-11  Jessie Berlin  <jberlin@apple.com>
       
 22017 
       
 22018         Reviewed by Adam Roben.
       
 22019 
       
 22020         Fix windows build.
       
 22021 
       
 22022         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 22023 
       
 22024 2009-08-11  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
       
 22025 
       
 22026         Reviewed by Tor Arne Vestbø.
       
 22027 
       
 22028         Buildfix for Qt-win platforms.
       
 22029 
       
 22030         * JavaScriptCore.pri: Choose MarkStackPosix.cpp or MarkStackWin.cpp depend on platform.
       
 22031 
       
 22032 2009-08-10  Oliver Hunt  <oliver@apple.com>
       
 22033 
       
 22034         Reviewed by NOBODY (And another build fix).
       
 22035 
       
 22036         Add new exports for MSVC
       
 22037 
       
 22038         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 22039         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 22040         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 22041 
       
 22042 2009-08-10  Oliver Hunt  <oliver@apple.com>
       
 22043 
       
 22044         Reviewed by NOBODY (yet another build fix).
       
 22045 
       
 22046         Remove obsolete entries from MSVC exports file
       
 22047 
       
 22048         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 22049         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 22050 
       
 22051 2009-08-10  Oliver Hunt  <oliver@apple.com>
       
 22052 
       
 22053         Add includes needed for non-allinonefile builds
       
 22054 
       
 22055         * runtime/GetterSetter.h:
       
 22056         * runtime/ScopeChain.h:
       
 22057 
       
 22058 2009-08-10  Oliver Hunt  <oliver@apple.com>
       
 22059 
       
 22060         Fix export file for last build fix
       
 22061 
       
 22062         * JavaScriptCore.exp:
       
 22063 
       
 22064 2009-08-10  Oliver Hunt  <oliver@apple.com>
       
 22065 
       
 22066         Hoist page size initialization into platform specific code.
       
 22067 
       
 22068         * jit/ExecutableAllocatorPosix.cpp:
       
 22069         * jit/ExecutableAllocatorWin.cpp:
       
 22070         * runtime/MarkStack.h:
       
 22071         (JSC::MarkStack::pageSize):
       
 22072         * runtime/MarkStackPosix.cpp:
       
 22073         (JSC::MarkStack::initializePagesize):
       
 22074         * runtime/MarkStackWin.cpp:
       
 22075         (JSC::MarkStack::initializePagesize):
       
 22076 
       
 22077 2009-08-07  Oliver Hunt  <oliver@apple.com>
       
 22078 
       
 22079         Reviewed by Gavin Barraclough.
       
 22080 
       
 22081         Stack overflow crash in JavaScript garbage collector mark pass
       
 22082         https://bugs.webkit.org/show_bug.cgi?id=12216
       
 22083 
       
 22084         Make the GC mark phase iterative by using an explicit mark stack.
       
 22085         To do this marking any single object is performed in multiple stages
       
 22086           * The object is appended to the MarkStack, this sets the marked
       
 22087             bit for the object using the new markDirect() function, and then
       
 22088             returns
       
 22089           * When the MarkStack is drain()ed the object is popped off the stack
       
 22090             and markChildren(MarkStack&) is called on the object to collect 
       
 22091             all of its children.  drain() then repeats until the stack is empty.
       
 22092 
       
 22093         Additionally I renamed a number of methods from 'mark' to 'markAggregate'
       
 22094         in order to make it more clear that marking of those object was not
       
 22095         going to result in an actual recursive mark.
       
 22096 
       
 22097         * GNUmakefile.am
       
 22098         * JavaScriptCore.exp:
       
 22099         * JavaScriptCore.gypi:
       
 22100         * JavaScriptCore.pri:
       
 22101         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
 22102         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 22103         * bytecode/CodeBlock.cpp:
       
 22104         (JSC::CodeBlock::markAggregate):
       
 22105         * bytecode/CodeBlock.h:
       
 22106         * bytecode/EvalCodeCache.h:
       
 22107         (JSC::EvalCodeCache::markAggregate):
       
 22108         * debugger/DebuggerActivation.cpp:
       
 22109         (JSC::DebuggerActivation::markChildren):
       
 22110         * debugger/DebuggerActivation.h:
       
 22111         * interpreter/Register.h:
       
 22112         * interpreter/RegisterFile.h:
       
 22113         (JSC::RegisterFile::markGlobals):
       
 22114         (JSC::RegisterFile::markCallFrames):
       
 22115         * parser/Nodes.cpp:
       
 22116         (JSC::ScopeNodeData::markAggregate):
       
 22117         (JSC::EvalNode::markAggregate):
       
 22118         (JSC::FunctionBodyNode::markAggregate):
       
 22119         * parser/Nodes.h:
       
 22120         (JSC::ScopeNode::markAggregate):
       
 22121         * runtime/ArgList.cpp:
       
 22122         (JSC::MarkedArgumentBuffer::markLists):
       
 22123         * runtime/ArgList.h:
       
 22124         * runtime/Arguments.cpp:
       
 22125         (JSC::Arguments::markChildren):
       
 22126         * runtime/Arguments.h:
       
 22127         * runtime/Collector.cpp:
       
 22128         (JSC::Heap::markConservatively):
       
 22129         (JSC::Heap::markCurrentThreadConservativelyInternal):
       
 22130         (JSC::Heap::markCurrentThreadConservatively):
       
 22131         (JSC::Heap::markOtherThreadConservatively):
       
 22132         (JSC::Heap::markStackObjectsConservatively):
       
 22133         (JSC::Heap::markProtectedObjects):
       
 22134         (JSC::Heap::collect):
       
 22135         * runtime/Collector.h:
       
 22136         * runtime/GetterSetter.cpp:
       
 22137         (JSC::GetterSetter::markChildren):
       
 22138         * runtime/GetterSetter.h:
       
 22139         (JSC::GetterSetter::GetterSetter):
       
 22140         (JSC::GetterSetter::createStructure):
       
 22141         * runtime/GlobalEvalFunction.cpp:
       
 22142         (JSC::GlobalEvalFunction::markChildren):
       
 22143         * runtime/GlobalEvalFunction.h:
       
 22144         * runtime/JSActivation.cpp:
       
 22145         (JSC::JSActivation::markChildren):
       
 22146         * runtime/JSActivation.h:
       
 22147         * runtime/JSArray.cpp:
       
 22148         (JSC::JSArray::markChildren):
       
 22149         * runtime/JSArray.h:
       
 22150         * runtime/JSCell.h:
       
 22151         (JSC::JSCell::markCellDirect):
       
 22152         (JSC::JSCell::markChildren):
       
 22153         (JSC::JSValue::markDirect):
       
 22154         (JSC::JSValue::markChildren):
       
 22155         (JSC::JSValue::hasChildren):
       
 22156         (JSC::MarkStack::append):
       
 22157         (JSC::MarkStack::drain):
       
 22158         * runtime/JSFunction.cpp:
       
 22159         (JSC::JSFunction::markChildren):
       
 22160         * runtime/JSFunction.h:
       
 22161         * runtime/JSGlobalData.cpp:
       
 22162         (JSC::JSGlobalData::JSGlobalData):
       
 22163         * runtime/JSGlobalData.h:
       
 22164         * runtime/JSGlobalObject.cpp:
       
 22165         (JSC::markIfNeeded):
       
 22166         (JSC::JSGlobalObject::markChildren):
       
 22167         * runtime/JSGlobalObject.h:
       
 22168         * runtime/JSNotAnObject.cpp:
       
 22169         (JSC::JSNotAnObject::markChildren):
       
 22170         * runtime/JSNotAnObject.h:
       
 22171         * runtime/JSONObject.cpp:
       
 22172         (JSC::Stringifier::markAggregate):
       
 22173         (JSC::JSONObject::markStringifiers):
       
 22174         * runtime/JSONObject.h:
       
 22175         * runtime/JSObject.cpp:
       
 22176         (JSC::JSObject::markChildren):
       
 22177         (JSC::JSObject::defineGetter):
       
 22178         (JSC::JSObject::defineSetter):
       
 22179         * runtime/JSObject.h:
       
 22180         * runtime/JSPropertyNameIterator.cpp:
       
 22181         (JSC::JSPropertyNameIterator::markChildren):
       
 22182         * runtime/JSPropertyNameIterator.h:
       
 22183         (JSC::JSPropertyNameIterator::createStructure):
       
 22184         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
       
 22185         (JSC::JSPropertyNameIterator::create):
       
 22186         * runtime/JSStaticScopeObject.cpp:
       
 22187         (JSC::JSStaticScopeObject::markChildren):
       
 22188         * runtime/JSStaticScopeObject.h:
       
 22189         * runtime/JSType.h:
       
 22190         (JSC::):
       
 22191         * runtime/JSValue.h:
       
 22192         * runtime/JSWrapperObject.cpp:
       
 22193         (JSC::JSWrapperObject::markChildren):
       
 22194         * runtime/JSWrapperObject.h:
       
 22195         * runtime/MarkStack.cpp: Added.
       
 22196         (JSC::MarkStack::compact):
       
 22197         * runtime/MarkStack.h: Added.
       
 22198         (JSC::):
       
 22199         (JSC::MarkStack::MarkStack):
       
 22200         (JSC::MarkStack::append):
       
 22201         (JSC::MarkStack::appendValues):
       
 22202         (JSC::MarkStack::~MarkStack):
       
 22203         (JSC::MarkStack::MarkSet::MarkSet):
       
 22204         (JSC::MarkStack::pageSize):
       
 22205         
       
 22206         MarkStackArray is a non-shrinking, mmap-based vector type
       
 22207         used for storing objects to be marked.
       
 22208         (JSC::MarkStack::MarkStackArray::MarkStackArray):
       
 22209         (JSC::MarkStack::MarkStackArray::~MarkStackArray):
       
 22210         (JSC::MarkStack::MarkStackArray::expand):
       
 22211         (JSC::MarkStack::MarkStackArray::append):
       
 22212         (JSC::MarkStack::MarkStackArray::removeLast):
       
 22213         (JSC::MarkStack::MarkStackArray::isEmpty):
       
 22214         (JSC::MarkStack::MarkStackArray::size):
       
 22215         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
       
 22216         * runtime/MarkStackPosix.cpp: Added.
       
 22217         (JSC::MarkStack::allocateStack):
       
 22218         (JSC::MarkStack::releaseStack):
       
 22219         * runtime/MarkStackWin.cpp: Added.
       
 22220         (JSC::MarkStack::allocateStack):
       
 22221         (JSC::MarkStack::releaseStack):
       
 22222 
       
 22223         * runtime/ScopeChain.h:
       
 22224         * runtime/ScopeChainMark.h:
       
 22225         (JSC::ScopeChain::markAggregate):
       
 22226         * runtime/SmallStrings.cpp:
       
 22227         (JSC::SmallStrings::mark):
       
 22228         * runtime/Structure.h:
       
 22229         (JSC::Structure::markAggregate):
       
 22230 
       
 22231 2009-08-10  Mark Rowe  <mrowe@apple.com>
       
 22232         
       
 22233         Reviewed by Darin Adler.
       
 22234 
       
 22235         Fix hundreds of "pointer being freed was not allocated" errors seen on the build bot.
       
 22236 
       
 22237         * wtf/FastMalloc.h: Implement nothrow variants of the delete and delete[] operators since
       
 22238         we implement the nothrow variants of new and new[].  The nothrow variant of delete is called
       
 22239         explicitly in the implementation of std::sort which was resulting in FastMalloc-allocated
       
 22240         memory being passed to the system allocator to free.
       
 22241 
       
 22242 2009-08-10  Jan Michael Alonzo  <jmalonzo@webkit.org>
       
 22243 
       
 22244         [Gtk] Unreviewed build fix. Move JSAPIValueWrapper.cpp/.h in the debug
       
 22245         section. This file is already part of AllInOneFile in Release builds.
       
 22246 
       
 22247         * GNUmakefile.am:
       
 22248 
       
 22249 2009-08-10  Darin Adler  <darin@apple.com>
       
 22250 
       
 22251         * wtf/FastMalloc.h: Fix build.
       
 22252 
       
 22253 2009-08-10  Darin Adler  <darin@apple.com>
       
 22254 
       
 22255         Reviewed by Mark Rowe.
       
 22256 
       
 22257         FastMalloc.h has cross-platform code but marked as WinCE-only
       
 22258         https://bugs.webkit.org/show_bug.cgi?id=28160
       
 22259 
       
 22260         1) The support for nothrow was inside #if PLATFORM(WINCE) even though it is
       
 22261            not platform-specific.
       
 22262         2) The code tried to override operator delete nothrow, which does not exist.
       
 22263         3) The code in the header checks the value of USE_SYSTEM_MALLOC, but the code
       
 22264            in FastMalloc.cpp checks only if the macro is defined.
       
 22265 
       
 22266         * wtf/FastMalloc.h: See above.
       
 22267         * wtf/FastMalloc.cpp: Ditto.
       
 22268 
       
 22269 2009-08-10  Sam Weinig  <sam@webkit.org>
       
 22270 
       
 22271         Reviewed by Anders Carlsson.
       
 22272 
       
 22273         Fix an annoying indentation issue.
       
 22274 
       
 22275         * runtime/DateConstructor.cpp:
       
 22276         (JSC::constructDate):
       
 22277 
       
 22278 2009-08-10  Xan Lopez  <xlopez@igalia.com>
       
 22279 
       
 22280         Unreviewed build fix.
       
 22281 
       
 22282         Add new files to makefile.
       
 22283 
       
 22284         * GNUmakefile.am:
       
 22285 
       
 22286 2009-08-10  Simon Hausmann  <simon.hausmann@nokia.com>
       
 22287 
       
 22288         Fix compilation with the interpreter instead of the JIT by including
       
 22289         PrototypeFunction.h as forward-declared through NativeFunctionWrapper.h.
       
 22290 
       
 22291         * runtime/ObjectConstructor.cpp:
       
 22292 
       
 22293 2009-08-09  Oliver Hunt  <oliver@apple.com>
       
 22294 
       
 22295         Reviewed by George Staikos.
       
 22296 
       
 22297         JSON.stringify replacer returning undefined does not omit object properties
       
 22298         https://bugs.webkit.org/show_bug.cgi?id=28118
       
 22299 
       
 22300         Correct behaviour of stringify when using a replacer function that returns
       
 22301         undefined.  This is a simple change to move the undefined value check to
       
 22302         after the replacer function is called.  This means that the replacer function
       
 22303         is now called for properties with the value undefined, however i've confirmed
       
 22304         that this behaviour is correct.
       
 22305         
       
 22306         In addition I've made the cyclic object exception have a more useful error
       
 22307         message.
       
 22308 
       
 22309         * runtime/JSONObject.cpp:
       
 22310         (JSC::Stringifier::appendStringifiedValue):
       
 22311 
       
 22312 2009-08-08  Oliver Hunt  <oliver@apple.com>
       
 22313 
       
 22314         Reviewed by Eric Seidel and Sam Weinig.
       
 22315 
       
 22316         [ES5] Implement Object.getPrototypeOf
       
 22317         https://bugs.webkit.org/show_bug.cgi?id=28114
       
 22318 
       
 22319         Implement getPrototypeOf
       
 22320 
       
 22321         * runtime/CommonIdentifiers.h:
       
 22322         * runtime/JSGlobalObject.cpp:
       
 22323         (JSC::JSGlobalObject::reset):
       
 22324         * runtime/ObjectConstructor.cpp:
       
 22325         (JSC::ObjectConstructor::ObjectConstructor):
       
 22326         (JSC::objectConsGetPrototypeOf):
       
 22327         * runtime/ObjectConstructor.h:
       
 22328 
       
 22329 2009-08-07  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 22330 
       
 22331         Reviewed by Eric Seidel.
       
 22332 
       
 22333         Allow custom memory allocation control for Noncopyable class
       
 22334         https://bugs.webkit.org/show_bug.cgi?id=27879
       
 22335 
       
 22336         Several classes which are inherited from Noncopyable are instantiated by
       
 22337         operator new, so Noncopyable class has been inherited from FastAllocBase.
       
 22338 
       
 22339         * wtf/Noncopyable.h:
       
 22340 
       
 22341 2009-08-07  George Staikos <george.staikos@torchmobile.com> 
       
 22342 
       
 22343         Reviewed by Eric Seidel.
       
 22344 
       
 22345         https://bugs.webkit.org/show_bug.cgi?id=27305
       
 22346         Implement WinCE-specific unicode layer.
       
 22347         Written by George Staikos <george.staikos@torchmobile.com>
       
 22348         with bug fixes by Yong Li <yong.li@torchmobile.com>
       
 22349         refactored by Joe Mason <joe.mason@torchmobile.com> 
       
 22350 
       
 22351         * wtf/Platform.h:
       
 22352         * wtf/unicode/Unicode.h:
       
 22353         * wtf/unicode/wince/UnicodeWince.cpp: Added.
       
 22354         (WTF::Unicode::toLower):
       
 22355         (WTF::Unicode::toUpper):
       
 22356         (WTF::Unicode::foldCase):
       
 22357         (WTF::Unicode::isPrintableChar):
       
 22358         (WTF::Unicode::isSpace):
       
 22359         (WTF::Unicode::isLetter):
       
 22360         (WTF::Unicode::isUpper):
       
 22361         (WTF::Unicode::isLower):
       
 22362         (WTF::Unicode::isDigit):
       
 22363         (WTF::Unicode::isPunct):
       
 22364         (WTF::Unicode::toTitleCase):
       
 22365         (WTF::Unicode::direction):
       
 22366         (WTF::Unicode::category):
       
 22367         (WTF::Unicode::decompositionType):
       
 22368         (WTF::Unicode::combiningClass):
       
 22369         (WTF::Unicode::mirroredChar):
       
 22370         (WTF::Unicode::digitValue):
       
 22371         * wtf/unicode/wince/UnicodeWince.h: Added.
       
 22372         (WTF::Unicode::):
       
 22373         (WTF::Unicode::isSeparatorSpace):
       
 22374         (WTF::Unicode::isHighSurrogate):
       
 22375         (WTF::Unicode::isLowSurrogate):
       
 22376         (WTF::Unicode::isArabicChar):
       
 22377         (WTF::Unicode::hasLineBreakingPropertyComplexContext):
       
 22378         (WTF::Unicode::umemcasecmp):
       
 22379         (WTF::Unicode::surrogateToUcs4):
       
 22380 
       
 22381 2009-08-07  Yongjun Zhang  <yongjun.zhang@nokia.com>
       
 22382 
       
 22383         Reviewed by Eric Seidel.
       
 22384 
       
 22385         https://bugs.webkit.org/show_bug.cgi?id=28069
       
 22386 
       
 22387         Add inline to help winscw compiler resolve specialized argument in 
       
 22388         templated functions.  
       
 22389 
       
 22390         * runtime/LiteralParser.cpp:
       
 22391         (JSC::LiteralParser::Lexer::lexString):
       
 22392 
       
 22393 2009-08-07  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 22394 
       
 22395         Reviewed by Eric Seidel.
       
 22396 
       
 22397         Allow custom memory allocation control for RegExpObjectData struct
       
 22398         http://bugs.webkit.org/show_bug.cgi?id=26750
       
 22399 
       
 22400         Inherits RegExpObjectData struct from FastAllocBase because
       
 22401         it has been instantiated by 'new' in JavaScriptCore/runtime/RegExpObject.cpp:62
       
 22402 
       
 22403         * runtime/RegExpObject.h:
       
 22404 
       
 22405 2009-08-06  Norbert Leser  <norbert.leser@nokia.com>
       
 22406 
       
 22407         Reviewed by Darin Adler.
       
 22408 
       
 22409         Updated patch for bug #27059:
       
 22410         Symbian platform always uses little endian encoding,
       
 22411         regardless of compiler.
       
 22412         We need to make sure that we correctly detect EABI architecture
       
 22413         for armv5 targets on Symbian,
       
 22414         where __EABI__ is set but not __ARM_EABI__
       
 22415 
       
 22416         * wtf/Platform.h:
       
 22417 
       
 22418 2009-08-06  Adam Barth  <abarth@webkit.org>
       
 22419 
       
 22420         Unreviewed revert.
       
 22421 
       
 22422         http://bugs.webkit.org/show_bug.cgi?id=27879
       
 22423 
       
 22424         Revert 46877 because it broke GTK.
       
 22425 
       
 22426         * wtf/Noncopyable.h:
       
 22427 
       
 22428 2009-08-06  Gavin Barraclough  <barraclough@apple.com>
       
 22429 
       
 22430         Reviewed by Oliver Hunt.
       
 22431 
       
 22432         Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification.
       
 22433         ( https://bugs.webkit.org/show_bug.cgi?id=27635 )
       
 22434 
       
 22435         This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%.
       
 22436         (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled).
       
 22437 
       
 22438         * bytecode/CodeBlock.cpp:
       
 22439         (JSC::printStructureStubInfo):
       
 22440             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
       
 22441 
       
 22442         * bytecode/CodeBlock.h:
       
 22443         (JSC::):
       
 22444         (JSC::CallLinkInfo::seenOnce):
       
 22445         (JSC::CallLinkInfo::setSeen):
       
 22446         (JSC::MethodCallLinkInfo::seenOnce):
       
 22447         (JSC::MethodCallLinkInfo::setSeen):
       
 22448             - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once.
       
 22449 
       
 22450         * bytecode/StructureStubInfo.cpp:
       
 22451         (JSC::StructureStubInfo::deref):
       
 22452             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
       
 22453 
       
 22454         * bytecode/StructureStubInfo.h:
       
 22455         (JSC::StructureStubInfo::StructureStubInfo):
       
 22456         (JSC::StructureStubInfo::initGetByIdSelf):
       
 22457         (JSC::StructureStubInfo::initGetByIdProto):
       
 22458         (JSC::StructureStubInfo::initGetByIdChain):
       
 22459         (JSC::StructureStubInfo::initGetByIdSelfList):
       
 22460         (JSC::StructureStubInfo::initGetByIdProtoList):
       
 22461         (JSC::StructureStubInfo::initPutByIdTransition):
       
 22462         (JSC::StructureStubInfo::initPutByIdReplace):
       
 22463         (JSC::StructureStubInfo::seenOnce):
       
 22464         (JSC::StructureStubInfo::setSeen):
       
 22465             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once.
       
 22466 
       
 22467         * bytecompiler/BytecodeGenerator.cpp:
       
 22468         (JSC::BytecodeGenerator::emitGetById):
       
 22469         (JSC::BytecodeGenerator::emitPutById):
       
 22470             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
       
 22471 
       
 22472         * jit/JIT.cpp:
       
 22473         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 22474         (JSC::JIT::unlinkCall):
       
 22475             - Remove the "don't lazy link" stage of calls.
       
 22476 
       
 22477         * jit/JIT.h:
       
 22478         (JSC::JIT::compileCTIMachineTrampolines):
       
 22479             - Remove the "don't lazy link" stage of calls.
       
 22480 
       
 22481         * jit/JITCall.cpp:
       
 22482         (JSC::JIT::compileOpCallSlowCase):
       
 22483             - Remove the "don't lazy link" stage of calls.
       
 22484 
       
 22485         * jit/JITStubs.cpp:
       
 22486         (JSC::JITThunks::JITThunks):
       
 22487         (JSC::JITThunks::tryCachePutByID):
       
 22488         (JSC::JITThunks::tryCacheGetByID):
       
 22489         (JSC::JITStubs::DEFINE_STUB_FUNCTION):
       
 22490         (JSC::JITStubs::getPolymorphicAccessStructureListSlot):
       
 22491             - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
       
 22492 
       
 22493         * jit/JITStubs.h:
       
 22494         (JSC::JITThunks::ctiStringLengthTrampoline):
       
 22495         (JSC::JITStubs::):
       
 22496             - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
       
 22497 
       
 22498         * wtf/PtrAndFlags.h:
       
 22499         (WTF::PtrAndFlags::PtrAndFlags):
       
 22500         (WTF::PtrAndFlags::operator!):
       
 22501         (WTF::PtrAndFlags::operator->):
       
 22502             - Add ! and -> operators, add constuctor with pointer argument.
       
 22503 
       
 22504 2009-08-06  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 22505 
       
 22506         Reviewed by Adam Barth.
       
 22507 
       
 22508         Allow custom memory allocation control for Noncopyable class
       
 22509         https://bugs.webkit.org/show_bug.cgi?id=27879
       
 22510 
       
 22511         Several classes which inherited from Noncopyable are instantiated by
       
 22512         operator new, so Noncopyable class has been inherited from FastAllocBase.
       
 22513 
       
 22514         * wtf/Noncopyable.h:
       
 22515 
       
 22516 2009-08-06  Mark Rowe  <mrowe@apple.com>
       
 22517 
       
 22518         Rubber-stamped by Sam Weinig.
       
 22519 
       
 22520         Add explicit dependencies for our build verification scripts to ensure that they always run after linking has completed.
       
 22521 
       
 22522         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 22523 
       
 22524 2009-08-06  Mark Rowe  <mrowe@apple.com>
       
 22525 
       
 22526         Bring a little order to our otherwise out of control lives.
       
 22527 
       
 22528         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 22529 
       
 22530 2009-08-06  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 22531 
       
 22532         Reviewed by Darin Adler.
       
 22533 
       
 22534         Allow custom memory allocation control for JavaScriptCore's PolymorphicAccessStructureList struct
       
 22535         https://bugs.webkit.org/show_bug.cgi?id=27877
       
 22536 
       
 22537         Inherits PolymorphicAccessStructureList struct from FastAllocBase because it has been instantiated by
       
 22538         'new' in JavaScriptCore/jit/JITStubs.cpp:1229.
       
 22539 
       
 22540         * bytecode/Instruction.h:
       
 22541 
       
 22542 2009-08-05  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 22543 
       
 22544         Reviewed by Darin Adler.
       
 22545 
       
 22546         Allow custom memory allocation control for JavaScriptCore's ScopeNodeData struct
       
 22547         https://bugs.webkit.org/show_bug.cgi?id=27875
       
 22548 
       
 22549         Inherits ScopeNodeData struct from FastAllocBase because it has been instantiated by
       
 22550         'new' in JavaScriptCore/parser/Nodes.cpp:1848.
       
 22551 
       
 22552         * parser/Nodes.h:
       
 22553 
       
 22554 2009-08-05  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
       
 22555 
       
 22556         Reviewed by Gavin Barraclough.
       
 22557 
       
 22558         Add floating point support for generic ARM port.
       
 22559         https://bugs.webkit.org/show_bug.cgi?id=24986
       
 22560 
       
 22561         * assembler/ARMAssembler.cpp:
       
 22562         (JSC::ARMAssembler::doubleTransfer):
       
 22563         * assembler/ARMAssembler.h:
       
 22564         (JSC::ARM::):
       
 22565         (JSC::ARMAssembler::):
       
 22566         (JSC::ARMAssembler::faddd_r):
       
 22567         (JSC::ARMAssembler::fsubd_r):
       
 22568         (JSC::ARMAssembler::fmuld_r):
       
 22569         (JSC::ARMAssembler::fcmpd_r):
       
 22570         (JSC::ARMAssembler::fdtr_u):
       
 22571         (JSC::ARMAssembler::fdtr_d):
       
 22572         (JSC::ARMAssembler::fmsr_r):
       
 22573         (JSC::ARMAssembler::fsitod_r):
       
 22574         (JSC::ARMAssembler::fmstat):
       
 22575         * assembler/MacroAssemblerARM.h:
       
 22576         (JSC::MacroAssemblerARM::):
       
 22577         (JSC::MacroAssemblerARM::supportsFloatingPoint):
       
 22578         (JSC::MacroAssemblerARM::loadDouble):
       
 22579         (JSC::MacroAssemblerARM::storeDouble):
       
 22580         (JSC::MacroAssemblerARM::addDouble):
       
 22581         (JSC::MacroAssemblerARM::subDouble):
       
 22582         (JSC::MacroAssemblerARM::mulDouble):
       
 22583         (JSC::MacroAssemblerARM::convertInt32ToDouble):
       
 22584         (JSC::MacroAssemblerARM::branchDouble):
       
 22585         * jit/JIT.h:
       
 22586 
       
 22587 2009-08-05  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
       
 22588 
       
 22589         Reviewed by Gavin Barraclough.
       
 22590 
       
 22591         Add JIT support for generic ARM port without optimizations.
       
 22592         https://bugs.webkit.org/show_bug.cgi?id=24986
       
 22593 
       
 22594         All JIT optimizations are disabled.
       
 22595 
       
 22596         Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
       
 22597         Signed off by Gabor Loki <loki@inf.u-szeged.hu>
       
 22598 
       
 22599         * assembler/ARMAssembler.cpp:
       
 22600         (JSC::ARMAssembler::baseIndexTransfer32):
       
 22601         * assembler/AbstractMacroAssembler.h:
       
 22602         (JSC::AbstractMacroAssembler::Imm32::Imm32):
       
 22603         * assembler/MacroAssemblerARM.h:
       
 22604         (JSC::MacroAssemblerARM::store32):
       
 22605         (JSC::MacroAssemblerARM::move):
       
 22606         (JSC::MacroAssemblerARM::branch32):
       
 22607         (JSC::MacroAssemblerARM::add32):
       
 22608         (JSC::MacroAssemblerARM::sub32):
       
 22609         (JSC::MacroAssemblerARM::load32):
       
 22610         * bytecode/CodeBlock.h:
       
 22611         (JSC::CodeBlock::getBytecodeIndex):
       
 22612         * jit/JIT.h:
       
 22613         * jit/JITInlineMethods.h:
       
 22614         (JSC::JIT::restoreArgumentReference):
       
 22615         * jit/JITOpcodes.cpp:
       
 22616         * jit/JITStubs.cpp:
       
 22617         * jit/JITStubs.h:
       
 22618         (JSC::JITStackFrame::returnAddressSlot):
       
 22619         * wtf/Platform.h:
       
 22620 
       
 22621 2009-08-04  Gavin Barraclough  <barraclough@apple.com>
       
 22622 
       
 22623         Rubber Stamped by Oiver Hunt.
       
 22624 
       
 22625         Revert r46643 since this breaks the Yarr::Interpreter running the v8 tests.
       
 22626         https://bugs.webkit.org/show_bug.cgi?id=27874
       
 22627 
       
 22628         * yarr/RegexInterpreter.cpp:
       
 22629         (JSC::Yarr::Interpreter::allocDisjunctionContext):
       
 22630         (JSC::Yarr::Interpreter::freeDisjunctionContext):
       
 22631         (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
       
 22632         (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
       
 22633 
       
 22634 2009-08-04  Oliver Hunt  <oliver@apple.com>
       
 22635 
       
 22636         PPC64 Build fix
       
 22637 
       
 22638         * wtf/Platform.h:
       
 22639 
       
 22640 2009-08-04  Benjamin C Meyer  <benjamin.meyer@torchmobile.com>
       
 22641 
       
 22642         Reviewed by Adam Treat
       
 22643 
       
 22644         Explicitly include limits.h header when using INT_MAX and INT_MIN
       
 22645 
       
 22646         * interpreter/Interpreter.cpp
       
 22647 
       
 22648 2009-08-03  Harald Fernengel  <harald.fernengel@nokia.com>
       
 22649 
       
 22650         Reviewed by Darin Adler.
       
 22651 
       
 22652         Fix compile error for ambigous call to abs()
       
 22653         https://bugs.webkit.org/show_bug.cgi?id=27873
       
 22654 
       
 22655         Fix ambiguity in abs(long int) call by calling labs() instead
       
 22656 
       
 22657         * wtf/DateMath.cpp: replace call to abs() with labs()
       
 22658 
       
 22659 2009-08-03  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 22660 
       
 22661         Reviewed by Eric Seidel.
       
 22662 
       
 22663         [Qt] Consolidate common gcc flags to WebKit.pri
       
 22664         https://bugs.webkit.org/show_bug.cgi?id=27934
       
 22665 
       
 22666         * JavaScriptCore.pro:
       
 22667 
       
 22668 2009-08-03  Ada Chan  <adachan@apple.com>
       
 22669 
       
 22670         Fixed the Tiger build.
       
 22671 
       
 22672         * wtf/FastMalloc.cpp:
       
 22673 
       
 22674 2009-08-03  Ada Chan  <adachan@apple.com>
       
 22675 
       
 22676         Reviewed by Darin Adler.
       
 22677 
       
 22678         Don't use background thread to scavenge memory on Tiger until we figure out why it causes a crash.
       
 22679         https://bugs.webkit.org/show_bug.cgi?id=27900
       
 22680 
       
 22681         * wtf/FastMalloc.cpp:
       
 22682 
       
 22683 2009-08-03  Fumitoshi Ukai  <ukai@chromium.org>
       
 22684 
       
 22685         Reviewed by Jan Alonzo.
       
 22686 
       
 22687         Fix build break on Gtk/x86_64.
       
 22688         https://bugs.webkit.org/show_bug.cgi?id=27936
       
 22689 
       
 22690         Use JSVALUE64 for X86_64 LINUX, except Qt.
       
 22691 
       
 22692         * wtf/Platform.h:
       
 22693 
       
 22694 2009-08-02  Xan Lopez  <xlopez@igalia.com>
       
 22695 
       
 22696         Fix the GTK+ build.
       
 22697 
       
 22698         * wtf/Platform.h:
       
 22699 
       
 22700 2009-08-02  Geoffrey Garen  <ggaren@apple.com>
       
 22701 
       
 22702         Reviewed by Sam Weinig.
       
 22703 
       
 22704         Disabled JSVALUE32_64 on Qt builds, since all layout tests mysteriously
       
 22705         crash with it enabled.
       
 22706 
       
 22707         * wtf/Platform.h:
       
 22708 
       
 22709 2009-08-02  Geoffrey Garen  <ggaren@apple.com>
       
 22710 
       
 22711         Qt build fix.
       
 22712 
       
 22713         Added JSAPIValueWrapper.cpp to the build.
       
 22714 
       
 22715         * JavaScriptCore.pri:
       
 22716 
       
 22717 2009-08-02  Geoffrey Garen  <ggaren@apple.com>
       
 22718 
       
 22719         Windows build fix.
       
 22720 
       
 22721         Exported symbols for JSAPIValueWrapper.
       
 22722 
       
 22723         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 22724         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 22725 
       
 22726 2009-08-02  Geoffrey Garen  <ggaren@apple.com>
       
 22727 
       
 22728         GTK build fix.
       
 22729 
       
 22730         * jit/JITStubs.cpp: #include <stdarg.h>, for a definition of va_start.
       
 22731 
       
 22732 2009-08-02  Geoffrey Garen  <ggaren@apple.com>
       
 22733 
       
 22734         Qt build fix.
       
 22735         
       
 22736         * runtime/Collector.cpp: #include <limits.h>, for a definition of ULONG_MAX.
       
 22737 
       
 22738 2009-08-02  Geoffrey Garen  <ggaren@apple.com>
       
 22739 
       
 22740         Windows build fix: Nixed JSImmediate::prototype, JSImmediate::toObject,
       
 22741         and JSImmediate::toThisObject, and removed their exported symbols.
       
 22742 
       
 22743         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 22744         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 22745         * runtime/JSImmediate.cpp:
       
 22746         * runtime/JSImmediate.h:
       
 22747 
       
 22748 2009-08-02  Geoffrey Garen  <ggaren@apple.com>
       
 22749 
       
 22750         Reviewed by Mark Rowe.
       
 22751 
       
 22752         Enabled JSVALUE32_64 by default on all platforms other than x86_64 (which uses JSVALUE64).
       
 22753 
       
 22754         * wtf/Platform.h:
       
 22755 
       
 22756 2009-08-02  Kevin Ollivier  <kevino@theolliviers.com>
       
 22757 
       
 22758         Reviewed by Jan Alonzo.
       
 22759 
       
 22760         Script for building the JavaScriptCore library for wx.
       
 22761         https://bugs.webkit.org/show_bug.cgi?id=27619
       
 22762 
       
 22763         * wscript: Added.
       
 22764 
       
 22765 2009-08-02  Yong Li  <yong.li@torchmobile.com>
       
 22766 
       
 22767         Reviewed by George Staikos.
       
 22768 
       
 22769         DateMath depends on strftime and localtime, which need to be imported manually on WinCE
       
 22770         https://bugs.webkit.org/show_bug.cgi?id=26558
       
 22771 
       
 22772         * wtf/DateMath.cpp:
       
 22773 
       
 22774 2009-08-01  David Kilzer  <ddkilzer@apple.com>
       
 22775 
       
 22776         wtf/Threading.h: added include of Platform.h
       
 22777 
       
 22778         Reviewed by Mark Rowe.
       
 22779 
       
 22780         * wtf/Threading.h: Added #include "Platform.h" since this header
       
 22781         uses PLATFORM() and other macros.
       
 22782 
       
 22783 2009-08-01  Mark Rowe  <mrowe@apple.com>
       
 22784 
       
 22785         Rubber-stamped by Oliver Hunt.
       
 22786 
       
 22787         Roll out r46668 as it was misinformed.  ScopeChain is only used with placement new.
       
 22788 
       
 22789         * runtime/ScopeChain.h:
       
 22790 
       
 22791 2009-08-01  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 22792 
       
 22793         Allow custom memory allocation control for JavaScriptCore's HashMap class
       
 22794         http://bugs.webkit.org/show_bug.cgi?id=27871
       
 22795 
       
 22796         Inherits HashMap class from FastAllocBase because it has been
       
 22797         instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:148.
       
 22798 
       
 22799         * wtf/RefPtrHashMap.h:
       
 22800         (WTF::):
       
 22801 
       
 22802 2009-08-01  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 22803 
       
 22804         Allow custom memory allocation control for JavaScriptCore's ScopeChain class
       
 22805         https://bugs.webkit.org/show_bug.cgi?id=27834
       
 22806 
       
 22807         Inherits ScopeChain class from FastAllocBase because it has been
       
 22808         instantiated by 'new' in JavaScriptCore/runtime/JSFunction.h:109.
       
 22809 
       
 22810         * runtime/ScopeChain.h:
       
 22811 
       
 22812 2009-08-01  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 22813 
       
 22814         Reviewed by Darin Adler.
       
 22815 
       
 22816         Allow custom memory allocation control for JavaScriptCore's RegExpConstructorPrivate struct 
       
 22817         https://bugs.webkit.org/show_bug.cgi?id=27833
       
 22818 
       
 22819         Inherits RegExpConstructorPrivate class from FastAllocBase because it has been
       
 22820         instantiated by 'new' in JavaScriptCore/runtime/RegExpConstructor.cpp:152.
       
 22821 
       
 22822         * runtime/RegExpConstructor.cpp:
       
 22823 
       
 22824 2009-07-31  Yong Li  <yong.li@torchmobile.com>
       
 22825 
       
 22826         Reviewed by George Staikos.
       
 22827 
       
 22828         Resurrect the old GetTickCount implementation of currentTime, controlled by WTF_USE_QUERY_PERFORMANCE_COUNTER
       
 22829         currentSystemTime taken from older WebKit; currentTime written by Yong Li <yong.li@torchmobile.com>; cleanup by Joe Mason <joe.mason@torchmobile.com>
       
 22830         https://bugs.webkit.org/show_bug.cgi?id=27848
       
 22831 
       
 22832         * wtf/CurrentTime.cpp:
       
 22833         (WTF::currentSystemTime): get current time with GetCurrentFT
       
 22834         (WTF::currentTime): track msec elapsed since first currentSystemTime call using GetTickCount
       
 22835         * wtf/Platform.h:
       
 22836 
       
 22837 2009-07-31  Ada Chan  <adachan@apple.com>
       
 22838 
       
 22839         Fixes the Windows release-PGO build.
       
 22840 
       
 22841         Reviewed by Jon Honeycutt.
       
 22842 
       
 22843         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Suppresses the warning about unreachable code that we get by adding "return 0" to WTF::TCMalloc_PageHeap::runScavengerThread().
       
 22844         * wtf/FastMalloc.cpp:
       
 22845         (WTF::TCMalloc_PageHeap::runScavengerThread): Fixes the error about the method not returning a value in the release-PGO build.
       
 22846 
       
 22847 2009-07-31  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 22848 
       
 22849         Change malloc to fastMalloc and free to fastFree in Yarr's RegexInterpreter.cpp
       
 22850         https://bugs.webkit.org/show_bug.cgi?id=27874
       
 22851 
       
 22852         Use fastMalloc and fastFree instead of malloc and free in RegexInterpreter.cpp's methods.
       
 22853 
       
 22854         * yarr/RegexInterpreter.cpp:
       
 22855         (JSC::Yarr::Interpreter::allocDisjunctionContext):
       
 22856         (JSC::Yarr::Interpreter::freeDisjunctionContext):
       
 22857         (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
       
 22858         (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
       
 22859 
       
 22860 2009-07-30  Xan Lopez  <xlopez@igalia.com>
       
 22861 
       
 22862         Reviewed by Jan Alonzo.
       
 22863 
       
 22864         Fix compiler warning.
       
 22865 
       
 22866         GCC does not like C++-style comments in preprocessor directives.
       
 22867 
       
 22868         * wtf/Platform.h:
       
 22869 
       
 22870 2009-07-30  John McCall  <rjmccall@apple.com>
       
 22871 
       
 22872         Reviewed by Gavin Barraclough.
       
 22873 
       
 22874         Optimize the X86_64 trampolines: avoid the need for filler arguments
       
 22875         and move the stub-args area closer to the stack pointer.
       
 22876 
       
 22877         * jit/JIT.h: adjust patch offsets because of slight code-size change 
       
 22878         * jit/JITCode.h:
       
 22879         (JSC::JITCode::execute): don't pass filler args
       
 22880         * jit/JITStubs.cpp:
       
 22881         (ctiTrampoline): (X86_64): push args onto stack, use args directly
       
 22882         (ctiVMThrowTrampoline): (X86_64): adjust %rsp by correct displacement
       
 22883         (ctiOpThrowNotCaught): (X86_64): adjust %rsp by correct displacement
       
 22884         * jit/JITStubs.h:
       
 22885         (JITStackFrame): (X86_64): move args area earlier
       
 22886         (ctiTrampoline): remove filler args from prototype
       
 22887 
       
 22888 2009-07-30  Gavin Barraclough  <barraclough@apple.com>
       
 22889 
       
 22890         Temporarily revert r46618 since this is b0rking on Linux.
       
 22891 
       
 22892 2009-07-23  Gavin Barraclough  <barraclough@apple.com>
       
 22893 
       
 22894         Reviewed by Oliver Hunt.
       
 22895 
       
 22896         Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification.
       
 22897         ( https://bugs.webkit.org/show_bug.cgi?id=27635 )
       
 22898 
       
 22899         This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%.
       
 22900         (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled).
       
 22901 
       
 22902         * bytecode/CodeBlock.cpp:
       
 22903         (JSC::printStructureStubInfo):
       
 22904             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
       
 22905 
       
 22906         * bytecode/CodeBlock.h:
       
 22907         (JSC::):
       
 22908         (JSC::CallLinkInfo::seenOnce):
       
 22909         (JSC::CallLinkInfo::setSeen):
       
 22910         (JSC::MethodCallLinkInfo::seenOnce):
       
 22911         (JSC::MethodCallLinkInfo::setSeen):
       
 22912             - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once.
       
 22913 
       
 22914         * bytecode/StructureStubInfo.cpp:
       
 22915         (JSC::StructureStubInfo::deref):
       
 22916             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
       
 22917 
       
 22918         * bytecode/StructureStubInfo.h:
       
 22919         (JSC::StructureStubInfo::StructureStubInfo):
       
 22920         (JSC::StructureStubInfo::initGetByIdSelf):
       
 22921         (JSC::StructureStubInfo::initGetByIdProto):
       
 22922         (JSC::StructureStubInfo::initGetByIdChain):
       
 22923         (JSC::StructureStubInfo::initGetByIdSelfList):
       
 22924         (JSC::StructureStubInfo::initGetByIdProtoList):
       
 22925         (JSC::StructureStubInfo::initPutByIdTransition):
       
 22926         (JSC::StructureStubInfo::initPutByIdReplace):
       
 22927         (JSC::StructureStubInfo::seenOnce):
       
 22928         (JSC::StructureStubInfo::setSeen):
       
 22929             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once.
       
 22930 
       
 22931         * bytecompiler/BytecodeGenerator.cpp:
       
 22932         (JSC::BytecodeGenerator::emitGetById):
       
 22933         (JSC::BytecodeGenerator::emitPutById):
       
 22934             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
       
 22935 
       
 22936         * jit/JIT.cpp:
       
 22937         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 22938         (JSC::JIT::unlinkCall):
       
 22939             - Remove the "don't lazy link" stage of calls.
       
 22940 
       
 22941         * jit/JIT.h:
       
 22942         (JSC::JIT::compileCTIMachineTrampolines):
       
 22943             - Remove the "don't lazy link" stage of calls.
       
 22944 
       
 22945         * jit/JITCall.cpp:
       
 22946         (JSC::JIT::compileOpCallSlowCase):
       
 22947             - Remove the "don't lazy link" stage of calls.
       
 22948 
       
 22949         * jit/JITStubs.cpp:
       
 22950         (JSC::JITThunks::JITThunks):
       
 22951         (JSC::JITThunks::tryCachePutByID):
       
 22952         (JSC::JITThunks::tryCacheGetByID):
       
 22953         (JSC::JITStubs::DEFINE_STUB_FUNCTION):
       
 22954         (JSC::JITStubs::getPolymorphicAccessStructureListSlot):
       
 22955             - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
       
 22956 
       
 22957         * jit/JITStubs.h:
       
 22958         (JSC::JITThunks::ctiStringLengthTrampoline):
       
 22959         (JSC::JITStubs::):
       
 22960             - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
       
 22961 
       
 22962         * wtf/PtrAndFlags.h:
       
 22963         (WTF::PtrAndFlags::PtrAndFlags):
       
 22964         (WTF::PtrAndFlags::operator!):
       
 22965         (WTF::PtrAndFlags::operator->):
       
 22966             - Add ! and -> operators, add constuctor with pointer argument.
       
 22967 
       
 22968 2009-07-30  Geoffrey Garen  <ggaren@apple.com>
       
 22969 
       
 22970         Reviewed by Gavin Barraclough.
       
 22971 
       
 22972         Fixed failing tests seen on Windows buildbot.
       
 22973 
       
 22974         * jit/JITStubs.cpp:
       
 22975         (JSC::DEFINE_STUB_FUNCTION):
       
 22976         * jit/JITStubs.h:
       
 22977         (JSC::): Use "int" instead of "bool" to guarantee a 32-bit result,
       
 22978         regardless of compiler. gcc on mac uses 32-bit values for bool,
       
 22979         but gcc on linux and MSVC on Windows use 8-bit values.
       
 22980 
       
 22981 2009-07-30  Geoffrey Garen  <ggaren@apple.com>
       
 22982 
       
 22983         Windows build fix: added missing symbols on Windows.
       
 22984 
       
 22985         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 22986         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 22987 
       
 22988 2009-07-30  Geoffrey Garen  <ggaren@apple.com>
       
 22989 
       
 22990         Windows build fix: removed stale symbols on Windows.
       
 22991 
       
 22992         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 22993         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 22994 
       
 22995 === End merge of nitro-extreme branch 2009-07-30 ===
       
 22996 
       
 22997 2009-07-20  Geoffrey Garen  <ggaren@apple.com>
       
 22998 
       
 22999         Fixed a post-review typo in r46066 that caused tons of test failures.
       
 23000         
       
 23001         SunSpider reports no change.
       
 23002 
       
 23003         * runtime/JSArray.cpp:
       
 23004         (JSC::JSArray::JSArray): Initialize the full vector capacity, to avoid
       
 23005         uninitialized members at the end.
       
 23006 
       
 23007 2009-07-20  Geoffrey Garen  <ggaren@apple.com>
       
 23008 
       
 23009         Windows WebKit build fix: Added some missing exports.
       
 23010 
       
 23011         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 23012         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 23013 
       
 23014 2009-07-17  Geoffrey Garen  <ggaren@apple.com>
       
 23015 
       
 23016         Reviewed by Sam Weinig.
       
 23017 
       
 23018         Get the branch working on windows.
       
 23019         https://bugs.webkit.org/show_bug.cgi?id=27391
       
 23020         
       
 23021         SunSpider says 0.3% faster.
       
 23022 
       
 23023         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 23024         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Updated
       
 23025         MSVC export lists to fix linker errors.
       
 23026 
       
 23027         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added / removed
       
 23028         new / old project files.
       
 23029 
       
 23030         * jit/JIT.cpp:
       
 23031         (JSC::JIT::privateCompileCTIMachineTrampolines): Used #pragma pack to tell
       
 23032         MSVC that these structures represent actual memory layout, and should not be
       
 23033         automatically aligned. Changed the return value load to load a 64bit quantity
       
 23034         into the canonical registers.
       
 23035 
       
 23036         * jit/JIT.h: Moved OBJECT_OFFSETOF definition to StdLibExtras.h because
       
 23037         it's needed by more than just the JIT, and it supplements a standard library
       
 23038         macro (offsetof).
       
 23039 
       
 23040         * jit/JITCall.cpp:
       
 23041         (JSC::JIT::compileOpCallInitializeCallFrame): Fixed an incorrectly signed
       
 23042         cast to resolve an MSVC warning.
       
 23043 
       
 23044         * jit/JITStubs.h: Used #pragma pack to tell MSVC that these structures
       
 23045         represent actual memory layout, and should not be automatically aligned. 
       
 23046 
       
 23047         * runtime/JSArray.cpp:
       
 23048         (JSC::JSArray::JSArray): Replaced memset_pattern8 with a for loop, since
       
 23049         memset_pattern8 is not portable. (I verified that this version of the loop
       
 23050         gives the best performance / generated code in GCC.)
       
 23051 
       
 23052         * runtime/JSObject.h:
       
 23053         (JSC::JSObject::JSObject): Removed accidental usage of FIELD_OFFSET --
       
 23054         OBJECT_OFFSETOF is our new macro name. (FIELD_OFFSET conflicts with a
       
 23055         definition in winnt.h.)
       
 23056 
       
 23057         * runtime/JSValue.cpp: Added some headers needed by non-all-in-one builds.
       
 23058         
       
 23059         * runtime/JSValue.h:
       
 23060         (JSC::JSValue::): Made the tag signed, to match MSVC's signed enum values.
       
 23061         (GCC doesn't seem to care one way or the other.)
       
 23062 
       
 23063         * wtf/MainThread.cpp: Moved the StdLibExtras.h #include -- I did this a
       
 23064         while ago to resolve a conflict with winnt.h. I can't remember if it's truly
       
 23065         still needed, but what the heck.
       
 23066 
       
 23067         * wtf/StdLibExtras.h: Moved OBJECT_OFFSETOF definition here.
       
 23068 
       
 23069 2009-07-06  Geoffrey Garen  <ggaren@apple.com>
       
 23070 
       
 23071         Reviewed by Sam Weinig (?).
       
 23072         
       
 23073         Fixed an assertion seen during the stress test.
       
 23074         
       
 23075         Don't assume that, if op1 is constant, op2 is not, and vice versa. Sadly,
       
 23076         not all constants get folded.
       
 23077 
       
 23078         * jit/JITArithmetic.cpp:
       
 23079         (JSC::JIT::emit_op_jnless):
       
 23080         (JSC::JIT::emitSlow_op_jnless):
       
 23081         (JSC::JIT::emit_op_jnlesseq):
       
 23082         (JSC::JIT::emitSlow_op_jnlesseq):
       
 23083 
       
 23084 2009-07-06  Geoffrey Garen  <ggaren@apple.com>
       
 23085 
       
 23086         Reviewed by Sam Weinig.
       
 23087         
       
 23088         Include op_convert_this in result caching.
       
 23089         
       
 23090         No change on SunSpider or v8.
       
 23091 
       
 23092         * jit/JITOpcodes.cpp:
       
 23093         (JSC::JIT::emit_op_convert_this):
       
 23094 
       
 23095         * jit/JITStubs.cpp:
       
 23096         (JSC::DEFINE_STUB_FUNCTION):
       
 23097         * jit/JITStubs.h:
       
 23098         (JSC::): Made the op_convert_this JIT stub return an EncodedJSValue, so
       
 23099         to maintain the result caching contract that { tag, payload } can be
       
 23100         found in { regT1, regT0 }.
       
 23101 
       
 23102 2009-07-06  Geoffrey Garen  <ggaren@apple.com>
       
 23103 
       
 23104         Reviewed by Sam Weinig.
       
 23105         
       
 23106         Implemented result chaining.
       
 23107         
       
 23108         1% faster on SunSpider. 4%-5% faster on v8.
       
 23109 
       
 23110         * assembler/MacroAssemblerX86Common.h:
       
 23111         (JSC::MacroAssemblerX86Common::move):
       
 23112         * assembler/X86Assembler.h:
       
 23113         (JSC::X86Assembler::movl_rr): Added an optimization to eliminate
       
 23114         no-op mov instructions, to simplify chaining.
       
 23115 
       
 23116         * jit/JIT.cpp:
       
 23117         (JSC::JIT::JIT):
       
 23118         * jit/JIT.h: Added data members and helper functions for recording
       
 23119         chained results. We record both a mapping from virtual to machine register
       
 23120         and the opcode for which the mapping is valid, to help ensure that the
       
 23121         mapping isn't used after the mapped register has been stomped by other
       
 23122         instructions.
       
 23123 
       
 23124         * jit/JITCall.cpp:
       
 23125         (JSC::JIT::compileOpCallVarargs):
       
 23126         (JSC::JIT::compileOpCallVarargsSlowCase):
       
 23127         (JSC::JIT::emit_op_ret):
       
 23128         (JSC::JIT::emit_op_construct_verify):
       
 23129         (JSC::JIT::compileOpCall):
       
 23130         (JSC::JIT::compileOpCallSlowCase): Chain function call results.
       
 23131 
       
 23132         * jit/JITInlineMethods.h:
       
 23133         (JSC::JIT::emitLoadTag):
       
 23134         (JSC::JIT::emitLoadPayload):
       
 23135         (JSC::JIT::emitLoad):
       
 23136         (JSC::JIT::emitLoad2):
       
 23137         (JSC::JIT::isLabeled):
       
 23138         (JSC::JIT::map):
       
 23139         (JSC::JIT::unmap):
       
 23140         (JSC::JIT::isMapped):
       
 23141         (JSC::JIT::getMappedPayload):
       
 23142         (JSC::JIT::getMappedTag): Use helper functions when loading virtual
       
 23143         registers into machine registers, in case the loads can be eliminated
       
 23144         by chaining.
       
 23145 
       
 23146         * jit/JITOpcodes.cpp:
       
 23147         (JSC::JIT::emit_op_mov):
       
 23148         (JSC::JIT::emit_op_end):
       
 23149         (JSC::JIT::emit_op_instanceof):
       
 23150         (JSC::JIT::emit_op_get_global_var):
       
 23151         (JSC::JIT::emit_op_put_global_var):
       
 23152         (JSC::JIT::emit_op_get_scoped_var):
       
 23153         (JSC::JIT::emit_op_put_scoped_var):
       
 23154         (JSC::JIT::emit_op_to_primitive):
       
 23155         (JSC::JIT::emit_op_resolve_global):
       
 23156         (JSC::JIT::emit_op_jneq_ptr):
       
 23157         (JSC::JIT::emit_op_next_pname):
       
 23158         (JSC::JIT::emit_op_to_jsnumber):
       
 23159         (JSC::JIT::emit_op_catch): Chain results from these opcodes.
       
 23160 
       
 23161         (JSC::JIT::emit_op_profile_will_call):
       
 23162         (JSC::JIT::emit_op_profile_did_call): Load the profiler into regT2 to
       
 23163         avoid stomping a chained result.
       
 23164 
       
 23165         * jit/JITPropertyAccess.cpp:
       
 23166         (JSC::JIT::emit_op_method_check):
       
 23167         (JSC::JIT::emit_op_get_by_val):
       
 23168         (JSC::JIT::emit_op_get_by_id): Chain results from these opcodes.
       
 23169 
       
 23170         * jit/JITStubCall.h:
       
 23171         (JSC::JITStubCall::addArgument): Always use { regT1, regT0 }, to facilitate
       
 23172         chaining.
       
 23173 
       
 23174         (JSC::JITStubCall::call): Unmap all mapped registers, since our callee
       
 23175         stub might stomp them.
       
 23176 
       
 23177 2009-07-01  Sam Weinig  <sam@webkit.org>
       
 23178 
       
 23179         Reviewed by Gavin Barraclough.
       
 23180 
       
 23181         Don't reload values in emitBinaryDoubleOp.
       
 23182 
       
 23183         SunSpider reports a 0.6% progression. 
       
 23184 
       
 23185         * jit/JIT.h:
       
 23186         * jit/JITArithmetic.cpp:
       
 23187         (JSC::JIT::emit_op_jnless):
       
 23188         (JSC::JIT::emit_op_jnlesseq):
       
 23189         (JSC::JIT::emitBinaryDoubleOp):
       
 23190 
       
 23191 2009-07-01  Sam Weinig  <sam@webkit.org>
       
 23192 
       
 23193         Reviewed by Geoffrey Garen.
       
 23194 
       
 23195         Convert op_div to load op1 and op2 up front.
       
 23196 
       
 23197         * jit/JITArithmetic.cpp:
       
 23198         (JSC::JIT::emit_op_div):
       
 23199 
       
 23200 2009-07-01  Sam Weinig  <sam@webkit.org>
       
 23201 
       
 23202         Reviewed by Geoffrey Garen.
       
 23203 
       
 23204         Don't emit code in emitBinaryDoubleOp if code is unreachable, observable
       
 23205         via an empty (unlinked) jumplist passed in.  This only effects op_jnless
       
 23206         and op_jnlesseq at present.
       
 23207 
       
 23208         * jit/JITArithmetic.cpp:
       
 23209         (JSC::JIT::emitSlow_op_jnless):
       
 23210         (JSC::JIT::emitSlow_op_jnlesseq):
       
 23211         (JSC::JIT::emitBinaryDoubleOp):
       
 23212 
       
 23213 2009-07-01  Geoffrey Garen  <ggaren@apple.com>
       
 23214 
       
 23215         Reviewed by Sam Weinig.
       
 23216 
       
 23217         Converted op_mod to put { tag, payload } in { regT1, regT0 }, and
       
 23218         tidied up its constant case.
       
 23219         
       
 23220         SunSpider reports a 0.2% regression, but a micro-benchmark of op_mod
       
 23221         shows a 12% speedup, and the SunSpider test that uses op_mod most should
       
 23222         benefit a lot from result caching in the end, since it almost always
       
 23223         performs (expression) % constant.
       
 23224 
       
 23225         * jit/JITArithmetic.cpp:
       
 23226         (JSC::JIT::emit_op_mod):
       
 23227         (JSC::JIT::emitSlow_op_mod):
       
 23228 
       
 23229 2009-06-30  Sam Weinig  <sam@webkit.org>
       
 23230 
       
 23231         Reviewed by Geoffrey Garen.
       
 23232 
       
 23233         Converted some more arithmetic ops to put { tag, payload } in
       
 23234         { regT1, regT0 }.
       
 23235 
       
 23236         * jit/JITArithmetic.cpp:
       
 23237         (JSC::JIT::emit_op_mul):
       
 23238         (JSC::JIT::emitSlow_op_mul):
       
 23239 
       
 23240 2009-06-30  Geoffrey Garen  <ggaren@apple.com>
       
 23241 
       
 23242         Reviewed by Sam Weinig.
       
 23243 
       
 23244         Converted some more arithmetic ops to put { tag, payload } in
       
 23245         { regT1, regT0 }, and added a case for subtract constant.
       
 23246         
       
 23247         SunSpider says no change. v8 says 0.3% slower.
       
 23248 
       
 23249         * jit/JIT.h:
       
 23250         * jit/JITArithmetic.cpp:
       
 23251         (JSC::JIT::emit_op_add):
       
 23252         (JSC::JIT::emitAdd32Constant):
       
 23253         (JSC::JIT::emitSlow_op_add):
       
 23254         (JSC::JIT::emit_op_sub):
       
 23255         (JSC::JIT::emitSub32Constant):
       
 23256         (JSC::JIT::emitSlow_op_sub):
       
 23257 
       
 23258 2009-06-30  Gavin Barraclough  <barraclough@apple.com>
       
 23259 
       
 23260         Reviewed by Sam Weinig.
       
 23261 
       
 23262         Remove more uses of addressFor(), load double constants directly from
       
 23263         the constantpool in the CodeBlock, rather than from the register file.
       
 23264 
       
 23265         * jit/JITArithmetic.cpp:
       
 23266         (JSC::JIT::emitAdd32Constant):
       
 23267         (JSC::JIT::emitBinaryDoubleOp):
       
 23268 
       
 23269 2009-06-30  Geoffrey Garen  <ggaren@apple.com>
       
 23270 
       
 23271         Reviewed by Sam Weinig.
       
 23272         
       
 23273         Fixed a bug in postfix ops, where we would treat x = x++ and x = x--
       
 23274         as a no-op, even if x were not an int, and the ++/-- could have side-effects.
       
 23275 
       
 23276         * jit/JITArithmetic.cpp:
       
 23277         (JSC::JIT::emit_op_post_inc):
       
 23278         (JSC::JIT::emitSlow_op_post_inc):
       
 23279         (JSC::JIT::emit_op_post_dec):
       
 23280         (JSC::JIT::emitSlow_op_post_dec):
       
 23281 
       
 23282 2009-06-30  Geoffrey Garen  <ggaren@apple.com>
       
 23283 
       
 23284         Reviewed by Sam Weinig.
       
 23285         
       
 23286         Converted some arithmetic ops to put { tag, payload } in
       
 23287         { regT1, regT0 }.
       
 23288         
       
 23289         SunSpider says 0.7% faster. v8 says no change.
       
 23290 
       
 23291         * jit/JIT.h:
       
 23292         * jit/JITArithmetic.cpp:
       
 23293         (JSC::JIT::emit_op_jnless):
       
 23294         (JSC::JIT::emit_op_jnlesseq):
       
 23295         (JSC::JIT::emit_op_lshift):
       
 23296         (JSC::JIT::emit_op_rshift):
       
 23297         (JSC::JIT::emit_op_bitand):
       
 23298         (JSC::JIT::emit_op_bitor):
       
 23299         (JSC::JIT::emit_op_bitxor):
       
 23300         * jit/JITInlineMethods.h:
       
 23301         (JSC::JIT::isOperandConstantImmediateInt):
       
 23302         (JSC::JIT::getOperandConstantImmediateInt):
       
 23303 
       
 23304 2009-06-30  Gavin Barraclough  <barraclough@apple.com>
       
 23305 
       
 23306         Reviewed by Sam Weinig.
       
 23307 
       
 23308         Start removing cases of addressFor().
       
 23309 
       
 23310         * jit/JIT.h:
       
 23311         * jit/JITArithmetic.cpp:
       
 23312         (JSC::JIT::emitAdd32Constant):
       
 23313         (JSC::JIT::emitBinaryDoubleOp):
       
 23314         (JSC::JIT::emit_op_div):
       
 23315         * jit/JITInlineMethods.h:
       
 23316         (JSC::JIT::emitLoadDouble):
       
 23317         (JSC::JIT::emitLoadInt32ToDouble):
       
 23318         (JSC::JIT::emitStoreDouble):
       
 23319         * jit/JITOpcodes.cpp:
       
 23320         (JSC::JIT::emit_op_jfalse):
       
 23321         (JSC::JIT::emit_op_jtrue):
       
 23322 
       
 23323 2009-06-30  Geoffrey Garen  <ggaren@apple.com>
       
 23324 
       
 23325         Rolled back in my last patch with regression fixed.
       
 23326 
       
 23327         * jit/JIT.cpp:
       
 23328         (JSC::JIT::privateCompileSlowCases):
       
 23329         * jit/JIT.h:
       
 23330         * jit/JITOpcodes.cpp:
       
 23331         (JSC::JIT::emit_op_loop_if_less):
       
 23332         (JSC::JIT::emit_op_loop_if_lesseq):
       
 23333         (JSC::JIT::emit_op_resolve_global):
       
 23334         (JSC::JIT::emitSlow_op_resolve_global):
       
 23335         (JSC::JIT::emit_op_eq):
       
 23336         (JSC::JIT::emitSlow_op_eq):
       
 23337         (JSC::JIT::emit_op_neq):
       
 23338         (JSC::JIT::emitSlow_op_neq):
       
 23339 
       
 23340 2009-06-30  Geoffrey Garen  <ggaren@apple.com>
       
 23341 
       
 23342         Rolled out my last patch because it was a 2% SunSpider regression.
       
 23343 
       
 23344         * jit/JIT.cpp:
       
 23345         (JSC::JIT::privateCompileSlowCases):
       
 23346         * jit/JIT.h:
       
 23347         * jit/JITOpcodes.cpp:
       
 23348         (JSC::JIT::emit_op_loop_if_less):
       
 23349         (JSC::JIT::emit_op_loop_if_lesseq):
       
 23350         (JSC::JIT::emit_op_resolve_global):
       
 23351         (JSC::JIT::emit_op_eq):
       
 23352         (JSC::JIT::emitSlow_op_eq):
       
 23353         (JSC::JIT::emit_op_neq):
       
 23354         (JSC::JIT::emitSlow_op_neq):
       
 23355 
       
 23356 2009-06-30  Geoffrey Garen  <ggaren@apple.com>
       
 23357 
       
 23358         Reviewed by Gavin "Sam Weinig" Barraclough.
       
 23359         
       
 23360         Standardized the rest of our opcodes to put { tag, payload } in
       
 23361         { regT1, regT0 } where possible.
       
 23362 
       
 23363         * jit/JIT.cpp:
       
 23364         (JSC::JIT::privateCompileSlowCases):
       
 23365         * jit/JIT.h:
       
 23366         * jit/JITOpcodes.cpp:
       
 23367         (JSC::JIT::emit_op_loop_if_less):
       
 23368         (JSC::JIT::emit_op_loop_if_lesseq):
       
 23369         (JSC::JIT::emit_op_resolve_global):
       
 23370         (JSC::JIT::emitSlow_op_resolve_global):
       
 23371         (JSC::JIT::emit_op_eq):
       
 23372         (JSC::JIT::emitSlow_op_eq):
       
 23373         (JSC::JIT::emit_op_neq):
       
 23374         (JSC::JIT::emitSlow_op_neq):
       
 23375 
       
 23376 2009-06-30  Gavin Barraclough  <barraclough@apple.com>
       
 23377 
       
 23378         Reviewed by Geoffrey Garen.
       
 23379 
       
 23380         Replace calls to store32(tagFor()) and store32(payloadFor())
       
 23381         with emitStoreInt32(), emitStoreBool(), and emitStoreCell().
       
 23382 
       
 23383         * jit/JIT.h:
       
 23384         * jit/JITArithmetic.cpp:
       
 23385         (JSC::JIT::emit_op_negate):
       
 23386         (JSC::JIT::emit_op_lshift):
       
 23387         (JSC::JIT::emit_op_rshift):
       
 23388         (JSC::JIT::emit_op_bitand):
       
 23389         (JSC::JIT::emitBitAnd32Constant):
       
 23390         (JSC::JIT::emit_op_bitor):
       
 23391         (JSC::JIT::emitBitOr32Constant):
       
 23392         (JSC::JIT::emit_op_bitxor):
       
 23393         (JSC::JIT::emitBitXor32Constant):
       
 23394         (JSC::JIT::emit_op_bitnot):
       
 23395         (JSC::JIT::emit_op_post_inc):
       
 23396         (JSC::JIT::emit_op_post_dec):
       
 23397         (JSC::JIT::emit_op_pre_inc):
       
 23398         (JSC::JIT::emit_op_pre_dec):
       
 23399         (JSC::JIT::emit_op_add):
       
 23400         (JSC::JIT::emitAdd32Constant):
       
 23401         (JSC::JIT::emit_op_sub):
       
 23402         (JSC::JIT::emitSub32ConstantLeft):
       
 23403         (JSC::JIT::emitSub32ConstantRight):
       
 23404         (JSC::JIT::emit_op_mul):
       
 23405         (JSC::JIT::emitSlow_op_mul):
       
 23406         (JSC::JIT::emit_op_div):
       
 23407         (JSC::JIT::emit_op_mod):
       
 23408         * jit/JITCall.cpp:
       
 23409         (JSC::JIT::emit_op_load_varargs):
       
 23410         * jit/JITInlineMethods.h:
       
 23411         (JSC::JIT::emitStoreInt32):
       
 23412         (JSC::JIT::emitStoreCell):
       
 23413         (JSC::JIT::emitStoreBool):
       
 23414         (JSC::JIT::emitStore):
       
 23415         * jit/JITOpcodes.cpp:
       
 23416         (JSC::JIT::emit_op_instanceof):
       
 23417         (JSC::JIT::emit_op_not):
       
 23418         (JSC::JIT::emit_op_eq):
       
 23419         (JSC::JIT::emitSlow_op_eq):
       
 23420         (JSC::JIT::emit_op_neq):
       
 23421         (JSC::JIT::emitSlow_op_neq):
       
 23422         (JSC::JIT::compileOpStrictEq):
       
 23423         (JSC::JIT::emit_op_eq_null):
       
 23424         (JSC::JIT::emit_op_neq_null):
       
 23425         * jit/JITStubCall.h:
       
 23426         (JSC::JITStubCall::call):
       
 23427 
       
 23428 2009-06-30  Geoffrey Garen  <ggaren@apple.com>
       
 23429 
       
 23430         Reviewed by Sam Weinig.
       
 23431         
       
 23432         Standardized the rest of the property access instructions to put { tag,
       
 23433         payload } in { regT1, regT0 }.
       
 23434 
       
 23435         Small v8 speedup, 0.2% SunSpider slowdown.
       
 23436 
       
 23437         * jit/JIT.h:
       
 23438         * jit/JITInlineMethods.h:
       
 23439         (JSC::JIT::emitLoad):
       
 23440         (JSC::JIT::emitLoad2):
       
 23441         * jit/JITPropertyAccess.cpp:
       
 23442         (JSC::JIT::emit_op_get_by_val):
       
 23443         (JSC::JIT::emitSlow_op_get_by_val):
       
 23444         (JSC::JIT::emit_op_put_by_val):
       
 23445         (JSC::JIT::emitSlow_op_put_by_val):
       
 23446         (JSC::JIT::emit_op_put_by_id):
       
 23447         (JSC::JIT::emitSlow_op_put_by_id):
       
 23448         (JSC::JIT::patchPutByIdReplace):
       
 23449 
       
 23450 2009-06-29  Sam Weinig  <sam@webkit.org>
       
 23451 
       
 23452         Reviewed by Gavin Barraclough.
       
 23453 
       
 23454         Various cleanups.
       
 23455         - Use fpRegT* instead of X86::xmm*.
       
 23456         - Use a switch statement in emitBinaryDoubleOp instead of a bunch of
       
 23457           if/elses.
       
 23458 
       
 23459         * jit/JITArithmetic.cpp:
       
 23460         (JSC::JIT::emitAdd32Constant):
       
 23461         (JSC::JIT::emitBinaryDoubleOp):
       
 23462         (JSC::JIT::emit_op_div):
       
 23463 
       
 23464 2009-06-29  Sam Weinig  <sam@webkit.org>
       
 23465 
       
 23466         Reviewed by Geoffrey Garen.
       
 23467 
       
 23468         Add inline code dealing with doubles for op_jfalse and op_jtrue.
       
 23469 
       
 23470         * assembler/MacroAssemblerX86Common.h:
       
 23471         (JSC::MacroAssemblerX86Common::):
       
 23472         (JSC::MacroAssemblerX86Common::zeroDouble):
       
 23473         * jit/JITOpcodes.cpp:
       
 23474         (JSC::JIT::emit_op_jfalse):
       
 23475         (JSC::JIT::emit_op_jtrue):
       
 23476 
       
 23477 2009-06-28  Geoffrey Garen  <ggaren@apple.com>
       
 23478 
       
 23479         Reviewed by Sam Weinig.
       
 23480 
       
 23481         Standardized op_get_by_id to put { tag, payload } in { regT1, regT0 }.
       
 23482         
       
 23483         SunSpider and v8 report maybe 0.2%-0.4% regressions, but the optimization
       
 23484         this enables will win much more than that back.
       
 23485 
       
 23486         * jit/JIT.cpp:
       
 23487         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 23488         * jit/JIT.h:
       
 23489         * jit/JITPropertyAccess.cpp:
       
 23490         (JSC::JIT::emit_op_method_check):
       
 23491         (JSC::JIT::emit_op_get_by_id):
       
 23492         (JSC::JIT::compileGetByIdHotPath):
       
 23493         (JSC::JIT::compileGetByIdSlowCase):
       
 23494         (JSC::JIT::patchGetByIdSelf):
       
 23495         (JSC::JIT::privateCompilePatchGetArrayLength):
       
 23496         (JSC::JIT::privateCompileGetByIdProto):
       
 23497         (JSC::JIT::privateCompileGetByIdSelfList):
       
 23498         (JSC::JIT::privateCompileGetByIdProtoList):
       
 23499         (JSC::JIT::privateCompileGetByIdChainList):
       
 23500         (JSC::JIT::privateCompileGetByIdChain):
       
 23501 
       
 23502 2009-06-26  Geoffrey Garen  <ggaren@apple.com>
       
 23503 
       
 23504         Reviewed by Maciej Stachowiak.
       
 23505         
       
 23506         Standardized op_call to put { tag, payload } in { regT1, regT0 }.
       
 23507         
       
 23508         SunSpider and v8 report no change.
       
 23509 
       
 23510         * jit/JIT.cpp:
       
 23511         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 23512         * jit/JITCall.cpp:
       
 23513         (JSC::JIT::compileOpCallInitializeCallFrame):
       
 23514         (JSC::JIT::compileOpCallSetupArgs):
       
 23515         (JSC::JIT::compileOpConstructSetupArgs):
       
 23516         (JSC::JIT::compileOpCallVarargsSetupArgs):
       
 23517         (JSC::JIT::compileOpCallVarargs):
       
 23518         (JSC::JIT::compileOpCall):
       
 23519         (JSC::JIT::compileOpCallSlowCase):
       
 23520 
       
 23521 2009-06-26  Sam Weinig  <sam@webkit.org>
       
 23522 
       
 23523         Reviewed by Geoffrey Garen.
       
 23524 
       
 23525         Handle multiplying by zero a little better by
       
 23526         inlining the case that both operands are non-negative
       
 23527         into the slowpath.
       
 23528 
       
 23529         * assembler/MacroAssemblerX86Common.h:
       
 23530         (JSC::MacroAssemblerX86Common::branchOr32):
       
 23531         * jit/JITArithmetic.cpp:
       
 23532         (JSC::JIT::emit_op_mul):
       
 23533         (JSC::JIT::emitSlow_op_mul):
       
 23534 
       
 23535 2009-06-25  Geoffrey Garen  <ggaren@apple.com>
       
 23536 
       
 23537         Reviewed by Sam Weinig.
       
 23538         
       
 23539         Optimize x++ to ++x inside for loops.
       
 23540         
       
 23541         Sadly, no measurable speedup, but this should help with result chaining.
       
 23542 
       
 23543         * parser/Nodes.cpp:
       
 23544         (JSC::ForNode::emitBytecode):
       
 23545 
       
 23546 2009-06-25  Geoffrey Garen  <ggaren@apple.com>
       
 23547 
       
 23548         Reviewed by Sam Weinig.
       
 23549         
       
 23550         Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
       
 23551 
       
 23552         * jit/JITArithmetic.cpp:
       
 23553         (JSC::JIT::emitSlow_op_bitnot):
       
 23554         (JSC::JIT::emit_op_post_inc):
       
 23555 
       
 23556 2009-06-25  Geoffrey Garen  <ggaren@apple.com>
       
 23557 
       
 23558         Reviewed by Sam Weinig.
       
 23559         
       
 23560         Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
       
 23561 
       
 23562         * jit/JITArithmetic.cpp:
       
 23563         (JSC::JIT::emit_op_bitnot):
       
 23564         (JSC::JIT::emit_op_post_dec):
       
 23565         (JSC::JIT::emit_op_pre_inc):
       
 23566         (JSC::JIT::emitSlow_op_pre_inc):
       
 23567         (JSC::JIT::emit_op_pre_dec):
       
 23568         (JSC::JIT::emitSlow_op_pre_dec):
       
 23569 
       
 23570 2009-06-25  Geoffrey Garen  <ggaren@apple.com>
       
 23571 
       
 23572         Reviewed by Sam Weinig.
       
 23573         
       
 23574         Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
       
 23575 
       
 23576         * jit/JITArithmetic.cpp:
       
 23577         (JSC::JIT::emit_op_negate):
       
 23578         (JSC::JIT::emitSlow_op_negate):
       
 23579         * jit/JITCall.cpp:
       
 23580         (JSC::JIT::emit_op_construct_verify):
       
 23581         (JSC::JIT::emitSlow_op_construct_verify):
       
 23582 
       
 23583 2009-06-25  Geoffrey Garen  <ggaren@apple.com>
       
 23584 
       
 23585         Reviewed by Sam Weinig.
       
 23586         
       
 23587         Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
       
 23588 
       
 23589         * jit/JITOpcodes.cpp:
       
 23590         (JSC::JIT::emit_op_loop_if_true):
       
 23591         (JSC::JIT::emit_op_jfalse):
       
 23592         (JSC::JIT::emit_op_jtrue):
       
 23593         (JSC::JIT::emit_op_jeq_null):
       
 23594         (JSC::JIT::emit_op_jneq_null):
       
 23595         (JSC::JIT::emit_op_eq_null):
       
 23596         (JSC::JIT::emit_op_neq_null):
       
 23597 
       
 23598 2009-06-25  Geoffrey Garen  <ggaren@apple.com>
       
 23599 
       
 23600         Reviewed by Sam Weinig (sort of, maybe).
       
 23601         
       
 23602         Fixed some ASSERTs in http/tests/security.
       
 23603         
       
 23604         These ASSERTs were introduced by http://trac.webkit.org/changeset/45057,
       
 23605         but the underlying problem was actually older. http://trac.webkit.org/changeset/45057
       
 23606         just exposed the problem by enabling optimization in more cases.
       
 23607         
       
 23608         The ASSERTs fired because we tested PropertySlot::slotBase() for validity,
       
 23609         but slotBase() ASSERTs if it's invalid, so we would ASSERT before
       
 23610         the test could happen. Solution: Remove the ASSERT. Maybe it was valid
       
 23611         once, but it clearly goes against a pattern we've deployed of late.
       
 23612         
       
 23613         The underlying problem was that WebCore would re-use a PropertySlot in
       
 23614         the case of a forwarding access, and the second use would not completely
       
 23615         overwrite the first use. Solution: Make sure to overwrite m_offset when
       
 23616         setting a value on a PropertySlot. (Other values already get implicitly
       
 23617         overwritten during reuse.)
       
 23618 
       
 23619         * runtime/PropertySlot.h:
       
 23620         (JSC::PropertySlot::PropertySlot):
       
 23621         (JSC::PropertySlot::setValueSlot):
       
 23622         (JSC::PropertySlot::setValue):
       
 23623         (JSC::PropertySlot::setRegisterSlot):
       
 23624         (JSC::PropertySlot::setUndefined):
       
 23625         (JSC::PropertySlot::slotBase):
       
 23626         (JSC::PropertySlot::clearOffset):
       
 23627 
       
 23628 2009-06-24  Gavin Barraclough  <barraclough@apple.com>
       
 23629 
       
 23630         Reviewed by Geoff Garen.
       
 23631 
       
 23632         Enable JIT_OPTIMIZE_METHOD_CALLS on the branch, implementation matches current implemenatation in ToT.
       
 23633 
       
 23634         * jit/JIT.h:
       
 23635         * jit/JITPropertyAccess.cpp:
       
 23636         (JSC::JIT::emit_op_method_check):
       
 23637         (JSC::JIT::emitSlow_op_method_check):
       
 23638         (JSC::JIT::emit_op_get_by_id):
       
 23639         (JSC::JIT::compileGetByIdHotPath):
       
 23640         (JSC::JIT::emitSlow_op_get_by_id):
       
 23641         (JSC::JIT::compileGetByIdSlowCase):
       
 23642 
       
 23643 2009-06-23  Geoffrey Garen  <ggaren@apple.com>
       
 23644 
       
 23645         Reviewed by Sam Weinig.
       
 23646 
       
 23647         Bit off a tiny bit more of standardizing opcode behavior to help with result
       
 23648         caching.
       
 23649         
       
 23650         SunSpider reports no change, v8 maybe a tiny speedup.
       
 23651 
       
 23652         * jit/JITOpcodes.cpp:
       
 23653         (JSC::JIT::emit_op_to_jsnumber):
       
 23654         (JSC::JIT::emitSlow_op_to_jsnumber):
       
 23655         (JSC::JIT::emit_op_convert_this):
       
 23656         (JSC::JIT::emitSlow_op_convert_this):
       
 23657 
       
 23658 2009-06-23  Geoffrey Garen  <ggaren@apple.com>
       
 23659 
       
 23660         Reviewed by Sam Weinig.
       
 23661 
       
 23662         Bit off a tiny bit more of standardizing opcode behavior to help with result
       
 23663         caching -- including removing my old enemy, op_resolve_function, because
       
 23664         it was non-standard, and removing it felt better than helping it limp along.
       
 23665         
       
 23666         SunSpider reports no change, v8 maybe a tiny speedup.
       
 23667         
       
 23668         * bytecode/CodeBlock.cpp:
       
 23669         (JSC::CodeBlock::dump):
       
 23670         * bytecode/Opcode.h:
       
 23671         * bytecompiler/BytecodeGenerator.cpp:
       
 23672         * bytecompiler/BytecodeGenerator.h:
       
 23673         * interpreter/Interpreter.cpp:
       
 23674         (JSC::Interpreter::privateExecute):
       
 23675         * jit/JIT.cpp:
       
 23676         (JSC::JIT::privateCompileMainPass):
       
 23677         * jit/JIT.h:
       
 23678         * jit/JITOpcodes.cpp:
       
 23679         (JSC::JIT::emit_op_get_scoped_var):
       
 23680         (JSC::JIT::emit_op_put_scoped_var):
       
 23681         (JSC::JIT::emit_op_to_primitive):
       
 23682         (JSC::JIT::emitSlow_op_to_primitive):
       
 23683         * jit/JITStubs.cpp:
       
 23684         * jit/JITStubs.h:
       
 23685         * parser/Nodes.cpp:
       
 23686         (JSC::FunctionCallResolveNode::emitBytecode):
       
 23687 
       
 23688 2009-06-23  Geoffrey Garen  <ggaren@apple.com>
       
 23689 
       
 23690         Reviewed by Sam Weinig.
       
 23691         
       
 23692         Bit off a tiny bit of standardizing opcode behavior to help with result
       
 23693         caching.
       
 23694         
       
 23695         0.6% SunSpider speedup. 0.3% v8 speedup.
       
 23696 
       
 23697         * jit/JITInlineMethods.h:
       
 23698         (JSC::JIT::emitLoad): Accomodate a base register that overlaps with payload
       
 23699         by loading tag before payload, to avoid stomping base/payload.
       
 23700 
       
 23701         * jit/JITOpcodes.cpp:
       
 23702         (JSC::JIT::emit_op_mov): Abide by the standard "tag in regT1, payload in
       
 23703         regT0" semantics.
       
 23704 
       
 23705         (JSC::JIT::emit_op_get_global_var):
       
 23706         (JSC::JIT::emit_op_put_global_var): Ditto. Also, removed some irrelevent
       
 23707         loads while I was at it. The global object's "d" pointer never changes
       
 23708         after construction.
       
 23709 
       
 23710 2009-06-23  Gavin Barraclough  <barraclough@apple.com>
       
 23711 
       
 23712         Reviewed by Sam Weinig.
       
 23713 
       
 23714         Remove 'arguments' field from Register union (again).
       
 23715         This time do so without breaking tests (radical, I know).
       
 23716 
       
 23717         * interpreter/CallFrame.h:
       
 23718         (JSC::ExecState::optionalCalleeArguments):
       
 23719         (JSC::ExecState::setArgumentCount):
       
 23720         (JSC::ExecState::init):
       
 23721         * interpreter/Interpreter.cpp:
       
 23722         (JSC::Interpreter::dumpRegisters):
       
 23723         (JSC::Interpreter::unwindCallFrame):
       
 23724         (JSC::Interpreter::privateExecute):
       
 23725         (JSC::Interpreter::retrieveArguments):
       
 23726         * interpreter/Register.h:
       
 23727         (JSC::Register::withInt):
       
 23728         (JSC::Register::):
       
 23729         (JSC::Register::Register):
       
 23730         (JSC::Register::i):
       
 23731         * jit/JITStubs.cpp:
       
 23732         (JSC::JITStubs::cti_op_tear_off_arguments):
       
 23733         * runtime/Arguments.h:
       
 23734         (JSC::JSActivation::copyRegisters):
       
 23735         (JSC::Register::arguments):
       
 23736         * runtime/JSActivation.cpp:
       
 23737         (JSC::JSActivation::argumentsGetter):
       
 23738         * runtime/JSActivation.h:
       
 23739 
       
 23740 2009-06-23  Geoffrey Garen  <ggaren@apple.com>
       
 23741 
       
 23742         Reviewed by Sam Weinig.
       
 23743         
       
 23744         Removed some result register tracking cruft in preparation for a new
       
 23745         result tracking mechanism.
       
 23746         
       
 23747         SunSpider reports no change.
       
 23748 
       
 23749         * assembler/AbstractMacroAssembler.h:
       
 23750         * assembler/X86Assembler.h:
       
 23751         (JSC::X86Assembler::JmpDst::JmpDst): No need to track jump targets in
       
 23752         machine code; we already do this in bytecode.
       
 23753 
       
 23754         * jit/JIT.cpp:
       
 23755         (JSC::JIT::JIT):
       
 23756         (JSC::JIT::emitTimeoutCheck): Make sure to save and restore the result
       
 23757         registers, so an opcode with a timeout check can still benefit from result
       
 23758         register caching.
       
 23759 
       
 23760         (JSC::JIT::privateCompileMainPass):
       
 23761         (JSC::JIT::privateCompileSlowCases): Removed calls to killLastResultRegister()
       
 23762         in preparation for something new.
       
 23763 
       
 23764         * jit/JIT.h:
       
 23765         * jit/JITArithmetic.cpp:
       
 23766         (JSC::JIT::emit_op_jnless):
       
 23767         (JSC::JIT::emit_op_jnlesseq):
       
 23768         * jit/JITInlineMethods.h:
       
 23769         (JSC::JIT::emitGetFromCallFrameHeaderPtr):
       
 23770         (JSC::JIT::emitGetFromCallFrameHeader32):
       
 23771         * jit/JITOpcodes.cpp:
       
 23772         (JSC::JIT::emit_op_jmp):
       
 23773         (JSC::JIT::emit_op_jfalse):
       
 23774         (JSC::JIT::emit_op_jtrue):
       
 23775         (JSC::JIT::emit_op_jeq_null):
       
 23776         (JSC::JIT::emit_op_jneq_null):
       
 23777         (JSC::JIT::emit_op_jneq_ptr):
       
 23778         (JSC::JIT::emit_op_jsr):
       
 23779         (JSC::JIT::emit_op_sret):
       
 23780         (JSC::JIT::emit_op_jmp_scopes): ditto
       
 23781 
       
 23782         * jit/JITStubCall.h:
       
 23783         (JSC::JITStubCall::JITStubCall):
       
 23784         (JSC::JITStubCall::getArgument): added a mechanism for reloading an argument
       
 23785         you passed to a JIT stub, for use in emitTimeoutCheck.
       
 23786 
       
 23787 2009-06-23  Sam Weinig  <sam@webkit.org>
       
 23788 
       
 23789         Reviewed by Geoffrey Garen.
       
 23790 
       
 23791         Remove now-useless inplace variants of binary ops.
       
 23792 
       
 23793         * jit/JIT.h:
       
 23794         * jit/JITArithmetic.cpp:
       
 23795         (JSC::JIT::emit_op_bitand):
       
 23796         (JSC::JIT::emit_op_bitor):
       
 23797         (JSC::JIT::emit_op_bitxor):
       
 23798         (JSC::JIT::emit_op_add):
       
 23799         (JSC::JIT::emit_op_sub):
       
 23800         (JSC::JIT::emit_op_mul):
       
 23801 
       
 23802 2009-06-23  Sam Weinig  <sam@webkit.org>
       
 23803 
       
 23804         Reviewed by Geoffrey Garen.
       
 23805 
       
 23806         Move off memory operands to aid in re-enabling result caching.
       
 23807 
       
 23808         - No regression measured.
       
 23809 
       
 23810         * jit/JIT.h:
       
 23811         * jit/JITArithmetic.cpp:
       
 23812         (JSC::JIT::emit_op_negate):
       
 23813         (JSC::JIT::emit_op_jnless):
       
 23814         (JSC::JIT::emit_op_jnlesseq):
       
 23815         (JSC::JIT::emit_op_lshift):
       
 23816         (JSC::JIT::emit_op_rshift):
       
 23817         (JSC::JIT::emit_op_bitand):
       
 23818         (JSC::JIT::emitBitAnd32Constant):
       
 23819         (JSC::JIT::emitBitAnd32InPlace):
       
 23820         (JSC::JIT::emit_op_bitor):
       
 23821         (JSC::JIT::emitBitOr32Constant):
       
 23822         (JSC::JIT::emitBitOr32InPlace):
       
 23823         (JSC::JIT::emit_op_bitxor):
       
 23824         (JSC::JIT::emitBitXor32Constant):
       
 23825         (JSC::JIT::emitBitXor32InPlace):
       
 23826         (JSC::JIT::emit_op_bitnot):
       
 23827         (JSC::JIT::emit_op_post_inc):
       
 23828         (JSC::JIT::emit_op_post_dec):
       
 23829         (JSC::JIT::emit_op_pre_inc):
       
 23830         (JSC::JIT::emitSlow_op_pre_inc):
       
 23831         (JSC::JIT::emit_op_pre_dec):
       
 23832         (JSC::JIT::emitSlow_op_pre_dec):
       
 23833         (JSC::JIT::emit_op_add):
       
 23834         (JSC::JIT::emitAdd32Constant):
       
 23835         (JSC::JIT::emitAdd32InPlace):
       
 23836         (JSC::JIT::emitSlow_op_add):
       
 23837         (JSC::JIT::emitSlowAdd32Constant):
       
 23838         (JSC::JIT::emit_op_sub):
       
 23839         (JSC::JIT::emitSlow_op_sub):
       
 23840         (JSC::JIT::emitSub32ConstantLeft):
       
 23841         (JSC::JIT::emitSub32ConstantRight):
       
 23842         (JSC::JIT::emitSub32InPlaceLeft):
       
 23843         (JSC::JIT::emitSub32InPlaceRight):
       
 23844         (JSC::JIT::emitBinaryDoubleOp):
       
 23845         (JSC::JIT::emit_op_mul):
       
 23846         (JSC::JIT::emitMul32InPlace):
       
 23847         (JSC::JIT::emit_op_div):
       
 23848         (JSC::JIT::emit_op_mod):
       
 23849         * jit/JITCall.cpp:
       
 23850         (JSC::JIT::compileOpCallVarargs):
       
 23851         * jit/JITOpcodes.cpp:
       
 23852         (JSC::JIT::emit_op_loop_if_less):
       
 23853         (JSC::JIT::emit_op_loop_if_lesseq):
       
 23854         (JSC::JIT::emit_op_instanceof):
       
 23855         (JSC::JIT::emit_op_to_primitive):
       
 23856         (JSC::JIT::emit_op_not):
       
 23857         (JSC::JIT::emit_op_jneq_ptr):
       
 23858         (JSC::JIT::emit_op_eq):
       
 23859         (JSC::JIT::emit_op_neq):
       
 23860         (JSC::JIT::emit_op_to_jsnumber):
       
 23861         * jit/JITPropertyAccess.cpp:
       
 23862         (JSC::JIT::emit_op_get_by_val):
       
 23863         (JSC::JIT::emit_op_put_by_val):
       
 23864 
       
 23865 2009-06-23  Geoffrey Garen  <ggaren@apple.com>
       
 23866 
       
 23867         Reviewed by Sam Weinig.
       
 23868         
       
 23869         Fixed some missing and/or misplaced labels in bytecode generation, so
       
 23870         we don't have to work around them in JIT code generation.
       
 23871 
       
 23872         * bytecompiler/BytecodeGenerator.cpp:
       
 23873         (JSC::BytecodeGenerator::emitJumpSubroutine):
       
 23874         * parser/Nodes.cpp:
       
 23875         (JSC::TryNode::emitBytecode):
       
 23876 
       
 23877 2009-06-22  Geoffrey Garen  <ggaren@apple.com>
       
 23878 
       
 23879         Reviewed by Sam Weinig.
       
 23880         
       
 23881         For member function calls, emit "this" directly into the "this" slot
       
 23882         for the function call, instead of moving it there later. This reduces
       
 23883         time spent in op_mov during certain calls, like "a.b.c()".
       
 23884         
       
 23885         1%-2% speedup on v8, mostly richards and delta-blue.
       
 23886 
       
 23887         * parser/Nodes.cpp:
       
 23888         (JSC::FunctionCallDotNode::emitBytecode):
       
 23889 
       
 23890 2009-06-22  Gavin Barraclough  <barraclough@apple.com>
       
 23891 
       
 23892         Reviewed by Sam Weinig.
       
 23893 
       
 23894         Remove 'arguments' field from Register union.  Having JSCell derived types in the union is
       
 23895         dangerous since it opens the possibility for the field to be written as a raw pointer but
       
 23896         then read as a JSValue.  This will lead to statle data being read for the tag, which may
       
 23897         be dangerous.  Having removed Arguments* types form Register, all arguments objects must
       
 23898         always explicitly be stored in the register file as JSValues.
       
 23899 
       
 23900         * interpreter/CallFrame.h:
       
 23901         (JSC::ExecState::optionalCalleeArguments):
       
 23902         * interpreter/Interpreter.cpp:
       
 23903         (JSC::Interpreter::unwindCallFrame):
       
 23904         (JSC::Interpreter::privateExecute):
       
 23905         (JSC::Interpreter::retrieveArguments):
       
 23906         * interpreter/Register.h:
       
 23907         (JSC::Register::):
       
 23908         * jit/JITStubs.cpp:
       
 23909         (JSC::JITStubs::cti_op_tear_off_arguments):
       
 23910         * runtime/Arguments.h:
       
 23911         (JSC::JSActivation::copyRegisters):
       
 23912         * runtime/JSActivation.cpp:
       
 23913         (JSC::JSActivation::argumentsGetter):
       
 23914         * runtime/JSActivation.h:
       
 23915 
       
 23916 2009-06-03  Sam Weinig  <sam@webkit.org>
       
 23917 
       
 23918         Reviewed by Geoffrey Garen.
       
 23919 
       
 23920         Add back known this value optimization by abstracting
       
 23921         slow case if not JSCell jumps.
       
 23922 
       
 23923         * jit/JIT.h:
       
 23924         * jit/JITCall.cpp:
       
 23925         (JSC::JIT::compileOpCallVarargs):
       
 23926         (JSC::JIT::compileOpCallVarargsSlowCase):
       
 23927         (JSC::JIT::compileOpCall):
       
 23928         (JSC::JIT::compileOpCallSlowCase):
       
 23929         * jit/JITInlineMethods.h:
       
 23930         (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
       
 23931         (JSC::JIT::linkSlowCaseIfNotJSCell):
       
 23932         * jit/JITOpcodes.cpp:
       
 23933         (JSC::JIT::emit_op_instanceof):
       
 23934         (JSC::JIT::emitSlow_op_instanceof):
       
 23935         * jit/JITPropertyAccess.cpp:
       
 23936         (JSC::JIT::emit_op_get_by_val):
       
 23937         (JSC::JIT::emitSlow_op_get_by_val):
       
 23938         (JSC::JIT::emit_op_put_by_val):
       
 23939         (JSC::JIT::emitSlow_op_put_by_val):
       
 23940         (JSC::JIT::emit_op_get_by_id):
       
 23941         (JSC::JIT::emitSlow_op_get_by_id):
       
 23942         (JSC::JIT::emit_op_put_by_id):
       
 23943         (JSC::JIT::emitSlow_op_put_by_id):
       
 23944 
       
 23945 2009-06-01  Geoffrey Garen  <ggaren@apple.com>
       
 23946 
       
 23947         Reviewed by Sam Weinig.
       
 23948         
       
 23949         Fixed some of the regression in crypto-aes.js. (8.5% speedup in
       
 23950         crypto-aes.js.)
       
 23951         
       
 23952         SunSpider reports no change overall.
       
 23953         
       
 23954         Division was producing double results, which took the slow path through
       
 23955         array access code.
       
 23956         
       
 23957         Strangely, all my attempts at versions of this patch that modified array
       
 23958         access code to accept ints encoded as doubles along the fast or slow paths
       
 23959         were regressions. So I did this instead.
       
 23960 
       
 23961         * jit/JITArithmetic.cpp:
       
 23962         (JSC::JIT::emit_op_div): When dividing an int by an int, go ahead and try
       
 23963         to turn the result into an int. Don't just do int division, though, because
       
 23964         testing shows it to be slower than SSE double division, and the corner
       
 23965         cases are pretty complicated / lengthy on top of that. Also, don't try
       
 23966         to canonicalize division of known tiny numerators into ints, since that's a
       
 23967         waste of time.
       
 23968 
       
 23969 2009-05-26  Geoffrey Garen  <ggaren@apple.com>
       
 23970 
       
 23971         Reviewed by Oliver Hunt.
       
 23972         
       
 23973         Fixed a regression caused by my recent fix for NaN.
       
 23974 
       
 23975         * jit/JITArithmetic.cpp:
       
 23976         (JSC::JIT::emitBinaryDoubleOp): Actually do the comparison in reverse
       
 23977         order, like the ChangeLog said we would, bokay?
       
 23978 
       
 23979 2009-05-26  Geoffrey Garen  <ggaren@apple.com>
       
 23980 
       
 23981         Reviewed by Sam Weinig and Oliver Hunt.
       
 23982         
       
 23983         Fixed two edge cases in %:
       
 23984         
       
 23985         - Don't do -2147483648 % x as a fast case, since you might do -2147483648 % -1,
       
 23986         which will signal a hardware exception due to overflow.
       
 23987 
       
 23988         - In the case of a zero remainder, be sure to store negative zero if the
       
 23989         dividend was zero.
       
 23990         
       
 23991         SunSpider reports no change.
       
 23992 
       
 23993         * jit/JITArithmetic.cpp:
       
 23994         (JSC::JIT::emit_op_mod):
       
 23995         (JSC::JIT::emitSlow_op_mod):
       
 23996 
       
 23997 2009-05-25  Geoffrey Garen  <ggaren@apple.com>
       
 23998 
       
 23999         Reviewed by Maciej Stachowiak.
       
 24000         
       
 24001         Fixed a regression when comparing to NaN.
       
 24002 
       
 24003         * jit/JITArithmetic.cpp:
       
 24004         (JSC::JIT::emitBinaryDoubleOp): For op_jnless and op_jnless_eq, do the
       
 24005         comparison in reverse order, and jump if the result is below or 
       
 24006         below-or-equal. This ensures that we do jump in the case of NaN.
       
 24007 
       
 24008 2009-05-25  Geoffrey Garen  <ggaren@apple.com>
       
 24009 
       
 24010         Reviewed by Oliver Hunt.
       
 24011         
       
 24012         SunSpider says no change.
       
 24013         
       
 24014         Fixed regressions in fast/js/var-declarations-shadowing.html and
       
 24015         fast/js/equality.html, caused by recent == and != optimizations.
       
 24016 
       
 24017         * jit/JITStubs.cpp:
       
 24018         (JSC::JITStubs::cti_op_eq): Don't treat "compare to string" as always
       
 24019         numeric or string comparison. If the second operand is an object, you
       
 24020         need to ToPrimitive it, and start all over again. Also, I wrote out each
       
 24021         of the possible cases explicitly, to cut down on redundant branching.
       
 24022 
       
 24023 2009-05-25  Sam Weinig  <sam@webkit.org>
       
 24024 
       
 24025         Reviewed by Mark Rowe.
       
 24026 
       
 24027         Fix bug in fast/js/constant-folding.html where we were not negating
       
 24028         -0 properly.
       
 24029 
       
 24030         * jit/JITArithmetic.cpp:
       
 24031         (JSC::JIT::emit_op_negate):
       
 24032 
       
 24033 2009-05-23  Geoffrey Garen  <ggaren@apple.com>
       
 24034 
       
 24035         Reviewed by Oliver Hunt.
       
 24036         
       
 24037         Refactored new slow case codegen for == and !=.
       
 24038         
       
 24039         SunSpider reports no change, maybe a tiny speedup.
       
 24040 
       
 24041         * jit/JITOpcodes.cpp:
       
 24042         (JSC::JIT::emitSlow_op_eq):
       
 24043         (JSC::JIT::emitSlow_op_neq): Made a vptr comparison a *Ptr operation,
       
 24044         instead of *32, to make it portable to 64bit. Reorganized the string
       
 24045         and generic cases to make their control flow a little clearer.
       
 24046 
       
 24047 2009-05-23  Geoffrey Garen  <ggaren@apple.com>
       
 24048 
       
 24049         Reviewed by Maciej Stachowiak.
       
 24050         
       
 24051         Optimized == and != for our new value representation -- especially for strings.
       
 24052         
       
 24053         14% speedup on date-format-tofte.
       
 24054 
       
 24055         * jit/JITOpcodes.cpp:
       
 24056         (JSC::JIT::emit_op_eq):
       
 24057         (JSC::JIT::emitSlow_op_eq):
       
 24058         (JSC::JIT::emit_op_neq):
       
 24059         (JSC::JIT::emitSlow_op_neq):
       
 24060         * jit/JITStubCall.h:
       
 24061         (JSC::JITStubCall::JITStubCall):
       
 24062         * jit/JITStubs.cpp:
       
 24063         (JSC::JITStubs::cti_op_eq):
       
 24064         (JSC::JITStubs::cti_op_eq_strings):
       
 24065         (JSC::JITStubs::cti_op_call_eval):
       
 24066         * jit/JITStubs.h:
       
 24067         (JSC::):
       
 24068         * runtime/JSValue.h:
       
 24069 
       
 24070 2009-05-22  Sam Weinig  <sam@webkit.org>
       
 24071 
       
 24072         Reviewed by Gavin Barraclough.
       
 24073 
       
 24074         Fix non-SSE enabled builds.
       
 24075 
       
 24076         * jit/JITArithmetic.cpp:
       
 24077         (JSC::JIT::emitSlow_op_add): Don't early return here, we still need to call the JIT stub.
       
 24078         (JSC::JIT::emitSlow_op_sub): Ditto.
       
 24079 
       
 24080 2009-05-22  Geoffrey Garen  <ggaren@apple.com>
       
 24081 
       
 24082         Reviewed by Sam Weinig.
       
 24083         
       
 24084         Here's a thought: let's not take a jit stub call just to multiply by 1,
       
 24085         bokay?
       
 24086         
       
 24087         imul doesn't set the zero flag, so to test for a zero result, we need
       
 24088         an explicit instruction. (Luckily, it does set the overflow flag, so
       
 24089         we can still use that.)
       
 24090 
       
 24091         * jit/JIT.h:
       
 24092         * jit/JITArithmetic.cpp:
       
 24093         (JSC::JIT::emit_op_mul):
       
 24094         (JSC::JIT::emitSlow_op_mul):
       
 24095         (JSC::JIT::emitMul32InPlace):
       
 24096 
       
 24097 2009-05-22  Sam Weinig  <sam@webkit.org>
       
 24098 
       
 24099         Reviewed by Geoffrey "Premature Commit" Garen.
       
 24100 
       
 24101         Add back constant integer cases for op_add.
       
 24102 
       
 24103         * jit/JIT.h:
       
 24104         * jit/JITArithmetic.cpp:
       
 24105         (JSC::JIT::emit_op_add):
       
 24106         (JSC::JIT::emitAdd32Constant):
       
 24107         (JSC::JIT::emitSlow_op_add):
       
 24108         (JSC::JIT::emitSlowAdd32Constant):
       
 24109         * jit/JITInlineMethods.h:
       
 24110         (JSC::JIT::getConstantOperandImmediateDouble):
       
 24111         (JSC::JIT::isOperandConstantImmediateDouble):
       
 24112 
       
 24113 2009-05-22  Geoffrey Garen  <ggaren@apple.com>
       
 24114 
       
 24115         Reviewed by Sam Weinig.
       
 24116         
       
 24117         Added fast double cases for op_jnless and op_jnlesseq.
       
 24118 
       
 24119         * assembler/AbstractMacroAssembler.h:
       
 24120         (JSC::AbstractMacroAssembler::JumpList::jumps): New accesor, used by
       
 24121         addSlowCase.
       
 24122 
       
 24123         * assembler/X86Assembler.h:
       
 24124         (JSC::X86Assembler::ucomisd_rm): New method for comparing register to
       
 24125         memory.
       
 24126 
       
 24127         * jit/JIT.h:
       
 24128         * jit/JITArithmetic.cpp:
       
 24129         (JSC::JIT::emit_op_jnless):
       
 24130         (JSC::JIT::emitSlow_op_jnless):
       
 24131         (JSC::JIT::emit_op_jnlesseq):
       
 24132         (JSC::JIT::emitSlow_op_jnlesseq):
       
 24133         (JSC::JIT::emit_op_add):
       
 24134         (JSC::JIT::emit_op_sub):
       
 24135         (JSC::JIT::emitBinaryDoubleOp):
       
 24136         (JSC::JIT::emit_op_mul):
       
 24137         (JSC::JIT::emit_op_div): Modified emitBinaryDoubleOp to accept comparison/jump
       
 24138         operations in addition to operations with explicit result registers.
       
 24139 
       
 24140         * jit/JITInlineMethods.h:
       
 24141         (JSC::JIT::addSlowCase): Added an "addSlowCase" for JumpLists, so clients
       
 24142         can track multiple jumps to the same slow case condition together.
       
 24143 
       
 24144 2009-05-21  Sam Weinig  <sam@webkit.org>
       
 24145 
       
 24146         Reviewed by Gavin Barraclough.
       
 24147 
       
 24148         Implement op_negate inline fast cases.
       
 24149 
       
 24150         * assembler/MacroAssemblerX86Common.h:
       
 24151         (JSC::MacroAssemblerX86Common::neg32):
       
 24152         * assembler/X86Assembler.h:
       
 24153         (JSC::X86Assembler::):
       
 24154         (JSC::X86Assembler::negl_m):
       
 24155         (JSC::X86Assembler::xorpd_rr):
       
 24156         * jit/JIT.cpp:
       
 24157         (JSC::JIT::privateCompileMainPass):
       
 24158         (JSC::JIT::privateCompileSlowCases):
       
 24159         * jit/JIT.h:
       
 24160         * jit/JITArithmetic.cpp:
       
 24161         (JSC::JIT::emit_op_negate):
       
 24162         (JSC::JIT::emitSlow_op_negate):
       
 24163 
       
 24164 2009-05-20  Sam Weinig  <sam@webkit.org>
       
 24165 
       
 24166         Reviewed by Gavin Barraclough.
       
 24167 
       
 24168         Update the patchOffsetGetByIdSlowCaseCall constant for the
       
 24169         case that OPCODE_SAMPLING is enabled.
       
 24170 
       
 24171         * jit/JIT.h:
       
 24172 
       
 24173 2009-05-20  Geoffrey Garen  <ggaren@apple.com>
       
 24174 
       
 24175         Reviewed by Sam Weinig.
       
 24176 
       
 24177         Added support for inline subtraction of doubles.
       
 24178 
       
 24179         * jit/JITArithmetic.cpp:
       
 24180         (JSC::JIT::emit_op_sub):
       
 24181         (JSC::JIT::emitSlow_op_sub):
       
 24182         (JSC::JIT::emitSlowSub32InPlaceLeft):
       
 24183         (JSC::JIT::emitBinaryDoubleOp):
       
 24184 
       
 24185 2009-05-20  Sam Weinig  <sam@webkit.org>
       
 24186 
       
 24187         Reviewed by Geoffrey Garen.
       
 24188 
       
 24189         Added support for inline division.
       
 24190 
       
 24191         * assembler/X86Assembler.h:
       
 24192         (JSC::X86Assembler::):
       
 24193         (JSC::X86Assembler::divsd_rr):
       
 24194         (JSC::X86Assembler::divsd_mr):
       
 24195         * bytecode/CodeBlock.cpp:
       
 24196         (JSC::CodeBlock::dump):
       
 24197         * bytecode/Opcode.h:
       
 24198         * bytecompiler/BytecodeGenerator.cpp:
       
 24199         (JSC::BytecodeGenerator::emitBinaryOp):
       
 24200         * interpreter/Interpreter.cpp:
       
 24201         (JSC::Interpreter::privateExecute):
       
 24202         * jit/JIT.cpp:
       
 24203         (JSC::JIT::privateCompileMainPass):
       
 24204         (JSC::JIT::privateCompileSlowCases):
       
 24205         * jit/JIT.h:
       
 24206         * jit/JITArithmetic.cpp:
       
 24207         (JSC::JIT::emitBinaryDoubleOp):
       
 24208         (JSC::JIT::emit_op_div):
       
 24209         (JSC::JIT::emitSlow_op_div):
       
 24210 
       
 24211 2009-05-20  Geoffrey Garen  <ggaren@apple.com>
       
 24212 
       
 24213         Reviewed by Sam Weinig.
       
 24214 
       
 24215         Added support for inline addition of doubles.
       
 24216 
       
 24217         * jit/JITArithmetic.cpp:
       
 24218         (JSC::JIT::emit_op_add):
       
 24219         (JSC::JIT::emitSlow_op_add):
       
 24220         (JSC::JIT::emitSlowAdd32InPlace):
       
 24221         (JSC::JIT::emitBinaryDoubleOp):
       
 24222         (JSC::JIT::emit_op_mul):
       
 24223         (JSC::JIT::emitSlow_op_mul):
       
 24224 
       
 24225 2009-05-20  Geoffrey Garen  <ggaren@apple.com>
       
 24226 
       
 24227         Reviewed by Sam Weinig.
       
 24228         
       
 24229         Factored inline double operations into a helper function, so that we
       
 24230         can reuse this code for other math operations.
       
 24231 
       
 24232         * jit/JIT.h:
       
 24233         * jit/JITArithmetic.cpp:
       
 24234         (JSC::JIT::emitBinaryDoubleOp):
       
 24235         (JSC::JIT::emit_op_mul):
       
 24236         * jit/JITCall.cpp:
       
 24237         (JSC::JIT::compileOpCallInitializeCallFrame):
       
 24238 
       
 24239 2009-05-20  Geoffrey Garen  <ggaren@apple.com>
       
 24240 
       
 24241         Reviewed by Sam Weinig.
       
 24242         
       
 24243         Added support for inline multiplication of doubles.
       
 24244 
       
 24245         * assembler/X86Assembler.h:
       
 24246         (JSC::X86Assembler::cvtsi2sd_mr): New function, useful for loading an
       
 24247         int32 into a double register.
       
 24248 
       
 24249         * jit/JITArithmetic.cpp:
       
 24250         (JSC::JIT::emit_op_mul):
       
 24251         (JSC::JIT::emitSlow_op_mul): Filled out these cases for double arithmetic.
       
 24252 
       
 24253         * jit/JIT.h:
       
 24254         * jit/JITInlineMethods.h:
       
 24255         (JSC::JIT::addressFor): New function, useful for addressing a JSValue's
       
 24256         full 64bits as a double.
       
 24257 
       
 24258 2009-05-19  Sam Weinig  <sam@webkit.org>
       
 24259 
       
 24260         Reviewed by Geoffrey Garen.
       
 24261 
       
 24262         Implement and enable optimized calls.
       
 24263 
       
 24264         * jit/JIT.cpp:
       
 24265         (JSC::JIT::privateCompileCTIMachineTrampolines): Add ENABLE(JIT_OPTIMIZE_CALL) guards
       
 24266         around the the optimize call only trampolines (virtualCallPreLink and virtualCallLink).
       
 24267         Update the trampolines to account for the new JSValue representation.
       
 24268         (JSC::JIT::unlinkCall): Use NULL instead of JSValue noValue. 
       
 24269 
       
 24270         * jit/JITCall.cpp:
       
 24271         (JSC::JIT::compileOpCall): Update to account for the new JSValue representation
       
 24272         (JSC::JIT::compileOpCallSlowCase): Ditto.
       
 24273 
       
 24274         * jit/JITStubs.h: Remove incorrect !ENABLE(JIT_OPTIMIZE_CALL) guard.
       
 24275 
       
 24276         * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_CALL.
       
 24277 
       
 24278 2009-05-19  Sam Weinig  <sam@webkit.org>
       
 24279 
       
 24280         Reviewed by Geoffrey Garen.
       
 24281 
       
 24282         Implement and enable optimized property access.
       
 24283 
       
 24284         * assembler/AbstractMacroAssembler.h: Fix comment.
       
 24285         * jit/JIT.cpp:
       
 24286         (JSC::JIT::privateCompileCTIMachineTrampolines): Remove array length trampoline
       
 24287         and implement the string length trampoline.
       
 24288         * jit/JIT.h: Add new constants for patch offsets.
       
 24289         * jit/JITInlineMethods.h: Remove FIELD_OFFSET which is now in StdLibExtras.h.
       
 24290         * jit/JITPropertyAccess.cpp: 
       
 24291         (JSC::JIT::emit_op_get_by_id):
       
 24292         (JSC::JIT::emitSlow_op_get_by_id):
       
 24293         (JSC::JIT::emit_op_put_by_id):
       
 24294         (JSC::JIT::emitSlow_op_put_by_id):
       
 24295         (JSC::JIT::compilePutDirectOffset):
       
 24296         (JSC::JIT::compileGetDirectOffset):
       
 24297         (JSC::JIT::privateCompilePutByIdTransition):
       
 24298         (JSC::JIT::patchGetByIdSelf):
       
 24299         (JSC::JIT::patchPutByIdReplace):
       
 24300         (JSC::JIT::privateCompilePatchGetArrayLength):
       
 24301         (JSC::JIT::privateCompileGetByIdProto):
       
 24302         (JSC::JIT::privateCompileGetByIdSelfList):
       
 24303         (JSC::JIT::privateCompileGetByIdProtoList):
       
 24304         (JSC::JIT::privateCompileGetByIdChainList):
       
 24305         (JSC::JIT::privateCompileGetByIdChain):
       
 24306         * jit/JITStubCall.h:
       
 24307         (JSC::JITStubCall::addArgument): Add version of addArgument that takes
       
 24308         two registers for the tag and payload.
       
 24309         * jit/JITStubs.cpp:
       
 24310         (JSC::JITStubs::JITStubs): Remove array length trampoline pointer.
       
 24311         (JSC::JITStubs::cti_op_get_by_id_self_fail): 
       
 24312         * jit/JITStubs.h:
       
 24313         * runtime/JSObject.h:
       
 24314         (JSC::JSObject::JSObject): Move m_inheritorID below the property storage
       
 24315         to align it to a 16 byte boundary.
       
 24316         * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS
       
 24317         * wtf/StdLibExtras.h: Move FIELD_OFFSET here.
       
 24318 
       
 24319 2009-05-17  Sam Weinig  <sam@webkit.org>
       
 24320 
       
 24321         Reviewed by Geoffrey Garen.
       
 24322 
       
 24323         Remove unneeded ExecState parameter from the number JSValue constructors.
       
 24324 
       
 24325         * runtime/JSValue.h:
       
 24326         (JSC::jsNumber):
       
 24327         (JSC::jsNaN):
       
 24328         (JSC::JSValue::JSValue):
       
 24329 
       
 24330 2009-05-15  Sam Weinig  <sam@webkit.org>
       
 24331 
       
 24332         Reviewed by Geoffrey Garen.
       
 24333 
       
 24334         Implemented fast path for op_put_by_val when putting to arrays.
       
 24335 
       
 24336         * jit/JITPropertyAccess.cpp:
       
 24337         (JSC::JIT::emit_op_put_by_val):
       
 24338         (JSC::JIT::emitSlow_op_put_by_val):
       
 24339 
       
 24340 2009-05-15  Geoffrey Garen  <ggaren@apple.com> (Mostly by Sam)
       
 24341 
       
 24342         Reviewed by Sam Weinig.
       
 24343         
       
 24344         Implemented fast path for op_get_by_val when accessing array.
       
 24345 
       
 24346         * jit/JIT.cpp:
       
 24347         * jit/JITPropertyAccess.cpp:
       
 24348         (JSC::JIT::emit_op_get_by_val):
       
 24349         (JSC::JIT::emitSlow_op_get_by_val):
       
 24350 
       
 24351 2009-05-14  Geoffrey Garen  <ggaren@apple.com>
       
 24352 
       
 24353         Reviewed by Sam Weinig.
       
 24354         
       
 24355         Fixed a failure in fast/js/math-transforms.html caused by failing to
       
 24356         preserve -0 in multiplication.
       
 24357 
       
 24358         * assembler/X86Assembler.h:
       
 24359         (JSC::X86Assembler::jz):
       
 24360         * jit/JITArithmetic.cpp:
       
 24361         (JSC::JIT::emit_op_mul):
       
 24362         (JSC::JIT::emitSlow_op_mul):
       
 24363         (JSC::JIT::emitMul32Constant):
       
 24364         (JSC::JIT::emitMul32InPlace): Check both for overflow and for zero when
       
 24365         doing multiplication. Use a slow case to get these right.
       
 24366 
       
 24367 2009-05-14  Geoffrey Garen  <ggaren@apple.com>
       
 24368 
       
 24369         Reviewed by Sam Weinig.
       
 24370         
       
 24371         Fixed a bug in the varargs calling convention.
       
 24372 
       
 24373         * jit/JITCall.cpp:
       
 24374         (JSC::JIT::compileOpCallVarargs): Move the argument count into regT1,
       
 24375         since that's where ctiVirtualCall expects it to be.
       
 24376 
       
 24377 2009-05-14  Geoffrey Garen  <ggaren@apple.com>
       
 24378 
       
 24379         Reviewed by Sam Weinig.
       
 24380 
       
 24381         Fixed a small bug in instanceof's looping code.
       
 24382 
       
 24383         * jit/JITOpcodes.cpp:
       
 24384         (JSC::JIT::emit_op_instanceof): NULL means the object has no prototype,
       
 24385         so only loop when *not* equal to NULL.
       
 24386 
       
 24387 2009-05-14  Geoffrey Garen  <ggaren@apple.com>
       
 24388 
       
 24389         Reviewed by Sam Weinig.
       
 24390         
       
 24391         Fixed a small bug in instanceof's result writing code.
       
 24392 
       
 24393         * jit/JITOpcodes.cpp:
       
 24394         (JSC::JIT::emit_op_instanceof): Make sure to fill out the payload bits
       
 24395         in all cases.
       
 24396 
       
 24397 2009-05-14  Sam Weinig  <sam@webkit.org>
       
 24398 
       
 24399         Reviewed by Geoffrey Garen.
       
 24400 
       
 24401         Removed an invalid assertion in cti_op_urshift which
       
 24402         depended on a fast path for op_urshift which has
       
 24403         never existed.
       
 24404 
       
 24405         * jit/JITStubs.cpp:
       
 24406         (JSC::JITStubs::cti_op_urshift):
       
 24407 
       
 24408 2009-05-14  Geoffrey Garen  <ggaren@apple.com>
       
 24409 
       
 24410         Reviewed by Sam Weinig.
       
 24411         
       
 24412         Fixed loop_if_true, which had the same reversed test that jtrue had.
       
 24413 
       
 24414         * jit/JITOpcodes.cpp:
       
 24415         (JSC::JIT::emit_op_loop_if_true):
       
 24416 
       
 24417 2009-05-14  Sam Weinig  <sam@webkit.org>
       
 24418 
       
 24419         Reviewed by Geoffrey Garen.
       
 24420 
       
 24421         In op_neq, we apparently want to check that one value
       
 24422         does *not* equal another.  Go figure.
       
 24423 
       
 24424         * jit/JITOpcodes.cpp:
       
 24425         (JSC::JIT::emit_op_neq):
       
 24426 
       
 24427 2009-05-14  Sam Weinig  <sam@webkit.org>
       
 24428 
       
 24429         Reviewed by Geoffrey Garen.
       
 24430 
       
 24431         The slow case of op_mod should call op_mod's jit stub,
       
 24432         not op_mul.  That would be dumb.
       
 24433 
       
 24434         * jit/JITArithmetic.cpp:
       
 24435         (JSC::JIT::emitSlow_op_mod):
       
 24436 
       
 24437 2009-05-14  Geoffrey Garen  <ggaren@apple.com>
       
 24438 
       
 24439         Reviewed by Sam Weinig.
       
 24440         
       
 24441         Fixed problems when using 'arguments' due to a half-initialized register.
       
 24442 
       
 24443         * interpreter/CallFrame.h:
       
 24444         (JSC::ExecState::setCalleeArguments):
       
 24445         (JSC::ExecState::init): Require a full JSValue when setting up the 
       
 24446         'arguments' virtual register, since this register is accessible from JIT
       
 24447         code and bytecode, and needs to be a true JSValue.
       
 24448 
       
 24449         * interpreter/CallFrameClosure.h:
       
 24450         (JSC::CallFrameClosure::resetCallFrame): ditto
       
 24451 
       
 24452         * interpreter/Interpreter.cpp:
       
 24453         (JSC::Interpreter::privateExecute): ditto
       
 24454 
       
 24455         * interpreter/Register.h: Removed the constructor that allowed assignment
       
 24456         of a JSArguments* to a register. That is not safe. See above.
       
 24457 
       
 24458         * jit/JITStubs.cpp:
       
 24459         (JSC::JITStubs::cti_op_create_arguments):
       
 24460         (JSC::JITStubs::cti_op_create_arguments_no_params): ditto
       
 24461 
       
 24462 2009-05-14  Sam Weinig  <sam@webkit.org>
       
 24463 
       
 24464         Reviewed by Geoffrey Garen.
       
 24465 
       
 24466         We really want to go to the slow case in op_jfalse and
       
 24467         op_jtrue if the value is *not* boolean. 
       
 24468 
       
 24469         * jit/JITOpcodes.cpp:
       
 24470         (JSC::JIT::emit_op_jfalse):
       
 24471         (JSC::JIT::emit_op_jtrue):
       
 24472 
       
 24473 2009-05-14  Sam Weinig  <sam@webkit.org>
       
 24474 
       
 24475         Reviewed by Geoffrey Garen.
       
 24476 
       
 24477         Flipped the condition when emitting a an op_loop_if_less or op_loop_if_lesseq
       
 24478         if the first operand is a constant.
       
 24479 
       
 24480         * jit/JITOpcodes.cpp:
       
 24481         (JSC::JIT::emit_op_loop_if_less):
       
 24482         (JSC::JIT::emit_op_loop_if_lesseq):
       
 24483 
       
 24484 2009-05-14  Sam Weinig  <sam@webkit.org>
       
 24485 
       
 24486         Reviewed by Geoffrey Garen.
       
 24487 
       
 24488         Added missing return in op_jnless and op_jnlesseq. 
       
 24489 
       
 24490         * jit/JITArithmetic.cpp:
       
 24491         (JSC::JIT::emit_op_jnless):
       
 24492         (JSC::JIT::emit_op_jnlesseq):
       
 24493 
       
 24494 2009-05-14  Sam Weinig  <sam@webkit.org>
       
 24495 
       
 24496         Reviewed by Geoffrey Garen.
       
 24497 
       
 24498         Load constants into the the register file as a temporary measure to
       
 24499         aid bring up.  This allows us to use to treat constants like any
       
 24500         other virtual register.
       
 24501 
       
 24502         * jit/JITOpcodes.cpp:
       
 24503         (JSC::JIT::emit_op_enter):
       
 24504         (JSC::JIT::emit_op_enter_with_activation):
       
 24505 
       
 24506 2009-05-14  Geoffrey Garen  <ggaren@apple.com>
       
 24507 
       
 24508         Reviewed by Sam Weinig.
       
 24509         
       
 24510         Implemented op_strict_eq. Original patch by Snowy, by way of Sam and Gavin.
       
 24511 
       
 24512         * assembler/MacroAssemblerX86Common.h:
       
 24513         (JSC::MacroAssemblerX86Common::set8): Added set8, since it's slightly
       
 24514         faster than set32, and the new value representation usually doesn't
       
 24515         need set32.
       
 24516 
       
 24517         * jit/JIT.cpp:
       
 24518         * jit/JIT.h:
       
 24519         * jit/JITInlineMethods.h:
       
 24520         (JSC::JIT::emitLoadTag):
       
 24521         (JSC::JIT::emitLoadPayload): Added helper functions for dealing with
       
 24522         constants. Eventually, we should write special cases for all constants,
       
 24523         but these are helpful in the short term.
       
 24524 
       
 24525         * jit/JITOpcodes.cpp:
       
 24526         (JSC::JIT::compileOpStrictEq):
       
 24527         (JSC::JIT::emitSlow_op_stricteq):
       
 24528         (JSC::JIT::emitSlow_op_nstricteq): teh opcodez.
       
 24529 
       
 24530         * runtime/JSValue.h:
       
 24531         (JSC::JSValue::):
       
 24532         (JSC::JSValue::isDouble): Added a LowestTag for clarity.
       
 24533 
       
 24534 2009-05-13  Geoffrey Garen  <ggaren@apple.com>
       
 24535 
       
 24536         Reviewed by Sam Weinig.
       
 24537         
       
 24538         Fixed some bugs in host function calls.
       
 24539         
       
 24540         testapi now passes!
       
 24541 
       
 24542         * jit/JIT.cpp: Changed some registers around to avoid overwriting edx:eax,
       
 24543         which is how JSValues are now returned. Also changed the code that
       
 24544         passes thisValue to pass the full 64bits of the value. Also added
       
 24545         an #error compiler directive to other platform builds, since the JSValue
       
 24546         return signature probably won't return in edx:eax on those platforms,
       
 24547         and we'll have to investigate a solution.
       
 24548 
       
 24549 2009-05-13  Geoffrey Garen  <ggaren@apple.com>
       
 24550 
       
 24551         Reviewed by Sam Weinig.
       
 24552         
       
 24553         Removed parameters from functions that are intended never to use their
       
 24554         parameters.
       
 24555 
       
 24556         * jit/JITPropertyAccess.cpp:
       
 24557         (JSC::JIT::emitSlow_op_get_by_val):
       
 24558         (JSC::JIT::emitSlow_op_put_by_val):
       
 24559 
       
 24560 2009-05-13  Geoffrey Garen  <ggaren@apple.com>
       
 24561 
       
 24562         Reviewed by Sam Weinig.
       
 24563         
       
 24564         Ported op_instance_of from TOT. It's basically the same, but some register
       
 24565         stuff changed to memory stuff.
       
 24566 
       
 24567         * jit/JITInlineMethods.h:
       
 24568         (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
       
 24569         (JSC::JIT::emitStore): Changed to use helper functions.
       
 24570 
       
 24571         * jit/JITOpcodes.cpp:
       
 24572         (JSC::JIT::emit_op_instanceof):
       
 24573         (JSC::JIT::emitSlow_op_instanceof): Ported from TOT.
       
 24574 
       
 24575 2009-05-13  Geoffrey Garen  <ggaren@apple.com>
       
 24576 
       
 24577         Reviewed by Gavin Barraclough.
       
 24578         
       
 24579         Added a comment to explain an exception-handling subtelty that we found
       
 24580         hard to remember when reviewing my last patch.
       
 24581 
       
 24582         * jit/JITOpcodes.cpp:
       
 24583         (JSC::JIT::emit_op_catch):
       
 24584 
       
 24585 2009-05-13  Geoffrey Garen  <ggaren@apple.com>
       
 24586 
       
 24587         Reviewed by Sam Weinig.
       
 24588         
       
 24589         Implemented try/catch.
       
 24590 
       
 24591         * jit/JITOpcodes.cpp:
       
 24592         (JSC::JIT::emit_op_throw): Updated to use JITStackFrame abstraction.
       
 24593         (JSC::JIT::emit_op_catch): Filled out.
       
 24594 
       
 24595 2009-05-13  Sam Weinig  <sam@webkit.org>
       
 24596 
       
 24597         Reviewed by Geoffrey Garen.
       
 24598 
       
 24599         Implemented op_loop_if_true, op_jfalse, op_jtrue, op_jeq_null and op_jneq_null
       
 24600 
       
 24601         * jit/JITOpcodes.cpp:
       
 24602         (JSC::JIT::emitSlow_op_instanceof): Moved from below to be next to its
       
 24603         fast brother.
       
 24604 
       
 24605         (JSC::JIT::emit_op_loop_if_true): Similar to the old version
       
 24606         in that it tries to do the integer case first and reduce the
       
 24607         number of jumps you might need to take.
       
 24608         (JSC::JIT::emitSlow_op_loop_if_true):
       
 24609 
       
 24610         (JSC::JIT::emit_op_jfalse): Very similar to op_loop_if_true, only
       
 24611         the inverse and without a timeout check.
       
 24612         (JSC::JIT::emitSlow_op_jfalse):
       
 24613 
       
 24614         (JSC::JIT::emit_op_jtrue): Very similar to op_loop_if_true except
       
 24615         without the timeout check.
       
 24616         (JSC::JIT::emitSlow_op_jtrue):
       
 24617 
       
 24618         (JSC::JIT::emit_op_jeq_null): Very similar to the implementation
       
 24619         of op_eq, except it takes jumps instead of copying the condition
       
 24620         to a dst.
       
 24621         (JSC::JIT::emit_op_jneq_null): Ditto but for op_neq.
       
 24622 
       
 24623 2009-05-13  Geoffrey Garen  <ggaren@apple.com>
       
 24624 
       
 24625         Reviewed by Sam Weinig.
       
 24626         
       
 24627         Implemented op_call_varargs.
       
 24628 
       
 24629         * jit/JITCall.cpp:
       
 24630         (JSC::JIT::compileOpCallVarargsSetupArgs):
       
 24631         (JSC::JIT::compileOpCallVarargs):
       
 24632         (JSC::JIT::emit_op_call):
       
 24633         (JSC::JIT::emit_op_call_eval):
       
 24634         (JSC::JIT::emit_op_load_varargs):
       
 24635         (JSC::JIT::emit_op_call_varargs):
       
 24636         (JSC::JIT::emit_op_construct):
       
 24637         * jit/JITOpcodes.cpp:
       
 24638         (JSC::JIT::emit_op_jneq_ptr):
       
 24639 
       
 24640 2009-05-13  Geoffrey Garen  <ggaren@apple.com>
       
 24641 
       
 24642         Reviewed by Sam Weinig.
       
 24643         
       
 24644         Implemented op_call_eval.
       
 24645 
       
 24646         * jit/JITCall.cpp:
       
 24647         (JSC::JIT::compileOpCallVarargsSetupArgs):
       
 24648         (JSC::JIT::compileOpCall):
       
 24649         * jit/JITStubCall.h:
       
 24650         (JSC::CallEvalJITStub::CallEvalJITStub):
       
 24651 
       
 24652 2009-05-13  Sam Weinig  <sam@webkit.org>
       
 24653 
       
 24654         Reviewed by Gavin Barraclough.
       
 24655 
       
 24656         Implemented op_not. (Gavin did most of the work!)
       
 24657 
       
 24658         * jit/JITOpcodes.cpp:
       
 24659         (JSC::JIT::emit_op_not):
       
 24660         (JSC::JIT::emitSlow_op_not):
       
 24661 
       
 24662 2009-05-13  Geoffrey Garen  <ggaren@apple.com>
       
 24663 
       
 24664         Reviewed by Sam Weinig.
       
 24665         
       
 24666         Implemented op_global_resolve.
       
 24667 
       
 24668         * jit/JITOpcodes.cpp:
       
 24669         (JSC::JIT::emit_op_loop_if_less):
       
 24670         (JSC::JIT::emit_op_loop_if_lesseq): Added back accidentally removed
       
 24671         early returns. 
       
 24672 
       
 24673         (JSC::JIT::emit_op_resolve_global):
       
 24674         * jit/JITStubs.cpp:
       
 24675         (JSC::JITStubs::cti_op_resolve_global): Pretty similar to the old code,
       
 24676         but we need two reads and a TimesEight step in order to account for the
       
 24677         64bit value size.
       
 24678 
       
 24679         * jit/JITStubs.h:
       
 24680         (JSC::): Slightly tweaked this code to specialize for a JSGlobalObject*,
       
 24681         to avoid having to pass an irrelevant tag pointer to the stub.
       
 24682 
       
 24683 2009-05-13  Sam Weinig  <sam@webkit.org>
       
 24684 
       
 24685         Reviewed by Geoffrey Garen.
       
 24686 
       
 24687         Implemented op_to_jsnumber.
       
 24688 
       
 24689         * jit/JITOpcodes.cpp:
       
 24690         (JSC::JIT::emit_op_to_jsnumber):
       
 24691         (JSC::JIT::emitSlow_op_to_jsnumber):
       
 24692 
       
 24693 2009-05-13  Sam Weinig  <sam@webkit.org>
       
 24694 
       
 24695         Reviewed by Geoffrey Garen.
       
 24696 
       
 24697         Implemented op_convert_this.
       
 24698 
       
 24699         * jit/JITOpcodes.cpp:
       
 24700         (JSC::JIT::emit_op_convert_this):
       
 24701         (JSC::JIT::emitSlow_op_convert_this):
       
 24702 
       
 24703 2009-05-13  Geoffrey Garen  <ggaren@apple.com>
       
 24704 
       
 24705         Reviewed by Sam Weinig.
       
 24706         
       
 24707         Got basic JS function and constructor calls working.
       
 24708 
       
 24709         * jit/JIT.cpp:
       
 24710         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 24711         * jit/JIT.h:
       
 24712         * jit/JITCall.cpp:
       
 24713         (JSC::JIT::compileOpCallSetupArgs):
       
 24714         (JSC::JIT::compileOpCallVarargsSetupArgs):
       
 24715         (JSC::JIT::compileOpConstructSetupArgs):
       
 24716         (JSC::JIT::emit_op_ret):
       
 24717         (JSC::JIT::emit_op_construct_verify):
       
 24718         (JSC::JIT::emitSlow_op_construct_verify):
       
 24719         (JSC::JIT::emitSlow_op_call):
       
 24720         (JSC::JIT::emitSlow_op_call_eval):
       
 24721         (JSC::JIT::emitSlow_op_call_varargs):
       
 24722         (JSC::JIT::emitSlow_op_construct):
       
 24723         (JSC::JIT::compileOpCall): Filled out these cases, with call_eval #if'd out.
       
 24724 
       
 24725         * jit/JITInlineMethods.h:
       
 24726         (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
       
 24727         (JSC::JIT::emitLoad): Restored some legacy "*CTIArg*" functions,
       
 24728         since I wanted to avoid the complexity of revamping the API here while
       
 24729         trying to bring it up. Eventually, we should re-remove all of these functions.
       
 24730 
       
 24731         (JSC::JIT::recordJumpTarget): Removed unnecessary macro cruft. You will
       
 24732         not silence me, Sam Weinig! The world will know that you are a crufty,
       
 24733         crufty, crufty programmer!!!
       
 24734 
       
 24735         * jit/JITOpcodes.cpp:
       
 24736         * jit/JITStubs.cpp:
       
 24737         (JSC::):
       
 24738         * jit/JITStubs.h: Changed up some offsets in the JITStackFrame class, since
       
 24739         and off-by-one error was causing stack misalignment.
       
 24740 
       
 24741 2009-05-13  Sam Weinig  <sam@webkit.org>
       
 24742 
       
 24743         Reviewed by Geoffrey Garen.
       
 24744 
       
 24745         Implement op_eq_null and op_neq_null.
       
 24746 
       
 24747         * assembler/MacroAssemblerX86Common.h:
       
 24748         (JSC::MacroAssemblerX86Common::set8):
       
 24749         (JSC::MacroAssemblerX86Common::setTest8):
       
 24750         * jit/JITOpcodes.cpp:
       
 24751         (JSC::JIT::emit_op_stricteq):
       
 24752         (JSC::JIT::emitSlow_op_stricteq):
       
 24753         (JSC::JIT::emit_op_nstricteq):
       
 24754         (JSC::JIT::emitSlow_op_nstricteq):
       
 24755         (JSC::JIT::emit_op_eq_null):
       
 24756         (JSC::JIT::emit_op_neq_null):
       
 24757         * jsc.cpp:
       
 24758 
       
 24759 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 24760 
       
 24761         Reviewed by Geoffrey Garen.
       
 24762 
       
 24763         Implement op_new_error.
       
 24764 
       
 24765         * jit/JITOpcodes.cpp:
       
 24766         (JSC::JIT::emit_op_new_error):
       
 24767         * jit/JITStubCall.h:
       
 24768         (JSC::JITStubCall::addArgument): Add a version of addArgument
       
 24769         that takes a constant JSValue.
       
 24770 
       
 24771 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 24772 
       
 24773         Reviewed by Geoffrey Garen.
       
 24774 
       
 24775         Remove now unused emitGetVariableObjectRegister and emitPutVariableObjectRegister.
       
 24776 
       
 24777         * jit/JIT.cpp:
       
 24778         * jit/JIT.h:
       
 24779 
       
 24780 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 24781 
       
 24782         Reviewed by Geoffrey Garen.
       
 24783 
       
 24784         Implement op_to_primitive and op_next_pname.
       
 24785 
       
 24786         * jit/JITOpcodes.cpp:
       
 24787         (JSC::JIT::emitSlow_op_construct_verify):
       
 24788         (JSC::JIT::emit_op_to_primitive):
       
 24789         (JSC::JIT::emitSlow_op_to_primitive):
       
 24790         (JSC::JIT::emitSlow_op_loop_if_true):
       
 24791         (JSC::JIT::emit_op_jtrue):
       
 24792         (JSC::JIT::emit_op_next_pname):
       
 24793 
       
 24794 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 24795 
       
 24796         Reviewed by Geoffrey Garen.
       
 24797 
       
 24798         Add op_get_global_var, op_put_global_var, emit_op_get_scoped_var, emit_op_put_scoped_var and
       
 24799         op_unexpected_load.
       
 24800 
       
 24801         * jit/JIT.h:
       
 24802         * jit/JITInlineMethods.h:
       
 24803         (JSC::JIT::tagFor):
       
 24804         (JSC::JIT::payloadFor):
       
 24805         (JSC::JIT::emitLoad):
       
 24806         (JSC::JIT::emitStore):
       
 24807         (JSC::JIT::emitLoadReturnValue):
       
 24808         * jit/JITOpcodes.cpp:
       
 24809         (JSC::JIT::emit_op_get_global_var):
       
 24810         (JSC::JIT::emit_op_put_global_var):
       
 24811         (JSC::JIT::emit_op_get_scoped_var):
       
 24812         (JSC::JIT::emit_op_put_scoped_var):
       
 24813         (JSC::JIT::emit_op_unexpected_load):
       
 24814 
       
 24815 2009-05-12  Geoffrey Garen  <ggaren@apple.com>
       
 24816 
       
 24817         Reviewed by Sam Weinig.
       
 24818 
       
 24819         Added overflow handling to op_sub.
       
 24820 
       
 24821         * jit/JIT.h:
       
 24822         * jit/JITArithmetic.cpp:
       
 24823         (JSC::JIT::emitSlow_op_sub):
       
 24824         (JSC::JIT::emitSlowSub32InPlaceLeft):
       
 24825 
       
 24826 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 24827 
       
 24828         Reviewed by Geoffrey Garen.
       
 24829 
       
 24830         Remove a function call by folding op_get_by_id and op_put_by_id into
       
 24831         their respective compile functions.
       
 24832 
       
 24833         * jit/JIT.h:
       
 24834         * jit/JITPropertyAccess.cpp:
       
 24835         (JSC::JIT::emit_op_get_by_id):
       
 24836         (JSC::JIT::emitSlow_op_get_by_id):
       
 24837         (JSC::JIT::emit_op_put_by_id):
       
 24838         (JSC::JIT::emitSlow_op_put_by_id):
       
 24839 
       
 24840 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 24841 
       
 24842         Reviewed by Geoffrey Garen.
       
 24843 
       
 24844         Make JITStubCall work in 64bit by making the stack index
       
 24845         step dependent on the size of void*.
       
 24846 
       
 24847         * jit/JITStubCall.h:
       
 24848         (JSC::JITStubCall::JITStubCall):
       
 24849         (JSC::JITStubCall::addArgument):
       
 24850 
       
 24851 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 24852 
       
 24853         Reviewed by Geoffrey Garen.
       
 24854 
       
 24855         Implement simple version of property access opcodes
       
 24856         which just call a stub functions.
       
 24857 
       
 24858         * jit/JITOpcodes.cpp:
       
 24859         * jit/JITPropertyAccess.cpp:
       
 24860         (JSC::JIT::emitSlow_op_put_by_id):
       
 24861         (JSC::JIT::emitSlow_op_get_by_id):
       
 24862         (JSC::JIT::emit_op_get_by_val):
       
 24863         (JSC::JIT::emitSlow_op_get_by_val):
       
 24864         (JSC::JIT::emit_op_put_by_val):
       
 24865         (JSC::JIT::emitSlow_op_put_by_val):
       
 24866         (JSC::JIT::emit_op_put_by_index):
       
 24867         (JSC::JIT::emit_op_put_getter):
       
 24868         (JSC::JIT::emit_op_put_setter):
       
 24869         (JSC::JIT::emit_op_del_by_id):
       
 24870         (JSC::JIT::compileGetByIdHotPath):
       
 24871         (JSC::JIT::compilePutByIdHotPath):
       
 24872         * jit/JITStubCall.h:
       
 24873         (JSC::JITStubCall::addArgument):
       
 24874         * jsc.cpp:
       
 24875 
       
 24876 2009-05-12  Geoffrey Garen  <ggaren@apple.com>
       
 24877 
       
 24878         Reviewed by Sam Weinig.
       
 24879         
       
 24880         Added work-around for XCode debugging echo problem.
       
 24881 
       
 24882         * jsc.cpp:
       
 24883         (runInteractive):
       
 24884 
       
 24885 2009-05-12  Geoffrey Garen  <ggaren@apple.com>
       
 24886 
       
 24887         Reviewed by Sam Weinig.
       
 24888         
       
 24889         Added overflow handling to op_add.
       
 24890 
       
 24891         * jit/JIT.h:
       
 24892         * jit/JITArithmetic.cpp:
       
 24893         (JSC::JIT::emitSlow_op_add):
       
 24894         (JSC::JIT::emitSlowAdd32InPlace):
       
 24895 
       
 24896 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 24897 
       
 24898         Reviewed by Geoffrey Garen.
       
 24899 
       
 24900         Add slow cases for op_jnless or emit_op_jnlesseq.
       
 24901 
       
 24902         * jit/JITArithmetic.cpp:
       
 24903         (JSC::JIT::emitSlow_op_jnless):
       
 24904         (JSC::JIT::emitSlow_op_jnlesseq):
       
 24905 
       
 24906 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 24907 
       
 24908         Reviewed by Geoffrey Garen.
       
 24909 
       
 24910         Add implementations for op_jnless, emit_op_jnlesseq, op_loop_if_less and op_loop_if_lesseq.
       
 24911         No slow cases for op_jnless or emit_op_jnlesseq yet.
       
 24912 
       
 24913         * jit/JITArithmetic.cpp:
       
 24914         (JSC::JIT::emit_op_jnless):
       
 24915         (JSC::JIT::emitSlow_op_jnless):
       
 24916         (JSC::JIT::emit_op_jnlesseq):
       
 24917         (JSC::JIT::emitSlow_op_jnlesseq):
       
 24918         * jit/JITOpcodes.cpp:
       
 24919         (JSC::JIT::emit_op_loop_if_less):
       
 24920         (JSC::JIT::emitSlow_op_loop_if_less):
       
 24921         (JSC::JIT::emit_op_loop_if_lesseq):
       
 24922         (JSC::JIT::emitSlow_op_loop_if_lesseq):
       
 24923 
       
 24924 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 24925 
       
 24926         Reviewed by Geoffrey Garen.
       
 24927 
       
 24928         Turn the RECORD_JUMP_TARGET macro into an inline function.
       
 24929 
       
 24930         * jit/JIT.h:
       
 24931         * jit/JITInlineMethods.h:
       
 24932         (JSC::JIT::recordJumpTarget):
       
 24933         * jit/JITOpcodes.cpp:
       
 24934         (JSC::JIT::emit_op_jmp):
       
 24935         (JSC::JIT::emit_op_jsr):
       
 24936         (JSC::JIT::emit_op_jmp_scopes):
       
 24937 
       
 24938 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 24939 
       
 24940         Add MacroAssemblerX86Common::set8 to fix the build.
       
 24941 
       
 24942         * assembler/MacroAssemblerX86Common.h:
       
 24943         (JSC::MacroAssemblerX86Common::set8):
       
 24944 
       
 24945 2009-05-12  Geoffrey Garen  <ggaren@apple.com>
       
 24946 
       
 24947         Reviewed by Sam Weinig.
       
 24948         
       
 24949         Added overflow recovery for pre_inc and pre_dec.
       
 24950         
       
 24951         Turned some short-circuit code into early returns, as is the WebKit style.
       
 24952 
       
 24953         * jit/JITArithmetic.cpp:
       
 24954         (JSC::JIT::emit_op_post_inc):
       
 24955         (JSC::JIT::emitSlow_op_post_inc):
       
 24956         (JSC::JIT::emit_op_post_dec):
       
 24957         (JSC::JIT::emitSlow_op_post_dec):
       
 24958         (JSC::JIT::emitSlow_op_pre_inc):
       
 24959         (JSC::JIT::emitSlow_op_pre_dec):
       
 24960 
       
 24961 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 24962 
       
 24963         Reviewed by Geoffrey Garen.
       
 24964 
       
 24965         Implement op_jmp, op_loop, op_eq and op_neq.
       
 24966 
       
 24967         * jit/JITOpcodes.cpp:
       
 24968         (JSC::JIT::emit_op_jmp):
       
 24969         (JSC::JIT::emit_op_loop):
       
 24970         (JSC::JIT::emit_op_eq):
       
 24971         (JSC::JIT::emitSlow_op_eq):
       
 24972         (JSC::JIT::emit_op_neq):
       
 24973         (JSC::JIT::emitSlow_op_neq):
       
 24974         (JSC::JIT::emit_op_enter):
       
 24975         (JSC::JIT::emit_op_enter_with_activation):
       
 24976 
       
 24977 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 24978 
       
 24979         Reviewed by Geoffrey Garen.
       
 24980 
       
 24981         Implement the slow cases for arithmetic opcodes.
       
 24982 
       
 24983         * jit/JITArithmetic.cpp:
       
 24984         (JSC::JIT::emitSlow_op_lshift):
       
 24985         (JSC::JIT::emitSlow_op_rshift):
       
 24986         (JSC::JIT::emitSlow_op_bitand):
       
 24987         (JSC::JIT::emitSlow_op_bitor):
       
 24988         (JSC::JIT::emitSlow_op_bitxor):
       
 24989         (JSC::JIT::emitSlow_op_bitnot):
       
 24990         (JSC::JIT::emitSlow_op_sub):
       
 24991         (JSC::JIT::emitSlow_op_mul):
       
 24992         (JSC::JIT::emitSlow_op_mod):
       
 24993         (JSC::JIT::emit_op_mod):
       
 24994 
       
 24995 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 24996 
       
 24997         Reviewed by Geoffrey Garen.
       
 24998 
       
 24999         Implement op_bitnot.
       
 25000 
       
 25001         * assembler/MacroAssemblerX86Common.h:
       
 25002         (JSC::MacroAssemblerX86Common::not32):
       
 25003         * assembler/X86Assembler.h:
       
 25004         (JSC::X86Assembler::notl_m):
       
 25005         * jit/JITArithmetic.cpp:
       
 25006         (JSC::JIT::emit_op_bitnot):
       
 25007 
       
 25008 2009-05-12  Sam Weinig  <sam@webkit.org>
       
 25009 
       
 25010         Reviewed by Geoffrey Garen.
       
 25011 
       
 25012         Add arithmetic opcode implementations from the old nitro-extreme branch.
       
 25013 
       
 25014         * jit/JIT.h:
       
 25015         * jit/JITArithmetic.cpp:
       
 25016         (JSC::JIT::emit_op_jnless):
       
 25017         (JSC::JIT::emitSlow_op_jnless):
       
 25018         (JSC::JIT::emit_op_jnlesseq):
       
 25019         (JSC::JIT::emitSlow_op_jnlesseq):
       
 25020         (JSC::JIT::emit_op_lshift):
       
 25021         (JSC::JIT::emitSlow_op_lshift):
       
 25022         (JSC::JIT::emit_op_rshift):
       
 25023         (JSC::JIT::emitSlow_op_rshift):
       
 25024         (JSC::JIT::emit_op_bitand):
       
 25025         (JSC::JIT::emitBitAnd32Constant):
       
 25026         (JSC::JIT::emitBitAnd32InPlace):
       
 25027         (JSC::JIT::emit_op_bitor):
       
 25028         (JSC::JIT::emitSlow_op_bitor):
       
 25029         (JSC::JIT::emitBitOr32Constant):
       
 25030         (JSC::JIT::emitBitOr32InPlace):
       
 25031         (JSC::JIT::emit_op_bitxor):
       
 25032         (JSC::JIT::emitSlow_op_bitxor):
       
 25033         (JSC::JIT::emitBitXor32Constant):
       
 25034         (JSC::JIT::emitBitXor32InPlace):
       
 25035         (JSC::JIT::emit_op_bitnot):
       
 25036         (JSC::JIT::emitSlow_op_bitnot):
       
 25037         (JSC::JIT::emit_op_post_inc):
       
 25038         (JSC::JIT::emitSlow_op_post_inc):
       
 25039         (JSC::JIT::emit_op_post_dec):
       
 25040         (JSC::JIT::emitSlow_op_post_dec):
       
 25041         (JSC::JIT::emit_op_pre_inc):
       
 25042         (JSC::JIT::emitSlow_op_pre_inc):
       
 25043         (JSC::JIT::emit_op_pre_dec):
       
 25044         (JSC::JIT::emitSlow_op_pre_dec):
       
 25045         (JSC::JIT::emit_op_add):
       
 25046         (JSC::JIT::emitAdd32Constant):
       
 25047         (JSC::JIT::emitAdd32InPlace):
       
 25048         (JSC::JIT::emitSlow_op_add):
       
 25049         (JSC::JIT::emit_op_sub):
       
 25050         (JSC::JIT::emitSlow_op_sub):
       
 25051         (JSC::JIT::emitSub32ConstantLeft):
       
 25052         (JSC::JIT::emitSub32ConstantRight):
       
 25053         (JSC::JIT::emitSub32InPlaceLeft):
       
 25054         (JSC::JIT::emitSub32InPlaceRight):
       
 25055         (JSC::JIT::emit_op_mul):
       
 25056         (JSC::JIT::emitSlow_op_mul):
       
 25057         (JSC::JIT::emitMul32Constant):
       
 25058         (JSC::JIT::emitMul32InPlace):
       
 25059         (JSC::JIT::emit_op_mod):
       
 25060         (JSC::JIT::emitSlow_op_mod):
       
 25061         * jit/JITOpcodes.cpp:
       
 25062 
       
 25063 2009-05-12  Geoffrey Garen  <ggaren@apple.com>
       
 25064 
       
 25065         Removed JIT_OPTIMIZE_ARITHMETIC setting, since it was all about 32bit
       
 25066         value representations.
       
 25067         
       
 25068         Added JSAPIValueWrapper to the repository.
       
 25069 
       
 25070         * jit/JIT.h:
       
 25071         * jit/JITArithmetic.cpp:
       
 25072         * runtime/JSAPIValueWrapper.cpp: Added.
       
 25073         (JSC::JSAPIValueWrapper::toPrimitive):
       
 25074         (JSC::JSAPIValueWrapper::getPrimitiveNumber):
       
 25075         (JSC::JSAPIValueWrapper::toBoolean):
       
 25076         (JSC::JSAPIValueWrapper::toNumber):
       
 25077         (JSC::JSAPIValueWrapper::toString):
       
 25078         (JSC::JSAPIValueWrapper::toObject):
       
 25079         * runtime/JSAPIValueWrapper.h: Added.
       
 25080         (JSC::JSAPIValueWrapper::value):
       
 25081         (JSC::JSAPIValueWrapper::isAPIValueWrapper):
       
 25082         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
       
 25083         (JSC::jsAPIValueWrapper):
       
 25084         * wtf/Platform.h:
       
 25085 
       
 25086 2009-05-12  Geoffrey Garen  <ggaren@apple.com>
       
 25087 
       
 25088         Turned on the JIT and got it building and running the most trivial of
       
 25089         programs.
       
 25090         
       
 25091         All configurable optimizations are turned off, and a few opcodes are ad
       
 25092         hoc #if'd out.
       
 25093         
       
 25094         So far, I've only merged op_mov and op_end, but some stub-reliant
       
 25095         opcodes work as-is from TOT.
       
 25096         
       
 25097         * bytecode/CodeBlock.cpp:
       
 25098         (JSC::CodeBlock::~CodeBlock):
       
 25099         * bytecode/CodeBlock.h:
       
 25100         * jit/JIT.cpp:
       
 25101         (JSC::JIT::compileOpStrictEq):
       
 25102         * jit/JIT.h:
       
 25103         * jit/JITArithmetic.cpp:
       
 25104         (JSC::JIT::emit_op_lshift):
       
 25105         (JSC::JIT::emitSlow_op_lshift):
       
 25106         (JSC::JIT::emit_op_rshift):
       
 25107         (JSC::JIT::emitSlow_op_rshift):
       
 25108         (JSC::JIT::emit_op_jnless):
       
 25109         (JSC::JIT::emitSlow_op_jnless):
       
 25110         (JSC::JIT::emit_op_jnlesseq):
       
 25111         (JSC::JIT::emitSlow_op_jnlesseq):
       
 25112         (JSC::JIT::emit_op_bitand):
       
 25113         (JSC::JIT::emitSlow_op_bitand):
       
 25114         (JSC::JIT::emit_op_post_inc):
       
 25115         (JSC::JIT::emitSlow_op_post_inc):
       
 25116         (JSC::JIT::emit_op_post_dec):
       
 25117         (JSC::JIT::emitSlow_op_post_dec):
       
 25118         (JSC::JIT::emit_op_pre_inc):
       
 25119         (JSC::JIT::emitSlow_op_pre_inc):
       
 25120         (JSC::JIT::emit_op_pre_dec):
       
 25121         (JSC::JIT::emitSlow_op_pre_dec):
       
 25122         (JSC::JIT::emit_op_mod):
       
 25123         (JSC::JIT::emitSlow_op_mod):
       
 25124         (JSC::JIT::emit_op_add):
       
 25125         (JSC::JIT::emit_op_mul):
       
 25126         (JSC::JIT::emit_op_sub):
       
 25127         (JSC::JIT::compileBinaryArithOpSlowCase):
       
 25128         (JSC::JIT::emitSlow_op_add):
       
 25129         (JSC::JIT::emitSlow_op_mul):
       
 25130         * jit/JITCall.cpp:
       
 25131         (JSC::JIT::compileOpCallInitializeCallFrame):
       
 25132         (JSC::JIT::compileOpConstructSetupArgs):
       
 25133         (JSC::JIT::compileOpCallVarargs):
       
 25134         (JSC::JIT::compileOpCall):
       
 25135         (JSC::JIT::compileOpCallSlowCase):
       
 25136         * jit/JITInlineMethods.h:
       
 25137         (JSC::JIT::getConstantOperandImmediateInt):
       
 25138         (JSC::JIT::isOperandConstantImmediateInt):
       
 25139         (JSC::JIT::emitInitRegister):
       
 25140         (JSC::JIT::addSlowCase):
       
 25141         (JSC::JIT::addJump):
       
 25142         (JSC::JIT::emitJumpSlowToHot):
       
 25143         (JSC::JIT::tagFor):
       
 25144         (JSC::JIT::payloadFor):
       
 25145         (JSC::JIT::emitLoad):
       
 25146         (JSC::JIT::emitLoadReturnValue):
       
 25147         (JSC::JIT::emitStore):
       
 25148         (JSC::JIT::emitStoreReturnValue):
       
 25149         * jit/JITOpcodes.cpp:
       
 25150         (JSC::JIT::emit_op_mov):
       
 25151         (JSC::JIT::emit_op_end):
       
 25152         (JSC::JIT::emit_op_jmp):
       
 25153         (JSC::JIT::emit_op_loop):
       
 25154         (JSC::JIT::emit_op_loop_if_less):
       
 25155         (JSC::JIT::emit_op_loop_if_lesseq):
       
 25156         (JSC::JIT::emit_op_instanceof):
       
 25157         (JSC::JIT::emit_op_get_global_var):
       
 25158         (JSC::JIT::emit_op_put_global_var):
       
 25159         (JSC::JIT::emit_op_get_scoped_var):
       
 25160         (JSC::JIT::emit_op_put_scoped_var):
       
 25161         (JSC::JIT::emit_op_tear_off_activation):
       
 25162         (JSC::JIT::emit_op_ret):
       
 25163         (JSC::JIT::emit_op_construct_verify):
       
 25164         (JSC::JIT::emit_op_to_primitive):
       
 25165         (JSC::JIT::emit_op_loop_if_true):
       
 25166         (JSC::JIT::emit_op_resolve_global):
       
 25167         (JSC::JIT::emit_op_not):
       
 25168         (JSC::JIT::emit_op_jfalse):
       
 25169         (JSC::JIT::emit_op_jeq_null):
       
 25170         (JSC::JIT::emit_op_jneq_null):
       
 25171         (JSC::JIT::emit_op_jneq_ptr):
       
 25172         (JSC::JIT::emit_op_unexpected_load):
       
 25173         (JSC::JIT::emit_op_eq):
       
 25174         (JSC::JIT::emit_op_bitnot):
       
 25175         (JSC::JIT::emit_op_jtrue):
       
 25176         (JSC::JIT::emit_op_neq):
       
 25177         (JSC::JIT::emit_op_bitxor):
       
 25178         (JSC::JIT::emit_op_bitor):
       
 25179         (JSC::JIT::emit_op_throw):
       
 25180         (JSC::JIT::emit_op_next_pname):
       
 25181         (JSC::JIT::emit_op_push_scope):
       
 25182         (JSC::JIT::emit_op_to_jsnumber):
       
 25183         (JSC::JIT::emit_op_push_new_scope):
       
 25184         (JSC::JIT::emit_op_catch):
       
 25185         (JSC::JIT::emit_op_switch_imm):
       
 25186         (JSC::JIT::emit_op_switch_char):
       
 25187         (JSC::JIT::emit_op_switch_string):
       
 25188         (JSC::JIT::emit_op_new_error):
       
 25189         (JSC::JIT::emit_op_eq_null):
       
 25190         (JSC::JIT::emit_op_neq_null):
       
 25191         (JSC::JIT::emit_op_convert_this):
       
 25192         (JSC::JIT::emit_op_profile_will_call):
       
 25193         (JSC::JIT::emit_op_profile_did_call):
       
 25194         (JSC::JIT::emitSlow_op_construct_verify):
       
 25195         (JSC::JIT::emitSlow_op_get_by_val):
       
 25196         (JSC::JIT::emitSlow_op_loop_if_less):
       
 25197         (JSC::JIT::emitSlow_op_loop_if_lesseq):
       
 25198         (JSC::JIT::emitSlow_op_put_by_val):
       
 25199         (JSC::JIT::emitSlow_op_not):
       
 25200         (JSC::JIT::emitSlow_op_instanceof):
       
 25201         * jit/JITPropertyAccess.cpp:
       
 25202         (JSC::JIT::emit_op_get_by_val):
       
 25203         (JSC::JIT::emit_op_put_by_val):
       
 25204         (JSC::JIT::emit_op_put_by_index):
       
 25205         (JSC::JIT::emit_op_put_getter):
       
 25206         (JSC::JIT::emit_op_put_setter):
       
 25207         (JSC::JIT::emit_op_del_by_id):
       
 25208         (JSC::JIT::compileGetByIdHotPath):
       
 25209         (JSC::JIT::compilePutByIdHotPath):
       
 25210         * jit/JITStubCall.h:
       
 25211         (JSC::JITStubCall::JITStubCall):
       
 25212         (JSC::JITStubCall::addArgument):
       
 25213         (JSC::JITStubCall::call):
       
 25214         (JSC::JITStubCall::):
       
 25215         (JSC::CallEvalJITStub::CallEvalJITStub):
       
 25216         * jit/JITStubs.cpp:
       
 25217         (JSC::):
       
 25218         (JSC::JITStubs::cti_op_add):
       
 25219         (JSC::JITStubs::cti_op_pre_inc):
       
 25220         (JSC::JITStubs::cti_op_mul):
       
 25221         (JSC::JITStubs::cti_op_get_by_val):
       
 25222         (JSC::JITStubs::cti_op_get_by_val_string):
       
 25223         (JSC::JITStubs::cti_op_get_by_val_byte_array):
       
 25224         (JSC::JITStubs::cti_op_sub):
       
 25225         (JSC::JITStubs::cti_op_put_by_val):
       
 25226         (JSC::JITStubs::cti_op_put_by_val_array):
       
 25227         (JSC::JITStubs::cti_op_put_by_val_byte_array):
       
 25228         (JSC::JITStubs::cti_op_negate):
       
 25229         (JSC::JITStubs::cti_op_div):
       
 25230         (JSC::JITStubs::cti_op_pre_dec):
       
 25231         (JSC::JITStubs::cti_op_post_inc):
       
 25232         (JSC::JITStubs::cti_op_eq):
       
 25233         (JSC::JITStubs::cti_op_lshift):
       
 25234         (JSC::JITStubs::cti_op_bitand):
       
 25235         (JSC::JITStubs::cti_op_rshift):
       
 25236         (JSC::JITStubs::cti_op_bitnot):
       
 25237         (JSC::JITStubs::cti_op_mod):
       
 25238         (JSC::JITStubs::cti_op_neq):
       
 25239         (JSC::JITStubs::cti_op_post_dec):
       
 25240         (JSC::JITStubs::cti_op_urshift):
       
 25241         (JSC::JITStubs::cti_op_bitxor):
       
 25242         (JSC::JITStubs::cti_op_bitor):
       
 25243         (JSC::JITStubs::cti_op_switch_imm):
       
 25244         * jit/JITStubs.h:
       
 25245         * runtime/JSArray.cpp:
       
 25246         (JSC::JSArray::JSArray):
       
 25247         * runtime/JSFunction.cpp:
       
 25248         (JSC::JSFunction::~JSFunction):
       
 25249         * runtime/JSValue.h:
       
 25250         (JSC::JSValue::payload):
       
 25251         * wtf/Platform.h:
       
 25252 
       
 25253 2009-05-07  Sam Weinig  <sam@webkit.org>
       
 25254 
       
 25255         Reviewed by Geoffrey Garen.
       
 25256 
       
 25257         Add some new MacroAssembler and assembler functions that will be needed shortly.
       
 25258 
       
 25259         * assembler/MacroAssemblerX86Common.h:
       
 25260         (JSC::MacroAssemblerX86Common::add32):
       
 25261         (JSC::MacroAssemblerX86Common::and32):
       
 25262         (JSC::MacroAssemblerX86Common::mul32):
       
 25263         (JSC::MacroAssemblerX86Common::neg32):
       
 25264         (JSC::MacroAssemblerX86Common::or32):
       
 25265         (JSC::MacroAssemblerX86Common::sub32):
       
 25266         (JSC::MacroAssemblerX86Common::xor32):
       
 25267         (JSC::MacroAssemblerX86Common::branchAdd32):
       
 25268         (JSC::MacroAssemblerX86Common::branchMul32):
       
 25269         (JSC::MacroAssemblerX86Common::branchSub32):
       
 25270         * assembler/X86Assembler.h:
       
 25271         (JSC::X86Assembler::):
       
 25272         (JSC::X86Assembler::addl_rm):
       
 25273         (JSC::X86Assembler::andl_mr):
       
 25274         (JSC::X86Assembler::andl_rm):
       
 25275         (JSC::X86Assembler::andl_im):
       
 25276         (JSC::X86Assembler::negl_r):
       
 25277         (JSC::X86Assembler::notl_r):
       
 25278         (JSC::X86Assembler::orl_rm):
       
 25279         (JSC::X86Assembler::orl_im):
       
 25280         (JSC::X86Assembler::subl_rm):
       
 25281         (JSC::X86Assembler::xorl_mr):
       
 25282         (JSC::X86Assembler::xorl_rm):
       
 25283         (JSC::X86Assembler::xorl_im):
       
 25284         (JSC::X86Assembler::imull_mr):
       
 25285 
       
 25286 2009-05-11  Sam Weinig  <sam@webkit.org>
       
 25287 
       
 25288         Reviewed by Cameron Zwarich.
       
 25289 
       
 25290         Remove the NumberHeap.
       
 25291 
       
 25292         * JavaScriptCore.exp:
       
 25293         * runtime/Collector.cpp:
       
 25294         (JSC::Heap::Heap):
       
 25295         (JSC::Heap::destroy):
       
 25296         (JSC::Heap::recordExtraCost):
       
 25297         (JSC::Heap::heapAllocate):
       
 25298         (JSC::Heap::markConservatively):
       
 25299         (JSC::Heap::sweep):
       
 25300         (JSC::Heap::collect):
       
 25301         (JSC::Heap::objectCount):
       
 25302         (JSC::Heap::statistics):
       
 25303         (JSC::typeName):
       
 25304         (JSC::Heap::isBusy):
       
 25305         * runtime/Collector.h:
       
 25306         (JSC::Heap::globalData):
       
 25307         * runtime/JSCell.h:
       
 25308 
       
 25309 2009-05-11  Geoffrey Garen  <ggaren@apple.com>
       
 25310 
       
 25311         Reviewed by Sam Weinig.
       
 25312 
       
 25313         Land initial commit of new number representation for 32 bit platforms,
       
 25314         with JIT disabled.
       
 25315 
       
 25316         * API/APICast.h:
       
 25317         (toJS):
       
 25318         (toRef):
       
 25319         * API/JSCallbackObjectFunctions.h:
       
 25320         (JSC::::hasInstance):
       
 25321         (JSC::::toNumber):
       
 25322         (JSC::::toString):
       
 25323         * API/tests/testapi.c:
       
 25324         (EvilExceptionObject_convertToType):
       
 25325         * AllInOneFile.cpp:
       
 25326         * JavaScriptCore.exp:
       
 25327         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 25328         * bytecode/CodeBlock.cpp:
       
 25329         (JSC::valueToSourceString):
       
 25330         * bytecompiler/BytecodeGenerator.cpp:
       
 25331         (JSC::BytecodeGenerator::emitLoad):
       
 25332         (JSC::BytecodeGenerator::emitUnexpectedLoad):
       
 25333         (JSC::keyForImmediateSwitch):
       
 25334         * bytecompiler/BytecodeGenerator.h:
       
 25335         * interpreter/Interpreter.cpp:
       
 25336         (JSC::Interpreter::dumpRegisters):
       
 25337         (JSC::Interpreter::privateExecute):
       
 25338         * parser/Nodes.cpp:
       
 25339         (JSC::ArrayNode::emitBytecode):
       
 25340         (JSC::processClauseList):
       
 25341         * runtime/ArgList.h:
       
 25342         * runtime/Collector.h:
       
 25343         (JSC::sizeof):
       
 25344         * runtime/DateMath.cpp:
       
 25345         * runtime/ExceptionHelpers.h:
       
 25346         * runtime/InitializeThreading.cpp:
       
 25347         * runtime/JSArray.cpp:
       
 25348         (JSC::JSArray::JSArray):
       
 25349         * runtime/JSCell.cpp:
       
 25350         * runtime/JSCell.h:
       
 25351         (JSC::JSCell::isAPIValueWrapper):
       
 25352         (JSC::JSValue::isString):
       
 25353         (JSC::JSValue::isGetterSetter):
       
 25354         (JSC::JSValue::isObject):
       
 25355         (JSC::JSValue::getString):
       
 25356         (JSC::JSValue::getObject):
       
 25357         (JSC::JSValue::getCallData):
       
 25358         (JSC::JSValue::getConstructData):
       
 25359         (JSC::JSValue::getUInt32):
       
 25360         (JSC::JSValue::marked):
       
 25361         (JSC::JSValue::toPrimitive):
       
 25362         (JSC::JSValue::getPrimitiveNumber):
       
 25363         (JSC::JSValue::toBoolean):
       
 25364         (JSC::JSValue::toNumber):
       
 25365         (JSC::JSValue::toString):
       
 25366         (JSC::JSValue::needsThisConversion):
       
 25367         (JSC::JSValue::toThisString):
       
 25368         (JSC::JSValue::getJSNumber):
       
 25369         (JSC::JSValue::toObject):
       
 25370         (JSC::JSValue::toThisObject):
       
 25371         * runtime/JSGlobalData.cpp:
       
 25372         (JSC::JSGlobalData::JSGlobalData):
       
 25373         * runtime/JSGlobalData.h:
       
 25374         * runtime/JSGlobalObject.h:
       
 25375         (JSC::Structure::prototypeForLookup):
       
 25376         * runtime/JSGlobalObjectFunctions.cpp:
       
 25377         (JSC::globalFuncParseInt):
       
 25378         * runtime/JSImmediate.h:
       
 25379         * runtime/JSNumberCell.cpp: Removed.
       
 25380         * runtime/JSNumberCell.h: Removed.
       
 25381         * runtime/JSObject.h:
       
 25382         (JSC::JSValue::get):
       
 25383         (JSC::JSValue::put):
       
 25384         * runtime/JSString.h:
       
 25385         (JSC::JSValue::toThisJSString):
       
 25386         * runtime/JSValue.cpp:
       
 25387         (JSC::JSValue::toInteger):
       
 25388         (JSC::JSValue::toIntegerPreserveNaN):
       
 25389         (JSC::JSValue::toObjectSlowCase):
       
 25390         (JSC::JSValue::toThisObjectSlowCase):
       
 25391         (JSC::JSValue::synthesizeObject):
       
 25392         (JSC::JSValue::synthesizePrototype):
       
 25393         (JSC::JSValue::description):
       
 25394         (JSC::nonInlineNaN):
       
 25395         * runtime/JSValue.h:
       
 25396         (JSC::JSValue::):
       
 25397         (JSC::EncodedJSValueHashTraits::emptyValue):
       
 25398         (JSC::jsNaN):
       
 25399         (JSC::operator==):
       
 25400         (JSC::operator!=):
       
 25401         (JSC::toInt32):
       
 25402         (JSC::toUInt32):
       
 25403         (JSC::JSValue::encode):
       
 25404         (JSC::JSValue::decode):
       
 25405         (JSC::JSValue::JSValue):
       
 25406         (JSC::JSValue::operator bool):
       
 25407         (JSC::JSValue::operator==):
       
 25408         (JSC::JSValue::operator!=):
       
 25409         (JSC::JSValue::isUndefined):
       
 25410         (JSC::JSValue::isNull):
       
 25411         (JSC::JSValue::isUndefinedOrNull):
       
 25412         (JSC::JSValue::isCell):
       
 25413         (JSC::JSValue::isInt32):
       
 25414         (JSC::JSValue::isUInt32):
       
 25415         (JSC::JSValue::isDouble):
       
 25416         (JSC::JSValue::isTrue):
       
 25417         (JSC::JSValue::isFalse):
       
 25418         (JSC::JSValue::tag):
       
 25419         (JSC::JSValue::asInt32):
       
 25420         (JSC::JSValue::asUInt32):
       
 25421         (JSC::JSValue::asDouble):
       
 25422         (JSC::JSValue::asCell):
       
 25423         (JSC::JSValue::isNumber):
       
 25424         (JSC::JSValue::isBoolean):
       
 25425         (JSC::JSValue::getBoolean):
       
 25426         (JSC::JSValue::uncheckedGetNumber):
       
 25427         (JSC::JSValue::toJSNumber):
       
 25428         (JSC::JSValue::getNumber):
       
 25429         (JSC::JSValue::toInt32):
       
 25430         (JSC::JSValue::toUInt32):
       
 25431         * runtime/Operations.h:
       
 25432         (JSC::JSValue::equal):
       
 25433         (JSC::JSValue::equalSlowCaseInline):
       
 25434         (JSC::JSValue::strictEqual):
       
 25435         (JSC::JSValue::strictEqualSlowCaseInline):
       
 25436         (JSC::jsLess):
       
 25437         (JSC::jsLessEq):
       
 25438         (JSC::jsAdd):
       
 25439         * runtime/PropertySlot.h:
       
 25440         * runtime/StringPrototype.cpp:
       
 25441         (JSC::stringProtoFuncCharAt):
       
 25442         (JSC::stringProtoFuncCharCodeAt):
       
 25443         (JSC::stringProtoFuncIndexOf):
       
 25444         * wtf/Platform.h:
       
 25445 
       
 25446 === Start merge of nitro-extreme branch 2009-07-30 ===
       
 25447 
       
 25448 2009-07-29  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 25449 
       
 25450         Reviewed by George Staikos.
       
 25451 
       
 25452         Resolve class/struct mixup in forward declarations
       
 25453         https://bugs.webkit.org/show_bug.cgi?id=27708
       
 25454 
       
 25455         * API/JSClassRef.h:
       
 25456         * bytecode/SamplingTool.h:
       
 25457         * interpreter/Interpreter.h:
       
 25458         * jit/JIT.h:
       
 25459         * profiler/ProfileGenerator.h:
       
 25460         * profiler/Profiler.h:
       
 25461         * runtime/ClassInfo.h:
       
 25462         * runtime/ExceptionHelpers.h:
       
 25463         * runtime/JSByteArray.h:
       
 25464         * runtime/JSCell.h:
       
 25465         * runtime/JSFunction.h:
       
 25466         * runtime/JSGlobalData.h:
       
 25467         * runtime/JSObject.h:
       
 25468         * runtime/JSString.h:
       
 25469 
       
 25470 2009-07-28  Ada Chan  <adachan@apple.com>        
       
 25471 
       
 25472         Reviewed by Darin Adler.
       
 25473 
       
 25474         https://bugs.webkit.org/show_bug.cgi?id=27236
       
 25475         - Implement TCMalloc_SystemRelease and TCMalloc_SystemCommit for Windows.
       
 25476         - Use a background thread to periodically scavenge memory to release back to the system.
       
 25477 
       
 25478         * wtf/FastMalloc.cpp:
       
 25479         (WTF::TCMalloc_PageHeap::init):
       
 25480         (WTF::TCMalloc_PageHeap::runScavengerThread):
       
 25481         (WTF::TCMalloc_PageHeap::scavenge):
       
 25482         (WTF::TCMalloc_PageHeap::shouldContinueScavenging):
       
 25483         (WTF::TCMalloc_PageHeap::New):
       
 25484         (WTF::TCMalloc_PageHeap::AllocLarge):
       
 25485         (WTF::TCMalloc_PageHeap::Delete):
       
 25486         (WTF::TCMalloc_PageHeap::GrowHeap):
       
 25487         (WTF::sleep):
       
 25488         (WTF::TCMalloc_PageHeap::scavengerThread):
       
 25489         * wtf/TCSystemAlloc.cpp:
       
 25490         (TCMalloc_SystemRelease):
       
 25491         (TCMalloc_SystemCommit):
       
 25492         * wtf/TCSystemAlloc.h:
       
 25493 
       
 25494 2009-07-28  Xan Lopez  <xlopez@igalia.com>
       
 25495 
       
 25496         Add new files, fixes distcheck.
       
 25497 
       
 25498         * GNUmakefile.am:
       
 25499 
       
 25500 2009-07-28  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
       
 25501 
       
 25502         Reviewed by Simon Hausmann.
       
 25503 
       
 25504         [Qt] Determining whether to use JIT or interpreter
       
 25505         moved from JavaScriptCore.pri to Platform.h
       
 25506 
       
 25507         * JavaScriptCore.pri:
       
 25508         * wtf/Platform.h:
       
 25509 
       
 25510 2009-07-27  Brian Weinstein  <bweinstein@apple.com>
       
 25511 
       
 25512         Fix of misuse of sort command.
       
 25513 
       
 25514         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 25515         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 25516 
       
 25517 2009-07-27  Brian Weinstein  <bweinstein@apple.com>
       
 25518 
       
 25519         Build fix for Windows.
       
 25520 
       
 25521         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 25522         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 25523 
       
 25524 2009-07-27  Gavin Barraclough  <barraclough@apple.com>
       
 25525 
       
 25526         Rubber stamped by Oliver Hunt.
       
 25527 
       
 25528         Fix tyop in JIT, renamed preverveReturnAddressAfterCall -> preserveReturnAddressAfterCall.
       
 25529 
       
 25530         * jit/JIT.cpp:
       
 25531         (JSC::JIT::privateCompile):
       
 25532         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 25533         * jit/JIT.h:
       
 25534         * jit/JITInlineMethods.h:
       
 25535         (JSC::JIT::preserveReturnAddressAfterCall):
       
 25536         * jit/JITPropertyAccess.cpp:
       
 25537         (JSC::JIT::privateCompilePutByIdTransition):
       
 25538 
       
 25539 2009-07-27  Alexey Proskuryakov  <ap@webkit.org>
       
 25540 
       
 25541         Gtk build fix.
       
 25542 
       
 25543         * runtime/JSLock.cpp: (JSC::JSLock::JSLock): Fix "no threading" case.
       
 25544 
       
 25545 2009-07-27  Alexey Proskuryakov  <ap@webkit.org>
       
 25546 
       
 25547         Release build fix.
       
 25548 
       
 25549         * runtime/JSLock.h: (JSC::JSLock::~JSLock):
       
 25550 
       
 25551 2009-07-27  Alexey Proskuryakov  <ap@webkit.org>
       
 25552 
       
 25553         Reviewed by Darin Adler.
       
 25554 
       
 25555         https://bugs.webkit.org/show_bug.cgi?id=27735
       
 25556         Give a helpful name to JSLock constructor argument
       
 25557 
       
 25558         * API/JSBase.cpp:
       
 25559         (JSGarbageCollect):
       
 25560         * API/JSContextRef.cpp:
       
 25561         * API/JSObjectRef.cpp:
       
 25562         (JSPropertyNameArrayRelease):
       
 25563         (JSPropertyNameAccumulatorAddName):
       
 25564         * JavaScriptCore.exp:
       
 25565         * jsc.cpp:
       
 25566         (functionGC):
       
 25567         (cleanupGlobalData):
       
 25568         (jscmain):
       
 25569         * runtime/Collector.cpp:
       
 25570         (JSC::Heap::destroy):
       
 25571         * runtime/JSLock.cpp:
       
 25572         (JSC::JSLock::JSLock):
       
 25573         (JSC::JSLock::lock):
       
 25574         (JSC::JSLock::unlock):
       
 25575         (JSC::JSLock::DropAllLocks::DropAllLocks):
       
 25576         (JSC::JSLock::DropAllLocks::~DropAllLocks):
       
 25577         * runtime/JSLock.h:
       
 25578         (JSC::):
       
 25579         (JSC::JSLock::JSLock):
       
 25580         (JSC::JSLock::~JSLock):
       
 25581 
       
 25582 2009-07-25  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 25583 
       
 25584         Reviewed by Eric Seidel.
       
 25585 
       
 25586         Allow custom memory allocation control for OpaqueJSPropertyNameArray struct
       
 25587         https://bugs.webkit.org/show_bug.cgi?id=27342
       
 25588 
       
 25589         Inherits OpaqueJSPropertyNameArray struct from FastAllocBase because it has been
       
 25590         instantiated by 'new' JavaScriptCore/API/JSObjectRef.cpp:473.
       
 25591 
       
 25592         * API/JSObjectRef.cpp:
       
 25593 
       
 25594 2009-07-24  Ada Chan  <adachan@apple.com>
       
 25595 
       
 25596         In preparation for https://bugs.webkit.org/show_bug.cgi?id=27236:
       
 25597         Remove TCMALLOC_TRACK_DECOMMITED_SPANS.  We'll always track decommitted spans.
       
 25598         We have tested this and show it has little impact on performance.
       
 25599 
       
 25600         Reviewed by Mark Rowe.
       
 25601 
       
 25602         * wtf/FastMalloc.cpp:
       
 25603         (WTF::TCMalloc_PageHeap::New):
       
 25604         (WTF::TCMalloc_PageHeap::AllocLarge):
       
 25605         (WTF::propagateDecommittedState):
       
 25606         (WTF::mergeDecommittedStates):
       
 25607         (WTF::TCMalloc_PageHeap::Delete):
       
 25608         (WTF::TCMalloc_PageHeap::IncrementalScavenge):
       
 25609 
       
 25610 2009-07-24  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
       
 25611 
       
 25612         Reviewed by Darin Adler and Adam Barth.
       
 25613 
       
 25614         Build fix for x86 platforms.
       
 25615         https://bugs.webkit.org/show_bug.cgi?id=27602
       
 25616 
       
 25617         * jit/JIT.cpp:
       
 25618 
       
 25619 2009-07-23  Kevin Ollivier  <kevino@theolliviers.com>
       
 25620 
       
 25621         wx build fix, adding missing header.
       
 25622 
       
 25623         * jit/JIT.cpp:
       
 25624 
       
 25625 2009-07-22  Yong Li  <yong.li@torchmobile.com>
       
 25626 
       
 25627         Reviewed by George Staikos.
       
 25628 
       
 25629         Add wince specific memory files into wtf/wince
       
 25630         https://bugs.webkit.org/show_bug.cgi?id=27550
       
 25631 
       
 25632         * wtf/wince/FastMallocWince.h: Added.
       
 25633         * wtf/wince/MemoryManager.cpp: Added.
       
 25634         * wtf/wince/MemoryManager.h: Added.
       
 25635 
       
 25636 2009-07-23  Norbert Leser  <norbert.leser@nokia.com>
       
 25637 
       
 25638         Reviewed by Simon Hausmann.
       
 25639 
       
 25640         Fix for missing mmap features in Symbian
       
 25641         https://bugs.webkit.org/show_bug.cgi?id=24540
       
 25642 
       
 25643         Fix, conditionally for PLATFORM(SYMBIAN), as an alternative 
       
 25644         to missing support for the MAP_ANON property flag in mmap. 
       
 25645         It utilizes Symbian specific memory allocation features.
       
 25646 
       
 25647         * runtime/Collector.cpp
       
 25648 
       
 25649 2009-07-22  Gavin Barraclough  <barraclough@apple.com>
       
 25650 
       
 25651         Reviewed by Sam Weinig.
       
 25652 
       
 25653         With ENABLE(ASSEMBLER_WX_EXCLUSIVE), only change permissions once per repatch event.
       
 25654         ( https://bugs.webkit.org/show_bug.cgi?id=27564 )
       
 25655 
       
 25656         Currently we change permissions forwards and backwards for each instruction modified,
       
 25657         instead we should only change permissions once per complete repatching event.
       
 25658 
       
 25659         2.5% progression running with ENABLE(ASSEMBLER_WX_EXCLUSIVE) enabled,
       
 25660         which recoups 1/3 of the penalty of running with this mode enabled.
       
 25661 
       
 25662         * assembler/ARMAssembler.cpp:
       
 25663         (JSC::ARMAssembler::linkBranch):
       
 25664             - Replace usage of MakeWritable with cacheFlush.
       
 25665         
       
 25666         * assembler/ARMAssembler.h:
       
 25667         (JSC::ARMAssembler::patchPointerInternal):
       
 25668         (JSC::ARMAssembler::repatchLoadPtrToLEA):
       
 25669             - Replace usage of MakeWritable with cacheFlush.
       
 25670 
       
 25671         * assembler/ARMv7Assembler.h:
       
 25672         (JSC::ARMv7Assembler::relinkJump):
       
 25673         (JSC::ARMv7Assembler::relinkCall):
       
 25674         (JSC::ARMv7Assembler::repatchInt32):
       
 25675         (JSC::ARMv7Assembler::repatchPointer):
       
 25676         (JSC::ARMv7Assembler::repatchLoadPtrToLEA):
       
 25677         (JSC::ARMv7Assembler::setInt32):
       
 25678             - Replace usage of MakeWritable with cacheFlush.
       
 25679 
       
 25680         * assembler/LinkBuffer.h:
       
 25681         (JSC::LinkBuffer::performFinalization):
       
 25682             - Make explicit call to cacheFlush.
       
 25683 
       
 25684         * assembler/MacroAssemblerCodeRef.h:
       
 25685         (JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
       
 25686             - Make size always available.
       
 25687 
       
 25688         * assembler/RepatchBuffer.h:
       
 25689         (JSC::RepatchBuffer::RepatchBuffer):
       
 25690         (JSC::RepatchBuffer::~RepatchBuffer):
       
 25691             - Add calls to MakeWritable & makeExecutable.
       
 25692 
       
 25693         * assembler/X86Assembler.h:
       
 25694         (JSC::X86Assembler::relinkJump):
       
 25695         (JSC::X86Assembler::relinkCall):
       
 25696         (JSC::X86Assembler::repatchInt32):
       
 25697         (JSC::X86Assembler::repatchPointer):
       
 25698         (JSC::X86Assembler::repatchLoadPtrToLEA):
       
 25699             - Remove usage of MakeWritable.
       
 25700 
       
 25701         * bytecode/CodeBlock.h:
       
 25702         (JSC::CodeBlock::getJITCode):
       
 25703             - Provide access to CodeBlock's JITCode.
       
 25704 
       
 25705         * jit/ExecutableAllocator.h:
       
 25706         (JSC::ExecutableAllocator::makeExecutable):
       
 25707         (JSC::ExecutableAllocator::cacheFlush):
       
 25708             - Remove MakeWritable, make cacheFlush public.
       
 25709 
       
 25710         * jit/JIT.cpp:
       
 25711         (JSC::ctiPatchNearCallByReturnAddress):
       
 25712         (JSC::ctiPatchCallByReturnAddress):
       
 25713         (JSC::JIT::privateCompile):
       
 25714         (JSC::JIT::unlinkCall):
       
 25715         (JSC::JIT::linkCall):
       
 25716             - Add CodeBlock argument to RepatchBuffer.
       
 25717 
       
 25718         * jit/JIT.h:
       
 25719             - Pass CodeBlock argument for use by RepatchBuffer.
       
 25720 
       
 25721         * jit/JITCode.h:
       
 25722         (JSC::JITCode::start):
       
 25723         (JSC::JITCode::size):
       
 25724             - Provide access to code start & size.
       
 25725 
       
 25726         * jit/JITPropertyAccess.cpp:
       
 25727         (JSC::JIT::privateCompilePutByIdTransition):
       
 25728         (JSC::JIT::patchGetByIdSelf):
       
 25729         (JSC::JIT::patchMethodCallProto):
       
 25730         (JSC::JIT::patchPutByIdReplace):
       
 25731         (JSC::JIT::privateCompilePatchGetArrayLength):
       
 25732         (JSC::JIT::privateCompileGetByIdProto):
       
 25733         (JSC::JIT::privateCompileGetByIdSelfList):
       
 25734         (JSC::JIT::privateCompileGetByIdProtoList):
       
 25735         (JSC::JIT::privateCompileGetByIdChainList):
       
 25736         (JSC::JIT::privateCompileGetByIdChain):
       
 25737             - Add CodeBlock argument to RepatchBuffer.
       
 25738 
       
 25739         * jit/JITStubs.cpp:
       
 25740         (JSC::JITThunks::tryCachePutByID):
       
 25741         (JSC::JITThunks::tryCacheGetByID):
       
 25742         (JSC::JITStubs::DEFINE_STUB_FUNCTION):
       
 25743             - Pass CodeBlock argument for use by RepatchBuffer.
       
 25744 
       
 25745 2009-07-21  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
       
 25746 
       
 25747         Reviewed by Gavin Barraclough.
       
 25748 
       
 25749         Cache not only the structure of the method, but the
       
 25750         structure of its prototype as well.
       
 25751         https://bugs.webkit.org/show_bug.cgi?id=27077
       
 25752 
       
 25753         * bytecode/CodeBlock.cpp:
       
 25754         (JSC::CodeBlock::~CodeBlock):
       
 25755         * bytecode/CodeBlock.h:
       
 25756         (JSC::MethodCallLinkInfo::MethodCallLinkInfo):
       
 25757         * jit/JITPropertyAccess.cpp:
       
 25758         (JSC::JIT::patchMethodCallProto):
       
 25759 
       
 25760 2009-07-21  Gavin Barraclough  <barraclough@apple.com>
       
 25761 
       
 25762         Reviewed by Sam Weinig.
       
 25763 
       
 25764         Move call linking / repatching down from AbstractMacroAssembler into MacroAssemblerARCH classes.
       
 25765         ( https://bugs.webkit.org/show_bug.cgi?id=27527 )
       
 25766 
       
 25767         This allows the implementation to be defined per architecture.  Specifically this addresses the
       
 25768         fact that x86-64 MacroAssembler implements far calls as a load to register, followed by a call
       
 25769         to register.  Patching the call actually requires the pointer load to be patched, rather than
       
 25770         the call to be patched.  This is implementation detail specific to MacroAssemblerX86_64, and as
       
 25771         such is best handled there.
       
 25772 
       
 25773         * assembler/AbstractMacroAssembler.h:
       
 25774         * assembler/MacroAssemblerARM.h:
       
 25775         (JSC::MacroAssemblerARM::linkCall):
       
 25776         (JSC::MacroAssemblerARM::repatchCall):
       
 25777         * assembler/MacroAssemblerARMv7.h:
       
 25778         (JSC::MacroAssemblerARMv7::linkCall):
       
 25779         (JSC::MacroAssemblerARMv7::repatchCall):
       
 25780         * assembler/MacroAssemblerX86.h:
       
 25781         (JSC::MacroAssemblerX86::linkCall):
       
 25782         (JSC::MacroAssemblerX86::repatchCall):
       
 25783         * assembler/MacroAssemblerX86_64.h:
       
 25784         (JSC::MacroAssemblerX86_64::linkCall):
       
 25785         (JSC::MacroAssemblerX86_64::repatchCall):
       
 25786 
       
 25787 2009-07-21  Adam Treat  <adam.treat@torchmobile.com>
       
 25788 
       
 25789         Reviewed by George Staikos.
       
 25790 
       
 25791         Every wtf file includes other wtf files with <> style includes
       
 25792         except this one.  Fix the exception.
       
 25793 
       
 25794         * wtf/ByteArray.h:
       
 25795 
       
 25796 2009-07-21  Gavin Barraclough  <barraclough@apple.com>
       
 25797 
       
 25798         Reviewed by Oliver Hunt.
       
 25799 
       
 25800         Move LinkBuffer/RepatchBuffer out of AbstractMacroAssembler.
       
 25801         ( https://bugs.webkit.org/show_bug.cgi?id=27485 )
       
 25802 
       
 25803         This change is the first step in a process to move code that should be in
       
 25804         the architecture-specific MacroAssembler classes up out of Assmbler and
       
 25805         AbstractMacroAssembler.
       
 25806 
       
 25807         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 25808             - added new files
       
 25809         
       
 25810         * assembler/ARMAssembler.h:
       
 25811         (JSC::ARMAssembler::linkPointer):
       
 25812             - rename patchPointer to bring it in line with the current link/repatch naming scheme
       
 25813         
       
 25814         * assembler/ARMv7Assembler.h:
       
 25815         (JSC::ARMv7Assembler::linkCall):
       
 25816         (JSC::ARMv7Assembler::linkPointer):
       
 25817         (JSC::ARMv7Assembler::relinkCall):
       
 25818         (JSC::ARMv7Assembler::repatchInt32):
       
 25819         (JSC::ARMv7Assembler::repatchPointer):
       
 25820         (JSC::ARMv7Assembler::setInt32):
       
 25821         (JSC::ARMv7Assembler::setPointer):
       
 25822             - rename patchPointer to bring it in line with the current link/repatch naming scheme
       
 25823 
       
 25824         * assembler/AbstractMacroAssembler.h:
       
 25825         (JSC::AbstractMacroAssembler::linkJump):
       
 25826         (JSC::AbstractMacroAssembler::linkCall):
       
 25827         (JSC::AbstractMacroAssembler::linkPointer):
       
 25828         (JSC::AbstractMacroAssembler::getLinkerAddress):
       
 25829         (JSC::AbstractMacroAssembler::getLinkerCallReturnOffset):
       
 25830         (JSC::AbstractMacroAssembler::repatchJump):
       
 25831         (JSC::AbstractMacroAssembler::repatchCall):
       
 25832         (JSC::AbstractMacroAssembler::repatchNearCall):
       
 25833         (JSC::AbstractMacroAssembler::repatchInt32):
       
 25834         (JSC::AbstractMacroAssembler::repatchPointer):
       
 25835         (JSC::AbstractMacroAssembler::repatchLoadPtrToLEA):
       
 25836             - remove the LinkBuffer/RepatchBuffer classes, but leave a set of (private, friended) methods to interface to the Assembler
       
 25837 
       
 25838         * assembler/LinkBuffer.h: Added.
       
 25839         (JSC::LinkBuffer::LinkBuffer):
       
 25840         (JSC::LinkBuffer::~LinkBuffer):
       
 25841         (JSC::LinkBuffer::link):
       
 25842         (JSC::LinkBuffer::patch):
       
 25843         (JSC::LinkBuffer::locationOf):
       
 25844         (JSC::LinkBuffer::locationOfNearCall):
       
 25845         (JSC::LinkBuffer::returnAddressOffset):
       
 25846         (JSC::LinkBuffer::finalizeCode):
       
 25847         (JSC::LinkBuffer::finalizeCodeAddendum):
       
 25848         (JSC::LinkBuffer::code):
       
 25849         (JSC::LinkBuffer::performFinalization):
       
 25850             - new file containing the LinkBuffer class, previously a member of AbstractMacroAssembler
       
 25851 
       
 25852         * assembler/RepatchBuffer.h: Added.
       
 25853         (JSC::RepatchBuffer::RepatchBuffer):
       
 25854         (JSC::RepatchBuffer::relink):
       
 25855         (JSC::RepatchBuffer::repatch):
       
 25856         (JSC::RepatchBuffer::repatchLoadPtrToLEA):
       
 25857         (JSC::RepatchBuffer::relinkCallerToTrampoline):
       
 25858         (JSC::RepatchBuffer::relinkCallerToFunction):
       
 25859         (JSC::RepatchBuffer::relinkNearCallerToTrampoline):
       
 25860             - new file containing the RepatchBuffer class, previously a member of AbstractMacroAssembler
       
 25861 
       
 25862         * assembler/X86Assembler.h:
       
 25863         (JSC::X86Assembler::linkJump):
       
 25864         (JSC::X86Assembler::linkCall):
       
 25865         (JSC::X86Assembler::linkPointerForCall):
       
 25866         (JSC::X86Assembler::linkPointer):
       
 25867         (JSC::X86Assembler::relinkJump):
       
 25868         (JSC::X86Assembler::relinkCall):
       
 25869         (JSC::X86Assembler::repatchInt32):
       
 25870         (JSC::X86Assembler::repatchPointer):
       
 25871         (JSC::X86Assembler::setPointer):
       
 25872         (JSC::X86Assembler::setInt32):
       
 25873         (JSC::X86Assembler::setRel32):
       
 25874             - rename patchPointer to bring it in line with the current link/repatch naming scheme
       
 25875 
       
 25876         * jit/JIT.cpp:
       
 25877         (JSC::ctiPatchNearCallByReturnAddress):
       
 25878         (JSC::ctiPatchCallByReturnAddress):
       
 25879             - include new headers
       
 25880             - remove MacroAssembler:: specification from RepatchBuffer usage
       
 25881 
       
 25882         * jit/JITPropertyAccess.cpp:
       
 25883         * yarr/RegexJIT.cpp:
       
 25884             - include new headers
       
 25885 
       
 25886 2009-07-21  Robert Agoston  <Agoston.Robert@stud.u-szeged.hu>
       
 25887 
       
 25888         Reviewed by David Levin.
       
 25889 
       
 25890         Fixed #undef typo.
       
 25891         https://bugs.webkit.org/show_bug.cgi?id=27506
       
 25892 
       
 25893         * bytecode/Opcode.h:
       
 25894 
       
 25895 2009-07-21  Adam Roben  <aroben@apple.com>
       
 25896 
       
 25897         Roll out r46153, r46154, and r46155
       
 25898 
       
 25899         These changes were causing build failures and assertion failures on
       
 25900         Windows.
       
 25901 
       
 25902         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 25903         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 25904         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 25905         * runtime/JSArray.cpp:
       
 25906         * runtime/StringPrototype.cpp:
       
 25907         * runtime/UString.cpp:
       
 25908         * runtime/UString.h:
       
 25909         * wtf/FastMalloc.cpp:
       
 25910         * wtf/FastMalloc.h:
       
 25911         * wtf/Platform.h:
       
 25912         * wtf/PossiblyNull.h: Removed.
       
 25913 
       
 25914 2009-07-21  Roland Steiner  <rolandsteiner@google.com>
       
 25915 
       
 25916         Reviewed by David Levin.
       
 25917 
       
 25918         Add ENABLE_RUBY to list of build options
       
 25919         https://bugs.webkit.org/show_bug.cgi?id=27324
       
 25920 
       
 25921         * Configurations/FeatureDefines.xcconfig: Added flag ENABLE_RUBY.
       
 25922 
       
 25923 2009-07-20  Oliver Hunt  <oliver@apple.com>
       
 25924 
       
 25925         Build fix attempt #2
       
 25926 
       
 25927         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 25928         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 25929 
       
 25930 2009-07-20  Oliver Hunt  <oliver@apple.com>
       
 25931 
       
 25932         Build fix attempt #1
       
 25933 
       
 25934         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 25935         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 25936 
       
 25937 2009-07-20  Oliver Hunt  <oliver@apple.com>
       
 25938 
       
 25939         Reviewed by Gavin Barraclough.
       
 25940 
       
 25941         Make it harder to misuse try* allocation routines
       
 25942         https://bugs.webkit.org/show_bug.cgi?id=27469
       
 25943 
       
 25944         Jump through a few hoops to make it much harder to accidentally
       
 25945         miss null-checking of values returned by the try-* allocation
       
 25946         routines.
       
 25947 
       
 25948         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 25949         * runtime/JSArray.cpp:
       
 25950         (JSC::JSArray::putSlowCase):
       
 25951         (JSC::JSArray::increaseVectorLength):
       
 25952         * runtime/StringPrototype.cpp:
       
 25953         (JSC::stringProtoFuncFontsize):
       
 25954         (JSC::stringProtoFuncLink):
       
 25955         * runtime/UString.cpp:
       
 25956         (JSC::allocChars):
       
 25957         (JSC::reallocChars):
       
 25958         (JSC::expandCapacity):
       
 25959         (JSC::UString::Rep::reserveCapacity):
       
 25960         (JSC::UString::expandPreCapacity):
       
 25961         (JSC::createRep):
       
 25962         (JSC::concatenate):
       
 25963         (JSC::UString::spliceSubstringsWithSeparators):
       
 25964         (JSC::UString::replaceRange):
       
 25965         (JSC::UString::append):
       
 25966         (JSC::UString::operator=):
       
 25967         * runtime/UString.h:
       
 25968         (JSC::UString::Rep::createEmptyBuffer):
       
 25969         * wtf/FastMalloc.cpp:
       
 25970         (WTF::tryFastZeroedMalloc):
       
 25971         (WTF::tryFastMalloc):
       
 25972         (WTF::tryFastCalloc):
       
 25973         (WTF::tryFastRealloc):
       
 25974         (WTF::TCMallocStats::tryFastMalloc):
       
 25975         (WTF::TCMallocStats::tryFastCalloc):
       
 25976         (WTF::TCMallocStats::tryFastRealloc):
       
 25977         * wtf/FastMalloc.h:
       
 25978         (WTF::TryMallocReturnValue::TryMallocReturnValue):
       
 25979         (WTF::TryMallocReturnValue::~TryMallocReturnValue):
       
 25980         (WTF::TryMallocReturnValue::operator Maybe<T>):
       
 25981         (WTF::TryMallocReturnValue::getValue):
       
 25982         * wtf/PossiblyNull.h:
       
 25983         (WTF::PossiblyNull::PossiblyNull):
       
 25984         (WTF::PossiblyNull::~PossiblyNull):
       
 25985         (WTF::PossiblyNull::getValue):
       
 25986         * wtf/Platform.h:
       
 25987 
       
 25988 2009-07-20  Gavin Barraclough  <barraclough@apple.com>
       
 25989 
       
 25990         RS Oliver Hunt.
       
 25991 
       
 25992         Add ARM assembler files to xcodeproj, for convenience editing.
       
 25993 
       
 25994         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 25995 
       
 25996 2009-07-20  Jessie Berlin  <jberlin@apple.com>
       
 25997 
       
 25998         Reviewed by David Levin.
       
 25999 
       
 26000         Fix an incorrect assertion in Vector::remove.
       
 26001         
       
 26002         https://bugs.webkit.org/show_bug.cgi?id=27477
       
 26003 
       
 26004         * wtf/Vector.h:
       
 26005         (WTF::::remove):
       
 26006         Assert that the position at which to start removing elements + the
       
 26007         length (the number of elements to remove) is less than or equal to the
       
 26008         size of the entire Vector.
       
 26009 
       
 26010 2009-07-20  Peter Kasting  <pkasting@google.com>
       
 26011 
       
 26012         Reviewed by Mark Rowe.
       
 26013 
       
 26014         https://bugs.webkit.org/show_bug.cgi?id=27468
       
 26015         Back out r46060, which caused problems for some Apple developers.
       
 26016 
       
 26017         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
       
 26018         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
       
 26019         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
       
 26020         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
       
 26021         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
       
 26022 
       
 26023 2009-07-20  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 26024 
       
 26025         Reviewed by Oliver Hunt.
       
 26026 
       
 26027         Allow custom memory allocation control in NewThreadContext
       
 26028         https://bugs.webkit.org/show_bug.cgi?id=27338
       
 26029 
       
 26030         Inherits NewThreadContext struct from FastAllocBase because it
       
 26031         has been instantiated by 'new' JavaScriptCore/wtf/Threading.cpp:76.
       
 26032 
       
 26033         * wtf/Threading.cpp:
       
 26034 
       
 26035 2009-07-20  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 26036 
       
 26037         Reviewed by Oliver Hunt.
       
 26038 
       
 26039         Allow custom memory allocation control in JavaScriptCore's JSClassRef.h
       
 26040         https://bugs.webkit.org/show_bug.cgi?id=27340
       
 26041 
       
 26042         Inherit StaticValueEntry and StaticFunctionEntry struct from FastAllocBase because these
       
 26043         have been instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:153
       
 26044         and in JavaScriptCore/API/JSClassRef.cpp:166.
       
 26045 
       
 26046         * API/JSClassRef.h:
       
 26047 
       
 26048 2009-07-20  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 26049 
       
 26050         Reviewed by Darin Adler.
       
 26051 
       
 26052         Allow custom memory allocation control in JavaScriptCore's RegexPattern.h
       
 26053         https://bugs.webkit.org/show_bug.cgi?id=27343
       
 26054 
       
 26055         Inherits RegexPattern.h's structs (which have been instantiated by operator new) from FastAllocBase:
       
 26056 
       
 26057         CharacterClass (new call: JavaScriptCore/yarr/RegexCompiler.cpp:144)
       
 26058         PatternAlternative (new call: JavaScriptCore/yarr/RegexPattern.h:221) 
       
 26059         PatternDisjunction (new call: JavaScriptCore/yarr/RegexCompiler.cpp:446)
       
 26060 
       
 26061         * yarr/RegexPattern.h:
       
 26062 
       
 26063 2009-07-20  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 26064 
       
 26065         Reviewed by Darin Adler.
       
 26066 
       
 26067         Allow custom memory allocation control for JavaScriptCore's MatchFrame struct
       
 26068         https://bugs.webkit.org/show_bug.cgi?id=27344
       
 26069 
       
 26070         Inherits MatchFrame struct from FastAllocBase because it has
       
 26071         been instantiated by 'new' JavaScriptCore/pcre/pcre_exec.cpp:359.
       
 26072 
       
 26073         * pcre/pcre_exec.cpp:
       
 26074 
       
 26075 2009-07-20  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 26076 
       
 26077         Reviewed by Holger Freyther.
       
 26078 
       
 26079         Remove some outdated S60 platform specific code
       
 26080         https://bugs.webkit.org/show_bug.cgi?id=27423
       
 26081 
       
 26082         * wtf/Platform.h:
       
 26083 
       
 26084 2009-07-20  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
       
 26085 
       
 26086         Reviewed by Simon Hausmann.
       
 26087 
       
 26088         Qt build fix with MSVC and MinGW.
       
 26089 
       
 26090         * jsc.pro: Make sure jsc is a console application, and turn off
       
 26091         exceptions and stl support to fix the build.
       
 26092 
       
 26093 2009-07-20  Xan Lopez  <xlopez@igalia.com>
       
 26094 
       
 26095         Reviewed by Gustavo Noronha.
       
 26096 
       
 26097         Do not use C++-style comments in preprocessor directives.
       
 26098 
       
 26099         GCC does not like this in some configurations, using C-style
       
 26100         comments is safer.
       
 26101 
       
 26102         * wtf/Platform.h:
       
 26103 
       
 26104 2009-07-17  Peter Kasting  <pkasting@google.com>
       
 26105 
       
 26106         Reviewed by Steve Falkenburg.
       
 26107 
       
 26108         https://bugs.webkit.org/show_bug.cgi?id=27323
       
 26109         Only add Cygwin to the path when it isn't already there.  This avoids
       
 26110         causing problems for people who purposefully have non-Cygwin versions of
       
 26111         executables like svn in front of the Cygwin ones in their paths.
       
 26112 
       
 26113         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
       
 26114         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
       
 26115         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
       
 26116         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
       
 26117         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
       
 26118 
       
 26119 2009-07-17  Gabor Loki  <loki@inf.u-szeged.hu>
       
 26120 
       
 26121         Reviewed by Gavin Barraclough.
       
 26122 
       
 26123         Add YARR support for generic ARM platforms (disabled by default).
       
 26124         https://bugs.webkit.org/show_bug.cgi?id=24986
       
 26125 
       
 26126         Add generic ARM port for MacroAssembler. It supports the whole
       
 26127         MacroAssembler functionality except floating point.
       
 26128 
       
 26129         The class JmpSrc is extended with a flag which enables to patch
       
 26130         the jump destination offset during execution. This feature is
       
 26131         required for generic ARM port.
       
 26132 
       
 26133         Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
       
 26134         Signed off by Gabor Loki <loki@inf.u-szeged.hu>
       
 26135 
       
 26136         * JavaScriptCore.pri:
       
 26137         * assembler/ARMAssembler.cpp: Added.
       
 26138         (JSC::ARMAssembler::getLdrImmAddress):
       
 26139         (JSC::ARMAssembler::linkBranch):
       
 26140         (JSC::ARMAssembler::patchConstantPoolLoad):
       
 26141         (JSC::ARMAssembler::getOp2):
       
 26142         (JSC::ARMAssembler::genInt):
       
 26143         (JSC::ARMAssembler::getImm):
       
 26144         (JSC::ARMAssembler::moveImm):
       
 26145         (JSC::ARMAssembler::dataTransfer32):
       
 26146         (JSC::ARMAssembler::baseIndexTransfer32):
       
 26147         (JSC::ARMAssembler::executableCopy):
       
 26148         * assembler/ARMAssembler.h: Added.
       
 26149         (JSC::ARM::):
       
 26150         (JSC::ARMAssembler::ARMAssembler):
       
 26151         (JSC::ARMAssembler::):
       
 26152         (JSC::ARMAssembler::JmpSrc::JmpSrc):
       
 26153         (JSC::ARMAssembler::JmpSrc::enableLatePatch):
       
 26154         (JSC::ARMAssembler::JmpDst::JmpDst):
       
 26155         (JSC::ARMAssembler::JmpDst::isUsed):
       
 26156         (JSC::ARMAssembler::JmpDst::used):
       
 26157         (JSC::ARMAssembler::emitInst):
       
 26158         (JSC::ARMAssembler::and_r):
       
 26159         (JSC::ARMAssembler::ands_r):
       
 26160         (JSC::ARMAssembler::eor_r):
       
 26161         (JSC::ARMAssembler::eors_r):
       
 26162         (JSC::ARMAssembler::sub_r):
       
 26163         (JSC::ARMAssembler::subs_r):
       
 26164         (JSC::ARMAssembler::rsb_r):
       
 26165         (JSC::ARMAssembler::rsbs_r):
       
 26166         (JSC::ARMAssembler::add_r):
       
 26167         (JSC::ARMAssembler::adds_r):
       
 26168         (JSC::ARMAssembler::adc_r):
       
 26169         (JSC::ARMAssembler::adcs_r):
       
 26170         (JSC::ARMAssembler::sbc_r):
       
 26171         (JSC::ARMAssembler::sbcs_r):
       
 26172         (JSC::ARMAssembler::rsc_r):
       
 26173         (JSC::ARMAssembler::rscs_r):
       
 26174         (JSC::ARMAssembler::tst_r):
       
 26175         (JSC::ARMAssembler::teq_r):
       
 26176         (JSC::ARMAssembler::cmp_r):
       
 26177         (JSC::ARMAssembler::orr_r):
       
 26178         (JSC::ARMAssembler::orrs_r):
       
 26179         (JSC::ARMAssembler::mov_r):
       
 26180         (JSC::ARMAssembler::movs_r):
       
 26181         (JSC::ARMAssembler::bic_r):
       
 26182         (JSC::ARMAssembler::bics_r):
       
 26183         (JSC::ARMAssembler::mvn_r):
       
 26184         (JSC::ARMAssembler::mvns_r):
       
 26185         (JSC::ARMAssembler::mul_r):
       
 26186         (JSC::ARMAssembler::muls_r):
       
 26187         (JSC::ARMAssembler::mull_r):
       
 26188         (JSC::ARMAssembler::ldr_imm):
       
 26189         (JSC::ARMAssembler::ldr_un_imm):
       
 26190         (JSC::ARMAssembler::dtr_u):
       
 26191         (JSC::ARMAssembler::dtr_ur):
       
 26192         (JSC::ARMAssembler::dtr_d):
       
 26193         (JSC::ARMAssembler::dtr_dr):
       
 26194         (JSC::ARMAssembler::ldrh_r):
       
 26195         (JSC::ARMAssembler::ldrh_d):
       
 26196         (JSC::ARMAssembler::ldrh_u):
       
 26197         (JSC::ARMAssembler::strh_r):
       
 26198         (JSC::ARMAssembler::push_r):
       
 26199         (JSC::ARMAssembler::pop_r):
       
 26200         (JSC::ARMAssembler::poke_r):
       
 26201         (JSC::ARMAssembler::peek_r):
       
 26202         (JSC::ARMAssembler::clz_r):
       
 26203         (JSC::ARMAssembler::bkpt):
       
 26204         (JSC::ARMAssembler::lsl):
       
 26205         (JSC::ARMAssembler::lsr):
       
 26206         (JSC::ARMAssembler::asr):
       
 26207         (JSC::ARMAssembler::lsl_r):
       
 26208         (JSC::ARMAssembler::lsr_r):
       
 26209         (JSC::ARMAssembler::asr_r):
       
 26210         (JSC::ARMAssembler::size):
       
 26211         (JSC::ARMAssembler::ensureSpace):
       
 26212         (JSC::ARMAssembler::label):
       
 26213         (JSC::ARMAssembler::align):
       
 26214         (JSC::ARMAssembler::jmp):
       
 26215         (JSC::ARMAssembler::patchPointerInternal):
       
 26216         (JSC::ARMAssembler::patchConstantPoolLoad):
       
 26217         (JSC::ARMAssembler::patchPointer):
       
 26218         (JSC::ARMAssembler::repatchInt32):
       
 26219         (JSC::ARMAssembler::repatchPointer):
       
 26220         (JSC::ARMAssembler::repatchLoadPtrToLEA):
       
 26221         (JSC::ARMAssembler::linkJump):
       
 26222         (JSC::ARMAssembler::relinkJump):
       
 26223         (JSC::ARMAssembler::linkCall):
       
 26224         (JSC::ARMAssembler::relinkCall):
       
 26225         (JSC::ARMAssembler::getRelocatedAddress):
       
 26226         (JSC::ARMAssembler::getDifferenceBetweenLabels):
       
 26227         (JSC::ARMAssembler::getCallReturnOffset):
       
 26228         (JSC::ARMAssembler::getOp2Byte):
       
 26229         (JSC::ARMAssembler::placeConstantPoolBarrier):
       
 26230         (JSC::ARMAssembler::RM):
       
 26231         (JSC::ARMAssembler::RS):
       
 26232         (JSC::ARMAssembler::RD):
       
 26233         (JSC::ARMAssembler::RN):
       
 26234         (JSC::ARMAssembler::getConditionalField):
       
 26235         * assembler/ARMv7Assembler.h:
       
 26236         (JSC::ARMv7Assembler::JmpSrc::enableLatePatch):
       
 26237         * assembler/AbstractMacroAssembler.h:
       
 26238         (JSC::AbstractMacroAssembler::Call::enableLatePatch):
       
 26239         (JSC::AbstractMacroAssembler::Jump::enableLatePatch):
       
 26240         * assembler/MacroAssembler.h:
       
 26241         * assembler/MacroAssemblerARM.h: Added.
       
 26242         (JSC::MacroAssemblerARM::):
       
 26243         (JSC::MacroAssemblerARM::add32):
       
 26244         (JSC::MacroAssemblerARM::and32):
       
 26245         (JSC::MacroAssemblerARM::lshift32):
       
 26246         (JSC::MacroAssemblerARM::mul32):
       
 26247         (JSC::MacroAssemblerARM::not32):
       
 26248         (JSC::MacroAssemblerARM::or32):
       
 26249         (JSC::MacroAssemblerARM::rshift32):
       
 26250         (JSC::MacroAssemblerARM::sub32):
       
 26251         (JSC::MacroAssemblerARM::xor32):
       
 26252         (JSC::MacroAssemblerARM::load32):
       
 26253         (JSC::MacroAssemblerARM::load32WithAddressOffsetPatch):
       
 26254         (JSC::MacroAssemblerARM::loadPtrWithPatchToLEA):
       
 26255         (JSC::MacroAssemblerARM::load16):
       
 26256         (JSC::MacroAssemblerARM::store32WithAddressOffsetPatch):
       
 26257         (JSC::MacroAssemblerARM::store32):
       
 26258         (JSC::MacroAssemblerARM::pop):
       
 26259         (JSC::MacroAssemblerARM::push):
       
 26260         (JSC::MacroAssemblerARM::move):
       
 26261         (JSC::MacroAssemblerARM::swap):
       
 26262         (JSC::MacroAssemblerARM::signExtend32ToPtr):
       
 26263         (JSC::MacroAssemblerARM::zeroExtend32ToPtr):
       
 26264         (JSC::MacroAssemblerARM::branch32):
       
 26265         (JSC::MacroAssemblerARM::branch16):
       
 26266         (JSC::MacroAssemblerARM::branchTest32):
       
 26267         (JSC::MacroAssemblerARM::jump):
       
 26268         (JSC::MacroAssemblerARM::branchAdd32):
       
 26269         (JSC::MacroAssemblerARM::mull32):
       
 26270         (JSC::MacroAssemblerARM::branchMul32):
       
 26271         (JSC::MacroAssemblerARM::branchSub32):
       
 26272         (JSC::MacroAssemblerARM::breakpoint):
       
 26273         (JSC::MacroAssemblerARM::nearCall):
       
 26274         (JSC::MacroAssemblerARM::call):
       
 26275         (JSC::MacroAssemblerARM::ret):
       
 26276         (JSC::MacroAssemblerARM::set32):
       
 26277         (JSC::MacroAssemblerARM::setTest32):
       
 26278         (JSC::MacroAssemblerARM::tailRecursiveCall):
       
 26279         (JSC::MacroAssemblerARM::makeTailRecursiveCall):
       
 26280         (JSC::MacroAssemblerARM::moveWithPatch):
       
 26281         (JSC::MacroAssemblerARM::branchPtrWithPatch):
       
 26282         (JSC::MacroAssemblerARM::storePtrWithPatch):
       
 26283         (JSC::MacroAssemblerARM::supportsFloatingPoint):
       
 26284         (JSC::MacroAssemblerARM::supportsFloatingPointTruncate):
       
 26285         (JSC::MacroAssemblerARM::loadDouble):
       
 26286         (JSC::MacroAssemblerARM::storeDouble):
       
 26287         (JSC::MacroAssemblerARM::addDouble):
       
 26288         (JSC::MacroAssemblerARM::subDouble):
       
 26289         (JSC::MacroAssemblerARM::mulDouble):
       
 26290         (JSC::MacroAssemblerARM::convertInt32ToDouble):
       
 26291         (JSC::MacroAssemblerARM::branchDouble):
       
 26292         (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32):
       
 26293         (JSC::MacroAssemblerARM::ARMCondition):
       
 26294         (JSC::MacroAssemblerARM::prepareCall):
       
 26295         (JSC::MacroAssemblerARM::call32):
       
 26296         * assembler/X86Assembler.h:
       
 26297         (JSC::X86Assembler::JmpSrc::enableLatePatch):
       
 26298         * jit/ExecutableAllocator.h:
       
 26299         (JSC::ExecutableAllocator::cacheFlush):
       
 26300         * wtf/Platform.h:
       
 26301         * yarr/RegexJIT.cpp:
       
 26302         (JSC::Yarr::RegexGenerator::generateEnter):
       
 26303         (JSC::Yarr::RegexGenerator::generateReturn):
       
 26304 
       
 26305 2009-07-17  Gabor Loki  <loki@inf.u-szeged.hu>
       
 26306 
       
 26307         Reviewed by Gavin Barraclough.
       
 26308 
       
 26309         Extend AssemblerBuffer with constant pool handling mechanism.
       
 26310         https://bugs.webkit.org/show_bug.cgi?id=24986
       
 26311 
       
 26312         Add a platform independed constant pool framework.
       
 26313         This pool can store 32 or 64 bits values which is enough to hold
       
 26314         any integer, pointer or double constant.
       
 26315 
       
 26316         * assembler/AssemblerBuffer.h:
       
 26317         (JSC::AssemblerBuffer::putIntUnchecked):
       
 26318         (JSC::AssemblerBuffer::putInt64Unchecked):
       
 26319         (JSC::AssemblerBuffer::append):
       
 26320         (JSC::AssemblerBuffer::grow):
       
 26321         * assembler/AssemblerBufferWithConstantPool.h: Added.
       
 26322         (JSC::):
       
 26323 
       
 26324 2009-07-17  Eric Roman  <eroman@chromium.org>
       
 26325 
       
 26326         Reviewed by Darin Adler.
       
 26327 
       
 26328         Build fix for non-Darwin.
       
 26329         Add a guard for inclusion of RetainPtr.h which includes CoreFoundation.h
       
 26330 
       
 26331         https://bugs.webkit.org/show_bug.cgi?id=27382
       
 26332 
       
 26333         * wtf/unicode/icu/CollatorICU.cpp:
       
 26334 
       
 26335 2009-07-17  Alexey Proskuryakov  <ap@webkit.org>
       
 26336 
       
 26337         Reviewed by John Sullivan.
       
 26338 
       
 26339         Get user default collation order via a CFLocale API when available.
       
 26340 
       
 26341         * wtf/unicode/icu/CollatorICU.cpp: (WTF::Collator::userDefault):
       
 26342 
       
 26343 2009-07-17  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 26344 
       
 26345         Reviewed by Simon Hausmann.
       
 26346 
       
 26347         [Qt] Fix the include path for the Symbian port
       
 26348         https://bugs.webkit.org/show_bug.cgi?id=27358
       
 26349 
       
 26350         * JavaScriptCore.pri:
       
 26351 
       
 26352 2009-07-17  Csaba Osztrogonac  <oszi@inf.u-szeged.hu>
       
 26353 
       
 26354         Reviewed by David Levin.
       
 26355 
       
 26356         Build fix on platforms don't have MMAP.
       
 26357         https://bugs.webkit.org/show_bug.cgi?id=27365
       
 26358 
       
 26359         * interpreter/RegisterFile.h: Including stdio.h irrespectively of HAVE(MMAP)
       
 26360 
       
 26361 2009-07-16  Fumitoshi Ukai  <ukai@chromium.org>
       
 26362 
       
 26363         Reviewed by David Levin.
       
 26364 
       
 26365         Add --web-sockets flag and ENABLE_WEB_SOCKETS define.
       
 26366         https://bugs.webkit.org/show_bug.cgi?id=27206
       
 26367         
       
 26368         Add ENABLE_WEB_SOCKETS
       
 26369 
       
 26370         * Configurations/FeatureDefines.xcconfig: add ENABLE_WEB_SOCKETS
       
 26371 
       
 26372 2009-07-16  Maxime Simon  <simon.maxime@gmail.com>
       
 26373 
       
 26374         Reviewed by Eric Seidel.
       
 26375 
       
 26376         Added Haiku-specific files for JavaScriptCore.
       
 26377         https://bugs.webkit.org/show_bug.cgi?id=26620
       
 26378 
       
 26379         * wtf/haiku/MainThreadHaiku.cpp: Added.
       
 26380         (WTF::initializeMainThreadPlatform):
       
 26381         (WTF::scheduleDispatchFunctionsOnMainThread):
       
 26382 
       
 26383 2009-07-16  Gavin Barraclough  <barraclough@apple.com>
       
 26384 
       
 26385         RS by Oliver Hunt.
       
 26386 
       
 26387         Revert r45969, this fix does not appear to be valid.
       
 26388         https://bugs.webkit.org/show_bug.cgi?id=27077
       
 26389 
       
 26390         * bytecode/CodeBlock.cpp:
       
 26391         (JSC::CodeBlock::~CodeBlock):
       
 26392         (JSC::CodeBlock::unlinkCallers):
       
 26393         * jit/JIT.cpp:
       
 26394         * jit/JIT.h:
       
 26395 
       
 26396 2009-07-16  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 26397 
       
 26398         Reviewed by Oliver Hunt.
       
 26399 
       
 26400         Allow custom memory allocation control in ExceptionInfo and RareData struct
       
 26401         https://bugs.webkit.org/show_bug.cgi?id=27336
       
 26402 
       
 26403         Inherits ExceptionInfo and RareData struct from FastAllocBase because these
       
 26404         have been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.cpp:1289 and
       
 26405         in JavaScriptCore/bytecode/CodeBlock.h:453.
       
 26406 
       
 26407         Remove unnecessary WTF:: namespace from CodeBlock inheritance.
       
 26408  
       
 26409         * bytecode/CodeBlock.h:
       
 26410 
       
 26411 2009-07-16  Mark Rowe  <mrowe@apple.com>
       
 26412 
       
 26413         Rubber-stamped by Geoff Garen.
       
 26414 
       
 26415         Fix FeatureDefines.xcconfig to not be out of sync with the rest of the world.
       
 26416 
       
 26417         * Configurations/FeatureDefines.xcconfig:
       
 26418 
       
 26419 2009-07-16  Yong Li  <yong.li@torchmobile.com>
       
 26420 
       
 26421          Reviewed by George Staikos.
       
 26422 
       
 26423          https://bugs.webkit.org/show_bug.cgi?id=27320
       
 26424          _countof is only included in CE6; for CE5 we need to define it ourself
       
 26425 
       
 26426          * wtf/Platform.h:
       
 26427 
       
 26428 2009-07-16  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
       
 26429 
       
 26430         Reviewed by Oliver Hunt.
       
 26431 
       
 26432         Workers + garbage collector: weird crashes
       
 26433         https://bugs.webkit.org/show_bug.cgi?id=27077
       
 26434 
       
 26435         We need to unlink cached method call sites when a function is destroyed.
       
 26436 
       
 26437         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 26438         * bytecode/CodeBlock.cpp:
       
 26439         (JSC::CodeBlock::~CodeBlock):
       
 26440         (JSC::CodeBlock::unlinkCallers):
       
 26441         * jit/JIT.cpp:
       
 26442         (JSC::JIT::unlinkMethodCall):
       
 26443         * jit/JIT.h:
       
 26444 
       
 26445 2009-07-15  Steve Falkenburg  <sfalken@apple.com>
       
 26446 
       
 26447         Windows Build fix.
       
 26448 
       
 26449         Visual Studio reset our intermediate directory on us.
       
 26450         This sets it back.
       
 26451         
       
 26452         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
 26453         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
       
 26454 
       
 26455 2009-07-15  Kwang Yul Seo  <skyul@company100.net>
       
 26456 
       
 26457         Reviewed by Eric Seidel.
       
 26458 
       
 26459         https://bugs.webkit.org/show_bug.cgi?id=26794
       
 26460         Make Yacc-generated parsers to use fastMalloc/fastFree.
       
 26461         
       
 26462         Define YYMALLOC and YYFREE to fastMalloc and fastFree
       
 26463         respectively.
       
 26464 
       
 26465         * parser/Grammar.y:
       
 26466 
       
 26467 2009-07-15  Darin Adler  <darin@apple.com>
       
 26468 
       
 26469         Fix a build for a particular Apple configuration.
       
 26470 
       
 26471         * wtf/FastAllocBase.h: Change include to use "" style for
       
 26472         including another wtf header. This is the style we use for
       
 26473         including other public headers in the same directory.
       
 26474 
       
 26475 2009-07-15  George Staikos  <george.staikos@torchmobile.com>
       
 26476 
       
 26477         Reviewed by Adam Treat.
       
 26478 
       
 26479         https://bugs.webkit.org/show_bug.cgi?id=27303
       
 26480         Implement createThreadInternal for WinCE.
       
 26481         Contains changes by George Staikos <george.staikos@torchmobile.com> and Joe Mason <joe.mason@torchmobile.com>
       
 26482 
       
 26483         * wtf/ThreadingWin.cpp:
       
 26484         (WTF::createThreadInternal):
       
 26485 
       
 26486 2009-07-15  Joe Mason  <joe.mason@torchmobile.com>
       
 26487 
       
 26488          Reviewed by George Staikos.
       
 26489 
       
 26490          https://bugs.webkit.org/show_bug.cgi?id=27298
       
 26491          Platform defines for WINCE.
       
 26492          Contains changes by Yong Li <yong.li@torchmobile.com>,
       
 26493          George Staikos <george.staikos@torchmobile.com> and Joe Mason <joe.mason@torchmobile.com>
       
 26494 
       
 26495          * wtf/Platform.h:
       
 26496 
       
 26497 2009-07-15  Yong Li  <yong.li@torchmobile.com>
       
 26498 
       
 26499          Reviewed by Adam Treat.
       
 26500 
       
 26501          https://bugs.webkit.org/show_bug.cgi?id=27306
       
 26502          Use RegisterClass instead of RegisterClassEx on WinCE.
       
 26503 
       
 26504          * wtf/win/MainThreadWin.cpp:
       
 26505          (WTF::initializeMainThreadPlatform):
       
 26506 
       
 26507 2009-07-15  Yong Li  <yong.li@torchmobile.com>
       
 26508 
       
 26509          Reviewed by George Staikos.
       
 26510 
       
 26511          https://bugs.webkit.org/show_bug.cgi?id=27301
       
 26512          Use OutputDebugStringW on WinCE since OutputDebugStringA is not supported
       
 26513          Originally written by Yong Li <yong.li@torchmobile.com> and refactored by
       
 26514          Joe Mason <joe.mason@torchmobile.com>
       
 26515 
       
 26516          * wtf/Assertions.cpp: vprintf_stderr_common
       
 26517 
       
 26518 2009-07-15  Yong Li  <yong.li@torchmobile.com>
       
 26519 
       
 26520          Reviewed by George Staikos.
       
 26521 
       
 26522          https://bugs.webkit.org/show_bug.cgi?id=27020
       
 26523          msToGregorianDateTime should set utcOffset to 0 when outputIsUTC is false
       
 26524 
       
 26525          * wtf/DateMath.cpp:
       
 26526          (WTF::gregorianDateTimeToMS):
       
 26527 
       
 26528 2009-07-15  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 26529 
       
 26530         Reviewed by Simon Hausmann.
       
 26531 
       
 26532         [Qt] Cleanup - Remove obsolete code from the make system
       
 26533         https://bugs.webkit.org/show_bug.cgi?id=27299
       
 26534 
       
 26535         * JavaScriptCore.pro:
       
 26536         * jsc.pro:
       
 26537 
       
 26538 2009-07-07  Norbert Leser  <norbert.leser@nokia.com>
       
 26539 
       
 26540         Reviewed by Simon Hausmann.
       
 26541 
       
 26542         https://bugs.webkit.org/show_bug.cgi?id=27056
       
 26543 
       
 26544         Alternate bool operator for codewarrior compiler (WINSCW).
       
 26545         Compiler (latest b482) reports error for UnspecifiedBoolType construct:
       
 26546         "illegal explicit conversion from 'WTF::OwnArrayPtr<JSC::Register>' to 'bool'"
       
 26547 
       
 26548         Same fix as in r38391.
       
 26549 
       
 26550         * JavaScriptCore/wtf/OwnArrayPtr.h:
       
 26551 
       
 26552 2009-07-15  Norbert Leser  <norbert.leser@nokia.com>
       
 26553 
       
 26554         Reviewed by Darin Adler.
       
 26555 
       
 26556         Qualify include path with wtf to fix compilation
       
 26557         on Symbian.
       
 26558         https://bugs.webkit.org/show_bug.cgi?id=27055
       
 26559 
       
 26560         * interpreter/Interpreter.h:
       
 26561 
       
 26562 2009-07-15  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 26563 
       
 26564         Reviewed by Dave Kilzer.
       
 26565 
       
 26566         Turn off non-portable date manipulations for SYMBIAN
       
 26567         https://bugs.webkit.org/show_bug.cgi?id=27064
       
 26568 
       
 26569         Introduce HAVE(TM_GMTOFF), HAVE(TM_ZONE) and HAVE(TIMEGM) guards 
       
 26570         and place the rules for controlling the guards in Platform.h.
       
 26571         Turn off these newly introduced guards for SYMBIAN.
       
 26572 
       
 26573         * wtf/DateMath.cpp:
       
 26574         (WTF::calculateUTCOffset):
       
 26575         * wtf/DateMath.h:
       
 26576         (WTF::GregorianDateTime::GregorianDateTime):
       
 26577         (WTF::GregorianDateTime::operator tm):
       
 26578         * wtf/Platform.h:
       
 26579 
       
 26580 2009-07-15  Norbert Leser  <norbert.leser@nokia.com>
       
 26581 
       
 26582         Reviewed by Simon Hausmann.
       
 26583 
       
 26584         Undef ASSERT on Symbian, to avoid excessive warnings
       
 26585         https://bugs.webkit.org/show_bug.cgi?id=27052
       
 26586 
       
 26587         * wtf/Assertions.h:
       
 26588 
       
 26589 2009-07-15  Oliver Hunt  <oliver@apple.com>
       
 26590 
       
 26591         Reviewed by Simon Hausmann.
       
 26592 
       
 26593         REGRESSION: fast/js/postfix-syntax.html fails with interpreter
       
 26594         https://bugs.webkit.org/show_bug.cgi?id=27294
       
 26595 
       
 26596         When postfix operators operating on locals assign to the same local
       
 26597         the order of operations has to be to store the incremented value, then
       
 26598         store the unmodified number.  Rather than implementing this subtle
       
 26599         semantic in the interpreter I've just made the logic explicit in the
       
 26600         bytecode generator, so x=x++ effectively becomes x=ToNumber(x) (for a
       
 26601         local var x).
       
 26602 
       
 26603         * parser/Nodes.cpp:
       
 26604         (JSC::emitPostIncOrDec):
       
 26605 
       
 26606 2009-07-15  Oliver Hunt  <oliver@apple.com>
       
 26607 
       
 26608         Reviewed by Simon Hausmann.
       
 26609 
       
 26610         REGRESSION(43559): fast/js/kde/arguments-scope.html fails with interpreter
       
 26611         https://bugs.webkit.org/show_bug.cgi?id=27259
       
 26612 
       
 26613         The interpreter was incorrectly basing its need to create the arguments object
       
 26614         based on the presence of the callframe's argument reference rather than the local
       
 26615         arguments reference.  Based on this it then overrode the local variable reference.
       
 26616 
       
 26617         * interpreter/Interpreter.cpp:
       
 26618         (JSC::Interpreter::privateExecute):
       
 26619 
       
 26620 2009-07-14  Steve Falkenburg  <sfalken@apple.com>
       
 26621 
       
 26622         Reorganize JavaScriptCore headers into:
       
 26623         API: include/JavaScriptCore/
       
 26624         Private: include/private/JavaScriptCore/
       
 26625 
       
 26626         Reviewed by Darin Adler.
       
 26627 
       
 26628         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
 26629         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
       
 26630         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
       
 26631         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
       
 26632         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
       
 26633 
       
 26634 2009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 26635 
       
 26636         Reviewed by Darin Adler.
       
 26637 
       
 26638         Change JSCell's superclass to NoncopyableCustomAllocated
       
 26639         https://bugs.webkit.org/show_bug.cgi?id=27248
       
 26640 
       
 26641         JSCell class customizes operator new, since Noncopyable will be 
       
 26642         inherited from FastAllocBase, NoncopyableCustomAllocated has 
       
 26643         to be used.
       
 26644 
       
 26645         * runtime/JSCell.h:
       
 26646 
       
 26647 2009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 26648 
       
 26649         Reviewed by Darin Adler.
       
 26650 
       
 26651         Change all Noncopyable inheriting visibility to public.
       
 26652         https://bugs.webkit.org/show_bug.cgi?id=27225
       
 26653 
       
 26654         Change all Noncopyable inheriting visibility to public because
       
 26655         it is needed to the custom allocation framework (bug #20422).
       
 26656 
       
 26657         * bytecode/SamplingTool.h:
       
 26658         * bytecompiler/RegisterID.h:
       
 26659         * interpreter/CachedCall.h:
       
 26660         * interpreter/RegisterFile.h:
       
 26661         * parser/Lexer.h:
       
 26662         * parser/Parser.h:
       
 26663         * runtime/ArgList.h:
       
 26664         * runtime/BatchedTransitionOptimizer.h:
       
 26665         * runtime/Collector.h:
       
 26666         * runtime/CommonIdentifiers.h:
       
 26667         * runtime/JSCell.h:
       
 26668         * runtime/JSGlobalObject.h:
       
 26669         * runtime/JSLock.h:
       
 26670         * runtime/JSONObject.cpp:
       
 26671         * runtime/SmallStrings.cpp:
       
 26672         * runtime/SmallStrings.h:
       
 26673         * wtf/CrossThreadRefCounted.h:
       
 26674         * wtf/GOwnPtr.h:
       
 26675         * wtf/Locker.h:
       
 26676         * wtf/MessageQueue.h:
       
 26677         * wtf/OwnArrayPtr.h:
       
 26678         * wtf/OwnFastMallocPtr.h:
       
 26679         * wtf/OwnPtr.h:
       
 26680         * wtf/RefCounted.h:
       
 26681         * wtf/ThreadSpecific.h:
       
 26682         * wtf/Threading.h:
       
 26683         * wtf/Vector.h:
       
 26684         * wtf/unicode/Collator.h:
       
 26685 
       
 26686 2009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 26687 
       
 26688         Reviewed by Darin Adler.
       
 26689 
       
 26690         Change ParserArenaRefCounted's superclass to RefCountedCustomAllocated
       
 26691         https://bugs.webkit.org/show_bug.cgi?id=27249
       
 26692 
       
 26693         ParserArenaDeletable customizes operator new, to avoid double inheritance
       
 26694         ParserArenaDeletable's superclass has been changed to RefCountedCustomAllocated.
       
 26695 
       
 26696         * parser/Nodes.h:
       
 26697 
       
 26698 2009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 26699 
       
 26700         Reviewed by Darin Adler.
       
 26701 
       
 26702         Add RefCountedCustomAllocated to RefCounted.h
       
 26703         https://bugs.webkit.org/show_bug.cgi?id=27232
       
 26704 
       
 26705         Some class which are inherited from RefCounted customize
       
 26706         operator new, but RefCounted is inherited from Noncopyable
       
 26707         which will be inherited from FastAllocBase. To avoid
       
 26708         conflicts Noncopyable inheriting was moved down to RefCounted
       
 26709         and to avoid double inheritance this class has been added.
       
 26710 
       
 26711         * wtf/RefCounted.h:
       
 26712         (WTF::RefCountedCustomAllocated::deref):
       
 26713         (WTF::RefCountedCustomAllocated::~RefCountedCustomAllocated):
       
 26714 
       
 26715 2009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 26716 
       
 26717         Reviewed by Darin Adler.
       
 26718 
       
 26719         Add NoncopyableCustomAllocated to Noncopyable.h.
       
 26720         https://bugs.webkit.org/show_bug.cgi?id=27228
       
 26721         
       
 26722         Some classes which inherited from Noncopyable overrides operator new
       
 26723         since Noncopyable'll be inherited from FastAllocBase, Noncopyable.h 
       
 26724         needs to be extended with this new class to support the overriding. 
       
 26725 
       
 26726         * wtf/Noncopyable.h:
       
 26727         (WTFNoncopyable::NoncopyableCustomAllocated::NoncopyableCustomAllocated):
       
 26728         (WTFNoncopyable::NoncopyableCustomAllocated::~NoncopyableCustomAllocated):
       
 26729 
       
 26730 2009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 26731 
       
 26732         Reviewed by Darin Adler.
       
 26733 
       
 26734         Allow custom memory allocation control for JavaScriptCore's IdentifierTable class
       
 26735         https://bugs.webkit.org/show_bug.cgi?id=27260
       
 26736 
       
 26737         Inherits IdentifierTable class from FastAllocBase because it has been
       
 26738         instantiated by 'new' in JavaScriptCore/runtime/Identifier.cpp:70.
       
 26739 
       
 26740         * runtime/Identifier.cpp:
       
 26741 
       
 26742 2009-07-14  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 26743 
       
 26744         Reviewed by Darin Adler.
       
 26745 
       
 26746         Allow custom memory allocation control for JavaScriptCore's Profiler class
       
 26747         https://bugs.webkit.org/show_bug.cgi?id=27253
       
 26748 
       
 26749         Inherits Profiler class from FastAllocBase because it has been instantiated by
       
 26750         'new' in JavaScriptCore/profiler/Profiler.cpp:56.
       
 26751 
       
 26752         * profiler/Profiler.h:
       
 26753 
       
 26754 2009-07-06  George Staikos  <george.staikos@torchmobile.com>
       
 26755 
       
 26756         Reviewed by Adam Treat.
       
 26757 
       
 26758         Authors: George Staikos <george.staikos@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com>, Makoto Matsumoto <matumoto@math.keio.ac.jp>, Takuji Nishimura
       
 26759 
       
 26760         https://bugs.webkit.org/show_bug.cgi?id=27030
       
 26761         Implement custom RNG for WinCE using Mersenne Twister
       
 26762 
       
 26763         * wtf/RandomNumber.cpp:
       
 26764         (WTF::randomNumber):
       
 26765         * wtf/RandomNumberSeed.h:
       
 26766         (WTF::initializeRandomNumberGenerator):
       
 26767         * wtf/wince/mt19937ar.c: Added.
       
 26768         (init_genrand):
       
 26769         (init_by_array):
       
 26770         (genrand_int32):
       
 26771         (genrand_int31):
       
 26772         (genrand_real1):
       
 26773         (genrand_real2):
       
 26774         (genrand_real3):
       
 26775         (genrand_res53):
       
 26776 
       
 26777 2009-07-13  Gustavo Noronha Silva  <gustavo.noronha@collabora.co.uk>
       
 26778 
       
 26779         Unreviewed make dist build fix.
       
 26780 
       
 26781         * GNUmakefile.am:
       
 26782 
       
 26783 2009-07-13  Drew Wilson  <atwilson@google.com>
       
 26784 
       
 26785         Reviewed by David Levin.
       
 26786 
       
 26787         Add ENABLE(SHARED_WORKERS) flag and define SharedWorker APIs
       
 26788         https://bugs.webkit.org/show_bug.cgi?id=26932
       
 26789 
       
 26790         Added ENABLE(SHARED_WORKERS) flag (off by default).
       
 26791 
       
 26792         * Configurations/FeatureDefines.xcconfig:
       
 26793 
       
 26794 2009-07-07  Norbert Leser  <norbert.leser@nokia.com>
       
 26795 
       
 26796         Reviewed by Maciej Stachoviak.
       
 26797 
       
 26798         https://bugs.webkit.org/show_bug.cgi?id=27058
       
 26799 
       
 26800         Removed superfluous parenthesis around single expression.
       
 26801         Compilers on Symbian platform fail to properly parse and compile.
       
 26802 
       
 26803         * JavaScriptCore/wtf/Platform.h:
       
 26804 
       
 26805 2009-07-13  Norbert Leser  <norbert.leser@nokia.com>
       
 26806 
       
 26807         Reviewed by Maciej Stachoviak.
       
 26808 
       
 26809         https://bugs.webkit.org/show_bug.cgi?id=27054
       
 26810 
       
 26811         Renamed Translator to HashTranslator
       
 26812 
       
 26813         Codewarrior compiler (WINSCW) latest b482 cannot resolve typename
       
 26814         mismatch between template declaration and definition
       
 26815         (HashTranslator / Translator)
       
 26816 
       
 26817         * wtf/HashSet.h:
       
 26818 
       
 26819 2009-07-13  Norbert Leser  <norbert.leser@nokia.com>
       
 26820 
       
 26821         Reviewed by Eric Seidel.
       
 26822 
       
 26823         https://bugs.webkit.org/show_bug.cgi?id=27053
       
 26824 
       
 26825         Ambiguity in LabelScope initialization
       
 26826 
       
 26827         Codewarrior compiler (WINSCW) latest b482 on Symbian cannot resolve
       
 26828         type of "0" unambiguously. Set expression explicitly to
       
 26829         PassRefPtr<Label>::PassRefPtr()
       
 26830 
       
 26831         * bytecompiler/BytecodeGenerator.cpp
       
 26832 
       
 26833 2009-07-11  Simon Fraser  <simon.fraser@apple.com>
       
 26834 
       
 26835         Enable support for accelerated compositing and 3d transforms on Leopard.
       
 26836         <https://bugs.webkit.org/show_bug.cgi?id=20166>
       
 26837         <rdar://problem/6120614>
       
 26838 
       
 26839         Reviewed by Oliver Hunt.
       
 26840 
       
 26841         * Configurations/FeatureDefines.xcconfig:
       
 26842         * wtf/Platform.h:
       
 26843 
       
 26844 2009-07-10  Mark Rowe  <mrowe@apple.com>
       
 26845 
       
 26846         Second part of the "make Windows happier" dance.
       
 26847 
       
 26848         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 26849         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 26850 
       
 26851 2009-07-10  Mark Rowe  <mrowe@apple.com>
       
 26852 
       
 26853         Try and make the Windows build happy.
       
 26854 
       
 26855         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 26856         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 26857 
       
 26858 2009-07-10  Kevin McCullough  <kmccullough@apple.com>
       
 26859 
       
 26860         Reviewed by Geoffrey Garen.
       
 26861 
       
 26862         * debugger/Debugger.h: Made this function virtual for use in WebCore's
       
 26863         WebInspector.
       
 26864 
       
 26865 2009-07-10  Kwang Yul Seo  <skyul@company100.net>
       
 26866 
       
 26867         Reviewed by Darin Adler.
       
 26868 
       
 26869         ParserArenaDeletable should override delete
       
 26870         https://bugs.webkit.org/show_bug.cgi?id=26790
       
 26871 
       
 26872         ParserArenaDeletable overrides new, but it does not override delete.
       
 26873         ParserArenaDeletable must be freed by fastFree
       
 26874         because it is allocated by fastMalloc.
       
 26875 
       
 26876         * parser/NodeConstructors.h:
       
 26877         (JSC::ParserArenaDeletable::operator delete):
       
 26878         * parser/Nodes.h:
       
 26879 
       
 26880 2009-07-10  Adam Roben  <aroben@apple.com>
       
 26881 
       
 26882         Sort all our Xcode projects
       
 26883 
       
 26884         Accomplished using sort-Xcode-project-file.
       
 26885 
       
 26886         Requested by Dave Kilzer.
       
 26887 
       
 26888         * JavaScriptCore.xcodeproj/project.pbxproj:
       
 26889 
       
 26890 2009-07-09  Maciej Stachowiak  <mjs@apple.com>
       
 26891 
       
 26892         Not reviewed, build fix.
       
 26893 
       
 26894         Windows build fix for the last change.
       
 26895 
       
 26896         * wtf/dtoa.cpp: Forgot to include Vector.h
       
 26897 
       
 26898 2009-07-09  Maciej Stachowiak  <mjs@apple.com>
       
 26899 
       
 26900         Reviewed by Darin Adler.
       
 26901 
       
 26902         REGRESSION: crash in edge cases of floating point parsing.
       
 26903         https://bugs.webkit.org/show_bug.cgi?id=27110
       
 26904         <rdar://problem/7044458>
       
 26905         
       
 26906         Tests: fast/css/number-parsing-crash.html
       
 26907                fast/css/number-parsing-crash.html
       
 26908                fast/js/number-parsing-crash.html
       
 26909         
       
 26910         * wtf/dtoa.cpp:
       
 26911         (WTF::BigInt::BigInt): Converted this to more a proper class, using a Vector
       
 26912         with inline capacity
       
 26913 
       
 26914         (WTF::lshift): Rearranged logic somewhat nontrivially to deal with the new way of sizing BigInts.
       
 26915         Added an assertion to verify that invariants are maintained.
       
 26916 
       
 26917         All other functions are adapted fairly mechanically to the above changes.
       
 26918         (WTF::BigInt::clear):
       
 26919         (WTF::BigInt::size):
       
 26920         (WTF::BigInt::resize):
       
 26921         (WTF::BigInt::words):
       
 26922         (WTF::BigInt::append):
       
 26923         (WTF::multadd):
       
 26924         (WTF::s2b):
       
 26925         (WTF::i2b):
       
 26926         (WTF::mult):
       
 26927         (WTF::cmp):
       
 26928         (WTF::diff):
       
 26929         (WTF::b2d):
       
 26930         (WTF::d2b):
       
 26931         (WTF::ratio):
       
 26932         (WTF::strtod):
       
 26933         (WTF::quorem):
       
 26934         (WTF::dtoa):
       
 26935 
       
 26936 2009-07-09  Drew Wilson  <atwilson@google.com>
       
 26937 
       
 26938         Reviewed by Alexey Proskuryakov.
       
 26939 
       
 26940         Turned on CHANNEL_MESSAGING by default because the MessageChannel API
       
 26941         can now be implemented for Web Workers and is reasonably stable.
       
 26942 
       
 26943         * Configurations/FeatureDefines.xcconfig:
       
 26944 
       
 26945 2009-07-09  Oliver Hunt  <oliver@apple.com>
       
 26946 
       
 26947         * interpreter/Interpreter.cpp:
       
 26948         (JSC::Interpreter::privateExecute):
       
 26949 
       
 26950 2009-07-09  Oliver Hunt  <oliver@apple.com>
       
 26951 
       
 26952         Reviewed by Darin Adler.
       
 26953 
       
 26954         Bug 27016 - Interpreter crashes due to invalid array indexes
       
 26955         <https://bugs.webkit.org/show_bug.cgi?id=27016>
       
 26956 
       
 26957         Unsigned vs signed conversions results in incorrect behaviour in
       
 26958         64bit interpreter builds.
       
 26959 
       
 26960         * interpreter/Interpreter.cpp:
       
 26961         (JSC::Interpreter::privateExecute):
       
 26962 
       
 26963 2009-07-09  Dimitri Glazkov  <dglazkov@chromium.org>
       
 26964 
       
 26965         Reviewed by Darin Fisher.
       
 26966 
       
 26967         [Chromium] Upstream JavaScriptCore.gypi, the project file for Chromium build.
       
 26968         https://bugs.webkit.org/show_bug.cgi?id=27135
       
 26969 
       
 26970         * JavaScriptCore.gypi: Added.
       
 26971 
       
 26972 2009-07-09  Joe Mason  <joe.mason@torchmobile.com>
       
 26973 
       
 26974         Reviewed by George Staikos.
       
 26975         
       
 26976         Authors: Yong Li <yong.li@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com>
       
 26977 
       
 26978         https://bugs.webkit.org/show_bug.cgi?id=27031
       
 26979         Add an override for deleteOwnedPtr(HDC) on Windows
       
 26980         
       
 26981         * wtf/OwnPtrCommon.h:
       
 26982         * wtf/OwnPtrWin.cpp:
       
 26983         (WTF::deleteOwnedPtr):
       
 26984 
       
 26985 2009-07-09  Laszlo Gombos  <laszlo.1.gombos@nokia.com>
       
 26986 
       
 26987         Reviewed by Darin Adler.
       
 26988 
       
 26989         Guard singal.h dependency with HAVE(SIGNAL_H) to enable building jsc
       
 26990         on SYMBIAN.
       
 26991 
       
 26992         https://bugs.webkit.org/show_bug.cgi?id=27026
       
 26993 
       
 26994         Based on Norbert Leser's work.
       
 26995 
       
 26996         * jsc.cpp:
       
 26997         (printUsageStatement):
       
 26998         (parseArguments):
       
 26999         * wtf/Platform.h:
       
 27000 
       
 27001 2009-07-07  Gavin Barraclough  <barraclough@apple.com>
       
 27002 
       
 27003         Reviewed by Sam Weinig.
       
 27004 
       
 27005         Stop loading constants into the register file.
       
 27006 
       
 27007         Instead, use high register values (highest bit bar the sign bit set) to indicate
       
 27008         constants in the instruction stream, and when we encounter such a value load it
       
 27009         directly from the CodeBlock.
       
 27010 
       
 27011         Since constants are no longer copied into the register file, this patch renders
       
 27012         the 'unexpected constant' mechanism redundant, and removes it.
       
 27013 
       
 27014         2% improvement, thanks to Sam Weinig.
       
 27015 
       
 27016         * bytecode/CodeBlock.cpp:
       
 27017         (JSC::CodeBlock::dump):
       
 27018         (JSC::CodeBlock::CodeBlock):
       
 27019         (JSC::CodeBlock::mark):
       
 27020         (JSC::CodeBlock::shrinkToFit):
       
 27021         * bytecode/CodeBlock.h:
       
 27022         (JSC::CodeBlock::isTemporaryRegisterIndex):
       
 27023         (JSC::CodeBlock::constantRegister):
       
 27024         (JSC::CodeBlock::isConstantRegisterIndex):
       
 27025         (JSC::CodeBlock::getConstant):
       
 27026         (JSC::ExecState::r):
       
 27027         * bytecode/Opcode.h:
       
 27028         * bytecompiler/BytecodeGenerator.cpp:
       
 27029         (JSC::BytecodeGenerator::preserveLastVar):
       
 27030         (JSC::BytecodeGenerator::BytecodeGenerator):
       
 27031         (JSC::BytecodeGenerator::addConstantValue):
       
 27032         (JSC::BytecodeGenerator::emitEqualityOp):
       
 27033         (JSC::BytecodeGenerator::emitLoad):
       
 27034         (JSC::BytecodeGenerator::emitResolveBase):
       
 27035         (JSC::BytecodeGenerator::emitResolveWithBase):
       
 27036         (JSC::BytecodeGenerator::emitNewError):
       
 27037         * bytecompiler/BytecodeGenerator.h:
       
 27038         (JSC::BytecodeGenerator::emitNode):
       
 27039         * interpreter/CallFrame.h:
       
 27040         (JSC::ExecState::noCaller):
       
 27041         (JSC::ExecState::hasHostCallFrameFlag):
       
 27042         (JSC::ExecState::addHostCallFrameFlag):
       
 27043         (JSC::ExecState::removeHostCallFrameFlag):
       
 27044         * interpreter/Interpreter.cpp:
       
 27045         (JSC::Interpreter::resolve):
       
 27046         (JSC::Interpreter::resolveSkip):
       
 27047         (JSC::Interpreter::resolveGlobal):
       
 27048         (JSC::Interpreter::resolveBase):
       
 27049         (JSC::Interpreter::resolveBaseAndProperty):
       
 27050         (JSC::Interpreter::resolveBaseAndFunc):
       
 27051         (JSC::Interpreter::dumpRegisters):
       
 27052         (JSC::Interpreter::throwException):
       
 27053         (JSC::Interpreter::createExceptionScope):
       
 27054         (JSC::Interpreter::privateExecute):
       
 27055         (JSC::Interpreter::retrieveArguments):
       
 27056         * jit/JIT.cpp:
       
 27057         (JSC::JIT::privateCompileMainPass):
       
 27058         * jit/JITInlineMethods.h:
       
 27059         (JSC::JIT::emitLoadDouble):
       
 27060         (JSC::JIT::emitLoadInt32ToDouble):
       
 27061         * jit/JITOpcodes.cpp:
       
 27062         (JSC::JIT::emit_op_new_error):
       
 27063         (JSC::JIT::emit_op_enter):
       
 27064         (JSC::JIT::emit_op_enter_with_activation):
       
 27065         * parser/Nodes.cpp:
       
 27066         (JSC::DeleteResolveNode::emitBytecode):
       
 27067         (JSC::DeleteValueNode::emitBytecode):
       
 27068         (JSC::PrefixResolveNode::emitBytecode):
       
 27069         * runtime/JSActivation.cpp:
       
 27070         (JSC::JSActivation::JSActivation):
       
 27071         * wtf/Platform.h:
       
 27072 
       
 27073 2009-07-07  Mark Rowe  <mrowe@apple.com>
       
 27074 
       
 27075         Reviewed by Darin Adler.
       
 27076 
       
 27077         Fix <https://bugs.webkit.org/show_bug.cgi?id=27025> / <rdar://problem/7033448>.
       
 27078         Bug 27025: Crashes and regression test failures related to regexps in 64-bit
       
 27079 
       
 27080         For x86_64 RegexGenerator uses rbx, a callee-save register, as a scratch register but
       
 27081         neglects to save and restore it.  The change in handling of the output vector in r45545
       
 27082         altered code generation so that the RegExp::match was now storing important data in rbx,
       
 27083         which caused crashes and bogus results when it was clobbered.
       
 27084 
       
 27085         * yarr/RegexJIT.cpp:
       
 27086         (JSC::Yarr::RegexGenerator::generateEnter): Save rbx.
       
 27087         (JSC::Yarr::RegexGenerator::generateReturn): Restore rbx.
       
 27088 
       
 27089 2009-07-06  Ada Chan  <adachan@apple.com>
       
 27090 
       
 27091         Reviewed by Darin Adler and Mark Rowe.
       
 27092 
       
 27093         Decommitted spans are added to the list of normal spans rather than 
       
 27094         the returned spans in TCMalloc_PageHeap::Delete().
       
 27095         https://bugs.webkit.org/show_bug.cgi?id=26998
       
 27096         
       
 27097         In TCMalloc_PageHeap::Delete(), the deleted span can be decommitted in 
       
 27098         the process of merging with neighboring spans that are also decommitted.  
       
 27099         The merged span needs to be placed in the list of returned spans (spans 
       
 27100         whose memory has been returned to the system).  Right now it's always added 
       
 27101         to the list of the normal spans which can theoretically cause thrashing.  
       
 27102 
       
 27103         * wtf/FastMalloc.cpp:
       
 27104         (WTF::TCMalloc_PageHeap::Delete):
       
 27105 
       
 27106 2009-07-05  Lars Knoll  <lars.knoll@nokia.com>
       
 27107 
       
 27108         Reviewed by Maciej Stachowiak.
       
 27109 
       
 27110         https://bugs.webkit.org/show_bug.cgi?id=26843
       
 27111 
       
 27112         Fix run-time crashes in JavaScriptCore with the Metrowerks compiler on Symbian.
       
 27113 
       
 27114         The Metrowerks compiler on the Symbian platform moves the globally
       
 27115         defined Hashtables into read-only memory, despite one of the members
       
 27116         being mutable. This causes crashes at run-time due to write access to
       
 27117         read-only memory.
       
 27118 
       
 27119         Avoid the use of const with this compiler by introducing the
       
 27120         JSC_CONST_HASHTABLE macro.
       
 27121 
       
 27122         Based on idea by Norbert Leser.
       
 27123 
       
 27124         * runtime/Lookup.h: Define JSC_CONST_HASHTABLE as const for !WINSCW.
       
 27125         * create_hash_table: Use JSC_CONST_HASHTABLE for hashtables.
       
 27126         * runtime/JSGlobalData.cpp: Import various global hashtables via the macro.
       
 27127 
       
 27128 2009-07-04  Dan Bernstein  <mitz@apple.com>
       
 27129 
       
 27130         - debug build fix
       
 27131 
       
 27132         * runtime/RegExpConstructor.cpp:
       
 27133         (JSC::RegExpConstructor::getLastParen):
       
 27134 
       
 27135 2009-07-03  Yong Li  <yong.li@torchmobile.com>
       
 27136 
       
 27137         Reviewed by Maciej Stachowiak (and revised slightly)
       
 27138 
       
 27139         RegExp::match to be optimized
       
 27140         https://bugs.webkit.org/show_bug.cgi?id=26957
       
 27141 
       
 27142         Allow regexp matching to use Vectors with inline capacity instead of
       
 27143         allocating a new ovector buffer every time.
       
 27144         
       
 27145         ~5% speedup on SunSpider string-unpack-code test, 0.3% on SunSpider overall.
       
 27146 
       
 27147         * runtime/RegExp.cpp:
       
 27148         (JSC::RegExp::match):
       
 27149         * runtime/RegExp.h:
       
 27150         * runtime/RegExpConstructor.cpp:
       
 27151         (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate):
       
 27152         (JSC::RegExpConstructorPrivate::lastOvector):
       
 27153         (JSC::RegExpConstructorPrivate::tempOvector):
       
 27154         (JSC::RegExpConstructorPrivate::changeLastOvector):
       
 27155         (JSC::RegExpConstructor::performMatch):
       
 27156         (JSC::RegExpMatchesArray::RegExpMatchesArray):
       
 27157         (JSC::RegExpMatchesArray::fillArrayInstance):
       
 27158         (JSC::RegExpConstructor::getBackref):
       
 27159         (JSC::RegExpConstructor::getLastParen):
       
 27160         (JSC::RegExpConstructor::getLeftContext):
       
 27161         (JSC::RegExpConstructor::getRightContext):
       
 27162         * runtime/StringPrototype.cpp:
       
 27163         (JSC::stringProtoFuncSplit):
       
 27164 
       
 27165 2009-06-30  Kwang Yul Seo  <skyul@company100.net>
       
 27166 
       
 27167         Reviewed by Eric Seidel.
       
 27168 
       
 27169         Override operator new/delete with const std::nothrow_t& as the second
       
 27170         argument.
       
 27171         https://bugs.webkit.org/show_bug.cgi?id=26792
       
 27172 
       
 27173         On Windows CE, operator new/delete, new[]/delete[] with const
       
 27174         std::nothrow_t& must be overrided because some standard template
       
 27175         libraries use these operators.
       
 27176 
       
 27177         The problem occurs when memory allocated by new(size_t s, const
       
 27178         std::nothrow_t&) is freed by delete(void* p). This causes the umatched
       
 27179         malloc/free problem.
       
 27180 
       
 27181         The patch overrides all new, delete, new[] and delete[] to use
       
 27182         fastMaloc and fastFree consistently.
       
 27183 
       
 27184         * wtf/FastMalloc.h:
       
 27185         (throw):
       
 27186 
       
 27187 2009-06-30  Gabor Loki  <loki@inf.u-szeged.hu>
       
 27188 
       
 27189         Reviewed by Sam Weinig.
       
 27190 
       
 27191         <https://bugs.webkit.org/show_bug.cgi?id=24986>
       
 27192 
       
 27193         Remove unnecessary references to AssemblerBuffer.
       
 27194 
       
 27195         * interpreter/Interpreter.cpp:
       
 27196         * interpreter/Interpreter.h:
       
 27197 
       
 27198 2009-06-29  David Levin  <levin@chromium.org>
       
 27199 
       
 27200         Reviewed by Oliver Hunt.
       
 27201 
       
 27202         Still seeing occasional leaks from UString::sharedBuffer code
       
 27203         https://bugs.webkit.org/show_bug.cgi?id=26420
       
 27204 
       
 27205         The problem is that the pointer to the memory allocation isn't visible
       
 27206         by "leaks" due to the lower bits being used as flags.  The fix is to
       
 27207         make the pointer visible in memory (in debug only). The downside of
       
 27208         this fix that the memory allocated by sharedBuffer will still look like
       
 27209         a leak in non-debug builds when any flags are set.
       
 27210 
       
 27211         * wtf/PtrAndFlags.h:
       
 27212         (WTF::PtrAndFlags::set):
       
 27213 
       
 27214 2009-06-29  Sam Weinig  <sam@webkit.org>
       
 27215 
       
 27216         Reviewed by Mark Rowe.
       
 27217 
       
 27218         Remove more unused scons support.
       
 27219 
       
 27220         * SConstruct: Removed.
       
 27221 
       
 27222 2009-06-29  Oliver Hunt  <oliver@apple.com>
       
 27223 
       
 27224         Reviewed by Gavin Barraclough.
       
 27225 
       
 27226         <rdar://problem/7016214> JSON.parse fails to parse valid JSON with most Unicode characters
       
 27227         <https://bugs.webkit.org/show_bug.cgi?id=26802>
       
 27228 
       
 27229         In the original JSON.parse patch unicode was handled correctly, however in some last
       
 27230         minute "clean up" I oversimplified isSafeStringCharacter.  This patch corrects this bug.
       
 27231 
       
 27232         * runtime/LiteralParser.cpp:
       
 27233         (JSC::isSafeStringCharacter):
       
 27234         (JSC::LiteralParser::Lexer::lexString):
       
 27235 
       
 27236 2009-06-26  Oliver Hunt  <oliver@apple.com>
       
 27237 
       
 27238         Reviewed by Dan Bernstein.
       
 27239 
       
 27240         <rdar://problem/7009684> REGRESSION(r45039): Crashes inside JSEvent::put on PowerPC (26746)
       
 27241         <https://bugs.webkit.org/show_bug.cgi?id=26746>
       
 27242 
       
 27243         Fix for r45039 incorrectly uncached a get_by_id by converting it to put_by_id.  Clearly this
       
 27244         is less than correct.  This patch corrects that error.
       
 27245 
       
 27246         * interpreter/Interpreter.cpp:
       
 27247         (JSC::Interpreter::tryCacheGetByID):
       
 27248 
       
 27249 2009-06-26  Eric Seidel  <eric@webkit.org>
       
 27250 
       
 27251         No review, only rolling out r45259.
       
 27252 
       
 27253         Roll out r45259 after crash appeared on the bots:
       
 27254         plugins/undefined-property-crash.html
       
 27255         ASSERTION FAILED: s <= HeapConstants<heapType>::cellSize
       
 27256         (leopard-intel-debug-tests/build/JavaScriptCore/runtime/Collector.cpp:278
       
 27257         void* JSC::Heap::heapAllocate(size_t) [with JSC::HeapType heapType = PrimaryHeap])
       
 27258 
       
 27259         * runtime/DateInstance.cpp:
       
 27260         * runtime/Identifier.cpp:
       
 27261         * runtime/Lookup.h:
       
 27262         * runtime/RegExpConstructor.cpp:
       
 27263         * runtime/RegExpObject.h:
       
 27264         * runtime/ScopeChain.h:
       
 27265         * runtime/UString.h:
       
 27266 
       
 27267 2009-06-26  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
       
 27268 
       
 27269         Reviewed by Simon Hausmann.
       
 27270 
       
 27271         Add support for QDataStream operators to Vector.
       
 27272 
       
 27273         * wtf/Vector.h:
       
 27274         (WTF::operator<<):
       
 27275         (WTF::operator>>):
       
 27276 
       
 27277 2009-06-24  Sam Weinig  <sam@webkit.org>
       
 27278 
       
 27279         Reviewed by Gavin Barraclough.
       
 27280 
       
 27281         Make the opcode sampler work once again.
       
 27282 
       
 27283         * jit/JIT.h:
       
 27284         (JSC::JIT::compileGetByIdProto):
       
 27285         (JSC::JIT::compileGetByIdSelfList):
       
 27286         (JSC::JIT::compileGetByIdProtoList):
       
 27287         (JSC::JIT::compileGetByIdChainList):
       
 27288         (JSC::JIT::compileGetByIdChain):
       
 27289         (JSC::JIT::compilePutByIdTransition):
       
 27290         (JSC::JIT::compileCTIMachineTrampolines):
       
 27291         (JSC::JIT::compilePatchGetArrayLength):
       
 27292         * jit/JITStubCall.h:
       
 27293         (JSC::JITStubCall::call):
       
 27294 
       
 27295 2009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 27296 
       
 27297         Reviewed by Maciej Stachowiak.
       
 27298 
       
 27299         Extend FastAllocBase.h with 'using WTF::FastAllocBase' to avoid
       
 27300         unnecessary WTF:: usings.
       
 27301         Remove existing unnecessary WTF:: usings.
       
 27302 
       
 27303         * interpreter/Interpreter.h:
       
 27304         * profiler/CallIdentifier.h:
       
 27305         * runtime/ScopeChain.h:
       
 27306         * wtf/FastAllocBase.h:
       
 27307 
       
 27308 2009-06-24  David Levin  <levin@chromium.org>
       
 27309 
       
 27310         Fix all builds.
       
 27311 
       
 27312         * bytecode/CodeBlock.h:
       
 27313         * bytecompiler/BytecodeGenerator.h:
       
 27314         * interpreter/Register.h:
       
 27315 
       
 27316 2009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 27317 
       
 27318         Reviewed by Maciej Stachowiak.
       
 27319         
       
 27320         https://bugs.webkit.org/show_bug.cgi?id=26677
       
 27321 
       
 27322         Inherits CodeBlock class from FastAllocBase because it
       
 27323         has been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.h:217.
       
 27324 
       
 27325         * bytecode/CodeBlock.h:
       
 27326 
       
 27327 2009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 27328 
       
 27329         Reviewed by Maciej Stachowiak.
       
 27330         
       
 27331         https://bugs.webkit.org/show_bug.cgi?id=26676
       
 27332 
       
 27333         Inherits BytecodeGenerator class from FastAllocBase because it has been
       
 27334         instantiated by 'new' in JavaScriptCore/parser/Nodes.cpp:1892.
       
 27335 
       
 27336         * bytecompiler/BytecodeGenerator.h:
       
 27337 
       
 27338 2009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 27339 
       
 27340         Reviewed by Maciej Stachowiak.
       
 27341         
       
 27342         https://bugs.webkit.org/show_bug.cgi?id=26675
       
 27343 
       
 27344         Inherits Register class from FastAllocBase because it has been
       
 27345         instantiated by 'new' in JavaScriptCore/runtime/JSVariableObject.h:149.
       
 27346 
       
 27347         * interpreter/Register.h:
       
 27348 
       
 27349 2009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 27350 
       
 27351         Reviewed by Darin Adler.
       
 27352         
       
 27353         https://bugs.webkit.org/show_bug.cgi?id=26674
       
 27354 
       
 27355         Inherits HashMap class from FastAllocBase because it has been
       
 27356         instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:458.
       
 27357 
       
 27358         * wtf/HashMap.h:
       
 27359 
       
 27360 2009-06-24  Oliver Hunt  <oliver@apple.com>
       
 27361 
       
 27362         Reviewed by Darin Adler.
       
 27363 
       
 27364         <rdar://problem/6940519> REGRESSION (Safari 4 Public Beta - TOT): google.com/adplanner shows blank page instead of site details in "basic research'
       
 27365 
       
 27366         The problem was caused by the page returned with a function using a
       
 27367         var declaration list containing around ~3000 variables.  The solution
       
 27368         to this is to flatten the comma expression representation and make
       
 27369         codegen comma expressions and initializer lists iterative rather than
       
 27370         recursive.
       
 27371 
       
 27372         * parser/Grammar.y:
       
 27373         * parser/NodeConstructors.h:
       
 27374         (JSC::CommaNode::CommaNode):
       
 27375         * parser/Nodes.cpp:
       
 27376         (JSC::CommaNode::emitBytecode):
       
 27377         * parser/Nodes.h:
       
 27378         (JSC::ExpressionNode::isCommaNode):
       
 27379         (JSC::CommaNode::isCommaNode):
       
 27380         (JSC::CommaNode::append):
       
 27381 
       
 27382 2009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 27383 
       
 27384         Reviewed by Maciej Stachowiak.
       
 27385 
       
 27386         https://bugs.webkit.org/show_bug.cgi?id=26645
       
 27387 
       
 27388         Inherits ScopeChainNode class from FastAllocBase because it has been
       
 27389         instantiated by 'new' in JavaScriptCore/runtime/ScopeChain.h:95.
       
 27390 
       
 27391         * wtf/RefPtr.h:
       
 27392 
       
 27393 2009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 27394 
       
 27395         Reviewed by Darin Adler.
       
 27396 
       
 27397         https://bugs.webkit.org/show_bug.cgi?id=26648
       
 27398 
       
 27399         Inherits Deque class from FastAllocBase because it has been
       
 27400         instantiated by 'new' with DEFINE_STATIC_LOCAL macro in 
       
 27401         JavaScriptCore/wtf/MainThread.cpp:62.
       
 27402 
       
 27403         * wtf/Deque.h:
       
 27404 
       
 27405 2009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 27406 
       
 27407         Reviewed by Darin Adler.
       
 27408 
       
 27409         https://bugs.webkit.org/show_bug.cgi?id=26644
       
 27410 
       
 27411         Inherits RefPtr class from FastAllocBase because it has been
       
 27412         instantiated by 'new' in JavaScriptCore/runtime/StructureChain.cpp:41.
       
 27413 
       
 27414         * wtf/RefPtr.h:
       
 27415 
       
 27416 2009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 27417 
       
 27418         Reviewed by Darin Adler.
       
 27419 
       
 27420         Inherits HashSet class from FastAllocBase, because it has been
       
 27421         instantiated by 'new' in JavaScriptCore/runtime/Collector.h:116.
       
 27422 
       
 27423         * wtf/HashSet.h:
       
 27424 
       
 27425 2009-06-24  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 27426 
       
 27427         Reviewed by Darin Adler.
       
 27428 
       
 27429         Inherits Vector class from FastAllocBase because it has been
       
 27430         instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:633.
       
 27431 
       
 27432         * wtf/Vector.h:
       
 27433 
       
 27434 2009-06-24  Norbert Leser  <norbert.leser@nokia.com>
       
 27435 
       
 27436         Reviewed by Maciej Stachoviak.
       
 27437 
       
 27438         The BytecodeGenerator objects were instantiated on stack, which takes up ~38kB per instance
       
 27439         (each instance includes copy of JSC::CodeBlock with large SymbolTable, etc.).
       
 27440         Specifically, since there is nested invocation (e.g., GlobalCode --> FunctionCode),
       
 27441         the stack overflows immediately on Symbian hardware (max. 80 kB).
       
 27442         Proposed change allocates generator objects on heap.
       
 27443         Performance impact (if any) should be negligible and change is proposed as general fix,
       
 27444         rather than ifdef'd for SYMBIAN.
       
 27445 
       
 27446         * parser/Nodes.cpp:
       
 27447         (JSC::ProgramNode::generateBytecode):
       
 27448         (JSC::EvalNode::generateBytecode):
       
 27449         (JSC::EvalNode::bytecodeForExceptionInfoReparse):
       
 27450         (JSC::FunctionBodyNode::generateBytecode):
       
 27451         (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse):
       
 27452 
       
 27453 2009-06-23  Oliver Hunt  <oliver@apple.com>
       
 27454 
       
 27455         Reviewed by Gavin Barraclough.
       
 27456 
       
 27457         <rdar://problem/6992806> REGRESSION: Enumeration can skip new properties in cases of prototypes that have more than 64 (26593)
       
 27458         <https://bugs.webkit.org/show_bug.cgi?id=26593>
       
 27459 
       
 27460         Do not attempt to cache structure chains if they contain a dictionary at any level.
       
 27461 
       
 27462         * interpreter/Interpreter.cpp:
       
 27463         (JSC::Interpreter::tryCachePutByID):
       
 27464         (JSC::Interpreter::tryCacheGetByID):
       
 27465         * jit/JITStubs.cpp:
       
 27466         (JSC::JITThunks::tryCachePutByID):
       
 27467         * runtime/Structure.cpp:
       
 27468         (JSC::Structure::getEnumerablePropertyNames):
       
 27469         (JSC::Structure::addPropertyTransition):
       
 27470         * runtime/StructureChain.cpp:
       
 27471         (JSC::StructureChain::isCacheable):
       
 27472         * runtime/StructureChain.h:
       
 27473 
       
 27474 2009-06-23  Yong Li  <yong.li@torchmobile.com>
       
 27475 
       
 27476         Reviewed by George Staikos.
       
 27477 
       
 27478         https://bugs.webkit.org/show_bug.cgi?id=26654
       
 27479         Add the proper export define for the JavaScriptCore API when building for WINCE.
       
 27480 
       
 27481         * API/JSBase.h:
       
 27482 
       
 27483 2009-06-23  Joe Mason  <joe.mason@torchmobile.com>
       
 27484 
       
 27485         Reviewed by Adam Treat.
       
 27486 
       
 27487         Authors: Yong Li <yong.li@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com>
       
 27488 
       
 27489         https://bugs.webkit.org/show_bug.cgi?id=26611
       
 27490         Implement currentThreadStackBase on WINCE by adding a global,
       
 27491         g_stackBase, which must be set to the address of a local variable
       
 27492         by the caller before calling any WebKit function that invokes JSC.
       
 27493 
       
 27494         * runtime/Collector.cpp:
       
 27495         (JSC::isPageWritable):
       
 27496         (JSC::getStackBase):
       
 27497           Starts at the top of the stack and returns the entire range of
       
 27498           consecutive writable pages as an estimate of the actual stack.
       
 27499           This will be much bigger than the actual stack range, so some
       
 27500           dead objects can't be collected, but it guarantees live objects
       
 27501           aren't collected prematurely.
       
 27502 
       
 27503         (JSC::currentThreadStackBase):
       
 27504           On WinCE, returns g_stackBase if set or call getStackBase as a
       
 27505           fallback if not.
       
 27506 
       
 27507 2009-06-23  Oliver Hunt  <oliver@apple.com>
       
 27508 
       
 27509         Reviewed by Alexey Proskuryakov.
       
 27510 
       
 27511         Fix stupid performance problem in the LiteralParser
       
 27512 
       
 27513         The LiteralParser was making a new UString in order to use
       
 27514         toDouble, however UString's toDouble allows a much wider range
       
 27515         of numberic strings than the LiteralParser accepts, and requires
       
 27516         an additional heap allocation or two for the construciton of the
       
 27517         UString.  To rectify this we just call WTF::dtoa directly using
       
 27518         a stack allocated buffer to hold the validated numeric literal.
       
 27519 
       
 27520         * runtime/LiteralParser.cpp:
       
 27521         (JSC::LiteralParser::Lexer::lexNumber):
       
 27522         (JSC::LiteralParser::parse):
       
 27523         * runtime/LiteralParser.h:
       
 27524 
       
 27525 2009-06-22  Oliver Hunt  <oliver@apple.com>
       
 27526 
       
 27527         Reviewed by Alexey Proskuryakov.
       
 27528 
       
 27529         Bug 26640: JSON.stringify needs to special case Boolean objects
       
 27530         <https://bugs.webkit.org/show_bug.cgi?id=26640>
       
 27531 
       
 27532         Add special case handling of the Boolean object so we match current
       
 27533         ES5 errata.
       
 27534 
       
 27535         * runtime/JSONObject.cpp:
       
 27536         (JSC::unwrapBoxedPrimitive): renamed from unwrapNumberOrString
       
 27537         (JSC::gap):
       
 27538         (JSC::Stringifier::appendStringifiedValue):
       
 27539 
       
 27540 2009-06-22  Oliver Hunt  <oliver@apple.com>
       
 27541 
       
 27542         Reviewed by Darin Adler.
       
 27543 
       
 27544         Bug 26591: Support revivers in JSON.parse
       
 27545         <https://bugs.webkit.org/show_bug.cgi?id=26591>
       
 27546 
       
 27547         Add reviver support to JSON.parse.  This completes the JSON object.
       
 27548 
       
 27549         * runtime/JSONObject.cpp:
       
 27550         (JSC::Walker::Walker):
       
 27551         (JSC::Walker::callReviver):
       
 27552         (JSC::Walker::walk):
       
 27553         (JSC::JSONProtoFuncParse):
       
 27554 
       
 27555 2009-06-21  Oliver Hunt  <oliver@apple.com>
       
 27556 
       
 27557         Reviewed by Darin Adler.
       
 27558 
       
 27559         Bug 26592: Support standard toJSON functions
       
 27560         <https://bugs.webkit.org/show_bug.cgi?id=26592>
       
 27561 
       
 27562         Add support for the standard Date.toJSON function.
       
 27563 
       
 27564         * runtime/DatePrototype.cpp:
       
 27565         (JSC::dateProtoFuncToJSON):
       
 27566 
       
 27567 2009-06-21  Oliver Hunt  <oliver@apple.com>
       
 27568 
       
 27569         Reviewed by Sam Weinig.
       
 27570 
       
 27571         Bug 26594: JSC needs to support Date.toISOString
       
 27572         <https://bugs.webkit.org/show_bug.cgi?id=26594>
       
 27573 
       
 27574         Add support for Date.toISOString.
       
 27575 
       
 27576         * runtime/DatePrototype.cpp:
       
 27577         (JSC::dateProtoFuncToISOString):
       
 27578 
       
 27579 2009-06-21  Oliver Hunt  <oliver@apple.com>
       
 27580 
       
 27581         Remove dead code.
       
 27582 
       
 27583         * runtime/LiteralParser.cpp:
       
 27584         (JSC::LiteralParser::parse):
       
 27585 
       
 27586 2009-06-21  Oliver Hunt  <oliver@apple.com>
       
 27587 
       
 27588         Reviewed by Darin Adler and Cameron Zwarich.
       
 27589 
       
 27590         Bug 26587: Support JSON.parse
       
 27591         <https://bugs.webkit.org/show_bug.cgi?id=26587>
       
 27592 
       
 27593         Extend the LiteralParser to support the full strict JSON
       
 27594         grammar, fix a few places where the grammar was incorrectly
       
 27595         lenient.   Doesn't yet support the JSON.parse reviver function
       
 27596         but that does not block the JSON.parse functionality itself.
       
 27597 
       
 27598         * interpreter/Interpreter.cpp:
       
 27599         (JSC::Interpreter::callEval):
       
 27600         * runtime/JSGlobalObjectFunctions.cpp:
       
 27601         (JSC::globalFuncEval):
       
 27602         * runtime/JSONObject.cpp:
       
 27603         (JSC::JSONProtoFuncParse):
       
 27604         * runtime/LiteralParser.cpp:
       
 27605         (JSC::LiteralParser::Lexer::lex):
       
 27606         (JSC::isSafeStringCharacter):
       
 27607         (JSC::LiteralParser::Lexer::lexString):
       
 27608         (JSC::LiteralParser::parse):
       
 27609         * runtime/LiteralParser.h:
       
 27610         (JSC::LiteralParser::LiteralParser):
       
 27611         (JSC::LiteralParser::tryJSONParse):
       
 27612         (JSC::LiteralParser::):
       
 27613         (JSC::LiteralParser::Lexer::Lexer):
       
 27614 
       
 27615 2009-06-21  David Levin  <levin@chromium.org>
       
 27616 
       
 27617         Reviewed by NOBODY (speculative build fix for windows).
       
 27618 
       
 27619         Simply removed some whitespace form this file to make windows build wtf and
       
 27620         hopefully copy the new MessageQueque.h so that WebCore picks it up.
       
 27621 
       
 27622         * wtf/Assertions.cpp:
       
 27623 
       
 27624 2009-06-21  Drew Wilson  <atwilson@google.com>
       
 27625 
       
 27626         Reviewed by David Levin.
       
 27627 
       
 27628         <https://bugs.webkit.org/show_bug.cgi?id=25043>
       
 27629         Added support for multi-threaded MessagePorts.
       
 27630 
       
 27631         * wtf/MessageQueue.h:
       
 27632         (WTF::::appendAndCheckEmpty):
       
 27633             Added API to test whether the queue was empty before adding an element.
       
 27634   
       
 27635 2009-06-20  David D. Kilzer  <ddkilzer@webkit.org>
       
 27636 
       
 27637         Fix namespace comment in SegmentedVector.h
       
 27638 
       
 27639         * wtf/SegmentedVector.h: Updated namespace comment to reflect
       
 27640         new namespace after r44897.
       
 27641 
       
 27642 2009-06-20  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
       
 27643 
       
 27644         Bug 24986: ARM JIT port
       
 27645         <https://bugs.webkit.org/show_bug.cgi?id=24986>
       
 27646 
       
 27647         Reviewed by Oliver Hunt.
       
 27648 
       
 27649         An Iterator added for SegmentedVector. Currently
       
 27650         only the pre ++ operator is supported.
       
 27651 
       
 27652         * wtf/SegmentedVector.h:
       
 27653         (WTF::SegmentedVectorIterator::~SegmentedVectorIterator):
       
 27654         (WTF::SegmentedVectorIterator::operator*):
       
 27655         (WTF::SegmentedVectorIterator::operator->):
       
 27656         (WTF::SegmentedVectorIterator::operator++):
       
 27657         (WTF::SegmentedVectorIterator::operator==):
       
 27658         (WTF::SegmentedVectorIterator::operator!=):
       
 27659         (WTF::SegmentedVectorIterator::operator=):
       
 27660         (WTF::SegmentedVectorIterator::SegmentedVectorIterator):
       
 27661         (WTF::SegmentedVector::alloc):
       
 27662         (WTF::SegmentedVector::begin):
       
 27663         (WTF::SegmentedVector::end):
       
 27664 
       
 27665 2009-06-20  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
       
 27666 
       
 27667         Bug 24986: ARM JIT port
       
 27668         <https://bugs.webkit.org/show_bug.cgi?id=24986>
       
 27669 
       
 27670         Reviewed by Oliver Hunt.
       
 27671 
       
 27672         Move SegmentedVector to /wtf subdirectory
       
 27673         and change "namespace JSC" to "namespace WTF"
       
 27674 
       
 27675         Additional build file updates by David Kilzer.
       
 27676 
       
 27677         * GNUmakefile.am: Updated path to SegmentedVector.h.
       
 27678         * JavaScriptCore.order: Updated SegmentedVector namespace from
       
 27679         JSC to WTF in mangled C++ method name.
       
 27680         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
       
 27681         Removed reference to bytecompiler\SegmentedVector.h.
       
 27682         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added reference to
       
 27683         wtf\SegmentedVector.h.
       
 27684         * JavaScriptCore.xcodeproj/project.pbxproj: Moved
       
 27685         SegmentedVector.h definition from bytecompiler subdirectory to
       
 27686         wtf subdirectory.
       
 27687         * bytecompiler/BytecodeGenerator.h: Updated #include path to
       
 27688         SegmentedVector.h and prepended WTF:: namespace to its use.
       
 27689         * parser/Lexer.h: Ditto.
       
 27690         * wtf/SegmentedVector.h: Renamed from JavaScriptCore/bytecompiler/SegmentedVector.h.
       
 27691         (WTF::SegmentedVector::SegmentedVector):
       
 27692         (WTF::SegmentedVector::~SegmentedVector):
       
 27693         (WTF::SegmentedVector::size):
       
 27694         (WTF::SegmentedVector::at):
       
 27695         (WTF::SegmentedVector::operator[]):
       
 27696         (WTF::SegmentedVector::last):
       
 27697         (WTF::SegmentedVector::append):
       
 27698         (WTF::SegmentedVector::removeLast):
       
 27699         (WTF::SegmentedVector::grow):
       
 27700         (WTF::SegmentedVector::clear):
       
 27701         (WTF::SegmentedVector::deleteAllSegments):
       
 27702         (WTF::SegmentedVector::segmentExistsFor):
       
 27703         (WTF::SegmentedVector::segmentFor):
       
 27704         (WTF::SegmentedVector::subscriptFor):
       
 27705         (WTF::SegmentedVector::ensureSegmentsFor):
       
 27706         (WTF::SegmentedVector::ensureSegment):
       
 27707 
       
 27708 2009-06-19  Gavin Barraclough  <barraclough@apple.com>
       
 27709 
       
 27710         Reviewed by NOBODY (build fix take 2 - rename FIELD_OFFSET to something that doesn't conflict with winnt.h).
       
 27711 
       
 27712         * jit/JIT.cpp:
       
 27713         (JSC::JIT::privateCompile):
       
 27714         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 27715         (JSC::JIT::emitGetVariableObjectRegister):
       
 27716         (JSC::JIT::emitPutVariableObjectRegister):
       
 27717         * jit/JIT.h:
       
 27718         * jit/JITArithmetic.cpp:
       
 27719         (JSC::JIT::emit_op_rshift):
       
 27720         (JSC::JIT::emitSlow_op_jnless):
       
 27721         (JSC::JIT::emitSlow_op_jnlesseq):
       
 27722         (JSC::JIT::compileBinaryArithOp):
       
 27723         * jit/JITCall.cpp:
       
 27724         (JSC::JIT::compileOpCallInitializeCallFrame):
       
 27725         (JSC::JIT::compileOpCall):
       
 27726         * jit/JITInlineMethods.h:
       
 27727         (JSC::JIT::restoreArgumentReference):
       
 27728         (JSC::JIT::checkStructure):
       
 27729         * jit/JITOpcodes.cpp:
       
 27730         (JSC::JIT::emit_op_instanceof):
       
 27731         (JSC::JIT::emit_op_get_scoped_var):
       
 27732         (JSC::JIT::emit_op_put_scoped_var):
       
 27733         (JSC::JIT::emit_op_construct_verify):
       
 27734         (JSC::JIT::emit_op_resolve_global):
       
 27735         (JSC::JIT::emit_op_jeq_null):
       
 27736         (JSC::JIT::emit_op_jneq_null):
       
 27737         (JSC::JIT::emit_op_to_jsnumber):
       
 27738         (JSC::JIT::emit_op_catch):
       
 27739         (JSC::JIT::emit_op_eq_null):
       
 27740         (JSC::JIT::emit_op_neq_null):
       
 27741         (JSC::JIT::emit_op_convert_this):
       
 27742         (JSC::JIT::emit_op_profile_will_call):
       
 27743         (JSC::JIT::emit_op_profile_did_call):
       
 27744         (JSC::JIT::emitSlow_op_get_by_val):
       
 27745         * jit/JITPropertyAccess.cpp:
       
 27746         (JSC::JIT::emit_op_get_by_val):
       
 27747         (JSC::JIT::emit_op_put_by_val):
       
 27748         (JSC::JIT::emit_op_method_check):
       
 27749         (JSC::JIT::compileGetByIdHotPath):
       
 27750         (JSC::JIT::emit_op_put_by_id):
       
 27751         (JSC::JIT::compilePutDirectOffset):
       
 27752         (JSC::JIT::compileGetDirectOffset):
       
 27753         (JSC::JIT::privateCompilePutByIdTransition):
       
 27754         (JSC::JIT::privateCompilePatchGetArrayLength):
       
 27755         * jit/JITStubs.cpp:
       
 27756         (JSC::JITThunks::JITThunks):
       
 27757 
       
 27758 2009-06-19  Gavin Barraclough  <barraclough@apple.com>
       
 27759 
       
 27760         Reviewed by NOBODY (Windows build fix).
       
 27761 
       
 27762         * jit/JIT.h:
       
 27763         * jit/JITInlineMethods.h:
       
 27764 
       
 27765 2009-06-19  Gabor Loki  <loki@inf.u-szeged.hu>
       
 27766 
       
 27767         Reviewed by Gavin Barraclough.
       
 27768 
       
 27769         Reorganize ARM architecture specific macros.
       
 27770         Use PLATFORM_ARM_ARCH(7) instead of PLATFORM(ARM_V7).
       
 27771 
       
 27772         Bug 24986: ARM JIT port
       
 27773         <https://bugs.webkit.org/show_bug.cgi?id=24986>
       
 27774 
       
 27775         * assembler/ARMv7Assembler.h:
       
 27776         * assembler/AbstractMacroAssembler.h:
       
 27777         (JSC::AbstractMacroAssembler::Imm32::Imm32):
       
 27778         * assembler/MacroAssembler.h:
       
 27779         * assembler/MacroAssemblerCodeRef.h:
       
 27780         (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
       
 27781         * jit/ExecutableAllocator.h:
       
 27782         (JSC::ExecutableAllocator::cacheFlush):
       
 27783         * jit/JIT.h:
       
 27784         * jit/JITInlineMethods.h:
       
 27785         (JSC::JIT::restoreArgumentReferenceForTrampoline):
       
 27786         * jit/JITStubs.cpp:
       
 27787         * jit/JITStubs.h:
       
 27788         * wtf/Platform.h:
       
 27789         * yarr/RegexJIT.cpp:
       
 27790         (JSC::Yarr::RegexGenerator::generateEnter):
       
 27791         (JSC::Yarr::RegexGenerator::generateReturn):
       
 27792 
       
 27793 2009-06-19  Gavin Barraclough  <barraclough@apple.com>
       
 27794 
       
 27795         Reviewed by Oliver Hunt.
       
 27796 
       
 27797         Fix armv7 JIT build issues.
       
 27798 
       
 27799         Unfortunate the arm compiler does not like the use of offsetof on JITStackFrame (since it now contains non POD types),
       
 27800         and the FIELD_OFFSET macro does not appear constantish enough for it to be happy with its use in COMPILE_ASSERT macros.
       
 27801 
       
 27802         * Replace offsetofs with FIELD_OFFSETs (safe on C++ objects).
       
 27803         * Move COMPILE_ASSERTs defending layout of JITStackFrame structure on armv7 into JITThunks constructor.
       
 27804 
       
 27805         * jit/JIT.cpp:
       
 27806         * jit/JIT.h:
       
 27807         * jit/JITInlineMethods.h:
       
 27808         (JSC::JIT::restoreArgumentReference):
       
 27809         * jit/JITOpcodes.cpp:
       
 27810         (JSC::JIT::emit_op_catch):
       
 27811         * jit/JITStubs.cpp:
       
 27812         (JSC::JITThunks::JITThunks):
       
 27813 
       
 27814 2009-06-19  Adam Treat  <adam.treat@torchmobile.com>
       
 27815 
       
 27816         Blind attempt at build fix.
       
 27817 
       
 27818         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 27819         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 27820 
       
 27821 2009-06-19  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 27822 
       
 27823         Reviewed by Oliver Hunt.
       
 27824 
       
 27825         Inherits CallIdentifier struct from FastAllocBase because it has been
       
 27826         instantiated by 'new' in JavaScriptCore/profiler/CallIdentifier.h:86.
       
 27827 
       
 27828         * wtf/HashCountedSet.h:
       
 27829 
       
 27830 2009-06-19  Adam Treat  <adam.treat@torchmobile.com>
       
 27831 
       
 27832         Reviewed by Oliver Hunt.
       
 27833 
       
 27834         https://bugs.webkit.org/show_bug.cgi?id=26540
       
 27835         Modify the test shell to add a new function 'checkSyntax' that will
       
 27836         only parse the source instead of executing it. In this way we can test
       
 27837         pure parsing performance against some of the larger scripts in the wild.
       
 27838 
       
 27839         * jsc.cpp:
       
 27840         (GlobalObject::GlobalObject):
       
 27841         (functionCheckSyntax):
       
 27842 
       
 27843 2009-06-19  Zoltan Horvath  <hzoltan@inf.u-szeged.hu>
       
 27844 
       
 27845         Reviewed by Darin Adler.
       
 27846         
       
 27847         Inherits HashCountedSet class from FastAllocBase because it has been
       
 27848         instantiated by 'new' in JavaScriptCore/runtime/Collector.cpp:1095.
       
 27849 
       
 27850         * wtf/HashCountedSet.h:
       
 27851 
       
 27852 2009-06-19  Yong Li  <yong.li@torchmobile.com>
       
 27853 
       
 27854         Reviewed by George Staikos.
       
 27855 
       
 27856         https://bugs.webkit.org/show_bug.cgi?id=26558
       
 27857         Declare these symbols extern for WINCE as they are provided by libce.
       
 27858 
       
 27859         * runtime/DateConstructor.cpp:
       
 27860         * runtime/DatePrototype.cpp:
       
 27861         (JSC::formatLocaleDate):
       
 27862 
       
 27863 2009-06-19  Oliver Hunt  <oliver@apple.com>
       
 27864 
       
 27865         Reviewed by Maciej Stachowiak.
       
 27866 
       
 27867         <rdar://problem/6988973> ScopeChain leak in interpreter builds
       
 27868 
       
 27869         Move the Scopechain destruction code in JSFunction outside of the ENABLE(JIT)
       
 27870         path.
       
 27871 
       
 27872         * runtime/JSFunction.cpp:
       
 27873         (JSC::JSFunction::~JSFunction):
       
 27874         * wtf/Platform.h:
       
 27875 
       
 27876 2009-06-19  Yong Li  <yong.li@torchmobile.com>
       
 27877 
       
 27878         Reviewed by George Staikos.
       
 27879 
       
 27880         https://bugs.webkit.org/show_bug.cgi?id=26543
       
 27881         Windows CE uses 'GetLastError' instead of 'errno.'
       
 27882 
       
 27883         * interpreter/RegisterFile.h:
       
 27884         (JSC::RegisterFile::RegisterFile):
       
 27885         (JSC::RegisterFile::grow):
       
 27886 
       
 27887 2009-06-19  David Levin  <levin@chromium.org>
       
 27888 
       
 27889         Reviewed by NOBODY (Windows build fix).
       
 27890 
       
 27891         Add export for Windows corresponding to OSX export done in r44844.
       
 27892         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
       
 27893         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
       
 27894 
       
 27895 2009-06-18  Oliver Hunt  <oliver@apple.com>
       
 27896 
       
 27897         Reviewed by Gavin "Viceroy of Venezuela" Barraclough.
       
 27898 
       
 27899         Bug 26532: Native functions do not correctly unlink from optimised callsites when they're collected
       
 27900         <https://bugs.webkit.org/show_bug.cgi?id=26532> <rdar://problem/6625385>
       
 27901 
       
 27902         We need to make sure that each native function instance correctly unlinks any references to it
       
 27903         when it is collected.  Allowing this to happen required a few changes:
       
 27904             * Every native function needs a codeblock to track the link information
       
 27905             * To have this codeblock, every function now also needs its own functionbodynode
       
 27906               so we no longer get to have a single shared instance.
       
 27907             * Identifying a host function is now done by looking for CodeBlock::codeType() == NativeCode
       
 27908 
       
 27909         * JavaScriptCore.exp:
       
 27910         * bytecode/CodeBlock.cpp:
       
 27911         (JSC::CodeBlock::CodeBlock):
       
 27912            Constructor for NativeCode CodeBlock
       
 27913         (JSC::CodeBlock::derefStructures):
       
 27914         (JSC::CodeBlock::refStructures):
       
 27915         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
       
 27916         (JSC::CodeBlock::handlerForBytecodeOffset):
       
 27917         (JSC::CodeBlock::lineNumberForBytecodeOffset):
       
 27918         (JSC::CodeBlock::expressionRangeForBytecodeOffset):
       
 27919         (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
       
 27920         (JSC::CodeBlock::functionRegisterForBytecodeOffset):
       
 27921         (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset):
       
 27922         (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset):
       
 27923         (JSC::CodeBlock::setJITCode):
       
 27924            Add assertions to ensure we don't try and use NativeCode CodeBlocks as
       
 27925            a normal codeblock.
       
 27926 
       
 27927         * bytecode/CodeBlock.h:
       
 27928         (JSC::):
       
 27929         (JSC::CodeBlock::source):
       
 27930         (JSC::CodeBlock::sourceOffset):
       
 27931         (JSC::CodeBlock::evalCodeCache):
       
 27932         (JSC::CodeBlock::createRareDataIfNecessary):
       
 27933           More assertions.
       
 27934 
       
 27935         * jit/JIT.cpp:
       
 27936         (JSC::JIT::privateCompileCTIMachineTrampolines):
       
 27937         (JSC::JIT::linkCall):
       
 27938           Update logic to allow native function caching
       
 27939 
       
 27940         * jit/JITStubs.cpp:
       
 27941         * parser/Nodes.cpp:
       
 27942         (JSC::FunctionBodyNode::createNativeThunk):
       
 27943         (JSC::FunctionBodyNode::isHostFunction):
       
 27944         * parser/Nodes.h:
       
 27945         * runtime/JSFunction.cpp:
       
 27946         (JSC::JSFunction::JSFunction):
       
 27947         (JSC::JSFunction::~JSFunction):
       
 27948         (JSC::JSFunction::mark):
       
 27949         * runtime/JSGlobalData.cpp:
       
 27950         (JSC::JSGlobalData::~JSGlobalData):
       
 27951         * runtime/JSGlobalData.h:
       
 27952 
       
 27953 2009-06-18  Gavin Barraclough  <barraclough@apple.com>
       
 27954 
       
 27955         Reviewed by NOBODY (Windows build fix).
       
 27956 
       
 27957         * wtf/DateMath.cpp:
       
 27958         (WTF::calculateUTCOffset):
       
 27959 
       
 27960 2009-06-18  Gavin Barraclough  <barraclough@apple.com>
       
 27961 
       
 27962         Reviewed by Geoff Garen.
       
 27963 
       
 27964         Timezone calculation incorrect in Venezuela.
       
 27965 
       
 27966         https://bugs.webkit.org/show_bug.cgi?id=26531
       
 27967         <rdar://problem/6646169> Time is incorrectly reported to JavaScript in both Safari 3 and Firefox 3
       
 27968 
       
 27969         The problem is that we're calculating the timezone relative to 01/01/2000,
       
 27970         but the VET timezone changed from -4 hours to -4:30 hours on 12/09/2007.
       
 27971         According to the spec, section 15.9.1.9 states "the time since the beginning
       
 27972         of the year", presumably meaning the *current* year.  Change the calculation
       
 27973         to be based on whatever the current year is, rather than a canned date.
       
 27974 
       
 27975         No performance impact.
       
 27976 
       
 27977         * wtf/DateMath.cpp:
       
 27978         (WTF::calculateUTCOffset):
       
 27979 
       
 27980 2009-06-18  Gavin Barraclough  <barraclough@apple.com>
       
 27981 
       
 27982         Rubber Stamped by Mark Rowe (originally reviewed by Sam Weinig).
       
 27983 
       
 27984         (Reintroducing patch added in r44492, and reverted in r44796.)
       
 27985 
       
 27986         Change the implementation of op_throw so the stub function always modifies its
       
 27987         return address - if it doesn't find a 'catch' it will switch to a trampoline
       
 27988         to force a return from JIT execution.  This saves memory, by avoiding the need
       
 27989         for a unique return for every op_throw.
       
 27990 
       
 27991         * jit/JITOpcodes.cpp:
       
 27992         (JSC::JIT::emit_op_throw):
       
 27993             JITStubs::cti_op_throw now always changes its return address,
       
 27994             remove return code generated after the stub call (this is now
       
 27995             handled by ctiOpThrowNotCaught).
       
 27996         * jit/JITStubs.cpp:
       
 27997         (JSC::):
       
 27998             Add ctiOpThrowNotCaught definitions.
       
 27999         (JSC::JITStubs::DEFINE_STUB_FUNCTION):
       
 28000             Change cti_op_throw to always change its return address.
       
 28001         * jit/JITStubs.h:
       
 28002             Add ctiOpThrowNotCaught declaration.
       
 28003 
       
 28004 2009-06-18  Kevin McCullough  <kmccullough@apple.com>
       
 28005 
       
 28006         Reviewed by Oliver Hunt.
       
 28007 
       
 28008         <rdar://problem/6940880> REGRESSION: Breakpoints don't break in 64-bit
       
 28009 
       
 28010         - Exposed functions now needed by WebCore.
       
 28011 
       
 28012         * JavaScriptCore.exp:
       
 28013 
       
 28014 2009-06-17  Darin Adler  <darin@apple.com>
       
 28015 
       
 28016         Reviewed by Oliver Hunt.
       
 28017 
       
 28018         Bug 26429: Make JSON.stringify non-recursive so it can handle objects
       
 28019         of arbitrary complexity
       
 28020         https://bugs.webkit.org/show_bug.cgi?id=26429
       
 28021 
       
 28022         For marking I decided not to use gcProtect, because this is inside the engine
       
 28023         so it's easy enough to just do marking. And that darned gcProtect does locking!
       
 28024         Oliver tried to convince me to used MarkedArgumentBuffer, but the constructor
       
 28025         for that class says "FIXME: Remove all clients of this API, then remove this API."
       
 28026 
       
 28027         * runtime/Collector.cpp:
       
 28028         (JSC::Heap::collect): Add a call to JSONObject::markStringifiers.
       
 28029 
       
 28030         * runtime/CommonIdentifiers.cpp:
       
 28031         (JSC::CommonIdentifiers::CommonIdentifiers): Added emptyIdentifier.
       
 28032         * runtime/CommonIdentifiers.h: Ditto.
       
 28033 
       
 28034         * runtime/JSGlobalData.cpp:
       
 28035         (JSC::JSGlobalData::JSGlobalData): Initialize firstStringifierToMark to 0.
       
 28036         * runtime/JSGlobalData.h: Added firstStringifierToMark.
       
 28037 
       
 28038         * runtime/JSONObject.cpp: Cut down the includes to the needed ones only.
       
 28039         (JSC::unwrapNumberOrString): Added. Helper for unwrapping number and string
       
 28040         objects to get their number and string values.
       
 28041         (JSC::ReplacerPropertyName::ReplacerPropertyName): Added. The class is used
       
 28042         to wrap an identifier or integer so we don't have to do any work unless we
       
 28043         actually call a replacer.
       
 28044         (JSC::ReplacerPropertyName::value): Added.
       
 28045         (JSC::gap): Added. Helper function for the Stringifier constructor.
       
 28046         (JSC::PropertyNameForFunctionCall::PropertyNameForFunctionCall): Added.
       
 28047         The class is used to wrap an identifier or integer so we don't have to
       
 28048         allocate a number or string until we actually call toJSON or a replacer.
       
 28049         (JSC::PropertyNameForFunctionCall::asJSValue): Added.
       
 28050         (JSC::Stringifier::Stringifier): Updated and moved out of the class
       
 28051         definition. Added code to hook this into a singly linked list for marking.
       
 28052         (JSC::Stringifier::~Stringifier): Remove from the singly linked list.
       
 28053         (JSC::Stringifier::mark): Mark all the objects in the holder stacks.
       
 28054         (JSC::Stringifier::stringify): Updated.
       
 28055         (JSC::Stringifier::appendQuotedString): Tweaked and streamlined a bit.
       
 28056         (JSC::Stringifier::toJSON): Renamed from toJSONValue.
       
 28057         (JSC::Stringifier::appendStringifiedValue): Renamed from stringify.
       
 28058         Added code to use the m_holderStack to do non-recursive stringify of
       
 28059         objects and arrays. This code also uses the timeout checker since in
       
 28060         pathological cases it could be slow even without calling into the
       
 28061         JavaScript virtual machine.
       
 28062         (JSC::Stringifier::willIndent): Added.
       
 28063         (JSC::Stringifier::indent): Added.
       
 28064         (JSC::Stringifier::unindent): Added.
       
 28065         (JSC::Stringifier::startNewLine): Added.
       
 28066         (JSC::Stringifier::Holder::Holder): Added.
       
 28067         (JSC::Stringifier::Holder::appendNextProperty): Added. This is the
       
 28068         function that handles the format of arrays and objects.
       
 28069         (JSC::JSONObject::getOwnPropertySlot): Moved this down to the bottom
       
 28070         of the file so the JSONObject class is not interleaved with the
       
 28071         Stringifier class.
       
 28072         (JSC::JSONObject::markStringifiers): Added. Calls mark.
       
 28073         (JSC::JSONProtoFuncStringify): Streamlined the code here. The code
       
 28074         to compute the gap string is now a separate function.
       
 28075 
       
 28076         * runtime/JSONObject.h: Made everything private. Added markStringifiers.
       
 28077 
       
 28078 2009-06-17  Oliver Hunt  <oliver@apple.com>
       
 28079 
       
 28080         Reviewed by Gavin Barraclough.
       
 28081 
       
 28082         <rdar://problem/6974140> REGRESSION(r43849): Crash in cti_op_call_NotJSFunction when getting directions on maps.google.com
       
 28083 
       
 28084         Roll out r43849 as it appears that we cannot rely on the address of
       
 28085         an objects property storage being constant even if the structure is
       
 28086         unchanged.
       
 28087 
       
 28088         * jit/JIT.h:
       
 28089         * jit/JITPropertyAccess.cpp:
       
 28090         (JSC::JIT::compileGetDirectOffset):
       
 28091         (JSC::JIT::privateCompileGetByIdProto):
       
 28092         (JSC::JIT::privateCompileGetByIdProtoList):
       
 28093         (JSC::JIT::privateCompileGetByIdChainList):
       
 28094         (JSC::JIT::privateCompileGetByIdChain):
       
 28095 
       
 28096 2009-06-17  Gavin Barraclough  <barraclough@apple.com>
       
 28097 
       
 28098         Rubber Stamped by Mark Rowe.
       
 28099 
       
 28100         Fully revert r44492 & r44748 while we fix a bug they cause on internal builds <rdar://problem/6955963>.
       
 28101 
       
 28102         * jit/JITOpcodes.cpp:
       
 28103         (JSC::JIT::emit_op_throw):
       
 28104         * jit/JITStubs.cpp:
       
 28105         (JSC::):
       
 28106         (JSC::JITStubs::DEFINE_STUB_FUNCTION):
       
 28107         * jit/JITStubs.h:
       
 28108 
       
 28109 2009-06-17  Gavin Barraclough  <barraclough@apple.com>
       
 28110 
       
 28111         Reviewed by Mark Rowe.
       
 28112 
       
 28113         <rdar://problem/6947426> sunspider math-cordic.js exhibits different intermediate results running 32-bit vs. 64-bit
       
 28114 
       
 28115         On 64-bit, NaN-encoded values must be detagged before they can be used in rshift.
       
 28116 
       
 28117         No performance impact.
       
 28118 
       
 28119         * jit/JITArithmetic.cpp:
       
 28120         (JSC::JIT::emit_op_rshift):
       
 28121 
       
 28122 2009-06-17  Adam Treat  <adam.treat@torchmobile.com>
       
 28123 
       
 28124         Reviewed by George Staikos.
       
 28125 
       
 28126         https://bugs.webkit.org/show_bug.cgi?id=23155
       
 28127         Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks.
       
 28128 
       
 28129         * jsc.cpp:
       
 28130         (main):
       
 28131 
       
 28132 2009-06-17  George Staikos  <george.staikos@torchmobile.com>
       
 28133 
       
 28134         Reviewed by Adam Treat.
       
 28135 
       
 28136         https://bugs.webkit.org/show_bug.cgi?id=23155
       
 28137         Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks.
       
 28138 
       
 28139         * config.h:
       
 28140         * jsc.cpp:
       
 28141         * wtf/Assertions.cpp:
       
 28142         * wtf/Assertions.h:
       
 28143         * wtf/CurrentTime.cpp:
       
 28144         (WTF::lowResUTCTime):
       
 28145         * wtf/DateMath.cpp:
       
 28146         (WTF::getLocalTime):
       
 28147         * wtf/MathExtras.h:
       
 28148         * wtf/Platform.h:
       
 28149         * wtf/StringExtras.h:
       
 28150         * wtf/Threading.h:
       
 28151         * wtf/win/MainThreadWin.cpp:
       
 28152 
       
 28153 2009-06-17  Gavin Barraclough  <barraclough@apple.com>
       
 28154 
       
 28155         Reviewed by Oliver Hunt.
       
 28156 
       
 28157         <rdar://problem/6974175> ASSERT in JITStubs.cpp at appsaccess.apple.com
       
 28158 
       
 28159         Remove PropertySlot::putValue - PropertySlots should only be used for getting,
       
 28160         not putting.  Rename JSGlobalObject::getOwnPropertySlot to hasOwnPropertyForWrite,
       
 28161         which is what it really was being used to ask, and remove some other getOwnPropertySlot
       
 28162         & getOwnPropertySlotForWrite methods, which were unused and likely to lead to confusion.
       
 28163 
       
 28164         * runtime/JSGlobalObject.h:
       
 28165         (JSC::JSGlobalObject::hasOwnPropertyForWrite):
       
 28166         * runtime/JSObject.h:
       
 28167         * runtime/JSStaticScopeObject.cpp:
       
 28168         * runtime/JSStaticScopeObject.h:
       
 28169         * runtime/PropertySlot.h:
       
 28170 
       
 28171 2009-06-16  Gavin Barraclough  <barraclough@apple.com>
       
 28172 
       
 28173         Reviewed by Oliver hunt.
       
 28174 
       
 28175         Temporarily partially disable r44492, since this is causing some problems on internal builds.
       
 28176 
       
 28177         * jit/JITOpcodes.cpp:
       
 28178         (JSC::JIT::emit_op_throw):
       
 28179         * jit/JITStubs.cpp:
       
 28180         (JSC::JITStubs::DEFINE_STUB_FUNCTION):
       
 28181 
       
 28182 2009-06-16  Sam Weinig  <sam@webkit.org>
       
 28183 
       
 28184         Fix windows build.
       
 28185 
       
 28186         * jit/JIT.cpp:
       
 28187         (JSC::JIT::JIT):
       
 28188 
       
 28189 2009-06-16  Sam Weinig  <sam@webkit.org>
       
 28190 
       
 28191         Reviewed by Oliver Hunt.
       
 28192 
       
 28193         Initialize m_bytecodeIndex to -1 in JIT, and correctly initialize
       
 28194         it for each type of stub using the return address to find the correct
       
 28195         offset.
       
 28196 
       
 28197         * jit/JIT.cpp:
       
 28198         (JSC::JIT::JIT):
       
 28199         * jit/JIT.h:
       
 28200         (JSC::JIT::compileGetByIdProto):
       
 28201         (JSC::JIT::compileGetByIdSelfList):
       
 28202         (JSC::JIT::compileGetByIdProtoList):
       
 28203         (JSC::JIT::compileGetByIdChainList):
       
 28204         (JSC::JIT::compileGetByIdChain):
       
 28205         (JSC::JIT::compilePutByIdTransition):
       
 28206         (JSC::JIT::compileCTIMachineTrampolines):
       
 28207         (JSC::JIT::compilePatchGetArrayLength):
       
 28208         * jit/JITStubCall.h:
       
 28209         (JSC::JITStubCall::call):
       
 28210 
       
 28211 == Rolled over to ChangeLog-2009-06-16 ==