Home | History | Annotate | Download | only in JavaScriptCore
      1 2010-02-12  Janne Koskinen  <janne.p.koskinen (a] digia.com>
      2 
      3         Reviewed by Tor Arne Vestb.
      4 
      5         Additional refptr/passrefptr workarounds for WINSCW compiler
      6         https://bugs.webkit.org/show_bug.cgi?id=28054
      7 
      8         * wtf/PassRefPtr.h:
      9         (WTF::refIfNotNull):
     10         (WTF::PassRefPtr::PassRefPtr):
     11         (WTF::PassRefPtr::~PassRefPtr):
     12         (WTF::PassRefPtr::clear):
     13         (WTF::::operator):
     14         * wtf/RefPtr.h:
     15         (WTF::RefPtr::RefPtr):
     16         (WTF::::operator):
     17 
     18 2010-02-12  Janne Koskinen  <janne.p.koskinen (a] digia.com>
     19 
     20         Reviewed by Simon Hausmann.
     21 
     22         Don't import the cmath functions from std:: for WINSCW.
     23 
     24         * wtf/MathExtras.h:
     25 
     26 2010-02-12  Kwang Yul Seo  <skyul (a] company100.net>
     27 
     28         Reviewed by Adam Barth.
     29 
     30         Typedef both JSChar and UChar to wchar_t in RVCT.
     31         https://bugs.webkit.org/show_bug.cgi?id=34560
     32 
     33         Define both JSChar and UChar to wchar_t as the size
     34         of wchar_t is 2 bytes in RVCT.
     35 
     36         * API/JSStringRef.h:
     37         * wtf/unicode/qt4/UnicodeQt4.h:
     38 
     39 2010-02-11  Geoffrey Garen  <ggaren (a] apple.com>
     40 
     41         Reviewed by Oliver Hunt and Darin Adler.
     42 
     43         The rest of the fix for
     44         https://bugs.webkit.org/show_bug.cgi?id=34864 | <rdar://problem/7594198>
     45         Many objects left uncollected after visiting mail.google.com and closing
     46         window
     47         
     48         Don't unconditionally hang onto small strings. Instead, hang onto all
     49         small strings as long as any small string is still referenced.
     50         
     51         SunSpider reports no change.
     52 
     53         * runtime/Collector.cpp:
     54         (JSC::Heap::markRoots): Mark the small strings cache last, so it can
     55         check if anything else has kept any strings alive.
     56 
     57         * runtime/SmallStrings.cpp:
     58         (JSC::isMarked):
     59         (JSC::SmallStrings::markChildren): Only keep our strings alive if some
     60         other reference to at least one of them exists, too.
     61 
     62 2010-02-11  Geoffrey Garen  <ggaren (a] apple.com>
     63 
     64         Reviewed by Gavin Barraclough.
     65 
     66         Some progress toward fixing
     67         https://bugs.webkit.org/show_bug.cgi?id=34864 | <rdar://problem/7594198>
     68         Many objects left uncollected after visiting mail.google.com and closing
     69         window
     70         
     71         SunSpider reports no change.
     72         
     73         Keep weak references, rather than protected references, to cached for-in
     74         property name enumerators.
     75         
     76         One problem with protected references is that a chain like 
     77             [ gc object 1 ] => [ non-gc object ] => [ gc object 2 ]
     78         takes two GC passes to break, since the first pass collects [ gc object 1 ],
     79         releasing [ non-gc object ] and unprotecting [ gc object 2 ], and only
     80         then can a second pass collect [ gc object 2 ].
     81         
     82         Another problem with protected references is that they can keep a bunch
     83         of strings alive long after they're useful. In SunSpider and a few popular
     84         websites, the size-speed tradeoff seems to favor weak references.
     85 
     86         * runtime/JSPropertyNameIterator.cpp:
     87         (JSC::JSPropertyNameIterator::JSPropertyNameIterator): Moved this constructor
     88         into the .cpp file, since it's not used elsewhere.
     89 
     90         (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): Added a destructor
     91         to support our weak reference.
     92 
     93         * runtime/JSPropertyNameIterator.h:
     94         (JSC::Structure::setEnumerationCache):
     95         (JSC::Structure::clearEnumerationCache):
     96         (JSC::Structure::enumerationCache): Added a function for clearing a
     97         Structure's enumeration cache, used by our new destructor. Also fixed
     98         indentation to match the rest of the file.
     99 
    100         * runtime/Structure.h: Changed from protected pointer to weak pointer.
    101 
    102 2010-02-11  Chris Rogers  <crogers (a] google.com>
    103 
    104         Reviewed by David Levin.
    105 
    106         audio engine: add Complex number class
    107         https://bugs.webkit.org/show_bug.cgi?id=34538
    108 
    109         * wtf/Complex.h: Added.
    110         (WebCore::complexFromMagnitudePhase):
    111 
    112 2010-02-10  Geoffrey Garen  <ggaren (a] apple.com>
    113 
    114         Reviewed by Oliver Hunt.
    115 
    116         Added an SPI for asking about all the different live objects on the heap.
    117         Useful for memory debugging.
    118 
    119         * JavaScriptCore.exp: Export the new SPI.
    120 
    121         * runtime/Collector.cpp:
    122         (JSC::typeName): Use a little capitalization. Don't crash in the case of
    123         a non-object cell, since it might just be an uninitialized cell.
    124 
    125         (JSC::Heap::objectTypeCounts): The new SPI.
    126 
    127         * runtime/Collector.h:
    128         * runtime/CollectorHeapIterator.h:
    129         (JSC::CollectorHeapIterator::advance):
    130         (JSC::LiveObjectIterator::operator++):
    131         (JSC::DeadObjectIterator::operator++):
    132         (JSC::ObjectIterator::operator++): Made 2 tweaks to these iterators:
    133         (1) Skip the last cell in the block, since it's a dummy sentinel, and
    134         we don't want it to confuse the object count; (2) Fixed a logic error
    135         in LiveObjectIterator that could cause it to iterate dead objects if
    136         m_block were equal to m_heap.nextBlock and m_cell were less than
    137         m_heap.nextCell. No test for this since I can't think of a way that this
    138         could make WebKit behave badly.
    139 
    140 2010-02-11  Steve Block  <steveblock (a] google.com>
    141 
    142         Reviewed by Darin Adler.
    143 
    144         Guard cmath using declarations in MathExtras.h on Android
    145         https://bugs.webkit.org/show_bug.cgi?id=34840
    146 
    147         Android does not provide these functions.
    148 
    149         * wtf/MathExtras.h:
    150 
    151 2010-02-08  Maciej Stachowiak  <mjs (a] apple.com>
    152 
    153         Reviewed by Cameron Zwarich.
    154 
    155         Restore ENABLE_RUBY flag so vendors can ship with Ruby disabled if they choose.
    156         https://bugs.webkit.org/show_bug.cgi?id=34698
    157 
    158         * Configurations/FeatureDefines.xcconfig:
    159 
    160 2010-02-10  Kevin Watters  <kevinwatters (a] gmail.com>
    161 
    162         Reviewed by Kevin Ollivier.
    163 
    164         [wx] Add Windows complex text support and Mac support for containsCharacters.
    165         
    166         https://bugs.webkit.org/show_bug.cgi?id=34759
    167 
    168         * wscript:
    169 
    170 2010-02-10  Alexey Proskuryakov  <ap (a] apple.com>
    171 
    172         Addressing issues found by style bot.
    173 
    174         * wtf/ValueCheck.h: Renamed header guard to match final file name.
    175 
    176         * wtf/Vector.h: (WTF::::checkConsistency): Remove braces around a one-line clause.
    177 
    178 2010-02-09  Alexey Proskuryakov  <ap (a] apple.com>
    179 
    180         Reviewed by Geoffrey Garen.
    181 
    182         https://bugs.webkit.org/show_bug.cgi?id=34490
    183         WebCore::ImageEventSender::dispatchPendingEvents() crashes in certain conditions
    184 
    185         * GNUmakefile.am:
    186         * JavaScriptCore.gypi:
    187         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
    188         * JavaScriptCore.xcodeproj/project.pbxproj:
    189         Added ValueCheck.h.
    190 
    191         * wtf/ValueCheck.h: Added. Moved code out of HashTraits, since it would be awkward to
    192         include that from Vector.h.
    193         (WTF::ValueCheck::checkConsistency): Allow null pointers, those are pretty consistent.
    194 
    195         * wtf/HashTraits.h: Moved value checking code out of here.
    196 
    197         * wtf/HashTable.h: (WTF::::checkTableConsistencyExceptSize): Updated for the above changes.
    198 
    199         * wtf/Vector.h:
    200         (WTF::::checkConsistency): Check all vector elements.
    201         (WTF::ValueCheck): Support checking a Vector as an element in other containers. Currently
    202         unused.
    203 
    204 2010-02-10  Jedrzej Nowacki  <jedrzej.nowacki (a] nokia.com>
    205 
    206         Reviewed by Simon Hausmann.
    207 
    208         Fix QScriptValue::toBool.
    209 
    210         Fix ECMA compliance in the QScriptValue for values like 0, NaN and
    211         empty strings.
    212 
    213         [Qt] QScriptValue::toBool problem
    214         https://bugs.webkit.org/show_bug.cgi?id=34793
    215 
    216         * qt/api/qscriptvalue_p.h:
    217         (QScriptValuePrivate::toBool):
    218         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
    219         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
    220         (tst_QScriptValue::toBool_initData):
    221         (tst_QScriptValue::toBool_makeData):
    222         (tst_QScriptValue::toBool_test):
    223         (tst_QScriptValue::toBoolean_initData):
    224         (tst_QScriptValue::toBoolean_makeData):
    225         (tst_QScriptValue::toBoolean_test):
    226 
    227 2009-10-06  Yongjun Zhang  <yongjun.zhang (a] nokia.com>
    228 
    229         Reviewed by Simon Hausmann.
    230 
    231         Use derefIfNotNull() to work around WINSCW compiler forward declaration bug
    232 
    233         The compiler bug is reported at
    234         https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812.
    235 
    236         The change should be reverted when the above bug is fixed in WINSCW compiler.
    237 
    238         https://bugs.webkit.org/show_bug.cgi?id=28054
    239 
    240 2009-10-06  Yongjun Zhang  <yongjun.zhang (a] nokia.com>
    241 
    242         Reviewed by Simon Hausmann.
    243 
    244         Get rid of WINSCW hack for UnSpecifiedBoolType
    245 
    246         Add parenthesis around (RefPtr::*UnspecifiedBoolType) to make the WINSCW
    247         compiler work with the default UnSpecifiedBoolType() operator.
    248 
    249         https://bugs.webkit.org/show_bug.cgi?id=28054
    250 
    251         * wtf/RefPtr.h:
    252 
    253 2010-02-09  Jedrzej Nowacki  <jedrzej.nowacki (a] nokia.com>
    254 
    255         Reviewed by Simon Hausmann.
    256 
    257         New functions nullValue() and undefinedValue().
    258 
    259         [Qt] QScriptEngine should contain nullValue and undefinedValue methods
    260         https://bugs.webkit.org/show_bug.cgi?id=34749
    261 
    262         * qt/api/qscriptengine.cpp:
    263         (QScriptEngine::nullValue):
    264         (QScriptEngine::undefinedValue):
    265         * qt/api/qscriptengine.h:
    266         * qt/tests/qscriptengine/tst_qscriptengine.cpp:
    267         (tst_QScriptEngine::nullValue):
    268         (tst_QScriptEngine::undefinedValue):
    269 
    270 2010-02-09  Jedrzej Nowacki  <jedrzej.nowacki (a] nokia.com>
    271 
    272         Reviewed by Simon Hausmann.
    273 
    274         Fixes for QScriptValue::toNumber().
    275 
    276         Fix ECMA compliance in QScriptValue for values unbound
    277         to a QScriptEngine.
    278 
    279         [Qt] QScriptValue::toNumber() is broken
    280         https://bugs.webkit.org/show_bug.cgi?id=34592
    281 
    282         * qt/api/qscriptvalue_p.h:
    283         (QScriptValuePrivate::toNumber):
    284         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
    285         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
    286         (tst_QScriptValue::toNumber_initData):
    287         (tst_QScriptValue::toNumber_makeData):
    288         (tst_QScriptValue::toNumber_test):
    289 
    290 2010-02-09  Jedrzej Nowacki  <jedrzej.nowacki (a] nokia.com>
    291 
    292         Reviewed by Simon Hausmann.
    293 
    294         Fix QScriptValue::isNumber().
    295 
    296         The isNumber() should return 'true' if the value is in the CNumber
    297         state.
    298 
    299         [Qt] QScriptValue::isNumber() returns an incorrect value
    300         https://bugs.webkit.org/show_bug.cgi?id=34575
    301 
    302         * qt/api/qscriptvalue_p.h:
    303         (QScriptValuePrivate::isNumber):
    304         * qt/tests/qscriptvalue/tst_qscriptvalue.h:
    305         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
    306         (tst_QScriptValue::isNumber_initData):
    307         (tst_QScriptValue::isNumber_makeData):
    308         (tst_QScriptValue::isNumber_test):
    309 
    310 2010-02-09  Geoffrey Garen  <ggaren (a] apple.com>
    311 
    312         Reviewed by Oliver Hunt.
    313 
    314         Small refactoring to the small strings cache to allow it to be cleared
    315         dynamically.
    316 
    317         * runtime/SmallStrings.cpp:
    318         (JSC::SmallStrings::SmallStrings):
    319         (JSC::SmallStrings::clear):
    320         * runtime/SmallStrings.h: Moved initialization code into a shared function,
    321         and changed the constructor to call it.
    322 
    323 2010-02-09  Gavin Barraclough  <barraclough (a] apple.com>
    324 
    325         Rubber Stamped by Geoff Garen.
    326 
    327         Rename StringBuilder::release && JSStringBuilder::releaseJSString
    328         to 'build()'.
    329 
    330         * runtime/ArrayPrototype.cpp:
    331         (JSC::arrayProtoFuncToLocaleString):
    332         (JSC::arrayProtoFuncJoin):
    333         * runtime/Executable.cpp:
    334         (JSC::FunctionExecutable::paramString):
    335         * runtime/FunctionConstructor.cpp:
    336         (JSC::constructFunction):
    337         * runtime/JSGlobalObjectFunctions.cpp:
    338         (JSC::encode):
    339         (JSC::decode):
    340         (JSC::globalFuncEscape):
    341         (JSC::globalFuncUnescape):
    342         * runtime/JSONObject.cpp:
    343         (JSC::Stringifier::stringify):
    344         * runtime/JSStringBuilder.h:
    345         (JSC::JSStringBuilder::build):
    346         * runtime/LiteralParser.cpp:
    347         (JSC::LiteralParser::Lexer::lexString):
    348         * runtime/NumberPrototype.cpp:
    349         (JSC::integerPartNoExp):
    350         (JSC::numberProtoFuncToFixed):
    351         * runtime/StringBuilder.h:
    352         (JSC::StringBuilder::build):
    353 
    354 2010-02-09  John Sullivan  <sullivan (a] apple.com>
    355 
    356         https://bugs.webkit.org/show_bug.cgi?id=34772
    357         Overzealous new assertion in URStringImpl::adopt()
    358 
    359         Reviewed by Adam Barth.
    360 
    361         * runtime/UStringImpl.h:
    362         (JSC::UStringImpl::adopt):
    363         Only assert that vector.data() is non-zero if vector.size() is non-zero.
    364 
    365 2010-02-09  Nikolas Zimmermann  <nzimmermann (a] rim.com>
    366 
    367         Not reviewed. Try to fix build problem on SnowLeopard slaves to bring them back.
    368 
    369         * API/JSClassRef.cpp:
    370         (tryCreateStringFromUTF8): Mark method as 'static inline' to suppress "warning: no previous prototype for ..."
    371 
    372 2010-02-09  Gavin Barraclough  <barraclough (a] apple.com>
    373 
    374         Reviewed by Oliver Hunt.
    375 
    376         Three small string fixes:
    377         (1) StringBuilder::release should CRASH if the buffer allocation failed.
    378         (2) Remove weird, dead code from JSString::tryGetValue, replace with an ASSERT.
    379         (3) Move UString::createFromUTF8 out to the API, as tryCreateStringFromUTF8.
    380             This is only used from the API, and (now) unlike other UString::create
    381             methods may return UString::null() to indicate failure cases.  Better
    382             handle these in the API.
    383 
    384         * API/JSClassRef.cpp:
    385         (tryCreateStringFromUTF8):
    386         (OpaqueJSClass::OpaqueJSClass):
    387         (OpaqueJSClassContextData::OpaqueJSClassContextData):
    388         * runtime/JSString.h:
    389         (JSC::Fiber::tryGetValue):
    390         * runtime/StringBuilder.h:
    391         (JSC::StringBuilder::release):
    392         * runtime/UString.cpp:
    393         (JSC::UString::UString):
    394         (JSC::UString::from):
    395         (JSC::UString::find):
    396         * runtime/UString.h:
    397 
    398 2010-02-09  Janne Koskinen  <janne.p.koskinen (a] digia.com>
    399 
    400         Reviewed by Laszlo Gombos.
    401 
    402         [Qt] use nanval() for Symbian as nonInlineNaN
    403         https://bugs.webkit.org/show_bug.cgi?id=34170
    404 
    405         numeric_limits<double>::quiet_NaN is broken in Symbian
    406         causing NaN to be evaluated as a number.
    407 
    408         * runtime/JSValue.cpp:
    409         (JSC::nonInlineNaN):
    410 
    411 2010-02-09  Tamas Szirbucz  <szirbucz (a] inf.u-szeged.hu>
    412 
    413         Reviewed by Gavin Barraclough.
    414 
    415         Add a soft modulo operation to ARM JIT using a trampoline function.
    416         The performance progression is about ~1.8% on ARMv7
    417         https://bugs.webkit.org/show_bug.cgi?id=34424
    418 
    419         Developed in cooperation with Gabor Loki.
    420 
    421         * jit/JIT.h:
    422         * jit/JITArithmetic.cpp:
    423         (JSC::JIT::emit_op_mod):
    424         (JSC::JIT::emitSlow_op_mod):
    425         * jit/JITOpcodes.cpp:
    426         (JSC::JIT::softModulo):
    427         * jit/JITStubs.h:
    428         (JSC::JITThunks::ctiSoftModulo):
    429         * wtf/Platform.h:
    430 
    431 2010-02-08  Gavin Barraclough  <barraclough (a] apple.com>
    432 
    433         Reviewed by NOBODY (SL/win build fixes).
    434 
    435         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
    436         * runtime/StringPrototype.cpp:
    437 
    438 2010-02-08  Gavin Barraclough  <barraclough (a] apple.com>
    439 
    440         Reviewed by Oliver Hunt
    441 
    442         Make String.replace throw an exception on out-of-memory, rather than
    443         returning a null (err, empty-ish) string.  Move String::replaceRange
    444         and String::spliceSubstringsWithSeparators out to StringPrototype -
    445         these were fairly specific use anyway, and we can better integrate
    446         throwing the JS expcetion this way.
    447 
    448         Also removes redundant assignment operator from UString.
    449 
    450         * JavaScriptCore.exp:
    451         * runtime/StringPrototype.cpp:
    452         (JSC::StringRange::StringRange):
    453         (JSC::jsSpliceSubstringsWithSeparators):
    454         (JSC::jsReplaceRange):
    455         (JSC::stringProtoFuncReplace):
    456         * runtime/UString.cpp:
    457         * runtime/UString.h:
    458 
    459 2010-02-08  Kwang Yul Seo  <skyul (a] company100.net>
    460 
    461         Reviewed by Eric Seidel.
    462 
    463         [BREWMP] Undefine WTF_OS_WINDOWS and WTF_PLATFORM_WIN
    464         https://bugs.webkit.org/show_bug.cgi?id=34561
    465 
    466         As the binary for simulator is built with MSVC 2005,
    467         WTF_OS_WINDOWS and WTF_PLATFORM_WIN are defined.
    468         Undefine them as we don't target Windows.
    469 
    470         * wtf/Platform.h:
    471 
    472 2010-02-08  Chris Rogers  <crogers (a] google.com>
    473 
    474         Reviewed by Darin Adler.
    475 
    476         audio engine: add Vector3 class
    477         https://bugs.webkit.org/show_bug.cgi?id=34548
    478 
    479         * wtf/Vector3.h: Added.
    480         (WebCore::Vector3::Vector3):
    481         (WebCore::Vector3::abs):
    482         (WebCore::Vector3::isZero):
    483         (WebCore::Vector3::normalize):
    484         (WebCore::Vector3::x):
    485         (WebCore::Vector3::y):
    486         (WebCore::Vector3::z):
    487         (WebCore::operator+):
    488         (WebCore::operator-):
    489         (WebCore::operator*):
    490         (WebCore::dot):
    491         (WebCore::cross):
    492         (WebCore::distance):
    493 
    494 2010-02-08  Oliver Hunt  <oliver (a] apple.com>
    495 
    496         Reviewed by Gavin Barraclough.
    497 
    498         Fix warning in clang++
    499 
    500         * runtime/Structure.h:
    501         (JSC::Structure::propertyStorageSize):
    502 
    503 2010-02-08  Gavin Barraclough  <barraclough (a] apple.com>
    504 
    505         Reviewed by Geoff Garen.
    506 
    507         Make makeString CRASH if we fail to allocate a string.
    508 
    509         (tryMakeString or jsMakeNontrivialString can be used where we
    510         expect allocation may fail and want to handle the error).
    511 
    512         * runtime/JSStringBuilder.h:
    513         (JSC::jsMakeNontrivialString):
    514         * runtime/UString.h:
    515         (JSC::tryMakeString):
    516         (JSC::makeString):
    517 
    518 2010-02-08  Gavin Barraclough  <barraclough (a] apple.com>
    519 
    520         Rubber Stamped by Oliver Hunt.
    521 
    522         Remove a couple of unnecesary C-style casts spotted by Darin.
    523 
    524         * runtime/JSGlobalObjectFunctions.cpp:
    525         (JSC::encode):
    526         (JSC::globalFuncEscape):
    527 
    528 2010-02-08  Gavin Barraclough  <barraclough (a] apple.com>
    529 
    530         Reviewed by Geoff Garen.
    531 
    532         Switch some more StringBuilder/jsNontrivialString code to use
    533         JSStringBuilder/jsMakeNontrivialString - these methods will
    534         throw an exception if we hit out-of-memory, rather than just
    535         CRASHing.
    536 
    537         * runtime/FunctionPrototype.cpp:
    538         (JSC::functionProtoFuncToString):
    539         * runtime/JSGlobalObjectFunctions.cpp:
    540         (JSC::encode):
    541         (JSC::decode):
    542         (JSC::globalFuncEscape):
    543 
    544 2010-02-08  Gavin Barraclough  <barraclough (a] apple.com>
    545 
    546         Reviewed by Sam Weinig.
    547 
    548         Use an empty identifier instead of a null identifier for parse
    549         tokens without an identifier.
    550 
    551         This helps encapsulate the null UStringImpl within UString.
    552 
    553         * parser/Grammar.y:
    554         * parser/NodeConstructors.h:
    555         (JSC::ContinueNode::ContinueNode):
    556         (JSC::BreakNode::BreakNode):
    557         (JSC::ForInNode::ForInNode):
    558         * runtime/CommonIdentifiers.cpp:
    559         (JSC::CommonIdentifiers::CommonIdentifiers):
    560         * runtime/CommonIdentifiers.h:
    561         * runtime/FunctionPrototype.cpp:
    562         (JSC::FunctionPrototype::FunctionPrototype):
    563 
    564 2010-02-08  Gustavo Noronha Silva  <gustavo.noronha (a] collabora.co.uk>
    565 
    566         Build fix for make distcheck.
    567 
    568         * GNUmakefile.am:
    569 
    570 2010-02-08  Simon Hausmann  <simon.hausmann (a] nokia.com>
    571 
    572         Unreviewed RVCT build fix.
    573 
    574         Similar to r54391, don't import the cmath functions from std:: for RVCT.
    575 
    576         * wtf/MathExtras.h:
    577 
    578 2010-02-05  Gavin Barraclough  <barraclough (a] apple.com>
    579 
    580         Reviewed by Geoff Garen.
    581 
    582         Change UStringImpl::create to CRASH if the string cannot be allocated,
    583         rather than returning a null string (which will behave like a zero-length
    584         string if used).
    585 
    586         Also move createRep function from UString to become new overloaded
    587         UStringImpl::create methods.  In doing so, bring their behaviour closer to
    588         being in line with WebCore::StringImpl, in removing the behaviour that they
    589         can be used to produce null UStrings (ASSERT the char* provided is non-null).
    590         This behaviour of converting null C-strings to null UStrings is inefficient
    591         (cmompared to just using UString::null()), incompatible with WebCore::StringImpl's
    592         behaviour, and may generate unexpected behaviour, since in many cases a null
    593         UString can be used like an empty string.
    594 
    595         With these changes UStringImpl need not have a concept of null impls, we can
    596         start transitioning this to become an implementation detail of UString, that
    597         internally it chooses to use a null-object rather than an actually zero impl
    598         pointer.
    599 
    600         * JavaScriptCore.exp:
    601         * debugger/Debugger.cpp:
    602         (JSC::Debugger::recompileAllJSFunctions):
    603         * debugger/DebuggerCallFrame.cpp:
    604         (JSC::DebuggerCallFrame::calculatedFunctionName):
    605         * parser/Parser.cpp:
    606         (JSC::Parser::parse):
    607         * profiler/Profile.cpp:
    608         (JSC::Profile::Profile):
    609         * profiler/ProfileGenerator.cpp:
    610         (JSC::ProfileGenerator::stopProfiling):
    611         * runtime/Error.cpp:
    612         (JSC::Error::create):
    613         (JSC::throwError):
    614         * runtime/ExceptionHelpers.cpp:
    615         (JSC::createError):
    616         * runtime/Identifier.cpp:
    617         (JSC::Identifier::add):
    618         * runtime/PropertyNameArray.cpp:
    619         (JSC::PropertyNameArray::add):
    620         * runtime/UString.cpp:
    621         (JSC::initializeUString):
    622         (JSC::UString::UString):
    623         (JSC::UString::operator=):
    624         * runtime/UString.h:
    625         (JSC::UString::isNull):
    626         (JSC::UString::null):
    627         (JSC::UString::rep):
    628         (JSC::UString::UString):
    629         * runtime/UStringImpl.cpp:
    630         (JSC::UStringImpl::create):
    631         * runtime/UStringImpl.h:
    632 
    633 2010-02-05  Kwang Yul Seo  <skyul (a] company100.net>
    634 
    635         Reviewed by Eric Seidel.
    636 
    637         [BREWMP] Define SYSTEM_MALLOC 1
    638         https://bugs.webkit.org/show_bug.cgi?id=34640
    639 
    640         Make BREWMP use system malloc because FastMalloc is not ported.
    641 
    642         * wtf/Platform.h:
    643 
    644 2010-02-05  Kwang Yul Seo  <skyul (a] company100.net>
    645 
    646         Reviewed by Alexey Proskuryakov.
    647 
    648         Don't call CRASH() in fastMalloc and fastCalloc when the requested memory size is 0
    649         https://bugs.webkit.org/show_bug.cgi?id=34569
    650 
    651         With USE_SYSTEM_MALLOC=1, fastMalloc and fastCalloc call CRASH()
    652         if the return value of malloc and calloc is 0.
    653         
    654         However, these functions can return 0 when the request size is 0.
    655         Libc manual says, "If size is 0, then malloc() returns either NULL,
    656         or a unique pointer value that can later be successfully passed to free()."
    657         Though malloc returns a unique pointer in most systems,
    658         0 can be returned in some systems. For instance, BREW's MALLOC returns 0
    659         when size is 0.
    660 
    661         If malloc or calloc returns 0 due to allocation size, increase the size
    662         to 1 and try again.
    663 
    664         * wtf/FastMalloc.cpp:
    665         (WTF::fastMalloc):
    666         (WTF::fastCalloc):
    667 
    668 2010-02-04  Mark Rowe  <mrowe (a] apple.com>
    669 
    670         Reviewed by Timothy Hatcher.
    671 
    672         Build fix.  Remove a symbol corresponding to an inline function from the linker export
    673         file to prevent a weak external failure.
    674 
    675         * JavaScriptCore.xcodeproj/project.pbxproj: Accommodate rename of script.
    676 
    677 2010-02-04  Daniel Bates  <dbates (a] webkit.org>
    678 
    679         [Qt] Unreviewed, build fix for Qt bot.
    680 
    681         * runtime/JSStringBuilder.h: Changed #include <X.h> notation #include "X.h".
    682 
    683 2010-02-04  Geoffrey Garen  <ggaren (a] apple.com>
    684 
    685         Reviewed by Oliver Hunt.
    686 
    687         Clearing a WeakGCPtr is weird
    688         https://bugs.webkit.org/show_bug.cgi?id=34627
    689 
    690         Added a WeakGCPtr::clear interface.
    691         
    692         As discussed in https://bugs.webkit.org/show_bug.cgi?id=33383, the old
    693         interface made it pretty weird for a client to conditionally clear a
    694         WeakGCPtr, which is exactly what clients want to do when objects are
    695         finalized.
    696 
    697         * API/JSClassRef.cpp:
    698         (clearReferenceToPrototype): Use the new WeakGCPtr::clear() interface. 
    699 
    700         * runtime/WeakGCPtr.h:
    701         (JSC::WeakGCPtr::clear): Added an interface for clearing a WeakGCPtr,
    702         iff its current value is the value passed in. It's cumbersome for the
    703         client to do this test, since WeakGCPtr sometimes pretends to be null.
    704 
    705 2010-02-04  Geoffrey Garen  <ggaren (a] apple.com>
    706 
    707         Build fix: export a header.
    708 
    709         * JavaScriptCore.xcodeproj/project.pbxproj:
    710 
    711 2010-02-04  Gavin Barraclough  <barraclough (a] apple.com>
    712 
    713         Reviewed by Oliver Hunt.
    714 
    715         Add a JSStringBuilder class (similar-to, and derived-from StringBuilder) to
    716         construct JSStrings, throwing a JS exception should we run out of memory whilst
    717         allocating storage for the string.
    718 
    719         Similarly, add jsMakeNontrivialString methods to use in cases where previously
    720         we were calling makeString & passing the result to jsNontrivialString.  Again,
    721         these new methods throw if we hit an out of memory condition.
    722 
    723         Move throwOutOfMemoryError into ExceptionHelpers, to make it more widely available.
    724 
    725         * JavaScriptCore.xcodeproj/project.pbxproj:
    726         * runtime/ArrayPrototype.cpp:
    727         (JSC::arrayProtoFuncToString):
    728         (JSC::arrayProtoFuncToLocaleString):
    729         (JSC::arrayProtoFuncJoin):
    730         * runtime/DateConstructor.cpp:
    731         (JSC::callDate):
    732         * runtime/DatePrototype.cpp:
    733         (JSC::dateProtoFuncToString):
    734         (JSC::dateProtoFuncToUTCString):
    735         (JSC::dateProtoFuncToGMTString):
    736         * runtime/ErrorPrototype.cpp:
    737         (JSC::errorProtoFuncToString):
    738         * runtime/ExceptionHelpers.cpp:
    739         (JSC::throwOutOfMemoryError):
    740         * runtime/ExceptionHelpers.h:
    741         * runtime/JSStringBuilder.h: Added.
    742         (JSC::JSStringBuilder::releaseJSString):
    743         (JSC::jsMakeNontrivialString):
    744         * runtime/NumberPrototype.cpp:
    745         (JSC::numberProtoFuncToPrecision):
    746         * runtime/ObjectPrototype.cpp:
    747         (JSC::objectProtoFuncToString):
    748         * runtime/Operations.cpp:
    749         * runtime/Operations.h:
    750         * runtime/RegExpPrototype.cpp:
    751         (JSC::regExpProtoFuncToString):
    752         * runtime/StringBuilder.h:
    753         (JSC::StringBuilder::append):
    754         * runtime/StringPrototype.cpp:
    755         (JSC::stringProtoFuncBig):
    756         (JSC::stringProtoFuncSmall):
    757         (JSC::stringProtoFuncBlink):
    758         (JSC::stringProtoFuncBold):
    759         (JSC::stringProtoFuncFixed):
    760         (JSC::stringProtoFuncItalics):
    761         (JSC::stringProtoFuncStrike):
    762         (JSC::stringProtoFuncSub):
    763         (JSC::stringProtoFuncSup):
    764         (JSC::stringProtoFuncFontcolor):
    765         (JSC::stringProtoFuncFontsize):
    766         (JSC::stringProtoFuncAnchor):
    767 
    768 2010-02-04  Steve Falkenburg  <sfalken (a] apple.com>
    769 
    770         Windows build fix.
    771 
    772         * wtf/MathExtras.h:
    773 
    774 2010-02-04  Darin Adler  <darin (a] apple.com>
    775 
    776         Reviewed by David Levin.
    777 
    778         Make MathExtras.h compatible with <cmath>
    779         https://bugs.webkit.org/show_bug.cgi?id=34618
    780 
    781         * wtf/MathExtras.h: Include <cmath> instead of <math.h>.
    782         Use "using" as we do elsewhere in WTF for the four functions from <cmath>
    783         we want to use without the prefix. Later we could consider making the std
    784         explicit at call sites instead.
    785 
    786 2010-02-04  Tamas Szirbucz  <szirbucz (a] inf.u-szeged.hu>
    787 
    788         Reviewed by Gavin Barraclough.
    789 
    790         Use an easily appendable structure for trampolines instead of pointer parameters.
    791         https://bugs.webkit.org/show_bug.cgi?id=34424
    792 
    793         * assembler/ARMAssembler.cpp:
    794         (JSC::ARMAssembler::executableCopy):
    795         * jit/JIT.h:
    796         (JSC::JIT::compileCTIMachineTrampolines):
    797         * jit/JITOpcodes.cpp:
    798         (JSC::JIT::privateCompileCTIMachineTrampolines):
    799         * jit/JITStubs.cpp:
    800         (JSC::JITThunks::JITThunks):
    801         * jit/JITStubs.h:
    802         (JSC::JITThunks::ctiStringLengthTrampoline):
    803         (JSC::JITThunks::ctiVirtualCallLink):
    804         (JSC::JITThunks::ctiVirtualCall):
    805         (JSC::JITThunks::ctiNativeCallThunk):
    806 
    807 2010-02-04  Jedrzej Nowacki  <jedrzej.nowacki (a] nokia.com>
    808 
    809         Reviewed by Simon Hausmann.
    810 
    811         Increase test coverage for the QScriptValue.
    812 
    813         https://bugs.webkit.org/show_bug.cgi?id=34533
    814 
    815         * qt/tests/qscriptvalue/qscriptvalue.pro:
    816         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
    817         (tst_QScriptValue::tst_QScriptValue):
    818         (tst_QScriptValue::~tst_QScriptValue):
    819         (tst_QScriptValue::dataHelper):
    820         (tst_QScriptValue::newRow):
    821         (tst_QScriptValue::testHelper):
    822         (tst_QScriptValue::ctor):
    823         * qt/tests/qscriptvalue/tst_qscriptvalue.h: Added.
    824         * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: Added.
    825         (tst_QScriptValue::initScriptValues):
    826         (tst_QScriptValue::isValid_initData):
    827         (tst_QScriptValue::isValid_makeData):
    828         (tst_QScriptValue::isValid_test):
    829         (tst_QScriptValue::isBool_initData):
    830         (tst_QScriptValue::isBool_makeData):
    831         (tst_QScriptValue::isBool_test):
    832         (tst_QScriptValue::isBoolean_initData):
    833         (tst_QScriptValue::isBoolean_makeData):
    834         (tst_QScriptValue::isBoolean_test):
    835         (tst_QScriptValue::isFunction_initData):
    836         (tst_QScriptValue::isFunction_makeData):
    837         (tst_QScriptValue::isFunction_test):
    838         (tst_QScriptValue::isNull_initData):
    839         (tst_QScriptValue::isNull_makeData):
    840         (tst_QScriptValue::isNull_test):
    841         (tst_QScriptValue::isString_initData):
    842         (tst_QScriptValue::isString_makeData):
    843         (tst_QScriptValue::isString_test):
    844         (tst_QScriptValue::isUndefined_initData):
    845         (tst_QScriptValue::isUndefined_makeData):
    846         (tst_QScriptValue::isUndefined_test):
    847         (tst_QScriptValue::isObject_initData):
    848         (tst_QScriptValue::isObject_makeData):
    849         (tst_QScriptValue::isObject_test):
    850 
    851 2010-02-03  Kwang Yul Seo  <skyul (a] company100.net>
    852 
    853         Reviewed by Eric Seidel.
    854 
    855         [BREWMP] Define WTF_PLATFORM_BREWMP_SIMULATOR when AEE_SIMULATOR is defined
    856         https://bugs.webkit.org/show_bug.cgi?id=34514
    857 
    858         PLATFORM(BREWMP_SIMULATOR) guard is needed to make distinction between BREWMP
    859         and BREWMP simulator.
    860 
    861         * wtf/Platform.h:
    862 
    863 2010-02-03  Kwang Yul Seo  <skyul (a] company100.net>
    864 
    865         Reviewed by Eric Seidel.
    866 
    867         [BREWMP] Remove COMPILE_ASSERT conflict with the underlying PLATFORM
    868         https://bugs.webkit.org/show_bug.cgi?id=34190
    869 
    870         COMPILE_ASSERT conflicts with the underlying PLATFORM because it is defined
    871         both in WTF's Assertions.h and BREWMP's AEEClassIDs.h. Include AEEClassIDs.h
    872         in Assertions.h and undef COMPILE_ASSERT to avoid redefining COMPILE_ASSERT.
    873 
    874         * wtf/Assertions.h:
    875 
    876 2010-02-03  Kwang Yul Seo  <skyul (a] company100.net>
    877 
    878         Reviewed by Eric Seidel.
    879 
    880         [BREWMP] Implement OwnPtrBrew to make sure BREW instances are freed.
    881         https://bugs.webkit.org/show_bug.cgi?id=34518
    882 
    883         Add OwnPtrBrew to release IFile, IFileMgr and IBitmap instances.
    884 
    885         * wtf/brew/OwnPtrBrew.cpp: Added.
    886         (WTF::IFileMgr):
    887         (WTF::IFile):
    888         (WTF::IBitmap):
    889         (WTF::freeOwnedPtrBrew):
    890         * wtf/brew/OwnPtrBrew.h: Added.
    891         (WTF::OwnPtrBrew::OwnPtrBrew):
    892         (WTF::OwnPtrBrew::~OwnPtrBrew):
    893         (WTF::OwnPtrBrew::get):
    894         (WTF::OwnPtrBrew::release):
    895         (WTF::OwnPtrBrew::outPtr):
    896         (WTF::OwnPtrBrew::set):
    897         (WTF::OwnPtrBrew::clear):
    898         (WTF::OwnPtrBrew::operator*):
    899         (WTF::OwnPtrBrew::operator->):
    900         (WTF::OwnPtrBrew::operator!):
    901         (WTF::OwnPtrBrew::operator UnspecifiedBoolType):
    902         (WTF::OwnPtrBrew::swap):
    903         (WTF::swap):
    904         (WTF::operator==):
    905         (WTF::operator!=):
    906         (WTF::getPtr):
    907 
    908 2010-02-03  Kwang Yul Seo  <skyul (a] company100.net>
    909 
    910         Reviewed by Darin Adler.
    911 
    912         Export WTF::fastStrDup symbol
    913         https://bugs.webkit.org/show_bug.cgi?id=34526
    914 
    915         * JavaScriptCore.exp:
    916 
    917 2010-02-03  Kevin Watters  <kevinwatters (a] gmail.com>
    918 
    919         Reviewed by Kevin Ollivier.
    920 
    921         [wx] Enable JIT compilation for wx.
    922         
    923         https://bugs.webkit.org/show_bug.cgi?id=34536
    924 
    925         * wtf/Platform.h:
    926 
    927 2010-02-02  Oliver Hunt  <oliver (a] apple.com>
    928 
    929         Reviewed by Geoffrey Garen.
    930 
    931         Crash in CollectorBitmap::get at nbcolympics.com
    932         https://bugs.webkit.org/show_bug.cgi?id=34504
    933 
    934         This was caused by the use of m_offset to determine the offset of
    935         a new property into the property storage.  This patch corrects
    936         the effected cases by incorporating the anonymous slot count. It
    937         also removes the duplicate copy of anonymous slot count from the
    938         property table as keeping this up to date merely increased the
    939         chance of a mismatch.  Finally I've added a large number of
    940         assertions in an attempt to prevent such a bug from happening
    941         again.
    942 
    943         With the new assertions in place the existing anonymous slot tests
    944         all fail without the m_offset fixes.
    945 
    946         * runtime/PropertyMapHashTable.h:
    947         * runtime/Structure.cpp:
    948         (JSC::Structure::materializePropertyMap):
    949         (JSC::Structure::addPropertyTransitionToExistingStructure):
    950         (JSC::Structure::addPropertyTransition):
    951         (JSC::Structure::removePropertyTransition):
    952         (JSC::Structure::flattenDictionaryStructure):
    953         (JSC::Structure::addPropertyWithoutTransition):
    954         (JSC::Structure::removePropertyWithoutTransition):
    955         (JSC::Structure::copyPropertyTable):
    956         (JSC::Structure::get):
    957         (JSC::Structure::put):
    958         (JSC::Structure::remove):
    959         (JSC::Structure::insertIntoPropertyMapHashTable):
    960         (JSC::Structure::createPropertyMapHashTable):
    961         (JSC::Structure::rehashPropertyMapHashTable):
    962         (JSC::Structure::checkConsistency):
    963 
    964 2010-02-02  Steve Falkenburg  <sfalken (a] apple.com>
    965 
    966         Reviewed by Darin Adler.
    967 
    968         Copyright year updating for Windows version resources should be automatic
    969         https://bugs.webkit.org/show_bug.cgi?id=34503
    970 
    971         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
    972 
    973 2010-02-02  Kwang Yul Seo  <skyul (a] company100.net>
    974 
    975         Reviewed by Eric Seidel.
    976 
    977         [BREWMP] Add dummy main thread functions
    978         https://bugs.webkit.org/show_bug.cgi?id=33569
    979 
    980         Add dummy initializeMainThreadPlatform and
    981         scheduleDispatchFunctionsOnMainThread.
    982 
    983         * wtf/brew/MainThreadBrew.cpp: Added.
    984         (WTF::initializeMainThreadPlatform):
    985         (WTF::scheduleDispatchFunctionsOnMainThread):
    986 
    987 2010-02-02  Kwang Yul Seo  <skyul (a] company100.net>
    988 
    989         Reviewed by Darin Adler.
    990 
    991         Add using WTF::getLocalTime to CurrentTime.h
    992         https://bugs.webkit.org/show_bug.cgi?id=34493
    993 
    994         * wtf/CurrentTime.h:
    995 
    996 2010-02-02  Kwang Yul Seo  <skyul (a] company100.net>
    997 
    998         Reviewed by Eric Seidel.
    999 
   1000         [BREWMP] Add HAVE_XXX definitions
   1001         https://bugs.webkit.org/show_bug.cgi?id=34414
   1002 
   1003         Add HAVE_ERRNO_H=1
   1004 
   1005         * wtf/Platform.h:
   1006 
   1007 2010-02-02  Kwang Yul Seo  <skyul (a] company100.net>
   1008 
   1009         Reviewed by Eric Seidel.
   1010 
   1011         [BREWMP] Don't define HAVE_TM_GMTOFF, HAVE_TM_ZONE and HAVE_TIMEGM
   1012         https://bugs.webkit.org/show_bug.cgi?id=34388
   1013 
   1014         BREWMP does not have these features.
   1015 
   1016         * wtf/Platform.h:
   1017 
   1018 2010-02-02  Kwang Yul Seo  <skyul (a] company100.net>
   1019 
   1020         Reviewed by Eric Seidel.
   1021 
   1022         [BREWMP] Define WTF_PLATFORM_BREWMP=1 when BUILDING_BREWMP is defined
   1023         https://bugs.webkit.org/show_bug.cgi?id=34386
   1024 
   1025         Define WTF_PLATFORM_BREWMP=1 so that PLATFORM(BREWMP) guard can be used.
   1026 
   1027         * wtf/Platform.h:
   1028 
   1029 2010-02-01  Kent Tamura  <tkent (a] chromium.org>
   1030 
   1031         Reviewed by Darin Adler.
   1032 
   1033         Date.UTC() should apply TimeClip operation.
   1034         https://bugs.webkit.org/show_bug.cgi?id=34461
   1035 
   1036         ECMAScript 5 15.9.4.3:
   1037         > 9 Return TimeClip(MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli))).
   1038 
   1039         * runtime/DateConstructor.cpp:
   1040         (JSC::dateUTC): Calls WTF::timeClip().
   1041 
   1042 2010-02-01  Kent Tamura  <tkent (a] chromium.org>
   1043 
   1044         Reviewed by Darin Adler.
   1045 
   1046         Fix a bug that Math.round() retunrs incorrect results for huge integers
   1047         https://bugs.webkit.org/show_bug.cgi?id=34462
   1048 
   1049         * runtime/MathObject.cpp:
   1050         (JSC::mathProtoFuncRound): Avoid "arg + 0.5".
   1051 
   1052 2010-02-01  Kwang Yul Seo  <skyul (a] company100.net>
   1053 
   1054         Reviewed by Eric Seidel.
   1055 
   1056         [BREWMP] Port WTF's currentTime
   1057         https://bugs.webkit.org/show_bug.cgi?id=33567
   1058 
   1059         Combine GETUTCSECONDS and GETTIMEMS to calculate the number
   1060         of milliseconds since 1970/01/01 00:00:00 UTC.
   1061 
   1062         * wtf/CurrentTime.cpp:
   1063         (WTF::currentTime):
   1064 
   1065 2010-02-01  Patrick Gansterer  <paroga (a] paroga.com>
   1066 
   1067         Reviewed by Darin Adler.
   1068 
   1069         [Qt] WinCE buildfix after r52729 and fix for Q_BIG_ENDIAN typo.
   1070         https://bugs.webkit.org/show_bug.cgi?id=34378
   1071 
   1072         * wtf/Platform.h:
   1073 
   1074 2010-02-01  Oliver Hunt  <oliver (a] apple.com>
   1075 
   1076         Reviewed by Gavin Barraclough.
   1077 
   1078         Structure not accounting for anonymous slots when computing property storage size
   1079         https://bugs.webkit.org/show_bug.cgi?id=34441
   1080 
   1081         Previously any Structure with anonymous storage would have a property map, so we
   1082         were only including anonymous slot size if there was a property map.  Given this
   1083         is no longer the case we should always include the anonymous slot count in the
   1084         property storage size.
   1085 
   1086         * runtime/Structure.h:
   1087         (JSC::Structure::propertyStorageSize):
   1088 
   1089 2010-02-01  Oliver Hunt  <oliver (a] apple.com>
   1090 
   1091         Windows build fix, update exports file (again)
   1092 
   1093         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   1094 
   1095 2010-02-01  Oliver Hunt  <oliver (a] apple.com>
   1096 
   1097         Windows build fix, update exports file
   1098 
   1099         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   1100 
   1101 2010-01-31  Oliver Hunt  <oliver (a] apple.com>
   1102 
   1103         Reviewed by Maciej Stachowiak.
   1104 
   1105         JSC is failing to propagate anonymous slot count on some transitions
   1106         https://bugs.webkit.org/show_bug.cgi?id=34321
   1107 
   1108         Remove secondary Structure constructor, and make Structure store a copy
   1109         of the number of anonymous slots directly so saving an immediate allocation
   1110         of a property map for all structures with anonymous storage, which also
   1111         avoids the leaked property map on new property transition in the original
   1112         version of this patch.
   1113 
   1114         We need to propagate the the anonymous slot count otherwise we can end up
   1115         with a structure recording incorrect information about the available and
   1116         needed space for property storage, or alternatively incorrectly reusing
   1117         some slots.
   1118 
   1119         * JavaScriptCore.exp:
   1120         * runtime/Structure.cpp:
   1121         (JSC::Structure::Structure):
   1122         (JSC::Structure::materializePropertyMap):
   1123         (JSC::Structure::addPropertyTransition):
   1124         (JSC::Structure::changePrototypeTransition):
   1125         (JSC::Structure::despecifyFunctionTransition):
   1126         (JSC::Structure::getterSetterTransition):
   1127         (JSC::Structure::toDictionaryTransition):
   1128         (JSC::Structure::flattenDictionaryStructure):
   1129         (JSC::Structure::copyPropertyTable):
   1130         (JSC::Structure::put):
   1131         (JSC::Structure::remove):
   1132         (JSC::Structure::insertIntoPropertyMapHashTable):
   1133         (JSC::Structure::createPropertyMapHashTable):
   1134         * runtime/Structure.h:
   1135         (JSC::Structure::create):
   1136         (JSC::Structure::hasAnonymousSlots):
   1137         (JSC::Structure::anonymousSlotCount):
   1138 
   1139 2010-01-31  Patrick Gansterer  <paroga (a] paroga.com>
   1140 
   1141         Reviewed by Darin Adler.
   1142 
   1143         Buildfix for WinCE + style fixes (TLS_OUT_OF_INDEXES is not defined).
   1144         https://bugs.webkit.org/show_bug.cgi?id=34380
   1145 
   1146         * wtf/ThreadSpecific.h:
   1147 
   1148 2010-01-31  Kent Tamura  <tkent (a] chromium.org>
   1149 
   1150         Reviewed by Darin Adler.
   1151 
   1152         [Windows] Fix a bug of round() with huge integral numbers
   1153         https://bugs.webkit.org/show_bug.cgi?id=34297
   1154 
   1155         Fix a bug that round() for huge integral numbers returns incorrect
   1156         results. For example, round(8639999913600001) returns
   1157         8639999913600002 without this change though the double type can
   1158         represent 8639999913600001 precisely.
   1159 
   1160         Math.round() of JavaScript has a similar problem. But this change
   1161         doesn't fix it because Math.round() doesn't use round() of
   1162         MathExtra.h.
   1163 
   1164         * wtf/MathExtras.h:
   1165         (round): Avoid to do "num + 0.5" or "num - 0.5".
   1166         (roundf): Fixed similarly.
   1167         (llround): Calls round().
   1168         (llroundf): Calls roundf().
   1169         (lround): Calls round().
   1170         (lroundf): Calls roundf().
   1171 
   1172 2010-01-29  Mark Rowe  <mrowe (a] apple.com>
   1173 
   1174         Sort Xcode projects.
   1175 
   1176         * JavaScriptCore.xcodeproj/project.pbxproj:
   1177 
   1178 2010-01-29  Mark Rowe  <mrowe (a] apple.com>
   1179 
   1180         Fix the Mac build.
   1181 
   1182         Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional".
   1183 
   1184         As the comment in FeatureDefines.xcconfig notes, the list of feature defines
   1185         needs to be kept in sync across the various files.  The default values also
   1186         need to be kept in sync between these files and build-webkit.
   1187 
   1188         * Configurations/FeatureDefines.xcconfig:
   1189 
   1190 2010-01-29  Simon Hausmann  <simon.hausmann (a] nokia.com>
   1191 
   1192         Rubber-stamped by Maciej Stachowiak.
   1193 
   1194         Fix the ARM build.
   1195 
   1196         * runtime/JSNumberCell.h:
   1197         (JSC::JSNumberCell::createStructure): Call the right Structure::create overload.
   1198 
   1199 2010-01-28  Kevin Ollivier  <kevino (a] theolliviers.com>
   1200 
   1201         [wx] Build fix for MSW, use ThreadingWin.cpp as the Windows pthreads implementation
   1202         implements pthread_t in a way that makes it impossible to check its validity,
   1203         which is needed by ThreadingPthreads.cpp.
   1204 
   1205         * wscript:
   1206 
   1207 2010-01-28  Oliver Hunt  <oliver (a] apple.com>
   1208 
   1209         Reviewed by Gavin Barraclough.
   1210 
   1211         DOM Objects shouldn't all require custom mark functions
   1212         https://bugs.webkit.org/show_bug.cgi?id=34291
   1213 
   1214         Make getAnonymousValue const-friendly
   1215 
   1216         * runtime/JSObject.h:
   1217         (JSC::JSObject::getAnonymousValue):
   1218 
   1219 2010-01-28  Oliver Hunt  <oliver (a] apple.com>
   1220 
   1221         Reviewed by Gavin Barraclough.
   1222 
   1223         Simplify anonymous slot implementation
   1224         https://bugs.webkit.org/show_bug.cgi?id=34282
   1225 
   1226         A class must now specify the number of slots it needs at construction time
   1227         rather than later on with a transition.  This makes many things simpler,
   1228         we no longer need to need an additional transition on object creation to
   1229         add the anonymous slots, and we remove the need for a number of transition
   1230         type checks. 
   1231 
   1232         * API/JSCallbackConstructor.h:
   1233         (JSC::JSCallbackConstructor::createStructure):
   1234         * API/JSCallbackFunction.h:
   1235         (JSC::JSCallbackFunction::createStructure):
   1236         * API/JSCallbackObject.h:
   1237         (JSC::JSCallbackObject::createStructure):
   1238         * JavaScriptCore.exp:
   1239         * debugger/DebuggerActivation.h:
   1240         (JSC::DebuggerActivation::createStructure):
   1241         * runtime/Arguments.h:
   1242         (JSC::Arguments::createStructure):
   1243         * runtime/BooleanObject.h:
   1244         (JSC::BooleanObject::createStructure):
   1245         * runtime/DateInstance.h:
   1246         (JSC::DateInstance::createStructure):
   1247         * runtime/DatePrototype.h:
   1248         (JSC::DatePrototype::createStructure):
   1249         * runtime/FunctionPrototype.h:
   1250         (JSC::FunctionPrototype::createStructure):
   1251         * runtime/GetterSetter.h:
   1252         (JSC::GetterSetter::createStructure):
   1253         * runtime/GlobalEvalFunction.h:
   1254         (JSC::GlobalEvalFunction::createStructure):
   1255         * runtime/InternalFunction.h:
   1256         (JSC::InternalFunction::createStructure):
   1257         * runtime/JSAPIValueWrapper.h:
   1258         (JSC::JSAPIValueWrapper::createStructure):
   1259         * runtime/JSActivation.h:
   1260         (JSC::JSActivation::createStructure):
   1261         * runtime/JSArray.h:
   1262         (JSC::JSArray::createStructure):
   1263         * runtime/JSByteArray.cpp:
   1264         (JSC::JSByteArray::createStructure):
   1265         * runtime/JSCell.h:
   1266         (JSC::JSCell::createDummyStructure):
   1267         * runtime/JSFunction.h:
   1268         (JSC::JSFunction::createStructure):
   1269         * runtime/JSGlobalObject.h:
   1270         (JSC::JSGlobalObject::createStructure):
   1271         * runtime/JSNotAnObject.h:
   1272         (JSC::JSNotAnObject::createStructure):
   1273         * runtime/JSONObject.h:
   1274         (JSC::JSONObject::createStructure):
   1275         * runtime/JSObject.h:
   1276         (JSC::JSObject::createStructure):
   1277         (JSC::JSObject::putAnonymousValue):
   1278         (JSC::JSObject::getAnonymousValue):
   1279         * runtime/JSPropertyNameIterator.h:
   1280         (JSC::JSPropertyNameIterator::createStructure):
   1281         * runtime/JSStaticScopeObject.h:
   1282         (JSC::JSStaticScopeObject::createStructure):
   1283         * runtime/JSString.h:
   1284         (JSC::Fiber::createStructure):
   1285         * runtime/JSVariableObject.h:
   1286         (JSC::JSVariableObject::createStructure):
   1287         * runtime/JSWrapperObject.h:
   1288         (JSC::JSWrapperObject::createStructure):
   1289         (JSC::JSWrapperObject::JSWrapperObject):
   1290         * runtime/MathObject.h:
   1291         (JSC::MathObject::createStructure):
   1292         * runtime/NumberConstructor.h:
   1293         (JSC::NumberConstructor::createStructure):
   1294         * runtime/NumberObject.h:
   1295         (JSC::NumberObject::createStructure):
   1296         * runtime/RegExpConstructor.h:
   1297         (JSC::RegExpConstructor::createStructure):
   1298         * runtime/RegExpObject.h:
   1299         (JSC::RegExpObject::createStructure):
   1300         * runtime/StringObject.h:
   1301         (JSC::StringObject::createStructure):
   1302         * runtime/StringObjectThatMasqueradesAsUndefined.h:
   1303         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
   1304         * runtime/Structure.cpp:
   1305         (JSC::Structure::~Structure):
   1306         (JSC::Structure::materializePropertyMap):
   1307         * runtime/Structure.h:
   1308         (JSC::Structure::create):
   1309         (JSC::Structure::anonymousSlotCount):
   1310         * runtime/StructureTransitionTable.h:
   1311 
   1312 2010-01-27  Oliver Hunt  <oliver (a] apple.com>
   1313 
   1314         Windows build fix.
   1315 
   1316         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   1317 
   1318 2010-01-27  Oliver Hunt  <oliver (a] apple.com>
   1319 
   1320         Reviewed by Maciej Stachowiak.
   1321 
   1322         MessageEvent.data should deserialize in the context of the MessageEvent's global object
   1323         https://bugs.webkit.org/show_bug.cgi?id=34227
   1324 
   1325         Add logic to allow us to create an Object, Array, or Date instance
   1326         so we can create them in the context of a specific global object,
   1327         rather than just using the current lexical global object.
   1328 
   1329         * JavaScriptCore.exp:
   1330         * runtime/DateInstance.cpp:
   1331         (JSC::DateInstance::DateInstance):
   1332         * runtime/DateInstance.h:
   1333         * runtime/JSGlobalObject.h:
   1334         (JSC::constructEmptyObject):
   1335         (JSC::constructEmptyArray):
   1336 
   1337 2010-01-27  Alexey Proskuryakov  <ap (a] apple.com>
   1338 
   1339         Reviewed by Darin Adler.
   1340 
   1341         https://bugs.webkit.org/show_bug.cgi?id=34150
   1342         WebKit needs a mechanism to catch stale HashMap entries
   1343 
   1344         It is very difficult to catch stale pointers that are HashMap keys - since a pointer's hash
   1345         is just its value, it is very unlikely that any observable problem is reproducible.
   1346 
   1347         This extends hash table consistency checks to check that pointers are referencing allocated
   1348         memory blocks, and makes it possible to invoke the checks explicitly (it is not feasible
   1349         to enable CHECK_HASHTABLE_CONSISTENCY by default, because that affects performance too much).
   1350 
   1351         * wtf/HashMap.h: (WTF::::checkConsistency): Call through to HashTable implementation. We can
   1352         add similar calls to HashSet and HashCountedSet, but I haven't seen hard to debug problems
   1353         with those yet.
   1354 
   1355         * wtf/HashSet.h: (WTF::::remove): The version of checkTableConsistency that's guarded by
   1356         CHECK_HASHTABLE_CONSISTENCY is now called internalCheckTableConsistency().
   1357 
   1358         * wtf/HashTable.h:
   1359         (WTF::HashTable::internalCheckTableConsistency):
   1360         (WTF::HashTable::internalCheckTableConsistencyExceptSize):
   1361         (WTF::HashTable::checkTableConsistencyExceptSize):
   1362         Expose checkTableConsistency() even if CHECK_HASHTABLE_CONSISTENCY is off.
   1363         (WTF::::add): Updated for checkTableConsistency renaming.
   1364         (WTF::::addPassingHashCode): Ditto.
   1365         (WTF::::removeAndInvalidate): Ditto.
   1366         (WTF::::remove): Ditto.
   1367         (WTF::::rehash): Ditto.
   1368         (WTF::::checkTableConsistency): The assertion for !shouldExpand() was not correct - this
   1369         function returns true for tables with m_table == 0.
   1370         (WTF::::checkTableConsistencyExceptSize): Call checkValueConsistency for key. Potentially,
   1371         we could do the same for values.
   1372 
   1373         * wtf/HashTraits.h:
   1374         (WTF::GenericHashTraits::checkValueConsistency): An empty function that can be overridden
   1375         to add checks. Currently, the only override is for pointer hashes.
   1376 
   1377         * wtf/RefPtrHashMap.h: (WTF::::remove): Updated for checkTableConsistency renaming.
   1378 
   1379 2010-01-27  Anton Muhin  <antonm (a] chromium.org>
   1380 
   1381         Reviewed by Darin Adler.
   1382 
   1383         Remove trailing \ from inline function code
   1384         https://bugs.webkit.org/show_bug.cgi?id=34223
   1385 
   1386         * assembler/ARMv7Assembler.h:
   1387         (JSC::ARMThumbImmediate::countLeadingZerosPartial):
   1388 
   1389 2010-01-27  Kwang Yul Seo  <skyul (a] company100.net>
   1390 
   1391         Reviewed by Eric Seidel.
   1392 
   1393         [BREWMP] Port WTF's randomNumber
   1394         https://bugs.webkit.org/show_bug.cgi?id=33566
   1395 
   1396         Use GETRAND to generate 4 byte random byte sequence to implement
   1397         weakRandomNumber. Create a secure random number generator with
   1398         AEECLSID_RANDOM to implement randomNumber.
   1399 
   1400         * wtf/RandomNumber.cpp:
   1401         (WTF::weakRandomNumber):
   1402         (WTF::randomNumber):
   1403 
   1404 2010-01-27  Kwang Yul Seo  <skyul (a] company100.net>
   1405 
   1406         Reviewed by Eric Seidel.
   1407 
   1408         [BREWMP] Port getCPUTime
   1409         https://bugs.webkit.org/show_bug.cgi?id=33572
   1410 
   1411         Use GETUPTIMEMS which returns a continuously and
   1412         linearly increasing millisecond timer from the time the device
   1413         was powered on. This function is enough to implement getCPUTime.
   1414 
   1415         * runtime/TimeoutChecker.cpp:
   1416         (JSC::getCPUTime):
   1417 
   1418 2010-01-27  Kwang Yul Seo  <skyul (a] company100.net>
   1419 
   1420         Reviewed by Oliver Hunt.
   1421 
   1422         [BREWMP] Add MarkStack fastMalloc implementation for platforms without VirtualAlloc or mmap.
   1423         https://bugs.webkit.org/show_bug.cgi?id=33582
   1424 
   1425         Use fastMalloc and fastFree to implement MarkStack::allocateStack and
   1426         MarkStack::releaseStack for platforms without page level allocation.
   1427 
   1428         * runtime/MarkStack.h:
   1429         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
   1430         * runtime/MarkStackNone.cpp: Added.
   1431         (JSC::MarkStack::initializePagesize):
   1432         (JSC::MarkStack::allocateStack):
   1433         (JSC::MarkStack::releaseStack):
   1434 
   1435 2010-01-27  Kwang Yul Seo  <skyul (a] company100.net>
   1436 
   1437         Reviewed by Eric Seidel.
   1438 
   1439         [BREWMP] Don't use time function
   1440         https://bugs.webkit.org/show_bug.cgi?id=33577
   1441 
   1442         Calling time(0) in BREW devices causes a crash because time
   1443         is not properly ported in most devices. Cast currentTime() to
   1444         time_t to get the same result as time(0).
   1445 
   1446         * wtf/DateMath.cpp:
   1447         (WTF::calculateUTCOffset):
   1448 
   1449 2010-01-27  Alexey Proskuryakov  <ap (a] apple.com>
   1450 
   1451         Revert r53899 (HashMap<AtomicStringImpl*, Value> key checks) and subsequent build fixes,
   1452         because they make SVG tests crash in release builds.
   1453 
   1454         * wtf/HashMap.h:
   1455         (WTF::::remove):
   1456         * wtf/HashSet.h:
   1457         (WTF::::remove):
   1458         * wtf/HashTable.h:
   1459         (WTF::::add):
   1460         (WTF::::addPassingHashCode):
   1461         (WTF::::removeAndInvalidate):
   1462         (WTF::::remove):
   1463         (WTF::::rehash):
   1464         (WTF::::checkTableConsistency):
   1465         (WTF::::checkTableConsistencyExceptSize):
   1466         * wtf/HashTraits.h:
   1467         (WTF::GenericHashTraits::emptyValue):
   1468         (WTF::):
   1469         * wtf/RefPtrHashMap.h:
   1470         (WTF::::remove):
   1471 
   1472 2010-01-26  Alexey Proskuryakov  <ap (a] apple.com>
   1473 
   1474         More Windows build fixing.
   1475 
   1476         * wtf/HashTraits.h: _msize takes void*, remove const qualifier from type.
   1477 
   1478 2010-01-26  Alexey Proskuryakov  <ap (a] apple.com>
   1479 
   1480         Windows build fix.
   1481 
   1482         * wtf/HashTraits.h: Include malloc.h for _msize().
   1483 
   1484 2010-01-26  Alexey Proskuryakov  <ap (a] apple.com>
   1485 
   1486         Build fix.
   1487 
   1488         * wtf/HashTable.h: (WTF::HashTable::checkTableConsistencyExceptSize): Remove const from a
   1489         static (empty) version of this function.
   1490 
   1491 2010-01-26  Alexey Proskuryakov  <ap (a] apple.com>
   1492 
   1493         Reviewed by Darin Adler.
   1494 
   1495         https://bugs.webkit.org/show_bug.cgi?id=34150
   1496         WebKit needs a mechanism to catch stale HashMap entries
   1497 
   1498         It is very difficult to catch stale pointers that are HashMap keys - since a pointer's hash
   1499         is just its value, it is very unlikely that any observable problem is reproducible.
   1500 
   1501         This extends hash table consistency checks to check that pointers are referencing allocated
   1502         memory blocks, and makes it possible to invoke the checks explicitly (it is not feasible
   1503         to enable CHECK_HASHTABLE_CONSISTENCY by default, because that affects performance too much).
   1504 
   1505         * wtf/HashMap.h: (WTF::::checkConsistency): Call through to HashTable implementation. We can
   1506         add similar calls to HashSet and HashCountedSet, but I haven't seen hard to debug problems
   1507         with those yet.
   1508 
   1509         * wtf/HashSet.h: (WTF::::remove): The version of checkTableConsistency that's guarded by
   1510         CHECK_HASHTABLE_CONSISTENCY is now called internalCheckTableConsistency().
   1511 
   1512         * wtf/HashTable.h:
   1513         (WTF::HashTable::internalCheckTableConsistency):
   1514         (WTF::HashTable::internalCheckTableConsistencyExceptSize):
   1515         (WTF::HashTable::checkTableConsistencyExceptSize):
   1516         Expose checkTableConsistency() even if CHECK_HASHTABLE_CONSISTENCY is off.
   1517         (WTF::::add): Updated for checkTableConsistency renaming.
   1518         (WTF::::addPassingHashCode): Ditto.
   1519         (WTF::::removeAndInvalidate): Ditto.
   1520         (WTF::::remove): Ditto.
   1521         (WTF::::rehash): Ditto.
   1522         (WTF::::checkTableConsistency): The assertion for !shouldExpand() was not correct - this
   1523         function returns true for tables with m_table == 0.
   1524         (WTF::::checkTableConsistencyExceptSize): Call checkValueConsistency for key. Potentially,
   1525         we could do the same for values.
   1526 
   1527         * wtf/HashTraits.h:
   1528         (WTF::GenericHashTraits::checkValueConsistency): An empty function that can be overridden
   1529         to add checks. Currently, the only override is for pointer hashes.
   1530 
   1531         * wtf/RefPtrHashMap.h: (WTF::::remove): Updated for checkTableConsistency renaming.
   1532 
   1533 2010-01-26  Lyon Chen  <liachen (a] rim.com>
   1534 
   1535         Reviewed by Maciej Stachowiak.
   1536 
   1537         Opcode.h use const void* for Opcode cause error #1211 for RVCT compiler
   1538         https://bugs.webkit.org/show_bug.cgi?id=33902
   1539 
   1540         * bytecode/Opcode.h:
   1541 
   1542 2010-01-26  Steve Falkenburg  <sfalken (a] apple.com>
   1543 
   1544         Reviewed by Oliver Hunt.
   1545 
   1546         Windows build references non-existent include paths
   1547         https://bugs.webkit.org/show_bug.cgi?id=34175
   1548 
   1549         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
   1550         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
   1551         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
   1552         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
   1553         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
   1554         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
   1555 
   1556 2010-01-26  Oliver Hunt  <oliver (a] apple.com>
   1557 
   1558         Reviewed by Geoffrey Garen.
   1559 
   1560         Using JavaScriptCore API with a webkit vended context can result in slow script dialog
   1561         https://bugs.webkit.org/show_bug.cgi?id=34172
   1562 
   1563         Make the APIShim correctly increment and decrement the timeout
   1564         entry counter.
   1565 
   1566         * API/APIShims.h:
   1567         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
   1568         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
   1569         (JSC::APICallbackShim::APICallbackShim):
   1570         (JSC::APICallbackShim::~APICallbackShim):
   1571 
   1572 2010-01-26  Simon Hausmann  <simon.hausmann (a] nokia.com>
   1573 
   1574         [Qt] Fix compilation of QtScript with non-gcc compilers
   1575 
   1576         Variable length stack arrays are a gcc extension. Use QVarLengthArray
   1577         as a more portable solution that still tries to allocate on the stack
   1578         first.
   1579 
   1580         * qt/api/qscriptvalue_p.h:
   1581         (QScriptValuePrivate::call):
   1582 
   1583 2010-01-26  Simon Hausmann  <simon.hausmann (a] nokia.com>
   1584 
   1585         Reviewed by Tor Arne Vestb.
   1586 
   1587         [Qt] Fix the build on platforms without JIT support.
   1588 
   1589         The JIT support should be determined at compile-time via wtf/Platform.h
   1590 
   1591         * qt/api/QtScript.pro:
   1592 
   1593 2010-01-26  Jedrzej Nowacki  <jedrzej.nowacki (a] nokia.com>
   1594 
   1595         Reviewed by Simon Hausmann.
   1596 
   1597         First steps of the QtScript API.
   1598         
   1599         Two new classes were created; QScriptEngine and QScriptValue.
   1600         The first should encapsulate a javascript context and the second a script
   1601         value.
   1602         
   1603         This API is still in development, so it isn't compiled by default.
   1604         To trigger compilation, pass --qmakearg="CONFIG+=build-qtscript" to
   1605         build-webkit.
   1606 
   1607         https://bugs.webkit.org/show_bug.cgi?id=32565
   1608 
   1609         * qt/api/QtScript.pro: Added.
   1610         * qt/api/qscriptconverter_p.h: Added.
   1611         (QScriptConverter::toString):
   1612         * qt/api/qscriptengine.cpp: Added.
   1613         (QScriptEngine::QScriptEngine):
   1614         (QScriptEngine::~QScriptEngine):
   1615         (QScriptEngine::evaluate):
   1616         (QScriptEngine::collectGarbage):
   1617         * qt/api/qscriptengine.h: Added.
   1618         * qt/api/qscriptengine_p.cpp: Added.
   1619         (QScriptEnginePrivate::QScriptEnginePrivate):
   1620         (QScriptEnginePrivate::~QScriptEnginePrivate):
   1621         (QScriptEnginePrivate::evaluate):
   1622         * qt/api/qscriptengine_p.h: Added.
   1623         (QScriptEnginePrivate::get):
   1624         (QScriptEnginePrivate::collectGarbage):
   1625         (QScriptEnginePrivate::makeJSValue):
   1626         (QScriptEnginePrivate::context):
   1627         * qt/api/qscriptvalue.cpp: Added.
   1628         (QScriptValue::QScriptValue):
   1629         (QScriptValue::~QScriptValue):
   1630         (QScriptValue::isValid):
   1631         (QScriptValue::isBool):
   1632         (QScriptValue::isBoolean):
   1633         (QScriptValue::isNumber):
   1634         (QScriptValue::isNull):
   1635         (QScriptValue::isString):
   1636         (QScriptValue::isUndefined):
   1637         (QScriptValue::isError):
   1638         (QScriptValue::isObject):
   1639         (QScriptValue::isFunction):
   1640         (QScriptValue::toString):
   1641         (QScriptValue::toNumber):
   1642         (QScriptValue::toBool):
   1643         (QScriptValue::toBoolean):
   1644         (QScriptValue::toInteger):
   1645         (QScriptValue::toInt32):
   1646         (QScriptValue::toUInt32):
   1647         (QScriptValue::toUInt16):
   1648         (QScriptValue::call):
   1649         (QScriptValue::engine):
   1650         (QScriptValue::operator=):
   1651         (QScriptValue::equals):
   1652         (QScriptValue::strictlyEquals):
   1653         * qt/api/qscriptvalue.h: Added.
   1654         (QScriptValue::):
   1655         * qt/api/qscriptvalue_p.h: Added.
   1656         (QScriptValuePrivate::):
   1657         (QScriptValuePrivate::get):
   1658         (QScriptValuePrivate::QScriptValuePrivate):
   1659         (QScriptValuePrivate::isValid):
   1660         (QScriptValuePrivate::isBool):
   1661         (QScriptValuePrivate::isNumber):
   1662         (QScriptValuePrivate::isNull):
   1663         (QScriptValuePrivate::isString):
   1664         (QScriptValuePrivate::isUndefined):
   1665         (QScriptValuePrivate::isError):
   1666         (QScriptValuePrivate::isObject):
   1667         (QScriptValuePrivate::isFunction):
   1668         (QScriptValuePrivate::toString):
   1669         (QScriptValuePrivate::toNumber):
   1670         (QScriptValuePrivate::toBool):
   1671         (QScriptValuePrivate::toInteger):
   1672         (QScriptValuePrivate::toInt32):
   1673         (QScriptValuePrivate::toUInt32):
   1674         (QScriptValuePrivate::toUInt16):
   1675         (QScriptValuePrivate::equals):
   1676         (QScriptValuePrivate::strictlyEquals):
   1677         (QScriptValuePrivate::assignEngine):
   1678         (QScriptValuePrivate::call):
   1679         (QScriptValuePrivate::engine):
   1680         (QScriptValuePrivate::context):
   1681         (QScriptValuePrivate::value):
   1682         (QScriptValuePrivate::object):
   1683         (QScriptValuePrivate::inherits):
   1684         (QScriptValuePrivate::isJSBased):
   1685         (QScriptValuePrivate::isNumberBased):
   1686         (QScriptValuePrivate::isStringBased):
   1687         * qt/api/qtscriptglobal.h: Added.
   1688         * qt/tests/qscriptengine/qscriptengine.pro: Added.
   1689         * qt/tests/qscriptengine/tst_qscriptengine.cpp: Added.
   1690         (tst_QScriptEngine::tst_QScriptEngine):
   1691         (tst_QScriptEngine::~tst_QScriptEngine):
   1692         (tst_QScriptEngine::init):
   1693         (tst_QScriptEngine::cleanup):
   1694         (tst_QScriptEngine::collectGarbage):
   1695         (tst_QScriptEngine::evaluate):
   1696         * qt/tests/qscriptvalue/qscriptvalue.pro: Added.
   1697         * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: Added.
   1698         (tst_QScriptValue::tst_QScriptValue):
   1699         (tst_QScriptValue::~tst_QScriptValue):
   1700         (tst_QScriptValue::init):
   1701         (tst_QScriptValue::cleanup):
   1702         (tst_QScriptValue::ctor):
   1703         (tst_QScriptValue::toString_data):
   1704         (tst_QScriptValue::toString):
   1705         (tst_QScriptValue::copyConstructor_data):
   1706         (tst_QScriptValue::copyConstructor):
   1707         (tst_QScriptValue::assignOperator_data):
   1708         (tst_QScriptValue::assignOperator):
   1709         (tst_QScriptValue::dataSharing):
   1710         (tst_QScriptValue::constructors_data):
   1711         (tst_QScriptValue::constructors):
   1712         (tst_QScriptValue::call):
   1713         * qt/tests/tests.pri: Added.
   1714         * qt/tests/tests.pro: Added.
   1715 
   1716 2010-01-25  Dmitry Titov  <dimich (a] chromium.org>
   1717 
   1718         Reviewed by David Levin.
   1719 
   1720         Fix Chromium Linux tests: the pthread functions on Linux produce segfault if they receive 0 thread handle.
   1721         After r53714, we can have 0 thread handles passed to pthread_join and pthread_detach if corresponding threads
   1722         were already terminated and their threadMap entries cleared.
   1723         Add a 0 check.
   1724 
   1725         * wtf/ThreadingPthreads.cpp:
   1726         (WTF::waitForThreadCompletion):
   1727         (WTF::detachThread):
   1728 
   1729 2010-01-24  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   1730 
   1731         Reviewed by Maciej Stachowiak.
   1732 
   1733         Refactor JITStubs.cpp so that DEFINE_STUB_FUNCTION is only used once for each function
   1734         https://bugs.webkit.org/show_bug.cgi?id=33866
   1735 
   1736         Place the guard USE(JSVALUE32_64) inside the body of the DEFINE_STUB_FUNCTION
   1737         macro for those functions that are always present.
   1738 
   1739         * jit/JITStubs.cpp:
   1740         (JSC::DEFINE_STUB_FUNCTION):
   1741 
   1742 2010-01-22  Kevin Watters  <kevinwatters (a] gmail.com>
   1743 
   1744         Reviewed by Kevin Ollivier.
   1745 
   1746         [wx] Remove the Bakefile build system, which is no longer being used.
   1747         
   1748         https://bugs.webkit.org/show_bug.cgi?id=34022
   1749 
   1750         * JavaScriptCoreSources.bkl: Removed.
   1751         * jscore.bkl: Removed.
   1752 
   1753 2010-01-22  Steve Falkenburg  <sfalken (a] apple.com>
   1754 
   1755         Reviewed by Darin Adler.
   1756 
   1757         https://bugs.webkit.org/show_bug.cgi?id=34025
   1758         Enable client-based Geolocation abstraction for Mac, Windows AppleWebKit targets.
   1759 
   1760         * Configurations/FeatureDefines.xcconfig:
   1761 
   1762 2010-01-22  Dmitry Titov  <dimich (a] chromium.org>
   1763 
   1764         Not reviewed, attempted Snow Leopard build fix.
   1765 
   1766         * wtf/ThreadingPthreads.cpp: Add a forward declaration of a function which is not 'static'.
   1767 
   1768 2009-01-22  Dmitry Titov  <dimich (a] chromium.org>
   1769 
   1770         Reviewed by Maciej Stachowiak.
   1771 
   1772         Fix the leak of ThreadIdentifiers in threadMap across threads.
   1773         https://bugs.webkit.org/show_bug.cgi?id=32689
   1774 
   1775         Test is added to DumpRenderTree.mm.
   1776 
   1777         * Android.mk: Added file ThreadIdentifierDataPthreads.(h|cpp) to build.
   1778         * Android.v8.wtf.mk: Ditto.
   1779         * GNUmakefile.am: Ditto.
   1780         * JavaScriptCore.gyp/JavaScriptCore.gyp: Ditto.
   1781         * JavaScriptCore.gypi: Ditto.
   1782         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
   1783 
   1784         * wtf/ThreadIdentifierDataPthreads.cpp: Added. Contains custom implementation of thread-specific data that uses custom destructor.
   1785         (WTF::ThreadIdentifierData::~ThreadIdentifierData): Removes the ThreadIdentifier from the threadMap.
   1786         (WTF::ThreadIdentifierData::identifier):
   1787         (WTF::ThreadIdentifierData::initialize):
   1788         (WTF::ThreadIdentifierData::destruct): Custom thread-specific destructor. Resets the value for the key again to cause second invoke.
   1789         (WTF::ThreadIdentifierData::initializeKeyOnceHelper):
   1790         (WTF::ThreadIdentifierData::initializeKeyOnce): Need to use pthread_once since initialization may come on any thread(s).
   1791         * wtf/ThreadIdentifierDataPthreads.h: Added.
   1792         (WTF::ThreadIdentifierData::ThreadIdentifierData):
   1793 
   1794         * wtf/Threading.cpp:
   1795         (WTF::threadEntryPoint): Move initializeCurrentThreadInternal to after the lock to make
   1796                                  sure it is invoked when ThreadIdentifier is already established.
   1797 
   1798         * wtf/Threading.h: Rename setThreadNameInternal -> initializeCurrentThreadInternal since it does more then only set the name now.
   1799         * wtf/ThreadingNone.cpp:
   1800         (WTF::initializeCurrentThreadInternal): Ditto.
   1801         * wtf/ThreadingWin.cpp:
   1802         (WTF::initializeCurrentThreadInternal): Ditto.
   1803         (WTF::initializeThreading): Ditto.
   1804         * wtf/gtk/ThreadingGtk.cpp:
   1805         (WTF::initializeCurrentThreadInternal): Ditto.
   1806         * wtf/qt/ThreadingQt.cpp:
   1807         (WTF::initializeCurrentThreadInternal): Ditto.
   1808 
   1809         * wtf/ThreadingPthreads.cpp:
   1810         (WTF::establishIdentifierForPthreadHandle):
   1811         (WTF::clearPthreadHandleForIdentifier): Make it not 'static' so the ~ThreadIdentifierData() in another file can call it.
   1812         (WTF::initializeCurrentThreadInternal): Set the thread-specific data. The ThreadIdentifier is already established by creating thread.
   1813         (WTF::waitForThreadCompletion): Remove call to clearPthreadHandleForIdentifier(threadID) since it is now done in ~ThreadIdentifierData().
   1814         (WTF::detachThread): Ditto.
   1815         (WTF::currentThread): Use the thread-specific data to get the ThreadIdentifier. It's many times faster then Mutex-protected iteration through the map.
   1816                               Also, set the thread-specific data if called first time on the thread.
   1817 
   1818 2010-01-21  Kwang Yul Seo  <skyul (a] company100.net>
   1819 
   1820         Reviewed by Alexey Proskuryakov.
   1821 
   1822         Add ThreadSpecific for ENABLE(SINGLE_THREADED)
   1823         https://bugs.webkit.org/show_bug.cgi?id=33878
   1824 
   1825         Implement ThreadSpecific with a simple getter/setter
   1826         when ENABLE(SINGLE_THREADED) is true.
   1827 
   1828         Due to the change in https://bugs.webkit.org/show_bug.cgi?id=33236,
   1829         an implementation of ThreadSpecific must be available to build WebKit.
   1830         This causes a build failure for platforms without a proper
   1831         ThreadSpecific implementation.
   1832 
   1833         * wtf/ThreadSpecific.h:
   1834         (WTF::::ThreadSpecific):
   1835         (WTF::::~ThreadSpecific):
   1836         (WTF::::get):
   1837         (WTF::::set):
   1838         (WTF::::destroy):
   1839 
   1840 2010-01-21  Kwang Yul Seo  <skyul (a] company100.net>
   1841 
   1842         Reviewed by Maciej Stachowiak.
   1843 
   1844         Add fastStrDup to FastMalloc
   1845         https://bugs.webkit.org/show_bug.cgi?id=33937
   1846 
   1847         The new string returned by fastStrDup is obtained with fastMalloc,
   1848         and can be freed with fastFree. This makes the memory management 
   1849         more consistent because we don't need to keep strdup allocated pointers
   1850         and free them with free(). Instead we can use fastFree everywhere.
   1851 
   1852         * wtf/FastMalloc.cpp:
   1853         (WTF::fastStrDup):
   1854         * wtf/FastMalloc.h:
   1855 
   1856 2010-01-21  Brady Eidson  <beidson (a] apple.com>
   1857 
   1858         Reviewed by Maciej Stachowiak.
   1859 
   1860         history.back() for same-document history traversals isn't synchronous as the specification states.
   1861         <rdar://problem/7535011> and https://bugs.webkit.org/show_bug.cgi?id=33538
   1862 
   1863         * wtf/Platform.h: Add a "HISTORY_ALWAYS_ASYNC" enable and turn it on for Chromium.
   1864 
   1865 2010-01-21  Geoffrey Garen  <ggaren (a] apple.com>
   1866 
   1867         Reviewed by Oliver Hunt.
   1868 
   1869         Always create a prototype for automatically managed classes.
   1870         
   1871         This fixes some errors where prototype chains were not correctly hooked
   1872         up, and also ensures that API classes work correctly with features like
   1873         instanceof.
   1874 
   1875         * API/JSClassRef.cpp:
   1876         (OpaqueJSClass::create): Cleaned up some of this code. Also changed it
   1877         to always create a prototype class.
   1878 
   1879         * API/tests/testapi.c:
   1880         (Derived2_class):
   1881         (main): Fixed a null value crash in the exception checking code.
   1882         * API/tests/testapi.js: Added some tests for the case where a prototype
   1883         chain would not be hooked up correctly.
   1884 
   1885 2010-01-21  Oliver Hunt  <oliver (a] apple.com>
   1886 
   1887         Reviewed by Geoff Garen.
   1888 
   1889         Force JSC to create a prototype chain for API classes with a
   1890         parent class but no static functions.
   1891 
   1892         * API/JSClassRef.cpp:
   1893         (OpaqueJSClass::create):
   1894 
   1895 2010-01-21  Kent Hansen  <kent.hansen (a] nokia.com>
   1896 
   1897         Reviewed by Geoffrey Garen.
   1898 
   1899         Object.getOwnPropertyDescriptor always returns undefined for JS API objects
   1900         https://bugs.webkit.org/show_bug.cgi?id=33946
   1901 
   1902         Ideally the getOwnPropertyDescriptor() reimplementation should return an
   1903         access descriptor that wraps the property getter and setter callbacks, but
   1904         that approach is much more involved than returning a value descriptor.
   1905         Keep it simple for now.
   1906 
   1907         * API/JSCallbackObject.h:
   1908         * API/JSCallbackObjectFunctions.h:
   1909         (JSC::::getOwnPropertyDescriptor):
   1910         * API/tests/testapi.js:
   1911 
   1912 2010-01-20  Mark Rowe  <mrowe (a] apple.com>
   1913 
   1914         Build fix.
   1915 
   1916         * wtf/FastMalloc.cpp:
   1917         (WTF::TCMalloc_PageHeap::initializeScavenger): Remove unnecessary function call.
   1918 
   1919 2010-01-20  Mark Rowe  <mrowe (a] apple.com>
   1920 
   1921         Reviewed by Oliver Hunt.
   1922 
   1923         Use the inline i386 assembly for x86_64 as well rather than falling back to using pthread mutexes.
   1924 
   1925         * wtf/TCSpinLock.h:
   1926         (TCMalloc_SpinLock::Lock):
   1927         (TCMalloc_SpinLock::Unlock):
   1928         (TCMalloc_SlowLock):
   1929 
   1930 2010-01-20  Mark Rowe  <mrowe (a] apple.com>
   1931 
   1932         Reviewed by Oliver Hunt.
   1933 
   1934         <rdar://problem/7215063> Use GCD instead of an extra thread for FastMalloc scavenging on platforms where it is supported
   1935 
   1936         Abstract the background scavenging slightly so that an alternate implementation that uses GCD can be used on platforms
   1937         where it is supported.
   1938 
   1939         * wtf/FastMalloc.cpp:
   1940         (WTF::TCMalloc_PageHeap::init):
   1941         (WTF::TCMalloc_PageHeap::initializeScavenger):
   1942         (WTF::TCMalloc_PageHeap::signalScavenger):
   1943         (WTF::TCMalloc_PageHeap::shouldContinueScavenging):
   1944         (WTF::TCMalloc_PageHeap::Delete):
   1945         (WTF::TCMalloc_PageHeap::periodicScavenge):
   1946         * wtf/Platform.h:
   1947 
   1948 2010-01-20  Geoffrey Garen  <ggaren (a] apple.com>
   1949 
   1950         Reviewed by Oliver Hunt.
   1951 
   1952         <rdar://problem/7562708> REGRESSION(53460): Heap::destroy may not run
   1953         all destructors
   1954 
   1955         * runtime/Collector.cpp:
   1956         (JSC::Heap::freeBlocks): Instead of fully marking protected objects,
   1957         just set their mark bits. This prevents protected objects from keeping
   1958         unprotected objects alive. Destructor order is not guaranteed, so it's
   1959         OK to destroy objects pointed to by protected objects before destroying
   1960         protected objects.
   1961 
   1962 2010-01-19  David Levin  <levin (a] chromium.org>
   1963 
   1964         Reviewed by Oliver Hunt.
   1965 
   1966         CrossThreadCopier needs to support ThreadSafeShared better.
   1967         https://bugs.webkit.org/show_bug.cgi?id=33698
   1968 
   1969         * wtf/TypeTraits.cpp: Added tests for the new type traits.
   1970         * wtf/TypeTraits.h:
   1971         (WTF::IsSubclass): Determines if a class is a derived from another class.
   1972         (WTF::IsSubclassOfTemplate): Determines if a class is a derived from a
   1973         template class (with one parameter that is unknown).
   1974         (WTF::RemoveTemplate): Reveals the type for a template parameter.
   1975 
   1976 2010-01-20  Steve Falkenburg  <sfalken (a] apple.com>
   1977 
   1978         Reviewed by Darin Adler and Adam Roben.
   1979 
   1980         Feature defines are difficult to maintain on Windows builds
   1981         https://bugs.webkit.org/show_bug.cgi?id=33883
   1982 
   1983         FeatureDefines.vsprops are now maintained in a way similar to
   1984         Configurations/FeatureDefines.xcconfig, with the added advantage
   1985         of having a single FeatureDefines file across all projects.
   1986 
   1987         * Configurations/FeatureDefines.xcconfig: Add comments about keeping feature definitions in sync.
   1988         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add FeatureDefines.vsprops inherited property sheet.
   1989         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add FeatureDefines.vsprops inherited property sheet.
   1990 
   1991 2010-01-20  Csaba Osztrogonc  <ossy (a] webkit.org>
   1992 
   1993         [Qt] Unreviewed buildfix for r53547.
   1994 
   1995         * DerivedSources.pro:
   1996 
   1997 2010-01-20  Tor Arne Vestb  <tor.arne.vestbo (a] nokia.com>
   1998 
   1999         Reviewed by Simon Hausmann.
   2000 
   2001         [Qt] Make extraCompilers for generated sources depend on their scripts
   2002 
   2003         * DerivedSources.pro:
   2004 
   2005 2010-01-19  Brian Weinstein  <bweinstein (a] apple.com>
   2006 
   2007         Reviewed by Tim Hatcher.
   2008 
   2009         When JavaScriptCore calls Debugger::Exception, have it pass a
   2010         hasHandler variable that represents if exception is being handled
   2011         in the same function (not in a parent on the call stack).
   2012         
   2013         This just adds a new parameter, no behavior is changed.
   2014 
   2015         * debugger/Debugger.h:
   2016         * interpreter/Interpreter.cpp:
   2017         (JSC::Interpreter::throwException):
   2018 
   2019 2010-01-18  Maciej Stachowiak  <mjs (a] apple.com>
   2020 
   2021         Reviewed by Adam Barth.
   2022 
   2023         Inline functions that are hot in DOM manipulation
   2024         https://bugs.webkit.org/show_bug.cgi?id=33820
   2025         
   2026         (3% speedup on Dromaeo DOM Core tests)
   2027 
   2028         * runtime/WeakGCMap.h:
   2029         (JSC::::get): inline
   2030 
   2031 2010-01-19  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   2032 
   2033         Unreviewed build fix for JIT with RVCT.
   2034 
   2035         Remove IMPORT statement; cti_vm_throw is already defined in JITStubs.h.
   2036         Remove extra ')'.
   2037 
   2038         * jit/JITStubs.cpp:
   2039         (JSC::ctiVMThrowTrampoline):
   2040 
   2041 2010-01-19  Geoffrey Garen  <ggaren (a] apple.com>
   2042 
   2043         Reviewed by Oliver Hunt.
   2044 
   2045         REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/
   2046         https://bugs.webkit.org/show_bug.cgi?id=33826
   2047 
   2048         This bug was caused by a GC-protected object being destroyed early by
   2049         Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers
   2050         to GC-protected memory to be valid.
   2051 
   2052         The solution is to do two passes of tear-down in Heap::destroy. The first
   2053         pass tears down all unprotected objects. The second pass ASSERTs that all
   2054         previously protected objects are now unprotected, and then tears down
   2055         all perviously protected objects. These two passes simulate the two passes
   2056         that would have been required to free a protected object during normal GC.
   2057         
   2058         * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap.
   2059 
   2060         * runtime/Collector.cpp:
   2061         (JSC::Heap::destroy): Moved ASSERTs to here.
   2062         (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its
   2063         setter to the function that does the shrinking.
   2064         (JSC::Heap::freeBlocks): Implemented above algorithm.
   2065         (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink.
   2066 
   2067 2010-01-19  Gavin Barraclough  <barraclough (a] apple.com>
   2068 
   2069         Reviewed by NOBODY (build fix).
   2070 
   2071         Reverting r53455, breaks 2 javascriptcore tests.
   2072 
   2073         * API/JSContextRef.cpp:
   2074         * runtime/Collector.cpp:
   2075         (JSC::Heap::destroy):
   2076         (JSC::Heap::freeBlock):
   2077         (JSC::Heap::freeBlocks):
   2078         (JSC::Heap::shrinkBlocks):
   2079 
   2080 2010-01-18  Gavin Barraclough  <barraclough (a] apple.com>
   2081 
   2082         Reviewed by NOBODY (build fix).
   2083 
   2084         Revert r53454, since it causes much sadness in this world.
   2085 
   2086         * runtime/UString.cpp:
   2087         (JSC::UString::spliceSubstringsWithSeparators):
   2088         (JSC::UString::replaceRange):
   2089         * runtime/UStringImpl.cpp:
   2090         (JSC::UStringImpl::baseSharedBuffer):
   2091         (JSC::UStringImpl::sharedBuffer):
   2092         (JSC::UStringImpl::~UStringImpl):
   2093         * runtime/UStringImpl.h:
   2094         (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
   2095         (JSC::UntypedPtrAndBitfield::asPtr):
   2096         (JSC::UntypedPtrAndBitfield::operator&=):
   2097         (JSC::UntypedPtrAndBitfield::operator|=):
   2098         (JSC::UntypedPtrAndBitfield::operator&):
   2099         (JSC::UStringImpl::create):
   2100         (JSC::UStringImpl::cost):
   2101         (JSC::UStringImpl::isIdentifier):
   2102         (JSC::UStringImpl::setIsIdentifier):
   2103         (JSC::UStringImpl::ref):
   2104         (JSC::UStringImpl::deref):
   2105         (JSC::UStringImpl::checkConsistency):
   2106         (JSC::UStringImpl::UStringImpl):
   2107         (JSC::UStringImpl::bufferOwnerString):
   2108         (JSC::UStringImpl::bufferOwnership):
   2109         (JSC::UStringImpl::isStatic):
   2110         * wtf/StringHashFunctions.h:
   2111         (WTF::stringHash):
   2112 
   2113 2010-01-18  Geoffrey Garen  <ggaren (a] apple.com>
   2114 
   2115         Reviewed by Oliver Hunt.
   2116 
   2117         REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/
   2118         https://bugs.webkit.org/show_bug.cgi?id=33826
   2119 
   2120         This bug was caused by a GC-protected object being destroyed early by
   2121         Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers
   2122         to GC-protected memory to be valid.
   2123 
   2124         The solution is to do two passes of tear-down in Heap::destroy. The first
   2125         pass tears down all unprotected objects. The second pass ASSERTs that all
   2126         previously protected objects are now unprotected, and then tears down
   2127         all perviously protected objects. These two passes simulate the two passes
   2128         that would have been required to free a protected object during normal GC.
   2129         
   2130         * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap.
   2131 
   2132         * runtime/Collector.cpp:
   2133         (JSC::Heap::destroy): Moved ASSERTs to here.
   2134         (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its
   2135         setter to the function that does the shrinking.
   2136         (JSC::Heap::freeBlocks): Implemented above algorithm.
   2137         (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink.
   2138 
   2139 2010-01-18  Gavin Barraclough  <barraclough (a] apple.com>
   2140 
   2141         Reviewed by Oliver Hunt.
   2142 
   2143         https://bugs.webkit.org/show_bug.cgi?id=33731
   2144         Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags).
   2145 
   2146         This break the OS X Leaks tool.  Instead, free up some more bits from the refCount.
   2147 
   2148         * runtime/UStringImpl.cpp:
   2149         (JSC::UStringImpl::sharedBuffer):
   2150         (JSC::UStringImpl::~UStringImpl):
   2151         * runtime/UStringImpl.h:
   2152         (JSC::UStringImpl::cost):
   2153         (JSC::UStringImpl::checkConsistency):
   2154         (JSC::UStringImpl::UStringImpl):
   2155         (JSC::UStringImpl::bufferOwnerString):
   2156         (JSC::UStringImpl::):
   2157         * wtf/StringHashFunctions.h:
   2158         (WTF::stringHash):
   2159 
   2160 2010-01-18  Kent Tamura  <tkent (a] chromium.org>
   2161 
   2162         Reviewed by Darin Adler.
   2163 
   2164         HTMLInputElement::valueAsDate setter support for type=month.
   2165         https://bugs.webkit.org/show_bug.cgi?id=33021
   2166 
   2167         Expose the following functions to be used by WebCore:
   2168          - WTF::msToyear()
   2169          - WTF::dayInYear()
   2170          - WTF::monthFromDayInYear()
   2171          - WTF::dayInMonthFromDayInYear()
   2172 
   2173         * JavaScriptCore.exp:
   2174         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   2175         * wtf/DateMath.cpp:
   2176         (WTF::msToYear): Remove "static inline".
   2177         (WTF::dayInYear): Remove "static inline".
   2178         (WTF::monthFromDayInYear): Remove "static inline".
   2179         (WTF::dayInMonthFromDayInYear): Remove "static inline".
   2180         * wtf/DateMath.h: Declare the above functions.
   2181 
   2182 2010-01-18  Darin Adler  <darin (a] apple.com>
   2183 
   2184         Fix build by reverting the previous change.
   2185 
   2186         * runtime/UString.h: Rolled out the FastAllocBase base class.
   2187         It was making UString larger, and therefore JSString larger,
   2188         and too big for a garbage collection cell.
   2189 
   2190         This raises the unpleasant possibility that many classes became
   2191         larger because we added the FastAllocBase base class. I am
   2192         worried about this, and it needs to be investigated.
   2193 
   2194 2010-01-18  Zoltan Horvath  <zoltan (a] webkit.org>
   2195 
   2196         Reviewed by Darin Adler.
   2197 
   2198         Allow custom memory allocation control for UString class
   2199         https://bugs.webkit.org/show_bug.cgi?id=27831
   2200 
   2201         Inherits the following class from FastAllocBase because it is
   2202         instantiated by 'new' and no need to be copyable:
   2203 
   2204         class name     - instantiated at:
   2205         classs UString - JavaScriptCore/runtime/UString.cpp:160
   2206 
   2207         * runtime/UString.h:
   2208 
   2209 2010-01-18  Evan Cheng  <evan.cheng (a] apple.com>
   2210 
   2211         Reviewed by Darin Adler.
   2212 
   2213         Add some ALWAYS_INLINE for key functions not inlined by some versions of GCC.
   2214         rdar://problem/7553780
   2215 
   2216         * runtime/JSObject.h:
   2217         (JSC::JSObject::getPropertySlot): ALWAYS_INLINE both overloads.
   2218         * runtime/JSString.h:
   2219         (JSC::JSString::JSString): ALWAYS_INLINE the version that takes a UString.
   2220         * runtime/UString.h:
   2221         (JSC::operator==): ALWAYS_INLINE the version that compares two UString objects.
   2222 
   2223 2010-01-18  Csaba Osztrogonc  <ossy (a] webkit.org>
   2224 
   2225         Reviewed by Darin Adler.
   2226 
   2227         Delete dftables-xxxxxxxx.in files automatically.
   2228         https://bugs.webkit.org/show_bug.cgi?id=33796
   2229 
   2230         * pcre/dftables: unlink unnecessary temporary file.
   2231 
   2232 2010-01-18  Tor Arne Vestb  <tor.arne.vestbo (a] nokia.com>
   2233 
   2234         Reviewed by Simon Hausmann.
   2235 
   2236         [Qt] Force qmake to generate a single makefile for DerivedSources.pro
   2237 
   2238         * DerivedSources.pro:
   2239 
   2240 2010-01-18  Csaba Osztrogonc  <ossy (a] webkit.org>
   2241 
   2242         Rubber-stamped by Gustavo Noronha Silva.
   2243 
   2244         Rolling out r53391 and r53392 because of random crashes on buildbots.
   2245         https://bugs.webkit.org/show_bug.cgi?id=33731
   2246 
   2247         * bytecode/CodeBlock.h:
   2248         (JSC::CallLinkInfo::seenOnce):
   2249         (JSC::CallLinkInfo::setSeen):
   2250         (JSC::MethodCallLinkInfo::MethodCallLinkInfo):
   2251         (JSC::MethodCallLinkInfo::seenOnce):
   2252         (JSC::MethodCallLinkInfo::setSeen):
   2253         * jit/JIT.cpp:
   2254         (JSC::JIT::unlinkCall):
   2255         * jit/JITPropertyAccess.cpp:
   2256         (JSC::JIT::patchMethodCallProto):
   2257         * runtime/UString.cpp:
   2258         (JSC::UString::spliceSubstringsWithSeparators):
   2259         (JSC::UString::replaceRange):
   2260         * runtime/UString.h:
   2261         * runtime/UStringImpl.cpp:
   2262         (JSC::UStringImpl::baseSharedBuffer):
   2263         (JSC::UStringImpl::sharedBuffer):
   2264         (JSC::UStringImpl::~UStringImpl):
   2265         * runtime/UStringImpl.h:
   2266         (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
   2267         (JSC::UntypedPtrAndBitfield::asPtr):
   2268         (JSC::UntypedPtrAndBitfield::operator&=):
   2269         (JSC::UntypedPtrAndBitfield::operator|=):
   2270         (JSC::UntypedPtrAndBitfield::operator&):
   2271         (JSC::UStringImpl::create):
   2272         (JSC::UStringImpl::cost):
   2273         (JSC::UStringImpl::isIdentifier):
   2274         (JSC::UStringImpl::setIsIdentifier):
   2275         (JSC::UStringImpl::ref):
   2276         (JSC::UStringImpl::deref):
   2277         (JSC::UStringImpl::checkConsistency):
   2278         (JSC::UStringImpl::UStringImpl):
   2279         (JSC::UStringImpl::bufferOwnerString):
   2280         (JSC::UStringImpl::bufferOwnership):
   2281         (JSC::UStringImpl::isStatic):
   2282         * wtf/StringHashFunctions.h:
   2283         (WTF::stringHash):
   2284 
   2285 2010-01-18  Simon Hausmann  <simon.hausmann (a] nokia.com>
   2286 
   2287         Reviewed by Kenneth Rohde Christiansen.
   2288 
   2289         Fix the build with strict gcc and RVCT versions: It's not legal to cast a
   2290         pointer to a function to a void* without an intermediate cast to a non-pointer
   2291         type. A cast to a ptrdiff_t inbetween fixes it.
   2292 
   2293         * runtime/JSString.h:
   2294         (JSC::Fiber::JSString):
   2295 
   2296 2010-01-15  Gavin Barraclough  <barraclough (a] apple.com>
   2297 
   2298         Reviewed by Oliver Hunt.
   2299 
   2300         https://bugs.webkit.org/show_bug.cgi?id=33731
   2301         Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags).
   2302 
   2303         This break the OS X Leaks tool.  Instead, free up some more bits from the refCount.
   2304 
   2305         * runtime/UStringImpl.cpp:
   2306         (JSC::UStringImpl::sharedBuffer):
   2307         (JSC::UStringImpl::~UStringImpl):
   2308         * runtime/UStringImpl.h:
   2309         (JSC::UStringImpl::cost):
   2310         (JSC::UStringImpl::checkConsistency):
   2311         (JSC::UStringImpl::UStringImpl):
   2312         (JSC::UStringImpl::bufferOwnerString):
   2313         (JSC::UStringImpl::):
   2314         * wtf/StringHashFunctions.h:
   2315         (WTF::stringHash):
   2316 
   2317 2010-01-15  Gavin Barraclough  <barraclough (a] apple.com>
   2318 
   2319         Reviewed by Oliver Hunt.
   2320 
   2321         https://bugs.webkit.org/show_bug.cgi?id=33731
   2322         Remove uses of PtrAndFlags from JIT data stuctures.
   2323 
   2324         These break the OS X Leaks tool.  Free up a bit in CallLinkInfo, and invalid
   2325         permutation of pointer states in MethodCallLinkInfo to represent the removed bits.
   2326 
   2327         * bytecode/CodeBlock.h:
   2328         (JSC::CallLinkInfo::seenOnce):
   2329         (JSC::CallLinkInfo::setSeen):
   2330         (JSC::MethodCallLinkInfo::MethodCallLinkInfo):
   2331         (JSC::MethodCallLinkInfo::seenOnce):
   2332         (JSC::MethodCallLinkInfo::setSeen):
   2333         * jit/JIT.cpp:
   2334         (JSC::JIT::unlinkCall):
   2335         * jit/JITPropertyAccess.cpp:
   2336         (JSC::JIT::patchMethodCallProto):
   2337         * runtime/UString.h:
   2338 
   2339 2010-01-16  Maciej Stachowiak  <mjs (a] apple.com>
   2340 
   2341         Reviewed by Oliver Hunt.
   2342 
   2343         Cache JS string values made from DOM strings (Dromaeo speedup)
   2344         https://bugs.webkit.org/show_bug.cgi?id=33768
   2345         <rdar://problem/7353576>
   2346 
   2347         * runtime/JSString.h:
   2348         (JSC::jsStringWithFinalizer): Added new mechanism for a string to have an optional
   2349         finalizer callback, for the benefit of weak-referencing caches.
   2350         (JSC::):
   2351         (JSC::Fiber::JSString):
   2352         (JSC::Fiber::~JSString):
   2353         * runtime/JSString.cpp:
   2354         (JSC::JSString::resolveRope): Clear fibers so this doesn't look like a string with a finalizer.
   2355         * runtime/WeakGCMap.h: Include "Collector.h" to make this header includable by itself.
   2356 
   2357 2010-01-15  Sam Weinig  <sam (a] webkit.org>
   2358 
   2359         Reviewed by Maciej Stachowiak.
   2360 
   2361         Fix for <rdar://problem/7548432>
   2362         Add ALWAYS_INLINE to jsLess for a 1% speedup on llvm-gcc.
   2363 
   2364         * runtime/Operations.h:
   2365         (JSC::jsLess):
   2366 
   2367 2010-01-14  Geoffrey Garen  <ggaren (a] apple.com>
   2368 
   2369         Reviewed by Oliver Hunt.
   2370 
   2371         REGRESISON: Google maps buttons not working properly
   2372         https://bugs.webkit.org/show_bug.cgi?id=31871
   2373 
   2374         REGRESSION(r52948): JavaScript exceptions thrown on Google Maps when
   2375         getting directions for a second time
   2376         https://bugs.webkit.org/show_bug.cgi?id=33446
   2377         
   2378         SunSpider and v8 report no change.
   2379 
   2380         * interpreter/Interpreter.cpp:
   2381         (JSC::Interpreter::tryCacheGetByID): Update our cached offset in case
   2382         flattening the dictionary changed any of its offsets.
   2383 
   2384         * jit/JITStubs.cpp:
   2385         (JSC::JITThunks::tryCacheGetByID):
   2386         (JSC::DEFINE_STUB_FUNCTION):
   2387         * runtime/Operations.h:
   2388         (JSC::normalizePrototypeChain): ditto
   2389 
   2390 2010-01-14  Gavin Barraclough  <barraclough (a] apple.com>
   2391 
   2392         Reviewed by Oliver Hunt.
   2393 
   2394         https://bugs.webkit.org/show_bug.cgi?id=33705
   2395         UStringImpl::create() should use internal storage
   2396 
   2397         When creating a UStringImpl copying of a UChar*, we can use an internal buffer,
   2398         by calling UStringImpl::tryCreateUninitialized().
   2399 
   2400         Also, remove duplicate of copyChars from JSString, call UStringImpl's version.
   2401 
   2402         Small (max 0.5%) progression on Sunspidey.
   2403 
   2404         * runtime/JSString.cpp:
   2405         (JSC::JSString::resolveRope):
   2406         * runtime/UStringImpl.h:
   2407         (JSC::UStringImpl::create):
   2408 
   2409 2010-01-14  Gavin Barraclough  <barraclough (a] apple.com>
   2410 
   2411         Reviewed by Sam Weinig.
   2412 
   2413         Make naming & behaviour of UString[Impl] methods more consistent.
   2414         https://bugs.webkit.org/show_bug.cgi?id=33702
   2415 
   2416         UString::create() creates a copy of the UChar* passed, but UStringImpl::create() assumes
   2417         that it should assume ownership of the provided buffer (with UString::createNonCopying()
   2418         and UStringImpl::createCopying() providing the alternate behaviours).  Unify on create()
   2419         taking a copy of the provided buffer.  For non-copying cases, use the name 'adopt', and
   2420         make this method take a Vector<UChar>&.  For cases where non-copying construction was being
   2421         used, other than from a Vector<UChar>, change the code to allocate the storage along with
   2422         the UStringImpl using UStringImpl::createUninitialized().  (The adopt() method also more
   2423         closely matches that of WebCore::StringImpl).
   2424 
   2425         Also, UString::createUninitialized() and UStringImpl::createUninitialized() have incompatible
   2426         behaviours, in that the UString form sets the provided UChar* to a null or non-null value to
   2427         indicate success or failure, but UStringImpl uses the returned PassRefPtr<UStringImpl> to
   2428         indicate when allocation has failed (potentially leaving the output Char* uninitialized).
   2429         This is also incompatible with WebCore::StringImpl's behaviour, in that
   2430         StringImpl::createUninitialized() will CRASH() if unable to allocate.  Some uses of
   2431         createUninitialized() in JSC are unsafe, since they do not test the result for null.
   2432         UStringImpl's indication is preferable, since we may want a successful call to set the result
   2433         buffer to 0 (specifically, StringImpl returns 0 for the buffer where createUninitialized()
   2434         returns the empty string, which seems reasonable to catch bugs early).  UString's method
   2435         cannot support UStringImpl's behaviour directly, since it returns an object rather than a
   2436         pointer.
   2437             - remove UString::createUninitialized(), replace with calls to UStringImpl::createUninitialized()
   2438             - create a UStringImpl::tryCreateUninitialized() form UStringImpl::createUninitialized(),
   2439               with current behaviour, make createUninitialized() crash on failure to allocate.
   2440             - make cases in JSC that do not check the result call createUninitialized(), and cases that do
   2441               check call tryCreateUninitialized().
   2442 
   2443         Rename computedHash() to existingHash(), to bring this in line wih WebCore::StringImpl.
   2444 
   2445         * API/JSClassRef.cpp:
   2446         (OpaqueJSClassContextData::OpaqueJSClassContextData):
   2447         * JavaScriptCore.exp:
   2448         * runtime/ArrayPrototype.cpp:
   2449         (JSC::arrayProtoFuncToString):
   2450         * runtime/Identifier.cpp:
   2451         (JSC::CStringTranslator::translate):
   2452         (JSC::UCharBufferTranslator::translate):
   2453         * runtime/JSString.cpp:
   2454         (JSC::JSString::resolveRope):
   2455         * runtime/Lookup.cpp:
   2456         (JSC::HashTable::createTable):
   2457         * runtime/Lookup.h:
   2458         (JSC::HashTable::entry):
   2459         * runtime/StringBuilder.h:
   2460         (JSC::StringBuilder::release):
   2461         * runtime/StringConstructor.cpp:
   2462         (JSC::stringFromCharCodeSlowCase):
   2463         * runtime/StringPrototype.cpp:
   2464         (JSC::substituteBackreferencesSlow):
   2465         (JSC::stringProtoFuncToLowerCase):
   2466         (JSC::stringProtoFuncToUpperCase):
   2467         (JSC::stringProtoFuncFontsize):
   2468         (JSC::stringProtoFuncLink):
   2469         * runtime/Structure.cpp:
   2470         (JSC::Structure::despecifyDictionaryFunction):
   2471         (JSC::Structure::get):
   2472         (JSC::Structure::despecifyFunction):
   2473         (JSC::Structure::put):
   2474         (JSC::Structure::remove):
   2475         (JSC::Structure::insertIntoPropertyMapHashTable):
   2476         (JSC::Structure::checkConsistency):
   2477         * runtime/Structure.h:
   2478         (JSC::Structure::get):
   2479         * runtime/StructureTransitionTable.h:
   2480         (JSC::StructureTransitionTableHash::hash):
   2481         * runtime/UString.cpp:
   2482         (JSC::createRep):
   2483         (JSC::UString::UString):
   2484         (JSC::UString::spliceSubstringsWithSeparators):
   2485         (JSC::UString::replaceRange):
   2486         (JSC::UString::operator=):
   2487         * runtime/UString.h:
   2488         (JSC::UString::adopt):
   2489         (JSC::IdentifierRepHash::hash):
   2490         (JSC::makeString):
   2491         * runtime/UStringImpl.h:
   2492         (JSC::UStringImpl::adopt):
   2493         (JSC::UStringImpl::create):
   2494         (JSC::UStringImpl::createUninitialized):
   2495         (JSC::UStringImpl::tryCreateUninitialized):
   2496         (JSC::UStringImpl::existingHash):
   2497 
   2498 2010-01-13  Kent Hansen  <kent.hansen (a] nokia.com>
   2499 
   2500         Reviewed by Oliver Hunt.
   2501 
   2502         JSON.stringify and JSON.parse needlessly process properties in the prototype chain
   2503         https://bugs.webkit.org/show_bug.cgi?id=33053
   2504 
   2505         * runtime/JSONObject.cpp:
   2506         (JSC::Stringifier::Holder::appendNextProperty):
   2507         (JSC::Walker::walk):
   2508 
   2509 2010-01-13  Gavin Barraclough  <barraclough (a] apple.com>
   2510 
   2511         Reviewed by NOBODY (buildfix).
   2512 
   2513         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   2514 
   2515 2010-01-13  Alexey Proskuryakov  <ap (a] apple.com>
   2516 
   2517         Reviewed by Darin Adler.
   2518 
   2519         https://bugs.webkit.org/show_bug.cgi?id=33641
   2520         Assertion failure in Lexer.cpp if input stream ends while in string escape
   2521 
   2522         Test: fast/js/end-in-string-escape.html
   2523 
   2524         * parser/Lexer.cpp: (JSC::Lexer::lex): Bail out quickly on end of stream, not giving the
   2525         assertion a chance to fire.
   2526 
   2527 2010-01-13  Gavin Barraclough  <barraclough (a] apple.com>
   2528 
   2529         Reviewed by NOBODY (buildfix).
   2530 
   2531         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   2532 
   2533 2010-01-13  Gavin Barraclough  <barraclough (a] apple.com>
   2534 
   2535         Rubber stamped by Sam Weinig & Darin Adler.
   2536 
   2537         Three quick fixes to UStringImpl.
   2538             - The destroy() method can be switched back to a normal destructor; since we've switched
   2539               the way we protect static strings to be using an odd ref-count the destroy() won't abort.
   2540             - The cost() calculation logic was wrong.  If you have multiple JSStrings wrapping substrings
   2541               of a base string, they would each report the full cost of the base string to the heap.
   2542               Instead we should only be reporting once for the base string.
   2543             - Remove the overloaded new operator calling fastMalloc, replace this with a 'using' to pick
   2544               up the implementation from the parent class.
   2545 
   2546         * JavaScriptCore.exp:
   2547         * runtime/UStringImpl.cpp:
   2548         (JSC::UStringImpl::~UStringImpl):
   2549         * runtime/UStringImpl.h:
   2550         (JSC::UStringImpl::cost):
   2551         (JSC::UStringImpl::deref):
   2552 
   2553 2010-01-13  Jocelyn Turcotte  <jocelyn.turcotte (a] nokia.com>
   2554 
   2555         Reviewed by Simon Hausmann.
   2556 
   2557         [Qt] Split the build process in two different .pro files.
   2558         This allows qmake to be run once all source files are available.
   2559 
   2560         * DerivedSources.pro: Added.
   2561         * JavaScriptCore.pri: Moved source generation to DerivedSources.pro
   2562         * pcre/pcre.pri: Moved source generation to DerivedSources.pro
   2563 
   2564 2010-01-12  Kent Hansen  <kent.hansen (a] nokia.com>
   2565 
   2566         Reviewed by Geoffrey Garen.
   2567 
   2568         [ES5] Implement Object.getOwnPropertyNames
   2569         https://bugs.webkit.org/show_bug.cgi?id=32242
   2570 
   2571         Add an extra argument to getPropertyNames() and getOwnPropertyNames()
   2572         (and all reimplementations thereof) that indicates whether non-enumerable
   2573         properties should be added.
   2574 
   2575         * API/JSCallbackObject.h:
   2576         * API/JSCallbackObjectFunctions.h:
   2577         (JSC::::getOwnPropertyNames):
   2578         * JavaScriptCore.exp:
   2579         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   2580         * debugger/DebuggerActivation.cpp:
   2581         (JSC::DebuggerActivation::getOwnPropertyNames):
   2582         * debugger/DebuggerActivation.h:
   2583         * runtime/Arguments.cpp:
   2584         (JSC::Arguments::getOwnPropertyNames):
   2585         * runtime/Arguments.h:
   2586         * runtime/CommonIdentifiers.h:
   2587         * runtime/JSArray.cpp:
   2588         (JSC::JSArray::getOwnPropertyNames):
   2589         * runtime/JSArray.h:
   2590         * runtime/JSByteArray.cpp:
   2591         (JSC::JSByteArray::getOwnPropertyNames):
   2592         * runtime/JSByteArray.h:
   2593         * runtime/JSFunction.cpp:
   2594         (JSC::JSFunction::getOwnPropertyNames):
   2595         * runtime/JSFunction.h:
   2596         * runtime/JSNotAnObject.cpp:
   2597         (JSC::JSNotAnObject::getOwnPropertyNames):
   2598         * runtime/JSNotAnObject.h:
   2599         * runtime/JSObject.cpp:
   2600         (JSC::getClassPropertyNames):
   2601         (JSC::JSObject::getPropertyNames):
   2602         (JSC::JSObject::getOwnPropertyNames):
   2603         * runtime/JSObject.h:
   2604         * runtime/JSVariableObject.cpp:
   2605         (JSC::JSVariableObject::getOwnPropertyNames):
   2606         * runtime/JSVariableObject.h:
   2607         * runtime/ObjectConstructor.cpp:
   2608         (JSC::ObjectConstructor::ObjectConstructor):
   2609         (JSC::objectConstructorGetOwnPropertyNames):
   2610         * runtime/RegExpMatchesArray.h:
   2611         (JSC::RegExpMatchesArray::getOwnPropertyNames):
   2612         * runtime/StringObject.cpp:
   2613         (JSC::StringObject::getOwnPropertyNames):
   2614         * runtime/StringObject.h:
   2615         * runtime/Structure.cpp: Rename getEnumerablePropertyNames() to getPropertyNames(), which takes an extra argument.
   2616         (JSC::Structure::getPropertyNames):
   2617         * runtime/Structure.h:
   2618         (JSC::):
   2619 
   2620 2010-01-12  Alexey Proskuryakov  <ap (a] apple.com>
   2621 
   2622         Reviewed by Darin Adler.
   2623 
   2624         https://bugs.webkit.org/show_bug.cgi?id=33540
   2625         Make it possible to build in debug mode with assertions disabled
   2626 
   2627         * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION):
   2628         * runtime/Identifier.cpp: (JSC::Identifier::checkSameIdentifierTable):
   2629         * wtf/FastMalloc.cpp:
   2630         * wtf/HashTable.h: (WTF::HashTableConstIterator::checkValidity):
   2631         * yarr/RegexCompiler.cpp: (JSC::Yarr::compileRegex):
   2632 
   2633 2009-11-23  Yong Li  <yoli (a] rim.com>
   2634 
   2635         Reviewed by Adam Treat.
   2636 
   2637         Make GIF decoder support down-sampling
   2638         https://bugs.webkit.org/show_bug.cgi?id=31806
   2639 
   2640         * platform/image-decoders/ImageDecoder.cpp:
   2641         (WebCore::ImageDecoder::upperBoundScaledY):
   2642         (WebCore::ImageDecoder::lowerBoundScaledY):
   2643         * platform/image-decoders/ImageDecoder.h:
   2644         (WebCore::RGBA32Buffer::scaledRect):
   2645         (WebCore::RGBA32Buffer::setScaledRect):
   2646         (WebCore::ImageDecoder::scaledSize):
   2647         * platform/image-decoders/gif/GIFImageDecoder.cpp:
   2648         (WebCore::GIFImageDecoder::sizeNowAvailable):
   2649         (WebCore::GIFImageDecoder::initFrameBuffer):
   2650         (WebCore::copyOnePixel):
   2651         (WebCore::GIFImageDecoder::haveDecodedRow):
   2652         (WebCore::GIFImageDecoder::frameComplete):
   2653 
   2654 2010-01-12  Adam Barth  <abarth (a] webkit.org>
   2655 
   2656         Reviewed by Eric Seidel.
   2657 
   2658         ecma/Date/15.9.5.12-1.js fails every night at midnight
   2659         https://bugs.webkit.org/show_bug.cgi?id=28041
   2660 
   2661         Change the test to use a concrete time instead of "now".
   2662 
   2663         * tests/mozilla/ecma/Date/15.9.5.10-1.js:
   2664         * tests/mozilla/ecma/Date/15.9.5.12-1.js:
   2665 
   2666 2010-01-11  Csaba Osztrogonc  <ossy (a] webkit.org>
   2667 
   2668         Reviewed by Ariya Hidayat.
   2669 
   2670         [Qt] Enable JIT and YARR_JIT if (CPU(X86_64) && OS(LINUX) && GCC_VERSION >= 40100)
   2671 
   2672         * wtf/Platform.h:
   2673 
   2674 2010-01-11  Geoffrey Garen  <ggaren (a] apple.com>
   2675 
   2676         Reviewed by Alexey Proskuryakov.
   2677 
   2678         https://bugs.webkit.org/show_bug.cgi?id=33481
   2679         Uninitialized data members in ArrayStorage
   2680         
   2681         SunSpider reports no change.
   2682 
   2683         * runtime/JSArray.cpp:
   2684         (JSC::JSArray::JSArray): Initialize missing data members in the two cases
   2685         where we don't use fastZeroedMalloc, so it doesn't happen automatically.
   2686 
   2687 2010-01-11  Steve Falkenburg  <sfalken (a] apple.com>
   2688 
   2689         Reviewed by Sam Weinig.
   2690 
   2691         https://bugs.webkit.org/show_bug.cgi?id=33480
   2692         
   2693         Improve debugging reliability for WTF on Windows.
   2694         Store WTF static library's PDB file into a better location.
   2695 
   2696         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
   2697 
   2698 2010-01-11  Steve Falkenburg  <sfalken (a] apple.com>
   2699 
   2700         Windows build fix.
   2701         Remove extraneous entries from def file causing build warning.
   2702 
   2703         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   2704 
   2705 2010-01-10  Kent Hansen  <kent.hansen (a] nokia.com>
   2706 
   2707         Reviewed by Darin Adler.
   2708 
   2709         RegExp.prototype.toString returns "//" for empty regular expressions
   2710         https://bugs.webkit.org/show_bug.cgi?id=33319
   2711 
   2712         "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA.
   2713 
   2714         * runtime/RegExpPrototype.cpp:
   2715         (JSC::regExpProtoFuncToString):
   2716 
   2717         * tests/mozilla/ecma_2/RegExp/properties-001.js:
   2718         (AddRegExpCases):
   2719         * tests/mozilla/js1_2/regexp/toString.js:
   2720         Update relevant Mozilla tests (Mozilla has had this behavior since November 2003).
   2721 
   2722 2010-01-10  Darin Adler  <darin (a] apple.com>
   2723 
   2724         * tests/mozilla/ecma/Array/15.4.1.1.js: Added property allow-tabs.
   2725         * tests/mozilla/ecma/Array/15.4.1.2.js: Added property allow-tabs.
   2726         * tests/mozilla/ecma/Array/15.4.2.1-1.js: Added property allow-tabs.
   2727         * tests/mozilla/ecma/Array/15.4.2.2-1.js: Added property allow-tabs.
   2728         * tests/mozilla/ecma/Array/15.4.2.2-2.js: Added property allow-tabs.
   2729         * tests/mozilla/ecma/Array/15.4.2.3.js: Added property allow-tabs.
   2730         * tests/mozilla/ecma/Array/15.4.3.2.js: Added property allow-tabs.
   2731         * tests/mozilla/ecma/Array/15.4.3.js: Added property allow-tabs.
   2732         * tests/mozilla/ecma/Array/15.4.4.1.js: Added property allow-tabs.
   2733         * tests/mozilla/ecma/Array/15.4.4.js: Added property allow-tabs.
   2734         * tests/mozilla/ecma/LexicalConventions/7.7.4.js: Added property allow-tabs.
   2735         * tests/mozilla/ecma/Math/15.8.2.13.js: Added property allow-tabs.
   2736         * tests/mozilla/ecma/Math/15.8.2.16.js: Added property allow-tabs.
   2737         * tests/mozilla/ecma/Math/15.8.2.18.js: Added property allow-tabs.
   2738         * tests/mozilla/ecma/Math/15.8.2.2.js: Added property allow-tabs.
   2739         * tests/mozilla/ecma/Math/15.8.2.4.js: Added property allow-tabs.
   2740         * tests/mozilla/ecma/Math/15.8.2.5.js: Added property allow-tabs.
   2741         * tests/mozilla/ecma/Math/15.8.2.7.js: Added property allow-tabs.
   2742         * tests/mozilla/ecma/String/15.5.1.js: Added property allow-tabs.
   2743         * tests/mozilla/ecma/String/15.5.2.js: Added property allow-tabs.
   2744         * tests/mozilla/ecma/String/15.5.3.1-3.js: Added property allow-tabs.
   2745         * tests/mozilla/ecma/String/15.5.3.1-4.js: Added property allow-tabs.
   2746         * tests/mozilla/ecma/String/15.5.3.js: Added property allow-tabs.
   2747         * tests/mozilla/ecma/TypeConversion/9.5-2.js: Added property allow-tabs.
   2748         * tests/mozilla/ecma/jsref.js: Modified property allow-tabs.
   2749         * tests/mozilla/ecma/shell.js: Modified property allow-tabs.
   2750         * tests/mozilla/ecma_2/LexicalConventions/keywords-001.js: Added property allow-tabs.
   2751         * tests/mozilla/ecma_2/RegExp/exec-001.js: Added property allow-tabs.
   2752         * tests/mozilla/ecma_2/String/match-004.js: Added property allow-tabs.
   2753         * tests/mozilla/ecma_2/String/replace-001.js: Added property allow-tabs.
   2754         * tests/mozilla/ecma_2/String/split-002.js: Added property allow-tabs.
   2755         * tests/mozilla/ecma_2/jsref.js: Modified property allow-tabs.
   2756         * tests/mozilla/ecma_2/shell.js: Added property allow-tabs.
   2757         * tests/mozilla/ecma_3/Date/shell.js: Modified property allow-tabs.
   2758         * tests/mozilla/ecma_3/Exceptions/regress-181654.js: Added property allow-tabs.
   2759         * tests/mozilla/ecma_3/RegExp/regress-209067.js: Added property allow-tabs.
   2760         * tests/mozilla/ecma_3/RegExp/regress-85721.js: Added property allow-tabs.
   2761         * tests/mozilla/importList.html: Added property allow-tabs.
   2762         * tests/mozilla/js1_1/shell.js: Added property allow-tabs.
   2763         * tests/mozilla/js1_2/Array/general1.js: Added property allow-tabs.
   2764         * tests/mozilla/js1_2/Array/general2.js: Added property allow-tabs.
   2765         * tests/mozilla/js1_2/Array/slice.js: Added property allow-tabs.
   2766         * tests/mozilla/js1_2/Array/splice1.js: Added property allow-tabs.
   2767         * tests/mozilla/js1_2/Array/splice2.js: Added property allow-tabs.
   2768         * tests/mozilla/js1_2/Objects/toString-001.js: Added property allow-tabs.
   2769         * tests/mozilla/js1_2/String/charCodeAt.js: Added property allow-tabs.
   2770         * tests/mozilla/js1_2/String/concat.js: Modified property allow-tabs.
   2771         * tests/mozilla/js1_2/String/match.js: Added property allow-tabs.
   2772         * tests/mozilla/js1_2/String/slice.js: Added property allow-tabs.
   2773         * tests/mozilla/js1_2/function/Function_object.js: Added property allow-tabs.
   2774         * tests/mozilla/js1_2/function/Number.js: Modified property allow-tabs.
   2775         * tests/mozilla/js1_2/function/String.js: Modified property allow-tabs.
   2776         * tests/mozilla/js1_2/function/nesting.js: Added property allow-tabs.
   2777         * tests/mozilla/js1_2/function/regexparg-1.js: Added property allow-tabs.
   2778         * tests/mozilla/js1_2/function/regexparg-2-n.js: Added property allow-tabs.
   2779         * tests/mozilla/js1_2/jsref.js: Added property allow-tabs.
   2780         * tests/mozilla/js1_2/operator/equality.js: Added property allow-tabs.
   2781         * tests/mozilla/js1_2/operator/strictEquality.js: Added property allow-tabs.
   2782         * tests/mozilla/js1_2/regexp/RegExp_dollar_number.js: Added property allow-tabs.
   2783         * tests/mozilla/js1_2/regexp/RegExp_input.js: Added property allow-tabs.
   2784         * tests/mozilla/js1_2/regexp/RegExp_input_as_array.js: Added property allow-tabs.
   2785         * tests/mozilla/js1_2/regexp/RegExp_lastIndex.js: Added property allow-tabs.
   2786         * tests/mozilla/js1_2/regexp/RegExp_lastMatch.js: Added property allow-tabs.
   2787         * tests/mozilla/js1_2/regexp/RegExp_lastMatch_as_array.js: Added property allow-tabs.
   2788         * tests/mozilla/js1_2/regexp/RegExp_lastParen.js: Added property allow-tabs.
   2789         * tests/mozilla/js1_2/regexp/RegExp_lastParen_as_array.js: Added property allow-tabs.
   2790         * tests/mozilla/js1_2/regexp/RegExp_leftContext.js: Added property allow-tabs.
   2791         * tests/mozilla/js1_2/regexp/RegExp_leftContext_as_array.js: Added property allow-tabs.
   2792         * tests/mozilla/js1_2/regexp/RegExp_multiline.js: Added property allow-tabs.
   2793         * tests/mozilla/js1_2/regexp/RegExp_multiline_as_array.js: Added property allow-tabs.
   2794         * tests/mozilla/js1_2/regexp/RegExp_object.js: Added property allow-tabs.
   2795         * tests/mozilla/js1_2/regexp/RegExp_rightContext.js: Added property allow-tabs.
   2796         * tests/mozilla/js1_2/regexp/RegExp_rightContext_as_array.js: Added property allow-tabs.
   2797         * tests/mozilla/js1_2/regexp/alphanumeric.js: Added property allow-tabs.
   2798         * tests/mozilla/js1_2/regexp/asterisk.js: Added property allow-tabs.
   2799         * tests/mozilla/js1_2/regexp/backslash.js: Added property allow-tabs.
   2800         * tests/mozilla/js1_2/regexp/backspace.js: Added property allow-tabs.
   2801         * tests/mozilla/js1_2/regexp/beginLine.js: Added property allow-tabs.
   2802         * tests/mozilla/js1_2/regexp/character_class.js: Added property allow-tabs.
   2803         * tests/mozilla/js1_2/regexp/compile.js: Added property allow-tabs.
   2804         * tests/mozilla/js1_2/regexp/control_characters.js: Added property allow-tabs.
   2805         * tests/mozilla/js1_2/regexp/digit.js: Added property allow-tabs.
   2806         * tests/mozilla/js1_2/regexp/dot.js: Added property allow-tabs.
   2807         * tests/mozilla/js1_2/regexp/endLine.js: Added property allow-tabs.
   2808         * tests/mozilla/js1_2/regexp/everything.js: Added property allow-tabs.
   2809         * tests/mozilla/js1_2/regexp/exec.js: Added property allow-tabs.
   2810         * tests/mozilla/js1_2/regexp/flags.js: Added property allow-tabs.
   2811         * tests/mozilla/js1_2/regexp/global.js: Added property allow-tabs.
   2812         * tests/mozilla/js1_2/regexp/hexadecimal.js: Added property allow-tabs.
   2813         * tests/mozilla/js1_2/regexp/ignoreCase.js: Added property allow-tabs.
   2814         * tests/mozilla/js1_2/regexp/interval.js: Added property allow-tabs.
   2815         * tests/mozilla/js1_2/regexp/octal.js: Added property allow-tabs.
   2816         * tests/mozilla/js1_2/regexp/parentheses.js: Added property allow-tabs.
   2817         * tests/mozilla/js1_2/regexp/plus.js: Added property allow-tabs.
   2818         * tests/mozilla/js1_2/regexp/question_mark.js: Added property allow-tabs.
   2819         * tests/mozilla/js1_2/regexp/simple_form.js: Added property allow-tabs.
   2820         * tests/mozilla/js1_2/regexp/source.js: Added property allow-tabs.
   2821         * tests/mozilla/js1_2/regexp/special_characters.js: Added property allow-tabs.
   2822         * tests/mozilla/js1_2/regexp/string_replace.js: Added property allow-tabs.
   2823         * tests/mozilla/js1_2/regexp/string_search.js: Added property allow-tabs.
   2824         * tests/mozilla/js1_2/regexp/string_split.js: Added property allow-tabs.
   2825         * tests/mozilla/js1_2/regexp/test.js: Added property allow-tabs.
   2826         * tests/mozilla/js1_2/regexp/toString.js: Added property allow-tabs.
   2827         * tests/mozilla/js1_2/regexp/vertical_bar.js: Added property allow-tabs.
   2828         * tests/mozilla/js1_2/regexp/whitespace.js: Added property allow-tabs.
   2829         * tests/mozilla/js1_2/regexp/word_boundary.js: Added property allow-tabs.
   2830         * tests/mozilla/js1_2/shell.js: Added property allow-tabs.
   2831         * tests/mozilla/js1_2/statements/break.js: Added property allow-tabs.
   2832         * tests/mozilla/js1_2/statements/continue.js: Added property allow-tabs.
   2833         * tests/mozilla/js1_2/statements/do_while.js: Added property allow-tabs.
   2834         * tests/mozilla/js1_2/statements/switch.js: Added property allow-tabs.
   2835         * tests/mozilla/js1_2/statements/switch2.js: Added property allow-tabs.
   2836         * tests/mozilla/js1_3/shell.js: Added property allow-tabs.
   2837         * tests/mozilla/js1_4/shell.js: Added property allow-tabs.
   2838         * tests/mozilla/js1_5/Regress/regress-111557.js: Added property allow-tabs.
   2839         * tests/mozilla/js1_5/Regress/regress-216320.js: Added property allow-tabs.
   2840         * tests/mozilla/menuhead.html: Added property allow-tabs.
   2841         * tests/mozilla/mklistpage.pl: Added property allow-tabs.
   2842         * tests/mozilla/runtests.pl: Added property allow-tabs.
   2843 
   2844 2010-01-08  Daniel Bates  <dbates (a] webkit.org>
   2845 
   2846         Reviewed by Adam Barth.
   2847 
   2848         https://bugs.webkit.org/show_bug.cgi?id=33417
   2849 
   2850         Cleans up style errors exposed by the patch for bug #33198.
   2851         Moreover, fixes all "Weird number of spaces at line-start. Are you using a 4-space indent?"
   2852         errors reported by check-webkit-style.
   2853 
   2854         No functionality was changed. So, no new tests.
   2855 
   2856         * wtf/Platform.h:
   2857 
   2858 2010-01-08  Kent Hansen  <kent.hansen (a] nokia.com>
   2859 
   2860         Reviewed by Eric Seidel.
   2861 
   2862         Don't store RegExp flags string representation
   2863         https://bugs.webkit.org/show_bug.cgi?id=33321
   2864 
   2865         It's unused; the string representation is reconstructed from flags.
   2866 
   2867         * runtime/RegExp.cpp:
   2868         (JSC::RegExp::RegExp):
   2869         * runtime/RegExp.h:
   2870 
   2871 2010-01-08  Geoffrey Garen  <ggaren (a] apple.com>
   2872 
   2873         Reviewed by Oliver Hunt.
   2874 
   2875         Memory use grows grows possibly unbounded in this JavaScript Array test case
   2876         https://bugs.webkit.org/show_bug.cgi?id=31675
   2877 
   2878         This fixes one observed bug in this test case, which is that
   2879         arrays don't report extra cost for the sparse value maps.
   2880 
   2881         SunSpider reports a small speedup.
   2882 
   2883         * runtime/JSArray.cpp:
   2884         (JSC::JSArray::putSlowCase): Report extra memory cost for
   2885         the sparse value map.
   2886         * runtime/JSArray.h: 
   2887 
   2888 2010-01-08  Yong Li  <yoli (a] rim.com>
   2889 
   2890         Reviewed by Darin Adler.
   2891 
   2892         Remove unnecessary #include from FastMalloc.cpp
   2893         https://bugs.webkit.org/show_bug.cgi?id=33393
   2894 
   2895         * wtf/FastMalloc.cpp:
   2896 
   2897 2010-01-08  Eric Seidel  <eric (a] webkit.org>
   2898 
   2899         No review, rolling out r52983.
   2900         http://trac.webkit.org/changeset/52983
   2901         https://bugs.webkit.org/show_bug.cgi?id=33321
   2902 
   2903         Broke 59 JavaScriptCore tests.  I don't think Kent knew about
   2904         run-javascriptcore-tests.  Sadly neither does the commit-bot,
   2905         yet.
   2906 
   2907         * runtime/RegExp.cpp:
   2908         (JSC::RegExp::RegExp):
   2909         * runtime/RegExp.h:
   2910         (JSC::RegExp::flags):
   2911 
   2912 2010-01-08  Eric Seidel  <eric (a] webkit.org>
   2913 
   2914         No review, rolling out r52981.
   2915         http://trac.webkit.org/changeset/52981
   2916         https://bugs.webkit.org/show_bug.cgi?id=33319
   2917 
   2918         Caused two JS tests to start failing:
   2919         ecma_2/RegExp/properties-001.js and js1_2/regexp/toString.js
   2920 
   2921         * runtime/RegExpPrototype.cpp:
   2922         (JSC::regExpProtoFuncToString):
   2923 
   2924 2010-01-08  Kent Hansen  <kent.hansen (a] nokia.com>
   2925 
   2926         Reviewed by Darin Adler.
   2927 
   2928         Don't store RegExp flags string representation
   2929         https://bugs.webkit.org/show_bug.cgi?id=33321
   2930 
   2931         It's unused; the string representation is reconstructed from flags.
   2932 
   2933         * runtime/RegExp.cpp:
   2934         (JSC::RegExp::RegExp):
   2935         * runtime/RegExp.h:
   2936 
   2937 2010-01-08  Kent Hansen  <kent.hansen (a] nokia.com>
   2938 
   2939         Reviewed by Darin Adler.
   2940 
   2941         RegExp.prototype.toString returns "//" for empty regular expressions
   2942         https://bugs.webkit.org/show_bug.cgi?id=33319
   2943 
   2944         "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA.
   2945 
   2946         * runtime/RegExpPrototype.cpp:
   2947         (JSC::regExpProtoFuncToString):
   2948 
   2949 2010-01-08  Norbert Leser  <norbert.leser (a] nokia.com>
   2950 
   2951         Reviewed by Darin Adler.
   2952 
   2953         RVCT compiler with "-Otime -O3" optimization tries to optimize out 
   2954         inline new'ed pointers that are passed as arguments.
   2955         Proposed patch assigns new'ed pointer explicitly outside function call.
   2956 
   2957         https://bugs.webkit.org/show_bug.cgi?id=33084
   2958 
   2959         * API/JSClassRef.cpp:
   2960         (OpaqueJSClass::OpaqueJSClass):
   2961         (OpaqueJSClassContextData::OpaqueJSClassContextData):
   2962 
   2963 2010-01-08  Gabor Loki  <loki (a] webkit.org>
   2964 
   2965         Reviewed by Gavin Barraclough.
   2966 
   2967         Remove an unnecessary cacheFlush from ARM_TRADITIONAL JIT
   2968         https://bugs.webkit.org/show_bug.cgi?id=33203
   2969 
   2970         * assembler/ARMAssembler.cpp: Remove obsolete linkBranch function.
   2971         (JSC::ARMAssembler::executableCopy): Inline a clean linkBranch code.
   2972         * assembler/ARMAssembler.h:
   2973         (JSC::ARMAssembler::getLdrImmAddress): Use inline function.
   2974         (JSC::ARMAssembler::getLdrImmAddressOnPool): Ditto.
   2975         (JSC::ARMAssembler::patchPointerInternal): Remove an unnecessary cacheFlush.
   2976         (JSC::ARMAssembler::linkJump): Use patchPointerInternal instead of linkBranch.
   2977         (JSC::ARMAssembler::linkCall): Ditto.
   2978         (JSC::ARMAssembler::relinkCall): Ditto.
   2979 
   2980 2010-01-07  Gabor Loki  <loki (a] webkit.org>
   2981 
   2982         Reviewed by Gavin Barraclough.
   2983 
   2984         Build fix for JSVALUE32 when ENABLE_JIT_OPTIMIZE* are disabled
   2985         https://bugs.webkit.org/show_bug.cgi?id=33311
   2986 
   2987         Move compileGetDirectOffset function to common part of JSVALUE32
   2988 
   2989         * jit/JITPropertyAccess.cpp:
   2990         (JSC::JIT::compileGetDirectOffset):
   2991 
   2992 2010-01-07  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   2993 
   2994         Reviewed by Maciej Stachowiak.
   2995 
   2996         Allow call sites to determine if ASSERT_* and LOG_* macros are operational
   2997         https://bugs.webkit.org/show_bug.cgi?id=33020
   2998 
   2999         * wtf/Assertions.h: Set ASSERT_MSG_DISABLED, FATAL_DISABLED,
   3000         ERROR_DISABLED, LOG_DISABLED to 1 if the compiler does not support
   3001         variadic macros. Refactor for better readibility.
   3002 
   3003 2010-01-07  Daniel Bates  <dbates (a] rim.com>
   3004 
   3005         Reviewed by Eric Seidel.
   3006 
   3007         https://bugs.webkit.org/show_bug.cgi?id=32987
   3008 
   3009         Added ENABLE_XHTMLMP flag. Disabled by default.
   3010 
   3011         * Configurations/FeatureDefines.xcconfig:
   3012 
   3013 2010-01-07  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   3014 
   3015         Reviewed by Gavin Barraclough.
   3016 
   3017         [Symbian] Port ARM traditional JIT Trampolines to RVCT
   3018         https://bugs.webkit.org/show_bug.cgi?id=30552
   3019 
   3020         Take the GCC implementation and mechanically convert
   3021         it to RVCT syntax.
   3022 
   3023         Use 'bx rX' instead of 'mov pc, rX' when it is available.
   3024 
   3025         Developed in cooperation with Iain Campbell and Gabor Loki.
   3026 
   3027         * JavaScriptCore.pri: Extra step to generate RVCT stubs. The 
   3028         script generation intentionally executed all the time not just
   3029         for RVCT targets.
   3030 
   3031         * create_rvct_stubs: Added. Perl script to expand precompiler macros
   3032         for RVCT assembler - the template is defined in JITStubs.cpp.
   3033 
   3034         * jit/JITStubs.cpp:
   3035         (JSC::ctiTrampoline):
   3036         (JSC::ctiVMThrowTrampoline):
   3037         (JSC::ctiOpThrowNotCaught):
   3038 
   3039 2010-01-07  Geoffrey Garen  <ggaren (a] apple.com>
   3040 
   3041         Reviewed by Sam Weinig.
   3042 
   3043         Fix a crash seen on the buildbots.
   3044 
   3045         * runtime/JSGlobalObject.cpp:
   3046         (JSC::JSGlobalObject::init): Disable specific function tracking here,
   3047         instead of in WebCore, to ensure that the disabling happens before a
   3048         specific function can be registered.
   3049 
   3050 2010-01-07  Alexey Proskuryakov  <ap (a] apple.com>
   3051 
   3052         Mac build fix.
   3053 
   3054         * JavaScriptCore.exp: Export new JSGlobalData static data members.
   3055 
   3056 2010-01-07  Alexey Proskuryakov  <ap (a] apple.com>
   3057 
   3058         Reviewed by Geoffrey Garen.
   3059 
   3060         https://bugs.webkit.org/show_bug.cgi?id=33057
   3061         REGRESSION(r49365): typeof(xhr.responseText) != "string" in Windows
   3062 
   3063         <rdar://problem/7296920> REGRESSION: WebKit fails to start PeaceKeeper benchmark
   3064 
   3065         Test: fast/js/webcore-string-comparison.html
   3066 
   3067         In r49365, some code was moved from JSString.cpp to JSString.h, and as a result, WebCore
   3068         got a way to directly instantiate JSStrings over DLL borders. Since vftable for JSString was
   3069         not exported, objects created from WebCore got a different vptr, and JavaScriptCore
   3070         optimizations that relied on vptr of all JSString objects being equal failed.
   3071 
   3072         * config.h: Added a JS_EXPORTCLASS macro for exporting classes. It's currently the same as
   3073         JS_EXPORTDATA, but it clearly needed a new name.
   3074 
   3075         * runtime/InitializeThreading.cpp:
   3076         (JSC::initializeThreadingOnce):
   3077         * runtime/JSGlobalData.cpp:
   3078         (JSC::JSGlobalData::storeVPtrs):
   3079         (JSC::JSGlobalData::JSGlobalData):
   3080         (JSC::JSGlobalData::createNonDefault):
   3081         (JSC::JSGlobalData::create):
   3082         (JSC::JSGlobalData::sharedInstance):
   3083         * runtime/JSGlobalData.h:
   3084         Store vptrs just once, no need to repeatedly pick and copy them. This makes it possible to
   3085         assert vptr correctness in object destructors (which don't have access to JSGlobalData,
   3086         and even Heap::heap(this) will fail for fake objects created from storeVPtrs()).
   3087 
   3088         * runtime/JSArray.cpp: (JSC::JSArray::~JSArray): Assert that vptr is what we expect it to be.
   3089         It's important to assert in destructor, because MSVC changes the vptr after constructor
   3090         is invoked.
   3091         * runtime/JSByteArray.cpp: (JSC::JSByteArray::~JSByteArray): Ditto.
   3092         * runtime/JSByteArray.h: Ditto.
   3093         * runtime/JSFunction.h: Ditto.
   3094         * runtime/JSFunction.cpp: (JSC::JSFunction::~JSFunction): Ditto.
   3095 
   3096         * runtime/JSCell.h: (JSC::JSCell::setVPtr): Added a method to substitute vptr for another
   3097         one.
   3098 
   3099         * runtime/JSString.h: Export JSString class together with its vftable, and tell other
   3100         libraries tp import it. This is needed on platforms that have a separate JavaScriptCore
   3101         dynamic library - and on Mac, we already did the export via JavaScriptCore.exp.
   3102         (JSC::JSString::~JSString): Assert tha vptr is what we expect it to be.
   3103         (JSC::fixupVPtr): Store a previously saved primary vftable pointer (do nothing if building
   3104         JavaScriptCore itself).
   3105         (JSC::jsSingleCharacterString): Call fixupVPtr in case this is call across DLL boundary.
   3106         (JSC::jsSingleCharacterSubstring): Ditto.
   3107         (JSC::jsNontrivialString): Ditto.
   3108         (JSC::jsString): Ditto.
   3109         (JSC::jsSubstring): Ditto.
   3110         (JSC::jsOwnedString): Ditto.
   3111 
   3112         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export the new static
   3113         JSGlobalData members that are used in WebCore via inline functions.
   3114 
   3115 2010-01-07  Geoffrey Garen  <ggaren (a] apple.com>
   3116 
   3117         Reviewed by Sam Weinig.
   3118 
   3119         Safari memory usage skyrockets using new Google AdWords interface
   3120         https://bugs.webkit.org/show_bug.cgi?id=33343
   3121 
   3122         The memory use was caused by the global object creating too many structures
   3123         as it thrashed between different specific functions.
   3124 
   3125         * runtime/Structure.cpp:
   3126         (JSC::Structure::Structure):
   3127         (JSC::Structure::addPropertyTransition):
   3128         (JSC::Structure::changePrototypeTransition):
   3129         (JSC::Structure::despecifyFunctionTransition):
   3130         (JSC::Structure::addAnonymousSlotsTransition):
   3131         (JSC::Structure::getterSetterTransition):
   3132         (JSC::Structure::toDictionaryTransition):
   3133         (JSC::Structure::addPropertyWithoutTransition):
   3134         (JSC::Structure::despecifyAllFunctions):
   3135         * runtime/Structure.h:
   3136         (JSC::Structure::disableSpecificFunctionTracking): Track a thrash count
   3137         for specific functions. Disable specific function tracking once the
   3138         thrash count has been hit.
   3139 
   3140 2010-01-07  Csaba Osztrogonc  <ossy (a] webkit.org>
   3141 
   3142         Reviewed by Simon Hausmann.
   3143 
   3144         [Qt] Enable JIT in debug mode on win32 after r51141 fixed the crashes.
   3145 
   3146         * JavaScriptCore.pri:
   3147 
   3148 2010-01-07  Zoltan Horvath  <zoltan (a] webkit.org>
   3149 
   3150         Reviewed by Holger Freyther.
   3151 
   3152         [Mac] Build fix when FAST_MALLOC_MATCH_VALIDATION=1
   3153         https://bugs.webkit.org/show_bug.cgi?id=33312
   3154 
   3155         Using of operator += cause compile error on Mac, so it is changed to
   3156         "= static_cast<AllocAlignmentInteger*>(old_ptr) + 1".
   3157 
   3158         * wtf/FastMalloc.cpp:
   3159         (WTF::TCMallocStats::realloc):
   3160 
   3161 2010-01-07  Zoltan Horvath  <zoltan (a] webkit.org>
   3162 
   3163         Reviewed by Holger Freyther.
   3164 
   3165         [Qt] Build fix when FAST_MALLOC_MATCH_VALIDATION=1
   3166         https://bugs.webkit.org/show_bug.cgi?id=33312
   3167 
   3168         Remove pByte (committed in r42344 from #20422), because pByte doesn't
   3169         exist and it is unnecessary.
   3170 
   3171         * wtf/FastMalloc.cpp:
   3172         (WTF::TCMallocStats::realloc):
   3173 
   3174 2010-01-06  Gavin Barraclough  <barraclough (a] apple.com>
   3175 
   3176         QT build fix.
   3177 
   3178         * runtime/Identifier.cpp:
   3179         (JSC::createIdentifierTableSpecific):
   3180 
   3181 2010-01-06  Gavin Barraclough  <barraclough (a] apple.com>
   3182 
   3183         Windows build fix part I.
   3184 
   3185         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   3186 
   3187 2010-01-06  Dan Bernstein  <mitz (a] apple.com>
   3188 
   3189         Build fix
   3190 
   3191         * runtime/Identifier.cpp:
   3192         (JSC::createIdentifierTableSpecificCallback):
   3193 
   3194 2010-01-05  Gavin Barraclough  <barraclough (a] apple.com>
   3195 
   3196         Reviewed by Sam Weinig.
   3197 
   3198         https://bugs.webkit.org/show_bug.cgi?id=33236
   3199         Remove m_identifierTable pointer from UString
   3200 
   3201         Currently every string holds a pointer so that during destruction,
   3202         if a string has been used as an identifier, it can remove itself
   3203         from the table.  By instead accessing the identifierTable via a
   3204         thread specific tracking the table associated with the current
   3205         globaldata, we can save the memory cost of this pointer.
   3206 
   3207         * API/APIShims.h:
   3208         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
   3209         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
   3210         (JSC::APICallbackShim::APICallbackShim):
   3211         (JSC::APICallbackShim::~APICallbackShim):
   3212 
   3213             - change the API shims to track the identifierTable of the current JSGlobalData.
   3214 
   3215         * API/JSContextRef.cpp:
   3216         (JSContextGroupCreate):
   3217 
   3218             - update creation of JSGlobalData for API usage to use new create method.
   3219             - fix shim instanciation bug in JSGlobalContextCreateInGroup.
   3220 
   3221         * JavaScriptCore.exp:
   3222         * runtime/Completion.cpp:
   3223         (JSC::checkSyntax):
   3224         (JSC::evaluate):
   3225 
   3226             - add asserts to check the identifierTable is being tracked correctly.
   3227 
   3228         * runtime/Identifier.cpp:
   3229         (JSC::IdentifierTable::~IdentifierTable):
   3230         (JSC::IdentifierTable::add):
   3231         (JSC::Identifier::remove):
   3232         (JSC::Identifier::checkSameIdentifierTable):
   3233         (JSC::createIdentifierTableSpecificCallback):
   3234         (JSC::createIdentifierTableSpecific):
   3235         (JSC::createDefaultDataSpecific):
   3236 
   3237             - Use currentIdentifierTable() instead of UStringImpl::m_identifierTable.
   3238             - Define methods to access the thread specific identifier tables.
   3239 
   3240         * runtime/Identifier.h:
   3241         (JSC::ThreadIdentifierTableData::ThreadIdentifierTableData):
   3242         (JSC::defaultIdentifierTable):
   3243         (JSC::setDefaultIdentifierTable):
   3244         (JSC::currentIdentifierTable):
   3245         (JSC::setCurrentIdentifierTable):
   3246         (JSC::resetCurrentIdentifierTable):
   3247 
   3248             - Declare methods to access the thread specific identifier tables.
   3249 
   3250         * runtime/JSGlobalData.cpp:
   3251         (JSC::JSGlobalData::createNonDefault):
   3252         (JSC::JSGlobalData::create):
   3253         (JSC::JSGlobalData::sharedInstance):
   3254 
   3255             - creation of JSGlobalData objects, other than for API usage, associate themselves with the current thread.
   3256 
   3257         * runtime/JSGlobalData.h:
   3258         * runtime/UStringImpl.cpp:
   3259         (JSC::UStringImpl::destroy):
   3260 
   3261             - destroy() method should be using isIdentifier().
   3262 
   3263         * runtime/UStringImpl.h:
   3264         (JSC::UStringImpl::isIdentifier):
   3265         (JSC::UStringImpl::setIsIdentifier):
   3266         (JSC::UStringImpl::checkConsistency):
   3267         (JSC::UStringImpl::UStringImpl):
   3268 
   3269             - replace m_identifierTable with a single m_isIdentifier bit.
   3270 
   3271         * wtf/StringHashFunctions.h:
   3272         (WTF::stringHash):
   3273 
   3274             - change string hash result from 32-bit to 31-bit, to free a bit in UStringImpl for m_isIdentifier.
   3275 
   3276 2009-12-25 Patrick Gansterer <paroga (a] paroga.com>
   3277  
   3278         Reviewed by Eric Seidel.
   3279 
   3280         Buildfix for WinCE + style fixes.
   3281         https://bugs.webkit.org/show_bug.cgi?id=32939
   3282 
   3283         * jsc.cpp:
   3284         (functionPrint):
   3285         (functionQuit):
   3286         (parseArguments):
   3287         (fillBufferWithContentsOfFile):
   3288  
   3289 2010-01-05  Patrick Gansterer  <paroga (a] paroga.com>
   3290 
   3291         Reviewed by Eric Seidel.
   3292 
   3293         WinCE buildfix after r52791 (renamed PLATFORM(WINCE) to OS(WINCE)).
   3294         https://bugs.webkit.org/show_bug.cgi?id=33205
   3295 
   3296         * jit/ExecutableAllocator.h:
   3297 
   3298 2010-01-05  Patrick Gansterer  <paroga (a] paroga.com>
   3299 
   3300         Reviewed by Darin Adler.
   3301 
   3302         Added compiler error for unsupported platforms.
   3303         https://bugs.webkit.org/show_bug.cgi?id=33112
   3304 
   3305         * jit/JITStubs.cpp:
   3306 
   3307 2010-01-05  Gabor Loki  <loki (a] webkit.org>
   3308 
   3309         Reviewed by Maciej Stachowiak.
   3310 
   3311         Follow r52729 in ARMAssembler.
   3312         https://bugs.webkit.org/show_bug.cgi?id=33208
   3313 
   3314         Use WTF_ARM_ARCH_AT_LEAST instead of ARM_ARCH_VERSION
   3315 
   3316         * assembler/ARMAssembler.cpp:
   3317         (JSC::ARMAssembler::encodeComplexImm): Move tmp declaration to ARMv7
   3318         * assembler/ARMAssembler.h:
   3319         (JSC::ARMAssembler::):
   3320         (JSC::ARMAssembler::bkpt):
   3321 
   3322 2010-01-05  Maciej Stachowiak  <mjs (a] apple.com>
   3323 
   3324         Unreviewed build fix for Gtk+
   3325 
   3326         Don't use // comments in Platform.h, at least some of them seem to make the version of GCC
   3327         used on the Gtk buildbot unhappy.
   3328 
   3329         * wtf/Platform.h:
   3330 
   3331 2010-01-04  Maciej Stachowiak  <mjs (a] apple.com>
   3332 
   3333         Reviewed by Darin Fisher.
   3334 
   3335         Reorganize, document and rename OS() platform macros.
   3336         https://bugs.webkit.org/show_bug.cgi?id=33198
   3337 
   3338         * wtf/Platform.h: Rename, reorganize and document OS() macros.
   3339 
   3340         Adapt to name changes. Also fixed a few incorrect OS checks.
   3341 
   3342         * API/JSContextRef.cpp:
   3343         * assembler/MacroAssemblerARM.cpp:
   3344         (JSC::isVFPPresent):
   3345         * assembler/MacroAssemblerX86Common.h:
   3346         * bytecode/SamplingTool.cpp:
   3347         * config.h:
   3348         * interpreter/RegisterFile.cpp:
   3349         (JSC::RegisterFile::~RegisterFile):
   3350         * interpreter/RegisterFile.h:
   3351         (JSC::RegisterFile::RegisterFile):
   3352         (JSC::RegisterFile::grow):
   3353         * jit/ExecutableAllocator.h:
   3354         * jit/ExecutableAllocatorFixedVMPool.cpp:
   3355         * jit/ExecutableAllocatorPosix.cpp:
   3356         * jit/ExecutableAllocatorSymbian.cpp:
   3357         * jit/ExecutableAllocatorWin.cpp:
   3358         * jit/JITOpcodes.cpp:
   3359         (JSC::JIT::privateCompileCTIMachineTrampolines):
   3360         * jit/JITStubs.cpp:
   3361         * jsc.cpp:
   3362         (main):
   3363         * parser/Grammar.y:
   3364         * profiler/ProfileNode.cpp:
   3365         (JSC::getCount):
   3366         * runtime/Collector.cpp:
   3367         (JSC::Heap::Heap):
   3368         (JSC::Heap::allocateBlock):
   3369         (JSC::Heap::freeBlockPtr):
   3370         (JSC::currentThreadStackBase):
   3371         (JSC::getCurrentPlatformThread):
   3372         (JSC::suspendThread):
   3373         (JSC::resumeThread):
   3374         (JSC::getPlatformThreadRegisters):
   3375         (JSC::otherThreadStackPointer):
   3376         * runtime/Collector.h:
   3377         * runtime/DateConstructor.cpp:
   3378         * runtime/DatePrototype.cpp:
   3379         (JSC::formatLocaleDate):
   3380         * runtime/InitializeThreading.cpp:
   3381         (JSC::initializeThreading):
   3382         * runtime/MarkStack.h:
   3383         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
   3384         * runtime/MarkStackPosix.cpp:
   3385         * runtime/MarkStackSymbian.cpp:
   3386         * runtime/MarkStackWin.cpp:
   3387         * runtime/StringPrototype.cpp:
   3388         (JSC::stringProtoFuncLastIndexOf):
   3389         * runtime/TimeoutChecker.cpp:
   3390         (JSC::getCPUTime):
   3391         * runtime/UString.cpp:
   3392         (JSC::UString::from):
   3393         * wtf/Assertions.cpp:
   3394         * wtf/Assertions.h:
   3395         * wtf/CurrentTime.cpp:
   3396         (WTF::lowResUTCTime):
   3397         * wtf/CurrentTime.h:
   3398         (WTF::getLocalTime):
   3399         * wtf/DateMath.cpp:
   3400         * wtf/FastMalloc.cpp:
   3401         (WTF::TCMalloc_ThreadCache::InitModule):
   3402         (WTF::TCMallocStats::):
   3403         * wtf/FastMalloc.h:
   3404         * wtf/MathExtras.h:
   3405         * wtf/RandomNumber.cpp:
   3406         (WTF::randomNumber):
   3407         * wtf/RandomNumberSeed.h:
   3408         (WTF::initializeRandomNumberGenerator):
   3409         * wtf/StringExtras.h:
   3410         * wtf/TCSpinLock.h:
   3411         (TCMalloc_SpinLock::Unlock):
   3412         (TCMalloc_SlowLock):
   3413         * wtf/TCSystemAlloc.cpp:
   3414         * wtf/ThreadSpecific.h:
   3415         (WTF::::destroy):
   3416         * wtf/Threading.h:
   3417         * wtf/ThreadingPthreads.cpp:
   3418         (WTF::initializeThreading):
   3419         (WTF::isMainThread):
   3420         * wtf/ThreadingWin.cpp:
   3421         (WTF::wtfThreadEntryPoint):
   3422         (WTF::createThreadInternal):
   3423         * wtf/VMTags.h:
   3424         * wtf/unicode/icu/CollatorICU.cpp:
   3425         (WTF::Collator::userDefault):
   3426         * wtf/win/MainThreadWin.cpp:
   3427         (WTF::initializeMainThreadPlatform):
   3428 
   3429 2010-01-04  Gustavo Noronha Silva  <gns (a] gnome.org>
   3430 
   3431         Add missing files to the build system - make distcheck build fix.
   3432 
   3433         * GNUmakefile.am:
   3434 
   3435 2010-01-04  Gavin Barraclough <barraclough (a] apple.com>
   3436 
   3437         Reviewed by Sam Weinig, additional coding by Mark Rowe.
   3438 
   3439         https://bugs.webkit.org/show_bug.cgi?id=33163
   3440         Add string hashing functions to WTF.
   3441         Use WTF's string hashing functions from UStringImpl.
   3442 
   3443         * GNUmakefile.am:
   3444         * JavaScriptCore.exp:
   3445         * JavaScriptCore.gypi:
   3446         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   3447         * JavaScriptCore.xcodeproj/project.pbxproj:
   3448         * runtime/UStringImpl.cpp:
   3449         * runtime/UStringImpl.h:
   3450         (JSC::UStringImpl::computeHash):
   3451         * wtf/HashFunctions.h:
   3452         * wtf/StringHashFunctions.h: Added.
   3453         (WTF::stringHash):
   3454 
   3455 2010-01-04  Dmitry Titov  <dimich (a] chromium.org>
   3456 
   3457         Not reviewed, attempt to fix ARM bulid.
   3458 
   3459         * wtf/Platform.h:
   3460 
   3461 2010-01-04  Gavin Barraclough  <barraclough (a] apple.com>
   3462 
   3463         Rubber stamped by Geoff Garen.
   3464 
   3465         Add an 'isIdentifier' to UStringImpl, use this where appropriate
   3466         (where previously 'identifierTable' was being tested).
   3467 
   3468         * API/JSClassRef.cpp:
   3469         (OpaqueJSClass::~OpaqueJSClass):
   3470         (OpaqueJSClassContextData::OpaqueJSClassContextData):
   3471         * runtime/Identifier.cpp:
   3472         (JSC::Identifier::addSlowCase):
   3473         * runtime/Identifier.h:
   3474         (JSC::Identifier::add):
   3475         * runtime/PropertyNameArray.cpp:
   3476         (JSC::PropertyNameArray::add):
   3477         * runtime/UStringImpl.h:
   3478         (JSC::UStringImpl::isIdentifier):
   3479 
   3480 2010-01-04  Gavin Barraclough  <barraclough (a] apple.com>
   3481 
   3482         Reviewed by Sam "Shimmey Shimmey" Weinig.
   3483 
   3484         https://bugs.webkit.org/show_bug.cgi?id=33158
   3485         Refactor JSC API entry/exit to use RAII instead of copy/pasting code.
   3486         Make it easier to change set of actions taken when passing across the API boundary.
   3487 
   3488         * API/APIShims.h: Added.
   3489         (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
   3490         (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
   3491         (JSC::APIEntryShim::APIEntryShim):
   3492         (JSC::APICallbackShim::APICallbackShim):
   3493         (JSC::APICallbackShim::~APICallbackShim):
   3494         * API/JSBase.cpp:
   3495         (JSEvaluateScript):
   3496         (JSCheckScriptSyntax):
   3497         (JSGarbageCollect):
   3498         (JSReportExtraMemoryCost):
   3499         * API/JSCallbackConstructor.cpp:
   3500         (JSC::constructJSCallback):
   3501         * API/JSCallbackFunction.cpp:
   3502         (JSC::JSCallbackFunction::call):
   3503         * API/JSCallbackObjectFunctions.h:
   3504         (JSC::::init):
   3505         (JSC::::getOwnPropertySlot):
   3506         (JSC::::put):
   3507         (JSC::::deleteProperty):
   3508         (JSC::::construct):
   3509         (JSC::::hasInstance):
   3510         (JSC::::call):
   3511         (JSC::::getOwnPropertyNames):
   3512         (JSC::::toNumber):
   3513         (JSC::::toString):
   3514         (JSC::::staticValueGetter):
   3515         (JSC::::callbackGetter):
   3516         * API/JSContextRef.cpp:
   3517         * API/JSObjectRef.cpp:
   3518         (JSObjectMake):
   3519         (JSObjectMakeFunctionWithCallback):
   3520         (JSObjectMakeConstructor):
   3521         (JSObjectMakeFunction):
   3522         (JSObjectMakeArray):
   3523         (JSObjectMakeDate):
   3524         (JSObjectMakeError):
   3525         (JSObjectMakeRegExp):
   3526         (JSObjectGetPrototype):
   3527         (JSObjectSetPrototype):
   3528         (JSObjectHasProperty):
   3529         (JSObjectGetProperty):
   3530         (JSObjectSetProperty):
   3531         (JSObjectGetPropertyAtIndex):
   3532         (JSObjectSetPropertyAtIndex):
   3533         (JSObjectDeleteProperty):
   3534         (JSObjectCallAsFunction):
   3535         (JSObjectCallAsConstructor):
   3536         (JSObjectCopyPropertyNames):
   3537         (JSPropertyNameArrayRelease):
   3538         (JSPropertyNameAccumulatorAddName):
   3539         * API/JSValueRef.cpp:
   3540         (JSValueGetType):
   3541         (JSValueIsUndefined):
   3542         (JSValueIsNull):
   3543         (JSValueIsBoolean):
   3544         (JSValueIsNumber):
   3545         (JSValueIsString):
   3546         (JSValueIsObject):
   3547         (JSValueIsObjectOfClass):
   3548         (JSValueIsEqual):
   3549         (JSValueIsStrictEqual):
   3550         (JSValueIsInstanceOfConstructor):
   3551         (JSValueMakeUndefined):
   3552         (JSValueMakeNull):
   3553         (JSValueMakeBoolean):
   3554         (JSValueMakeNumber):
   3555         (JSValueMakeString):
   3556         (JSValueToBoolean):
   3557         (JSValueToNumber):
   3558         (JSValueToStringCopy):
   3559         (JSValueToObject):
   3560         (JSValueProtect):
   3561         (JSValueUnprotect):
   3562         * JavaScriptCore.xcodeproj/project.pbxproj:
   3563 
   3564 2010-01-04  Dan Bernstein  <mitz (a] apple.com>
   3565 
   3566         Reviewed by Ada Chan and Mark Rowe.
   3567 
   3568         Updated copyright string
   3569 
   3570         * Info.plist:
   3571         * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist:
   3572         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
   3573 
   3574 2010-01-04  Adam Roben  <aroben (a] apple.com>
   3575 
   3576         No review, rolling out r52741.
   3577         http://trac.webkit.org/changeset/52741
   3578         https://bugs.webkit.org/show_bug.cgi?id=33056
   3579 
   3580         * wtf/AlwaysInline.h:
   3581 
   3582 2010-01-04  Patrick Gansterer  <paroga (a] paroga.com>
   3583 
   3584         Reviewed by Darin Adler.
   3585 
   3586         Add cacheFlush support for WinCE
   3587         https://bugs.webkit.org/show_bug.cgi?id=33110
   3588 
   3589         * jit/ExecutableAllocator.h:
   3590         (JSC::ExecutableAllocator::cacheFlush):
   3591 
   3592 2010-01-04  Patrick Gansterer  <paroga (a] paroga.com>
   3593 
   3594         Reviewed by Adam Roben.
   3595 
   3596         Implement NO_RETURN for COMPILER(MSVC).
   3597         https://bugs.webkit.org/show_bug.cgi?id=33056
   3598 
   3599         * wtf/AlwaysInline.h:
   3600 
   3601 2010-01-04  Maciej Stachowiak  <mjs (a] apple.com>
   3602 
   3603         Reviewed by Simon Hausmann.
   3604 
   3605         Fix some PLATFORM(*_ENDIAN) uses to CPU()
   3606         https://bugs.webkit.org/show_bug.cgi?id=33148
   3607 
   3608         * runtime/JSCell.cpp:
   3609         (JSC::):
   3610         * runtime/JSValue.h:
   3611         (JSC::JSValue::):
   3612 
   3613 2010-01-04  Maciej Stachowiak  <mjs (a] apple.com>
   3614 
   3615         Reviewed by Adam Barth.
   3616 
   3617         Document CPU() macros in comments.
   3618         https://bugs.webkit.org/show_bug.cgi?id=33147
   3619 
   3620         * wtf/Platform.h:
   3621 
   3622 2010-01-04  Maciej Stachowiak  <mjs (a] apple.com>
   3623 
   3624         Reviewed by Adam Barth.
   3625 
   3626         Reorganize, document and rename CPU() platform macros.
   3627         https://bugs.webkit.org/show_bug.cgi?id=33145
   3628         ExecutableAllocatorSymbian appears to have buggy ARM version check
   3629         https://bugs.webkit.org/show_bug.cgi?id=33138
   3630         
   3631         * wtf/Platform.h:
   3632         Rename all macros related to detection of particular CPUs or
   3633         classes of CPUs to CPU(), reorganize and document them.
   3634 
   3635         All remaining changes are adapting to the renames, plus fixing the
   3636         second bug cited above.
   3637         
   3638         * assembler/ARMAssembler.cpp:
   3639         * assembler/ARMAssembler.h:
   3640         * assembler/ARMv7Assembler.h:
   3641         * assembler/AbstractMacroAssembler.h:
   3642         (JSC::AbstractMacroAssembler::Imm32::Imm32):
   3643         * assembler/MacroAssembler.h:
   3644         * assembler/MacroAssemblerARM.cpp:
   3645         * assembler/MacroAssemblerARM.h:
   3646         * assembler/MacroAssemblerCodeRef.h:
   3647         (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
   3648         * assembler/MacroAssemblerX86.h:
   3649         * assembler/MacroAssemblerX86Common.h:
   3650         * assembler/MacroAssemblerX86_64.h:
   3651         * assembler/X86Assembler.h:
   3652         (JSC::X86Registers::):
   3653         (JSC::X86Assembler::):
   3654         (JSC::X86Assembler::movl_mEAX):
   3655         (JSC::X86Assembler::movl_EAXm):
   3656         (JSC::X86Assembler::repatchLoadPtrToLEA):
   3657         (JSC::X86Assembler::X86InstructionFormatter::memoryModRM):
   3658         * jit/ExecutableAllocator.h:
   3659         * jit/ExecutableAllocatorFixedVMPool.cpp:
   3660         * jit/ExecutableAllocatorPosix.cpp:
   3661         * jit/ExecutableAllocatorSymbian.cpp:
   3662         (JSC::ExecutableAllocator::intializePageSize):
   3663         * jit/JIT.cpp:
   3664         * jit/JIT.h:
   3665         * jit/JITArithmetic.cpp:
   3666         * jit/JITInlineMethods.h:
   3667         (JSC::JIT::beginUninterruptedSequence):
   3668         (JSC::JIT::restoreArgumentReferenceForTrampoline):
   3669         (JSC::JIT::emitCount):
   3670         * jit/JITOpcodes.cpp:
   3671         (JSC::JIT::privateCompileCTIMachineTrampolines):
   3672         * jit/JITPropertyAccess.cpp:
   3673         (JSC::JIT::privateCompileGetByIdProto):
   3674         (JSC::JIT::privateCompileGetByIdProtoList):
   3675         (JSC::JIT::privateCompileGetByIdChainList):
   3676         (JSC::JIT::privateCompileGetByIdChain):
   3677         * jit/JITStubs.cpp:
   3678         (JSC::JITThunks::JITThunks):
   3679         * jit/JITStubs.h:
   3680         * runtime/Collector.cpp:
   3681         (JSC::currentThreadStackBase):
   3682         (JSC::getPlatformThreadRegisters):
   3683         (JSC::otherThreadStackPointer):
   3684         * wrec/WREC.h:
   3685         * wrec/WRECGenerator.cpp:
   3686         (JSC::WREC::Generator::generateEnter):
   3687         (JSC::WREC::Generator::generateReturnSuccess):
   3688         (JSC::WREC::Generator::generateReturnFailure):
   3689         * wrec/WRECGenerator.h:
   3690         * wtf/FastMalloc.cpp:
   3691         * wtf/TCSpinLock.h:
   3692         (TCMalloc_SpinLock::Lock):
   3693         (TCMalloc_SpinLock::Unlock):
   3694         (TCMalloc_SlowLock):
   3695         * wtf/Threading.h:
   3696         * wtf/dtoa.cpp:
   3697         * yarr/RegexJIT.cpp:
   3698         (JSC::Yarr::RegexGenerator::generateEnter):
   3699         (JSC::Yarr::RegexGenerator::generateReturn):
   3700         * yarr/RegexJIT.h:
   3701 
   3702 2010-01-04  Maciej Stachowiak  <mjs (a] apple.com>
   3703 
   3704         Reviewed by Adam Barth.
   3705 
   3706         Clean up COMPILER macros and remove unused ones.
   3707         https://bugs.webkit.org/show_bug.cgi?id=33132
   3708         
   3709         Removed values are COMPILER(BORLAND) and COMPILER(CYGWIN) - they were
   3710         not used anywhere.
   3711 
   3712         * wtf/Platform.h:
   3713 
   3714 2010-01-03  Maciej Stachowiak  <mjs (a] apple.com>
   3715 
   3716         Reviewed by Eric Seidel.
   3717 
   3718         Update wtf/Platform.h to document the new system for porting macros.
   3719         https://bugs.webkit.org/show_bug.cgi?id=33130
   3720 
   3721         * wtf/Platform.h:
   3722 
   3723 2009-12-29  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   3724 
   3725         Reviewed by Maciej Stachowiak.
   3726 
   3727         PLATFORM(CAIRO) should be defined by WIN_CAIRO define
   3728         https://bugs.webkit.org/show_bug.cgi?id=22250
   3729 
   3730         * wtf/Platform.h: Define WTF_PLATFORM_CAIRO for GTK port only
   3731         For the WinCairo port WTF_PLATFORM_CAIRO is already defined in config.h
   3732 
   3733 2009-12-28  Shu Chang  <Chang.Shu (a] nokia.com>
   3734 
   3735         Reviewed by Laszlo Gombos.
   3736 
   3737         [Qt] Delete ThreadPrivate instance after it is finished.
   3738         https://bugs.webkit.org/show_bug.cgi?id=32614
   3739 
   3740         * wtf/qt/ThreadingQt.cpp:
   3741         (WTF::ThreadMonitor::instance):
   3742         (WTF::ThreadMonitor::threadFinished):
   3743         (WTF::createThreadInternal):
   3744         (WTF::detachThread):
   3745 
   3746 2009-12-28  Patrick Gansterer  <paroga (a] paroga.com>
   3747 
   3748         Reviewed by Maciej Stachowiak.
   3749 
   3750         Cleanup of #define JS_EXPORT.
   3751 
   3752         * API/JSBase.h:
   3753 
   3754 2009-12-27  Patrick Gansterer  <paroga (a] paroga.com>
   3755 
   3756         Reviewed by Adam Barth.
   3757 
   3758         WinCE buildfix (HWND_MESSAGE isn't supported there)
   3759 
   3760         * wtf/win/MainThreadWin.cpp:
   3761         (WTF::initializeMainThreadPlatform):
   3762 
   3763 2009-12-27  Patrick Gansterer  <paroga (a] paroga.com>
   3764 
   3765         Reviewed by Adam Barth.
   3766 
   3767         Added a file with WinMain function to link agains in WinCE.
   3768 
   3769         * os-win32/WinMain.cpp: Added.
   3770         (convertToUtf8):
   3771         (WinMain):
   3772 
   3773 2009-12-24  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   3774 
   3775         Unreviewed; revert of r52550.
   3776 
   3777         The change regressed the following LayoutTests for QtWebKit.
   3778 
   3779         fast/workers/worker-call.html -> crashed
   3780         fast/workers/worker-close.html -> crashed
   3781 
   3782         * wtf/qt/ThreadingQt.cpp:
   3783         (WTF::waitForThreadCompletion):
   3784         (WTF::detachThread):
   3785 
   3786 2009-12-24  Shu Chang  <Chang.Shu (a] nokia.com>
   3787 
   3788         Reviewed by Laszlo Gombos.
   3789 
   3790         [Qt] Fix memory leak by deleting instance of ThreadPrivate
   3791         in function waitForThreadCompletion(), synchronously, or in
   3792         detachThread(), asynchronously.
   3793         https://bugs.webkit.org/show_bug.cgi?id=32614 
   3794 
   3795         * wtf/qt/ThreadingQt.cpp:
   3796         (WTF::waitForThreadCompletion):
   3797         (WTF::detachThread):
   3798 
   3799 2009-12-23  Kwang Yul Seo  <skyul (a] company100.net>
   3800 
   3801         Reviewed by Laszlo Gombos.
   3802 
   3803         Include stddef.h for ptrdiff_t
   3804         https://bugs.webkit.org/show_bug.cgi?id=32891
   3805 
   3806         ptrdiff_t is typedef-ed in stddef.h.
   3807         Include stddef.h in jit/ExecutableAllocator.h.
   3808 
   3809         * jit/ExecutableAllocator.h:
   3810 
   3811 2009-12-23  Patrick Gansterer  <paroga (a] paroga.com>
   3812 
   3813         Reviewed by Eric Seidel.
   3814 
   3815         Buildfix after r47092.
   3816 
   3817         * wtf/wince/MemoryManager.cpp:
   3818         (WTF::tryFastMalloc):
   3819         (WTF::tryFastZeroedMalloc):
   3820         (WTF::tryFastCalloc):
   3821         (WTF::tryFastRealloc):
   3822 
   3823 2009-12-23  Kent Tamura  <tkent (a] chromium.org>
   3824 
   3825         Reviewed by Darin Adler.
   3826 
   3827         HTMLInputElement::valueAsDate getter support.
   3828         https://bugs.webkit.org/show_bug.cgi?id=32876
   3829 
   3830         Expose dateToDaysFrom1970().
   3831 
   3832         * JavaScriptCore.exp:
   3833         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   3834         * wtf/DateMath.cpp:
   3835         (WTF::dateToDaysFrom1970):
   3836         * wtf/DateMath.h:
   3837 
   3838 2009-12-22  Darin Adler  <darin (a] apple.com>
   3839 
   3840         Reviewed by Mark Rowe.
   3841 
   3842         Turn off datagrid by default, at least for all platforms Apple ships.
   3843         The datagrid implementation isn't ready for general web use yet.
   3844 
   3845         * Configurations/FeatureDefines.xcconfig: Turn off datagrid by default.
   3846 
   3847 2009-12-22  Steve Block  <steveblock (a] google.com>
   3848 
   3849         Reviewed by David Levin.
   3850 
   3851         Updates Android's scheduleDispatchFunctionsOnMainThread() to use new
   3852         AndroidThreading class, rather than using JavaSharedClient directly.
   3853         This fixes the current layering violation.
   3854         https://bugs.webkit.org/show_bug.cgi?id=32651
   3855 
   3856         The pattern is copied from Chromium, which uses the ChromiumThreading
   3857         class. This patch also fixes the style in ChromiumThreading.h.
   3858 
   3859         * wtf/android/AndroidThreading.h: Added. Declares AndroidThreading.
   3860         * wtf/android/MainThreadAndroid.cpp: Modified
   3861         (WTF::scheduleDispatchFunctionsOnMainThread): Uses AndroidThreading.
   3862         * wtf/chromium/ChromiumThreading.h: Modified. Fixes style.
   3863 
   3864 2009-12-22  Gavin Barraclough  <barraclough (a] apple.com>
   3865 
   3866         Reviewed by Sam Weinig.
   3867 
   3868         Fix a couple of problems with UntypedPtrAndBitfield.
   3869 
   3870         Add a m_leaksPtr to reduce false positives from leaks in debug builds
   3871         (this isn't perfect because we'd like a solution for release builds,
   3872         but this is now at least as good as a PtrAndFlags would be).
   3873 
   3874         Switch SmallStringsto use a regular string for the base, rather than
   3875         a static one.  UntypedPtrAndBitfield assumes all strings are at least
   3876         8 byte aligned; this migt not be true of static strings.  Shared buffers
   3877         are heap allocated, as are all UStringImpls other than static strings.
   3878         Static strings cannot end up being the owner string of substrings,
   3879         since the only static strings are length 0.
   3880 
   3881         * runtime/SmallStrings.cpp:
   3882         (JSC::SmallStringsStorage::SmallStringsStorage):
   3883         * runtime/UStringImpl.h:
   3884         (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
   3885         (JSC::UStringImpl::UStringImpl):
   3886 
   3887 2009-12-22  Kwang Yul Seo  <skyul (a] company100.net>
   3888 
   3889         Reviewed by Darin Adler.
   3890 
   3891         RVCT (__ARMCC_VERSION < 400000) does not provide strcasecmp and strncasecmp
   3892         https://bugs.webkit.org/show_bug.cgi?id=32857
   3893 
   3894         Add implementation of strcasecmp and strncasecmp for RVCT < 4.0
   3895         because earlier versions of RVCT 4.0 does not provide these functions.
   3896 
   3897         * wtf/StringExtras.cpp: Added.
   3898         (strcasecmp):
   3899         (strncasecmp):
   3900         * wtf/StringExtras.h:
   3901 
   3902 2009-12-22  Kwang Yul Seo  <skyul (a] company100.net>
   3903 
   3904         Reviewed by Darin Adler.
   3905 
   3906         Define ALWAYS_INLINE and WTF_PRIVATE_INLINE to __forceinline for RVCT
   3907         https://bugs.webkit.org/show_bug.cgi?id=32853
   3908 
   3909         Use __forceinline forces RVCT to compile a C or C++ function
   3910         inline. The compiler attempts to inline the function, regardless of
   3911         the characteristics of the function.
   3912 
   3913         * wtf/AlwaysInline.h:
   3914         * wtf/FastMalloc.h:
   3915 
   3916 2009-12-21  Simon Hausmann  <simon.hausmann (a] nokia.com>
   3917 
   3918         Prospective GTK build fix: Add UStringImpl.cpp/h to the build.
   3919 
   3920         * GNUmakefile.am:
   3921 
   3922 2009-12-21  Simon Hausmann  <simon.hausmann (a] nokia.com>
   3923 
   3924         Fix the Qt build, add UStringImpl.cpp to the build.
   3925 
   3926         * JavaScriptCore.pri:
   3927 
   3928 2009-12-21  Gavin Barraclough  <barraclough (a] apple.com>
   3929 
   3930         Windows Build fix part 5.
   3931         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
   3932 
   3933 2009-12-21  Gavin Barraclough  <barraclough (a] apple.com>
   3934 
   3935         Reviewed by NOBODY (build fix).
   3936         Fix breakage of world introduced in build fix to r52463.
   3937 
   3938         * runtime/UStringImpl.h:
   3939 
   3940 2009-12-21  Gavin Barraclough  <barraclough (a] apple.com>
   3941 
   3942         Reviewed by Darin Adler.
   3943 
   3944         https://bugs.webkit.org/show_bug.cgi?id=32831
   3945         Replace UString::Rep implementation, following introduction of ropes to JSC.
   3946 
   3947             * Remove redundant overcapacity mechanisms.
   3948             * Reduce memory cost of Rep's.
   3949             * Add an inline storage mechanism akin to that in WebCore's StringImpl.
   3950 
   3951         ~1% Sunspider progression.
   3952 
   3953         * JavaScriptCore.exp:
   3954         * JavaScriptCore.xcodeproj/project.pbxproj:
   3955         * runtime/JSString.cpp:
   3956         (JSC::JSString::resolveRope):
   3957         * runtime/SmallStrings.cpp:
   3958         (JSC::SmallStringsStorage::SmallStringsStorage):
   3959         * runtime/UString.cpp:
   3960         (JSC::initializeUString):
   3961         (JSC::createRep):
   3962         (JSC::UString::createFromUTF8):
   3963         (JSC::UString::createUninitialized):
   3964         (JSC::UString::spliceSubstringsWithSeparators):
   3965         (JSC::UString::replaceRange):
   3966         (JSC::UString::ascii):
   3967         (JSC::UString::operator=):
   3968         (JSC::UString::toStrictUInt32):
   3969         (JSC::equal):
   3970         * runtime/UString.h:
   3971         (JSC::UString::isEmpty):
   3972         (JSC::UString::cost):
   3973         (JSC::makeString):
   3974         * runtime/UStringImpl.cpp: Added.
   3975         (JSC::UStringImpl::baseSharedBuffer):
   3976         (JSC::UStringImpl::sharedBuffer):
   3977         (JSC::UStringImpl::destroy):
   3978         (JSC::UStringImpl::computeHash):
   3979         * runtime/UStringImpl.h: Added.
   3980         (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
   3981         (JSC::UntypedPtrAndBitfield::asPtr):
   3982         (JSC::UntypedPtrAndBitfield::operator&=):
   3983         (JSC::UntypedPtrAndBitfield::operator|=):
   3984         (JSC::UntypedPtrAndBitfield::operator&):
   3985         (JSC::UStringImpl::create):
   3986         (JSC::UStringImpl::createCopying):
   3987         (JSC::UStringImpl::createUninitialized):
   3988         (JSC::UStringImpl::data):
   3989         (JSC::UStringImpl::size):
   3990         (JSC::UStringImpl::cost):
   3991         (JSC::UStringImpl::hash):
   3992         (JSC::UStringImpl::computedHash):
   3993         (JSC::UStringImpl::setHash):
   3994         (JSC::UStringImpl::identifierTable):
   3995         (JSC::UStringImpl::setIdentifierTable):
   3996         (JSC::UStringImpl::ref):
   3997         (JSC::UStringImpl::deref):
   3998         (JSC::UStringImpl::allocChars):
   3999         (JSC::UStringImpl::copyChars):
   4000         (JSC::UStringImpl::computeHash):
   4001         (JSC::UStringImpl::null):
   4002         (JSC::UStringImpl::empty):
   4003         (JSC::UStringImpl::checkConsistency):
   4004         (JSC::UStringImpl::):
   4005         (JSC::UStringImpl::UStringImpl):
   4006         (JSC::UStringImpl::operator new):
   4007         (JSC::UStringImpl::bufferOwnerString):
   4008         (JSC::UStringImpl::bufferOwnership):
   4009         (JSC::UStringImpl::isStatic):
   4010 
   4011 2009-12-18  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   4012 
   4013         Reviewed by Kenneth Rohde Christiansen.
   4014 
   4015         Move some build decisions from Qt build system into source files
   4016         https://bugs.webkit.org/show_bug.cgi?id=31956
   4017 
   4018         * JavaScriptCore.pri: Compile files unconditionally
   4019         * jit/ExecutableAllocatorPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN)
   4020         * jit/ExecutableAllocatorWin.cpp: Guard with PLATFORM(WIN_OS)
   4021         * runtime/MarkStackPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN)
   4022         * runtime/MarkStackSymbian.cpp: Guard with PLATFORM(SYMBIAN)
   4023         * runtime/MarkStackWin.cpp: Guard with PLATFORM(WIN_OS)
   4024         * wtf/Platform.h: Guard ENABLE_JSC_MULTIPLE_THREADS with ENABLE_SINGLE_THREADED for the Qt port
   4025         * wtf/ThreadingNone.cpp: Guard with ENABLE(SINGLE_THREADED)
   4026         * wtf/qt/ThreadingQt.cpp: Guard with !ENABLE(SINGLE_THREADED)
   4027 
   4028 2009-12-18  Gavin Barraclough  <barraclough (a] apple.com>
   4029 
   4030         Reviewed by Sam Weinig.
   4031 
   4032         Add createNonCopying method to UString to make replace constructor passed bool,
   4033         to make behaviour more explicit.  Add createFromUTF8 to UString (wrapping method
   4034         on UString::Rep), since other cases of transliteration (e.g.  from ascii) are
   4035         performed in UString constructors.  Add/use setHash & size() accessors on Rep,
   4036         rather than accessing _hash/len directly.
   4037 
   4038         * API/JSClassRef.cpp:
   4039         (OpaqueJSClass::OpaqueJSClass):
   4040         * API/OpaqueJSString.cpp:
   4041         (OpaqueJSString::ustring):
   4042         * JavaScriptCore.exp:
   4043         * runtime/ArrayPrototype.cpp:
   4044         (JSC::arrayProtoFuncToString):
   4045         * runtime/Identifier.cpp:
   4046         (JSC::Identifier::equal):
   4047         (JSC::CStringTranslator::translate):
   4048         (JSC::UCharBufferTranslator::translate):
   4049         (JSC::Identifier::addSlowCase):
   4050         * runtime/JSString.cpp:
   4051         (JSC::JSString::resolveRope):
   4052         * runtime/JSString.h:
   4053         (JSC::JSString::Rope::Fiber::refAndGetLength):
   4054         (JSC::JSString::Rope::append):
   4055         * runtime/StringBuilder.h:
   4056         (JSC::StringBuilder::release):
   4057         * runtime/StringConstructor.cpp:
   4058         (JSC::stringFromCharCodeSlowCase):
   4059         * runtime/StringPrototype.cpp:
   4060         (JSC::substituteBackreferencesSlow):
   4061         (JSC::stringProtoFuncToLowerCase):
   4062         (JSC::stringProtoFuncToUpperCase):
   4063         (JSC::stringProtoFuncFontsize):
   4064         (JSC::stringProtoFuncLink):
   4065         * runtime/UString.cpp:
   4066         (JSC::UString::UString):
   4067         (JSC::UString::createNonCopying):
   4068         (JSC::UString::createFromUTF8):
   4069         * runtime/UString.h:
   4070         (JSC::UString::Rep::setHash):
   4071         (JSC::UString::~UString):
   4072         (JSC::makeString):
   4073 
   4074 2009-12-18  Geoffrey Garen  <ggaren (a] apple.com>
   4075 
   4076         Reviewed by Cameron Zwarich and Gavin Barraclough.
   4077         
   4078         Changed Register constructors to assignment operators, to streamline
   4079         moving values into registers. (In theory, there's no difference between
   4080         the two, since the constructor should just inline away, but there seems
   4081         to be a big difference in the addled mind of the GCC optimizer.)
   4082 
   4083         In the interpreter, this is a 3.5% SunSpider speedup and a 1K-2K
   4084         reduction in stack usage per privateExecute stack frame.
   4085 
   4086         * interpreter/CallFrame.h:
   4087         (JSC::ExecState::setCalleeArguments):
   4088         (JSC::ExecState::setCallerFrame):
   4089         (JSC::ExecState::setScopeChain):
   4090         (JSC::ExecState::init):
   4091         (JSC::ExecState::setArgumentCount):
   4092         (JSC::ExecState::setCallee):
   4093         (JSC::ExecState::setCodeBlock): Added a little bit of casting so these
   4094         functions could use the new Register assignment operators.
   4095 
   4096         * interpreter/Register.h:
   4097         (JSC::Register::withInt):
   4098         (JSC::Register::Register):
   4099         (JSC::Register::operator=): Swapped in assignment operators for constructors.
   4100 
   4101 2009-12-18  Yongjun Zhang  <yongjun.zhang (a] nokia.com>
   4102 
   4103         Reviewed by Simon Hausmann.
   4104 
   4105         https://bugs.webkit.org/show_bug.cgi?id=32713
   4106         [Qt] make wtf/Assertions.h compile in winscw compiler.
   4107 
   4108         Add string arg before ellipsis to help winscw compiler resolve variadic
   4109         macro definitions in wtf/Assertions.h. 
   4110 
   4111         * wtf/Assertions.h:
   4112 
   4113 2009-12-18  Geoffrey Garen  <ggaren (a] apple.com>
   4114 
   4115         Reviewed by Adam Roben.
   4116 
   4117         Fixed intermittent failure seen on Windows buildbot, and in other JSC
   4118         API clients.
   4119         
   4120         Added a WeakGCPtr class and changed OpaqueJSClass::cachedPrototype to
   4121         use it, to avoid vending a stale object as a prototype.
   4122 
   4123         * API/JSClassRef.cpp:
   4124         (OpaqueJSClassContextData::OpaqueJSClassContextData):
   4125         (OpaqueJSClass::prototype):
   4126         * API/JSClassRef.h: Use WeakGCPtr.
   4127 
   4128         * JavaScriptCore.xcodeproj/project.pbxproj:
   4129         * runtime/WeakGCPtr.h: Added.
   4130         (JSC::WeakGCPtr::WeakGCPtr):
   4131         (JSC::WeakGCPtr::get):
   4132         (JSC::WeakGCPtr::clear):
   4133         (JSC::WeakGCPtr::operator*):
   4134         (JSC::WeakGCPtr::operator->):
   4135         (JSC::WeakGCPtr::operator!):
   4136         (JSC::WeakGCPtr::operator bool):
   4137         (JSC::WeakGCPtr::operator UnspecifiedBoolType):
   4138         (JSC::WeakGCPtr::assign):
   4139         (JSC::::operator):
   4140         (JSC::operator==):
   4141         (JSC::operator!=):
   4142         (JSC::static_pointer_cast):
   4143         (JSC::const_pointer_cast):
   4144         (JSC::getPtr): Added WeakGCPtr to the project.
   4145 
   4146 2009-12-18  Gavin Barraclough  <barraclough (a] apple.com>
   4147 
   4148         Reviewed by Sam Weinig.
   4149 
   4150         https://bugs.webkit.org/show_bug.cgi?id=32720
   4151 
   4152         * JavaScriptCore.exp:
   4153             - Remove exports for UString::append
   4154         * JavaScriptCore.xcodeproj/project.pbxproj:
   4155             - Make StringBuilder a private header (was project).
   4156 
   4157 2009-12-18  Martin Robinson  <martin.james.robinson (a] gmail.com>
   4158 
   4159         Reviewed by Gustavo Noronha Silva.
   4160 
   4161         [GTK] GRefPtr does not take a reference when assigned a raw pointer
   4162         https://bugs.webkit.org/show_bug.cgi?id=32709
   4163 
   4164         Ensure that when assigning a raw pointer to a GRefPtr, the reference
   4165         count is incremented. Also remove the GRefPtr conversion overload as
   4166         GRefPtr types have necessarily incompatible reference counting.
   4167 
   4168         * wtf/gtk/GRefPtr.h:
   4169         (WTF::GRefPtr::operator=):
   4170 
   4171 2009-12-18  Simon Hausmann  <simon.hausmann (a] nokia.com>
   4172 
   4173         Reviewed by Tor Arne Vestb.
   4174 
   4175         [Qt] Clean up the qmake build system to distinguish between trunk builds and package builds
   4176 
   4177         https://bugs.webkit.org/show_bug.cgi?id=32716
   4178 
   4179         * pcre/pcre.pri: Use standalone_package instead of QTDIR_build
   4180 
   4181 2009-12-18  Martin Robinson  <martin.james.robinson (a] gmail.com>
   4182 
   4183         Reviewed by Gustavo Noronha Silva.
   4184 
   4185         [GTK] Compile warning from line 29 of GRefPtr.cpp
   4186         https://bugs.webkit.org/show_bug.cgi?id=32703
   4187 
   4188         Fix memory leak and compiler warning in GRefPtr GHashTable template
   4189         specialization.
   4190 
   4191         * wtf/gtk/GRefPtr.cpp:
   4192         (WTF::refGPtr):
   4193 
   4194 2009-12-17  Sam Weinig  <sam (a] webkit.org>
   4195 
   4196         Reviewed by Mark Rowe.
   4197 
   4198         Add BUILDING_ON_SNOW_LEOPARD and TARGETING_SNOW_LEOPARD #defines.
   4199 
   4200         * wtf/Platform.h:
   4201 
   4202 2009-12-17  Adam Roben  <aroben (a] apple.com>
   4203 
   4204         Sync JavaScriptCore.vcproj with JavaScriptCore.xcodeproj and the
   4205         source tree
   4206 
   4207         Fixes <http://webkit.org/b/32665>.
   4208 
   4209         Reviewed by Ada Chan.
   4210 
   4211         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Moved
   4212         around files and filters so that the structure matches
   4213         JavaScriptCore.xcodeproj and the source tree. A few headers that were
   4214         previously omitted have been added, as well as JSZombie.{cpp,h}.
   4215 
   4216 2009-12-17  Adam Roben  <aroben (a] apple.com>
   4217 
   4218         Remove HeavyProfile and TreeProfile completely
   4219 
   4220         These were mostly removed in r42808, but the empty files were left in
   4221         place.
   4222 
   4223         Fixes <http://webkit.org/b/32664>.
   4224 
   4225         Reviewed by John Sullivan.
   4226 
   4227         * Android.mk:
   4228         * GNUmakefile.am:
   4229         * JavaScriptCore.gypi:
   4230         * JavaScriptCore.pri:
   4231         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
   4232         * JavaScriptCoreSources.bkl:
   4233         Removed HeavyProfile/TreeProfile source files.
   4234 
   4235         * profiler/HeavyProfile.cpp: Removed.
   4236         * profiler/HeavyProfile.h: Removed.
   4237         * profiler/TreeProfile.cpp: Removed.
   4238         * profiler/TreeProfile.h: Removed.
   4239 
   4240 2009-12-17  Martin Robinson  <martin.james.robinson (a] gmail.com>
   4241 
   4242         Reviewed by Gustavo Noronha Silva.
   4243 
   4244         [GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs
   4245         https://bugs.webkit.org/show_bug.cgi?id=21599
   4246 
   4247         Implement GRefPtr, a smart pointer for reference counted GObject types.
   4248 
   4249         * GNUmakefile.am:
   4250         * wtf/gtk/GOwnPtr.cpp:
   4251         (WTF::GDir):
   4252         * wtf/gtk/GRefPtr.h: Added.
   4253         (WTF::):
   4254         (WTF::GRefPtr::GRefPtr):
   4255         (WTF::GRefPtr::~GRefPtr):
   4256         (WTF::GRefPtr::clear):
   4257         (WTF::GRefPtr::get):
   4258         (WTF::GRefPtr::operator*):
   4259         (WTF::GRefPtr::operator->):
   4260         (WTF::GRefPtr::operator!):
   4261         (WTF::GRefPtr::operator UnspecifiedBoolType):
   4262         (WTF::GRefPtr::hashTableDeletedValue):
   4263         (WTF::::operator):
   4264         (WTF::::swap):
   4265         (WTF::swap):
   4266         (WTF::operator==):
   4267         (WTF::operator!=):
   4268         (WTF::static_pointer_cast):
   4269         (WTF::const_pointer_cast):
   4270         (WTF::getPtr):
   4271         (WTF::adoptGRef):
   4272         (WTF::refGPtr):
   4273         (WTF::derefGPtr):
   4274 
   4275 2009-12-17  Gustavo Noronha Silva  <gustavo.noronha (a] collabora.co.uk>
   4276 
   4277         Unreviewed. Build fixes for make distcheck.
   4278 
   4279         * GNUmakefile.am:
   4280 
   4281 2009-12-16  Geoffrey Garen  <ggaren (a] apple.com>
   4282 
   4283         Reviewed by Oliver Hunt.
   4284 
   4285         Fixed <rdar://problem/7355025> Interpreter::privateExecute macro generates
   4286         bloated code
   4287         
   4288         This patch cuts Interpreter stack use by about a third.
   4289 
   4290         * bytecode/Opcode.h: Changed Opcode to const void* to work with the
   4291         const static initiliazation we want to do in Interpreter::privateExecute.
   4292 
   4293         * interpreter/Interpreter.cpp:
   4294         (JSC::Interpreter::Interpreter): Moved hashtable initialization here to
   4295         avoid polluting Interpreter::privateExecute's stack, and changed it from a
   4296         series of add() calls to one add() call in a loop, to cut down on code size.
   4297 
   4298         (JSC::Interpreter::privateExecute): Changed a series of label computations
   4299         to a copy of a compile-time constant array to cut down on code size.
   4300 
   4301 2009-12-16  Mark Rowe  <mrowe (a] apple.com>
   4302 
   4303         Build fix.  Disable debug variants of WebKit frameworks.
   4304 
   4305         * JavaScriptCore.xcodeproj/project.pbxproj:
   4306 
   4307 2009-12-15  Geoffrey Garen  <ggaren (a] apple.com>
   4308 
   4309         Reviewed by Sam "r=me" Weinig.
   4310 
   4311         https://bugs.webkit.org/show_bug.cgi?id=32498
   4312         <rdar://problem/7471495>
   4313         REGRESSION(r51978-r52039): AJAX "Mark This Forum Read" function no longer
   4314         works
   4315         
   4316         Fixed a tyop.
   4317 
   4318         * runtime/Operations.h:
   4319         (JSC::jsAdd): Use the '&&' operator, not the ',' operator.
   4320 
   4321 2009-12-15  Geoffrey Garen  <ggaren (a] apple.com>
   4322 
   4323         Try to fix the windows build: don't export this inlined function.
   4324 
   4325         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   4326 
   4327 2009-12-15  Geoffrey Garen  <ggaren (a] apple.com>
   4328 
   4329         Reviewed by Beth Dakin.
   4330 
   4331         Inlined JSCell's operator new.
   4332         
   4333         3.7% speedup on bench-allocate-nonretained.js.
   4334 
   4335         * JavaScriptCore.exp:
   4336         * runtime/JSCell.cpp:
   4337         * runtime/JSCell.h:
   4338         (JSC::JSCell::operator new):
   4339 
   4340 2009-12-15  Geoffrey Garen  <ggaren (a] apple.com>
   4341 
   4342         Reviewed by Oliver Hunt.
   4343 
   4344         Removed the number heap, replacing it with a one-item free list for
   4345         numbers, taking advantage of the fact that two number cells fit inside
   4346         the space for one regular cell, and number cells don't require destruction.
   4347         
   4348         SunSpider says 1.6% faster in JSVALUE32 mode (the only mode that
   4349         heap-allocates numbers).
   4350         
   4351         SunSpider says 1.1% faster in JSVALUE32_64 mode. v8 says 0.8% faster
   4352         in JSVALUE32_64 mode. 10% speedup on bench-alloc-nonretained.js. 6%
   4353         speedup on bench-alloc-retained.js.
   4354         
   4355         There's a lot of formulaic change in this patch, but not much substance.
   4356 
   4357         * JavaScriptCore.exp:
   4358         * debugger/Debugger.cpp:
   4359         (JSC::Debugger::recompileAllJSFunctions):
   4360         * runtime/Collector.cpp:
   4361         (JSC::Heap::Heap):
   4362         (JSC::Heap::destroy):
   4363         (JSC::Heap::allocateBlock):
   4364         (JSC::Heap::freeBlock):
   4365         (JSC::Heap::freeBlockPtr):
   4366         (JSC::Heap::freeBlocks):
   4367         (JSC::Heap::recordExtraCost):
   4368         (JSC::Heap::allocate):
   4369         (JSC::Heap::resizeBlocks):
   4370         (JSC::Heap::growBlocks):
   4371         (JSC::Heap::shrinkBlocks):
   4372         (JSC::Heap::markConservatively):
   4373         (JSC::Heap::clearMarkBits):
   4374         (JSC::Heap::markedCells):
   4375         (JSC::Heap::sweep):
   4376         (JSC::Heap::markRoots):
   4377         (JSC::Heap::objectCount):
   4378         (JSC::Heap::addToStatistics):
   4379         (JSC::Heap::statistics):
   4380         (JSC::Heap::isBusy):
   4381         (JSC::Heap::reset):
   4382         (JSC::Heap::collectAllGarbage):
   4383         (JSC::Heap::primaryHeapBegin):
   4384         (JSC::Heap::primaryHeapEnd):
   4385         * runtime/Collector.h:
   4386         (JSC::): Removed all code pertaining to the number heap, and changed all
   4387         heap template functions and classes to non-template functions and classes.
   4388 
   4389         (JSC::Heap::allocateNumber): A new optimization to replace the number
   4390         heap: allocate half-sized number cells in pairs, returning the first
   4391         cell and caching the second cell for the next allocation.
   4392 
   4393         * runtime/CollectorHeapIterator.h:
   4394         (JSC::LiveObjectIterator::LiveObjectIterator):
   4395         (JSC::LiveObjectIterator::operator++):
   4396         (JSC::DeadObjectIterator::DeadObjectIterator):
   4397         (JSC::DeadObjectIterator::operator++):
   4398         (JSC::ObjectIterator::ObjectIterator):
   4399         (JSC::ObjectIterator::operator++):
   4400         * runtime/JSCell.h:
   4401         (JSC::JSCell::isNumber): Removed all code pertaining to the number heap,
   4402         and changed all heap template functions and classes to non-template functions
   4403         and classes.
   4404 
   4405 2009-12-15  Zoltan Horvath  <zoltan (a] webkit.org>
   4406 
   4407         Reviewed by Darin Adler.
   4408 
   4409         Allow custom memory allocation control for WeakGCMap class
   4410         https://bugs.webkit.org/show_bug.cgi?id=32547
   4411 
   4412         Inherits WeakGCMap from FastAllocBase because it is instantiated by
   4413         'new' at: WebCore/dom/Document.cpp:512.
   4414 
   4415         * runtime/WeakGCMap.h:
   4416 
   4417 2009-12-15  Zoltan Horvath  <zoltan (a] webkit.org>
   4418 
   4419         Reviewed by Darin Adler.
   4420 
   4421         Allow custom memory allocation control for dtoa's P5Node struct
   4422         https://bugs.webkit.org/show_bug.cgi?id=32544
   4423 
   4424         Inherits P5Node struct from Noncopyable because it is instantiated by
   4425         'new' at wtf/dtoa.cpp:588 and don't need to be copyable.
   4426 
   4427         * wtf/dtoa.cpp:
   4428 
   4429 2009-12-14  Geoffrey Garen  <ggaren (a] apple.com>
   4430 
   4431         Reviewed by Simon Fraser.
   4432 
   4433         https://bugs.webkit.org/show_bug.cgi?id=32524
   4434         REGRESSION(52084): fast/dom/prototypes.html failing two CSS tests
   4435 
   4436         * wtf/StdLibExtras.h:
   4437         (WTF::bitCount): The original patch put the parentheses in the wrong
   4438         place, completely changing the calculation and making it almost always
   4439         wrong. Moved the parentheses around the '+' operation, like the original
   4440         compiler warning suggested.
   4441 
   4442 2009-12-14  Gabor Loki  <loki (a] inf.u-szeged.hu>
   4443 
   4444         Unreviewed trivial buildfix.
   4445 
   4446         Fix crosses initialization of usedPrimaryBlocks for JSValue32
   4447 
   4448         * runtime/Collector.cpp:
   4449         (JSC::Heap::markConservatively):
   4450 
   4451 2009-12-14  Csaba Osztrogonc  <ossy (a] webkit.org>
   4452 
   4453         Reviewed by Simon Hausmann.
   4454 
   4455         GCC 4.3.x warning fixed. Suggested parantheses added.
   4456         warning: ../../../JavaScriptCore/wtf/StdLibExtras.h:77: warning: suggest parentheses around + or - in operand of &
   4457 
   4458         * wtf/StdLibExtras.h:
   4459         (WTF::bitCount):
   4460 
   4461 2009-12-13  Geoffrey Garen  <ggaren (a] apple.com>
   4462 
   4463         Reviewed by Sam Weinig.
   4464         
   4465         Changed GC from mark-sweep to mark-allocate.
   4466         
   4467         Added WeakGCMap to keep WebCore blissfully ignorant about objects that
   4468         have become garbage but haven't run their destructors yet.
   4469         
   4470         1% SunSpider speedup.
   4471         7.6% v8 speedup (37% splay speedup).
   4472         17% speedup on bench-alloc-nonretained.js.
   4473         18% speedup on bench-alloc-retained.js.
   4474 
   4475         * API/JSBase.cpp:
   4476         (JSGarbageCollect):
   4477         * API/JSContextRef.cpp:
   4478         * JavaScriptCore.exp:
   4479         * JavaScriptCore.xcodeproj/project.pbxproj: Updated for renames and new
   4480         files.
   4481 
   4482         * debugger/Debugger.cpp:
   4483         (JSC::Debugger::recompileAllJSFunctions): Updated to use the Collector
   4484         iterator abstraction.
   4485 
   4486         * jsc.cpp:
   4487         (functionGC): Updated for rename.
   4488 
   4489         * runtime/Collector.cpp: Slightly reduced the number of allocations per
   4490         collection, so that small workloads only allocate on collector block,
   4491         rather than two.
   4492 
   4493         (JSC::Heap::Heap): Updated to use the new allocateBlock function.
   4494 
   4495         (JSC::Heap::destroy): Updated to use the new freeBlocks function.
   4496 
   4497         (JSC::Heap::allocateBlock): New function to initialize a block when
   4498         allocating it.
   4499 
   4500         (JSC::Heap::freeBlock): Consolidated the responsibility for running
   4501         destructors into this function.
   4502 
   4503         (JSC::Heap::freeBlocks): Updated to use freeBlock.
   4504 
   4505         (JSC::Heap::recordExtraCost): Sweep the heap in this reporting function,
   4506         so that allocation, which is more common, doesn't have to check extraCost.
   4507 
   4508         (JSC::Heap::heapAllocate): Run destructors right before recycling a
   4509         garbage cell. This has better cache utilization than a separate sweep phase.
   4510 
   4511         (JSC::Heap::resizeBlocks):
   4512         (JSC::Heap::growBlocks):
   4513         (JSC::Heap::shrinkBlocks): New set of functions for managing the size of
   4514         the heap, now that the heap doesn't maintain any information about its
   4515         size.
   4516 
   4517         (JSC::isPointerAligned):
   4518         (JSC::isHalfCellAligned):
   4519         (JSC::isPossibleCell):
   4520         (JSC::isCellAligned):
   4521         (JSC::Heap::markConservatively): Cleaned up this code a bit.
   4522 
   4523         (JSC::Heap::clearMarkBits):
   4524         (JSC::Heap::markedCells): Some helper functions for examining the the mark
   4525         bitmap.
   4526 
   4527         (JSC::Heap::sweep): Simplified this function by using a DeadObjectIterator.
   4528 
   4529         (JSC::Heap::markRoots): Reordered some operations for clarity.
   4530 
   4531         (JSC::Heap::objectCount):
   4532         (JSC::Heap::addToStatistics):
   4533         (JSC::Heap::statistics): Rewrote these functions to calculate an object
   4534         count on demand, since the heap doesn't maintain this information by 
   4535         itself.
   4536 
   4537         (JSC::Heap::reset): New function for resetting the heap once we've
   4538         exhausted heap space.
   4539 
   4540         (JSC::Heap::collectAllGarbage): This function matches the old collect()
   4541         behavior, but it's now an uncommon function used only by API.
   4542 
   4543         * runtime/Collector.h:
   4544         (JSC::CollectorBitmap::count):
   4545         (JSC::CollectorBitmap::isEmpty): Added some helper functions for managing
   4546         the collector mark bitmap.
   4547 
   4548         (JSC::Heap::reportExtraMemoryCost): Changed reporting from cell equivalents
   4549         to bytes, so it's easier to understand.
   4550         
   4551         * runtime/CollectorHeapIterator.h:
   4552         (JSC::CollectorHeapIterator::CollectorHeapIterator):
   4553         (JSC::CollectorHeapIterator::operator!=):
   4554         (JSC::CollectorHeapIterator::operator*):
   4555         (JSC::CollectorHeapIterator::advance):
   4556         (JSC::::LiveObjectIterator):
   4557         (JSC::::operator):
   4558         (JSC::::DeadObjectIterator):
   4559         (JSC::::ObjectIterator): New iterators for encapsulating details about
   4560         heap layout, and what's live and dead on the heap.
   4561 
   4562         * runtime/JSArray.cpp:
   4563         (JSC::JSArray::putSlowCase):
   4564         (JSC::JSArray::increaseVectorLength): Delay reporting extra cost until
   4565         we're fully constructed, so the heap mark phase won't visit us in an
   4566         invalid state.
   4567 
   4568         * runtime/JSCell.h:
   4569         (JSC::JSCell::):
   4570         (JSC::JSCell::createDummyStructure):
   4571         (JSC::JSCell::JSCell):
   4572         * runtime/JSGlobalData.cpp:
   4573         (JSC::JSGlobalData::JSGlobalData):
   4574         * runtime/JSGlobalData.h: Added a dummy cell to simplify allocation logic.
   4575 
   4576         * runtime/JSString.h:
   4577         (JSC::jsSubstring): Don't report extra cost for substrings, since they
   4578         share a buffer that's already reported extra cost.
   4579 
   4580         * runtime/Tracing.d:
   4581         * runtime/Tracing.h: Changed these dtrace hooks not to report object
   4582         counts, since they're no longer cheap to compute.
   4583 
   4584         * runtime/UString.h: Updated for renames.
   4585 
   4586         * runtime/WeakGCMap.h: Added.
   4587         (JSC::WeakGCMap::isEmpty):
   4588         (JSC::WeakGCMap::uncheckedGet):
   4589         (JSC::WeakGCMap::uncheckedBegin):
   4590         (JSC::WeakGCMap::uncheckedEnd):
   4591         (JSC::::get):
   4592         (JSC::::take):
   4593         (JSC::::set):
   4594         (JSC::::uncheckedRemove): Mentioned above.
   4595 
   4596         * wtf/StdLibExtras.h:
   4597         (WTF::bitCount): Added a bit population count function, so the heap can
   4598         count live objects to fulfill statistics questions.
   4599 
   4600 The very last cell in the block is not allocated -- should not be marked.
   4601 
   4602 2009-12-13  Geoffrey Garen  <ggaren (a] apple.com>
   4603 
   4604         Windows build fix: Export some new symbols.
   4605 
   4606         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   4607 
   4608 2009-12-13  Geoffrey Garen  <ggaren (a] apple.com>
   4609 
   4610         Windows build fix: Removed some old exports.
   4611 
   4612         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   4613 
   4614 2009-12-13  Geoffrey Garen  <ggaren (a] apple.com>
   4615 
   4616         Windows build fix: Use unsigned instead of uint32_t to avoid dependencies.
   4617 
   4618         * wtf/StdLibExtras.h:
   4619         (WTF::bitCount):
   4620 
   4621 2009-12-13  Gavin Barraclough  <barraclough (a] apple.com>
   4622 
   4623         Reviewed by NOBODY (speculative Windows build fix).
   4624 
   4625         * runtime/JSGlobalObjectFunctions.cpp:
   4626 
   4627 2009-12-13  Gavin Barraclough  <barraclough (a] apple.com>
   4628 
   4629         Reviewed by Sam Weinig.
   4630 
   4631         https://bugs.webkit.org/show_bug.cgi?id=32496
   4632         Switch remaining cases of string construction to use StringBuilder.
   4633         Builds strings using a vector rather than using string append / addition.
   4634 
   4635         * JavaScriptCore.exp:
   4636         * JavaScriptCore.xcodeproj/project.pbxproj:
   4637         * runtime/Executable.cpp:
   4638         (JSC::FunctionExecutable::paramString):
   4639         * runtime/FunctionConstructor.cpp:
   4640         (JSC::constructFunction):
   4641         * runtime/JSGlobalObjectFunctions.cpp:
   4642         (JSC::encode):
   4643         (JSC::decode):
   4644         (JSC::globalFuncEscape):
   4645         (JSC::globalFuncUnescape):
   4646         * runtime/JSONObject.cpp:
   4647         (JSC::Stringifier::stringify):
   4648         (JSC::Stringifier::indent):
   4649         * runtime/JSString.h:
   4650         * runtime/LiteralParser.cpp:
   4651         (JSC::LiteralParser::Lexer::lexString):
   4652         * runtime/NumberPrototype.cpp:
   4653         (JSC::integerPartNoExp):
   4654         (JSC::numberProtoFuncToFixed):
   4655         (JSC::numberProtoFuncToPrecision):
   4656         * runtime/Operations.h:
   4657         (JSC::jsString):
   4658         * runtime/StringPrototype.cpp:
   4659         (JSC::substituteBackreferencesSlow):
   4660         (JSC::substituteBackreferences):
   4661         (JSC::stringProtoFuncConcat):
   4662 
   4663 2009-12-08  Jeremy Moskovich  <jeremy (a] chromium.org>
   4664 
   4665         Reviewed by Eric Seidel.
   4666 
   4667         Add code to allow toggling ATSUI/Core Text rendering at runtime in ComplexTextController.
   4668         https://bugs.webkit.org/show_bug.cgi?id=31802
   4669 
   4670         The goal here is to allow for a zero runtime hit for ports that decide to select
   4671         the API at compile time.
   4672         When both USE(ATSUI) and USE(CORE_TEXT) are true, the API is toggled
   4673         at runtime.  Core Text is used for OS Versions >= 10.6.
   4674 
   4675         * wtf/Platform.h: #define USE_CORE_TEXT and USE_ATSUI on Chrome/Mac.
   4676 
   4677 2009-12-11  Maciej Stachowiak  <mjs (a] apple.com>
   4678 
   4679         Reviewed by Oliver Hunt.
   4680 
   4681         Unify codegen for forward and backward variants of branches
   4682         https://bugs.webkit.org/show_bug.cgi?id=32463
   4683 
   4684         * jit/JIT.h:
   4685         (JSC::JIT::emit_op_loop): Implemented in terms of forward variant.
   4686         (JSC::JIT::emit_op_loop_if_true): ditto
   4687         (JSC::JIT::emitSlow_op_loop_if_true): ditto
   4688         (JSC::JIT::emit_op_loop_if_false): ditto
   4689         (JSC::JIT::emitSlow_op_loop_if_false): ditto
   4690         (JSC::JIT::emit_op_loop_if_less): ditto
   4691         (JSC::JIT::emitSlow_op_loop_if_less): ditto
   4692         * jit/JITOpcodes.cpp:
   4693 
   4694 2009-12-11  Sam Weinig  <sam (a] webkit.org>
   4695 
   4696         Reviewed by Anders Carlsson.
   4697 
   4698         Allow WTFs concept of the main thread to differ from pthreads when necessary.
   4699 
   4700         * wtf/ThreadingPthreads.cpp:
   4701         (WTF::initializeThreading):
   4702         (WTF::isMainThread):
   4703         * wtf/mac/MainThreadMac.mm:
   4704         (WTF::initializeMainThreadPlatform):
   4705         (WTF::scheduleDispatchFunctionsOnMainThread):
   4706 
   4707 2009-12-11  Gavin Barraclough  <barraclough (a] apple.com>
   4708 
   4709         Reviewed by Oliver Hunt.
   4710 
   4711         https://bugs.webkit.org/show_bug.cgi?id=32454
   4712         Refactor construction of simple strings to avoid string concatenation.
   4713 
   4714         Building strings through concatenation has a memory and performance cost -
   4715         a memory cost since we must over-allocate the buffer to leave space to append
   4716         into, and performance in that the string may still require reallocation (and
   4717         thus copying during construction).  Instead move the full construction to
   4718         within a single function call (makeString), so that the arguments' lengths
   4719         can be calculated and an appropriate sized buffer allocated before copying
   4720         any characters.
   4721 
   4722         ~No performance change (~2% progression on date tests).
   4723 
   4724         * bytecode/CodeBlock.cpp:
   4725         (JSC::escapeQuotes):
   4726         (JSC::valueToSourceString):
   4727         (JSC::constantName):
   4728         (JSC::idName):
   4729         (JSC::CodeBlock::registerName):
   4730         (JSC::regexpToSourceString):
   4731         (JSC::regexpName):
   4732         * bytecompiler/NodesCodegen.cpp:
   4733         (JSC::substitute):
   4734         * profiler/Profiler.cpp:
   4735         (JSC::Profiler::createCallIdentifier):
   4736         * runtime/DateConstructor.cpp:
   4737         (JSC::callDate):
   4738         * runtime/DateConversion.cpp:
   4739         (JSC::formatDate):
   4740         (JSC::formatDateUTCVariant):
   4741         (JSC::formatTime):
   4742         (JSC::formatTimeUTC):
   4743         * runtime/DateConversion.h:
   4744         (JSC::):
   4745         * runtime/DatePrototype.cpp:
   4746         (JSC::dateProtoFuncToString):
   4747         (JSC::dateProtoFuncToUTCString):
   4748         (JSC::dateProtoFuncToDateString):
   4749         (JSC::dateProtoFuncToTimeString):
   4750         (JSC::dateProtoFuncToGMTString):
   4751         * runtime/ErrorPrototype.cpp:
   4752         (JSC::errorProtoFuncToString):
   4753         * runtime/ExceptionHelpers.cpp:
   4754         (JSC::createUndefinedVariableError):
   4755         (JSC::createErrorMessage):
   4756         (JSC::createInvalidParamError):
   4757         * runtime/FunctionPrototype.cpp:
   4758         (JSC::insertSemicolonIfNeeded):
   4759         (JSC::functionProtoFuncToString):
   4760         * runtime/ObjectPrototype.cpp:
   4761         (JSC::objectProtoFuncToString):
   4762         * runtime/RegExpConstructor.cpp:
   4763         (JSC::constructRegExp):
   4764         * runtime/RegExpObject.cpp:
   4765         (JSC::RegExpObject::match):
   4766         * runtime/RegExpPrototype.cpp:
   4767         (JSC::regExpProtoFuncCompile):
   4768         (JSC::regExpProtoFuncToString):
   4769         * runtime/StringPrototype.cpp:
   4770         (JSC::stringProtoFuncBig):
   4771         (JSC::stringProtoFuncSmall):
   4772         (JSC::stringProtoFuncBlink):
   4773         (JSC::stringProtoFuncBold):
   4774         (JSC::stringProtoFuncFixed):
   4775         (JSC::stringProtoFuncItalics):
   4776         (JSC::stringProtoFuncStrike):
   4777         (JSC::stringProtoFuncSub):
   4778         (JSC::stringProtoFuncSup):
   4779         (JSC::stringProtoFuncFontcolor):
   4780         (JSC::stringProtoFuncFontsize):
   4781         (JSC::stringProtoFuncAnchor):
   4782         * runtime/UString.h:
   4783         (JSC::):
   4784         (JSC::makeString):
   4785 
   4786 2009-12-10  Gavin Barraclough  <barraclough (a] apple.com>
   4787 
   4788         Reviewed by Oliver Hunt.
   4789 
   4790         https://bugs.webkit.org/show_bug.cgi?id=32400
   4791         Switch remaining cases of string addition to use ropes.
   4792 
   4793         Re-landing r51975 - added toPrimitiveString method,
   4794         performs toPrimitive then subsequent toString operations.
   4795 
   4796         ~1% progression on Sunspidey.
   4797 
   4798         * jit/JITStubs.cpp:
   4799         (JSC::DEFINE_STUB_FUNCTION):
   4800         * runtime/JSString.h:
   4801         (JSC::JSString::JSString):
   4802         (JSC::JSString::appendStringInConstruct):
   4803         * runtime/Operations.cpp:
   4804         (JSC::jsAddSlowCase):
   4805         * runtime/Operations.h:
   4806         (JSC::jsString):
   4807         (JSC::jsAdd):
   4808 
   4809 2009-12-11  Adam Roben  <aroben (a] apple.com>
   4810 
   4811         Windows build fix
   4812 
   4813         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added
   4814         $(WebKitOutputDir)/include/private to the include path.
   4815 
   4816 2009-12-11  Adam Roben  <aroben (a] apple.com>
   4817 
   4818         Move QuartzCorePresent.h to include/private
   4819 
   4820         This fixes other projects that use wtf/Platform.h
   4821 
   4822         Rubber-stamped by Steve Falkenburg.
   4823 
   4824         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Let VS do its thang.
   4825         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Write
   4826         QuartzCorePresent.h to $(WebKitOutputDir)/include/private.
   4827 
   4828         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
   4829         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
   4830         Added $(WebKitOutputDir)/include/private to the include path.
   4831 
   4832 2009-12-11  Adam Roben  <aroben (a] apple.com>
   4833 
   4834         Fix clean builds and everything rebuilding on every build
   4835 
   4836         Reviewed by Sam Weinig.
   4837 
   4838         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Don't
   4839         write out QuartzCorePresent.h if it exists but is older than
   4840         QuartzCore.h. Also, create the directory we write QuartzCorePresent.h
   4841         into first.
   4842 
   4843 2009-12-11  Adam Roben  <aroben (a] apple.com>
   4844 
   4845         Windows build fix for systems with spaces in their paths
   4846 
   4847         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Quote some paths.
   4848 
   4849 2009-12-11  Chris Marrin  <cmarrin (a] apple.com>
   4850 
   4851         Reviewed by Adam Roben.
   4852 
   4853         Add check for presence of QuartzCore headers
   4854         https://bugs.webkit.org/show_bug.cgi?id=31856
   4855         
   4856         The script now checks for the presence of QuartzCore.h. If present
   4857         it will turn on ACCELERATED_COMPOSITING and 3D_RENDERING to enable
   4858         HW compositing on Windows. The script writes QuartzCorePresent.h to
   4859         the build directory which has a define telling whether QuartzCore is 
   4860         present.
   4861 
   4862         * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
   4863         * wtf/Platform.h:
   4864 
   4865 2009-12-11  Kent Tamura  <tkent (a] chromium.org>
   4866 
   4867         Reviewed by Darin Adler.
   4868 
   4869         Fix a problem that JSC::gregorianDateTimeToMS() returns a negative
   4870         value for a huge year value.
   4871         https://bugs.webkit.org/show_bug.cgi?id=32304
   4872 
   4873         * wtf/DateMath.cpp:
   4874         (WTF::dateToDaysFrom1970): Renamed from dateToDayInYear, and changed the return type to double.
   4875         (WTF::calculateDSTOffset): Follow the dateToDaysFrom1970() change.
   4876         (WTF::timeClip): Use maxECMAScriptTime.
   4877         (JSC::gregorianDateTimeToMS): Follow the dateToDaysFrom1970() change.
   4878 
   4879 2009-12-10  Adam Barth  <abarth (a] webkit.org>
   4880 
   4881         No review, rolling out r51975.
   4882         http://trac.webkit.org/changeset/51975
   4883 
   4884         * jit/JITStubs.cpp:
   4885         (JSC::DEFINE_STUB_FUNCTION):
   4886         * runtime/JSString.h:
   4887         (JSC::JSString::JSString):
   4888         (JSC::JSString::appendStringInConstruct):
   4889         * runtime/Operations.cpp:
   4890         (JSC::jsAddSlowCase):
   4891         * runtime/Operations.h:
   4892         (JSC::jsString):
   4893         (JSC::jsAdd):
   4894 
   4895 2009-12-10  Oliver Hunt  <oliver (a] apple.com>
   4896 
   4897         Reviewed by Gavin Barraclough.
   4898 
   4899         Incorrect caching of prototype lookup with dictionary base
   4900         https://bugs.webkit.org/show_bug.cgi?id=32402
   4901 
   4902         Make sure we don't add cached prototype lookup to the proto_list
   4903         lookup chain if the top level object is a dictionary.
   4904 
   4905         * jit/JITStubs.cpp:
   4906         (JSC::JITThunks::tryCacheGetByID):
   4907 
   4908 2009-12-10  Gavin Barraclough  <barraclough (a] apple.com>
   4909 
   4910         Reviewed by Oliver Hunt.
   4911 
   4912         https://bugs.webkit.org/show_bug.cgi?id=32400
   4913         Switch remaining cases of string addition to use ropes.
   4914 
   4915         ~1% progression on Sunspidey.
   4916 
   4917         * jit/JITStubs.cpp:
   4918         (JSC::DEFINE_STUB_FUNCTION):
   4919         * runtime/JSString.h:
   4920         (JSC::JSString::JSString):
   4921         (JSC::JSString::appendStringInConstruct):
   4922         * runtime/Operations.cpp:
   4923         (JSC::jsAddSlowCase):
   4924         * runtime/Operations.h:
   4925         (JSC::jsString):
   4926         (JSC::jsAdd):
   4927 
   4928 2009-12-10  Kent Hansen  <kent.hansen (a] nokia.com>
   4929 
   4930         Reviewed by Geoffrey Garen.
   4931 
   4932         Remove JSObject::getPropertyAttributes() and all usage of it.
   4933         https://bugs.webkit.org/show_bug.cgi?id=31933
   4934 
   4935         getOwnPropertyDescriptor() should be used instead.
   4936 
   4937         * JavaScriptCore.exp:
   4938         * JavaScriptCore.order:
   4939         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   4940         * debugger/DebuggerActivation.cpp:
   4941         (JSC::DebuggerActivation::getOwnPropertyDescriptor):
   4942         * debugger/DebuggerActivation.h:
   4943         * runtime/JSObject.cpp:
   4944         (JSC::JSObject::propertyIsEnumerable):
   4945         * runtime/JSObject.h:
   4946         * runtime/JSVariableObject.cpp:
   4947         * runtime/JSVariableObject.h:
   4948 
   4949 2009-12-10  Gavin Barraclough  <barraclough (a] apple.com>
   4950 
   4951         Reviewed by Oliver Hunt & Mark Rowe.
   4952 
   4953         https://bugs.webkit.org/show_bug.cgi?id=32367
   4954         Add support for short Ropes (up to 3 entries) inline within JSString.
   4955         (rather than externally allocating an object to hold the rope).
   4956         Switch jsAdd of (JSString* + JSString*) to now make use of Ropes.
   4957 
   4958         ~1% progression on Sunspidey.
   4959 
   4960         * interpreter/Interpreter.cpp:
   4961         (JSC::Interpreter::privateExecute):
   4962         * jit/JITOpcodes.cpp:
   4963         (JSC::JIT::privateCompileCTIMachineTrampolines):
   4964         * jit/JITStubs.cpp:
   4965         (JSC::DEFINE_STUB_FUNCTION):
   4966         * runtime/JSString.cpp:
   4967         (JSC::JSString::resolveRope):
   4968         (JSC::JSString::toBoolean):
   4969         (JSC::JSString::getStringPropertyDescriptor):
   4970         * runtime/JSString.h:
   4971         (JSC::JSString::Rope::Fiber::deref):
   4972         (JSC::JSString::Rope::Fiber::ref):
   4973         (JSC::JSString::Rope::Fiber::refAndGetLength):
   4974         (JSC::JSString::Rope::append):
   4975         (JSC::JSString::JSString):
   4976         (JSC::JSString::~JSString):
   4977         (JSC::JSString::value):
   4978         (JSC::JSString::tryGetValue):
   4979         (JSC::JSString::length):
   4980         (JSC::JSString::canGetIndex):
   4981         (JSC::JSString::appendStringInConstruct):
   4982         (JSC::JSString::appendValueInConstructAndIncrementLength):
   4983         (JSC::JSString::isRope):
   4984         (JSC::JSString::string):
   4985         (JSC::JSString::ropeLength):
   4986         (JSC::JSString::getStringPropertySlot):
   4987         * runtime/Operations.h:
   4988         (JSC::jsString):
   4989         (JSC::jsAdd):
   4990         (JSC::resolveBase):
   4991 
   4992 2009-12-09  Anders Carlsson  <andersca (a] apple.com>
   4993 
   4994         Reviewed by Geoffrey Garen.
   4995 
   4996         Fix three more things found by compiling with clang++.
   4997         
   4998         * runtime/Structure.h:
   4999         (JSC::StructureTransitionTable::reifySingleTransition):
   5000         Add the 'std' qualifier to the call to make_pair.
   5001 
   5002         * wtf/DateMath.cpp:
   5003         (WTF::initializeDates):
   5004         Incrementing a bool is deprecated according to the C++ specification.
   5005         
   5006         * wtf/PtrAndFlags.h:
   5007         (WTF::PtrAndFlags::PtrAndFlags):
   5008         Name lookup should not be done in dependent bases, so explicitly qualify the call to set.
   5009 
   5010 2009-12-09  Maciej Stachowiak  <mjs (a] apple.com>
   5011 
   5012         Reviewed by Oliver Hunt.
   5013 
   5014         Google reader gets stuck in the "Loading..." state and does not complete
   5015         https://bugs.webkit.org/show_bug.cgi?id=32256
   5016         <rdar://problem/7456388>
   5017 
   5018         * jit/JITArithmetic.cpp:
   5019         (JSC::JIT::emitSlow_op_jless): Fix some backward branches.
   5020 
   5021 2009-12-09  Gavin Barraclough  <barraclough (a] apple.com>
   5022 
   5023         Reviewed by Oliver Hunt.
   5024 
   5025         https://bugs.webkit.org/show_bug.cgi?id=32228
   5026         Make destruction of ropes non-recursive to prevent stack exhaustion.
   5027         Also, pass a UString& into initializeFiber rather than a Ustring::Rep*,
   5028         since the Rep is not being ref counted this could result in usage of a
   5029         Rep with refcount zero (where the Rep comes from a temporary UString
   5030         returned from a function).
   5031 
   5032         * runtime/JSString.cpp:
   5033         (JSC::JSString::Rope::destructNonRecursive):
   5034         (JSC::JSString::Rope::~Rope):
   5035         * runtime/JSString.h:
   5036         (JSC::JSString::Rope::initializeFiber):
   5037         * runtime/Operations.h:
   5038         (JSC::concatenateStrings):
   5039 
   5040 2009-12-09  Zoltan Herczeg  <zherczeg (a] inf.u-szeged.hu>
   5041 
   5042         Reviewed by Eric Seidel.
   5043 
   5044         https://bugs.webkit.org/show_bug.cgi?id=31930
   5045 
   5046         Update to r51457. ASSERTs changed to COMPILE_ASSERTs.
   5047         The speedup is 25%.
   5048 
   5049         * runtime/JSGlobalData.cpp:
   5050         (JSC::VPtrSet::VPtrSet):
   5051 
   5052 2009-12-09  Steve Block  <steveblock (a] google.com>
   5053 
   5054         Reviewed by Adam Barth.
   5055 
   5056         Updates Android Makefiles with latest additions.
   5057         https://bugs.webkit.org/show_bug.cgi?id=32278
   5058 
   5059         * Android.mk: Modified.
   5060         * Android.v8.wtf.mk: Modified.
   5061 
   5062 2009-12-09  Sam Weinig  <sam (a] webkit.org>
   5063 
   5064         Reviewed by Gavin Barraclough.
   5065 
   5066         Fix a bug found while trying to compile JavaScriptCore with clang++.
   5067 
   5068         * yarr/RegexPattern.h:
   5069         (JSC::Yarr::PatternTerm::PatternTerm): Don't self assign here.  Use false instead.
   5070 
   5071 2009-12-09  Anders Carlsson  <andersca (a] apple.com>
   5072 
   5073         Reviewed by Sam Weinig.
   5074 
   5075         Attempt to fix the Windows build.
   5076         
   5077         * wtf/FastMalloc.h:
   5078 
   5079 2009-12-09  Anders Carlsson  <andersca (a] apple.com>
   5080 
   5081         Reviewed by Sam Weinig.
   5082 
   5083         Fix some things found while trying to compile JavaScriptCore with clang++.
   5084 
   5085         * wtf/FastMalloc.h:
   5086         Add correct exception specifications for the allocation/deallocation operators.
   5087         
   5088         * wtf/Vector.h:
   5089         * wtf/VectorTraits.h:
   5090         Fix a bunch of struct/class mismatches.
   5091 
   5092 2009-12-08  Maciej Stachowiak  <mjs (a] apple.com>
   5093 
   5094         Reviewed by Darin Adler.
   5095 
   5096         move code generation portions of Nodes.cpp to bytecompiler directory
   5097         https://bugs.webkit.org/show_bug.cgi?id=32284
   5098 
   5099         * bytecompiler/NodesCodegen.cpp: Copied from parser/Nodes.cpp. Removed parts that
   5100         are not about codegen.
   5101         * parser/Nodes.cpp: Removed everything that is about codegen.
   5102 
   5103         Update build systems:
   5104         
   5105         * Android.mk:
   5106         * GNUmakefile.am:
   5107         * JavaScriptCore.gypi:
   5108         * JavaScriptCore.pri:
   5109         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
   5110         * JavaScriptCore.xcodeproj/project.pbxproj:
   5111         * JavaScriptCoreSources.bkl:
   5112 
   5113 2009-12-08  Kevin Watters  <kevinwatters (a] gmail.com>
   5114 
   5115         Reviewed by Kevin Ollivier.
   5116 
   5117         [wx] Mac plugins support.
   5118         
   5119         https://bugs.webkit.org/show_bug.cgi?id=32236
   5120 
   5121         * wtf/Platform.h:
   5122 
   5123 2009-12-08  Dmitry Titov  <dimich (a] chromium.org>
   5124 
   5125         Rubber-stamped by David Levin.
   5126 
   5127         Revert and reopen "Add asserts to RefCounted to make sure ref/deref happens on the right thread."
   5128         It may have caused massive increase of reported leaks on the bots.
   5129         https://bugs.webkit.org/show_bug.cgi?id=31639
   5130 
   5131         * GNUmakefile.am:
   5132         * JavaScriptCore.gypi:
   5133         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
   5134         * JavaScriptCore.xcodeproj/project.pbxproj:
   5135         * runtime/Structure.cpp:
   5136         (JSC::Structure::Structure):
   5137         * wtf/RefCounted.h:
   5138         (WTF::RefCountedBase::ref):
   5139         (WTF::RefCountedBase::hasOneRef):
   5140         (WTF::RefCountedBase::refCount):
   5141         (WTF::RefCountedBase::derefBase):
   5142         * wtf/ThreadVerifier.h: Removed.
   5143 
   5144 2009-12-08  Gustavo Noronha Silva  <gustavo.noronha (a] collabora.co.uk>
   5145 
   5146         Reviewed by Darin Adler.
   5147 
   5148         Make WebKit build correctly on FreeBSD, IA64, and Alpha.
   5149         Based on work by Petr Salinger <Petr.Salinger (a] seznam.cz>,
   5150         and Colin Watson <cjwatson (a] ubuntu.com>.
   5151 
   5152         * wtf/Platform.h:
   5153 
   5154 2009-12-08  Dmitry Titov  <dimich (a] chromium.org>
   5155 
   5156         Reviewed by Darin Adler.
   5157 
   5158         Add asserts to RefCounted to make sure ref/deref happens on the right thread.
   5159         https://bugs.webkit.org/show_bug.cgi?id=31639
   5160 
   5161         * runtime/Structure.cpp:
   5162         (JSC::Structure::Structure): Disable thread verification on this class since it uses addressOfCount().
   5163         * wtf/RefCounted.h:
   5164         (WTF::RefCountedBase::ref): Add ASSERT.
   5165         (WTF::RefCountedBase::hasOneRef): Ditto.
   5166         (WTF::RefCountedBase::refCount): Ditto.
   5167         (WTF::RefCountedBase::derefBase): Ditto.
   5168         (WTF::RefCountedBase::disableThreadVerification): delegate to ThreadVerifier method.
   5169         * wtf/ThreadVerifier.h: Added.
   5170         (WTF::ThreadVerifier::ThreadVerifier): New Debug-only class to verify that ref/deref of RefCounted is done on the same thread.
   5171         (WTF::ThreadVerifier::activate): Activates checks. Called when ref count becomes above 2.
   5172         (WTF::ThreadVerifier::deactivate): Deactivates checks. Called when ref count drops below 2.
   5173         (WTF::ThreadVerifier::disableThreadVerification): used on objects that should not be checked (StringImpl etc)
   5174         (WTF::ThreadVerifier::verifyThread):
   5175         * GNUmakefile.am: Add ThreadVerifier.h to the build file.
   5176         * JavaScriptCore.gypi: Ditto.
   5177         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
   5178         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
   5179 
   5180 2009-12-08  Steve Block  <steveblock (a] google.com>
   5181 
   5182         Reviewed by Adam Barth.
   5183 
   5184         [Android] Adds Makefiles for Android port.
   5185         https://bugs.webkit.org/show_bug.cgi?id=31325
   5186 
   5187         * Android.mk: Added.
   5188         * Android.v8.wtf.mk: Added.
   5189 
   5190 2009-12-07  Dmitry Titov  <dimich (a] chromium.org>
   5191 
   5192         Rubber-stamped by Darin Adler.
   5193 
   5194         Remove ENABLE_SHARED_SCRIPT flags
   5195         https://bugs.webkit.org/show_bug.cgi?id=32245
   5196         This patch was obtained by "git revert" command and then un-reverting of ChangeLog files.
   5197 
   5198         * Configurations/FeatureDefines.xcconfig:
   5199         * wtf/Platform.h:
   5200 
   5201 2009-12-07  Gavin Barraclough  <barraclough (a] apple.com>
   5202 
   5203         Reviewed by NOBODY (Windows build fixage part I).
   5204 
   5205         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   5206 
   5207 2009-12-05  Gavin Barraclough  <barraclough (a] apple.com>
   5208 
   5209         Reviewed by Oliver Hunt.
   5210 
   5211         https://bugs.webkit.org/show_bug.cgi?id=32184
   5212         Handle out-of-memory conditions with JSC Ropes with a JS exception, rather than crashing.
   5213         Switch from using fastMalloc to tryFastMalloc, pass an ExecState to record the exception on.
   5214 
   5215         * API/JSCallbackObjectFunctions.h:
   5216         (JSC::::toString):
   5217         * API/JSValueRef.cpp:
   5218         (JSValueIsStrictEqual):
   5219         * JavaScriptCore.exp:
   5220         * bytecompiler/BytecodeGenerator.cpp:
   5221         (JSC::BytecodeGenerator::emitEqualityOp):
   5222         * debugger/DebuggerCallFrame.cpp:
   5223         (JSC::DebuggerCallFrame::functionName):
   5224         (JSC::DebuggerCallFrame::calculatedFunctionName):
   5225         * interpreter/Interpreter.cpp:
   5226         (JSC::Interpreter::callEval):
   5227         (JSC::Interpreter::privateExecute):
   5228         * jit/JITStubs.cpp:
   5229         (JSC::DEFINE_STUB_FUNCTION):
   5230         * profiler/ProfileGenerator.cpp:
   5231         (JSC::ProfileGenerator::addParentForConsoleStart):
   5232         * profiler/Profiler.cpp:
   5233         (JSC::Profiler::willExecute):
   5234         (JSC::Profiler::didExecute):
   5235         (JSC::Profiler::createCallIdentifier):
   5236         (JSC::createCallIdentifierFromFunctionImp):
   5237         * profiler/Profiler.h:
   5238         * runtime/ArrayPrototype.cpp:
   5239         (JSC::arrayProtoFuncIndexOf):
   5240         (JSC::arrayProtoFuncLastIndexOf):
   5241         * runtime/DateConstructor.cpp:
   5242         (JSC::constructDate):
   5243         * runtime/FunctionPrototype.cpp:
   5244         (JSC::functionProtoFuncToString):
   5245         * runtime/InternalFunction.cpp:
   5246         (JSC::InternalFunction::name):
   5247         (JSC::InternalFunction::displayName):
   5248         (JSC::InternalFunction::calculatedDisplayName):
   5249         * runtime/InternalFunction.h:
   5250         * runtime/JSCell.cpp:
   5251         (JSC::JSCell::getString):
   5252         * runtime/JSCell.h:
   5253         (JSC::JSValue::getString):
   5254         * runtime/JSONObject.cpp:
   5255         (JSC::gap):
   5256         (JSC::Stringifier::Stringifier):
   5257         (JSC::Stringifier::appendStringifiedValue):
   5258         * runtime/JSObject.cpp:
   5259         (JSC::JSObject::putDirectFunction):
   5260         (JSC::JSObject::putDirectFunctionWithoutTransition):
   5261         (JSC::JSObject::defineOwnProperty):
   5262         * runtime/JSObject.h:
   5263         * runtime/JSPropertyNameIterator.cpp:
   5264         (JSC::JSPropertyNameIterator::get):
   5265         * runtime/JSString.cpp:
   5266         (JSC::JSString::Rope::~Rope):
   5267         (JSC::JSString::resolveRope):
   5268         (JSC::JSString::getPrimitiveNumber):
   5269         (JSC::JSString::toNumber):
   5270         (JSC::JSString::toString):
   5271         (JSC::JSString::toThisString):
   5272         (JSC::JSString::getStringPropertyDescriptor):
   5273         * runtime/JSString.h:
   5274         (JSC::JSString::Rope::createOrNull):
   5275         (JSC::JSString::Rope::operator new):
   5276         (JSC::JSString::value):
   5277         (JSC::JSString::tryGetValue):
   5278         (JSC::JSString::getIndex):
   5279         (JSC::JSString::getStringPropertySlot):
   5280         (JSC::JSValue::toString):
   5281         * runtime/JSValue.h:
   5282         * runtime/NativeErrorConstructor.cpp:
   5283         (JSC::NativeErrorConstructor::NativeErrorConstructor):
   5284         * runtime/Operations.cpp:
   5285         (JSC::JSValue::strictEqualSlowCase):
   5286         * runtime/Operations.h:
   5287         (JSC::JSValue::equalSlowCaseInline):
   5288         (JSC::JSValue::strictEqualSlowCaseInline):
   5289         (JSC::JSValue::strictEqual):
   5290         (JSC::jsLess):
   5291         (JSC::jsLessEq):
   5292         (JSC::jsAdd):
   5293         (JSC::concatenateStrings):
   5294         * runtime/PropertyDescriptor.cpp:
   5295         (JSC::PropertyDescriptor::equalTo):
   5296         * runtime/PropertyDescriptor.h:
   5297         * runtime/StringPrototype.cpp:
   5298         (JSC::stringProtoFuncReplace):
   5299         (JSC::stringProtoFuncToLowerCase):
   5300         (JSC::stringProtoFuncToUpperCase):
   5301 
   5302 2009-12-07  Nikolas Zimmermann  <nzimmermann (a] rim.com>
   5303 
   5304         Reviewed by Holger Freyther.
   5305 
   5306         Turn on (SVG) Filters support, by default.
   5307         https://bugs.webkit.org/show_bug.cgi?id=32224
   5308 
   5309         * Configurations/FeatureDefines.xcconfig: Enable FILTERS build flag.
   5310 
   5311 2009-12-07  Steve Falkenburg  <sfalken (a] apple.com>
   5312 
   5313         Build fix. Be flexible about which version of ICU is used on Windows.
   5314 
   5315         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Add optional xcopy commands to copy ICU 4.2.
   5316 
   5317 2009-12-07  Maciej Stachowiak  <mjs (a] apple.com>
   5318 
   5319         Reviewed by Oliver Hunt.
   5320 
   5321         op_loop_if_less JIT codegen is broken for 64-bit
   5322         https://bugs.webkit.org/show_bug.cgi?id=32221
   5323 
   5324         * jit/JITOpcodes.cpp:
   5325         (JSC::JIT::emit_op_loop_if_false): Fix codegen in this version - test was backwards.
   5326 
   5327 2009-12-07  Oliver Hunt  <oliver (a] apple.com>
   5328 
   5329         Reviewed by Maciej Stachowiak.
   5330 
   5331         Object.create fails if properties on the descriptor are getters
   5332         https://bugs.webkit.org/show_bug.cgi?id=32219
   5333 
   5334         Correctly initialise the PropertySlots with the descriptor object.
   5335 
   5336         * runtime/ObjectConstructor.cpp:
   5337         (JSC::toPropertyDescriptor):
   5338 
   5339 2009-12-06  Maciej Stachowiak  <mjs (a] apple.com>
   5340 
   5341         Not reviewed, build fix.
   5342 
   5343         Actually tested 64-bit *and* 32-bit build this time.
   5344 
   5345         * jit/JITOpcodes.cpp:
   5346         (JSC::JIT::emit_op_loop_if_false):
   5347 
   5348 2009-12-06  Maciej Stachowiak  <mjs (a] apple.com>
   5349 
   5350         Not reviewed, build fix.
   5351 
   5352         Really really fix 64-bit build for prior patch (actually tested this time).
   5353 
   5354         * jit/JITOpcodes.cpp:
   5355         (JSC::JIT::emit_op_loop_if_false):
   5356         (JSC::JIT::emitSlow_op_loop_if_false):
   5357 
   5358 2009-12-06  Maciej Stachowiak  <mjs (a] apple.com>
   5359 
   5360         Not reviewed, build fix.
   5361 
   5362         Really fix 64-bit build for prior patch.
   5363 
   5364         * jit/JITArithmetic.cpp:
   5365         (JSC::JIT::emitSlow_op_jless):
   5366 
   5367 2009-12-06  Maciej Stachowiak  <mjs (a] apple.com>
   5368 
   5369         Not reviewed, build fix.
   5370 
   5371         Fix 64-bit build for prior patch.
   5372 
   5373         * jit/JITOpcodes.cpp:
   5374         (JSC::JIT::emitSlow_op_loop_if_less):
   5375 
   5376 2009-12-05  Maciej Stachowiak  <mjs (a] apple.com>
   5377 
   5378         Reviewed by Oliver Hunt.
   5379 
   5380         conway benchmark spends half it's time in op_less (jump fusion fails)
   5381         https://bugs.webkit.org/show_bug.cgi?id=32190
   5382 
   5383         <1% speedup on SunSpider and V8
   5384         2x speedup on "conway" benchmark
   5385         
   5386         Two optimizations:
   5387         1) Improve codegen for logical operators &&, || and ! in a condition context
   5388         
   5389         When generating code for combinations of &&, || and !, in a
   5390         condition context (i.e. in an if statement or loop condition), we
   5391         used to produce a value, and then separately jump based on its
   5392         truthiness. Now we pass the false and true targets in, and let the
   5393         logical operators generate jumps directly. This helps in four
   5394         ways:
   5395 
   5396         a) Individual clauses of a short-circuit logical operator can now
   5397         jump directly to the then or else clause of an if statement (or to
   5398         the top or exit of a loop) instead of jumping to a jump.
   5399         
   5400         b) It used to be that jump fusion with the condition of the first
   5401         clause of a logical operator was inhibited, because the register
   5402         was ref'd to be used later, in the actual condition jump; this no
   5403         longer happens since a jump straight to the final target is
   5404         generated directly.
   5405 
   5406         c) It used to be that jump fusion with the condition of the second
   5407         clause of a logical operator was inhibited, because there was a
   5408         jump target right after the second clause and before the actual
   5409         condition jump. But now it's no longer necessary for the first
   5410         clause to jump there so jump fusion is not blocked.
   5411 
   5412         d) We avoid generating excess mov statements in some cases.
   5413         
   5414         As a concrete example this source:
   5415         
   5416         if (!((x < q && y < q) || (t < q && z < q))) {
   5417             // ...
   5418         }
   5419         
   5420         Used to generate this bytecode:
   5421         
   5422         [  34] less              r1, r-15, r-19
   5423         [  38] jfalse            r1, 7(->45)
   5424         [  41] less              r1, r-16, r-19
   5425         [  45] jtrue             r1, 14(->59)
   5426         [  48] less              r1, r-17, r-19
   5427         [  52] jfalse            r1, 7(->59)
   5428         [  55] less              r1, r-18, r-19
   5429         [  59] jtrue             r1, 17(->76)
   5430         
   5431         And now generates this bytecode (also taking advantage of the second optimization below):
   5432         
   5433         [  34] jnless            r-15, r-19, 8(->42)
   5434         [  38] jless             r-16, r-19, 26(->64)
   5435         [  42] jnless            r-17, r-19, 8(->50)
   5436         [  46] jless             r-18, r-19, 18(->64)
   5437         
   5438         Note the jump fusion and the fact that there's less jump
   5439         indirection - three of the four jumps go straight to the target
   5440         clause instead of indirecting through another jump.
   5441         
   5442         2) Implement jless opcode to take advantage of the above, since we'll now often generate
   5443         a less followed by a jtrue where fusion is not forbidden.
   5444        
   5445         * parser/Nodes.h:
   5446         (JSC::ExpressionNode::hasConditionContextCodegen): Helper function to determine
   5447         whether a node supports special conditional codegen. Return false as this is the default.
   5448         (JSC::ExpressionNode::emitBytecodeInConditionContext): Assert not reached - only really
   5449         defined for nodes that do have conditional codegen.
   5450         (JSC::UnaryOpNode::expr): Add const version.
   5451         (JSC::LogicalNotNode::hasConditionContextCodegen): Returne true only if subexpression
   5452         supports it.
   5453         (JSC::LogicalOpNode::hasConditionContextCodegen): Return true.
   5454         * parser/Nodes.cpp:
   5455         (JSC::LogicalNotNode::emitBytecodeInConditionContext): Implemented - just swap
   5456         the true and false targets for the child node.
   5457         (JSC::LogicalOpNode::emitBytecodeInConditionContext): Implemented - handle jumps
   5458         directly, improving codegen quality. Also handles further nested conditional codegen.
   5459         (JSC::ConditionalNode::emitBytecode): Use condition context codegen when available.
   5460         (JSC::IfNode::emitBytecode): ditto
   5461         (JSC::IfElseNode::emitBytecode): ditto
   5462         (JSC::DoWhileNode::emitBytecode): ditto
   5463         (JSC::WhileNode::emitBytecode): ditto
   5464         (JSC::ForNode::emitBytecode): ditto
   5465 
   5466         * bytecode/Opcode.h: 
   5467         - Added loop_if_false opcode - needed now that falsey jumps can be backwards.
   5468         - Added jless opcode to take advantage of new fusion opportunities.
   5469         * bytecode/CodeBlock.cpp:
   5470         (JSC::CodeBlock::dump): Handle above.
   5471         * bytecompiler/BytecodeGenerator.cpp:
   5472         (JSC::BytecodeGenerator::emitJumpIfTrue): Add peephole for less + jtrue ==> jless.
   5473         (JSC::BytecodeGenerator::emitJumpIfFalse): Add handling of backwrds falsey jumps.
   5474         * bytecompiler/BytecodeGenerator.h:
   5475         (JSC::BytecodeGenerator::emitNodeInConditionContext): Wrapper to handle tracking of
   5476         overly deep expressions etc.
   5477         * interpreter/Interpreter.cpp:
   5478         (JSC::Interpreter::privateExecute): Implement the two new opcodes (loop_if_false, jless).
   5479         * jit/JIT.cpp:
   5480         (JSC::JIT::privateCompileMainPass): Implement JIT support for the two new opcodes.
   5481         (JSC::JIT::privateCompileSlowCases): ditto
   5482         * jit/JIT.h:
   5483         * jit/JITArithmetic.cpp:
   5484         (JSC::JIT::emit_op_jless):
   5485         (JSC::JIT::emitSlow_op_jless): ditto
   5486         (JSC::JIT::emitBinaryDoubleOp): ditto
   5487         * jit/JITOpcodes.cpp:
   5488         (JSC::JIT::emitSlow_op_loop_if_less): ditto
   5489         (JSC::JIT::emit_op_loop_if_false): ditto
   5490         (JSC::JIT::emitSlow_op_loop_if_false): ditto
   5491         * jit/JITStubs.cpp:
   5492         * jit/JITStubs.h:
   5493         (JSC::):
   5494 
   5495 2009-12-04  Kent Hansen  <kent.hansen (a] nokia.com>
   5496 
   5497         Reviewed by Darin Adler.
   5498 
   5499         JavaScript delete operator should return false for string properties
   5500         https://bugs.webkit.org/show_bug.cgi?id=32012
   5501 
   5502         * runtime/StringObject.cpp:
   5503         (JSC::StringObject::deleteProperty):
   5504 
   5505 2009-12-03  Drew Wilson  <atwilson (a] chromium.org>
   5506 
   5507         Rolled back r51633 because it causes a perf regression in Chromium.
   5508 
   5509         * wtf/Platform.h:
   5510 
   5511 2009-12-03  Gavin Barraclough  <barraclough (a] apple.com>
   5512 
   5513         Try and fix the Windows build.
   5514 
   5515         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:  Export a symbol that should be exported.
   5516 
   5517 2009-12-03  Mark Rowe  <mrowe (a] apple.com>
   5518 
   5519         Try and fix the Mac build.
   5520 
   5521         * JavaScriptCore.exp:  Export a symbol that should be exported.
   5522 
   5523 2009-12-03  Oliver Hunt  <oliver (a] apple.com>
   5524 
   5525         Reviewed by Gavin Barraclough.
   5526 
   5527         REGRESSION(4.0.3-48777): Crash in JSC::ExecState::propertyNames() (Debug-only?)
   5528         https://bugs.webkit.org/show_bug.cgi?id=32133
   5529 
   5530         Work around odd GCC-ism and correct the scopechain for use by
   5531         calls made while a cachedcall is active on the callstack.
   5532 
   5533         * interpreter/CachedCall.h:
   5534         (JSC::CachedCall::newCallFrame):
   5535         * runtime/JSArray.cpp:
   5536         (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
   5537         * runtime/StringPrototype.cpp:
   5538         (JSC::stringProtoFuncReplace):
   5539 
   5540 2009-12-03  Gavin Barraclough  <barraclough (a] apple.com>
   5541 
   5542         Reviewed by Oliver "Brraaaaiiiinnnnnzzzzzzzz" Hunt.
   5543 
   5544         https://bugs.webkit.org/show_bug.cgi?id=32136
   5545         Add a rope representation to JSString.  Presently JSString always holds its data in UString form.
   5546         Instead, allow the result of a string concatenation to be represented in a tree form - with a
   5547         variable sized, reference-counted rope node retaining a set of UString::Reps (or other rope nopes).
   5548 
   5549         Strings must still currently be resolved down to a flat UString representation before being used,
   5550         but by holding the string in a rope representation during construction we can avoid copying data
   5551         until we know the final size of the string.
   5552 
   5553         ~2% progression on SunSpider (~25% on date-format-xparb, ~20% on string-validate-input).
   5554 
   5555         * JavaScriptCore.exp:
   5556 
   5557             - Update exports.
   5558 
   5559         * interpreter/Interpreter.cpp:
   5560         (JSC::Interpreter::privateExecute):
   5561 
   5562             - Make use of new JSString::length() method to avoid prematurely resolving ropes.
   5563 
   5564         * jit/JITOpcodes.cpp:
   5565         (JSC::JIT::privateCompileCTIMachineTrampolines):
   5566 
   5567             - Switch the string length trampoline to read the length directly from JSString::m_length,
   5568               rather than from the JSString's UString::Rep's 'len' property.
   5569 
   5570         * jit/JITStubs.cpp:
   5571         (JSC::DEFINE_STUB_FUNCTION):
   5572 
   5573             - Modify op_add such that addition of two strings, where either or both strings are already
   5574               in rope representation, produces a rope as a result.
   5575 
   5576         * runtime/JSString.cpp:
   5577         (JSC::JSString::Rope::~Rope):
   5578         (JSC::copyChars):
   5579         (JSC::JSString::resolveRope):
   5580         (JSC::JSString::getPrimitiveNumber):
   5581         (JSC::JSString::toBoolean):
   5582         (JSC::JSString::toNumber):
   5583         (JSC::JSString::toString):
   5584         (JSC::JSString::toThisString):
   5585         (JSC::JSString::getStringPropertyDescriptor):
   5586         * runtime/JSString.h:
   5587         (JSC::JSString::Rope::Fiber::Fiber):
   5588         (JSC::JSString::Rope::Fiber::destroy):
   5589         (JSC::JSString::Rope::Fiber::isRope):
   5590         (JSC::JSString::Rope::Fiber::rope):
   5591         (JSC::JSString::Rope::Fiber::string):
   5592         (JSC::JSString::Rope::create):
   5593         (JSC::JSString::Rope::initializeFiber):
   5594         (JSC::JSString::Rope::ropeLength):
   5595         (JSC::JSString::Rope::stringLength):
   5596         (JSC::JSString::Rope::fibers):
   5597         (JSC::JSString::Rope::Rope):
   5598         (JSC::JSString::Rope::operator new):
   5599         (JSC::JSString::JSString):
   5600         (JSC::JSString::value):
   5601         (JSC::JSString::length):
   5602         (JSC::JSString::isRope):
   5603         (JSC::JSString::rope):
   5604         (JSC::JSString::string):
   5605         (JSC::JSString::canGetIndex):
   5606         (JSC::jsSingleCharacterSubstring):
   5607         (JSC::JSString::getIndex):
   5608         (JSC::jsSubstring):
   5609         (JSC::JSString::getStringPropertySlot):
   5610 
   5611             - Add rope form.
   5612 
   5613         * runtime/Operations.h:
   5614         (JSC::jsAdd):
   5615         (JSC::concatenateStrings):
   5616 
   5617             - Update string concatenation, and addition of ropes, to produce ropes.
   5618 
   5619         * runtime/StringObject.cpp:
   5620         (JSC::StringObject::getOwnPropertyNames):
   5621 
   5622             - Make use of new JSString::length() method to avoid prematurely resolving ropes.
   5623 
   5624 2009-11-23  Jeremy Moskovich  <jeremy (a] chromium.org>
   5625 
   5626         Reviewed by Eric Seidel.
   5627 
   5628         Switch Chrome/Mac to use Core Text APIs rather than ATSUI APIs.
   5629         https://bugs.webkit.org/show_bug.cgi?id=31802
   5630 
   5631         No test since this is already covered by existing pixel tests.
   5632 
   5633         * wtf/Platform.h: #define USE_CORE_TEXT for Chrome/Mac.
   5634 
   5635 2009-12-02  Oliver Hunt  <oliver (a] apple.com>
   5636 
   5637         Reviewed by Gavin Barraclough.
   5638 
   5639         Add files missed in prior patch.
   5640 
   5641         * runtime/JSZombie.cpp:
   5642         (JSC::):
   5643         (JSC::JSZombie::leakedZombieStructure):
   5644         * runtime/JSZombie.h: Added.
   5645         (JSC::JSZombie::JSZombie):
   5646         (JSC::JSZombie::isZombie):
   5647         (JSC::JSZombie::classInfo):
   5648         (JSC::JSZombie::isGetterSetter):
   5649         (JSC::JSZombie::isAPIValueWrapper):
   5650         (JSC::JSZombie::isPropertyNameIterator):
   5651         (JSC::JSZombie::getCallData):
   5652         (JSC::JSZombie::getConstructData):
   5653         (JSC::JSZombie::getUInt32):
   5654         (JSC::JSZombie::toPrimitive):
   5655         (JSC::JSZombie::getPrimitiveNumber):
   5656         (JSC::JSZombie::toBoolean):
   5657         (JSC::JSZombie::toNumber):
   5658         (JSC::JSZombie::toString):
   5659         (JSC::JSZombie::toObject):
   5660         (JSC::JSZombie::markChildren):
   5661         (JSC::JSZombie::put):
   5662         (JSC::JSZombie::deleteProperty):
   5663         (JSC::JSZombie::toThisObject):
   5664         (JSC::JSZombie::toThisString):
   5665         (JSC::JSZombie::toThisJSString):
   5666         (JSC::JSZombie::getJSNumber):
   5667         (JSC::JSZombie::getOwnPropertySlot):
   5668 
   5669 2009-12-02  Oliver Hunt  <oliver (a] apple.com>
   5670 
   5671         Reviewed by Gavin Barraclough.
   5672 
   5673         Add zombies to JSC
   5674         https://bugs.webkit.org/show_bug.cgi?id=32103
   5675 
   5676         Add a compile time flag to make the JSC collector replace "unreachable"
   5677         objects with zombie objects.  The zombie object is a JSCell subclass that
   5678         ASSERTs on any attempt to use the JSCell methods.  In addition there are
   5679         a number of additional assertions in bottleneck code to catch zombie usage
   5680         as quickly as possible.
   5681 
   5682         Grrr. Argh. Brains.
   5683 
   5684         * JavaScriptCore.xcodeproj/project.pbxproj:
   5685         * interpreter/Register.h:
   5686         (JSC::Register::Register):
   5687         * runtime/ArgList.h:
   5688         (JSC::MarkedArgumentBuffer::append):
   5689         (JSC::ArgList::ArgList):
   5690         * runtime/Collector.cpp:
   5691         (JSC::Heap::destroy):
   5692         (JSC::Heap::sweep):
   5693         * runtime/Collector.h:
   5694         * runtime/JSCell.h:
   5695         (JSC::JSCell::isZombie):
   5696         (JSC::JSValue::isZombie):
   5697         * runtime/JSValue.h:
   5698         (JSC::JSValue::decode):
   5699         (JSC::JSValue::JSValue):
   5700         * wtf/Platform.h:
   5701 
   5702 2009-12-01  Jens Alfke  <snej (a] chromium.org>
   5703 
   5704         Reviewed by Darin Adler.
   5705 
   5706         Added variants of find/contains/add that allow a foreign key type to be used.
   5707         This will allow AtomicString-keyed maps to be queried by C string without
   5708         having to create a temporary AtomicString (see HTTPHeaderMap.)
   5709         The code for this is adapted from the equivalent in HashSet.h.
   5710 
   5711         * wtf/HashMap.h:
   5712         (WTF::HashMap::find):
   5713         (WTF::HashMap::contains):
   5714         (WTF::HashMap::add):
   5715         * wtf/HashSet.h: Changed "method" to "function member" in a comment.
   5716 
   5717 2009-12-01  Gustavo Noronha Silva  <gustavo.noronha (a] collabora.co.uk>
   5718 
   5719         Revert 51551 because it broke GTK+.
   5720 
   5721         * wtf/Platform.h:
   5722 
   5723 2009-11-30  Gavin Barraclough  <barraclough (a] apple.com>
   5724 
   5725         Windows Build fix.  Reviewed by NOBODY.
   5726 
   5727         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   5728 
   5729 2009-11-24  Gavin Barraclough  <barraclough (a] apple.com>
   5730 
   5731         Reviewed by Geoff Garen.
   5732 
   5733         Bug 31859 - Make world selection for JSC IsolatedWorlds automagical.
   5734 
   5735         WebCore presently has to explicitly specify the world before entering into JSC,
   5736         which is a little fragile (particularly since property access via a
   5737         getter/setter might invoke execution). Instead derive the current world from
   5738         the lexical global object.
   5739         
   5740         Remove the temporary duct tape of willExecute/didExecute virtual hooks on the JSGlobalData::ClientData - these are no longer necessary.
   5741 
   5742         * API/JSBase.cpp:
   5743         (JSEvaluateScript):
   5744         * API/JSObjectRef.cpp:
   5745         (JSObjectCallAsFunction):
   5746         * JavaScriptCore.exp:
   5747         * runtime/JSGlobalData.cpp:
   5748         * runtime/JSGlobalData.h:
   5749 
   5750 2009-11-30  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   5751 
   5752         Reviewed by Kenneth Rohde Christiansen.
   5753 
   5754         [Qt] Remove obsolete PLATFORM(KDE) code
   5755         https://bugs.webkit.org/show_bug.cgi?id=31958
   5756 
   5757         KDE is now using unpatched QtWebKit.
   5758 
   5759         * parser/Lexer.cpp: Remove obsolete KDE_USE_FINAL guard
   5760         * wtf/Platform.h: Remove PLATFORM(KDE) definition and code 
   5761         section that is guarded with it.
   5762 
   5763 2009-11-30  Jan-Arve Sther  <jan-arve.saether (a] nokia.com>
   5764 
   5765         Reviewed by Simon Hausmann.
   5766 
   5767         [Qt] Fix compilation with win32-icc
   5768 
   5769         The Intel compiler does not support the __has_trivial_constructor type
   5770         trait.  The Intel Compiler can report itself as _MSC_VER >= 1400. The
   5771         reason for that is that the Intel Compiler depends on the Microsoft
   5772         Platform SDK, and in order to try to be "fully" MS compatible it will
   5773         "pretend" to be the same MS compiler as was shipped with the MS PSDK.
   5774         (Thus, compiling with win32-icc with VC8 SDK will make the source code
   5775         "think" the compiler at hand supports this type trait).
   5776 
   5777         * wtf/TypeTraits.h:
   5778 
   5779 2009-11-29  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   5780 
   5781         Reviewed by Eric Seidel.
   5782 
   5783         [Qt] Mac build has JIT disabled
   5784         https://bugs.webkit.org/show_bug.cgi?id=31828
   5785 
   5786         * wtf/Platform.h: Enable JIT for Qt Mac builds
   5787 
   5788 2009-11-28  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   5789 
   5790         Reviewed by Eric Seidel.
   5791 
   5792         Apply workaround for the limitation of VirtualFree with MEM_RELEASE to all ports running on Windows
   5793         https://bugs.webkit.org/show_bug.cgi?id=31943
   5794 
   5795         * runtime/MarkStack.h:
   5796         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
   5797 
   5798 2009-11-28  Zoltan Herczeg  <zherczeg (a] inf.u-szeged.hu>
   5799 
   5800         Reviewed by Gavin Barraclough.
   5801 
   5802         https://bugs.webkit.org/show_bug.cgi?id=31930
   5803 
   5804         Seems a typo. We don't need ~270k memory to determine the vptrs.
   5805 
   5806         * runtime/JSGlobalData.cpp:
   5807         (JSC::VPtrSet::VPtrSet):
   5808 
   5809 2009-11-27  Shinichiro Hamaji  <hamaji (a] chromium.org>
   5810 
   5811         Unreviewed. 
   5812 
   5813         Move GOwnPtr* from wtf to wtf/gtk
   5814         https://bugs.webkit.org/show_bug.cgi?id=31793
   5815 
   5816         Build fix for chromium after r51423.
   5817         Exclude gtk directory from chromium build.
   5818 
   5819         * JavaScriptCore.gyp/JavaScriptCore.gyp:
   5820 
   5821 2009-11-25  Oliver Hunt  <oliver (a] apple.com>
   5822 
   5823         Reviewed by Gavin Barraclough.
   5824 
   5825         Incorrect behaviour of jneq_null in the interpreter
   5826         https://bugs.webkit.org/show_bug.cgi?id=31901
   5827 
   5828         Correct the logic of jneq_null.  This is already covered by existing tests.
   5829 
   5830         * interpreter/Interpreter.cpp:
   5831         (JSC::Interpreter::privateExecute):
   5832 
   5833 2009-11-26  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   5834 
   5835         Reviewed by Oliver Hunt.
   5836 
   5837         Move GOwnPtr* from wtf to wtf/gtk
   5838         https://bugs.webkit.org/show_bug.cgi?id=31793
   5839 
   5840         * GNUmakefile.am: Change the path for GOwnPtr.*.
   5841         * JavaScriptCore.gyp/JavaScriptCore.gyp: Remove
   5842           GOwnPtr.cpp from the exclude list.
   5843         * JavaScriptCore.gypi: Change the path for GOwnPtr.*.
   5844         * wscript: Remove GOwnPtr.cpp from the exclude list.
   5845         * wtf/GOwnPtr.cpp: Removed.
   5846         * wtf/GOwnPtr.h: Removed.
   5847         * wtf/Threading.h: Change the path for GOwnPtr.h.
   5848         * wtf/gtk/GOwnPtr.cpp: Copied from JavaScriptCore/wtf/GOwnPtr.cpp.
   5849         * wtf/gtk/GOwnPtr.h: Copied from JavaScriptCore/wtf/GOwnPtr.h.
   5850         * wtf/unicode/glib/UnicodeGLib.h: Change the path for GOwnPtr.h.
   5851 
   5852 2009-11-24  Dmitry Titov  <dimich (a] chromium.org>
   5853 
   5854         Reviewed by Eric Seidel.
   5855 
   5856         Add ENABLE_SHARED_SCRIPT feature define and flag for build-webkit
   5857         https://bugs.webkit.org/show_bug.cgi?id=31444
   5858 
   5859         * Configurations/FeatureDefines.xcconfig:
   5860         * wtf/Platform.h:
   5861 
   5862 2009-11-24  Chris Marrin  <cmarrin (a] apple.com>
   5863 
   5864         Reviewed by Simon Fraser.
   5865 
   5866         Add ability to enable ACCELERATED_COMPOSITING on Windows (currently disabled)
   5867         https://bugs.webkit.org/show_bug.cgi?id=27314
   5868 
   5869         * wtf/Platform.h:
   5870 
   5871 2009-11-24  Jason Smith  <dark.panda (a] gmail.com>
   5872 
   5873         Reviewed by Alexey Proskuryakov.
   5874 
   5875         RegExp#exec's returned Array-like object behaves differently from
   5876         regular Arrays
   5877         https://bugs.webkit.org/show_bug.cgi?id=31689
   5878 
   5879         * JavaScriptCore/runtime/RegExpConstructor.cpp: ensure that undefined
   5880         values are added to the returned RegExpMatchesArray
   5881 
   5882 2009-11-24  Oliver Hunt  <oliver (a] apple.com>
   5883 
   5884         Reviewed by Alexey Proskuryakov.
   5885 
   5886         JSON.stringify performance on undefined is very poor
   5887         https://bugs.webkit.org/show_bug.cgi?id=31839
   5888 
   5889         Switch from a UString to a Vector<UChar> when building
   5890         the JSON string, allowing us to safely remove the substr-copy
   5891         we otherwise did when unwinding an undefined property.
   5892 
   5893         Also turns out to be a ~5% speedup on stringification.
   5894 
   5895         * runtime/JSONObject.cpp:
   5896         (JSC::Stringifier::StringBuilder::append):
   5897         (JSC::Stringifier::stringify):
   5898         (JSC::Stringifier::Holder::appendNextProperty):
   5899 
   5900 2009-11-24  Mark Rowe  <mrowe (a] apple.com>
   5901 
   5902         Fix production builds where the source tree may be read-only.
   5903 
   5904         * JavaScriptCore.xcodeproj/project.pbxproj:
   5905 
   5906 2009-11-23  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   5907 
   5908         Reviewed by Kenneth Rohde Christiansen.
   5909 
   5910         Include "config.h" to meet Coding Style Guidelines
   5911         https://bugs.webkit.org/show_bug.cgi?id=31792
   5912 
   5913         * wtf/unicode/UTF8.cpp:
   5914         * wtf/unicode/glib/UnicodeGLib.cpp:
   5915         * wtf/unicode/wince/UnicodeWince.cpp:
   5916 
   5917 2009-11-23  Geoffrey Garen  <ggaren (a] apple.com>
   5918 
   5919         Reviewed by Oliver Hunt.
   5920 
   5921         Streamlined some Math functions where we expect or know the result not
   5922         to be representable as an int.
   5923         
   5924         SunSpider says 0.6% faster.
   5925 
   5926         * runtime/JSNumberCell.h:
   5927         (JSC::JSValue::JSValue):
   5928         * runtime/JSValue.h:
   5929         (JSC::JSValue::):
   5930         (JSC::jsDoubleNumber):
   5931         (JSC::JSValue::JSValue): Added a function for making a numeric JSValue
   5932         and skipping the "can I encode this as an int?" check, avoiding the
   5933         overhead of int <-> double roundtripping and double <-> double comparison
   5934         and branching.
   5935 
   5936         * runtime/MathObject.cpp:
   5937         (JSC::mathProtoFuncACos):
   5938         (JSC::mathProtoFuncASin):
   5939         (JSC::mathProtoFuncATan):
   5940         (JSC::mathProtoFuncATan2):
   5941         (JSC::mathProtoFuncCos):
   5942         (JSC::mathProtoFuncExp):
   5943         (JSC::mathProtoFuncLog):
   5944         (JSC::mathProtoFuncRandom):
   5945         (JSC::mathProtoFuncSin):
   5946         (JSC::mathProtoFuncSqrt):
   5947         (JSC::mathProtoFuncTan): For these functions, which we expect or know
   5948         to produce results not representable as ints, call jsDoubleNumber instead
   5949         of jsNumber.
   5950 
   5951 2009-11-23  Mark Rowe  <mrowe (a] apple.com>
   5952 
   5953         Unreviewed. Unbreak the regression tests after r51329.
   5954 
   5955         * API/JSBase.cpp:
   5956         (JSEvaluateScript): Null-check clientData before dereferencing it.
   5957         * API/JSObjectRef.cpp:
   5958         (JSObjectCallAsFunction): Ditto.
   5959 
   5960 2009-11-23  Gavin Barraclough  <barraclough (a] apple.com>
   5961 
   5962         Reviewed by Geoff Garen.
   5963 
   5964         Part 1/3 of <rdar://problem/7377477> REGRESSION: Many web pages fail to render after interesting script runs in isolated world
   5965 
   5966         Some clients of the JavaScriptCore API expect to be able to make callbacks over the JSC API,
   5967         and for this to automagically cause execution to take place in the world associated with the
   5968         global object associated with the ExecState (JSContextRef) passed.  However this is not how
   5969         things work - the world must be explicitly set within WebCore.
   5970 
   5971         Making this work just for API calls to evaluate & call will be a far from perfect solution,
   5972         since direct (non-API) use of JSC still relies on WebCore setting the current world correctly.
   5973         A better solution would be to make this all work automagically all throughout WebCore, but this
   5974         will require more refactoring.
   5975 
   5976         Since the API is in JSC but worlds only exist in WebCore, add callbacks on the JSGlobalData::ClientData
   5977         to allow it to update the current world on entry/exit via the JSC API.  This is temporary duck
   5978         tape, and should be removed once the current world no longer needs to be explicitly tracked.
   5979 
   5980         * API/JSBase.cpp:
   5981         (JSEvaluateScript):
   5982         * API/JSObjectRef.cpp:
   5983         (JSObjectCallAsFunction):
   5984         * JavaScriptCore.exp:
   5985         * runtime/JSGlobalData.cpp:
   5986         (JSC::JSGlobalData::ClientData::beginningExecution):
   5987         (JSC::JSGlobalData::ClientData::completedExecution):
   5988         * runtime/JSGlobalData.h:
   5989 
   5990 2009-11-23  Steve Block  <steveblock (a] google.com>
   5991 
   5992         Reviewed by Dmitry Titov.
   5993 
   5994         Adds MainThreadAndroid.cpp with Android-specific WTF threading functions.
   5995         https://bugs.webkit.org/show_bug.cgi?id=31807
   5996 
   5997         * wtf/android: Added.
   5998         * wtf/android/MainThreadAndroid.cpp: Added.
   5999         (WTF::timeoutFired):
   6000         (WTF::initializeMainThreadPlatform):
   6001         (WTF::scheduleDispatchFunctionsOnMainThread):
   6002 
   6003 2009-11-23  Alexey Proskuryakov  <ap (a] apple.com>
   6004 
   6005         Reviewed by Brady Eidson.
   6006 
   6007         https://bugs.webkit.org/show_bug.cgi?id=31748
   6008         Make WebSocketHandleCFNet respect proxy auto-configuration files via CFProxySupport
   6009 
   6010         * JavaScriptCore.exp: Export callOnMainThreadAndWait.
   6011 
   6012 2009-11-23  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   6013 
   6014         Reviewed by Kenneth Rohde Christiansen.
   6015 
   6016         [Symbian] Fix lastIndexOf() for Symbian
   6017         https://bugs.webkit.org/show_bug.cgi?id=31773
   6018 
   6019         Symbian soft floating point library has problems with operators
   6020         comparing NaN to numbers. Without a workaround lastIndexOf() 
   6021         function does not work.
   6022 
   6023         Patch developed by David Leong.
   6024 
   6025         * runtime/StringPrototype.cpp:
   6026         (JSC::stringProtoFuncLastIndexOf):Add an extra test 
   6027         to check for NaN for Symbian.
   6028 
   6029 2009-11-23  Steve Block  <steveblock (a] google.com>
   6030 
   6031         Reviewed by Eric Seidel.
   6032 
   6033         Android port lacks implementation of atomicIncrement and atomicDecrement.
   6034         https://bugs.webkit.org/show_bug.cgi?id=31715
   6035 
   6036         * wtf/Threading.h: Modified.
   6037         (WTF::atomicIncrement): Added Android implementation.
   6038         (WTF::atomicDecrement): Added Android implementation.
   6039 
   6040 2009-11-22  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   6041 
   6042         Unreviewed.
   6043 
   6044         [Qt] Sort source lists and remove obsolete comments 
   6045         from the build system.
   6046 
   6047         * JavaScriptCore.pri:
   6048 
   6049 2009-11-21  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   6050 
   6051         Reviewed by Eric Seidel.
   6052 
   6053         [Qt][Mac] Turn on multiple JavaScript threads for QtWebkit on Mac
   6054         https://bugs.webkit.org/show_bug.cgi?id=31753
   6055 
   6056         * wtf/Platform.h:
   6057 
   6058 2009-11-19  Steve Block  <steveblock (a] google.com>
   6059 
   6060         Android port lacks configuration in Platform.h and config.h.
   6061         https://bugs.webkit.org/show_bug.cgi?id=31671
   6062 
   6063         * wtf/Platform.h: Modified. Added Android-specific configuration.
   6064 
   6065 2009-11-19  Alexey Proskuryakov  <ap (a] apple.com>
   6066 
   6067         Reviewed by Darin Adler.
   6068 
   6069         https://bugs.webkit.org/show_bug.cgi?id=31690
   6070         Make SocketStreamHandleCFNet work on Windows
   6071 
   6072         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   6073         * wtf/MainThread.cpp:
   6074         (WTF::FunctionWithContext::FunctionWithContext):
   6075         (WTF::dispatchFunctionsFromMainThread):
   6076         (WTF::callOnMainThreadAndWait):
   6077         * wtf/MainThread.h:
   6078         Re-add callOnMainThreadAndWait(), which was removed in bug 23926.
   6079 
   6080 2009-11-19  Dmitry Titov  <dimich (a] chromium.org>
   6081 
   6082         Reviewed by David Levin.
   6083 
   6084         isMainThread() on Chromium (Mac and Linux) is so slow it timeouts LayoutTests..
   6085         https://bugs.webkit.org/show_bug.cgi?id=31693
   6086 
   6087         * wtf/ThreadingPthreads.cpp:
   6088         (WTF::initializeThreading): grab and use the pthread_t of the main thread instead of ThreadIdentifier.
   6089         (WTF::isMainThread): Ditto.
   6090 
   6091 2009-11-19  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   6092 
   6093         Reviewed by Darin Adler.
   6094 
   6095         Remove HAVE(STRING_H) guard from JavaScriptCore
   6096         https://bugs.webkit.org/show_bug.cgi?id=31668
   6097 
   6098         * config.h:
   6099         * runtime/UString.cpp:
   6100 
   6101 2009-11-19  Dumitru Daniliuc  <dumi (a] chromium.org>
   6102 
   6103         Reviewed by Dmitry Titov.
   6104 
   6105         Fixing a bug in MessageQueue::removeIf() that leads to an
   6106         assertion failure.
   6107 
   6108         https://bugs.webkit.org/show_bug.cgi?id=31657
   6109 
   6110         * wtf/MessageQueue.h:
   6111         (WTF::MessageQueue::removeIf):
   6112 
   6113 2009-11-19  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   6114 
   6115         Reviewed by Darin Adler.
   6116 
   6117         Remove HAVE(FLOAT_H) guard
   6118         https://bugs.webkit.org/show_bug.cgi?id=31661
   6119 
   6120         JavaScriptCore has a dependency on float.h, there is
   6121         no need to guard float.h.
   6122 
   6123         * runtime/DatePrototype.cpp: Remove include directive 
   6124         for float.h as it is included in MathExtras.h already.
   6125         * runtime/Operations.cpp: Ditto.
   6126         * runtime/UString.cpp: Ditto.
   6127         * wtf/dtoa.cpp: Ditto.
   6128         * wtf/MathExtras.h: Remove HAVE(FLOAT_H) guard.
   6129         * wtf/Platform.h: Ditto.
   6130 
   6131 2009-11-19  Thiago Macieira <thiago.macieira (a] nokia.com>
   6132 
   6133         Reviewed by Simon Hausmann.
   6134 
   6135         Build fix for 32-bit Sparc machines: these machines are big-endian.
   6136 
   6137         * wtf/Platform.h:
   6138 
   6139 2009-11-18  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   6140 
   6141         Reviewed by Kenneth Rohde Christiansen.
   6142 
   6143         [Qt] Remove support for Qt v4.3 or older versions
   6144         https://bugs.webkit.org/show_bug.cgi?id=29469
   6145 
   6146         * JavaScriptCore.pro:
   6147         * jsc.pro:
   6148         * wtf/unicode/qt4/UnicodeQt4.h:
   6149 
   6150 2009-11-18  Kent Tamura  <tkent (a] chromium.org>
   6151 
   6152         Reviewed by Darin Adler.
   6153 
   6154         Move UString::from(double) implementation to new
   6155         WTF::doubleToStringInJavaScriptFormat(), and expose it because WebCore
   6156         code will use it.
   6157         https://bugs.webkit.org/show_bug.cgi?id=31330
   6158 
   6159         - Introduce new function createRep(const char*, unsigned) and
   6160           UString::UString(const char*, unsigned) to reduce 2 calls to strlen().
   6161         - Fix a bug that dtoa() doesn't update *rve if the input value is NaN
   6162           or Infinity.
   6163 
   6164         No new tests because this doesn't change the behavior.
   6165 
   6166         * JavaScriptCore.exp:
   6167         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   6168         * runtime/UString.cpp:
   6169         (JSC::createRep):
   6170         (JSC::UString::UString):
   6171         (JSC::UString::from): Move the code to doubleToStringInJavaScriptFormat().
   6172         * runtime/UString.h:
   6173         * wtf/dtoa.cpp:
   6174         (WTF::dtoa): Fix a bug about rve.
   6175         (WTF::append): A helper for doubleToStringInJavaScriptFormat().
   6176         (WTF::doubleToStringInJavaScriptFormat): Move the code from UString::from(double).
   6177         * wtf/dtoa.h:
   6178 
   6179 2009-11-18  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   6180 
   6181         Reviewed by Kenneth Rohde Christiansen.
   6182 
   6183         [Qt] Remove WTF_USE_JAVASCRIPTCORE_BINDINGS as it is no longer used
   6184         https://bugs.webkit.org/show_bug.cgi?id=31643
   6185 
   6186         * JavaScriptCore.pro:
   6187 
   6188 2009-11-18  Nate Chapin  <japhet (a] chromium.org>
   6189 
   6190         Reviewed by Darin Fisher.
   6191 
   6192         Remove Chromium's unnecessary dependency on wtf's tcmalloc files.
   6193 
   6194         https://bugs.webkit.org/show_bug.cgi?id=31648
   6195 
   6196         * JavaScriptCore.gyp/JavaScriptCore.gyp:
   6197 
   6198 2009-11-18  Thiago Macieira <thiago.macieira (a] nokia.com>
   6199 
   6200         Reviewed by Gavin Barraclough.
   6201 
   6202         [Qt] Implement symbol hiding for JSC's JIT functions.
   6203 
   6204         These functions are implemented directly in assembly, so they need the
   6205         proper directives to enable/disable visibility. On ELF systems, it's
   6206         .hidden, whereas on Mach-O systems (Mac) it's .private_extern. On
   6207         Windows, it's not necessary since you have to explicitly export. I
   6208         also implemented the AIX idiom, though it's unlikely anyone will
   6209         implement AIX/POWER JIT.
   6210         https://bugs.webkit.org/show_bug.cgi?id=30864
   6211 
   6212         * jit/JITStubs.cpp:
   6213 
   6214 2009-11-18  Oliver Hunt  <oliver (a] apple.com>
   6215 
   6216         Reviewed by Alexey Proskuryakov.
   6217 
   6218         Interpreter may do an out of range access when throwing an exception in the profiler.
   6219         https://bugs.webkit.org/show_bug.cgi?id=31635
   6220 
   6221         Add bounds check.
   6222 
   6223         * interpreter/Interpreter.cpp:
   6224         (JSC::Interpreter::throwException):
   6225 
   6226 2009-11-18  Gabor Loki  <loki (a] inf.u-szeged.hu>
   6227 
   6228         Reviewed by Darin Adler.
   6229 
   6230         Fix the clobber list of cacheFlush for ARM and Thumb2 on Linux
   6231         https://bugs.webkit.org/show_bug.cgi?id=31631
   6232 
   6233         * jit/ExecutableAllocator.h:
   6234         (JSC::ExecutableAllocator::cacheFlush):
   6235 
   6236 2009-11-18  Harald Fernengel  <harald.fernengel (a] nokia.com>
   6237 
   6238         Reviewed by Simon Hausmann.
   6239 
   6240         [Qt] Fix detection of linux-g++
   6241 
   6242         Never use "linux-g++*" to check for linux-g++, since this will break embedded
   6243         builds which use linux-arm-g++ and friends. Use 'linux*-g++*' to check for any
   6244         g++ on linux mkspec.
   6245 
   6246         * JavaScriptCore.pri:
   6247 
   6248 2009-11-17  Jon Honeycutt  <jhoneycutt (a] apple.com>
   6249 
   6250         Add JSContextRefPrivate.h to list of copied files.
   6251 
   6252         Reviewed by Mark Rowe.
   6253 
   6254         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
   6255 
   6256 2009-11-17  Martin Robinson  <martin.james.robinson (a] gmail.com>
   6257 
   6258         Reviewed by Adam Barth.
   6259 
   6260         [GTK] Style cleanup for GOwnPtr
   6261         https://bugs.webkit.org/show_bug.cgi?id=31506
   6262 
   6263         Remove forward declaration in GOwnPtr and do some style cleanup.
   6264 
   6265         * wtf/GOwnPtr.cpp:
   6266         * wtf/GOwnPtr.h:
   6267         (WTF::GOwnPtr::GOwnPtr):
   6268         (WTF::GOwnPtr::~GOwnPtr):
   6269         (WTF::GOwnPtr::get):
   6270         (WTF::GOwnPtr::release):
   6271         (WTF::GOwnPtr::outPtr):
   6272         (WTF::GOwnPtr::set):
   6273         (WTF::GOwnPtr::clear):
   6274         (WTF::GOwnPtr::operator*):
   6275         (WTF::GOwnPtr::operator->):
   6276         (WTF::GOwnPtr::operator!):
   6277         (WTF::GOwnPtr::operator UnspecifiedBoolType):
   6278         (WTF::GOwnPtr::swap):
   6279         (WTF::swap):
   6280         (WTF::operator==):
   6281         (WTF::operator!=):
   6282         (WTF::getPtr):
   6283         (WTF::freeOwnedGPtr):
   6284 
   6285 2009-11-17  Oliver Hunt  <oliver (a] apple.com>
   6286 
   6287         Reviewed by Maciej Stachowiak.
   6288 
   6289         Incorrect use of JavaScriptCore API in DumpRenderTree
   6290         https://bugs.webkit.org/show_bug.cgi?id=31577
   6291 
   6292         Add assertions to the 'toJS' functions to catch mistakes like
   6293         this early.  Restructure existing code which blindly passed potentially
   6294         null values to toJS when forwarding exceptions so that a null check is
   6295         performed first.
   6296 
   6297         * API/APICast.h:
   6298         (toJS):
   6299         (toJSForGC):
   6300         * API/JSCallbackObjectFunctions.h:
   6301         (JSC::::getOwnPropertySlot):
   6302         (JSC::::put):
   6303         (JSC::::deleteProperty):
   6304         (JSC::::construct):
   6305         (JSC::::hasInstance):
   6306         (JSC::::call):
   6307         (JSC::::toNumber):
   6308         (JSC::::toString):
   6309         (JSC::::staticValueGetter):
   6310         (JSC::::callbackGetter):
   6311         * API/tests/testapi.c: Fix errors in the API tester.
   6312         (MyObject_getProperty):
   6313         (MyObject_convertToType):
   6314         (EvilExceptionObject_convertToType):
   6315 
   6316 2009-11-16  Zoltan Herczeg  <zherczeg (a] inf.u-szeged.hu>
   6317 
   6318         Reviewed by Gavin Barraclough.
   6319 
   6320         https://bugs.webkit.org/show_bug.cgi?id=31050
   6321 
   6322         Minor fixes for JSVALUE32_64: branchConvertDoubleToInt32
   6323         failed on a CortexA8 CPU, but not on a simulator; and
   6324         JITCall.cpp modifications was somehow not committed to mainline.
   6325 
   6326         * assembler/ARMAssembler.h:
   6327         (JSC::ARMAssembler::fmrs_r):
   6328         * assembler/MacroAssemblerARM.h:
   6329         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
   6330         * jit/JITCall.cpp:
   6331         (JSC::JIT::compileOpCall):
   6332 
   6333 2009-11-16  Joerg Bornemann  <joerg.bornemann (a] trolltech.com>
   6334 
   6335         Reviewed by Simon Hausmann.
   6336 
   6337         Fix Qt build on Windows CE 6.
   6338 
   6339         * JavaScriptCore.pri: Add missing include path.
   6340         * wtf/Platform.h: Include ce_time.h for Windows CE 6.
   6341 
   6342 2009-11-13  Zoltan Herczeg  <zherczeg (a] inf.u-szeged.hu>
   6343 
   6344         Reviewed by Gavin Barraclough.
   6345 
   6346         https://bugs.webkit.org/show_bug.cgi?id=31050
   6347 
   6348         Adding optimization support for mode JSVALUE32_64
   6349         on ARM systems.
   6350 
   6351         * jit/JIT.h:
   6352         * jit/JITCall.cpp:
   6353         (JSC::JIT::compileOpCall):
   6354         * jit/JITPropertyAccess.cpp:
   6355         (JSC::JIT::emit_op_method_check):
   6356         (JSC::JIT::compileGetByIdHotPath):
   6357         (JSC::JIT::compileGetByIdSlowCase):
   6358         (JSC::JIT::emit_op_put_by_id):
   6359 
   6360 2009-11-14  Zoltan Herczeg  <zherczeg (a] inf.u-szeged.hu>
   6361 
   6362         Reviewed by Gavin Barraclough.
   6363 
   6364         https://bugs.webkit.org/show_bug.cgi?id=31050
   6365 
   6366         Adding JSVALUE32_64 support for ARM (but not turning it
   6367         on by default). All optimizations must be disabled, since
   6368         this patch is only the first of a series of patches.
   6369 
   6370         During the work, a lot of x86 specific code revealed and
   6371         made platform independent.
   6372         See revisions: 50531 50541 50593 50594 50595
   6373 
   6374         * assembler/ARMAssembler.h:
   6375         (JSC::ARMAssembler::):
   6376         (JSC::ARMAssembler::fdivd_r):
   6377         * assembler/MacroAssemblerARM.h:
   6378         (JSC::MacroAssemblerARM::lshift32):
   6379         (JSC::MacroAssemblerARM::neg32):
   6380         (JSC::MacroAssemblerARM::rshift32):
   6381         (JSC::MacroAssemblerARM::branchOr32):
   6382         (JSC::MacroAssemblerARM::set8):
   6383         (JSC::MacroAssemblerARM::setTest8):
   6384         (JSC::MacroAssemblerARM::loadDouble):
   6385         (JSC::MacroAssemblerARM::divDouble):
   6386         (JSC::MacroAssemblerARM::convertInt32ToDouble):
   6387         (JSC::MacroAssemblerARM::zeroDouble):
   6388         * jit/JIT.cpp:
   6389         * jit/JIT.h:
   6390         * jit/JITOpcodes.cpp:
   6391         (JSC::JIT::privateCompileCTIMachineTrampolines):
   6392         * jit/JITStubs.cpp:
   6393         * wtf/StdLibExtras.h:
   6394 
   6395 2009-11-13  Dominik Rttsches  <dominik.roettsches (a] access-company.com>
   6396 
   6397         Reviewed by Eric Seidel.
   6398 
   6399         Unify TextBoundaries implementations by only relying on WTF Unicode abstractions
   6400         https://bugs.webkit.org/show_bug.cgi?id=31468
   6401 
   6402         Adding isAlphanumeric abstraction, required
   6403         by TextBoundaries.cpp.
   6404 
   6405         * wtf/unicode/glib/UnicodeGLib.h:
   6406         (WTF::Unicode::isAlphanumeric):
   6407         * wtf/unicode/icu/UnicodeIcu.h:
   6408         (WTF::Unicode::isAlphanumeric):
   6409 
   6410 2009-11-13  Norbert Leser  <norbert.leser&nokia.com>
   6411 
   6412         Reviewed by Eric Seidel.
   6413 
   6414         Added macros for USERINCLUDE paths within symbian blocks
   6415         to guarantee inclusion of respective header files from local path
   6416         first (to avoid clashes with same names of header files in system include path).
   6417 
   6418         * JavaScriptCore.pri:
   6419 
   6420 2009-11-13  Oliver Hunt  <oliver (a] apple.com>
   6421 
   6422         Reviewed by Geoff Garen.
   6423 
   6424         JSValueProtect and JSValueUnprotect don't protect API wrapper values
   6425         https://bugs.webkit.org/show_bug.cgi?id=31485
   6426 
   6427         Make JSValueProtect/Unprotect use a new 'toJS' function, 'toJSForGC' that
   6428         does not attempt to to strip out API wrapper objects.
   6429 
   6430         * API/APICast.h:
   6431         (toJSForGC):
   6432         * API/JSValueRef.cpp:
   6433         (JSValueProtect):
   6434         (JSValueUnprotect):
   6435         * API/tests/testapi.c:
   6436         (makeGlobalNumberValue):
   6437         (main):
   6438 
   6439 2009-11-13  smail Dnmez  <ismail (a] namtrac.org>
   6440 
   6441         Reviewed by Antti Koivisto.
   6442 
   6443         Fix typo, ce_time.cpp should be ce_time.c
   6444 
   6445         * JavaScriptCore.pri:
   6446 
   6447 2009-11-12  Steve VanDeBogart  <vandebo (a] chromium.org>
   6448 
   6449         Reviewed by Adam Barth.
   6450 
   6451         Calculate the time offset only if we were able to parse
   6452         the date string. This saves an IPC in Chromium for
   6453         invalid date strings.
   6454         https://bugs.webkit.org/show_bug.cgi?id=31416
   6455 
   6456         * wtf/DateMath.cpp:
   6457         (WTF::parseDateFromNullTerminatedCharacters):
   6458         (JSC::parseDateFromNullTerminatedCharacters):
   6459 
   6460 2009-11-12  Oliver Hunt  <oliver (a] apple.com>
   6461 
   6462         Rollout r50896 until i can work out why it causes failures.
   6463 
   6464         * bytecompiler/BytecodeGenerator.cpp:
   6465         (JSC::BytecodeGenerator::emitReturn):
   6466         * interpreter/Interpreter.cpp:
   6467         (JSC::Interpreter::execute):
   6468         * parser/Nodes.cpp:
   6469         (JSC::EvalNode::emitBytecode):
   6470 
   6471 2009-11-12  Steve Falkenburg  <sfalken (a] apple.com>
   6472 
   6473         Reviewed by Stephanie Lewis.
   6474 
   6475         Remove LIBRARY directive from def file to fix Debug_All target.
   6476 
   6477         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   6478 
   6479 2009-11-12  Gustavo Noronha Silva  <gustavo.noronha (a] collabora.co.uk>
   6480 
   6481         Rubber-stamped by Holger Freyther.
   6482 
   6483         Revert r50204, since it makes DRT crash on 32 bits release builds
   6484         for GTK+.
   6485 
   6486         * wtf/FastMalloc.h:
   6487 
   6488 2009-11-12  Oliver Hunt  <oliver (a] apple.com>
   6489 
   6490         Reviewed by Gavin Barraclough.
   6491 
   6492         Start unifying entry logic for function and eval code.
   6493 
   6494         Eval now uses a ret instruction to end execution, and sets up
   6495         a callframe more in line with what we do for function entry.
   6496 
   6497         * bytecompiler/BytecodeGenerator.cpp:
   6498         (JSC::BytecodeGenerator::emitReturn):
   6499         * interpreter/Interpreter.cpp:
   6500         (JSC::Interpreter::execute):
   6501         * parser/Nodes.cpp:
   6502         (JSC::EvalNode::emitBytecode):
   6503 
   6504 2009-11-12  Richard Moe Gustavsen  <richard.gustavsen (a] nokia.com>
   6505 
   6506         Reviewed by Kenneth Rohde Christiansen.
   6507 
   6508         [Qt] Disable pthread_setname_np.
   6509 
   6510         This allows Qt builds on Mac from 10.6 to run on earlier version
   6511         where this symbol is not present.
   6512         https://bugs.webkit.org/show_bug.cgi?id=31403
   6513 
   6514         * wtf/Platform.h:
   6515 
   6516 2009-11-12  Thiago Macieira <thiago.macieira (a] nokia.com>
   6517 
   6518         Reviewed by Kenneth Rohde Christiansen.
   6519 
   6520         [Qt] Fix linking on Linux 32-bit.
   6521 
   6522         It was missing the ".text" directive at the top of the file,
   6523         indicating that code would follow. Without it, the assembler created
   6524         "NOTYPE" symbols, which would result in linker errors.
   6525         https://bugs.webkit.org/show_bug.cgi?id=30863
   6526 
   6527         * jit/JITStubs.cpp:
   6528 
   6529 2009-11-11  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   6530 
   6531         Reviewed by Alexey Proskuryakov.
   6532 
   6533         Refactor multiple JavaScriptCore threads
   6534         https://bugs.webkit.org/show_bug.cgi?id=31328
   6535 
   6536         Remove the id field from the PlatformThread structure 
   6537         as it is not used.
   6538 
   6539         * runtime/Collector.cpp:
   6540         (JSC::getCurrentPlatformThread):
   6541         (JSC::suspendThread):
   6542         (JSC::resumeThread):
   6543         (JSC::getPlatformThreadRegisters):
   6544 
   6545 2009-11-10  Geoffrey Garen  <ggaren (a] apple.com>
   6546 
   6547         Linux build fix: Added an #include for UINT_MAX.
   6548 
   6549         * runtime/WeakRandom.h:
   6550 
   6551 2009-11-10  Geoffrey Garen  <ggaren (a] apple.com>
   6552 
   6553         JavaScriptGlue build fix: Marked a file 'private' instead of 'project'.
   6554 
   6555         * JavaScriptCore.xcodeproj/project.pbxproj:
   6556 
   6557 2009-11-10  Geoffrey Garen  <ggaren (a] apple.com>
   6558 
   6559         Reviewed by Gavin "avGni arBalroguch" Barraclough.
   6560 
   6561         Faster Math.random, based on GameRand.
   6562         
   6563         SunSpider says 1.4% faster.
   6564 
   6565         * GNUmakefile.am:
   6566         * JavaScriptCore.gypi:
   6567         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
   6568         * JavaScriptCore.xcodeproj/project.pbxproj: Added the header to the project.
   6569 
   6570         * runtime/JSGlobalData.cpp:
   6571         (JSC::JSGlobalData::JSGlobalData):
   6572         * runtime/JSGlobalData.h: Use an object to track random number generation
   6573         state, initialized to the current time.
   6574 
   6575         * runtime/MathObject.cpp:
   6576         (JSC::MathObject::MathObject):
   6577         (JSC::mathProtoFuncRandom): Use the new hotness.
   6578 
   6579         * runtime/WeakRandom.h: Added.
   6580         (JSC::WeakRandom::WeakRandom):
   6581         (JSC::WeakRandom::get):
   6582         (JSC::WeakRandom::advance): The new hotness.
   6583 
   6584 2009-11-09  Geoffrey Garen  <ggaren (a] apple.com>
   6585 
   6586         Reviewed by Oliver Hunt.
   6587 
   6588         Imported the v8 DST cache.
   6589         
   6590         SunSpider says 1.5% faster.
   6591 
   6592         * runtime/JSGlobalData.cpp:
   6593         (JSC::JSGlobalData::resetDateCache): Reset the DST cache when resetting
   6594         other date data.
   6595 
   6596         * runtime/JSGlobalData.h:
   6597         (JSC::DSTOffsetCache::DSTOffsetCache):
   6598         (JSC::DSTOffsetCache::reset): Added a struct for the DST cache.
   6599 
   6600         * wtf/DateMath.cpp:
   6601         (WTF::calculateDSTOffsetSimple):
   6602         (WTF::calculateDSTOffset):
   6603         (WTF::parseDateFromNullTerminatedCharacters):
   6604         (JSC::getDSTOffset):
   6605         (JSC::gregorianDateTimeToMS):
   6606         (JSC::msToGregorianDateTime):
   6607         (JSC::parseDateFromNullTerminatedCharacters):
   6608         * wtf/DateMath.h: The imported code for probing and updating the cache.
   6609 
   6610 2009-11-09  Geoffrey Garen  <ggaren (a] apple.com>
   6611 
   6612         Reviewed by Oliver Hunt.
   6613 
   6614         Fixed an edge case that could cause the engine not to notice a timezone
   6615         change.
   6616         
   6617         No test because this case would require manual intervention to change
   6618         the timezone during the test.
   6619         
   6620         SunSpider reports no change.
   6621 
   6622         * runtime/DateInstanceCache.h:
   6623         (JSC::DateInstanceCache::DateInstanceCache):
   6624         (JSC::DateInstanceCache::reset): Added a helper function for resetting
   6625         this cache. Also, shrank the cache, since we'll be resetting it often.
   6626 
   6627         * runtime/JSGlobalData.cpp:
   6628         (JSC::JSGlobalData::resetDateCache): Include resetting the DateInstanceCache
   6629         in resetting Date data. (Otherwise, a cache hit could bypass a necessary
   6630         timezone update check.)
   6631 
   6632 2009-11-09  Geoffrey Garen  <ggaren (a] apple.com>
   6633 
   6634         Reviewed by Sam Weinig.
   6635 
   6636         Some manual inlining and constant propogation in Date code.
   6637         
   6638         SunSpider reports a 0.4% speedup on date-*, no overall speedup. Shark
   6639         says some previously evident stalls are now gone.
   6640 
   6641         * runtime/DateConstructor.cpp:
   6642         (JSC::callDate):
   6643         * runtime/DateConversion.cpp:
   6644         (JSC::formatTime):
   6645         (JSC::formatTimeUTC): Split formatTime into UTC and non-UTC variants.
   6646 
   6647         * runtime/DateConversion.h:
   6648         * runtime/DateInstance.cpp:
   6649         (JSC::DateInstance::calculateGregorianDateTime):
   6650         (JSC::DateInstance::calculateGregorianDateTimeUTC):
   6651         * runtime/DateInstance.h:
   6652         (JSC::DateInstance::gregorianDateTime):
   6653         (JSC::DateInstance::gregorianDateTimeUTC): Split gregorianDateTime into
   6654         a UTC and non-UTC variant, and split each variant into a fast inline
   6655         case and a slow out-of-line case.
   6656 
   6657         * runtime/DatePrototype.cpp:
   6658         (JSC::formatLocaleDate):
   6659         (JSC::dateProtoFuncToString):
   6660         (JSC::dateProtoFuncToUTCString):
   6661         (JSC::dateProtoFuncToISOString):
   6662         (JSC::dateProtoFuncToDateString):
   6663         (JSC::dateProtoFuncToTimeString):
   6664         (JSC::dateProtoFuncGetFullYear):
   6665         (JSC::dateProtoFuncGetUTCFullYear):
   6666         (JSC::dateProtoFuncToGMTString):
   6667         (JSC::dateProtoFuncGetMonth):
   6668         (JSC::dateProtoFuncGetUTCMonth):
   6669         (JSC::dateProtoFuncGetDate):
   6670         (JSC::dateProtoFuncGetUTCDate):
   6671         (JSC::dateProtoFuncGetDay):
   6672         (JSC::dateProtoFuncGetUTCDay):
   6673         (JSC::dateProtoFuncGetHours):
   6674         (JSC::dateProtoFuncGetUTCHours):
   6675         (JSC::dateProtoFuncGetMinutes):
   6676         (JSC::dateProtoFuncGetUTCMinutes):
   6677         (JSC::dateProtoFuncGetSeconds):
   6678         (JSC::dateProtoFuncGetUTCSeconds):
   6679         (JSC::dateProtoFuncGetTimezoneOffset):
   6680         (JSC::setNewValueFromTimeArgs):
   6681         (JSC::setNewValueFromDateArgs):
   6682         (JSC::dateProtoFuncSetYear):
   6683         (JSC::dateProtoFuncGetYear): Updated for the gregorianDateTime change above.
   6684 
   6685 2009-11-09  Geoffrey Garen  <ggaren (a] apple.com>
   6686 
   6687         Build fix: export a new symbol.
   6688 
   6689         * JavaScriptCore.exp:
   6690         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   6691 
   6692 2009-11-09  Geoffrey Garen  <ggaren (a] apple.com>
   6693 
   6694         Reviewed by Sam "Home Wrecker" Weinig.
   6695 
   6696         Added a tiny cache for Date parsing.
   6697         
   6698         SunSpider says 1.2% faster.
   6699 
   6700         * runtime/DateConversion.cpp:
   6701         (JSC::parseDate): Try to reuse the last parsed Date, if present.
   6702 
   6703         * runtime/JSGlobalData.cpp:
   6704         (JSC::JSGlobalData::resetDateCache):
   6705         * runtime/JSGlobalData.h: Added storage for last parsed Date. Refactored
   6706         this code to make resetting the date cache easier.
   6707 
   6708         * runtime/JSGlobalObject.h:
   6709         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for
   6710         refactoring.
   6711 
   6712         * wtf/DateMath.cpp:
   6713         (JSC::parseDateFromNullTerminatedCharacters):
   6714         * wtf/DateMath.h: Changed ExecState to be first parameter, as is the JSC custom.
   6715 
   6716 2009-11-09  Oliver Hunt  <oliver (a] apple.com>
   6717 
   6718         Reviewed by Gavin Barraclough.
   6719 
   6720         Can cache prototype lookups on uncacheable dictionaries.
   6721         https://bugs.webkit.org/show_bug.cgi?id=31198
   6722 
   6723         Replace fromDictionaryTransition with flattenDictionaryObject and
   6724         flattenDictionaryStructure.  This change is necessary as we need to
   6725         guarantee that our attempt to convert away from a dictionary structure
   6726         will definitely succeed, and in some cases this requires mutating the
   6727         object storage itself.
   6728 
   6729         * interpreter/Interpreter.cpp:
   6730         (JSC::Interpreter::tryCacheGetByID):
   6731         * jit/JITStubs.cpp:
   6732         (JSC::JITThunks::tryCacheGetByID):
   6733         (JSC::DEFINE_STUB_FUNCTION):
   6734         * runtime/BatchedTransitionOptimizer.h:
   6735         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
   6736         * runtime/JSObject.h:
   6737         (JSC::JSObject::flattenDictionaryObject):
   6738         * runtime/Operations.h:
   6739         (JSC::normalizePrototypeChain):
   6740         * runtime/Structure.cpp:
   6741         (JSC::Structure::flattenDictionaryStructure):
   6742         (JSC::comparePropertyMapEntryIndices):
   6743         * runtime/Structure.h:
   6744 
   6745 2009-11-09  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   6746 
   6747         Not reviewed, build fix.
   6748 
   6749         Remove extra character from r50701.
   6750 
   6751         * JavaScriptCore.pri:
   6752 
   6753 2009-11-09  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   6754 
   6755         Not reviewed, build fix.
   6756 
   6757         Revert r50695 because it broke QtWebKit (clean builds).
   6758 
   6759         * JavaScriptCore.pri:
   6760 
   6761 2009-11-09  Norbert Leser  <norbert.leser (a] nokia.com>
   6762 
   6763         Reviewed by Kenneth Rohde Christiansen.
   6764 
   6765         Prepended $$PWD to GENERATED_SOURCES_DIR to avoid potential ambiguities when included from WebCore.pro.
   6766         Some preprocessors consider this GENERATED_SOURCES_DIR relative to current invoking dir (e.g., ./WebCore),
   6767         and not the working dir of JavaCriptCore.pri (i.e., ../JavaScriptCore/).
   6768 
   6769         * JavaScriptCore.pri:
   6770 
   6771 2009-11-09  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   6772 
   6773         Reviewed by Kenneth Rohde Christiansen.
   6774 
   6775         Use explicit parentheses to silence gcc 4.4 -Wparentheses warnings
   6776         https://bugs.webkit.org/show_bug.cgi?id=31040
   6777 
   6778         * interpreter/Interpreter.cpp:
   6779         (JSC::Interpreter::privateExecute):
   6780 
   6781 2009-11-08  David Levin  <levin (a] chromium.org>
   6782 
   6783         Reviewed by NOBODY (speculative snow leopard and windows build fixes).
   6784 
   6785         * wtf/DateMath.cpp:
   6786         (WTF::parseDateFromNullTerminatedCharacters):
   6787         (JSC::gregorianDateTimeToMS):
   6788         (JSC::msToGregorianDateTime):
   6789         (JSC::parseDateFromNullTerminatedCharacters):
   6790         * wtf/DateMath.h:
   6791         (JSC::GregorianDateTime::GregorianDateTime):
   6792 
   6793 2009-11-08  David Levin  <levin (a] chromium.org>
   6794 
   6795         Reviewed by NOBODY (chromium build fix).
   6796         
   6797         Hopefully, the last build fix.
   6798 
   6799         Create better separation in DateMath about the JSC
   6800         and non-JSC portions. Also, only expose the non-JSC
   6801         version in the exports.
   6802 
   6803         * JavaScriptCore.exp:
   6804         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   6805         * wtf/DateMath.cpp:
   6806         (WTF::parseDateFromNullTerminatedCharacters):
   6807         (JSC::getUTCOffset):
   6808         (JSC::gregorianDateTimeToMS):
   6809         (JSC::msToGregorianDateTime):
   6810         (JSC::parseDateFromNullTerminatedCharacters):
   6811         * wtf/DateMath.h:
   6812         (JSC::gmtoffset):
   6813 
   6814 2009-11-08  David Levin  <levin (a] chromium.org>
   6815 
   6816         Reviewed by NOBODY (chromium build fix).
   6817 
   6818         For the change in DateMath.
   6819 
   6820         * config.h:
   6821         * wtf/DateMath.cpp:
   6822 
   6823 2009-11-06  Geoffrey Garen  <ggaren (a] apple.com>
   6824 
   6825         Windows build fix: export some symbols.
   6826 
   6827         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   6828 
   6829 2009-11-06  Geoffrey Garen  <ggaren (a] apple.com>
   6830 
   6831         Build fix: updated export file.
   6832 
   6833         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   6834 
   6835 2009-11-06  Geoffrey Garen  <ggaren (a] apple.com>
   6836 
   6837         Build fix: added some #includes.
   6838 
   6839         * wtf/CurrentTime.h:
   6840         * wtf/DateMath.h:
   6841 
   6842 2009-11-06  Geoffrey Garen  <ggaren (a] apple.com>
   6843 
   6844         Reviewed by Oliver Hunt.
   6845         
   6846         https://bugs.webkit.org/show_bug.cgi?id=31197
   6847         Implemented a timezone cache not based on Mac OS X's notify_check API.
   6848         
   6849         If the VM calculates the local timezone offset from UTC, it caches the
   6850         result until the end of the current VM invocation. (We don't want to cache
   6851         forever, because the user's timezone may change over time.)
   6852         
   6853         This removes notify_* overhead on Mac, and, more significantly, removes
   6854         OS time and date call overhead on non-Mac platforms.
   6855 
   6856         ~8% speedup on Date microbenchmark on Mac. SunSpider reports maybe a tiny
   6857         speedup on Mac. (Speedup on non-Mac platforms should be even more noticeable.)
   6858 
   6859         * JavaScriptCore.exp:
   6860 
   6861         * interpreter/CachedCall.h:
   6862         (JSC::CachedCall::CachedCall):
   6863         * interpreter/Interpreter.cpp:
   6864         (JSC::Interpreter::execute):
   6865         * runtime/JSGlobalObject.h:
   6866         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Made the 
   6867         DynamicGlobalObjectScope constructor responsible for checking whether a
   6868         dynamicGlobalObject has already been set. This eliminated some duplicate
   6869         client code, and allowed me to avoid adding even more duplicate client
   6870         code. Made DynamicGlobalObjectScope responsible for resetting the
   6871         local timezone cache upon first entry to the VM.
   6872 
   6873         * runtime/DateConstructor.cpp:
   6874         (JSC::constructDate):
   6875         (JSC::callDate):
   6876         (JSC::dateParse):
   6877         (JSC::dateUTC):
   6878         * runtime/DateConversion.cpp:
   6879         (JSC::parseDate):
   6880         * runtime/DateConversion.h:
   6881         * runtime/DateInstance.cpp:
   6882         (JSC::DateInstance::gregorianDateTime):
   6883         * runtime/DateInstance.h:
   6884         * runtime/DateInstanceCache.h:
   6885         * runtime/DatePrototype.cpp:
   6886         (JSC::setNewValueFromTimeArgs):
   6887         (JSC::setNewValueFromDateArgs):
   6888         (JSC::dateProtoFuncSetYear):
   6889         * runtime/InitializeThreading.cpp:
   6890         (JSC::initializeThreadingOnce):
   6891         * runtime/JSGlobalData.cpp:
   6892         (JSC::JSGlobalData::JSGlobalData):
   6893         * runtime/JSGlobalData.h:
   6894         * wtf/DateMath.cpp:
   6895         (WTF::getCurrentUTCTime):
   6896         (WTF::getCurrentUTCTimeWithMicroseconds):
   6897         (WTF::getLocalTime):
   6898         (JSC::getUTCOffset): Use the new cache. Also, see below.
   6899         (JSC::gregorianDateTimeToMS):
   6900         (JSC::msToGregorianDateTime):
   6901         (JSC::initializeDates):
   6902         (JSC::parseDateFromNullTerminatedCharacters): Simplified the way this function
   6903         accounts for the local timezone offset, to accomodate our new caching API,
   6904         and a (possibly misguided) caller in WebCore. Also, see below.
   6905         * wtf/DateMath.h:
   6906         (JSC::GregorianDateTime::GregorianDateTime): Moved most of the code in
   6907         DateMath.* into the JSC namespace. The code needed to move so it could
   6908         naturally interact with ExecState and JSGlobalData to support caching.
   6909         Logically, it seemed right to move it, too, since this code is not really
   6910         as low-level as the WTF namespace might imply -- it implements a set of
   6911         date parsing and conversion quirks that are finely tuned to the JavaScript
   6912         language. Also removed the Mac OS X notify_* infrastructure.
   6913         
   6914         * wtf/CurrentTime.h:
   6915         (WTF::currentTimeMS):
   6916         (WTF::getLocalTime): Moved the rest of the DateMath code here, and renamed
   6917         it to make it consistent with WTF's currentTime function.
   6918 
   6919 2009-11-06  Gabor Loki  <loki (a] inf.u-szeged.hu>
   6920 
   6921         Unreviewed trivial buildfix after r50595.
   6922 
   6923         Rename the remaining rshiftPtr calls to rshift32
   6924 
   6925         * jit/JITArithmetic.cpp:
   6926         (JSC::JIT::emit_op_rshift):
   6927         * jit/JITInlineMethods.h:
   6928         (JSC::JIT::emitFastArithImmToInt):
   6929 
   6930 2009-11-06  Gavin Barraclough  <barraclough (a] apple.com>
   6931 
   6932         Reviewed by Oliver Hunt.
   6933 
   6934         Tidy up the shift methods on the macro-assembler interface.
   6935 
   6936         Currently behaviour of shifts of a magnitude > 0x1f is undefined.
   6937         Instead defined that all shifts are masked to this range.  This makes a lot of
   6938         practical sense, both since having undefined behaviour is not particularly
   6939         desirable, and because this behaviour is commonly required (particularly since
   6940         it is required bt ECMA-262 for shifts).
   6941 
   6942         Update the ARM assemblers to provide this behaviour.  Remove (now) redundant
   6943         masks from JITArithmetic, and remove rshiftPtr (this was used in case that
   6944         could be rewritten in a simpler form using rshift32, only optimized JSVALUE32
   6945         on x86-64, which uses JSVALUE64!)
   6946 
   6947         * assembler/MacroAssembler.h:
   6948         * assembler/MacroAssemblerARM.h:
   6949         (JSC::MacroAssemblerARM::lshift32):
   6950         (JSC::MacroAssemblerARM::rshift32):
   6951         * assembler/MacroAssemblerARMv7.h:
   6952         (JSC::MacroAssemblerARMv7::lshift32):
   6953         (JSC::MacroAssemblerARMv7::rshift32):
   6954         * assembler/MacroAssemblerX86_64.h:
   6955         * jit/JITArithmetic.cpp:
   6956         (JSC::JIT::emit_op_lshift):
   6957         (JSC::JIT::emit_op_rshift):
   6958 
   6959 2009-11-05  Gavin Barraclough  <barraclough (a] apple.com>
   6960 
   6961         Rubber Stamped by Oliver Hunt.
   6962 
   6963         Remove a magic number (1) from the JIT, instead compute the value with OBJECT_OFFSET.
   6964 
   6965         * jit/JITInlineMethods.h:
   6966         (JSC::JIT::emitPutJITStubArg):
   6967         (JSC::JIT::emitPutJITStubArgConstant):
   6968         (JSC::JIT::emitGetJITStubArg):
   6969         (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
   6970         * jit/JITStubCall.h:
   6971         (JSC::JITStubCall::JITStubCall):
   6972         (JSC::JITStubCall::getArgument):
   6973         * jit/JITStubs.h:
   6974 
   6975 2009-11-05  Zoltan Herczeg  <zherczeg (a] inf.u-szeged.hu>
   6976 
   6977         Reviewed by Gavin Barraclough.
   6978 
   6979         https://bugs.webkit.org/show_bug.cgi?id=31159
   6980         Fix branchDouble behaviour on ARM THUMB2 JIT.
   6981 
   6982         The x86 branchDouble behaviour is reworked, and all JIT
   6983         ports should follow the x86 port. See bug 31104 and 31151
   6984 
   6985         This patch contains a fix for the traditional ARM port
   6986 
   6987         * assembler/ARMAssembler.h:
   6988         (JSC::ARMAssembler::):
   6989         (JSC::ARMAssembler::fmrs_r):
   6990         (JSC::ARMAssembler::ftosid_r):
   6991         * assembler/MacroAssemblerARM.h:
   6992         (JSC::MacroAssemblerARM::):
   6993         (JSC::MacroAssemblerARM::branchDouble):
   6994         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
   6995 
   6996 2009-11-05  Chris Jerdonek  <chris.jerdonek (a] gmail.com>
   6997 
   6998         Reviewed by Eric Seidel.
   6999 
   7000         Removed the "this is part of the KDE project" comments from 
   7001         all *.h, *.cpp, *.idl, and *.pm files.
   7002         
   7003         https://bugs.webkit.org/show_bug.cgi?id=31167
   7004         
   7005         The maintenance and architecture page in the project wiki lists
   7006         this as a task.
   7007         
   7008         This change includes no changes or additions to test cases 
   7009         since the change affects only comments.
   7010         
   7011         * wtf/wince/FastMallocWince.h:
   7012 
   7013 2009-11-05  Gabor Loki  <loki (a] inf.u-szeged.hu>
   7014 
   7015         Reviewed by Gavin Barraclough.
   7016 
   7017         Use ARMv7 specific encoding for immediate constants on ARMv7 target
   7018         https://bugs.webkit.org/show_bug.cgi?id=31060
   7019 
   7020         * assembler/ARMAssembler.cpp:
   7021         (JSC::ARMAssembler::getOp2): Use INVALID_IMM
   7022         (JSC::ARMAssembler::getImm): Use encodeComplexImm for complex immediate
   7023         (JSC::ARMAssembler::moveImm): Ditto.
   7024         (JSC::ARMAssembler::encodeComplexImm): Encode a constant by one or two
   7025         instructions or a PC relative load.
   7026         * assembler/ARMAssembler.h: Use INVALID_IMM if a constant cannot be
   7027         encoded as an immediate constant.
   7028         (JSC::ARMAssembler::):
   7029         (JSC::ARMAssembler::movw_r): 16-bit immediate load
   7030         (JSC::ARMAssembler::movt_r): High halfword 16-bit immediate load
   7031         (JSC::ARMAssembler::getImm16Op2): Encode immediate constant for
   7032         movw_r and mowt_r
   7033 
   7034 2009-11-04  Mark Mentovai  <mark (a] chromium.org>
   7035 
   7036         Reviewed by Mark Rowe.
   7037 
   7038         Provide TARGETING_TIGER and TARGETING_LEOPARD as analogues to
   7039         BUILDING_ON_TIGER and BUILDING_ON_LEOPARD.  The TARGETING_ macros
   7040         consider the deployment target; the BUILDING_ON_ macros consider the
   7041         headers being built against.
   7042 
   7043         * wtf/Platform.h:
   7044 
   7045 2009-11-04  Gavin Barraclough  <barraclough (a] apple.com>
   7046 
   7047         Reviewed by Oliver Hunt.
   7048 
   7049         https://bugs.webkit.org/show_bug.cgi?id=31151
   7050         Fix branchDouble behaviour on ARM THUMB2 JIT.
   7051 
   7052         The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch
   7053         for DoubleEqualOrUnordered, however this is incorrect  ConditionEQ won't
   7054         branch on unordered operands.  Similarly, DoubleLessThanOrUnordered &
   7055         DoubleLessThanOrEqualOrUnordered use ARMv7Assembler::ConditionLO &
   7056         ARMv7Assembler::ConditionLS, whereas they should be using
   7057         ARMv7Assembler::ConditionLT & ARMv7Assembler::ConditionLE.
   7058 
   7059         Fix these, and fill out the missing DoubleConditions.
   7060 
   7061         * assembler/MacroAssemblerARMv7.h:
   7062         (JSC::MacroAssemblerARMv7::):
   7063         (JSC::MacroAssemblerARMv7::branchDouble):
   7064 
   7065 2009-11-04  Gavin Barraclough  <barraclough (a] apple.com>
   7066 
   7067         Rubber Stamped by Oliver Hunt.
   7068 
   7069         Enable native call optimizations on ARMv7.  (Existing ARM_TRADITIONAL
   7070         implementation was generic, worked perfectly, just needed turning on).
   7071 
   7072         * jit/JITOpcodes.cpp:
   7073         * wtf/Platform.h:
   7074 
   7075 2009-11-04  Gavin Barraclough  <barraclough (a] apple.com>
   7076 
   7077         Rubber Stamped by Mark Rowe, Oliver Hunt, and Sam Weinig.
   7078 
   7079         Add a missing assert to the ARMv7 JIT.
   7080 
   7081         * assembler/ARMv7Assembler.h:
   7082         (JSC::ARMThumbImmediate::ARMThumbImmediate):
   7083 
   7084 2009-11-04  Mark Rowe  <mrowe (a] apple.com>
   7085 
   7086         Rubber-stamped by Oliver Hunt.
   7087 
   7088         Remove bogus op_ prefix on dumped version of three opcodes.
   7089 
   7090         * bytecode/CodeBlock.cpp:
   7091         (JSC::CodeBlock::dump):
   7092 
   7093 2009-11-04  Mark Rowe  <mrowe (a] apple.com>
   7094 
   7095         Reviewed by Sam Weinig.
   7096 
   7097         Fix dumping of constants in bytecode so that they aren't printed as large positive register numbers.
   7098 
   7099         We do this by having the registerName function return information about the constant if the register
   7100         number corresponds to a constant.  This requires that registerName, and several functions that call it,
   7101         be converted to member functions of CodeBlock so that the constant value can be retrieved.  The
   7102         ExecState also needs to be threaded down through these functions so that it can be passed on to
   7103         constantName when needed.
   7104 
   7105         * bytecode/CodeBlock.cpp:
   7106         (JSC::constantName):
   7107         (JSC::CodeBlock::registerName):
   7108         (JSC::CodeBlock::printUnaryOp):
   7109         (JSC::CodeBlock::printBinaryOp):
   7110         (JSC::CodeBlock::printConditionalJump):
   7111         (JSC::CodeBlock::printGetByIdOp):
   7112         (JSC::CodeBlock::printPutByIdOp):
   7113         (JSC::CodeBlock::dump):
   7114         * bytecode/CodeBlock.h:
   7115         (JSC::CodeBlock::isConstantRegisterIndex):
   7116 
   7117 2009-11-04  Pavel Heimlich  <tropikhajma (a] gmail.com>
   7118 
   7119         Reviewed by Alexey Proskuryakov.
   7120 
   7121         https://bugs.webkit.org/show_bug.cgi?id=30647
   7122         Solaris build failure due to strnstr.
   7123 
   7124         * wtf/StringExtras.h: Enable strnstr on Solaris, too.
   7125 
   7126 2009-11-04  Gavin Barraclough  <barraclough (a] apple.com>
   7127 
   7128         Reviewed by Oliver Hunt.
   7129 
   7130         https://bugs.webkit.org/show_bug.cgi?id=31104
   7131         Refactor x86-specific behaviour out of the JIT.
   7132 
   7133         - Add explicit double branch conditions for ordered and unordered comparisons (presently the brehaviour is a mix).
   7134         - Refactor double to int conversion out into the MacroAssembler.
   7135         - 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.
   7136         - 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.
   7137 
   7138         * assembler/MacroAssemblerARM.h:
   7139         (JSC::MacroAssemblerARM::):
   7140         * assembler/MacroAssemblerARMv7.h:
   7141         (JSC::MacroAssemblerARMv7::):
   7142         * assembler/MacroAssemblerX86Common.h:
   7143         (JSC::MacroAssemblerX86Common::):
   7144         (JSC::MacroAssemblerX86Common::convertInt32ToDouble):
   7145         (JSC::MacroAssemblerX86Common::branchDouble):
   7146         (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
   7147         * jit/JITArithmetic.cpp:
   7148         (JSC::JIT::emitBinaryDoubleOp):
   7149         (JSC::JIT::emit_op_div):
   7150         (JSC::JIT::emitSlow_op_jnless):
   7151         (JSC::JIT::emitSlow_op_jnlesseq):
   7152         * jit/JITOpcodes.cpp:
   7153         (JSC::JIT::emit_op_jfalse):
   7154 
   7155 2009-11-04  Mark Mentovai  <mark (a] chromium.org>
   7156 
   7157         Reviewed by Eric Seidel.
   7158 
   7159         Remove BUILDING_ON_LEOPARD from JavaScriptCore.gyp.  This is supposed
   7160         to be set as needed only in wtf/Platform.h.
   7161 
   7162         * JavaScriptCore.gyp/JavaScriptCore.gyp:
   7163 
   7164 2009-11-02  Oliver Hunt  <oliver (a] apple.com>
   7165 
   7166         Reviewed by Gavin Barraclough.
   7167 
   7168         REGRESSION (r48573): JSC may incorrectly cache chain lookups with a dictionary at the head of the chain
   7169         https://bugs.webkit.org/show_bug.cgi?id=31045
   7170 
   7171         Add guards to prevent caching of prototype chain lookups with dictionaries at the
   7172         head of the chain.  Also add a few tighter assertions to cached prototype lookups
   7173         to catch this in future.
   7174 
   7175         * interpreter/Interpreter.cpp:
   7176         (JSC::Interpreter::tryCacheGetByID):
   7177         (JSC::Interpreter::privateExecute):
   7178         * jit/JITStubs.cpp:
   7179         (JSC::JITThunks::tryCacheGetByID):
   7180 
   7181 2009-11-02  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   7182 
   7183         Reviewed by Darin Adler.
   7184 
   7185         PLATFORM(CF) should be set when building for Qt on Darwin
   7186         https://bugs.webkit.org/show_bug.cgi?id=23671
   7187 
   7188         * wtf/Platform.h: Turn on CF support if both QT and DARWIN
   7189         platforms are defined.
   7190 
   7191 2009-11-02  Dmitry Titov  <dimich (a] chromium.org>
   7192 
   7193         Reviewed by David Levin.
   7194 
   7195         Remove threadsafe refcounting from tasks used with WTF::MessageQueue.
   7196         https://bugs.webkit.org/show_bug.cgi?id=30612
   7197 
   7198         * wtf/MessageQueue.h:
   7199         (WTF::MessageQueue::alwaysTruePredicate):
   7200         (WTF::MessageQueue::~MessageQueue):
   7201         (WTF::MessageQueue::append):
   7202         (WTF::MessageQueue::appendAndCheckEmpty):
   7203         (WTF::MessageQueue::prepend):
   7204         (WTF::MessageQueue::waitForMessage):
   7205         (WTF::MessageQueue::waitForMessageFilteredWithTimeout):
   7206         (WTF::MessageQueue::tryGetMessage):
   7207         (WTF::MessageQueue::removeIf):
   7208         The MessageQueue is changed to act as a queue of OwnPtr<DataType>. It takes ownership
   7209         of posted tasks and passes it to the new owner (in another thread) when the task is fetched.
   7210         All methods have arguments of type PassOwnPtr<DataType> and return the same type.
   7211 
   7212         * wtf/Threading.cpp:
   7213         (WTF::createThread):
   7214         Superficial change to trigger rebuild of JSC project on Windows,
   7215         workaround for https://bugs.webkit.org/show_bug.cgi?id=30890
   7216 
   7217 2009-10-30  Geoffrey Garen  <ggaren (a] apple.com>
   7218 
   7219         Reviewed by Oliver Hunt.
   7220 
   7221         Fixed failing layout test: restore a special case I accidentally deleted.
   7222 
   7223         * runtime/DatePrototype.cpp:
   7224         (JSC::setNewValueFromDateArgs): In the case of applying a change to a date
   7225         that is NaN, reset the date to 0 *and* then apply the change; don't just
   7226         reset the date to 0.
   7227 
   7228 2009-10-30  Geoffrey Garen  <ggaren (a] apple.com>
   7229 
   7230         Windows build fix: update for object-to-pointer change.
   7231 
   7232         * runtime/DatePrototype.cpp:
   7233         (JSC::formatLocaleDate):
   7234 
   7235 2009-10-29  Geoffrey Garen  <ggaren (a] apple.com>
   7236 
   7237         Reviewed by Darin Adler.
   7238 
   7239         https://bugs.webkit.org/show_bug.cgi?id=30942
   7240         Use pointers instead of copies to pass GregorianDateTime objects around.
   7241         
   7242         SunSpider reports a shocking 4.5% speedup on date-format-xparb, and 1.3%
   7243         speedup on date-format-tofte.
   7244 
   7245         * runtime/DateInstance.cpp:
   7246         (JSC::DateInstance::gregorianDateTime):
   7247         * runtime/DateInstance.h:
   7248         * runtime/DatePrototype.cpp:
   7249         (JSC::formatLocaleDate):
   7250         (JSC::dateProtoFuncToString):
   7251         (JSC::dateProtoFuncToUTCString):
   7252         (JSC::dateProtoFuncToISOString):
   7253         (JSC::dateProtoFuncToDateString):
   7254         (JSC::dateProtoFuncToTimeString):
   7255         (JSC::dateProtoFuncGetFullYear):
   7256         (JSC::dateProtoFuncGetUTCFullYear):
   7257         (JSC::dateProtoFuncToGMTString):
   7258         (JSC::dateProtoFuncGetMonth):
   7259         (JSC::dateProtoFuncGetUTCMonth):
   7260         (JSC::dateProtoFuncGetDate):
   7261         (JSC::dateProtoFuncGetUTCDate):
   7262         (JSC::dateProtoFuncGetDay):
   7263         (JSC::dateProtoFuncGetUTCDay):
   7264         (JSC::dateProtoFuncGetHours):
   7265         (JSC::dateProtoFuncGetUTCHours):
   7266         (JSC::dateProtoFuncGetMinutes):
   7267         (JSC::dateProtoFuncGetUTCMinutes):
   7268         (JSC::dateProtoFuncGetSeconds):
   7269         (JSC::dateProtoFuncGetUTCSeconds):
   7270         (JSC::dateProtoFuncGetTimezoneOffset):
   7271         (JSC::setNewValueFromTimeArgs):
   7272         (JSC::setNewValueFromDateArgs):
   7273         (JSC::dateProtoFuncSetYear):
   7274         (JSC::dateProtoFuncGetYear): Renamed getGregorianDateTime to gregorianDateTime,
   7275         since it no longer has an out parameter. Uses 0 to indicate invalid dates.
   7276 
   7277 2009-10-30  Zoltan Horvath  <zoltan (a] webkit.org>
   7278 
   7279         Reviewed by Darin Adler.
   7280 
   7281         Allow custom memory allocation control for JavaScriptCore's ListHashSet
   7282         https://bugs.webkit.org/show_bug.cgi?id=30853
   7283 
   7284         Inherits ListHashSet class from FastAllocBase because it is
   7285         instantiated by 'new' in WebCore/rendering/RenderBlock.cpp:1813.
   7286 
   7287         * wtf/ListHashSet.h:
   7288 
   7289 2009-10-30  Oliver Hunt  <oliver (a] apple.com>
   7290 
   7291         Reviewed by Gavin Barraclough.
   7292 
   7293         Regression: crash enumerating properties of an object with getters or setters
   7294         https://bugs.webkit.org/show_bug.cgi?id=30948
   7295 
   7296         Add a guard to prevent us trying to cache property enumeration on
   7297         objects with getters or setters.
   7298 
   7299         * runtime/JSPropertyNameIterator.cpp:
   7300         (JSC::JSPropertyNameIterator::create):
   7301 
   7302 2009-10-30  Roland Steiner  <rolandsteiner (a] chromium.org>
   7303 
   7304         Reviewed by Eric Seidel.
   7305 
   7306         Remove ENABLE_RUBY guards as discussed with Dave Hyatt and Maciej Stachowiak.
   7307 
   7308         Bug 28420 -  Implement HTML5 <ruby> rendering
   7309         (https://bugs.webkit.org/show_bug.cgi?id=28420)
   7310  
   7311         No new tests (no functional change).
   7312 
   7313         * Configurations/FeatureDefines.xcconfig:
   7314 
   7315 2009-10-29  Oliver Hunt  <oliver (a] apple.com>
   7316 
   7317         Reviewed by Maciej Stachowiak.
   7318 
   7319         REGRESSION (r50218-r50262): E*TRADE accounts page is missing content
   7320         https://bugs.webkit.org/show_bug.cgi?id=30947
   7321         <rdar://problem/7348833>
   7322 
   7323         The logic for flagging that a structure has non-enumerable properties
   7324         was in addPropertyWithoutTransition, rather than in the core Structure::put
   7325         method.  Despite this I was unable to produce a testcase that caused
   7326         the failure that etrade was experiencing, but the new assertion in
   7327         getEnumerablePropertyNames triggers on numerous layout tests without
   7328         the fix, so in effecti all for..in enumeration in any test ends up
   7329         doing the required consistency check.
   7330 
   7331         * runtime/Structure.cpp:
   7332         (JSC::Structure::addPropertyWithoutTransition):
   7333         (JSC::Structure::put):
   7334         (JSC::Structure::getEnumerablePropertyNames):
   7335         (JSC::Structure::checkConsistency):
   7336 
   7337 2009-10-29  Gabor Loki  <loki (a] inf.u-szeged.hu>
   7338 
   7339         Reviewed by Gavin Barraclough.
   7340 
   7341         Add cacheFlush support for Thumb-2 on Linux
   7342         https://bugs.webkit.org/show_bug.cgi?id=30865
   7343 
   7344         * jit/ExecutableAllocator.h:
   7345         (JSC::ExecutableAllocator::cacheFlush):
   7346 
   7347 2009-10-28  Gavin Barraclough  <barraclough (a] apple.com>
   7348 
   7349         Reviewed by Oliver Hunt.
   7350 
   7351         JSC JIT on ARMv7 cannot link jumps >16Mb range
   7352         https://bugs.webkit.org/show_bug.cgi?id=30891
   7353 
   7354         Start planing all relative jumps as move-32-bit-immediate-to-register-BX.
   7355         In the cases where the jump would fall within a relative jump range, use a relative jump.
   7356 
   7357         * JavaScriptCore.xcodeproj/project.pbxproj:
   7358         * assembler/ARMv7Assembler.h:
   7359         (JSC::ARMv7Assembler::~ARMv7Assembler):
   7360         (JSC::ARMv7Assembler::LinkRecord::LinkRecord):
   7361         (JSC::ARMv7Assembler::):
   7362         (JSC::ARMv7Assembler::executableCopy):
   7363         (JSC::ARMv7Assembler::linkJump):
   7364         (JSC::ARMv7Assembler::relinkJump):
   7365         (JSC::ARMv7Assembler::setInt32):
   7366         (JSC::ARMv7Assembler::isB):
   7367         (JSC::ARMv7Assembler::isBX):
   7368         (JSC::ARMv7Assembler::isMOV_imm_T3):
   7369         (JSC::ARMv7Assembler::isMOVT):
   7370         (JSC::ARMv7Assembler::isNOP_T1):
   7371         (JSC::ARMv7Assembler::isNOP_T2):
   7372         (JSC::ARMv7Assembler::linkJumpAbsolute):
   7373         (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmFirst):
   7374         (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmSecond):
   7375         (JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp5i6Imm4Reg4EncodedImm):
   7376         * assembler/MacroAssemblerARMv7.h:
   7377         (JSC::MacroAssemblerARMv7::makeJump):
   7378         (JSC::MacroAssemblerARMv7::makeBranch):
   7379         * jit/JIT.h:
   7380         * wtf/Platform.h:
   7381 
   7382 2009-10-28  Oliver Hunt  <oliver (a] apple.com>
   7383 
   7384         Reviewed by Geoff Garen.
   7385 
   7386         Improve for..in enumeration performance
   7387         https://bugs.webkit.org/show_bug.cgi?id=30887
   7388 
   7389         Improve indexing of an object with a for..in iterator by
   7390         identifying cases where get_by_val is being used with a iterator
   7391         as the subscript and replace it with a new get_by_pname
   7392         bytecode.  get_by_pname then optimizes lookups that directly access
   7393         the base object.
   7394 
   7395         * bytecode/CodeBlock.cpp:
   7396         (JSC::CodeBlock::dump):
   7397         * bytecode/Opcode.h:
   7398         * bytecompiler/BytecodeGenerator.cpp:
   7399         (JSC::BytecodeGenerator::emitGetByVal):
   7400         * bytecompiler/BytecodeGenerator.h:
   7401         (JSC::BytecodeGenerator::pushOptimisedForIn):
   7402         (JSC::BytecodeGenerator::popOptimisedForIn):
   7403         * interpreter/Interpreter.cpp:
   7404         (JSC::Interpreter::privateExecute):
   7405         * jit/JIT.cpp:
   7406         (JSC::JIT::privateCompileMainPass):
   7407         (JSC::JIT::privateCompileSlowCases):
   7408         * jit/JIT.h:
   7409         * jit/JITPropertyAccess.cpp:
   7410         (JSC::JIT::compileGetDirectOffset):
   7411         (JSC::JIT::emit_op_get_by_pname):
   7412         (JSC::JIT::emitSlow_op_get_by_pname):
   7413         * parser/Nodes.cpp:
   7414         (JSC::ForInNode::emitBytecode):
   7415         * runtime/JSObject.h:
   7416         * runtime/JSPropertyNameIterator.cpp:
   7417         (JSC::JSPropertyNameIterator::create):
   7418         * runtime/JSPropertyNameIterator.h:
   7419         (JSC::JSPropertyNameIterator::getOffset):
   7420         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
   7421         * runtime/JSValue.h:
   7422         (JSC::JSValue::):
   7423         * runtime/Structure.cpp:
   7424         (JSC::Structure::addPropertyTransition):
   7425         (JSC::Structure::changePrototypeTransition):
   7426         (JSC::Structure::despecifyFunctionTransition):
   7427         (JSC::Structure::addAnonymousSlotsTransition):
   7428         (JSC::Structure::getterSetterTransition):
   7429         (JSC::Structure::toDictionaryTransition):
   7430         (JSC::Structure::addPropertyWithoutTransition):
   7431           Track the existence (or not) of non-enumerable properties.
   7432         * runtime/Structure.h:
   7433         (JSC::Structure::propertyStorageCapacity):
   7434         (JSC::Structure::propertyStorageSize):
   7435         (JSC::Structure::hasNonEnumerableProperties):
   7436         (JSC::Structure::hasAnonymousSlots):
   7437 
   7438 2009-10-28  Dmitry Titov  <dimich (a] chromium.org>
   7439 
   7440         Not reviewed, attemp to fix Windows build.
   7441 
   7442         Touch the cpp file to cause recompile.
   7443 
   7444         * wtf/Threading.cpp:
   7445         (WTF::threadEntryPoint):
   7446 
   7447 2009-10-28  Dmitry Titov  <dimich (a] chromium.org>
   7448 
   7449         Reviewed by David Levin.
   7450 
   7451         https://bugs.webkit.org/show_bug.cgi?id=30805
   7452         Add MessageQueue::removeIf(Predicate&) to remove certain tasks without pulling them from the queue.
   7453         Existing Database tests cover this since Database removes tasks when it is stopped.
   7454 
   7455         * wtf/MessageQueue.h:
   7456         (WTF::::removeIf):
   7457 
   7458 2009-10-28  Afonso R. Costa Jr.  <afonso.costa (a] openbossa.org>
   7459 
   7460         Reviewed by Oliver Hunt.
   7461 
   7462         [Qt] Enable YARR when YARR_JIT is enabled
   7463         https://bugs.webkit.org/show_bug.cgi?id=30730
   7464 
   7465         When enabling or disabling JIT using JAVASCRIPTCORE_JIT, the ENABLE_YARR should
   7466         be toggled also.
   7467 
   7468         * JavaScriptCore.pri:
   7469 
   7470 2009-10-24  Martin Robinson  <martin.james.robinson (a] gmail.com>
   7471 
   7472         Reviewed by Oliver Hunt.
   7473 
   7474         Fix strict aliasing warning by switching reinterpret_cast to bitwise_cast.
   7475 
   7476         strict-aliasing warnings in JSFunction.h
   7477         https://bugs.webkit.org/show_bug.cgi?id=27869
   7478 
   7479         * runtime/JSFunction.h:
   7480         (JSC::JSFunction::nativeFunction):
   7481         (JSC::JSFunction::scopeChain):
   7482         (JSC::JSFunction::setScopeChain):
   7483         (JSC::JSFunction::setNativeFunction):
   7484 
   7485 2009-10-28  Jan-Arve Sther <jan-arve.saether (a] nokia.com>
   7486 
   7487         Reviewed by Tor Arne Vestb.
   7488 
   7489         Build-fix for 64-bit Windows
   7490 
   7491         * wtf/Platform.h: Make sure to use WTF_USE_JSVALUE64
   7492 
   7493 2009-10-28  Gavin Barraclough  <barraclough (a] apple.com>
   7494 
   7495         Reviewed by NOBODY (build fix!).
   7496 
   7497         * jit/JIT.h:
   7498 
   7499 2009-10-26  Holger Hans Peter Freyther  <zecke (a] selfish.org>
   7500 
   7501         Rubber-stamped by Darin Adler.
   7502 
   7503         Export fastMalloc, fastCalloc, fastRealloc and fastFree on GCC/Unix
   7504         https://bugs.webkit.org/show_bug.cgi?id=30769
   7505 
   7506         When using -fvisibility=hidden to hide all internal symbols by default
   7507         the malloc symbols will be hidden as well. For memory instrumentation
   7508         it is needed to provide an instrumented version of these symbols and
   7509         override the normal routines and by changing the visibility back to
   7510         default this becomes possible.
   7511 
   7512         The only other solution would be to use system malloc instead of the
   7513         TCmalloc implementation but this will not allow to analyze memory
   7514         behavior with the default allocator.
   7515 
   7516         * wtf/FastMalloc.h: Define WTF_FAST_MALLOC_EXPORT for GCC and !darwin
   7517 
   7518 2009-10-27  Gavin Barraclough  <barraclough (a] apple.com>
   7519 
   7520         Rubber Stamped by Samuel Q. Weinig.
   7521 
   7522         Make the asserts protecting the offsets in the JIT more descriptive.
   7523 
   7524         * jit/JIT.h:
   7525         * jit/JITCall.cpp:
   7526         (JSC::JIT::compileOpCall):
   7527         * jit/JITPropertyAccess.cpp:
   7528         (JSC::JIT::emit_op_method_check):
   7529         (JSC::JIT::compileGetByIdHotPath):
   7530         (JSC::JIT::compileGetByIdSlowCase):
   7531         (JSC::JIT::emit_op_put_by_id):
   7532 
   7533 2009-10-27  Geoffrey Garen  <ggaren (a] apple.com>
   7534 
   7535         Reviewed by Sam Weinig.
   7536 
   7537         A little bit of refactoring in the date code.
   7538 
   7539         * JavaScriptCore.exp: Don't export this unused symbol.
   7540 
   7541         * runtime/DateConstructor.cpp:
   7542         (JSC::constructDate):
   7543 
   7544         * runtime/DateInstance.cpp:
   7545         (JSC::DateInstance::DateInstance):
   7546         * runtime/DateInstance.h: Removed some unused functions. Changed the default
   7547         constructor to ensure that a DateInstance is always initialized.
   7548 
   7549         * runtime/DatePrototype.cpp:
   7550         (JSC::DatePrototype::DatePrototype): Pass an initializer to our constructor,
   7551         since it now requires one.
   7552 
   7553         * wtf/DateMath.cpp:
   7554         (WTF::msToGregorianDateTime): Only compute our offset from UTC if our
   7555         output will require it. Otherwise, our offset is 0.
   7556 
   7557 2009-10-27  Geoffrey Garen  <ggaren (a] apple.com>
   7558 
   7559         Build fix: Mark DateInstaceCache.h private, so other frameworks can see it.
   7560 
   7561         * JavaScriptCore.xcodeproj/project.pbxproj:
   7562 
   7563 2009-10-27  Geoffrey Garen  <ggaren (a] apple.com>
   7564 
   7565         Build fix: re-readded this file.
   7566 
   7567         * runtime/DateInstanceCache.h: Added.
   7568         (JSC::DateInstanceData::create):
   7569         (JSC::DateInstanceData::DateInstanceData):
   7570         (JSC::DateInstanceCache::DateInstanceCache):
   7571         (JSC::DateInstanceCache::add):
   7572         (JSC::DateInstanceCache::lookup):
   7573 
   7574 2009-10-27  Geoffrey Garen  <ggaren (a] apple.com>
   7575 
   7576         Reviewed by Darin Adler and Oliver Hunt.
   7577 
   7578         https://bugs.webkit.org/show_bug.cgi?id=30800
   7579         Cache recently computed date data.
   7580         
   7581         SunSpider reports a ~0.5% speedup, mostly from date-format-tofte.js.
   7582 
   7583         * GNUmakefile.am:
   7584         * JavaScriptCore.gypi:
   7585         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
   7586         * JavaScriptCore.xcodeproj/project.pbxproj: Added new file.
   7587 
   7588         * runtime/DateInstance.cpp:
   7589         (JSC::DateInstance::DateInstance):
   7590         (JSC::DateInstance::getGregorianDateTime): Use the shared cache.
   7591 
   7592         * runtime/DateInstance.h: Renamed m_cache to m_data, to avoid the confusion
   7593         of a "cache cache".
   7594 
   7595         * runtime/DatePrototype.cpp:
   7596         (JSC::formatLocaleDate):
   7597         (JSC::dateProtoFuncToString):
   7598         (JSC::dateProtoFuncToUTCString):
   7599         (JSC::dateProtoFuncToISOString):
   7600         (JSC::dateProtoFuncToDateString):
   7601         (JSC::dateProtoFuncToTimeString):
   7602         (JSC::dateProtoFuncGetFullYear):
   7603         (JSC::dateProtoFuncGetUTCFullYear):
   7604         (JSC::dateProtoFuncToGMTString):
   7605         (JSC::dateProtoFuncGetMonth):
   7606         (JSC::dateProtoFuncGetUTCMonth):
   7607         (JSC::dateProtoFuncGetDate):
   7608         (JSC::dateProtoFuncGetUTCDate):
   7609         (JSC::dateProtoFuncGetDay):
   7610         (JSC::dateProtoFuncGetUTCDay):
   7611         (JSC::dateProtoFuncGetHours):
   7612         (JSC::dateProtoFuncGetUTCHours):
   7613         (JSC::dateProtoFuncGetMinutes):
   7614         (JSC::dateProtoFuncGetUTCMinutes):
   7615         (JSC::dateProtoFuncGetSeconds):
   7616         (JSC::dateProtoFuncGetUTCSeconds):
   7617         (JSC::dateProtoFuncGetTimezoneOffset):
   7618         (JSC::setNewValueFromTimeArgs):
   7619         (JSC::setNewValueFromDateArgs):
   7620         (JSC::dateProtoFuncSetYear):
   7621         (JSC::dateProtoFuncGetYear): Pass an ExecState to these functions, so they
   7622         can access the DateInstanceCache.
   7623 
   7624         * runtime/JSGlobalData.h: Keep a DateInstanceCache.
   7625 
   7626 2009-10-27  James Robinson  <jamesr (a] chromium.org>
   7627 
   7628         Reviewed by Darin Fisher.
   7629 
   7630         Ensures that JavaScriptCore/wtf/CurrentTime.cpp is not built in PLATFORM(CHROMIUM) builds.
   7631 
   7632         Chromium uses a different method to calculate the current time than is used in
   7633         JavaScriptCore/wtf/CurrentTime.cpp. This can lead to time skew when calls to currentTime() and Chromium's time
   7634         function are mixed.  In particular, timers can get scheduled in the past which leads to 100% CPU use.
   7635         See http://code.google.com/p/chromium/issues/detail?id=25892 for an example.
   7636 
   7637         https://bugs.webkit.org/show_bug.cgi?id=30833
   7638 
   7639         * JavaScriptCore.gyp/JavaScriptCore.gyp:
   7640         * wtf/CurrentTime.cpp:
   7641 
   7642 2009-10-27  Peter Varga  <pvarga (a] inf.u-szeged.hu>
   7643 
   7644         Rubber-stamped by Tor Arne Vestb.
   7645 
   7646         Fix typo in RegexInterpreter.cpp and RegexJIT.cpp alterantive to
   7647         alternative.
   7648 
   7649         * yarr/RegexInterpreter.cpp:
   7650         (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction):
   7651         (JSC::Yarr::ByteCompiler::alternativeDisjunction):
   7652         (JSC::Yarr::ByteCompiler::emitDisjunction):
   7653         * yarr/RegexJIT.cpp:
   7654         (JSC::Yarr::RegexGenerator::generateDisjunction):
   7655 
   7656 2009-10-26  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   7657 
   7658         Reviewed by Darin Adler.
   7659 
   7660         Make .rc files compile on Windows without depending on MFC headers
   7661         https://bugs.webkit.org/show_bug.cgi?id=30750
   7662 
   7663         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Use
   7664         winresrc.h because it exists even when MFC is not installed, and is
   7665         all that's needed here.
   7666 
   7667 2009-10-26  Gabor Loki  <loki (a] inf.u-szeged.hu>
   7668 
   7669         Reviewed by Gavin Barraclough.
   7670 
   7671         The thunkReturnAddress is on JITStackFrame on ARM JIT as well
   7672         https://bugs.webkit.org/show_bug.cgi?id=30782
   7673 
   7674         Move the thunkReturnAddress from top of the stack into the JITStackFrame
   7675         structure. This is a requirement for JSValue32_64 support on ARM.
   7676 
   7677         * assembler/MacroAssemblerARM.h:
   7678         (JSC::MacroAssemblerARM::ret): Return with link register
   7679         (JSC::MacroAssemblerARM::prepareCall): Store the return address in link register
   7680         * jit/JIT.h: Remove unused ctiReturnRegister
   7681         * jit/JITInlineMethods.h: Same as ARMv7
   7682         (JSC::JIT::restoreArgumentReference): Ditto.
   7683         (JSC::JIT::restoreArgumentReferenceForTrampoline): Ditto.
   7684         * jit/JITOpcodes.cpp: Remove ctiReturnRegister related instruction
   7685         * jit/JITStubs.cpp: Store thunkReturnAddress on JITStackFrame. Use
   7686         small trampoline functions which handle return addresses for each
   7687         CTI_STUB_FUNCTION.
   7688         * jit/JITStubs.h: Store thunkReturnAddress on JITStackFrame
   7689         (JSC::JITStackFrame::returnAddressSlot): Return with the address of thunkReturnAddress
   7690         * yarr/RegexJIT.cpp:
   7691         (JSC::Yarr::RegexGenerator::generateEnter): Remove the unnecessary instruction
   7692 
   7693 2009-10-26  Steve Block  <steveblock (a] google.com>
   7694 
   7695         Reviewed by Darin Adler.
   7696 
   7697         Adds ability to disable ReadWriteLock on platforms (eg Android) that use pthreads but do not support pthread_rwlock.
   7698         https://bugs.webkit.org/show_bug.cgi?id=30713
   7699 
   7700         * wtf/Platform.h: Modified. Defines HAVE_PTHREAD_RWLOCK for all platforms currently using pthreads.
   7701         * wtf/Threading.h: Modified. Use pthread_rwlock_t only when HAVE_PTHREAD_RWLOCK is defined.
   7702         * wtf/ThreadingPthreads.cpp: Modified. Build ReadWriteLock methods only when HAVE_PTHREAD_RWLOCK is defined.
   7703 
   7704 2009-10-24  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   7705 
   7706         Reviewed by Holger Freyther.
   7707 
   7708         [Qt] [Symbian] Set the capability and memory required to run QtWebKit for Symbian
   7709         https://bugs.webkit.org/show_bug.cgi?id=30476
   7710 
   7711         Assign ReadUserData WriteUserData NetworkServices Symbian capabilities
   7712         to jsc.exe.
   7713 
   7714         * jsc.pro:
   7715 
   7716 2009-10-23  Steve Block  <steveblock (a] google.com>
   7717 
   7718         Reviewed by Dmitry Titov.
   7719 
   7720         Fixes a leak in createThreadInternal on Android.
   7721         https://bugs.webkit.org/show_bug.cgi?id=30698
   7722 
   7723         * wtf/ThreadingPthreads.cpp: Modified.
   7724         (WTF::createThreadInternal): Avoid leaking a ThreadData object on failure.
   7725 
   7726 2009-10-22  Geoffrey Garen  <ggaren (a] apple.com>
   7727 
   7728         Reviewed by Alexey Proskuryakov.
   7729 
   7730         Fixed ASSERT when opening Safari's Caches window while the Web Inspector
   7731         is open.
   7732 
   7733         * runtime/Collector.cpp:
   7734         (JSC::typeName): Added two new types to the type name list in the Collector.
   7735         These types have been around for a while, but nobody remembered to consider them here.
   7736 
   7737         * runtime/JSCell.h:
   7738         (JSC::JSCell::isPropertyNameIterator):
   7739         * runtime/JSPropertyNameIterator.h:
   7740         (JSC::JSPropertyNameIterator::isPropertyNameIterator): Give the Collector
   7741         a way to tell if a cell is a JSPropertyNameIterator.
   7742 
   7743 2009-10-22  Steve Falkenburg  <sfalken (a] apple.com>
   7744 
   7745         Reviewed by Jon Honeycutt.
   7746 
   7747         https://bugs.webkit.org/show_bug.cgi?id=30686
   7748         Remove debug-specific def file.
   7749         Only Debug_All target uses JavaScriptCore_debug.dll naming, and since
   7750         that target is only used internally, maintaining two files just to
   7751         suppress a single link warning isn't worthwhile.
   7752 
   7753         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
   7754         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Removed.
   7755 
   7756 2009-10-21  Jon Honeycutt  <jhoneycutt (a] apple.com>
   7757 
   7758         <rdar://problem/7270320> Screenshots of off-screen plug-ins are blank
   7759         <rdar://problem/7270314> After halting a transparent PluginView on
   7760         Windows, the transparency is applied twice
   7761 
   7762         Reviewed by Dan Bernstein.
   7763 
   7764         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   7765         Export WTF::deleteOwnedPtr(HDC).
   7766 
   7767         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   7768         Ditto.
   7769 
   7770 2009-10-20  Geoffrey Garen  <ggaren (a] apple.com>
   7771 
   7772         Windows build fix: updated variable name.
   7773 
   7774         * runtime/DatePrototype.cpp:
   7775         (JSC::formatLocaleDate):
   7776 
   7777 2009-10-20  Geoffrey Garen  <ggaren (a] apple.com>
   7778 
   7779         Reviewed by Mark Rowe.
   7780 
   7781         * jit/JITOpcodes.cpp:
   7782         (JSC::JIT::emit_op_next_pname): Slightly tweaked this #ifdef to match the
   7783         size of a JSValue because m_jsStrings is an array of JSValues.
   7784 
   7785 2009-10-20  Geoffrey Garen  <ggaren (a] apple.com>
   7786 
   7787         Reviewed by Mark Rowe.
   7788 
   7789         Fixed a 64-bit regression caused by the fix for
   7790         https://bugs.webkit.org/show_bug.cgi?id=30570.
   7791 
   7792         * jit/JITOpcodes.cpp:
   7793         (JSC::JIT::emit_op_next_pname): Use TimesEight stepping on 64-bit, since
   7794         64-bit pointers are eight bytes long.
   7795 
   7796 2009-10-20  Geoffrey Garen  <ggaren (a] apple.com>
   7797 
   7798         Reviewed by Sam Weinig.
   7799 
   7800         Refactored DateInstance::msToGregorianDateTime so that a DateInstance's
   7801         caller doesn't need to supply the DateInstance's own internal value to
   7802         the DateInstance.
   7803 
   7804         * runtime/DateInstance.cpp:
   7805         (JSC::DateInstance::getGregorianDateTime): Renamed from "msToGregorianDateTime".
   7806 
   7807         * runtime/DateInstance.h:
   7808         * runtime/DatePrototype.cpp:
   7809         (JSC::formatLocaleDate):
   7810         (JSC::dateProtoFuncToString):
   7811         (JSC::dateProtoFuncToUTCString):
   7812         (JSC::dateProtoFuncToISOString):
   7813         (JSC::dateProtoFuncToDateString):
   7814         (JSC::dateProtoFuncToTimeString):
   7815         (JSC::dateProtoFuncToLocaleString):
   7816         (JSC::dateProtoFuncToLocaleDateString):
   7817         (JSC::dateProtoFuncToLocaleTimeString):
   7818         (JSC::dateProtoFuncGetTime):
   7819         (JSC::dateProtoFuncGetFullYear):
   7820         (JSC::dateProtoFuncGetUTCFullYear):
   7821         (JSC::dateProtoFuncToGMTString):
   7822         (JSC::dateProtoFuncGetMonth):
   7823         (JSC::dateProtoFuncGetUTCMonth):
   7824         (JSC::dateProtoFuncGetDate):
   7825         (JSC::dateProtoFuncGetUTCDate):
   7826         (JSC::dateProtoFuncGetDay):
   7827         (JSC::dateProtoFuncGetUTCDay):
   7828         (JSC::dateProtoFuncGetHours):
   7829         (JSC::dateProtoFuncGetUTCHours):
   7830         (JSC::dateProtoFuncGetMinutes):
   7831         (JSC::dateProtoFuncGetUTCMinutes):
   7832         (JSC::dateProtoFuncGetSeconds):
   7833         (JSC::dateProtoFuncGetUTCSeconds):
   7834         (JSC::dateProtoFuncGetTimezoneOffset):
   7835         (JSC::setNewValueFromTimeArgs):
   7836         (JSC::setNewValueFromDateArgs):
   7837         (JSC::dateProtoFuncSetYear):
   7838         (JSC::dateProtoFuncGetYear): Also renamed "utc" to "outputIsUTC", for clarity.
   7839 
   7840 2009-10-20  Gabor Loki  <loki (a] inf.u-szeged.hu>
   7841 
   7842         Reviewed by Geoffrey Garen.
   7843 
   7844         The op_next_pname should use 4 bytes addressing mode in case of JSValue32
   7845         https://bugs.webkit.org/show_bug.cgi?id=30570
   7846 
   7847         * jit/JITOpcodes.cpp:
   7848         (JSC::JIT::emit_op_next_pname):
   7849 
   7850 2009-10-20  Gabor Loki  <loki (a] inf.u-szeged.hu>
   7851 
   7852         Reviewed by Oliver Hunt.
   7853 
   7854         Move OverridesMarkChildren flag from DatePrototype to its parent class
   7855         https://bugs.webkit.org/show_bug.cgi?id=30372
   7856 
   7857         * runtime/DateInstance.h:
   7858         (JSC::DateInstance::createStructure):
   7859         * runtime/DatePrototype.h:
   7860 
   7861 2009-10-19  Geoffrey Garen  <ggaren (a] apple.com>
   7862 
   7863         Reviewed by Oliver Hunt.
   7864 
   7865         Tightened up some put_by_id_transition code generation.
   7866         https://bugs.webkit.org/show_bug.cgi?id=30539
   7867 
   7868         * jit/JIT.h:
   7869         * jit/JITPropertyAccess.cpp:
   7870         (JSC::JIT::testPrototype):
   7871         (JSC::JIT::privateCompilePutByIdTransition): No need to do object type
   7872         checks or read Structures and prototypes from objects: they're all known
   7873         constants at compile time.
   7874 
   7875 2009-10-19  Geoffrey Garen  <ggaren (a] apple.com>
   7876 
   7877         Reviewed by Sam Weinig.
   7878 
   7879         Added a private API for getting a global context from a context, for
   7880         clients who want to preserve a context for a later callback.
   7881 
   7882         * API/APICast.h:
   7883         (toGlobalRef): Added an ASSERT, since this function is used more often
   7884         than before.
   7885 
   7886         * API/JSContextRef.cpp:
   7887         * API/JSContextRefPrivate.h: Added. The new API.
   7888 
   7889         * API/tests/testapi.c:
   7890         (print_callAsFunction):
   7891         (main): Test the new API.
   7892 
   7893         * JavaScriptCore.exp:
   7894         * JavaScriptCore.xcodeproj/project.pbxproj: Build and export the new API.
   7895 
   7896 2009-10-17  Geoffrey Garen  <ggaren (a] apple.com>
   7897 
   7898         Reviewed by Oliver Hunt.
   7899         
   7900         Tightened up some instanceof code generation.
   7901         https://bugs.webkit.org/show_bug.cgi?id=30488
   7902 
   7903         * jit/JITOpcodes.cpp:
   7904         (JSC::JIT::emit_op_instanceof):
   7905         (JSC::JIT::emitSlow_op_instanceof): No need to do object type checks - 
   7906         cell type checks and ImplementsDefaultHasIntance checks implicitly
   7907         supersede object type checks.
   7908 
   7909 2009-10-18  Kwang Yul Seo  <skyul (a] company100.net>
   7910 
   7911         Reviewed by Darin Adler.
   7912 
   7913         Use _stricmp and _strnicmp instead of deprecated stricmp and strnicmp.
   7914         https://bugs.webkit.org/show_bug.cgi?id=30474
   7915 
   7916         stricmp and strnicmp are deprecated beginning in Visual
   7917         C++ 2005. Use _stricmp and _strnicmp instead in StringExtras.h.
   7918 
   7919         * wtf/StringExtras.h:
   7920         (strncasecmp):
   7921         (strcasecmp):
   7922 
   7923 2009-10-16  Geoffrey Garen  <ggaren (a] apple.com>
   7924 
   7925         Build fix: apparently we shouldn't export those symbols?
   7926 
   7927         * JavaScriptCore.exp:
   7928 
   7929 2009-10-16  Geoffrey Garen  <ggaren (a] apple.com>
   7930 
   7931         Build fix: export some symbols.
   7932 
   7933         * JavaScriptCore.exp:
   7934 
   7935 2009-10-16  Oliver Hunt  <oliver (a] apple.com>
   7936 
   7937         Reviewed by Gavin Barraclough.
   7938 
   7939         structure typeinfo flags should be inherited.
   7940         https://bugs.webkit.org/show_bug.cgi?id=30468
   7941 
   7942         Add StructureFlag constant to the various JSC classes and use
   7943         it for the TypeInfo construction.  This allows us to simply
   7944         accumulate flags by basing each classes StructureInfo on its parents.
   7945 
   7946         * API/JSCallbackConstructor.h:
   7947         (JSC::JSCallbackConstructor::createStructure):
   7948         * API/JSCallbackFunction.h:
   7949         (JSC::JSCallbackFunction::createStructure):
   7950         * API/JSCallbackObject.h:
   7951         (JSC::JSCallbackObject::createStructure):
   7952         * debugger/DebuggerActivation.h:
   7953         (JSC::DebuggerActivation::createStructure):
   7954         * runtime/Arguments.h:
   7955         (JSC::Arguments::createStructure):
   7956         * runtime/BooleanObject.h:
   7957         (JSC::BooleanObject::createStructure):
   7958         * runtime/DatePrototype.h:
   7959         (JSC::DatePrototype::createStructure):
   7960         * runtime/FunctionPrototype.h:
   7961         (JSC::FunctionPrototype::createStructure):
   7962         * runtime/GlobalEvalFunction.h:
   7963         (JSC::GlobalEvalFunction::createStructure):
   7964         * runtime/InternalFunction.h:
   7965         (JSC::InternalFunction::createStructure):
   7966         * runtime/JSActivation.h:
   7967         (JSC::JSActivation::createStructure):
   7968         * runtime/JSArray.h:
   7969         (JSC::JSArray::createStructure):
   7970         * runtime/JSByteArray.cpp:
   7971         (JSC::JSByteArray::createStructure):
   7972         * runtime/JSByteArray.h:
   7973         * runtime/JSFunction.h:
   7974         (JSC::JSFunction::createStructure):
   7975         * runtime/JSGlobalObject.h:
   7976         (JSC::JSGlobalObject::createStructure):
   7977         * runtime/JSNotAnObject.h:
   7978         (JSC::JSNotAnObject::createStructure):
   7979         * runtime/JSONObject.h:
   7980         (JSC::JSONObject::createStructure):
   7981         * runtime/JSObject.h:
   7982         (JSC::JSObject::createStructure):
   7983         * runtime/JSStaticScopeObject.h:
   7984         (JSC::JSStaticScopeObject::createStructure):
   7985         * runtime/JSVariableObject.h:
   7986         (JSC::JSVariableObject::createStructure):
   7987         * runtime/JSWrapperObject.h:
   7988         (JSC::JSWrapperObject::createStructure):
   7989         * runtime/MathObject.h:
   7990         (JSC::MathObject::createStructure):
   7991         * runtime/NumberConstructor.h:
   7992         (JSC::NumberConstructor::createStructure):
   7993         * runtime/NumberObject.h:
   7994         (JSC::NumberObject::createStructure):
   7995         * runtime/RegExpConstructor.h:
   7996         (JSC::RegExpConstructor::createStructure):
   7997         * runtime/RegExpObject.h:
   7998         (JSC::RegExpObject::createStructure):
   7999         * runtime/StringObject.h:
   8000         (JSC::StringObject::createStructure):
   8001         * runtime/StringObjectThatMasqueradesAsUndefined.h:
   8002         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
   8003 
   8004 2009-10-16  Geoffrey Garen  <ggaren (a] apple.com>
   8005 
   8006         Reviewed by Oliver Hunt.
   8007         
   8008         Fast for-in enumeration: Cache JSPropertyNameIterator; cache JSStrings
   8009         in JSPropertyNameIterator; inline more code.
   8010 
   8011         1.024x as fast on SunSpider (fasta: 1.43x as fast).
   8012 
   8013         * bytecode/CodeBlock.cpp:
   8014         (JSC::CodeBlock::dump):
   8015         * bytecode/Opcode.h:
   8016         * bytecompiler/BytecodeGenerator.cpp:
   8017         (JSC::BytecodeGenerator::emitGetPropertyNames):
   8018         (JSC::BytecodeGenerator::emitNextPropertyName):
   8019         * bytecompiler/BytecodeGenerator.h: Added a few extra operands to
   8020         op_get_pnames and op_next_pname so that we can track iteration state
   8021         in the register file instead of in the JSPropertyNameIterator. (To be
   8022         cacheable, the JSPropertyNameIterator must be stateless.)
   8023 
   8024         * interpreter/Interpreter.cpp:
   8025         (JSC::Interpreter::tryCachePutByID):
   8026         (JSC::Interpreter::tryCacheGetByID): Updated for rename to
   8027         "normalizePrototypeChain" and removal of "isCacheable". 
   8028 
   8029         (JSC::Interpreter::privateExecute): Updated for in-RegisterFile
   8030         iteration state tracking.
   8031 
   8032         * jit/JIT.cpp:
   8033         (JSC::JIT::privateCompileMainPass):
   8034         * jit/JIT.h:
   8035         * jit/JITOpcodes.cpp:
   8036         (JSC::JIT::emit_op_get_pnames): Updated for in-RegisterFile
   8037         iteration state tracking.
   8038 
   8039         (JSC::JIT::emit_op_next_pname): Inlined code generation for op_next_pname.
   8040 
   8041         * jit/JITStubs.cpp:
   8042         (JSC::JITThunks::tryCachePutByID):
   8043         (JSC::JITThunks::tryCacheGetByID): Updated for rename to
   8044         "normalizePrototypeChain" and removal of "isCacheable". 
   8045 
   8046         (JSC::DEFINE_STUB_FUNCTION):
   8047         * jit/JITStubs.h:
   8048         (JSC::): Added has_property and to_object stubs. Removed op_next_pname
   8049         stub, since has_property is all we need anymore.
   8050 
   8051         * parser/Nodes.cpp:
   8052         (JSC::ForInNode::emitBytecode): Updated for in-RegisterFile
   8053         iteration state tracking.
   8054 
   8055         * runtime/JSCell.h:
   8056         * runtime/JSObject.cpp:
   8057         (JSC::JSObject::getPropertyNames): Don't do caching at this layer
   8058         anymore, since we don't create a JSPropertyNameIterator at this layer.
   8059 
   8060         * runtime/JSPropertyNameIterator.cpp:
   8061         (JSC::JSPropertyNameIterator::create): Do do caching at this layer.
   8062         (JSC::JSPropertyNameIterator::get):  Updated for in-RegisterFile
   8063         iteration state tracking.
   8064         (JSC::JSPropertyNameIterator::markChildren): Mark our JSStrings.
   8065 
   8066         * runtime/JSPropertyNameIterator.h:
   8067         (JSC::JSPropertyNameIterator::size):
   8068         (JSC::JSPropertyNameIterator::setCachedStructure):
   8069         (JSC::JSPropertyNameIterator::cachedStructure):
   8070         (JSC::JSPropertyNameIterator::setCachedPrototypeChain):
   8071         (JSC::JSPropertyNameIterator::cachedPrototypeChain):
   8072         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
   8073         (JSC::Structure::setEnumerationCache): Don't store iteration state in
   8074         a JSPropertyNameIterator. Do cache a JSPropertyNameIterator in a
   8075         Structure.
   8076 
   8077         * runtime/JSValue.h:
   8078         (JSC::asCell):
   8079         * runtime/MarkStack.h: Make those mischievous #include gods happy.
   8080 
   8081         * runtime/ObjectConstructor.cpp:
   8082 
   8083         * runtime/Operations.h:
   8084         (JSC::normalizePrototypeChain): Renamed countPrototypeChainEntriesAndCheckForProxies
   8085         to normalizePrototypeChain, since it changes dictionary prototypes to
   8086         non-dictionary objects.
   8087 
   8088         * runtime/PropertyNameArray.cpp:
   8089         (JSC::PropertyNameArray::add):
   8090         * runtime/PropertyNameArray.h:
   8091         (JSC::PropertyNameArrayData::PropertyNameArrayData):
   8092         (JSC::PropertyNameArray::data):
   8093         (JSC::PropertyNameArray::size):
   8094         (JSC::PropertyNameArray::begin):
   8095         (JSC::PropertyNameArray::end): Simplified some code here to help with
   8096         current and future refactoring.
   8097 
   8098         * runtime/Protect.h:
   8099         * runtime/Structure.cpp:
   8100         (JSC::Structure::~Structure):
   8101         (JSC::Structure::addPropertyWithoutTransition):
   8102         (JSC::Structure::removePropertyWithoutTransition): No need to clear
   8103         the enumeration cache with adding / removing properties without
   8104         transition. It is an error to add / remove properties without transition
   8105         once an object has been observed, and we can ASSERT to catch that.
   8106 
   8107         * runtime/Structure.h:
   8108         (JSC::Structure::enumerationCache): Changed the enumeration cache to
   8109         hold a JSPropertyNameIterator.
   8110 
   8111         * runtime/StructureChain.cpp:
   8112         * runtime/StructureChain.h:
   8113         (JSC::StructureChain::head): Removed StructureChain::isCacheable because
   8114         it was wrong-headed in two ways: (1) It gave up when a prototype was a
   8115         dictionary, but instead we want un-dictionary heavily accessed
   8116         prototypes; (2) It folded a test for hasDefaultGetPropertyNames() into
   8117         a generic test for "cacheable-ness", but hasDefaultGetPropertyNames()
   8118         is only releavant to for-in caching.
   8119 
   8120 2009-10-16  Steve Falkenburg  <sfalken (a] apple.com>
   8121 
   8122         Reviewed by Adam Roben.
   8123 
   8124         Add a Debug_All configuration to build entire stack as debug.
   8125         Change Debug_Internal to:
   8126         - stop using _debug suffix for all WebKit/Safari binaries
   8127         - not use _debug as a DLL naming suffix
   8128         - use non-debug C runtime lib.
   8129 
   8130         * JavaScriptCore.vcproj/JavaScriptCore.make: Debug build in makefile should build Debug_All.
   8131         * JavaScriptCore.vcproj/JavaScriptCore.sln: Add Debug_All configuration.
   8132         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add Debug_All configuration.
   8133         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Renamed single configuration from "Release" to "all".
   8134         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Add Debug_All configuration.
   8135         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add Debug_All configuration.
   8136         * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_All configuration.
   8137         * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_All configuration.
   8138 
   8139 2009-10-16  Oliver Hunt  <oliver (a] apple.com>
   8140 
   8141         Reviewed by Gavin Barraclough.
   8142 
   8143         Make typeinfo flags default to false
   8144         https://bugs.webkit.org/show_bug.cgi?id=30372
   8145 
   8146         Last part -- replace HasDefaultGetPropertyNames with OverridesGetPropertyNames
   8147         flag.
   8148 
   8149         * API/JSCallbackConstructor.h:
   8150         (JSC::JSCallbackConstructor::createStructure):
   8151         * API/JSCallbackObject.h:
   8152         (JSC::JSCallbackObject::createStructure):
   8153         * debugger/DebuggerActivation.h:
   8154         (JSC::DebuggerActivation::createStructure):
   8155         * runtime/Arguments.h:
   8156         (JSC::Arguments::createStructure):
   8157         * runtime/BooleanObject.h:
   8158         (JSC::BooleanObject::createStructure):
   8159         * runtime/DatePrototype.h:
   8160         (JSC::DatePrototype::createStructure):
   8161         * runtime/FunctionPrototype.h:
   8162         (JSC::FunctionPrototype::createStructure):
   8163         * runtime/GlobalEvalFunction.h:
   8164         (JSC::GlobalEvalFunction::createStructure):
   8165         * runtime/JSAPIValueWrapper.h:
   8166         (JSC::JSAPIValueWrapper::createStructure):
   8167         * runtime/JSActivation.h:
   8168         (JSC::JSActivation::createStructure):
   8169         * runtime/JSArray.h:
   8170         (JSC::JSArray::createStructure):
   8171         * runtime/JSByteArray.cpp:
   8172         (JSC::JSByteArray::createStructure):
   8173         * runtime/JSFunction.h:
   8174         (JSC::JSFunction::createStructure):
   8175         * runtime/JSGlobalObject.h:
   8176         (JSC::JSGlobalObject::createStructure):
   8177         * runtime/JSNotAnObject.h:
   8178         (JSC::JSNotAnObject::createStructure):
   8179         * runtime/JSONObject.h:
   8180         (JSC::JSONObject::createStructure):
   8181         * runtime/JSObject.cpp:
   8182         (JSC::JSObject::getPropertyNames):
   8183         * runtime/JSObject.h:
   8184         (JSC::JSObject::createStructure):
   8185         * runtime/JSStaticScopeObject.h:
   8186         (JSC::JSStaticScopeObject::createStructure):
   8187         * runtime/JSTypeInfo.h:
   8188         (JSC::TypeInfo::overridesGetPropertyNames):
   8189         * runtime/JSVariableObject.h:
   8190         (JSC::JSVariableObject::createStructure):
   8191         * runtime/JSWrapperObject.h:
   8192         (JSC::JSWrapperObject::createStructure):
   8193         * runtime/MathObject.h:
   8194         (JSC::MathObject::createStructure):
   8195         * runtime/NumberConstructor.h:
   8196         (JSC::NumberConstructor::createStructure):
   8197         * runtime/NumberObject.h:
   8198         (JSC::NumberObject::createStructure):
   8199         * runtime/RegExpConstructor.h:
   8200         (JSC::RegExpConstructor::createStructure):
   8201         * runtime/RegExpObject.h:
   8202         (JSC::RegExpObject::createStructure):
   8203         * runtime/StringObject.h:
   8204         (JSC::StringObject::createStructure):
   8205         * runtime/StringObjectThatMasqueradesAsUndefined.h:
   8206         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
   8207         * runtime/StructureChain.cpp:
   8208         (JSC::StructureChain::isCacheable):
   8209 
   8210 2009-10-16  Kevin Ollivier  <kevino (a] theolliviers.com>
   8211 
   8212         wxMSW build fix, we can't use the simple hash there because the PlatformModuleVersion 
   8213         structure differs.
   8214 
   8215         * wtf/Platform.h:
   8216 
   8217 2009-10-16  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   8218 
   8219         Reviewed by Simon Hausmann.
   8220 
   8221         [Qt] Implement ExecutableAllocator for Symbian
   8222         https://bugs.webkit.org/show_bug.cgi?id=29946
   8223 
   8224         Tested with YARR JIT enabled for Symbian; 
   8225         This patch does not (yet) enable YARR JIT by default.
   8226 
   8227         * JavaScriptCore.pri:
   8228         * jit/ExecutableAllocator.h:
   8229         * jit/ExecutableAllocatorSymbian.cpp: Added.
   8230         (JSC::ExecutableAllocator::intializePageSize):
   8231         (JSC::ExecutablePool::systemAlloc):
   8232         (JSC::ExecutablePool::systemRelease):
   8233 
   8234 2009-10-15  Oliver Hunt  <oliver (a] apple.com>
   8235 
   8236         Reviewed by Darin Adler.
   8237 
   8238         Make typeinfo flags default to false
   8239         https://bugs.webkit.org/show_bug.cgi?id=30372
   8240 
   8241         Part 2 -- Reverse the TypeInfo HasDefaultMark flag to OverridesMarkChildren, etc
   8242 
   8243         * API/JSCallbackConstructor.h:
   8244         (JSC::JSCallbackConstructor::createStructure):
   8245         * API/JSCallbackFunction.h:
   8246         (JSC::JSCallbackFunction::createStructure):
   8247         * API/JSCallbackObject.h:
   8248         (JSC::JSCallbackObject::createStructure):
   8249         * debugger/DebuggerActivation.h:
   8250         (JSC::DebuggerActivation::createStructure):
   8251         * runtime/Arguments.h:
   8252         (JSC::Arguments::createStructure):
   8253         * runtime/BooleanObject.h:
   8254         (JSC::BooleanObject::createStructure):
   8255         * runtime/DatePrototype.h:
   8256         (JSC::DatePrototype::createStructure):
   8257         * runtime/FunctionPrototype.h:
   8258         (JSC::FunctionPrototype::createStructure):
   8259         * runtime/GetterSetter.h:
   8260         (JSC::GetterSetter::createStructure):
   8261         * runtime/GlobalEvalFunction.h:
   8262         (JSC::GlobalEvalFunction::createStructure):
   8263         * runtime/InternalFunction.h:
   8264         (JSC::InternalFunction::createStructure):
   8265         * runtime/JSAPIValueWrapper.h:
   8266         (JSC::JSAPIValueWrapper::createStructure):
   8267         * runtime/JSActivation.h:
   8268         (JSC::JSActivation::createStructure):
   8269         * runtime/JSArray.h:
   8270         (JSC::JSArray::createStructure):
   8271         (JSC::MarkStack::markChildren):
   8272         * runtime/JSByteArray.cpp:
   8273         (JSC::JSByteArray::createStructure):
   8274         * runtime/JSFunction.h:
   8275         (JSC::JSFunction::createStructure):
   8276         * runtime/JSGlobalObject.h:
   8277         (JSC::JSGlobalObject::createStructure):
   8278         * runtime/JSNotAnObject.h:
   8279         (JSC::JSNotAnObject::createStructure):
   8280         * runtime/JSNumberCell.h:
   8281         (JSC::JSNumberCell::createStructure):
   8282         * runtime/JSONObject.h:
   8283         (JSC::JSONObject::createStructure):
   8284         * runtime/JSObject.h:
   8285         (JSC::JSObject::createStructure):
   8286         * runtime/JSPropertyNameIterator.h:
   8287         (JSC::JSPropertyNameIterator::createStructure):
   8288         * runtime/JSStaticScopeObject.h:
   8289         (JSC::JSStaticScopeObject::createStructure):
   8290         * runtime/JSString.h:
   8291         (JSC::JSString::createStructure):
   8292         * runtime/JSTypeInfo.h:
   8293         (JSC::TypeInfo::overridesMarkChildren):
   8294         * runtime/JSVariableObject.h:
   8295         (JSC::JSVariableObject::createStructure):
   8296         * runtime/JSWrapperObject.h:
   8297         (JSC::JSWrapperObject::createStructure):
   8298         * runtime/MathObject.h:
   8299         (JSC::MathObject::createStructure):
   8300         * runtime/NumberConstructor.h:
   8301         (JSC::NumberConstructor::createStructure):
   8302         * runtime/NumberObject.h:
   8303         (JSC::NumberObject::createStructure):
   8304         * runtime/RegExpConstructor.h:
   8305         (JSC::RegExpConstructor::createStructure):
   8306         * runtime/RegExpObject.h:
   8307         (JSC::RegExpObject::createStructure):
   8308         * runtime/StringObject.h:
   8309         (JSC::StringObject::createStructure):
   8310         * runtime/StringObjectThatMasqueradesAsUndefined.h:
   8311         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
   8312 
   8313 2009-10-14  Oliver Hunt  <oliver (a] apple.com>
   8314 
   8315         Reviewed by Geoff Garen.
   8316 
   8317         Make typeinfo flags default to false
   8318         https://bugs.webkit.org/show_bug.cgi?id=30372
   8319         
   8320         Part 1. Reverse the HasStandardGetOwnPropertySlot flag.
   8321 
   8322         * API/JSCallbackConstructor.h:
   8323         (JSC::JSCallbackConstructor::createStructure):
   8324         * API/JSCallbackFunction.h:
   8325         (JSC::JSCallbackFunction::createStructure):
   8326         * API/JSCallbackObject.h:
   8327         (JSC::JSCallbackObject::createStructure):
   8328         * debugger/DebuggerActivation.h:
   8329         (JSC::DebuggerActivation::createStructure):
   8330         * jit/JITStubs.cpp:
   8331         (JSC::DEFINE_STUB_FUNCTION):
   8332         * runtime/Arguments.h:
   8333         (JSC::Arguments::createStructure):
   8334         * runtime/BooleanObject.h:
   8335         (JSC::BooleanObject::createStructure):
   8336         * runtime/DatePrototype.h:
   8337         (JSC::DatePrototype::createStructure):
   8338         * runtime/FunctionPrototype.h:
   8339         (JSC::FunctionPrototype::createStructure):
   8340         * runtime/GlobalEvalFunction.h:
   8341         (JSC::GlobalEvalFunction::createStructure):
   8342         * runtime/InternalFunction.h:
   8343         (JSC::InternalFunction::createStructure):
   8344         * runtime/JSActivation.h:
   8345         (JSC::JSActivation::createStructure):
   8346         * runtime/JSArray.h:
   8347         (JSC::JSArray::createStructure):
   8348         * runtime/JSByteArray.cpp:
   8349         (JSC::JSByteArray::createStructure):
   8350         * runtime/JSFunction.h:
   8351         (JSC::JSFunction::createStructure):
   8352         * runtime/JSGlobalObject.h:
   8353         (JSC::JSGlobalObject::createStructure):
   8354         * runtime/JSNumberCell.h:
   8355         (JSC::JSNumberCell::createStructure):
   8356         * runtime/JSONObject.h:
   8357         (JSC::JSONObject::createStructure):
   8358         * runtime/JSObject.h:
   8359         (JSC::JSObject::createStructure):
   8360         (JSC::JSCell::fastGetOwnPropertySlot):
   8361         * runtime/JSStaticScopeObject.h:
   8362         (JSC::JSStaticScopeObject::createStructure):
   8363         * runtime/JSString.h:
   8364         (JSC::JSString::createStructure):
   8365         * runtime/JSTypeInfo.h:
   8366         (JSC::TypeInfo::overridesGetOwnPropertySlot):
   8367         * runtime/JSVariableObject.h:
   8368         (JSC::JSVariableObject::createStructure):
   8369         * runtime/JSWrapperObject.h:
   8370         (JSC::JSWrapperObject::createStructure):
   8371         * runtime/MathObject.h:
   8372         (JSC::MathObject::createStructure):
   8373         * runtime/NumberConstructor.h:
   8374         (JSC::NumberConstructor::createStructure):
   8375         * runtime/NumberObject.h:
   8376         (JSC::NumberObject::createStructure):
   8377         * runtime/RegExpConstructor.h:
   8378         (JSC::RegExpConstructor::createStructure):
   8379         * runtime/RegExpObject.h:
   8380         (JSC::RegExpObject::createStructure):
   8381         * runtime/StringObject.h:
   8382         (JSC::StringObject::createStructure):
   8383         * runtime/StringObjectThatMasqueradesAsUndefined.h:
   8384         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
   8385 
   8386 2009-10-14  Kevin Ollivier  <kevino (a] theolliviers.com>
   8387 2009-10-14  Darin Adler  <darin (a] apple.com>
   8388 
   8389         Additions so fix for https://bugs.webkit.org/show_bug.cgi?id=18994
   8390         can build on Windows.
   8391 
   8392         * wtf/MathExtras.h: Added llround and llroundf for Windows.
   8393 
   8394 2009-10-14  Kevin Ollivier  <kevino (a] theolliviers.com>
   8395 
   8396         wx build fix. Set ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH for plugins while we're still building stubs.
   8397 
   8398         * wtf/Platform.h:
   8399 
   8400 2009-10-13  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   8401 
   8402         Reviewed by Simon Hausmann.
   8403 
   8404         Refactor ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH
   8405         https://bugs.webkit.org/show_bug.cgi?id=30278
   8406 
   8407         Move the definition of ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH
   8408         from the make system into common code.
   8409 
   8410         * wtf/Platform.h:
   8411 
   8412 2009-10-13  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   8413 
   8414         Reviewed by Darin Adler.
   8415 
   8416         ARM compiler does not understand reinterpret_cast<void*>
   8417         https://bugs.webkit.org/show_bug.cgi?id=29034
   8418 
   8419         Change reinterpret_cast<void*> to regular C style (void*) cast 
   8420         for the ARM RVCT compiler.
   8421 
   8422         * assembler/MacroAssemblerCodeRef.h:
   8423         (JSC::FunctionPtr::FunctionPtr): 
   8424         * jit/JITOpcodes.cpp: Cast to FunctionPtr first 
   8425            instead of directly casting to reinterpret_cast
   8426         * jit/JITStubCall.h: Ditto + change the type of m_stub
   8427           from void* to FunctionPtr.
   8428         (JSC::JITStubCall::JITStubCall): 
   8429         (JSC::JITStubCall::call):
   8430         * jit/JITStubs.cpp: Ditto.
   8431         (JSC::DEFINE_STUB_FUNCTION(EncodedJSValue, op_throw)):
   8432 
   8433 2009-10-11  Oliver Hunt  <oliver (a] apple.com>
   8434 
   8435         Re-enable the JIT.
   8436 
   8437         * wtf/Platform.h:
   8438 
   8439 2009-10-10  Oliver Hunt  <oliver (a] apple.com>
   8440 
   8441         Reviewed by Maciej Stachowiak.
   8442 
   8443         Support for String.trim(), String.trimLeft() and String.trimRight() methods
   8444         https://bugs.webkit.org/show_bug.cgi?id=26590
   8445 
   8446         Implement trim, trimLeft, and trimRight
   8447 
   8448         * runtime/StringPrototype.cpp:
   8449         (JSC::isTrimWhitespace):
   8450            Our normal string whitespace function does not include U+200B which
   8451            is needed for compatibility with mozilla's implementation of trim.
   8452            U+200B does not appear to be expected according to spec, however I am
   8453            choosing to be lax, and match mozilla behavior so have added this
   8454            exception.
   8455         (JSC::trimString):
   8456 
   8457 2009-10-09  Geoffrey Garen  <ggaren (a] apple.com>
   8458 
   8459         Reviewed by Oliver Hunt.
   8460 
   8461         Eliminated some legacy bytecode weirdness.
   8462         
   8463         Use vPC[x] subscripting instead of ++vPC to access instruction operands.
   8464         This is simpler, and often more efficient.
   8465 
   8466         To support this, and to remove use of hard-coded offsets in bytecode and
   8467         JIT code generation and dumping, calculate jump offsets from the beginning
   8468         of an instruction, rather than the middle or end.
   8469         
   8470         Also, use OPCODE_LENGTH instead of hard-coded constants for the sizes of
   8471         opcodes.
   8472         
   8473         SunSpider reports no change in JIT mode, and a 1.01x speedup in Interpreter
   8474         mode.
   8475 
   8476         * bytecode/CodeBlock.cpp:
   8477         (JSC::printConditionalJump):
   8478         (JSC::CodeBlock::dump):
   8479         * bytecompiler/BytecodeGenerator.cpp:
   8480         (JSC::BytecodeGenerator::emitJump):
   8481         (JSC::BytecodeGenerator::emitJumpIfTrue):
   8482         (JSC::BytecodeGenerator::emitJumpIfFalse):
   8483         (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
   8484         (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
   8485         (JSC::BytecodeGenerator::emitComplexJumpScopes):
   8486         (JSC::BytecodeGenerator::emitJumpScopes):
   8487         (JSC::BytecodeGenerator::emitNextPropertyName):
   8488         (JSC::BytecodeGenerator::emitCatch):
   8489         (JSC::BytecodeGenerator::emitJumpSubroutine):
   8490         (JSC::prepareJumpTableForImmediateSwitch):
   8491         (JSC::prepareJumpTableForCharacterSwitch):
   8492         (JSC::prepareJumpTableForStringSwitch):
   8493         (JSC::BytecodeGenerator::endSwitch):
   8494         * bytecompiler/Label.h:
   8495         (JSC::Label::setLocation):
   8496         (JSC::Label::bind):
   8497         * interpreter/Interpreter.cpp:
   8498         (JSC::Interpreter::resolve):
   8499         (JSC::Interpreter::resolveSkip):
   8500         (JSC::Interpreter::resolveGlobal):
   8501         (JSC::Interpreter::resolveBase):
   8502         (JSC::Interpreter::resolveBaseAndProperty):
   8503         (JSC::Interpreter::createExceptionScope):
   8504         (JSC::Interpreter::privateExecute):
   8505         * interpreter/Interpreter.h:
   8506         * jit/JIT.cpp:
   8507         (JSC::JIT::privateCompile):
   8508         * jit/JITArithmetic.cpp:
   8509         (JSC::JIT::emit_op_jnless):
   8510         (JSC::JIT::emitSlow_op_jnless):
   8511         (JSC::JIT::emit_op_jnlesseq):
   8512         (JSC::JIT::emitSlow_op_jnlesseq):
   8513         (JSC::JIT::emitBinaryDoubleOp):
   8514         * jit/JITOpcodes.cpp:
   8515         (JSC::JIT::emit_op_jmp):
   8516         (JSC::JIT::emit_op_loop):
   8517         (JSC::JIT::emit_op_loop_if_less):
   8518         (JSC::JIT::emitSlow_op_loop_if_less):
   8519         (JSC::JIT::emit_op_loop_if_lesseq):
   8520         (JSC::JIT::emitSlow_op_loop_if_lesseq):
   8521         (JSC::JIT::emit_op_loop_if_true):
   8522         (JSC::JIT::emitSlow_op_loop_if_true):
   8523         (JSC::JIT::emit_op_jfalse):
   8524         (JSC::JIT::emitSlow_op_jfalse):
   8525         (JSC::JIT::emit_op_jtrue):
   8526         (JSC::JIT::emitSlow_op_jtrue):
   8527         (JSC::JIT::emit_op_jeq_null):
   8528         (JSC::JIT::emit_op_jneq_null):
   8529         (JSC::JIT::emit_op_jneq_ptr):
   8530         (JSC::JIT::emit_op_jsr):
   8531         (JSC::JIT::emit_op_next_pname):
   8532         (JSC::JIT::emit_op_jmp_scopes):
   8533 
   8534 2009-10-09  Geoffrey Garen  <ggaren (a] apple.com>
   8535 
   8536         Reviewed by Sam Weinig.
   8537 
   8538         Migrated some code that didn't belong out of Structure.
   8539         
   8540         SunSpider says maybe 1.03x faster.
   8541 
   8542         * runtime/JSCell.h: Nixed Structure::markAggregate, and made marking of
   8543         a Structure's prototype the direct responsility of the object using it.
   8544         (Giving Structure a mark function was misleading because it implied that
   8545         all live structures get marked during GC, when they don't.)
   8546         
   8547         * runtime/JSGlobalObject.cpp:
   8548         (JSC::markIfNeeded):
   8549         (JSC::JSGlobalObject::markChildren): Added code to mark prototypes stored
   8550         on the global object. Maybe this wasn't necessary, but now we don't have
   8551         to wonder.
   8552 
   8553         * runtime/JSObject.cpp:
   8554         (JSC::JSObject::getPropertyNames):
   8555         (JSC::JSObject::getOwnPropertyNames):
   8556         (JSC::JSObject::getEnumerableNamesFromClassInfoTable):
   8557         * runtime/JSObject.h:
   8558         (JSC::JSObject::markChildrenDirect):
   8559         * runtime/PropertyNameArray.h:
   8560         * runtime/Structure.cpp:
   8561         * runtime/Structure.h:
   8562         (JSC::Structure::setEnumerationCache):
   8563         (JSC::Structure::enumerationCache): Moved property name gathering code
   8564         from Structure to JSObject because having a Structure iterate its JSObject
   8565         was a layering violation. A JSObject is implemented using a Structure; not
   8566         the other way around.
   8567 
   8568 2009-10-09  Mark Rowe  <mrowe (a] apple.com>
   8569 
   8570         Attempt to fix the GTK release build.
   8571 
   8572         * GNUmakefile.am: Include Grammar.cpp in release builds now that
   8573         AllInOneFile.cpp is gone.
   8574 
   8575 2009-10-09  Gabor Loki  <loki (a] inf.u-szeged.hu>
   8576 
   8577         Rubber-stamped by Eric Seidel.
   8578 
   8579         Add ARM JIT support for Gtk port (disabled by default)
   8580         https://bugs.webkit.org/show_bug.cgi?id=30228
   8581 
   8582         * GNUmakefile.am:
   8583 
   8584 2009-10-08  Geoffrey Garen  <ggaren (a] apple.com>
   8585 
   8586         Tiger build fix: added a few more variable initializations.
   8587 
   8588         * runtime/StringPrototype.cpp:
   8589         (JSC::stringProtoFuncReplace):
   8590         (JSC::stringProtoFuncSearch):
   8591 
   8592 2009-10-08  Geoffrey Garen  <ggaren (a] apple.com>
   8593 
   8594         Qt build fix: added missing #include.
   8595 
   8596         * jsc.cpp:
   8597 
   8598 2009-10-08  Geoffrey Garen  <ggaren (a] apple.com>
   8599 
   8600         Tiger build fix: initialize variable whose initialization the compiler
   8601         can't otherwise figure out.
   8602 
   8603         * runtime/RegExpObject.cpp:
   8604         (JSC::RegExpObject::match):
   8605 
   8606 2009-10-08  Geoffrey Garen  <ggaren (a] apple.com>
   8607 
   8608         Windows build fix: updated exports.
   8609 
   8610         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   8611         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   8612 
   8613 2009-10-08  Geoffrey Garen  <ggaren (a] apple.com>
   8614 
   8615         Tiger build fix: fixed file name case.
   8616 
   8617         * JavaScriptCore.xcodeproj/project.pbxproj:
   8618 
   8619 2009-10-08  Geoffrey Garen  <ggaren (a] apple.com>
   8620 
   8621         Reviewed by Maciej Stachowiak.
   8622 
   8623         At long last, I pronounce the death of AllInOneFile.cpp.
   8624         
   8625         SunSpider reports a 1.01x speedup.
   8626 
   8627         * AllInOneFile.cpp: Removed.
   8628         * GNUmakefile.am:
   8629         * JavaScriptCore.exp:
   8630         * JavaScriptCore.gypi:
   8631         * JavaScriptCore.xcodeproj/project.pbxproj: Added missing project files
   8632         to compilation stages.
   8633 
   8634         * parser/Grammar.y:
   8635         * parser/Lexer.cpp:
   8636         * parser/Lexer.h:
   8637         (JSC::jscyylex):
   8638         * runtime/ArrayConstructor.cpp:
   8639         (JSC::constructArrayWithSizeQuirk):
   8640         * runtime/Collector.h:
   8641         * runtime/JSCell.cpp:
   8642         (JSC::JSCell::operator new):
   8643         * runtime/JSCell.h:
   8644         (JSC::JSCell::operator new):
   8645         * runtime/JSGlobalObject.cpp:
   8646         (JSC::JSGlobalObject::operator new):
   8647         * runtime/JSNumberCell.h:
   8648         (JSC::JSNumberCell::operator new):
   8649         * runtime/JSString.cpp:
   8650         * runtime/JSString.h:
   8651         (JSC::jsString):
   8652         (JSC::jsSubstring):
   8653         (JSC::jsOwnedString):
   8654         * runtime/RegExpConstructor.cpp:
   8655         * runtime/RegExpConstructor.h:
   8656         (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate):
   8657         (JSC::RegExpConstructorPrivate::lastOvector):
   8658         (JSC::RegExpConstructorPrivate::tempOvector):
   8659         (JSC::RegExpConstructorPrivate::changeLastOvector):
   8660         (JSC::RegExpConstructor::performMatch):
   8661         * runtime/StringPrototype.cpp:
   8662         (JSC::stringProtoFuncMatch):
   8663         * yarr/RegexJIT.cpp:
   8664         * yarr/RegexJIT.h:
   8665         (JSC::Yarr::executeRegex): Inlined a few things that Shark said
   8666         were hot, on the presumption that AllInOneFile.cpp used to inline them
   8667         automatically.
   8668 
   8669 2009-10-08  Zoltan Herczeg  <zherczeg (a] inf.u-szeged.hu>
   8670 
   8671         Reviewed by Gavin Barraclough.
   8672 
   8673         Fix for JIT'ed op_call instructions (evals, constructs, etc.)
   8674         when !ENABLE(JIT_OPTIMIZE_CALL) && USE(JSVALUE32_64)
   8675 
   8676         https://bugs.webkit.org/show_bug.cgi?id=30201
   8677 
   8678         * jit/JITCall.cpp:
   8679         (JSC::JIT::compileOpCall):
   8680 
   8681 2009-10-07  Geoffrey Garen  <ggaren (a] apple.com>
   8682 
   8683         Windows build fix: removed no longer exported symbol.
   8684 
   8685         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   8686         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   8687 
   8688 2009-10-07  Geoffrey Garen  <ggaren (a] apple.com>
   8689 
   8690         Reviewed by Oliver Hunt.
   8691 
   8692         Fixed <rdar://problem/5751979> Database code takes JSLock on secondary
   8693         thread, permanently slowing down JavaScript
   8694         
   8695         Removed the optional lock from Heap::protect, Heap::unprotect, and friends,
   8696         since WebCore no longer uses it.
   8697 
   8698         * JavaScriptCore.exp:
   8699         * runtime/Collector.cpp:
   8700         (JSC::Heap::protect):
   8701         (JSC::Heap::unprotect):
   8702         (JSC::Heap::markProtectedObjects):
   8703         (JSC::Heap::protectedGlobalObjectCount):
   8704         (JSC::Heap::protectedObjectCount):
   8705         (JSC::Heap::protectedObjectTypeCounts):
   8706         * runtime/Collector.h:
   8707 
   8708 2009-10-07  Zoltan Horvath  <zoltan (a] webkit.org>
   8709 
   8710         Reviewed by Darin Adler.
   8711 
   8712         Allow custom memory allocation control for JavaScriptCore's IdentifierArena
   8713         https://bugs.webkit.org/show_bug.cgi?id=30158
   8714 
   8715         Inherits IdentifierArena class from FastAllocBase because it has been
   8716         instantiated by 'new' in JavaScriptCore/parser/ParserArena.cpp:36.
   8717 
   8718         * parser/ParserArena.h:
   8719 
   8720 2009-10-07  Adam Roben  <aroben (a] apple.com>
   8721 
   8722         Export DateInstance::info in a way that works on Windows
   8723 
   8724         Fixes <http://webkit.org/b/30171>
   8725         fast/dom/Window/window-postmessage-clone.html fails on Windows
   8726 
   8727         Reviewed by Anders Carlsson.
   8728 
   8729         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   8730         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   8731         Removed the export of DateInstance::info from here.
   8732 
   8733         * runtime/DateInstance.h: Use JS_EXPORTDATA to export
   8734         DateInstance::info, which is the required way of exporting data on
   8735         Windows.
   8736 
   8737 2009-10-07  Jrgen Lind  <jorgen.lind (a] nokia.com>
   8738 
   8739         Reviewed by Simon Hausmann.
   8740 
   8741         When enabling or disabling the JIT through .qmake.cache, make sure
   8742         to also toggle ENABLE_YARR_JIT.
   8743 
   8744         * JavaScriptCore.pri:
   8745 
   8746 2009-10-06  Priit Laes  <plaes (a] plaes.org>
   8747 
   8748         Reviewed by Gavin Barraclough.
   8749 
   8750         Linking fails with "relocation R_X86_64_PC32 against symbol
   8751         `cti_vm_throw'"
   8752         https://bugs.webkit.org/show_bug.cgi?id=28422
   8753 
   8754         * jit/JITStubs.cpp:
   8755         Mark cti_vm_throw symbol as PLT-indirect symbol, so it doesn't end up
   8756         in text segment causing relocation errors on amd64 architecture.
   8757         Introduced new define SYMBOL_STRING_RELOCATION for such symbols.
   8758 
   8759 2009-10-06  Oliver Hunt  <oliver (a] apple.com>
   8760 
   8761         Windows linking fix
   8762 
   8763         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   8764         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   8765 
   8766 2009-10-06  Oliver Hunt  <oliver (a] apple.com>
   8767 
   8768         Reviewed by NOBODY (build fix).
   8769 
   8770         Windows build fix.
   8771 
   8772         * runtime/DateInstance.cpp:
   8773 
   8774 2009-10-05  Oliver Hunt  <oliver (a] apple.com>
   8775 
   8776         Reviewed by Gavin Barraclough.
   8777 
   8778         It should be possible to post (clone) built-in JS objects to Workers
   8779         https://bugs.webkit.org/show_bug.cgi?id=22878
   8780 
   8781         Expose helpers to throw correct exceptions during object graph walk
   8782         used for cloning and add a helper function to create Date instances
   8783         without going through the JS Date constructor function.
   8784 
   8785         * JavaScriptCore.exp:
   8786         * JavaScriptCore.xcodeproj/project.pbxproj:
   8787         * runtime/DateInstance.cpp:
   8788         (JSC::DateInstance::DateInstance):
   8789         * runtime/DateInstance.h:
   8790         * runtime/ExceptionHelpers.cpp:
   8791         (JSC::createTypeError):
   8792         * runtime/ExceptionHelpers.h:
   8793 
   8794 2009-10-06  David Levin  <levin (a] chromium.org>
   8795 
   8796         Reviewed by Oliver Hunt.
   8797 
   8798         StringImpl needs a method to get an instance for another thread which doesn't copy the underlying buffer.
   8799         https://bugs.webkit.org/show_bug.cgi?id=30095
   8800 
   8801         * wtf/CrossThreadRefCounted.h:
   8802         Removed an unused function and assert improvement.
   8803         (WTF::CrossThreadRefCounted::isOwnedByCurrentThread): Moved out common code from asserts.
   8804         (WTF::CrossThreadRefCounted::ref): Changed assert to use the common method.
   8805         (WTF::CrossThreadRefCounted::deref): Changed assert to use the common method.
   8806         (WTF::CrossThreadRefCounted::crossThreadCopy): Since this includes a potentially
   8807         non-threadsafe operation, add an assert that the class is owned by the current thread.
   8808 
   8809 2009-10-05  Kevin Ollivier  <kevino (a] theolliviers.com>
   8810 
   8811         wx build fix. Add Symbian files to the list of excludes.
   8812 
   8813         * wscript:
   8814 
   8815 2009-10-05  Jocelyn Turcotte  <jocelyn.turcotte (a] nokia.com>
   8816 
   8817         Reviewed by Simon Hausmann.
   8818 
   8819         [Qt] Remove precompiled header from JavaScriptCore compilation to
   8820         prevent qmake warning during autonomous compilation.
   8821         https://bugs.webkit.org/show_bug.cgi?id=30069
   8822 
   8823         * JavaScriptCore.pro:
   8824 
   8825 2009-10-02  Geoffrey Garen  <ggaren (a] apple.com>
   8826 
   8827         Reviewed by Sam Weinig.
   8828 
   8829         Removed the concept of a "fast access cutoff" in arrays, because it
   8830         punished some patterns of array access too much, and made things too
   8831         complex for inlining in some cases.
   8832         
   8833         1.3% speedup on SunSpider.
   8834 
   8835         * jit/JITOpcodes.cpp:
   8836         (JSC::JIT::emitSlow_op_get_by_val):
   8837         (JSC::JIT::emitSlow_op_put_by_val):
   8838         * jit/JITPropertyAccess.cpp:
   8839         (JSC::JIT::emit_op_get_by_val):
   8840         (JSC::JIT::emitSlow_op_get_by_val):
   8841         (JSC::JIT::emit_op_put_by_val):
   8842         (JSC::JIT::emitSlow_op_put_by_val):
   8843         * jit/JITStubs.cpp:
   8844         * jit/JITStubs.h:
   8845         (JSC::): Check m_vectorLength instead of m_fastAccessCutoff when
   8846         getting / putting from / to an array. Inline putting past the end of
   8847         the array.
   8848 
   8849         * runtime/JSArray.cpp:
   8850         (JSC::JSArray::JSArray):
   8851         (JSC::JSArray::getOwnPropertySlot):
   8852         (JSC::JSArray::getOwnPropertyDescriptor):
   8853         (JSC::JSArray::put):
   8854         (JSC::JSArray::putSlowCase):
   8855         (JSC::JSArray::deleteProperty):
   8856         (JSC::JSArray::getOwnPropertyNames):
   8857         (JSC::JSArray::increaseVectorLength):
   8858         (JSC::JSArray::setLength):
   8859         (JSC::JSArray::pop):
   8860         (JSC::JSArray::push):
   8861         (JSC::JSArray::sort):
   8862         (JSC::JSArray::fillArgList):
   8863         (JSC::JSArray::copyToRegisters):
   8864         (JSC::JSArray::compactForSorting):
   8865         (JSC::JSArray::checkConsistency):
   8866         * runtime/JSArray.h:
   8867         (JSC::JSArray::canGetIndex):
   8868         (JSC::JSArray::canSetIndex):
   8869         (JSC::JSArray::setIndex):
   8870         (JSC::JSArray::markChildrenDirect): Removed m_fastAccessCutoff, and
   8871         replaced with checks for JSValue() to detect reads and writes from / to
   8872         uninitialized parts of the array.
   8873 
   8874 2009-10-02  Jonni Rainisto  <jonni.rainisto (a] nokia.com>
   8875 
   8876         Reviewed by Darin Adler.
   8877 
   8878         Math.random() gives too low values on Win32 when _CRT_RAND_S is not defined
   8879         https://bugs.webkit.org/show_bug.cgi?id=29956
   8880 
   8881         * wtf/RandomNumber.cpp:
   8882         (WTF::randomNumber): Added PLATFORM(WIN_OS) to handle 15bit rand()
   8883 
   8884 2009-10-02  Geoffrey Garen  <ggaren (a] apple.com>
   8885 
   8886         Reviewed by Sam Weinig.
   8887 
   8888         Take one branch instead of two to test for JSValue().
   8889         
   8890         1.1% SunSpider speedup.
   8891 
   8892         * jit/JITCall.cpp:
   8893         (JSC::JIT::compileOpCall):
   8894         * jit/JITOpcodes.cpp:
   8895         (JSC::JIT::emit_op_to_jsnumber):
   8896         (JSC::JIT::emit_op_create_arguments):
   8897         * jit/JITPropertyAccess.cpp:
   8898         (JSC::JIT::emitSlow_op_get_by_val):
   8899         (JSC::JIT::emit_op_put_by_val): Test for the empty value tag, instead
   8900         of testing for the cell tag with a 0 payload.
   8901 
   8902         * runtime/JSValue.cpp:
   8903         (JSC::JSValue::description): Added support for dumping the new empty value,
   8904         and deleted values, in debug builds.
   8905 
   8906         * runtime/JSValue.h:
   8907         (JSC::JSValue::JSValue()): Construct JSValue() with the empty value tag.
   8908 
   8909         (JSC::JSValue::JSValue(JSCell*)): Convert null pointer to the empty value
   8910         tag, to avoid having two different c++ versions of null / empty.
   8911 
   8912         (JSC::JSValue::operator bool): Test for the empty value tag, instead
   8913         of testing for the cell tag with a 0 payload.
   8914 
   8915 2009-10-02  Steve Falkenburg  <sfalken (a] apple.com>
   8916 
   8917         Reviewed by Mark Rowe.
   8918 
   8919         <https://bugs.webkit.org/show_bug.cgi?id=29989>
   8920         Safari version number shouldn't be exposed in WebKit code
   8921         
   8922         For a WebKit version of 532.3.4:
   8923         Product version is: 5.32.3.4 (was 4.0.3.0)
   8924         File version is: 5.32.3.4 (was 4.532.3.4)
   8925 
   8926         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
   8927 
   8928 2009-10-02  Tor Arne Vestb  <tor.arne.vestbo (a] nokia.com>
   8929 
   8930         Rubber-stamped by Simon Hausmann.
   8931 
   8932         Fix the Qt on Mac OS X build.
   8933 
   8934         * wtf/FastMalloc.cpp:
   8935 
   8936 2009-10-02  Jrgen Lind  <jorgen.lind (a] nokia.com>
   8937 
   8938         Reviewed by Simon Hausmann.
   8939 
   8940         Allow enabling and disabling of the JIT through a qmake variable.
   8941 
   8942         Qt's configure may set this variable through .qmake.cache if a
   8943         commandline option is given and/or the compile test for hwcap.h
   8944         failed/succeeded.
   8945 
   8946         * JavaScriptCore.pri:
   8947 
   8948 2009-10-01  Mark Rowe  <mrowe (a] apple.com>
   8949 
   8950         Fix the Tiger build.  Don't unconditionally enable 3D canvas as it is not supported on Tiger.
   8951 
   8952         * Configurations/FeatureDefines.xcconfig:
   8953 
   8954 2009-10-01  Yongjun Zhang  <yongjun.zhang (a] nokia.com>
   8955 
   8956         Reviewed by Darin Adler.
   8957 
   8958         https://bugs.webkit.org/show_bug.cgi?id=29187
   8959 
   8960         Don't inline ~ListRefPtr() to work around winscw compiler forward declaration
   8961         bug regarding templated classes.
   8962 
   8963         The compiler bug is reported at:
   8964         https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812
   8965 
   8966         The change will be reverted when the above bug is fixed in winscw compiler.
   8967 
   8968         * wtf/ListRefPtr.h:
   8969         (WTF::::~ListRefPtr):
   8970 
   8971 2009-10-01  Zoltan Horvath  <zoltan (a] webkit.org>
   8972 
   8973         Reviewed by Simon Hausmann.
   8974 
   8975         [Qt] Allow custom memory allocation control for the whole JavaScriptCore
   8976         https://bugs.webkit.org/show_bug.cgi?id=27029
   8977 
   8978         Since in JavaScriptCore almost every class which has been instantiated by operator new is
   8979         inherited from FastAllocBase (bug #20422), we disable customizing global operator new for the Qt-port
   8980         when USE_SYSTEM_MALLOC=0.
   8981 
   8982         Add #include <unistd.h> to FastMalloc.cpp because it's used by TCMalloc_PageHeap::scavengerThread().
   8983         (It's needed for the functionality of TCmalloc.)
   8984 
   8985         Add TCSystemAlloc.cpp to JavaScriptCore.pri if USE_SYSTEM_MALLOC is disabled.
   8986 
   8987         * JavaScriptCore.pri:
   8988         * wtf/FastMalloc.cpp:
   8989         (WTF::sleep):
   8990         * wtf/FastMalloc.h:
   8991 
   8992 2009-09-30  Gabor Loki  <loki (a] inf.u-szeged.hu>
   8993 
   8994         Reviewed by George Staikos.
   8995 
   8996         Defines two pseudo-platforms for ARM and Thumb-2 instruction set.
   8997         https://bugs.webkit.org/show_bug.cgi?id=29122
   8998 
   8999         Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2
   9000         macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used
   9001         when Thumb-2 instruction set is the required target. The
   9002         PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In
   9003         case where the code is common the PLATFORM(ARM) have to be used.
   9004 
   9005         Modified by George Wright  <gwright (a] rim.com> to correctly work
   9006         with the RVCT-defined __TARGET_ARCH_ARM and __TARGET_ARCH_THUMB
   9007         compiler macros, as well as adding readability changes.
   9008 
   9009         * wtf/Platform.h:
   9010 
   9011 2009-09-30  Oliver Hunt  <oliver (a] apple.com>
   9012 
   9013         Reviewed by Geoff Garen.
   9014 
   9015         Devirtualise array toString conversion
   9016 
   9017         Tweak the implementation of Array.prototype.toString to have a fast path
   9018         when acting on a true JSArray.
   9019 
   9020         * runtime/ArrayPrototype.cpp:
   9021         (JSC::arrayProtoFuncToString):
   9022 
   9023 2009-09-30  Csaba Osztrogonac  <oszi (a] inf.u-szeged.hu>
   9024 
   9025         Reviewed by Geoffrey Garen.
   9026 
   9027         Buildfix for platforms using JSVALUE32.
   9028         https://bugs.webkit.org/show_bug.cgi?id=29915
   9029 
   9030         After http://trac.webkit.org/changeset/48905 the build broke in JSVALUE32 case.
   9031         Also removed unreachable code.
   9032 
   9033         * jit/JITArithmetic.cpp:
   9034         (JSC::JIT::emit_op_add):
   9035          - Declaration of "OperandTypes types" moved before first use.
   9036          - Typos fixed: dst modified to result, regT2 added.
   9037          - Unreachable code removed.
   9038         (JSC::JIT::emitSlow_op_add):
   9039          - Missing declaration of "OperandTypes types" added.
   9040 
   9041 2009-09-30  Janne Koskinen  <janne.p.koskinen (a] digia.com> 
   9042 
   9043         Reviewed by Simon Hausmann.
   9044 
   9045         Reduce heap size on Symbian from 64MB to 8MB.
   9046 
   9047         This is not a perfect fix, it requires more fine tuning.
   9048         But this makes it possible again to debug in the emulator,
   9049         which is more important in order to be able to fix other
   9050         run-time issues.
   9051 
   9052         * runtime/Collector.h:
   9053 
   9054 2009-09-30  Janne Koskinen  <janne.p.koskinen (a] digia.com> 
   9055 
   9056         Reviewed by Simon Hausmann.
   9057 
   9058         Fix CRASH() macro for Symbian build.
   9059 
   9060         * wtf/Assertions.h: Added missing }
   9061 
   9062 2009-09-29  Geoffrey Garen  <ggaren (a] apple.com>
   9063 
   9064         Reviewed by Gavin Barraclough.
   9065 
   9066         Inlined a few math operations.
   9067         
   9068         ~1% SunSpider speedup.
   9069 
   9070         * jit/JIT.h:
   9071         * jit/JITArithmetic.cpp:
   9072         (JSC::JIT::compileBinaryArithOpSlowCase):
   9073         (JSC::JIT::emitSlow_op_add):
   9074         (JSC::JIT::emitSlow_op_mul):
   9075         (JSC::JIT::emit_op_sub):
   9076         (JSC::JIT::emitSlow_op_sub): Don't take a stub call when operating on
   9077         a constant int and a double.
   9078 
   9079 2009-09-28  Oliver Hunt  <oliver (a] apple.com>
   9080 
   9081         Reviewed by Gavin Barraclough.
   9082 
   9083         Tidy up codeblock sampler
   9084         https://bugs.webkit.org/show_bug.cgi?id=29836
   9085 
   9086         Some rather simple refactoring of codeblock sampler so that
   9087         it's easier for us to use it to find problems in non-jsc
   9088         environments
   9089 
   9090         * JavaScriptCore.exp:
   9091         * bytecode/SamplingTool.h:
   9092         * debugger/Debugger.cpp:
   9093         (JSC::evaluateInGlobalCallFrame):
   9094         * debugger/DebuggerCallFrame.cpp:
   9095         (JSC::DebuggerCallFrame::evaluate):
   9096         * interpreter/Interpreter.cpp:
   9097         (JSC::Interpreter::Interpreter):
   9098         (JSC::Interpreter::execute):
   9099         (JSC::Interpreter::privateExecute):
   9100         (JSC::Interpreter::enableSampler):
   9101         (JSC::Interpreter::dumpSampleData):
   9102         (JSC::Interpreter::startSampling):
   9103         (JSC::Interpreter::stopSampling):
   9104         * interpreter/Interpreter.h:
   9105         (JSC::Interpreter::sampler):
   9106         * jit/JIT.h:
   9107         * jsc.cpp:
   9108         (runWithScripts):
   9109         * runtime/Completion.cpp:
   9110         (JSC::checkSyntax):
   9111         (JSC::evaluate):
   9112         * runtime/Executable.h:
   9113         (JSC::EvalExecutable::EvalExecutable):
   9114         (JSC::ProgramExecutable::create):
   9115         (JSC::ProgramExecutable::ProgramExecutable):
   9116         * runtime/JSGlobalData.cpp:
   9117         (JSC::JSGlobalData::startSampling):
   9118         (JSC::JSGlobalData::stopSampling):
   9119         (JSC::JSGlobalData::dumpSampleData):
   9120         * runtime/JSGlobalData.h:
   9121         * runtime/JSGlobalObjectFunctions.cpp:
   9122         (JSC::globalFuncEval):
   9123 
   9124 2009-09-29  Jeremy Orlow  <jorlow (a] chromium.org>
   9125 
   9126         Reviewed by Dimitri Glazkov.
   9127 
   9128         Add GYP generated files to svn:ignore
   9129         https://bugs.webkit.org/show_bug.cgi?id=29895
   9130 
   9131         The following files are generated by JavaScriptCore's GYP file and should be ignored:
   9132 
   9133         pcre.mk
   9134         wtf.scons
   9135         wtf.mk
   9136         SConstruct
   9137         wtf_config.scons
   9138         wtf_config.mk
   9139         pcre.scons
   9140 
   9141         * JavaScriptCore.gyp: Changed property svn:ignore.
   9142 
   9143 2009-09-29  Geoffrey Garen  <ggaren (a] apple.com>
   9144 
   9145         Reviewed by Sam Weinig.
   9146 
   9147         Standardized an optimization for adding non-numbers.
   9148         
   9149         SunSpider says maybe a tiny speedup.
   9150 
   9151         * jit/JITArithmetic.cpp:
   9152         (JSC::JIT::emit_op_add):
   9153         (JSC::JIT::emitSlow_op_add):
   9154 
   9155 2009-09-29  Geoffrey Garen  <ggaren (a] apple.com>
   9156 
   9157         Windows build fix: export a new symbol.
   9158 
   9159         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   9160         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   9161 
   9162 2009-09-28  Geoffrey Garen  <ggaren (a] apple.com>
   9163 
   9164         Reviewed by Sam Weinig.
   9165 
   9166         Removed virtual destructor from JSGlobalObjectData to eliminate pointer
   9167         fix-ups when accessing JSGlobalObject::d.
   9168         
   9169         Replaced with an explicit destructor function pointer.
   9170         
   9171         6% speedup on bench-alloc-nonretained.js.
   9172 
   9173         * JavaScriptCore.exp:
   9174         * runtime/JSGlobalObject.cpp:
   9175         (JSC::JSGlobalObject::~JSGlobalObject):
   9176         (JSC::JSGlobalObject::destroyJSGlobalObjectData):
   9177         * runtime/JSGlobalObject.h:
   9178         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
   9179         (JSC::JSGlobalObject::JSGlobalObject):
   9180 
   9181 2009-09-29  Janne Koskinen  <janne.p.koskinen (a] digia.com>
   9182 
   9183         Reviewed by David Kilzer.
   9184 
   9185         [Qt] Assert messages prints visible in Symbian
   9186         https://bugs.webkit.org/show_bug.cgi?id=29808
   9187 
   9188         Asserts use vprintf to print the messages to stderr.
   9189         In Symbian Open C it is not possible to see stderr so
   9190         I routed the messages to stdout instead.
   9191 
   9192         * wtf/Assertions.cpp:
   9193 
   9194 2009-09-29  Janne Koskinen  <janne.p.koskinen (a] digia.com>
   9195 
   9196         Reviewed by Darin Adler.
   9197 
   9198         [Qt] Symbian CRASH macro implementation
   9199 
   9200         Added Symbian specific crash macro that
   9201         stops to crash line if JIT debugging is used.
   9202         Additional differentiation of access violation
   9203         (KERN-EXEC 3) and CRASH panic.
   9204 
   9205         * wtf/Assertions.h:
   9206 
   9207 2009-09-28  Mark Rowe  <mrowe (a] apple.com>
   9208 
   9209         Fix the PowerPC build.
   9210 
   9211         * JavaScriptCore.exp:
   9212 
   9213 2009-09-28  Mark Rowe  <mrowe (a] apple.com>
   9214 
   9215         Reviewed by Gavin Barraclough.
   9216 
   9217         <rdar://problem/7195704> JavaScriptCore fails to mark registers when built for x86_64 using LLVM GCC.
   9218 
   9219         * runtime/Collector.cpp:
   9220         (JSC::Heap::markCurrentThreadConservatively): Force jmp_buf to use the appropriate alignment for a pointer
   9221         to ensure that we correctly interpret the contents of registers during marking.
   9222 
   9223 2009-09-28  Geoffrey Garen  <ggaren (a] apple.com>
   9224 
   9225         Windows build fix: added new exports.
   9226 
   9227         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   9228         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   9229 
   9230 2009-09-28  Geoffrey Garen  <ggaren (a] apple.com>
   9231 
   9232         Windows build fix: removed exports that no longer exist.
   9233 
   9234         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   9235         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   9236 
   9237 2009-09-28  Geoffrey Garen  <ggaren (a] apple.com>
   9238 
   9239         Reviewed by Darin Adler.
   9240 
   9241         NotNullPassRefPtr: smart pointer optimized for passing references that are not null
   9242         https://bugs.webkit.org/show_bug.cgi?id=29822
   9243         
   9244         Added NotNullPassRefPtr, and deployed it in all places that initialize
   9245         JavaScript objects.
   9246         
   9247         2.2% speedup on bench-allocate-nonretained.js.
   9248 
   9249         * API/JSCallbackConstructor.cpp:
   9250         (JSC::JSCallbackConstructor::JSCallbackConstructor):
   9251         * API/JSCallbackConstructor.h:
   9252         * API/JSCallbackObject.h:
   9253         * API/JSCallbackObjectFunctions.h:
   9254         (JSC::JSCallbackObject::JSCallbackObject):
   9255         * JavaScriptCore.exp:
   9256         * bytecode/CodeBlock.h:
   9257         (JSC::CodeBlock::addFunctionDecl):
   9258         (JSC::CodeBlock::addFunctionExpr):
   9259         * runtime/ArrayConstructor.cpp:
   9260         (JSC::ArrayConstructor::ArrayConstructor):
   9261         * runtime/ArrayConstructor.h:
   9262         * runtime/ArrayPrototype.cpp:
   9263         (JSC::ArrayPrototype::ArrayPrototype):
   9264         * runtime/ArrayPrototype.h:
   9265         * runtime/BooleanConstructor.cpp:
   9266         (JSC::BooleanConstructor::BooleanConstructor):
   9267         * runtime/BooleanConstructor.h:
   9268         * runtime/BooleanObject.cpp:
   9269         (JSC::BooleanObject::BooleanObject):
   9270         * runtime/BooleanObject.h:
   9271         * runtime/BooleanPrototype.cpp:
   9272         (JSC::BooleanPrototype::BooleanPrototype):
   9273         * runtime/BooleanPrototype.h:
   9274         * runtime/DateConstructor.cpp:
   9275         (JSC::DateConstructor::DateConstructor):
   9276         * runtime/DateConstructor.h:
   9277         * runtime/DateInstance.cpp:
   9278         (JSC::DateInstance::DateInstance):
   9279         * runtime/DateInstance.h:
   9280         * runtime/DatePrototype.cpp:
   9281         (JSC::DatePrototype::DatePrototype):
   9282         * runtime/DatePrototype.h:
   9283         * runtime/ErrorConstructor.cpp:
   9284         (JSC::ErrorConstructor::ErrorConstructor):
   9285         * runtime/ErrorConstructor.h:
   9286         * runtime/ErrorInstance.cpp:
   9287         (JSC::ErrorInstance::ErrorInstance):
   9288         * runtime/ErrorInstance.h:
   9289         * runtime/ErrorPrototype.cpp:
   9290         (JSC::ErrorPrototype::ErrorPrototype):
   9291         * runtime/ErrorPrototype.h:
   9292         * runtime/FunctionConstructor.cpp:
   9293         (JSC::FunctionConstructor::FunctionConstructor):
   9294         * runtime/FunctionConstructor.h:
   9295         * runtime/FunctionPrototype.cpp:
   9296         (JSC::FunctionPrototype::FunctionPrototype):
   9297         * runtime/FunctionPrototype.h:
   9298         * runtime/GlobalEvalFunction.cpp:
   9299         (JSC::GlobalEvalFunction::GlobalEvalFunction):
   9300         * runtime/GlobalEvalFunction.h:
   9301         * runtime/InternalFunction.cpp:
   9302         (JSC::InternalFunction::InternalFunction):
   9303         * runtime/InternalFunction.h:
   9304         (JSC::InternalFunction::InternalFunction):
   9305         * runtime/JSActivation.cpp:
   9306         (JSC::JSActivation::JSActivation):
   9307         * runtime/JSActivation.h:
   9308         (JSC::JSActivation::JSActivationData::JSActivationData):
   9309         * runtime/JSArray.cpp:
   9310         (JSC::JSArray::JSArray):
   9311         * runtime/JSArray.h:
   9312         * runtime/JSByteArray.cpp:
   9313         (JSC::JSByteArray::JSByteArray):
   9314         * runtime/JSByteArray.h:
   9315         * runtime/JSFunction.cpp:
   9316         (JSC::JSFunction::JSFunction):
   9317         * runtime/JSFunction.h:
   9318         * runtime/JSGlobalObject.h:
   9319         (JSC::JSGlobalObject::JSGlobalObject):
   9320         * runtime/JSONObject.h:
   9321         (JSC::JSONObject::JSONObject):
   9322         * runtime/JSObject.h:
   9323         (JSC::JSObject::JSObject):
   9324         (JSC::JSObject::setStructure):
   9325         * runtime/JSVariableObject.h:
   9326         (JSC::JSVariableObject::JSVariableObject):
   9327         * runtime/JSWrapperObject.h:
   9328         (JSC::JSWrapperObject::JSWrapperObject):
   9329         * runtime/MathObject.cpp:
   9330         (JSC::MathObject::MathObject):
   9331         * runtime/MathObject.h:
   9332         * runtime/NativeErrorConstructor.cpp:
   9333         (JSC::NativeErrorConstructor::NativeErrorConstructor):
   9334         * runtime/NativeErrorConstructor.h:
   9335         * runtime/NativeErrorPrototype.cpp:
   9336         (JSC::NativeErrorPrototype::NativeErrorPrototype):
   9337         * runtime/NativeErrorPrototype.h:
   9338         * runtime/NumberConstructor.cpp:
   9339         (JSC::NumberConstructor::NumberConstructor):
   9340         * runtime/NumberConstructor.h:
   9341         * runtime/NumberObject.cpp:
   9342         (JSC::NumberObject::NumberObject):
   9343         * runtime/NumberObject.h:
   9344         * runtime/NumberPrototype.cpp:
   9345         (JSC::NumberPrototype::NumberPrototype):
   9346         * runtime/NumberPrototype.h:
   9347         * runtime/ObjectConstructor.cpp:
   9348         (JSC::ObjectConstructor::ObjectConstructor):
   9349         * runtime/ObjectConstructor.h:
   9350         * runtime/ObjectPrototype.cpp:
   9351         (JSC::ObjectPrototype::ObjectPrototype):
   9352         * runtime/ObjectPrototype.h:
   9353         * runtime/PropertyNameArray.h:
   9354         (JSC::PropertyNameArrayData::setCachedPrototypeChain):
   9355         * runtime/PrototypeFunction.cpp:
   9356         (JSC::PrototypeFunction::PrototypeFunction):
   9357         * runtime/PrototypeFunction.h:
   9358         * runtime/RegExpConstructor.cpp:
   9359         (JSC::RegExpConstructor::RegExpConstructor):
   9360         * runtime/RegExpConstructor.h:
   9361         * runtime/RegExpObject.cpp:
   9362         (JSC::RegExpObject::RegExpObject):
   9363         * runtime/RegExpObject.h:
   9364         (JSC::RegExpObject::RegExpObjectData::RegExpObjectData):
   9365         * runtime/RegExpPrototype.cpp:
   9366         (JSC::RegExpPrototype::RegExpPrototype):
   9367         * runtime/RegExpPrototype.h:
   9368         * runtime/StringConstructor.cpp:
   9369         (JSC::StringConstructor::StringConstructor):
   9370         * runtime/StringConstructor.h:
   9371         * runtime/StringObject.cpp:
   9372         (JSC::StringObject::StringObject):
   9373         * runtime/StringObject.h:
   9374         * runtime/StringObjectThatMasqueradesAsUndefined.h:
   9375         (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
   9376         * runtime/StringPrototype.cpp:
   9377         (JSC::StringPrototype::StringPrototype):
   9378         * runtime/StringPrototype.h:
   9379         * wtf/PassRefPtr.h:
   9380         (WTF::NotNullPassRefPtr::NotNullPassRefPtr):
   9381         (WTF::NotNullPassRefPtr::~NotNullPassRefPtr):
   9382         (WTF::NotNullPassRefPtr::get):
   9383         (WTF::NotNullPassRefPtr::clear):
   9384         (WTF::NotNullPassRefPtr::releaseRef):
   9385         (WTF::NotNullPassRefPtr::operator*):
   9386         (WTF::NotNullPassRefPtr::operator->):
   9387         (WTF::NotNullPassRefPtr::operator!):
   9388         (WTF::NotNullPassRefPtr::operator UnspecifiedBoolType):
   9389         * wtf/RefPtr.h:
   9390         (WTF::RefPtr::RefPtr):
   9391         (WTF::operator==):
   9392 
   9393 2009-09-28  Oliver Hunt  <oliver (a] apple.com>
   9394 
   9395         Reviewed by Geoff Garen.
   9396 
   9397         Hard dependency on SSE2 instruction set with JIT
   9398         https://bugs.webkit.org/show_bug.cgi?id=29779
   9399 
   9400         Add floating point support checks to op_jfalse and op_jtrue, and
   9401         fix the logic for the slow case of op_add
   9402 
   9403         * jit/JITArithmetic.cpp:
   9404         (JSC::JIT::emitSlow_op_add):
   9405         * jit/JITOpcodes.cpp:
   9406         (JSC::JIT::emit_op_jfalse):
   9407         (JSC::JIT::emit_op_jtrue):
   9408 
   9409 2009-09-28  Yaar Schnitman  <yaar (a] chromium.org>
   9410 
   9411         Reviewed by Dimitri Glazkov.
   9412 
   9413         Chromium port - recognize we are being built independently
   9414         of chromium and look for dependencies under webkit/chromium rather
   9415         than chromium/src.
   9416 
   9417         https://bugs.webkit.org/show_bug.cgi?id=29722
   9418 
   9419         * JavaScriptCore.gyp/JavaScriptCore.gyp:
   9420 
   9421 2009-09-28  Jakub Wieczorek  <faw217 (a] gmail.com>
   9422 
   9423         Reviewed by Simon Hausmann.
   9424 
   9425         [Qt] Implement XSLT support with QtXmlPatterns.
   9426         https://bugs.webkit.org/show_bug.cgi?id=28303
   9427 
   9428         * wtf/Platform.h: Add a WTF_USE_QXMLQUERY #define.
   9429 
   9430 2009-09-28  Gabor Loki  <loki (a] inf.u-szeged.hu>
   9431 
   9432         Reviewed by Simon Hausmann.
   9433 
   9434         Remove __clear_cache which is an internal function of GCC
   9435         https://bugs.webkit.org/show_bug.cgi?id=28886
   9436 
   9437         Although __clear_cache is exported from GCC, this is an internal
   9438         function. GCC makes no promises about it.
   9439 
   9440         * jit/ExecutableAllocator.h:
   9441         (JSC::ExecutableAllocator::cacheFlush):
   9442 
   9443 2009-09-28  Sam Weinig  <sam (a] webkit.org>
   9444 
   9445         Reviewed by Oliver Hunt.
   9446 
   9447         Fix an absolute path to somewhere in Oliver's machine to a relative path
   9448         for derived JSONObject.lut.h.
   9449 
   9450         * JavaScriptCore.xcodeproj/project.pbxproj:
   9451 
   9452 2009-09-28  Joerg Bornemann  <joerg.bornemann (a] nokia.com>
   9453 
   9454         Reviewed by Simon Hausmann.
   9455 
   9456         Add ARM version detection for Windows CE.
   9457 
   9458         * wtf/Platform.h:
   9459 
   9460 2009-09-26  Yongjun Zhang  <yongjun.zhang (a] nokia.com>
   9461 
   9462         Reviewed by Simon Hausmann.
   9463 
   9464         Add MarkStackSymbian.cpp to build JavascriptCore for Symbian.
   9465 
   9466         Re-use Windows shrinkAllocation implementation because Symbian doesn't
   9467         support releasing part of memory region.
   9468         
   9469         Use fastMalloc and fastFree to implement allocateStack and releaseStack
   9470         for Symbian port.
   9471 
   9472         * JavaScriptCore.pri:
   9473         * runtime/MarkStack.h:
   9474         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
   9475         * runtime/MarkStackSymbian.cpp: Added.
   9476         (JSC::MarkStack::initializePagesize):
   9477         (JSC::MarkStack::allocateStack):
   9478         (JSC::MarkStack::releaseStack):
   9479 
   9480 2009-09-25  Gabor Loki  <loki (a] inf.u-szeged.hu>
   9481 
   9482         Reviewed by Gavin Barraclough.
   9483 
   9484         Fix unaligned data access in YARR_JIT on ARMv5 and below.
   9485         https://bugs.webkit.org/show_bug.cgi?id=29695
   9486 
   9487         On ARMv5 and below all data access should be naturally aligned.
   9488         In the YARR_JIT there is a case when character pairs are
   9489         loaded from the input string, but this data access is not
   9490         naturally aligned. This fix introduces load32WithUnalignedHalfWords
   9491         and branch32WithUnalignedHalfWords functions which contain
   9492         naturally aligned memory loads - half word loads - on ARMv5 and below.
   9493 
   9494         * assembler/MacroAssemblerARM.cpp:
   9495         (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords):
   9496         * assembler/MacroAssemblerARM.h:
   9497         (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords):
   9498         (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords):
   9499         * assembler/MacroAssemblerARMv7.h:
   9500         (JSC::MacroAssemblerARMv7::load32WithUnalignedHalfWords):
   9501         (JSC::MacroAssemblerARMv7::branch32):
   9502         (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords):
   9503         * assembler/MacroAssemblerX86Common.h:
   9504         (JSC::MacroAssemblerX86Common::load32WithUnalignedHalfWords):
   9505         (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords):
   9506         * wtf/Platform.h:
   9507         * yarr/RegexJIT.cpp:
   9508         (JSC::Yarr::RegexGenerator::generatePatternCharacterPair):
   9509 
   9510 2009-09-25  Jeremy Orlow  <jorlow (a] chromium.org>
   9511 
   9512         This is breaking Chromium try bots, so I'm counting this as a build fix.
   9513 
   9514         Add more svn:ignore exceptions.  On different platforms, these files are
   9515         generated with different case for JavaScriptCore.  Also there are some
   9516         wtf project files that get built apparently.
   9517 
   9518         * JavaScriptCore.gyp: Changed property svn:ignore.
   9519 
   9520 2009-09-25  Ada Chan  <adachan (a] apple.com>
   9521 
   9522         Build fix.
   9523 
   9524         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   9525         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   9526 
   9527 2009-09-25  Geoffrey Garen  <ggaren (a] apple.com>
   9528 
   9529         Reviewed by Darin Adler.
   9530 
   9531         Inlined some object creation code, including lexicalGlobalObject access
   9532         https://bugs.webkit.org/show_bug.cgi?id=29750
   9533         
   9534         SunSpider says 0.5% faster.
   9535         
   9536         0.8% speedup on bench-alloc-nonretained.js.
   9537         2.5% speedup on v8-splay.js.
   9538 
   9539         * interpreter/CachedCall.h:
   9540         (JSC::CachedCall::CachedCall):
   9541         * interpreter/CallFrame.h:
   9542         (JSC::ExecState::lexicalGlobalObject):
   9543         (JSC::ExecState::globalThisValue):
   9544         * interpreter/Interpreter.cpp:
   9545         (JSC::Interpreter::dumpRegisters):
   9546         (JSC::Interpreter::execute):
   9547         (JSC::Interpreter::privateExecute):
   9548         * jit/JITStubs.cpp:
   9549         (JSC::DEFINE_STUB_FUNCTION):
   9550         * runtime/FunctionConstructor.cpp:
   9551         (JSC::constructFunction):
   9552         * runtime/ScopeChain.cpp:
   9553         (JSC::ScopeChainNode::print):
   9554         * runtime/ScopeChain.h:
   9555         (JSC::ScopeChainNode::ScopeChainNode):
   9556         (JSC::ScopeChainNode::~ScopeChainNode):
   9557         (JSC::ScopeChainNode::push):
   9558         (JSC::ScopeChain::ScopeChain):
   9559         (JSC::ScopeChain::globalObject): Added a globalObject data member to ScopeChainNode.
   9560         Replaced accessor function for globalObject() with data member. Replaced
   9561         globalThisObject() accessor with direct access to globalThis, to match.
   9562 
   9563         * runtime/JSGlobalObject.cpp:
   9564         (JSC::JSGlobalObject::init):
   9565         * runtime/JSGlobalObject.h: Inlined array and object construction.
   9566 
   9567 2009-09-25  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   9568 
   9569         Reviewed by Gavin Barraclough.
   9570 
   9571         Add ARM version detection rules for Symbian
   9572         https://bugs.webkit.org/show_bug.cgi?id=29715
   9573 
   9574         * wtf/Platform.h:
   9575 
   9576 2009-09-24  Xan Lopez  <xlopez (a] igalia.com>
   9577 
   9578         Reviewed by Mark "Do It!" Rowe.
   9579 
   9580         Some GCC versions don't like C++-style comments in preprocessor
   9581         directives, change to C-style to shut them up.
   9582 
   9583         * wtf/Platform.h:
   9584 
   9585 2009-09-24  Oliver Hunt  <oliver (a] apple.com>
   9586 
   9587         Reviewed by Gavin Barraclough.
   9588 
   9589         Division is needlessly slow in 64-bit
   9590         https://bugs.webkit.org/show_bug.cgi?id=29723
   9591 
   9592         Add codegen for op_div on x86-64
   9593 
   9594         * jit/JIT.cpp:
   9595         (JSC::JIT::privateCompileMainPass):
   9596         (JSC::JIT::privateCompileSlowCases):
   9597         * jit/JIT.h:
   9598         * jit/JITArithmetic.cpp:
   9599         (JSC::JIT::compileBinaryArithOpSlowCase):
   9600         (JSC::JIT::emit_op_div):
   9601         (JSC::JIT::emitSlow_op_div):
   9602         * jit/JITInlineMethods.h:
   9603         (JSC::JIT::isOperandConstantImmediateDouble):
   9604         (JSC::JIT::addressFor):
   9605         (JSC::JIT::emitLoadDouble):
   9606         (JSC::JIT::emitLoadInt32ToDouble):
   9607         (JSC::JIT::emitJumpSlowCaseIfNotImmediateNumber):
   9608 
   9609 2009-09-24  Jeremy Orlow  <jorlow (a] chromium.org>
   9610 
   9611         Reviewed by Dimitri Glazkov.
   9612 
   9613         Add GYP generated files to svn:ignore
   9614         https://bugs.webkit.org/show_bug.cgi?id=29724
   9615 
   9616         Adding the following files to the svn:ignore list (all in the
   9617         JavaScriptCore/JavaScriptCore.gyp directory)
   9618 
   9619         JavaScriptCore.xcodeproj
   9620         JavaScriptCore.sln
   9621         JavaScriptCore.vcproj
   9622         JavaScriptCore_Debug.rules
   9623         JavaScriptCore_Release.rules
   9624         JavaScriptCore_Release - no tcmalloc.rules
   9625         JavaScriptCore_Purify.rules
   9626         JavaScriptCore.mk
   9627         JavaScriptCore_Debug_rules.mk
   9628         JavaScriptCore_Release_rules.mk
   9629         JavaScriptCore_Release - no tcmalloc_rules.mk
   9630         JavaScriptCore_Purify_rules.mk
   9631         JavaScriptCore.scons
   9632         JavaScriptCore_main.scons
   9633 
   9634         * JavaScriptCore.gyp: Changed property svn:ignore.
   9635 
   9636 2009-09-24  Yong Li  <yong.li (a] torchmobile.com>
   9637 
   9638         Reviewed by Adam Barth.
   9639 
   9640         Replace platform-dependent code with WTF::currentTime()
   9641         https://bugs.webkit.org/show_bug.cgi?id=29148
   9642 
   9643         * jsc.cpp:
   9644         (StopWatch::start):
   9645         (StopWatch::stop):
   9646         (StopWatch::getElapsedMS):
   9647         * runtime/TimeoutChecker.cpp:
   9648         (JSC::getCPUTime):
   9649 
   9650 2009-09-24  Mark Rowe  <mrowe (a] apple.com>
   9651 
   9652         Reviewed by Sam Weinig.
   9653 
   9654         <rdar://problem/7215058> FastMalloc scavenging thread should be named
   9655 
   9656         * wtf/FastMalloc.cpp:
   9657         (WTF::TCMalloc_PageHeap::scavengerThread): Set the thread name.
   9658         * wtf/Platform.h: Move the knowledge of whether pthread_setname_np exists to here as HAVE(PTHREAD_SETNAME_NP).
   9659         * wtf/ThreadingPthreads.cpp:
   9660         (WTF::setThreadNameInternal): Use HAVE(PTHREAD_SETNAME_NP).
   9661 
   9662 2009-09-24  Geoffrey Garen  <ggaren (a] apple.com>
   9663 
   9664         Reviewed by Sam Weinig.
   9665 
   9666         Renamed clear to removeAll, as suggested by Darin Adler.
   9667 
   9668         * wtf/HashCountedSet.h:
   9669         (WTF::::removeAll):
   9670 
   9671 2009-09-24  Mark Rowe  <mrowe (a] apple.com>
   9672 
   9673         Reviewed by Gavin Barraclough.
   9674 
   9675         Fix FastMalloc to build with assertions enabled.
   9676 
   9677         * wtf/FastMalloc.cpp:
   9678         (WTF::TCMalloc_Central_FreeList::ReleaseToSpans):
   9679         * wtf/TCSpinLock.h:
   9680         (TCMalloc_SpinLock::IsHeld):
   9681 
   9682 2009-09-24  Geoffrey Garen  <ggaren (a] apple.com>
   9683 
   9684         Suggested by Darin Adler.
   9685 
   9686         Removed some unnecessary parameter names.
   9687 
   9688         * wtf/HashCountedSet.h:
   9689 
   9690 2009-09-24  Janne Koskinen  <janne.p.koskinen (a] digia.com>
   9691 
   9692         Reviewed by Simon Hausmann.
   9693 
   9694         On Windows JSChar is typedef'ed to wchar_t.
   9695 
   9696         When building with WINSCW for Symbian we need to do the
   9697         same typedef.
   9698 
   9699         * API/JSStringRef.h:
   9700 
   9701 2009-09-23  Geoffrey Garen  <ggaren (a] apple.com>
   9702 
   9703         A piece of my last patch that I forgot.
   9704 
   9705         * wtf/HashCountedSet.h:
   9706         (WTF::::clear): Added HashCountedSet::clear.
   9707 
   9708 2009-09-24  Gabor Loki  <loki (a] inf.u-szeged.hu>
   9709 
   9710         Reviewed by Gavin Barraclough.
   9711 
   9712         Avoid __clear_cache built-in function if DISABLE_BUILTIN_CLEAR_CACHE define is set
   9713         https://bugs.webkit.org/show_bug.cgi?id=28886
   9714 
   9715         There are some GCC packages (for example GCC-2006q3 from CodeSourcery)
   9716         which contain __clear_cache built-in function only for C while the C++
   9717         version of __clear_cache is missing on ARM architectures.
   9718 
   9719         Fixed a small bug in the inline assembly of cacheFlush function on
   9720         ARM_TRADITIONAL.
   9721 
   9722         * jit/ExecutableAllocator.h:
   9723         (JSC::ExecutableAllocator::cacheFlush):
   9724 
   9725 2009-09-23  Geoffrey Garen  <ggaren (a] apple.com>
   9726 
   9727         Reviewed by Sam Weinig.
   9728 
   9729         Added the ability to swap vectors with inline capacities, so you can
   9730         store a vector with inline capacity in a hash table.
   9731 
   9732         * wtf/Vector.h:
   9733         (WTF::swap):
   9734         (WTF::VectorBuffer::swap):
   9735 
   9736 2009-09-23  David Kilzer  <ddkilzer (a] apple.com>
   9737 
   9738         Move definition of USE(PLUGIN_HOST_PROCESS) from WebKitPrefix.h to Platform.h
   9739 
   9740         Reviewed by Mark Rowe.
   9741 
   9742         * wtf/Platform.h: Define WTF_USE_PLUGIN_HOST_PROCESS to 1 when
   9743         building on 64-bit SnowLeopard.  Define to 0 elsewhere.
   9744 
   9745 2009-09-22  Oliver Hunt  <oliver (a] apple.com>
   9746 
   9747         Reviewed by Geoff Garen.
   9748 
   9749         Code sampling builds are broken.
   9750         https://bugs.webkit.org/show_bug.cgi?id=29662
   9751 
   9752         Fix build.
   9753 
   9754         * bytecode/EvalCodeCache.h:
   9755         (JSC::EvalCodeCache::get):
   9756         * bytecode/SamplingTool.cpp:
   9757         (JSC::ScriptSampleRecord::sample):
   9758         (JSC::SamplingTool::doRun):
   9759         (JSC::SamplingTool::notifyOfScope):
   9760         (JSC::compareScriptSampleRecords):
   9761         (JSC::SamplingTool::dump):
   9762         * bytecode/SamplingTool.h:
   9763         (JSC::ScriptSampleRecord::ScriptSampleRecord):
   9764         (JSC::ScriptSampleRecord::~ScriptSampleRecord):
   9765         (JSC::SamplingTool::SamplingTool):
   9766         * bytecompiler/BytecodeGenerator.cpp:
   9767         (JSC::BytecodeGenerator::BytecodeGenerator):
   9768         (JSC::BytecodeGenerator::emitNewFunction):
   9769         (JSC::BytecodeGenerator::emitNewFunctionExpression):
   9770         * bytecompiler/BytecodeGenerator.h:
   9771         (JSC::BytecodeGenerator::makeFunction):
   9772         * debugger/Debugger.cpp:
   9773         (JSC::evaluateInGlobalCallFrame):
   9774         * debugger/DebuggerCallFrame.cpp:
   9775         (JSC::DebuggerCallFrame::evaluate):
   9776         * parser/Nodes.cpp:
   9777         (JSC::ScopeNode::ScopeNode):
   9778         * runtime/Completion.cpp:
   9779         (JSC::checkSyntax):
   9780         (JSC::evaluate):
   9781         * runtime/Executable.cpp:
   9782         (JSC::FunctionExecutable::fromGlobalCode):
   9783         * runtime/Executable.h:
   9784         (JSC::ScriptExecutable::ScriptExecutable):
   9785         (JSC::EvalExecutable::EvalExecutable):
   9786         (JSC::EvalExecutable::create):
   9787         (JSC::ProgramExecutable::ProgramExecutable):
   9788         (JSC::FunctionExecutable::create):
   9789         (JSC::FunctionExecutable::FunctionExecutable):
   9790         * runtime/JSGlobalObjectFunctions.cpp:
   9791         (JSC::globalFuncEval):
   9792 
   9793 2009-09-22  Darin Adler  <darin (a] apple.com>
   9794 
   9795         Reviewed by Sam Weinig.
   9796 
   9797         * wtf/Forward.h: Added PassOwnPtr.
   9798 
   9799 2009-09-22  Yaar Schnitman  <yaar (a] chromium.org>
   9800 
   9801         Reviewed by David Levin.
   9802 
   9803         Ported chromium.org's javascriptcore.gyp for the webkit chromium port.
   9804 
   9805         https://bugs.webkit.org/show_bug.cgi?id=29617
   9806 
   9807         * JavaScriptCore.gyp/JavaScriptCore.gyp: Added.
   9808 
   9809 2009-09-22  Thiago Macieira  <thiago.macieira (a] nokia.com>
   9810 
   9811         Reviewed by Simon Hausmann.
   9812 
   9813         Fix compilation with WINSCW: no varargs macros
   9814 
   9815         Disable variadic arguments for WINSCW just like we do
   9816         for MSVC7.
   9817 
   9818         * wtf/Assertions.h:
   9819 
   9820 2009-09-22  Kent Hansen  <khansen (a] trolltech.com>
   9821 
   9822         Reviewed by Simon Hausmann.
   9823 
   9824         Disable variadic macros on MSVC7.
   9825 
   9826         This was originally added in r26589 but not extended
   9827         when LOG_DISABLED/ASSERT_DISABLED was introduced.
   9828 
   9829         * wtf/Assertions.h:
   9830 
   9831 2009-09-22  Simon Hausmann  <simon.hausmann (a] nokia.com>
   9832 
   9833         Unreviewed build fix for Windows CE < 5
   9834 
   9835         Define WINCEBASIC to disable the IsDebuggerPresent() code in
   9836         wtf/Assertions.cpp.
   9837 
   9838         * JavaScriptCore.pri:
   9839 
   9840 2009-09-22  Joerg Bornemann  <joerg.bornemann (a] nokia.com>
   9841 
   9842         Reviewed by Simon Hausmann.
   9843 
   9844         Fix major memory leak in JavaScriptCore RegisterFile on Windows CE
   9845 
   9846         https://bugs.webkit.org/show_bug.cgi?id=29367
   9847 
   9848         On Widows CE we must decommit all committed pages before we release
   9849         them. See VirtualFree documentation.
   9850         Desktop Windows behaves much smoother in this situation.
   9851 
   9852         * interpreter/RegisterFile.cpp:
   9853         (JSC::RegisterFile::~RegisterFile):
   9854 
   9855 2009-09-21  Greg Bolsinga  <bolsinga (a] apple.com>
   9856 
   9857         Reviewed by Simon Fraser & Sam Weinig.
   9858 
   9859         Add ENABLE(ORIENTATION_EVENTS)
   9860         https://bugs.webkit.org/show_bug.cgi?id=29508
   9861 
   9862         * wtf/Platform.h: Also sort PLATFORM(IPHONE) #defines.
   9863 
   9864 2009-09-21  Jedrzej Nowacki  <jedrzej.nowacki (a] nokia.com>
   9865 
   9866         Reviewed by Eric Seidel.
   9867 
   9868         [Fix] SourceCode's uninitialized member
   9869         
   9870         Potential source of crashes and bugs was fixed. Default constructor
   9871         didn't initialized m_provider member.
   9872 
   9873         https://bugs.webkit.org/show_bug.cgi?id=29364
   9874 
   9875         * parser/SourceCode.h:
   9876         (JSC::SourceCode::SourceCode):
   9877 
   9878 2009-09-21  Oliver Hunt  <oliver (a] apple.com>
   9879 
   9880         Reviewed by Geoff Garen.
   9881 
   9882         REGRESSION (r48582): Crash in StructureStubInfo::initPutByIdTransition when reloading trac.webkit.org
   9883         https://bugs.webkit.org/show_bug.cgi?id=29599
   9884 
   9885         It is unsafe to attempt to cache new property transitions on
   9886         dictionaries of any type.
   9887 
   9888         * interpreter/Interpreter.cpp:
   9889         (JSC::Interpreter::tryCachePutByID):
   9890         * jit/JITStubs.cpp:
   9891         (JSC::JITThunks::tryCachePutByID):
   9892 
   9893 2009-09-21  Oliver Hunt  <oliver (a] apple.com>
   9894 
   9895         RS=Maciej Stachowiak.
   9896 
   9897         Re-land SNES fix with corrected assertion.
   9898 
   9899         * interpreter/Interpreter.cpp:
   9900         (JSC::Interpreter::resolveGlobal):
   9901         (JSC::Interpreter::tryCachePutByID):
   9902         (JSC::Interpreter::tryCacheGetByID):
   9903         * jit/JITStubs.cpp:
   9904         (JSC::JITThunks::tryCachePutByID):
   9905         (JSC::JITThunks::tryCacheGetByID):
   9906         (JSC::DEFINE_STUB_FUNCTION):
   9907         * runtime/BatchedTransitionOptimizer.h:
   9908         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
   9909         * runtime/JSObject.cpp:
   9910         (JSC::JSObject::removeDirect):
   9911         * runtime/Structure.cpp:
   9912         (JSC::Structure::Structure):
   9913         (JSC::Structure::getEnumerablePropertyNames):
   9914         (JSC::Structure::despecifyDictionaryFunction):
   9915         (JSC::Structure::addPropertyTransitionToExistingStructure):
   9916         (JSC::Structure::addPropertyTransition):
   9917         (JSC::Structure::removePropertyTransition):
   9918         (JSC::Structure::toDictionaryTransition):
   9919         (JSC::Structure::toCacheableDictionaryTransition):
   9920         (JSC::Structure::toUncacheableDictionaryTransition):
   9921         (JSC::Structure::fromDictionaryTransition):
   9922         (JSC::Structure::removePropertyWithoutTransition):
   9923         * runtime/Structure.h:
   9924         (JSC::Structure::isDictionary):
   9925         (JSC::Structure::isUncacheableDictionary):
   9926         (JSC::Structure::):
   9927         * runtime/StructureChain.cpp:
   9928         (JSC::StructureChain::isCacheable):
   9929 
   9930 2009-09-21  Adam Roben  <aroben (a] apple.com>
   9931 
   9932         Revert r48573, as it caused many assertion failures
   9933 
   9934         * interpreter/Interpreter.cpp:
   9935         * jit/JITStubs.cpp:
   9936         * runtime/BatchedTransitionOptimizer.h:
   9937         * runtime/JSObject.cpp:
   9938         * runtime/Structure.cpp:
   9939         * runtime/Structure.h:
   9940         * runtime/StructureChain.cpp:
   9941 
   9942 2009-09-21  Gustavo Noronha Silva  <gustavo.noronha (a] collabora.co.uk>
   9943 
   9944         Unreviewed make dist build fix. Missing files.
   9945 
   9946         * GNUmakefile.am:
   9947 
   9948 2009-09-19  Gavin Barraclough  <barraclough (a] apple.com>
   9949 
   9950         Reviewed by Sam 'Cabin Boy' Weinig.
   9951 
   9952         Fix stack alignment with ARM THUMB2 JIT.
   9953         https://bugs.webkit.org/show_bug.cgi?id=29526
   9954         
   9955         Stack is currently being decremented by 0x3c, bump this to 0x40 to make this a
   9956         multiple of 16 bytes.
   9957 
   9958         * jit/JITStubs.cpp:
   9959         (JSC::JITThunks::JITThunks):
   9960         * jit/JITStubs.h:
   9961 
   9962 2009-09-20  Oliver Hunt  <oliver (a] apple.com>
   9963 
   9964         Reviewed by Maciej Stachowiak.
   9965 
   9966         SNES is too slow
   9967         https://bugs.webkit.org/show_bug.cgi?id=29534
   9968 
   9969         The problem was that the emulator used multiple classes with
   9970         more properties than our dictionary cutoff allowed, this resulted
   9971         in more or less all critical logic inside the emulator requiring
   9972         uncached property access.
   9973 
   9974         Rather than simply bumping the dictionary cutoff, this patch
   9975         recognises that there are two ways to create a "dictionary"
   9976         structure.  Either by adding a large number of properties, or
   9977         by removing a property.  In the case of adding properties we
   9978         know all the existing properties will maintain their existing
   9979         offsets, so we could cache access to those properties, if we
   9980         know they won't be removed.
   9981 
   9982         To make this possible, this patch adds the logic required to
   9983         distinguish a dictionary created by addition from one created
   9984         by removal.  With this logic in place we can now cache access
   9985         to objects with large numbers of properties.
   9986 
   9987         SNES performance improved by more than 6x.
   9988 
   9989         * interpreter/Interpreter.cpp:
   9990         (JSC::Interpreter::resolveGlobal):
   9991         (JSC::Interpreter::tryCachePutByID):
   9992         (JSC::Interpreter::tryCacheGetByID):
   9993         * jit/JITStubs.cpp:
   9994         (JSC::JITThunks::tryCachePutByID):
   9995         (JSC::JITThunks::tryCacheGetByID):
   9996         (JSC::DEFINE_STUB_FUNCTION):
   9997         * runtime/BatchedTransitionOptimizer.h:
   9998         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
   9999         * runtime/JSObject.cpp:
   10000         (JSC::JSObject::removeDirect):
   10001         * runtime/Structure.cpp:
   10002         (JSC::Structure::Structure):
   10003         (JSC::Structure::getEnumerablePropertyNames):
   10004         (JSC::Structure::despecifyDictionaryFunction):
   10005         (JSC::Structure::addPropertyTransitionToExistingStructure):
   10006         (JSC::Structure::addPropertyTransition):
   10007         (JSC::Structure::removePropertyTransition):
   10008         (JSC::Structure::toDictionaryTransition):
   10009         (JSC::Structure::toCacheableDictionaryTransition):
   10010         (JSC::Structure::toUncacheableDictionaryTransition):
   10011         (JSC::Structure::fromDictionaryTransition):
   10012         (JSC::Structure::removePropertyWithoutTransition):
   10013         * runtime/Structure.h:
   10014         (JSC::Structure::isDictionary):
   10015         (JSC::Structure::isUncacheableDictionary):
   10016         (JSC::Structure::):
   10017         * runtime/StructureChain.cpp:
   10018         (JSC::StructureChain::isCacheable):
   10019 
   10020 2009-09-19  Oliver Hunt  <oliver (a] apple.com>
   10021 
   10022         Reviewed by Maciej Stachowiak.
   10023 
   10024         Implement ES5 Object.create function
   10025         https://bugs.webkit.org/show_bug.cgi?id=29524
   10026 
   10027         Implement Object.create.  Very simple patch, effectively Object.defineProperties
   10028         only creating the target object itself.
   10029 
   10030         * runtime/CommonIdentifiers.h:
   10031         * runtime/ObjectConstructor.cpp:
   10032         (JSC::ObjectConstructor::ObjectConstructor):
   10033         (JSC::objectConstructorCreate):
   10034 
   10035 2009-09-19  Dan Bernstein  <mitz (a] apple.com>
   10036 
   10037         Fix clean debug builds.
   10038 
   10039         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   10040 
   10041 2009-09-19  Joerg Bornemann  <joerg.bornemann (a] nokia.com>
   10042 
   10043         Reviewed by George Staikos.
   10044 
   10045         QtWebKit Windows CE compile fix
   10046 
   10047         https://bugs.webkit.org/show_bug.cgi?id=29379
   10048 
   10049         There is no _aligned_alloc or _aligned_free on Windows CE.
   10050         We just use the Windows code that was there before and use VirtualAlloc.
   10051         But that also means that the BLOCK_SIZE must be 64K as this function
   10052         allocates on 64K boundaries.
   10053 
   10054         * runtime/Collector.cpp:
   10055         (JSC::Heap::allocateBlock):
   10056         (JSC::Heap::freeBlock):
   10057         * runtime/Collector.h:
   10058 
   10059 2009-09-19  Oliver Hunt  <oliver (a] apple.com>
   10060 
   10061         Reviewed by Sam Weinig.
   10062 
   10063         Implement ES5 Object.defineProperties function
   10064         https://bugs.webkit.org/show_bug.cgi?id=29522
   10065 
   10066         Implement Object.defineProperties.  Fairly simple patch, simply makes use of
   10067         existing functionality used for defineProperty.
   10068 
   10069         * runtime/CommonIdentifiers.h:
   10070         * runtime/ObjectConstructor.cpp:
   10071         (JSC::ObjectConstructor::ObjectConstructor):
   10072         (JSC::defineProperties):
   10073         (JSC::objectConstructorDefineProperties):
   10074 
   10075 2009-09-19  Oliver Hunt  <oliver (a] apple.com>
   10076 
   10077         Reviewed by NOBODY (Build fix).
   10078 
   10079         Windows build fix part2
   10080 
   10081         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   10082         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   10083 
   10084 2009-09-19  Oliver Hunt  <oliver (a] apple.com>
   10085 
   10086         Reviewed by NOBODY (Buildfix).
   10087 
   10088         Windows build fix part 1.
   10089 
   10090         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   10091         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   10092 
   10093 2009-09-18  Oliver Hunt  <oliver (a] apple.com>
   10094 
   10095         Reviewed by Geoff Garen.
   10096 
   10097         Implement ES5 Object.defineProperty function
   10098         https://bugs.webkit.org/show_bug.cgi?id=29503
   10099 
   10100         Implement Object.defineProperty.  This requires adding the API to
   10101         ObjectConstructor, along with a helper function that implements the
   10102         ES5 internal [[ToPropertyDescriptor]] function.  It then adds
   10103         JSObject::defineOwnProperty that implements the appropriate ES5 semantics.
   10104         Currently defineOwnProperty uses a delete followed by a put to redefine
   10105         attributes of a property, clearly this is less efficient than it could be
   10106         but we can improve this if it needs to be possible in future.
   10107 
   10108         * JavaScriptCore.exp:
   10109         * debugger/DebuggerActivation.cpp:
   10110         (JSC::DebuggerActivation::defineGetter):
   10111         (JSC::DebuggerActivation::defineSetter):
   10112         * debugger/DebuggerActivation.h:
   10113         * interpreter/Interpreter.cpp:
   10114         (JSC::Interpreter::privateExecute):
   10115         * jit/JITStubs.cpp:
   10116           Update defineGetter/Setter calls
   10117         * runtime/CommonIdentifiers.h:
   10118         * runtime/JSArray.cpp:
   10119         (JSC::JSArray::getOwnPropertySlot):
   10120         * runtime/JSGlobalObject.cpp:
   10121         (JSC::JSGlobalObject::defineGetter):
   10122         (JSC::JSGlobalObject::defineSetter):
   10123         * runtime/JSGlobalObject.h:
   10124         * runtime/JSObject.cpp:
   10125         (JSC::JSObject::defineGetter):
   10126         (JSC::JSObject::defineSetter):
   10127         (JSC::putDescriptor):
   10128         (JSC::JSObject::defineOwnProperty):
   10129         * runtime/JSObject.h:
   10130         * runtime/ObjectConstructor.cpp:
   10131         (JSC::ObjectConstructor::ObjectConstructor):
   10132         (JSC::objectConstructorGetOwnPropertyDescriptor):
   10133         (JSC::toPropertyDescriptor):
   10134         (JSC::objectConstructorDefineProperty):
   10135         * runtime/ObjectPrototype.cpp:
   10136         (JSC::objectProtoFuncDefineGetter):
   10137         (JSC::objectProtoFuncDefineSetter):
   10138         * runtime/PropertyDescriptor.cpp:
   10139         (JSC::PropertyDescriptor::writable):
   10140         (JSC::PropertyDescriptor::enumerable):
   10141         (JSC::PropertyDescriptor::configurable):
   10142         (JSC::PropertyDescriptor::isDataDescriptor):
   10143         (JSC::PropertyDescriptor::isGenericDescriptor):
   10144         (JSC::PropertyDescriptor::isAccessorDescriptor):
   10145         (JSC::PropertyDescriptor::getter):
   10146         (JSC::PropertyDescriptor::setter):
   10147         (JSC::PropertyDescriptor::setDescriptor):
   10148         (JSC::PropertyDescriptor::setAccessorDescriptor):
   10149         (JSC::PropertyDescriptor::setWritable):
   10150         (JSC::PropertyDescriptor::setEnumerable):
   10151         (JSC::PropertyDescriptor::setConfigurable):
   10152         (JSC::PropertyDescriptor::setSetter):
   10153         (JSC::PropertyDescriptor::setGetter):
   10154         (JSC::PropertyDescriptor::equalTo):
   10155         (JSC::PropertyDescriptor::attributesEqual):
   10156         (JSC::PropertyDescriptor::attributesWithOverride):
   10157         * runtime/PropertyDescriptor.h:
   10158         (JSC::PropertyDescriptor::PropertyDescriptor):
   10159         (JSC::PropertyDescriptor::value):
   10160         (JSC::PropertyDescriptor::setValue):
   10161         (JSC::PropertyDescriptor::isEmpty):
   10162         (JSC::PropertyDescriptor::writablePresent):
   10163         (JSC::PropertyDescriptor::enumerablePresent):
   10164         (JSC::PropertyDescriptor::configurablePresent):
   10165         (JSC::PropertyDescriptor::setterPresent):
   10166         (JSC::PropertyDescriptor::getterPresent):
   10167         (JSC::PropertyDescriptor::operator==):
   10168         (JSC::PropertyDescriptor::):
   10169 
   10170 2009-09-18  Gabor Loki  <loki (a] inf.u-szeged.hu>
   10171 
   10172         Reviewed by Gavin Barraclough.
   10173 
   10174         Build fix to enable ARM_THUMB2 on Linux
   10175         https://bugs.webkit.org/show_bug.cgi?id=
   10176 
   10177         * jit/ExecutableAllocator.h:
   10178         (JSC::ExecutableAllocator::cacheFlush):
   10179         * jit/JITStubs.cpp:
   10180         * wtf/Platform.h:
   10181 
   10182 2009-09-18  Gabor Loki  <loki (a] inf.u-szeged.hu>
   10183 
   10184         Reviewed by Gavin Barraclough.
   10185 
   10186         Defines two pseudo-platforms for ARM and Thumb-2 instruction set.
   10187         https://bugs.webkit.org/show_bug.cgi?id=29122
   10188 
   10189         Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2
   10190         macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used
   10191         when Thumb-2 instruction set is the required target. The
   10192         PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In
   10193         case where the code is common the PLATFORM(ARM) have to be used.
   10194 
   10195         * assembler/ARMAssembler.cpp:
   10196         * assembler/ARMAssembler.h:
   10197         * assembler/ARMv7Assembler.h:
   10198         * assembler/MacroAssembler.h:
   10199         * assembler/MacroAssemblerARM.cpp:
   10200         * assembler/MacroAssemblerARM.h:
   10201         * assembler/MacroAssemblerCodeRef.h:
   10202         (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
   10203         * jit/ExecutableAllocator.h:
   10204         * jit/JIT.h:
   10205         * jit/JITInlineMethods.h:
   10206         (JSC::JIT::beginUninterruptedSequence):
   10207         (JSC::JIT::preserveReturnAddressAfterCall):
   10208         (JSC::JIT::restoreReturnAddressBeforeReturn):
   10209         (JSC::JIT::restoreArgumentReference):
   10210         (JSC::JIT::restoreArgumentReferenceForTrampoline):
   10211         * jit/JITOpcodes.cpp:
   10212         * jit/JITStubs.cpp:
   10213         (JSC::JITThunks::JITThunks):
   10214         * jit/JITStubs.h:
   10215         * wtf/Platform.h:
   10216         * yarr/RegexJIT.cpp:
   10217         (JSC::Yarr::RegexGenerator::generateEnter):
   10218 
   10219 2009-09-18  Joerg Bornemann  <joerg.bornemann (a] nokia.com>
   10220 
   10221         Reviewed by Simon Hausmann.
   10222 
   10223         Fix the Qt/Windows CE build.
   10224 
   10225         * JavaScriptCore.pri: Build the ce_time.cpp functions from
   10226         within Qt externally.
   10227         * wtf/DateMath.cpp: Removed unnecessary Qt #ifdef, for the
   10228         Qt build these functions are no external, too.
   10229 
   10230 2009-09-17  Janne Koskinen  <janne.p.koskinen (a] digia.com>
   10231 
   10232         Reviewed by Simon Hausmann.
   10233 
   10234         Symbian/WINSCW build fox.
   10235 
   10236         Repeat Q_OS_WIN wchar_t hack for WINSCW, similar to
   10237         revision 24774.
   10238 
   10239         WINSCW defines wchar_t, thus UChar has to be wchar_t
   10240 
   10241         * wtf/unicode/qt4/UnicodeQt4.h:
   10242 
   10243 2009-09-17  Janne Koskinen  <janne.p.koskinen (a] digia.com>
   10244 
   10245         Reviewed by Simon Hausmann.
   10246 
   10247         Symbian/WINSCW build fix.
   10248 
   10249         https://bugs.webkit.org/show_bug.cgi?id=29186
   10250 
   10251         WINSCW Template specialisation name in declaration must the be the same as in implementation.
   10252 
   10253         * runtime/LiteralParser.h:
   10254 
   10255 2009-09-15  Norbert Leser  <norbert.leser (a] nokia.com>
   10256 
   10257         Reviewed by Darin Adler.
   10258 
   10259         https://bugs.webkit.org/show_bug.cgi?id=27060
   10260 
   10261         Symbian compiler for emulator target (WINSCW) fails with
   10262         "illegal operand" for m_attributesInPrevious in structure.ccp
   10263         (when calling make_pair functions).
   10264         This error is apparently due to the compiler not properly
   10265         resolving the unsigned type of the declared bitfield.
   10266 
   10267         Initial patch explicitly casted m_attributesInPrevious
   10268         to unsigned, but since bitfield optimization is not critical for
   10269         the emulator target, this conditional change in header file
   10270         appears to be least intrusive.
   10271 
   10272         * runtime/Structure.h:
   10273 
   10274 2009-09-16  Gabor Loki  <loki (a] inf.u-szeged.hu>
   10275 
   10276         Reviewed by Darin Adler.
   10277 
   10278         Fix GCC warnings on ARM_THUMB2 platform
   10279 
   10280         * assembler/ARMv7Assembler.h:
   10281         (JSC::ARMThumbImmediate::countLeadingZerosPartial):
   10282         * assembler/MacroAssemblerARMv7.h:
   10283         (JSC::MacroAssemblerARMv7::branchTruncateDoubleToInt32):
   10284         (JSC::MacroAssemblerARMv7::moveFixedWidthEncoding):
   10285 
   10286 2009-09-16  Greg Bolsinga  <bolsinga (a] apple.com>
   10287 
   10288         Add ENABLE(INSPECTOR)
   10289         https://bugs.webkit.org/show_bug.cgi?id=29260
   10290 
   10291         Reviewed by David Kilzer.
   10292 
   10293         * wtf/Platform.h:
   10294 
   10295 2009-09-16  Greg Bolsinga  <bolsinga (a] apple.com>
   10296 
   10297         Add ENABLE(CONTEXT_MENUS)
   10298         https://bugs.webkit.org/show_bug.cgi?id=29225
   10299 
   10300         Reviewed by David Kilzer.
   10301 
   10302         * wtf/Platform.h:
   10303 
   10304 2009-09-16  Benjamin C Meyer  <benjamin.meyer (a] torchmobile.com>
   10305 
   10306         Reviewed by Eric Seidel.
   10307 
   10308         The webkit stdint and stdbool headers exists because
   10309         the compiler MSVC doesn't include them.  The check
   10310         should not check for PLATFORM(WIN_OS) but for MSVC.
   10311 
   10312         * os-win32/stdbool.h:
   10313         * os-win32/stdint.h:
   10314 
   10315 2009-09-16  Greg Bolsinga  <bolsinga (a] apple.com>
   10316 
   10317         Add ENABLE(DRAG_SUPPORT)
   10318         https://bugs.webkit.org/show_bug.cgi?id=29233
   10319 
   10320         Reviewed by David Kilzer.
   10321 
   10322         * wtf/Platform.h:
   10323 
   10324 2009-09-16  Kevin Ollivier  <kevino (a] theolliviers.com>
   10325 
   10326         waf build fix after flag was moved to correct place.
   10327 
   10328         * wscript:
   10329 
   10330 2009-09-16  Tor Arne Vestb  <tor.arne.vestbo (a] nokia.com>
   10331 
   10332         Reviewed by Simon Hausmann.
   10333 
   10334         [Qt] Build fix for 64-bit Qt on Mac OS X
   10335 
   10336         * wtf/Platform.h: Use JSVALUE64 on DARWIN, not only on MAC
   10337 
   10338 2009-09-16  Zoltan Herczeg  <zherczeg (a] inf.u-szeged.hu>
   10339 
   10340         Reviewed by Simon Hausmann.
   10341 
   10342         [Qt] Fix wtf/ThreadSpecific.h under Qt to free thread local objects.
   10343         https://bugs.webkit.org/show_bug.cgi?id=29295
   10344 
   10345         This is an important fix when JavaScript workers are in use, since
   10346         unfreed ThreadGlobalDatas leak a big amount of memory (50-100k each).
   10347         QThreadStorage calls the destructor of a given object, which is the
   10348         ThreadSpecific::Data. Unlike pthread, Qt is object oriented, and does
   10349         not support the calling of a static utility function when the thread
   10350         is about to close. In this patch we call the ThreadSpecific::destroy()
   10351         utility function from the destructor of ThreadSpecific::Data. Moreover,
   10352         since Qt resets all thread local values to 0 before the calling of the
   10353         appropriate destructors, we set back the pointer to its original value.
   10354         This is necessary because the get() method of the ThreadSpecific
   10355         object may be called during the exuction of the destructor.
   10356 
   10357         * wtf/ThreadSpecific.h:
   10358         (WTF::ThreadSpecific::Data::~Data):
   10359         (WTF::::~ThreadSpecific):
   10360         (WTF::::set):
   10361         (WTF::::destroy):
   10362 
   10363 2009-09-10  Oliver Hunt  <oliver (a] apple.com>
   10364 
   10365         Reviewed by Geoff Garen.
   10366 
   10367         Allow anonymous storage inside JSObject
   10368         https://bugs.webkit.org/show_bug.cgi?id=29168
   10369 
   10370         Add the concept of anonymous slots to Structures so that it is
   10371         possible to store references to values that need marking in the
   10372         standard JSObject storage buffer.  This allows us to reduce the
   10373         malloc overhead of some objects (by allowing them to store JS
   10374         values in the inline storage of the object) and reduce the 
   10375         dependence of custom mark functions (if all an objects children
   10376         are in the standard object property storage there's no need to
   10377         mark them manually).
   10378 
   10379         * JavaScriptCore.exp:
   10380         * runtime/JSObject.h:
   10381         (JSC::JSObject::putAnonymousValue):
   10382         (JSC::JSObject::getAnonymousValue):
   10383         (JSC::JSObject::addAnonymousSlots):
   10384         * runtime/JSWrapperObject.h:
   10385         (JSC::JSWrapperObject::createStructure):
   10386         (JSC::JSWrapperObject::JSWrapperObject):
   10387         (JSC::JSWrapperObject::setInternalValue):
   10388         * runtime/PropertyMapHashTable.h:
   10389         * runtime/Structure.cpp:
   10390         (JSC::Structure::~Structure):
   10391         (JSC::Structure::materializePropertyMap):
   10392         (JSC::Structure::addAnonymousSlotsTransition):
   10393         (JSC::Structure::copyPropertyTable):
   10394         (JSC::Structure::put):
   10395         (JSC::Structure::rehashPropertyMapHashTable):
   10396         * runtime/Structure.h:
   10397         (JSC::Structure::propertyStorageSize):
   10398         (JSC::StructureTransitionTable::reifySingleTransition):
   10399         * runtime/StructureTransitionTable.h:
   10400         (JSC::StructureTransitionTable::TransitionTable::addSlotTransition):
   10401         (JSC::StructureTransitionTable::TransitionTable::removeSlotTransition):
   10402         (JSC::StructureTransitionTable::TransitionTable::getSlotTransition):
   10403         (JSC::StructureTransitionTable::getAnonymousSlotTransition):
   10404         (JSC::StructureTransitionTable::addAnonymousSlotTransition):
   10405         (JSC::StructureTransitionTable::removeAnonymousSlotTransition):
   10406 
   10407 2009-09-15  Alex Milowski  <alex (a] milowski.com>
   10408 
   10409         Reviewed by Tor Arne Vestb.
   10410 
   10411         Added the ENABLE_MATHML define to the features
   10412 
   10413         * Configurations/FeatureDefines.xcconfig:
   10414 
   10415 2009-09-15 Csaba Osztrogonac <oszi (a] inf.u-szeged.hu>
   10416 
   10417         Reviewed by Tor Arne Vestb.
   10418 
   10419         [Qt] Build fix for windows.
   10420 
   10421         After http://trac.webkit.org/changeset/47795 the MinGW build broke,
   10422         because MinGW has __mingw_aligned_malloc instead of _aligned_malloc.
   10423 
   10424         * runtime/Collector.cpp:
   10425         (JSC::Heap::allocateBlock): MinGW case added.
   10426         (JSC::Heap::freeBlock): MinGW case added.
   10427 
   10428 2009-09-15  Csaba Osztrogonac  <oszi (a] inf.u-szeged.hu>
   10429 
   10430         Reviewed by Tor Arne Vestb.
   10431 
   10432         [Qt] Build fix for Windows/MinGW
   10433 
   10434         https://bugs.webkit.org/show_bug.cgi?id=29268
   10435 
   10436         * wtf/Platform.h: JSVALUE32_64 temporarily disabled on PLATFORM(WIN_OS) with COMPILER(MINGW)
   10437 
   10438 2009-09-14  Gabor Loki  <loki (a] inf.u-szeged.hu>
   10439 
   10440         Reviewed by Gavin Barraclough.
   10441 
   10442         Detect VFP at runtime in generic ARM port on Linux platform.
   10443         https://bugs.webkit.org/show_bug.cgi?id=29076
   10444 
   10445         * JavaScriptCore.pri:
   10446         * assembler/MacroAssemblerARM.cpp: Added.
   10447         (JSC::isVFPPresent):
   10448         * assembler/MacroAssemblerARM.h:
   10449         (JSC::MacroAssemblerARM::supportsFloatingPoint):
   10450 
   10451 2009-09-14  Csaba Osztrogonac  <oszi (a] inf.u-szeged.hu>
   10452 
   10453         Reviewed by Tor Arne Vestb.
   10454 
   10455         [Qt] Build fix for windows build.
   10456 
   10457         * JavaScriptCore.pri: Correct a logic error.
   10458         * pcre/dftables: Add missing paranthesis for tmpdir function.
   10459 
   10460 2009-09-12  Oliver Hunt  <oliver (a] apple.com>
   10461 
   10462         Reviewed by NOBODY (Build fix).
   10463 
   10464         Build fix for windows exports (again).
   10465 
   10466         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   10467         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   10468 
   10469 2009-09-12  Oliver Hunt  <oliver (a] apple.com>
   10470 
   10471         Reviewed by NOBODY (Build fix).
   10472 
   10473         Build fix for windows exports.
   10474 
   10475         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   10476         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   10477 
   10478 2009-09-12  Oliver Hunt  <oliver (a] apple.com>
   10479 
   10480         Reviewed by NOBODY (Build fix).
   10481 
   10482         Correct fix for non-allinonefile builds
   10483 
   10484         * runtime/ObjectConstructor.cpp:
   10485 
   10486 2009-09-12  Oliver Hunt  <oliver (a] apple.com>
   10487 
   10488         Reviewed by NOBODY (Build fix).
   10489 
   10490         Fix non-allinonefile builds
   10491 
   10492         * runtime/ObjectConstructor.cpp:
   10493 
   10494 2009-09-12  Oliver Hunt  <oliver (a] apple.com>
   10495 
   10496         Reviewed by Maciej Stachowiak.
   10497 
   10498         [ES5] Implement Object.keys
   10499         https://bugs.webkit.org/show_bug.cgi?id=29170
   10500 
   10501         This patch basically requires two separate steps, the first is to split getPropertyNames
   10502         into two functions -- getOwnPropertyNames and getPropertyNames, basically making them behave
   10503         in the same way as getOwnPropertySlot and getPropertySlot.  In essence getOwnPropertyNames
   10504         produces the list of properties on an object excluding its prototype chain and getPropertyNames
   10505         just iterates the the object and its prototype chain calling getOwnPropertyNames at each level.
   10506 
   10507         * API/JSCallbackObject.h:
   10508         * API/JSCallbackObjectFunctions.h:
   10509         (JSC::::getOwnPropertyNames):
   10510         * JavaScriptCore.exp:
   10511         * debugger/DebuggerActivation.cpp:
   10512         (JSC::DebuggerActivation::getOwnPropertyNames):
   10513         * debugger/DebuggerActivation.h:
   10514         * runtime/CommonIdentifiers.h:
   10515         * runtime/JSArray.cpp:
   10516         (JSC::JSArray::getOwnPropertyNames):
   10517         * runtime/JSArray.h:
   10518         * runtime/JSByteArray.cpp:
   10519         (JSC::JSByteArray::getOwnPropertyNames):
   10520         * runtime/JSByteArray.h:
   10521         * runtime/JSNotAnObject.cpp:
   10522         (JSC::JSNotAnObject::getOwnPropertyNames):
   10523         * runtime/JSNotAnObject.h:
   10524         * runtime/JSObject.cpp:
   10525         (JSC::JSObject::getOwnPropertyNames):
   10526         * runtime/JSObject.h:
   10527         * runtime/JSVariableObject.cpp:
   10528         (JSC::JSVariableObject::getOwnPropertyNames):
   10529         * runtime/JSVariableObject.h:
   10530         * runtime/ObjectConstructor.cpp:
   10531         (JSC::ObjectConstructor::ObjectConstructor):
   10532         (JSC::objectConstructorKeys):
   10533         * runtime/RegExpMatchesArray.h:
   10534         (JSC::RegExpMatchesArray::getOwnPropertyNames):
   10535         * runtime/StringObject.cpp:
   10536         (JSC::StringObject::getOwnPropertyNames):
   10537         * runtime/StringObject.h:
   10538         * runtime/Structure.cpp:
   10539         (JSC::Structure::getOwnEnumerablePropertyNames):
   10540         (JSC::Structure::getEnumerablePropertyNames):
   10541         * runtime/Structure.h:
   10542 
   10543 2009-09-11  Oliver Hunt  <oliver (a] apple.com>
   10544 
   10545         Reviewed by Sam Weinig.
   10546 
   10547         getPropertyNames caching is invalid when the prototype chain contains objects with custom getPropertyNames
   10548         https://bugs.webkit.org/show_bug.cgi?id=29214
   10549 
   10550         Add a flag to TypeInfo to indicate whether a type overrides getPropertyNames.
   10551         This flag is used to make sure that caching of the property name data is safe.
   10552 
   10553         * API/JSCallbackConstructor.h:
   10554         (JSC::JSCallbackConstructor::createStructure):
   10555         * debugger/DebuggerActivation.h:
   10556         (JSC::DebuggerActivation::createStructure):
   10557         * runtime/BooleanObject.h:
   10558         (JSC::BooleanObject::createStructure):
   10559         * runtime/DatePrototype.h:
   10560         (JSC::DatePrototype::createStructure):
   10561         * runtime/FunctionPrototype.h:
   10562         (JSC::FunctionPrototype::createStructure):
   10563         * runtime/JSONObject.h:
   10564         (JSC::JSONObject::createStructure):
   10565         * runtime/JSObject.h:
   10566         (JSC::JSObject::createStructure):
   10567         * runtime/JSTypeInfo.h:
   10568         (JSC::TypeInfo::hasDefaultGetPropertyNames):
   10569         * runtime/JSVariableObject.h:
   10570         (JSC::JSVariableObject::createStructure):
   10571         * runtime/JSWrapperObject.h:
   10572         (JSC::JSWrapperObject::createStructure):
   10573         * runtime/MathObject.h:
   10574         (JSC::MathObject::createStructure):
   10575         * runtime/NumberConstructor.h:
   10576         (JSC::NumberConstructor::createStructure):
   10577         * runtime/NumberObject.h:
   10578         (JSC::NumberObject::createStructure):
   10579         * runtime/RegExpConstructor.h:
   10580         (JSC::RegExpConstructor::createStructure):
   10581         * runtime/RegExpObject.h:
   10582         (JSC::RegExpObject::createStructure):
   10583         * runtime/StructureChain.cpp:
   10584         (JSC::StructureChain::isCacheable):
   10585 
   10586 2009-09-11  Alexey Proskuryakov  <ap (a] webkit.org>
   10587 
   10588         Reviewed by Geoff Garen.
   10589 
   10590         https://bugs.webkit.org/show_bug.cgi?id=29207
   10591         Add checks for using WebCore JS context on secondary threads
   10592 
   10593         * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData):
   10594         * runtime/JSGlobalData.h:
   10595         Added a new mainThreadOnly flag that WebCore would set.
   10596 
   10597         * runtime/Collector.cpp: (JSC::Heap::registerThread): JSC API methods always call this,
   10598         so this is a good place to check that the API isn't used form a wrong thread.
   10599 
   10600 2009-09-11  Jocelyn Turcotte  <jocelyn.turcotte (a] nokia.com>
   10601 
   10602         Reviewed by Simon Hausmann.
   10603 
   10604         Compiling JavaScriptCore on sparc 64 with gcc fails.
   10605 
   10606         ThreadSafeShared uses the atomic __gnu_cxx::__exchange_and_add with an int,
   10607         however on sparc 64 the _Atomic_word argument is typedefed to long (8 bytes).
   10608 
   10609         The patch disables WTF_USE_LOCKFREE_THREADSAFESHARED in ThreadSafeShared to use
   10610         a mutex instead when compiling for sparc 64 with gcc.
   10611 
   10612         https://bugs.webkit.org/show_bug.cgi?id=29175
   10613 
   10614         * wtf/Platform.h:
   10615         __sparc64__ is not defined on all OS.
   10616         Uses instead: __sparc__ && __arch64__ || __sparcv9
   10617         * wtf/Threading.h:
   10618 
   10619 2009-09-11  Prasanth Ullattil  <prasanth.ullattil (a] nokia.com>
   10620 
   10621         Reviewed by Simon Hausmann.
   10622 
   10623         Fix compile error on Windows7(64Bit) with latest SDK.
   10624 
   10625         Added the missing include file.
   10626 
   10627         * runtime/UString.cpp:
   10628 
   10629 2009-09-11  Joerg Bornemann  <joerg.bornemann (a] trolltech.com>
   10630 
   10631         Reviewed by Simon Hausmann.
   10632 
   10633         Qt/Windows CE compile fix, include the executable allocator and
   10634         markstack implementation in the windows build.
   10635 
   10636         * JavaScriptCore.pri:
   10637 
   10638 2009-09-08  John Abd-El-Malek  <jam (a] chromium.org>
   10639 
   10640         Reviewed by Dimitri Glazkov.
   10641 
   10642         Remove unneeded define for ActiveX.
   10643         https://bugs.webkit.org/show_bug.cgi?id=29054
   10644 
   10645         * wtf/Platform.h:
   10646 
   10647 2009-09-10  Mark Rowe  <mrowe (a] apple.com>
   10648 
   10649         Rubber-stamped by Sam Weinig.
   10650 
   10651         Update JavaScriptCore and WebKit's FeatureDefines.xcconfig so that they are in sync with WebCore as they need to be.
   10652 
   10653         * Configurations/FeatureDefines.xcconfig:
   10654 
   10655 2009-09-10  Fumitoshi Ukai  <ukai (a] chromium.org>
   10656 
   10657         Reviewed by Alexey Proskuryakov.
   10658 
   10659         Export WTF::tryFastMalloc used in WebSocketChannel.
   10660         https://bugs.webkit.org/show_bug.cgi?id=28038
   10661 
   10662         * JavaScriptCore.exp:
   10663         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   10664         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   10665 
   10666 2009-09-10  Oliver Hunt  <oliver (a] apple.com>
   10667 
   10668         Reviewed by NOBODY (Build fix).
   10669 
   10670         Make StructureTransitionTable use an enum for the PtrAndFlags member
   10671         used for the single transition slot optimisation.
   10672 
   10673         * runtime/StructureTransitionTable.h:
   10674         (JSC::StructureTransitionTable::StructureTransitionTable):
   10675         (JSC::StructureTransitionTable::usingSingleTransitionSlot):
   10676         (JSC::StructureTransitionTable::):
   10677 
   10678 2009-09-10  Oliver Hunt  <oliver (a] apple.com>
   10679 
   10680         Reviewed by Geoff Garen.
   10681 
   10682         Refactor StructureTransitionTable and Structure to unify handling of the single slot optimization
   10683         https://bugs.webkit.org/show_bug.cgi?id=29141
   10684 
   10685         Make StructureTransitionTable encapsulate the single transition slot optimization.
   10686 
   10687         * runtime/Structure.cpp:
   10688         (JSC::Structure::Structure):
   10689         (JSC::Structure::~Structure):
   10690         (JSC::Structure::addPropertyTransitionToExistingStructure):
   10691         (JSC::Structure::addPropertyTransition):
   10692         (JSC::Structure::addPropertyWithoutTransition):
   10693         (JSC::Structure::removePropertyWithoutTransition):
   10694         (JSC::Structure::hasTransition):
   10695         * runtime/Structure.h:
   10696         (JSC::StructureTransitionTable::contains):
   10697         (JSC::StructureTransitionTable::get):
   10698         (JSC::StructureTransitionTable::hasTransition):
   10699         (JSC::StructureTransitionTable::reifySingleTransition):
   10700         * runtime/StructureTransitionTable.h:
   10701         (JSC::StructureTransitionTable::StructureTransitionTable):
   10702         (JSC::StructureTransitionTable::~StructureTransitionTable):
   10703         (JSC::StructureTransitionTable::remove):
   10704         (JSC::StructureTransitionTable::add):
   10705         (JSC::StructureTransitionTable::table):
   10706         (JSC::StructureTransitionTable::singleTransition):
   10707         (JSC::StructureTransitionTable::usingSingleTransitionSlot):
   10708         (JSC::StructureTransitionTable::setSingleTransition):
   10709         (JSC::StructureTransitionTable::setTransitionTable):
   10710         (JSC::StructureTransitionTable::):
   10711         * wtf/PtrAndFlags.h:
   10712         (WTF::PtrAndFlags::PtrAndFlags):
   10713 
   10714 2009-09-10  Zoltan Horvath  <zoltan (a] webkit.org>
   10715 
   10716         Reviewed by Darin Adler.
   10717 
   10718         Implement fastDeleteSkippingDestructor for FastAllocBase and fastDeleteAllValues for HashSet
   10719         https://bugs.webkit.org/show_bug.cgi?id=25930
   10720 
   10721         FastAllocBase has been extended with fastDeleteSkippingDestructor function which
   10722         releases memory without destructor call. fastDeleteAllValues has been implemented 
   10723         similar as deleteAllValues but it uses fastDelete function to release memory.
   10724 
   10725         * wtf/FastAllocBase.h:
   10726         (WTF::fastDeleteSkippingDestructor):
   10727         * wtf/HashSet.h:
   10728         (WTF::fastDeleteAllValues):
   10729 
   10730 2009-09-10  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   10731 
   10732         Reviewed by Darin Adler.
   10733 
   10734         ARM compiler does not understand GCC visibility attribute
   10735         https://bugs.webkit.org/show_bug.cgi?id=29079
   10736 
   10737         * API/JSBase.h: Make the test more specific to hit only
   10738         the GCC compiler
   10739 
   10740 2009-09-10  Adam Barth  <abarth (a] webkit.org>
   10741 
   10742         Unreviewed revert of the previous change.  It broke the tests.
   10743 
   10744         * wtf/dtoa.cpp:
   10745         (WTF::dtoa):
   10746 
   10747 2009-09-10  Ben Laurie  <benl (a] google.com>
   10748 
   10749         Reviewed by Adam Barth.
   10750 
   10751         <https://bugs.webkit.org/show_bug.cgi?id=26836>
   10752 
   10753         If dtoa was given a small buffer and the number was either infinite or
   10754         NaN, then the buffer would be overflowed.
   10755 
   10756         * wtf/dtoa.cpp:
   10757 
   10758 2009-09-09  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   10759 
   10760         Reviewed by Darin Adler.
   10761 
   10762         Change reinterpret_cast to static_cast in r48212.
   10763 
   10764         * jit/ExecutableAllocator.h:
   10765         (JSC::ExecutableAllocator::cacheFlush):
   10766 
   10767 2009-09-09  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   10768 
   10769         Reviewed by Darin Adler.
   10770 
   10771         Remove WTF_PLATFORM_FORCE_PACK as it is no longer used
   10772         https://bugs.webkit.org/show_bug.cgi?id=29066
   10773 
   10774         * wtf/Platform.h:
   10775 
   10776 2009-09-09  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   10777 
   10778         Reviewed by Ariya Hidayat.
   10779 
   10780         Implement flushing the instruction cache for Symbian
   10781         https://bugs.webkit.org/show_bug.cgi?id=29075
   10782 
   10783         * jit/ExecutableAllocator.h:
   10784         (JSC::ExecutableAllocator::cacheFlush): Call IMB_Range to flush
   10785         the instruction cache on Symbian
   10786 
   10787 2009-09-09  Kent Hansen  <khansen (a] trolltech.com>
   10788 
   10789         Reviewed by Darin Adler.
   10790 
   10791         https://bugs.webkit.org/show_bug.cgi?id=29024
   10792         Make JavaScriptCore compile on platforms with case-insensitive file systems and typeinfo.h in STL
   10793 
   10794         These platforms include Microsoft Visual Studio 2003, and Symbian with Metrowerks compiler.
   10795 
   10796         * JavaScriptCore.gypi:
   10797         * JavaScriptCore.xcodeproj/project.pbxproj:
   10798         * runtime/JSTypeInfo.h: Copied from JavaScriptCore/runtime/TypeInfo.h.
   10799         * runtime/Structure.h:
   10800         * runtime/TypeInfo.h: Removed.
   10801 
   10802 2009-09-08  Oliver Hunt  <oliver (a] apple.com>
   10803 
   10804         Reviewed by Maciej Stachowiak.
   10805 
   10806         JSON.stringify(Date) loses the milliseconds information
   10807         https://bugs.webkit.org/show_bug.cgi?id=29063
   10808 
   10809         Make sure we include milliseconds in the output of toISOString.
   10810 
   10811         * runtime/DatePrototype.cpp:
   10812         (JSC::dateProtoFuncToISOString):
   10813 
   10814 2009-09-08  Kevin Ollivier  <kevino (a] theolliviers.com>
   10815 
   10816         wx build fix, generate derived sources earlier in order to make sure
   10817         they're found by the build system when generating the list of sources to build.
   10818 
   10819         * wscript:
   10820 
   10821 2009-09-08  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   10822 
   10823         Reviewed by Simon Hausmann.
   10824 
   10825         Build fix when USE(LOCKFREE_THREADSAFESHARED) is not defined
   10826         https://bugs.webkit.org/show_bug.cgi?id=29011
   10827 
   10828         * wtf/Threading.h: Use LOCKFREE_THREADSAFESHARED guard for 
   10829         atomicIncrement and atomicDecrement
   10830 
   10831 2009-09-07  Zoltan Horvath  <zoltan (a] webkit.org>
   10832 
   10833         Reviewed by Darin Adler.
   10834 
   10835         Allow custom memory allocation control in Yarr's RegexInterpreter
   10836         https://bugs.webkit.org/show_bug.cgi?id=29025
   10837 
   10838         Inherits RegexInterpreter classes from FastAllocBase (bug #20422), which has
   10839         been instantiated by 'new':
   10840 
   10841         class ByteDisjunction
   10842         -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1462
   10843 
   10844         struct BytecodePattern
   10845         -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1279
   10846 
   10847         * yarr/RegexInterpreter.h:
   10848 
   10849 2009-09-07  Drew Wilson  <atwilson (a] google.com>
   10850 
   10851         Reverting r48121 to fix Windows build errors.
   10852 
   10853         * JavaScriptCore.exp:
   10854 
   10855 2009-09-07  Drew Wilson  <atwilson (a] google.com>
   10856 
   10857         Reviewed by David Levin.
   10858 
   10859         Enable SHARED_WORKERS by default
   10860         https://bugs.webkit.org/show_bug.cgi?id=28959
   10861 
   10862         * Configurations/FeatureDefines.xcconfig:
   10863 
   10864 2009-09-07  Fumitoshi Ukai  <ukai (a] chromium.org>
   10865 
   10866         Reviewed by Alexey Proskuryakov.
   10867 
   10868         Export WTF::tryFastMalloc used in WebSocketChannel.
   10869         https://bugs.webkit.org/show_bug.cgi?id=28038
   10870 
   10871         * JavaScriptCore.exp:
   10872 
   10873 2009-09-04  Oliver Hunt  <oliver (a] apple.com>
   10874 
   10875         Reviewed by NOBODY (Build fix).
   10876 
   10877         Fix windows export files
   10878 
   10879         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   10880         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   10881 
   10882 2009-09-04  Oliver Hunt  <oliver (a] apple.com>
   10883 
   10884         Reviewed by Gavin Barraclough.
   10885 
   10886         [[ToString]] conversion should use the actual toString function for String objects.
   10887 
   10888         Remove incorrect specialisations of toString conversions on StringObject.
   10889 
   10890         * JavaScriptCore.exp:
   10891         * runtime/StringObject.cpp:
   10892         * runtime/StringObject.h:
   10893 
   10894 2009-09-04  Steve Falkenburg  <sfalken (a] apple.com>
   10895 
   10896         Windows build fix.
   10897 
   10898         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Add new export.
   10899         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Add new export.
   10900 
   10901 2009-09-04  Steve Falkenburg  <sfalken (a] apple.com>
   10902 
   10903         Windows build fix.
   10904 
   10905         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove unneeded export.
   10906         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Remove unneeded export.
   10907 
   10908 2009-09-04  Darin Adler  <darin (a] apple.com>
   10909 
   10910         Reviewed by Geoff Garen.
   10911 
   10912         DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32)
   10913         https://bugs.webkit.org/show_bug.cgi?id=28909
   10914 
   10915         Part two.
   10916 
   10917         Make some improvements to garbage collection code:
   10918 
   10919             1) Create a runtime assertion that catches any classes that
   10920                override markChildren but have the HasDefaultMark bit set.
   10921             2) Remove checks of the mark bit outside the MarkStack::append
   10922                function; they are redundant.
   10923             3) Improve the efficiency of the asObject and asArray functions
   10924                when called on JSCell* to avoid a round trip to JSValue.
   10925             4) Make more callers use the checked asCell and asObject
   10926                casting functions rather than unchecked casts.
   10927             5) Removed the JSCell::marked function and other GC-related
   10928                functions because these operations are no longer things that
   10929                code other than the core GC code needs to do directly. Fixed
   10930                callers that were calling them.
   10931 
   10932         * runtime/Collector.cpp:
   10933         (JSC::Heap::markConservatively): Removed unneeded call to MarkStack::drain.
   10934         (JSC::Heap::markProtectedObjects): Removed unneeded check of the mark
   10935         bit and call to MarkStack::drain.
   10936         (JSC::Heap::collect): Removed unneeded checks of the mark bit and also
   10937         changed call to SmallStrings::mark to call markChildren instead to match
   10938         the rest of the objects.
   10939         (JSC::typeName): Removed unneeded cast to JSObject*.
   10940 
   10941         * runtime/JSArray.h:
   10942         (JSC::asArray): Added an overload for JSCell* and changed the JSValue
   10943         version to call it. Removed some unneeded casts.
   10944         (JSC::JSArray::markChildrenDirect): Marked this function inline. It's in
   10945         a header, and if not marked inline this could lead to linking problems.
   10946         (JSC::MarkStack::markChildren): Added. This helper function is used by
   10947         the drain function to avoid repating code. Also added the code here to
   10948         check fro default mark violations in debug code. If a markChildren
   10949         function adds something to the mark stack, but the type info claimed
   10950         hasDefaultMark was true, then we will get an assertion now. Also fixed
   10951         the assertion about the mark bit to use the Heap function directly
   10952         because we don't have a JSCell::marked function any more.
   10953         (JSC::MarkStack::drain): Changed a local variable from "v" to "value",
   10954         and from "currentCell" to "cell". Changed to call markChildren in two
   10955         places instead of repeating a chain of if statements twice. Changed
   10956         code that reads and writes the mark bit to use Heap::isCellMarked and
   10957         Heap::markCell so we can eliminate the JSCell::marked and
   10958         JSCell::markCellDirect functions.
   10959 
   10960         * runtime/JSCell.h: Removed JSCell's markCellDirect and marked member
   10961         functions. Added a comment explaining that asCell should be deprecated
   10962         in favor of the JSValue asCell member function.
   10963         (JSC::MarkStack::append): Added the assertion that catches callers
   10964         that have set the HasDefaultMark bit incorrectly. Changed
   10965         code that reads and writes the mark bit to use Heap::isCellMarked and
   10966         Heap::markCell so we can eliminate the JSCell::marked and
   10967         JSCell::markCellDirect functions. Moved the overload of
   10968         MarkStack::append for JSValue here so it can call through to the cell
   10969         version. The old version had a copy of all the code instead, but that
   10970         repeated the conversion from JSValue to JSCell* and the check for
   10971         whether a value is a cell multiple times.
   10972         (JSC::Structure::markAggregate): Moved this function here to avoid
   10973         dependencies for Structure.h, since this calls MarkStack::append.
   10974 
   10975         * runtime/JSObject.cpp:
   10976         (JSC::JSObject::markChildren): Added code to clear
   10977         m_isCheckingForDefaultMarkViolation so the marking done by JSObject
   10978         doesn't trigger the assertion.
   10979 
   10980         * runtime/JSValue.h: Moved some stray includes that were outside the
   10981         header guard inside it. Not sure how that happened! Removed the
   10982         GC-related member functions markChildren, hasChildren, marked, and
   10983         markDirect.
   10984 
   10985         * runtime/JSWrapperObject.h: Made markChildren private.
   10986         (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the
   10987         HasDefaultMark bit was set.
   10988 
   10989         * runtime/MarkStack.h: Added m_isCheckingForDefaultMarkViolation and
   10990         initialized it to false. Moved the append function body from here to
   10991         JSCell.h. Added a declaration of a private markChildren function used
   10992         inside the drain function.
   10993 
   10994         * runtime/SmallStrings.cpp:
   10995         (JSC::SmallStrings::markChildren): Changed the name and style of this
   10996         function to match other functions. This allows us to share the normal
   10997         mark stack code path.
   10998 
   10999         * runtime/SmallStrings.h: Changed the name and interface of mark to
   11000         the more-normal markChildren style.
   11001 
   11002         * runtime/Structure.h: Moved the body of markAggregate into the
   11003         JSCell.h to avoid a circular dependency with JSCell.h.
   11004 
   11005 2009-09-04  Darin Adler  <darin (a] apple.com>
   11006 
   11007         Reviewed by Geoff Garen.
   11008 
   11009         DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32)
   11010         https://bugs.webkit.org/show_bug.cgi?id=28909
   11011 
   11012         Part one.
   11013 
   11014         Make some improvements to garbage collection code:
   11015 
   11016             1) Fix the two classes that had the default mark bit set but
   11017                should not.
   11018             2) Remove checks of the mark bit outside the MarkStack::append
   11019                function; they are redundant.
   11020             3) Make more callers use the checked asCell and asObject
   11021                casting functions rather than unchecked casts.
   11022             4) Removed some GC-related functions because these operations are
   11023                no longer things that code other than the core GC code needs
   11024                to do directly. Fixed callers that were calling them.
   11025 
   11026         * bytecode/CodeBlock.cpp:
   11027         (JSC::CodeBlock::markAggregate): Removed unneeded check of the mark
   11028         bit before calling MarkStack::append.
   11029 
   11030         * interpreter/Register.h: Removed unneeded marked and markChildren
   11031         functions.
   11032 
   11033         * jit/JITStubs.cpp:
   11034         (op_eq): Removed unneeded assertions, instead using checked casting
   11035         functions such as asObject.
   11036 
   11037         * runtime/ArgList.h: Added now-needed forward declaration of MarkStack.
   11038 
   11039         * runtime/GetterSetter.cpp:
   11040         (JSC::GetterSetter::markChildren): Remmoved unneeded check of the mark bit.
   11041 
   11042         * runtime/GlobalEvalFunction.h:
   11043         (JSC::GlobalEvalFunction::createStructure): Added. Fixes a bug where the
   11044         HasDefaultMark bit was set.
   11045 
   11046         * runtime/JSCell.cpp:
   11047         (JSC::JSCell::getObject): Use asObject to avoid a direct static_cast.
   11048 
   11049         * runtime/JSObject.h:
   11050         (JSC::asObject): Added an overload for JSCell* and changed the JSValue
   11051         version to call it.
   11052         (JSC::JSValue::get): Use asObject to avoid a direct static_cast.
   11053 
   11054         * runtime/JSWrapperObject.h: Made markChildren private.
   11055         (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the
   11056         HasDefaultMark bit was set. Later we may want to optimize this for
   11057         wrapper types that never have cells in their internal values, but there
   11058         is no measured performance regression in SunSpider or V8 doing this
   11059         all the time.
   11060 
   11061         * runtime/MarkStack.cpp: Tweaked formatting.
   11062 
   11063 2009-09-04  Kevin Ollivier  <kevino (a] theolliviers.com>
   11064 
   11065         wx build fix. Switch USE_ defines over to the compiler so that they can be
   11066         checked by files not including config.h (like WebCorePrefix.h).
   11067 
   11068         * wtf/Platform.h:
   11069 
   11070 2009-09-03  Yong Li  <yong.li (a] torchmobile.com>
   11071 
   11072         Reviewed by David Levin.
   11073 
   11074         Remove unnecessary dependency on unistd.h
   11075         https://bugs.webkit.org/show_bug.cgi?id=28962
   11076 
   11077         * runtime/Completion.cpp:
   11078 
   11079 2009-09-03  Fumitoshi Ukai  <ukai (a] chromium.org>
   11080 
   11081         Reviewed by Eric Seidel.
   11082 
   11083         Add strnstr for Linux and Windows in StringExtras.h
   11084         https://bugs.webkit.org/show_bug.cgi?id=28901
   11085 
   11086         * wtf/StringExtras.h:
   11087         (strnstr):
   11088 
   11089 2009-09-03  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   11090 
   11091         Reviewed by Darin Adler.
   11092 
   11093         Allow custom memory allocation control for JavaScriptCore's HashEntry class
   11094         https://bugs.webkit.org/show_bug.cgi?id=27830
   11095 
   11096         Inherits HashEntry class from FastAllocBase because it has been
   11097         instantiated by 'new' JavaScriptCore/runtime/Lookup.cpp:32.
   11098 
   11099         * runtime/Lookup.h:
   11100 
   11101 2009-09-02  Gavin Barraclough  <barraclough (a] apple.com>
   11102 
   11103         Should crash if JIT code buffer allocation fails.
   11104 
   11105         https://bugs.webkit.org/show_bug.cgi?id=28926
   11106         <rdar://problem/7031922>
   11107 
   11108         * jit/ExecutableAllocatorPosix.cpp:
   11109         (JSC::ExecutablePool::systemAlloc):
   11110         * jit/ExecutableAllocatorWin.cpp:
   11111         (JSC::ExecutablePool::systemAlloc):
   11112 
   11113 2009-09-02  Kevin Ollivier  <kevino (a] theolliviers.com>
   11114 
   11115         waf build fixes for Windows/MSVC.
   11116 
   11117         * wscript:
   11118 
   11119 2009-09-02  Kevin Ollivier  <kevino (a] theolliviers.com>
   11120 
   11121         Build fix for building on Windows.
   11122 
   11123         * wtf/ThreadingPthreads.cpp:
   11124 
   11125 2009-09-02  Norbert Leser  <norbert.leser (a] nokia.com>
   11126 
   11127         Reviewed by Eric Seidel.
   11128 
   11129         Use fastMalloc when neither MMAP nor VIRTUALALLOC are enabled
   11130         
   11131         RegisterFile constructor currently throws #error when both
   11132         MMAP and VIRTUALALLOC conditions fail.
   11133         On any platform that does not provide these features
   11134         (for instance, Symbian),
   11135         the fallback should be regular malloc (or fastMalloc).
   11136         It is functionally equivalent in this case, even though it may
   11137         have certain drawbacks such as lack of dynamic pre-allocation.
   11138 
   11139         * interpreter/RegisterFile.cpp:
   11140         (JSC::RegisterFile::~RegisterFile):
   11141         * interpreter/RegisterFile.h:
   11142         (JSC::RegisterFile::RegisterFile):
   11143 
   11144 2009-08-31  Robert Agoston  <Agoston.Robert (a] stud.u-szeged.hu>
   11145 
   11146         Reviewed by Gavin Barraclough.
   11147 
   11148         Fixed typo.
   11149         https://bugs.webkit.org/show_bug.cgi?id=28691
   11150 
   11151         * parser/Parser.h:
   11152         (JSC::Parser::parse):
   11153 
   11154 2009-08-27  Oliver Hunt  <oliver (a] apple.com>
   11155 
   11156         Reviewed by Maciej Stachowiak.
   11157 
   11158         JSON Stringifier does not follow ES5 spec for handling of Number, String and Boolean objects
   11159         https://bugs.webkit.org/show_bug.cgi?id=28797
   11160 
   11161         Fixed unwrapBoxedPrimitive to do the right thing, which necessitated a couple of new exception
   11162         checks, and corrected the logic in gap to correctly convert Number and String objects.
   11163 
   11164         * runtime/JSONObject.cpp:
   11165         (JSC::unwrapBoxedPrimitive):
   11166         (JSC::gap):
   11167         (JSC::Stringifier::Stringifier):
   11168         (JSC::Stringifier::appendStringifiedValue):
   11169 
   11170 2009-08-27  Oliver Hunt  <oliver (a] apple.com>
   11171 
   11172         Reviewed by Adam Roben.
   11173 
   11174         JSON.stringify replacer array does not accept values that are not string primitives.
   11175         https://bugs.webkit.org/show_bug.cgi?id=28788
   11176 
   11177         Update the JSON stringifier to initialise its replacer array according to the most
   11178         recent version of the spec.
   11179 
   11180         * runtime/Identifier.h:
   11181         (JSC::Identifier::from):
   11182         * runtime/JSONObject.cpp:
   11183         (JSC::Stringifier::Stringifier):
   11184 
   11185 2009-08-27  Alexey Proskuryakov  <ap (a] apple.com>
   11186 
   11187         Reviewed by Oliver Hunt.
   11188 
   11189         https://bugs.webkit.org/show_bug.cgi?id=28753
   11190         <rdar://problem/7173448> Excessive number of threads (and a crash)
   11191 
   11192         * wtf/Threading.h: (WTF::atomicIncrement): Changed atomicIncrement to match decrement
   11193         and return the new value. Also added using directives for these functions, to match
   11194         te rest of WTF.
   11195 
   11196 2009-08-27  Brent Fulgham  <bfulgham (a] webkit.org>
   11197 
   11198         Reviewed by Adam Roben.
   11199 
   11200         Link the testapi against CFLite when building the WinCairo port.
   11201 
   11202         * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add new Release_CFLite
   11203           target.  Update all targets to inherit from either the
   11204           JavaScriptCF.vsprops (Apple target) or the JavaScriptCFLite.vsprops
   11205           file (WinCairo target).
   11206         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Remove
   11207           input file CoreFoundation.lib. This is provided by either the
   11208           JavaScriptCF.vsprops or JavaScriptCFLite.vsprops file.
   11209 
   11210 2009-08-27  Steve Falkenburg  <sfalken (a] apple.com>
   11211 
   11212         Reviewed by Geoff Garen.
   11213         
   11214         Fix Windows-specific crash due to missing memory clearing call.
   11215         
   11216         * runtime/Collector.cpp:
   11217         (JSC::Heap::allocateBlock):
   11218 
   11219 2009-08-27  Brent Fulgham  <bfulgham (a] webkit.org>
   11220 
   11221         Build fix: JavaScriptCore_debug.def missing some exports.  Apple
   11222         Windows build does not use this file, so it was not noticed previously.
   11223 
   11224         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   11225 
   11226 2009-08-27  Gavin Barraclough  <barraclough (a] apple.com>
   11227 
   11228         Reviewed by Oliver Hunt.
   11229 
   11230         x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates.
   11231         https://bugs.webkit.org/show_bug.cgi?id=28317
   11232 
   11233         Missed one, fix part II.
   11234 
   11235         * assembler/MacroAssemblerX86Common.h:
   11236         (JSC::MacroAssemblerX86Common::move):
   11237         * assembler/X86Assembler.h:
   11238         (JSC::CAN_SIGN_EXTEND_8_32):
   11239 
   11240 2009-08-27  Oliver Hunt  <oliver (a] apple.com>
   11241 
   11242         Reviewed by Adam Roben.
   11243 
   11244         JSON.stringify replacer array does not accept values that are not string primitives.
   11245         https://bugs.webkit.org/show_bug.cgi?id=28788
   11246 
   11247         Update the JSON stringifier to initialise its replacer array according to the most
   11248         recent version of the spec.
   11249 
   11250         * runtime/Identifier.h:
   11251         (JSC::Identifier::from):
   11252         * runtime/JSONObject.cpp:
   11253         (JSC::Stringifier::Stringifier):
   11254 
   11255 2009-08-27  Oliver Hunt  <oliver (a] apple.com>
   11256 
   11257         Reviewed by Alexey Proskuryakov.
   11258 
   11259         JSON parser accepts trailing comma in array literals
   11260         https://bugs.webkit.org/show_bug.cgi?id=28779
   11261 
   11262         Update parser to correctly fail if there's a trailing comma.
   11263 
   11264         * runtime/LiteralParser.cpp:
   11265         (JSC::LiteralParser::parse):
   11266 
   11267 2009-08-26  Oliver Hunt  <oliver (a] apple.com>
   11268 
   11269         Reviewed by Gavin Barraclough.
   11270 
   11271         'this' in JSON.parse reviver is the global object
   11272         https://bugs.webkit.org/show_bug.cgi?id=28752
   11273 
   11274         This is a technically simple change, we merely update the code for calling
   11275         the reviver function to pass the correct this object.  Doing so however
   11276         exposes the holder to arbitrary mutation by the reviver function so it is
   11277         necessary for us to now guard all property accesses against the possibility
   11278         of failure.
   11279 
   11280         * runtime/JSArray.h:
   11281           JSON needs to delete a property from the array, so we friend its 
   11282           Walker class so that we can make a non-virtual call to the arrays
   11283           delete and getOwnPropertySlot methods.
   11284         * runtime/JSONObject.cpp:
   11285         (JSC::Walker::callReviver):
   11286           We need to pass the correct this object
   11287         (JSC::Walker::walk):
   11288           Update calls to callReviver, and update property logic logic
   11289           to correctly handle the holder being mutated by the reviver
   11290           function.
   11291 
   11292 2009-08-26  Alice Liu  <alice.liu (a] apple.com>
   11293 
   11294         Windows build fix: added some exported symbols
   11295 
   11296         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   11297         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   11298 
   11299 2009-08-26  Geoffrey Garen  <ggaren (a] apple.com>
   11300 
   11301         Windows build fix: Removed some exported symbols that no longer exist.
   11302 
   11303         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   11304         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   11305 
   11306 2009-08-26  Gavin Barraclough  <barraclough (a] apple.com>
   11307 
   11308         Reviewed by Olliejver Hunt.
   11309 
   11310         x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates.
   11311         https://bugs.webkit.org/show_bug.cgi?id=28317
   11312 
   11313         We rely on a slightly OS X specific behaviour, that x86-64 applications have a 4Gb zero page,
   11314         so pointers are never representable as a 32-bit integer, and always have to be represented by
   11315         a separate immediate load instruction, rather than within the immediate field of an arithmetic
   11316         or memory operation.
   11317 
   11318         We explicitly check for a couple of cases where a value might be representable in 32-bit, but
   11319         these probably never kick in on Mac OS, and only kick in to hose GTK.  Deleting these does not
   11320         show a performance degradation on SunSpider.  Remove.
   11321 
   11322         * assembler/MacroAssemblerX86_64.h:
   11323         (JSC::MacroAssemblerX86_64::storePtr):
   11324         (JSC::MacroAssemblerX86_64::branchPtr):
   11325 
   11326 2009-08-26  Geoffrey Garen  <ggaren (a] apple.com>
   11327 
   11328         Reviewed by Oliver Hunt.
   11329 
   11330         A bit of Collector refatoring.
   11331         
   11332         SunSpider says no change. v8 says 1.003x faster (1.02x faster on splay).
   11333 
   11334         * JavaScriptCore.exp:
   11335 
   11336         * runtime/JSCell.cpp:
   11337         (JSC::JSCell::toPrimitive):
   11338         (JSC::JSCell::getPrimitiveNumber):
   11339         (JSC::JSCell::toBoolean):
   11340         (JSC::JSCell::toNumber):
   11341         (JSC::JSCell::toString):
   11342         (JSC::JSCell::toObject): Removed pure virtual functions from
   11343         JSCell, so the collector can construct one. This allowed
   11344         me to remove a bunch of ASSERT_NOT_REACHED throughout the
   11345         code, too.
   11346 
   11347         * runtime/JSCell.h:
   11348         (JSC::JSCell::JSCell): ditto
   11349         (JSC::Heap::heap): Inlined this function because it's trivial.
   11350 
   11351         * JavaScriptCore.exp:
   11352 
   11353         * runtime/Collector.cpp:
   11354         (JSC::Heap::destroy):
   11355         (JSC::Heap::allocateBlock):
   11356         (JSC::Heap::freeBlock):
   11357         (JSC::Heap::freeBlocks): Renamed freeHeap to freeBlocks, since
   11358         it doesn't actually free the Heap object.
   11359         (JSC::Heap::heapAllocate):
   11360         (JSC::Heap::sweep):
   11361         * runtime/Collector.h: Refactored block allocation and destruction
   11362         into helper functions.
   11363         
   11364         * runtime/GetterSetter.cpp:
   11365         * runtime/JSAPIValueWrapper.cpp:
   11366         * runtime/JSPropertyNameIterator.cpp: Removed dummy implementations
   11367         of pure virtual functions. (See above.)
   11368 
   11369 === End re-roll-in of r47738:47740 with Windows crash fixed ===
   11370 
   11371 2009-08-26  Geoffrey Garen  <ggaren (a] apple.com>
   11372 
   11373         Build fix: start out with a 32-bit value to avoid a shortening warning.
   11374 
   11375         * runtime/Collector.cpp:
   11376         (JSC::Heap::sweep):
   11377 
   11378 2009-08-24  Geoffrey Garen  <ggaren (a] apple.com>
   11379 
   11380         Reviewed by Oliver Hunt.
   11381 
   11382         Substantially reduced VM thrash in the GC heap.
   11383         
   11384         1.08x faster on v8 (1.60x faster on v8-splay).
   11385         
   11386         1.40x faster on bench-alloc-nonretained.
   11387         
   11388         1.90x faster on bench-alloc-retained.
   11389         
   11390         SunSpider says no change.
   11391         
   11392         * runtime/Collector.cpp:
   11393         (JSC::Heap::heapAllocate): Fixed a long-standing bug: update a few local
   11394         variables unconditionally after calling collect(), since they may be used
   11395         even if we don't "goto scan". (In the bug I saw, usedBlocks got out of
   11396         sync with heap.usedBlocks).
   11397         (JSC::Heap::sweep): Keep enough free heap space to accomodate 
   11398         the number of objects we'll allocate before the next GC, plus 25%, for
   11399         good measure.
   11400         * runtime/Collector.h: Bumped the block size to 256k. This seems to give
   11401         the best cache performance, and it prevents us from initiating lots of
   11402         VM traffic to recover very small chunks of memory.
   11403 
   11404 === Begin re-roll-in of r47738:47740 with Windows crash fixed ===
   11405 
   11406 2009-08-25  Drew Wilson  <atwilson (a] google.com>
   11407 
   11408         Reviewed by David Levin.
   11409 
   11410         postMessage() spec now supports sending arrays of ports
   11411         https://bugs.webkit.org/show_bug.cgi?id=26902
   11412 
   11413         Added OwnPtr to VectorTraits so we can store OwnPtrs in Vectors.
   11414 
   11415         * wtf/VectorTraits.h:
   11416 
   11417 2009-08-26  Xan Lopez  <xlopez (a] igalia.com>
   11418 
   11419         Rubber-stamped by Gustavo Noronha.
   11420 
   11421         Remove duplicated files from file list.
   11422 
   11423         * GNUmakefile.am:
   11424 
   11425 2009-08-26  Oliver Hunt  <oliver (a] apple.com>
   11426 
   11427         Reviewed by NOBODY (Build fix).
   11428 
   11429         More export fixes.
   11430 
   11431         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   11432         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   11433 
   11434 2009-08-26  Oliver Hunt  <oliver (a] apple.com>
   11435 
   11436         Reviewed by NOBODY (Build fix).
   11437 
   11438         Hopefully fix all the exports from JSC on windows
   11439 
   11440         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   11441         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   11442 
   11443 2009-08-26  Oliver Hunt  <oliver (a] apple.com>
   11444 
   11445         Reviewed by NOBODY (Build fixes).
   11446 
   11447         Forgot I added files to JavaScriptCore. 
   11448 
   11449         * GNUmakefile.am:
   11450         * JavaScriptCore.gypi:
   11451         * JavaScriptCore.pri:
   11452         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
   11453         * JavaScriptCoreSources.bkl:
   11454 
   11455 2009-08-25  Oliver Hunt  <oliver (a] apple.com>
   11456 
   11457         Reviewed by Gavin Barraclough.
   11458 
   11459         [ES5] Implement getOwnPropertyDescriptor
   11460         https://bugs.webkit.org/show_bug.cgi?id=28724
   11461 
   11462         Implement the core runtime support for getOwnPropertyDescriptor.
   11463         This adds a virtual getOwnPropertyDescriptor method to every class
   11464         that implements getOwnPropertySlot that shadows the behaviour of
   11465         getOwnPropertySlot.  The alternative would be to make getOwnPropertySlot
   11466         (or PropertySlots in general) provide property attribute information,
   11467         but quick testing showed this to be a regression.
   11468 
   11469         * JavaScriptCore.exp:
   11470         * JavaScriptCore.xcodeproj/project.pbxproj:
   11471         * runtime/Arguments.cpp:
   11472         (JSC::Arguments::getOwnPropertyDescriptor):
   11473         * runtime/Arguments.h:
   11474         * runtime/ArrayPrototype.cpp:
   11475         (JSC::ArrayPrototype::getOwnPropertyDescriptor):
   11476         * runtime/ArrayPrototype.h:
   11477         * runtime/CommonIdentifiers.h:
   11478         * runtime/DatePrototype.cpp:
   11479         (JSC::DatePrototype::getOwnPropertyDescriptor):
   11480         * runtime/DatePrototype.h:
   11481         * runtime/JSArray.cpp:
   11482         (JSC::JSArray::getOwnPropertyDescriptor):
   11483         * runtime/JSArray.h:
   11484         * runtime/JSByteArray.cpp:
   11485         (JSC::JSByteArray::getOwnPropertyDescriptor):
   11486         * runtime/JSByteArray.h:
   11487         * runtime/JSFunction.cpp:
   11488         (JSC::JSFunction::getOwnPropertyDescriptor):
   11489         * runtime/JSFunction.h:
   11490         * runtime/JSGlobalObject.h:
   11491         (JSC::JSGlobalObject::getOwnPropertyDescriptor):
   11492         * runtime/JSNotAnObject.cpp:
   11493         (JSC::JSNotAnObject::getOwnPropertyDescriptor):
   11494         * runtime/JSNotAnObject.h:
   11495         * runtime/JSONObject.cpp:
   11496         (JSC::JSONObject::getOwnPropertySlot):
   11497         (JSC::JSONObject::getOwnPropertyDescriptor):
   11498         * runtime/JSONObject.h:
   11499         * runtime/JSObject.cpp:
   11500         (JSC::JSObject::getOwnPropertyDescriptor):
   11501         (JSC::JSObject::getPropertyDescriptor):
   11502         * runtime/JSObject.h:
   11503         * runtime/JSString.cpp:
   11504         (JSC::JSString::getStringPropertyDescriptor):
   11505         (JSC::JSString::getOwnPropertyDescriptor):
   11506         * runtime/JSString.h:
   11507         * runtime/JSVariableObject.cpp:
   11508         (JSC::JSVariableObject::symbolTableGet):
   11509         * runtime/JSVariableObject.h:
   11510         * runtime/Lookup.h:
   11511         (JSC::getStaticPropertyDescriptor):
   11512         (JSC::getStaticFunctionDescriptor):
   11513         (JSC::getStaticValueDescriptor):
   11514           Add property descriptor equivalents of the lookup
   11515           table access functions
   11516 
   11517         * runtime/MathObject.cpp:
   11518         (JSC::MathObject::getOwnPropertySlot):
   11519         (JSC::MathObject::getOwnPropertyDescriptor):
   11520         * runtime/MathObject.h:
   11521         * runtime/NumberConstructor.cpp:
   11522         (JSC::NumberConstructor::getOwnPropertyDescriptor):
   11523         * runtime/NumberConstructor.h:
   11524         * runtime/ObjectConstructor.cpp:
   11525         (JSC::ObjectConstructor::ObjectConstructor):
   11526         (JSC::objectConstructorGetOwnPropertyDescriptor):
   11527         * runtime/PropertyDescriptor.cpp: Added.
   11528         (JSC::PropertyDescriptor::writable):
   11529         (JSC::PropertyDescriptor::enumerable):
   11530         (JSC::PropertyDescriptor::configurable):
   11531         (JSC::PropertyDescriptor::hasAccessors):
   11532         (JSC::PropertyDescriptor::setUndefined):
   11533         (JSC::PropertyDescriptor::getter):
   11534         (JSC::PropertyDescriptor::setter):
   11535         (JSC::PropertyDescriptor::setDescriptor):
   11536         (JSC::PropertyDescriptor::setAccessorDescriptor):
   11537         * runtime/PropertyDescriptor.h: Added.
   11538         (JSC::PropertyDescriptor::PropertyDescriptor):
   11539         (JSC::PropertyDescriptor::attributes):
   11540         (JSC::PropertyDescriptor::isValid):
   11541         (JSC::PropertyDescriptor::value):
   11542         * runtime/RegExpConstructor.cpp:
   11543         (JSC::RegExpConstructor::getOwnPropertyDescriptor):
   11544         * runtime/RegExpConstructor.h:
   11545         * runtime/RegExpMatchesArray.h:
   11546         (JSC::RegExpMatchesArray::getOwnPropertyDescriptor):
   11547         * runtime/RegExpObject.cpp:
   11548         (JSC::RegExpObject::getOwnPropertyDescriptor):
   11549         * runtime/RegExpObject.h:
   11550         * runtime/StringObject.cpp:
   11551         (JSC::StringObject::getOwnPropertyDescriptor):
   11552         * runtime/StringObject.h:
   11553         * runtime/StringPrototype.cpp:
   11554         (JSC::StringPrototype::getOwnPropertyDescriptor):
   11555         * runtime/StringPrototype.h:
   11556 
   11557 2009-08-24  Gavin Barraclough  <barraclough (a] apple.com>
   11558 
   11559         Reviewed by Darin Adler.
   11560 
   11561         How many copies of the parameters do you need?
   11562         https://bugs.webkit.org/show_bug.cgi?id=28701
   11563 
   11564         The function parameters in JSC get copied a lot - and unnecessarily so.
   11565 
   11566         Originally this happened due to duplicating FunctionBodyNodes on recompilation,
   11567         though the problem has been exacerbated by copying the parameters from the
   11568         original function body onto the executable, then back onto the real body that
   11569         will be generated (this happens on every function).  And this is all made worse
   11570         since the data structures in question are a little ugly - C style arrays of C++
   11571         objects containing ref counts, so they need a full copy-construct (rather than
   11572         a simple memcpy).
   11573 
   11574         This can all be greatly simplified by just punting the parameters off into
   11575         their own ref-counted object, and forgoing all the copying.
   11576 
   11577         ~no performance change, possible slight progression.
   11578 
   11579         * bytecompiler/BytecodeGenerator.cpp:
   11580         (JSC::BytecodeGenerator::BytecodeGenerator):
   11581         * bytecompiler/BytecodeGenerator.h:
   11582         (JSC::BytecodeGenerator::makeFunction):
   11583         * parser/Nodes.cpp:
   11584         (JSC::FunctionParameters::FunctionParameters):
   11585         (JSC::FunctionBodyNode::FunctionBodyNode):
   11586         (JSC::FunctionBodyNode::finishParsing):
   11587         * parser/Nodes.h:
   11588         (JSC::FunctionBodyNode::parameters):
   11589         (JSC::FunctionBodyNode::parameterCount):
   11590         * runtime/Executable.cpp:
   11591         (JSC::FunctionExecutable::~FunctionExecutable):
   11592         (JSC::FunctionExecutable::compile):
   11593         (JSC::FunctionExecutable::reparseExceptionInfo):
   11594         (JSC::FunctionExecutable::fromGlobalCode):
   11595         (JSC::FunctionExecutable::paramString):
   11596         * runtime/Executable.h:
   11597         (JSC::FunctionExecutable::FunctionExecutable):
   11598         (JSC::FunctionExecutable::parameterCount):
   11599 
   11600 2009-08-25  Brent Fulgham  <bfulgham (a] webkit.org>
   11601 
   11602         Reviewed by NOBODY (Buildfix).
   11603 
   11604         * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_CFLite target
   11605           that inherits from the debug_wincairo property sheet and therefore
   11606           links to the proper debug library.
   11607         * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_CFLite target
   11608           that inherits from the debug_wincairo property sheet and therefore
   11609           links to the proper debug library.
   11610 
   11611 2009-08-25  Chris Marrin  <cmarrin (a] apple.com>
   11612 
   11613         Reviewed by Simon Fraser.
   11614 
   11615         Export tryFastMalloc for Canvas3D work
   11616         https://bugs.webkit.org/show_bug.cgi?id=28018
   11617 
   11618         * JavaScriptCore.exp:
   11619 
   11620 2009-08-25  David Levin  <levin (a] chromium.org>
   11621 
   11622         Reviewed by Adam Roben.
   11623 
   11624         PLATFORM(CFNETWORK) should be USE(CFNETWORK).
   11625         https://bugs.webkit.org/show_bug.cgi?id=28713
   11626 
   11627         * wtf/Platform.h: Added a #define to catch this issue in the
   11628         future. The define would generate an error on gcc without the
   11629         space in the expansion, but Visual C++ needs the space to cause an error.
   11630 
   11631 2009-08-24  Brent Fulgham  <bfulgham (a] webkit.org>
   11632 
   11633         Reviewed by Steve Falkenburg.
   11634 
   11635         Revise CFLite Debug build to emit DLL's with _debug label.
   11636         https://bugs.webkit.org/show_bug.cgi?id=28695.
   11637 
   11638         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modify
   11639           Cairo debug build to inherit from new debug_cairo property sheet.
   11640         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops:
   11641           Modify to look for debug CFLite when in debug build.
   11642 
   11643 2009-08-24  Gavin Barraclough  <barraclough (a] apple.com>
   11644 
   11645         Reviewed by Oliver Adler & Darin Hunt.
   11646 
   11647         https://bugs.webkit.org/show_bug.cgi?id=28691
   11648         Do not retain ScopeNodes outside of parsing
   11649         
   11650         There is now no need for these to exist outside of parsing - their use in the runtime is replaced by Executable types.
   11651 
   11652         * bytecode/EvalCodeCache.h:
   11653         (JSC::EvalCodeCache::get):
   11654         * bytecompiler/BytecodeGenerator.cpp:
   11655         (JSC::BytecodeGenerator::BytecodeGenerator):
   11656         (JSC::BytecodeGenerator::emitNewFunction):
   11657         (JSC::BytecodeGenerator::emitNewFunctionExpression):
   11658         * bytecompiler/BytecodeGenerator.h:
   11659         (JSC::BytecodeGenerator::makeFunction):
   11660         * debugger/Debugger.cpp:
   11661         (JSC::Debugger::recompileAllJSFunctions):
   11662         (JSC::evaluateInGlobalCallFrame):
   11663         * debugger/DebuggerCallFrame.cpp:
   11664         (JSC::DebuggerCallFrame::evaluate):
   11665         * interpreter/Interpreter.cpp:
   11666         (JSC::Interpreter::execute):
   11667         (JSC::Interpreter::prepareForRepeatCall):
   11668         (JSC::Interpreter::privateExecute):
   11669         * jit/JITStubs.cpp:
   11670         (JSC::DEFINE_STUB_FUNCTION):
   11671         * parser/Nodes.cpp:
   11672         (JSC::ScopeNodeData::ScopeNodeData):
   11673         (JSC::ProgramNode::create):
   11674         (JSC::EvalNode::create):
   11675         (JSC::FunctionBodyNode::create):
   11676         * parser/Nodes.h:
   11677         (JSC::ScopeNode::adoptData):
   11678         (JSC::FunctionBodyNode::parameterCount):
   11679         * parser/Parser.cpp:
   11680         * parser/Parser.h:
   11681         (JSC::Parser::arena):
   11682         (JSC::Parser::Parser):
   11683         (JSC::Parser::parse):
   11684         * runtime/ArrayPrototype.cpp:
   11685         (JSC::isNumericCompareFunction):
   11686         (JSC::arrayProtoFuncSort):
   11687         * runtime/Completion.cpp:
   11688         (JSC::checkSyntax):
   11689         (JSC::evaluate):
   11690         * runtime/Executable.cpp:
   11691         (JSC::FunctionExecutable::~FunctionExecutable):
   11692         (JSC::EvalExecutable::compile):
   11693         (JSC::ProgramExecutable::checkSyntax):
   11694         (JSC::ProgramExecutable::compile):
   11695         (JSC::FunctionExecutable::compile):
   11696         (JSC::EvalExecutable::generateJITCode):
   11697         (JSC::ProgramExecutable::generateJITCode):
   11698         (JSC::FunctionExecutable::generateJITCode):
   11699         (JSC::FunctionExecutable::reparseExceptionInfo):
   11700         (JSC::EvalExecutable::reparseExceptionInfo):
   11701         (JSC::FunctionExecutable::recompile):
   11702         (JSC::FunctionExecutable::fromGlobalCode):
   11703         (JSC::FunctionExecutable::copyParameters):
   11704         (JSC::FunctionExecutable::paramString):
   11705         * runtime/Executable.h:
   11706         (JSC::ScriptExecutable::ScriptExecutable):
   11707         (JSC::ScriptExecutable::sourceID):
   11708         (JSC::ScriptExecutable::sourceURL):
   11709         (JSC::ScriptExecutable::lineNo):
   11710         (JSC::ScriptExecutable::lastLine):
   11711         (JSC::ScriptExecutable::usesEval):
   11712         (JSC::ScriptExecutable::usesArguments):
   11713         (JSC::ScriptExecutable::needsActivation):
   11714         (JSC::ScriptExecutable::recordParse):
   11715         (JSC::EvalExecutable::bytecode):
   11716         (JSC::EvalExecutable::jitCode):
   11717         (JSC::ProgramExecutable::bytecode):
   11718         (JSC::ProgramExecutable::reparseExceptionInfo):
   11719         (JSC::ProgramExecutable::jitCode):
   11720         (JSC::FunctionExecutable::FunctionExecutable):
   11721         (JSC::FunctionExecutable::make):
   11722         (JSC::FunctionExecutable::bytecode):
   11723         (JSC::FunctionExecutable::isGenerated):
   11724         (JSC::FunctionExecutable::name):
   11725         (JSC::FunctionExecutable::parameterCount):
   11726         (JSC::FunctionExecutable::jitCode):
   11727         * runtime/FunctionConstructor.cpp:
   11728         (JSC::constructFunction):
   11729         * runtime/JSGlobalData.cpp:
   11730         (JSC::JSGlobalData::numericCompareFunction):
   11731         * runtime/JSGlobalObjectFunctions.cpp:
   11732         (JSC::globalFuncEval):
   11733 
   11734 2009-08-24  Darin Adler  <darin (a] apple.com>
   11735 
   11736         * runtime/ObjectPrototype.cpp:
   11737         (JSC::ObjectPrototype::put): Landed revised version I had tested but forgot
   11738         to land. Leave out the branch, since we don't need one.
   11739 
   11740 2009-08-24  Darin Adler  <darin (a] apple.com>
   11741 
   11742         Reviewed by Geoff Garen.
   11743 
   11744         Array index miss case creates a string every time
   11745         https://bugs.webkit.org/show_bug.cgi?id=28664
   11746 
   11747         SunSpider test results I saw:
   11748 
   11749             0.5% faster overall
   11750             1% faster on crypto-aes
   11751             20% faster on crypto-md5
   11752             13% faster on crypto-sha1
   11753 
   11754         * runtime/ObjectPrototype.cpp:
   11755         (JSC::ObjectPrototype::ObjectPrototype): Initialize m_hasNoPropertiesWithUInt32Names
   11756         to true.
   11757         (JSC::ObjectPrototype::put): Clearly m_hasNoPropertiesWithUInt32Names if the new
   11758         property has a name that is the string form of a UInt32.
   11759         (JSC::ObjectPrototype::getOwnPropertySlot): Don't call JSObject::getOwnPropertySlot
   11760         if m_hasNoPropertiesWithUInt32Names is true, and it is highly likely to be true.
   11761 
   11762         * runtime/ObjectPrototype.h: Added declarations for the above.
   11763 
   11764 2009-08-24  Gustavo Noronha Silva  <gustavo.noronha (a] collabora.co.uk>
   11765 
   11766         Unreviewed. Fix a typo in my distcheck build fix.
   11767 
   11768         * GNUmakefile.am:
   11769 
   11770 2009-08-23  Gustavo Noronha Silva  <gns (a] gnome.org>
   11771 
   11772         Unreviewed build fix for make distcheck.
   11773 
   11774         * GNUmakefile.am: Added files required for the build.
   11775 
   11776 2009-08-22  Maciej Stachowiak  <mjs (a] apple.com>
   11777 
   11778         Reviewed by Mark Rowe.
   11779 
   11780         REGRESSION(r47639-r47660): Webkit crashes on launch on PowerPC
   11781         https://bugs.webkit.org/show_bug.cgi?id=28655
   11782 
   11783         * runtime/JSFunction.cpp:
   11784         (JSC::JSFunction::JSFunction): Initialize properly with a VPtrHackExecutable.
   11785         * wtf/Platform.h:
   11786 
   11787 2009-08-22  Darin Adler  <darin (a] apple.com>
   11788 
   11789         Fix storage leak from syntax tree arena allocation patch.
   11790 
   11791         * parser/Nodes.h: CommaNode needs to inherit from ParserArenaDeletable
   11792         because it has a vector.
   11793 
   11794 2009-08-21  Darin Adler  <darin (a] apple.com>
   11795 
   11796         Fix Qt build.
   11797 
   11798         * parser/Nodes.cpp:
   11799         (JSC::ScopeNodeData::ScopeNodeData): Made non-inline again.
   11800         This is used outside Nodes.cpp so can't be inline unless
   11801         it is in the header.
   11802 
   11803 2009-08-21  Darin Adler  <darin (a] apple.com>
   11804 
   11805         Two loose ends from the last commit.
   11806 
   11807         * JavaScriptCore.xcodeproj/project.pbxproj: Made ParserArena.h
   11808         and create_hash_table project-internal instead of "private".
   11809         * runtime/Executable.h: Removed accidentally-added constructor.
   11810 
   11811 2009-08-21  Darin Adler  <darin (a] apple.com>
   11812 
   11813         Reviewed by Gavin Barraclough.
   11814 
   11815         Syntax tree nodes should use arena allocation
   11816         https://bugs.webkit.org/show_bug.cgi?id=25674
   11817 
   11818         Use an actual arena now. 0.6% speedup on SunSpider.
   11819 
   11820         New and improved with 100% less leaking of the universe.
   11821 
   11822         * JavaScriptCore.exp:
   11823         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   11824         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   11825         Removed all exports involving the class FunctionBodyNode, which no
   11826         longer needs to be used outside JavaScriptCore.
   11827 
   11828         * JavaScriptCore.xcodeproj/project.pbxproj: Made Nodes.h and
   11829         Executable.h project-internal instead of "private".
   11830 
   11831         * bytecompiler/BytecodeGenerator.cpp:
   11832         (JSC::BytecodeGenerator::BytecodeGenerator): Updated since VarStack
   11833         contains const Identifier* now.
   11834 
   11835         * parser/Grammar.y: Made identifiers from the lexer be const
   11836         Identifier* and updated since VarStack contains const Identifier* now.
   11837 
   11838         * parser/Lexer.cpp:
   11839         (JSC::Lexer::setCode): Pass in ParserArena, used for identifiers.
   11840         (JSC::Lexer::makeIdentifier): Changed return type to const Identifier*
   11841         and changed to call ParserArena.
   11842         (JSC::Lexer::clear): Removed the code to manage m_identifiers and
   11843         added code to set m_arena to 0.
   11844         * parser/Lexer.h: Updated for changes above.
   11845 
   11846         * parser/NodeConstructors.h:
   11847         (JSC::ParserArenaFreeable::operator new): Added. Calls allocateFreeable
   11848         on the arena.
   11849         (JSC::ParserArenaDeletable::operator new): Changed to call the
   11850         allocateDeletable function on the arena instead of deleteWithArena.
   11851         (JSC::PropertyNode::PropertyNode): Added new constructor that makes
   11852         numeric identifiers. Some day we might want to optimize this for
   11853         integers so it doesn't create a string for each one.
   11854         (JSC::ContinueNode::ContinueNode): Initialize m_ident to nullIdentifier
   11855         since it's now a const Identifier& so it can't be left uninitialized.
   11856         (JSC::BreakNode::BreakNode): Ditto.
   11857         (JSC::CaseClauseNode::CaseClauseNode): Updated to use SourceElements*
   11858         to keep track of the statements rather than a separate statement vector.
   11859         (JSC::BlockNode::BlockNode): Ditto.
   11860         (JSC::ForInNode::ForInNode): Initialize m_ident to nullIdentifier.
   11861 
   11862         * parser/Nodes.cpp: Moved the comment explaining emitBytecode in here.
   11863         It seemed strangely out of place in the header.
   11864         (JSC::ThrowableExpressionData::emitThrowError): Added an overload for
   11865         UString as well as Identifier.
   11866         (JSC::SourceElements::singleStatement): Added.
   11867         (JSC::SourceElements::lastStatement): Added.
   11868         (JSC::RegExpNode::emitBytecode): Changed the throwError code to use
   11869         the substitution mechanism instead of doing a string append.
   11870         (JSC::SourceElements::emitBytecode): Added. Replaces the old
   11871         statementListEmitCode function, since we now keep the SourceElements
   11872         objects around.
   11873         (JSC::BlockNode::lastStatement): Added.
   11874         (JSC::BlockNode::emitBytecode): Changed to use emitBytecode instead of
   11875         statementListEmitCode.
   11876         (JSC::CaseClauseNode::emitBytecode): Added.
   11877         (JSC::CaseBlockNode::emitBytecodeForBlock): Changed to use emitBytecode
   11878         instead of statementListEmitCode.
   11879         (JSC::ScopeNodeData::ScopeNodeData): Changed to store the
   11880         SourceElements* instead of using releaseContentsIntoVector.
   11881         (JSC::ScopeNode::emitStatementsBytecode): Added.
   11882         (JSC::ScopeNode::singleStatement): Added.
   11883         (JSC::ProgramNode::emitBytecode): Call emitStatementsBytecode instead
   11884         of statementListEmitCode.
   11885         (JSC::EvalNode::emitBytecode): Ditto.
   11886         (JSC::FunctionBodyNode::emitBytecode): Call emitStatementsBytecode
   11887         insetad of statementListEmitCode and check for the return node using
   11888         the new functions.
   11889 
   11890         * parser/Nodes.h: Changed VarStack to store const Identifier* instead
   11891         of Identifier and rely on the arena to control lifetime. Added a new
   11892         ParserArenaFreeable class. Made ParserArenaDeletable inherit from
   11893         FastAllocBase instead of having its own operator new. Base the Node
   11894         class on ParserArenaFreeable. Changed the various Node classes
   11895         to use const Identifier& instead of Identifier to avoid the need to
   11896         call their destructors and allow them to function as "freeable" in the
   11897         arena. Removed extraneous JSC_FAST_CALL on definitions of inline functions.
   11898         Changed ElementNode, PropertyNode, ArgumentsNode, ParameterNode,
   11899         CaseClauseNode, ClauseListNode, and CaseBlockNode to use ParserArenaFreeable
   11900         as a base class since they do not descend from Node. Eliminated the
   11901         StatementVector type and instead have various classes use SourceElements*
   11902         instead of StatementVector. This prevents those classes from having to
   11903         use ParserArenaDeletable to make sure the vector destructor is called.
   11904 
   11905         * parser/Parser.cpp:
   11906         (JSC::Parser::parse): Pass the arena to the lexer.
   11907 
   11908         * parser/Parser.h: Added an include of ParserArena.h, which is no longer
   11909         included by Nodes.h.
   11910         (JSC::Parser::parseFunctionFromGlobalCode): Changed to use the
   11911         singleStatement function, since there is no longer any children function.
   11912         Removed some unneeded use of RefPtr.
   11913 
   11914         * parser/ParserArena.cpp:
   11915         (JSC::ParserArena::ParserArena): Added. Initializes the new members,
   11916         m_freeableMemory, m_freeablePoolEnd, and m_identifiers.
   11917         (JSC::ParserArena::freeablePool): Added. Computes the pool pointer,
   11918         since we store only the current pointer and the end of pool pointer.
   11919         (JSC::ParserArena::deallocateObjects): Added. Contains the common
   11920         memory-deallocation logic used by both the destructor and the
   11921         reset function.
   11922         (JSC::ParserArena::~ParserArena): Changed to call deallocateObjects.
   11923         (JSC::ParserArena::reset): Ditto. Also added code to zero out the
   11924         new structures, and switched to use clear() instead of shrink(0) since
   11925         we don't really reuse arenas.
   11926         (JSC::ParserArena::makeNumericIdentifier): Added.
   11927         (JSC::ParserArena::allocateFreeablePool): Added. Used when the pool
   11928         is empty.
   11929         (JSC::ParserArena::isEmpty): Added. No longer inline, which is fine
   11930         since this is used only for assertions at the moment.
   11931         (JSC::ParserArena::derefWithArena): Make non-inline.
   11932 
   11933         * parser/ParserArena.h: Added an actual arena of "freeable" objects,
   11934         ones that don't need destructors to be called. Also added a separate
   11935         IdentifierArena object, a segmented vector of identifiers that used
   11936         to be in the Lexer.
   11937 
   11938         * runtime/Executable.h: Moved the definition of the
   11939         FunctionExecutable::make function here. It can't go in JSFunction.h
   11940         since that header has to be used outside JavaScriptCore and so can't
   11941         include this, which includes Nodes.h. The function could be moved
   11942         elswhere if we don't want to include JSFunction.h in this header, but
   11943         for now this seems to be the best place.
   11944 
   11945         * runtime/JSFunction.h: Removed the include of Executable.h and
   11946         definition of the FunctionExecutable::make function.
   11947 
   11948         * wtf/FastMalloc.cpp: Fixed an incorrect comment.
   11949 
   11950 2009-08-21  Mark Rowe  <mrowe (a] apple.com>
   11951 
   11952         Fix the non-JIT build.
   11953 
   11954         * runtime/Executable.cpp:
   11955         * runtime/Executable.h:
   11956 
   11957 2009-08-21  Gavin Barraclough  <barraclough (a] apple.com>
   11958 
   11959         Speculative QuickTime build fix.
   11960 
   11961         * runtime/JSArray.cpp:
   11962 
   11963 2009-08-21  Gavin Barraclough  <barraclough (a] apple.com>
   11964 
   11965         Speculative QT build fix.
   11966 
   11967         * runtime/StringPrototype.cpp:
   11968 
   11969 2009-08-21  Gavin Barraclough  <barraclough (a] apple.com>
   11970 
   11971         Reviewed by Oliver Hunt.
   11972 
   11973         Restructure Executable types so that host functions do not hold a FunctionExecutable.
   11974         https://bugs.webkit.org/show_bug.cgi?id=28621
   11975 
   11976         All JSFunction objects have a pointer to an Executable*.  This is currently always a
   11977         FunctionExecutable, however this has a couple of drawbacks.  Host functions do not
   11978         store a range of information that the FunctionExecutable provides (source, name,
   11979         CodeBlock & information presently held on the FunctionBodyNode). 
   11980 
   11981         [ * nearly all... see below! ]
   11982 
   11983         Instead, make JSFunctions hold a pointer to an ExecutableBase, move fields specific
   11984         to JS sourced executable types (source, node) into a new subclass (ScriptExecutable),
   11985         and create a new NativeExecutable type.  We now provide a new method in JSFunction
   11986         to access & downcast to FunctionExecutable, but in doing so we can make an early
   11987         check (with an ASSERT) to ensure that the Executable read from a function will only
   11988         be treated as a FunctionExecutable (and thus the JS sepcific fields will only be
   11989         accessed) if the JSFunction is not a host function.
   11990 
   11991         There is one JSFunction that currently does not have an Executable, which is the
   11992         object created to allow us to read out the vtable pointer.  By making this change
   11993         we can also add a new Executable type fror this object (VPtrHackExecutable).
   11994         Since this means that really all JSFunctions have an Executable we no longer have
   11995         to null-check m_executable before us it - particularly in isHostFunction().
   11996 
   11997         This patch removes CacheableEvalExecutable, since all subclasses of ExecutableBase
   11998         can now be ref-counted - since both JSFunction holds (and ref-counts) an ExecutableBase
   11999         that might be a FunctionExecutable or a NativeExecutable.  This does now mean that all
   12000         ProgramExecutables and EvalExecutables (unnecessarily) provide an interface to be
   12001         ref-counted, however this seems less-bad than host functions unnecessarily providing
   12002         interface to access non-host specific information.
   12003 
   12004         The class hierarcy has changed from this:
   12005         
   12006         - ExecutableBase
   12007             - ProgramExecutable
   12008             - EvalExecutable
   12009                 - CacheableEvalExecutable (also RefCounted by multiple-inheritance)
   12010             - FunctionExecutable (also RefCounted by multiple-inheritance, 'special' FunctionExecutable also used for host functions)
   12011 
   12012         To this:
   12013         
   12014         - RefCounted
   12015             - ExecutableBase
   12016                 - NativeExecutable
   12017                 - VPtrHackExecutable
   12018                 - ScriptExecutable
   12019                     - ProgramExecutable
   12020                     - EvalExecutable
   12021                     - FunctionExecutable
   12022 
   12023         This patch speeds up sunspidey by a couple of ms (presumably due to the changes to isHostFunction()).
   12024 
   12025         * bytecode/CodeBlock.cpp:
   12026         (JSC::CodeBlock::CodeBlock):
   12027         * bytecode/CodeBlock.h:
   12028         (JSC::CodeBlock::ownerExecutable):
   12029         (JSC::GlobalCodeBlock::GlobalCodeBlock):
   12030         * bytecode/EvalCodeCache.h:
   12031         (JSC::EvalCodeCache::get):
   12032         * debugger/Debugger.cpp:
   12033         (JSC::Debugger::recompileAllJSFunctions):
   12034         * interpreter/CachedCall.h:
   12035         (JSC::CachedCall::CachedCall):
   12036         * interpreter/Interpreter.cpp:
   12037         (JSC::Interpreter::callEval):
   12038         (JSC::Interpreter::privateExecute):
   12039         * jit/JITStubs.cpp:
   12040         (JSC::DEFINE_STUB_FUNCTION):
   12041         * profiler/Profiler.cpp:
   12042         (JSC::createCallIdentifierFromFunctionImp):
   12043         * runtime/Arguments.h:
   12044         (JSC::Arguments::getArgumentsData):
   12045         (JSC::Arguments::Arguments):
   12046         * runtime/Executable.cpp:
   12047         (JSC::NativeExecutable::~NativeExecutable):
   12048         (JSC::VPtrHackExecutable::~VPtrHackExecutable):
   12049         * runtime/Executable.h:
   12050         (JSC::ExecutableBase::ExecutableBase):
   12051         (JSC::ExecutableBase::~ExecutableBase):
   12052         (JSC::ExecutableBase::isHostFunction):
   12053         (JSC::NativeExecutable::NativeExecutable):
   12054         (JSC::VPtrHackExecutable::VPtrHackExecutable):
   12055         (JSC::ScriptExecutable::ScriptExecutable):
   12056         (JSC::ScriptExecutable::source):
   12057         (JSC::ScriptExecutable::sourceID):
   12058         (JSC::ScriptExecutable::sourceURL):
   12059         (JSC::ScriptExecutable::lineNo):
   12060         (JSC::ScriptExecutable::lastLine):
   12061         (JSC::ScriptExecutable::usesEval):
   12062         (JSC::ScriptExecutable::usesArguments):
   12063         (JSC::ScriptExecutable::needsActivation):
   12064         (JSC::EvalExecutable::EvalExecutable):
   12065         (JSC::EvalExecutable::create):
   12066         (JSC::ProgramExecutable::ProgramExecutable):
   12067         (JSC::FunctionExecutable::FunctionExecutable):
   12068         * runtime/FunctionPrototype.cpp:
   12069         (JSC::functionProtoFuncToString):
   12070         * runtime/JSFunction.cpp:
   12071         (JSC::JSFunction::JSFunction):
   12072         (JSC::JSFunction::~JSFunction):
   12073         (JSC::JSFunction::markChildren):
   12074         (JSC::JSFunction::getCallData):
   12075         (JSC::JSFunction::call):
   12076         (JSC::JSFunction::lengthGetter):
   12077         (JSC::JSFunction::getConstructData):
   12078         (JSC::JSFunction::construct):
   12079         * runtime/JSFunction.h:
   12080         (JSC::JSFunction::executable):
   12081         (JSC::JSFunction::jsExecutable):
   12082         (JSC::JSFunction::isHostFunction):
   12083 
   12084 2009-08-20  Oliver Hunt  <oliver (a] apple.com>
   12085 
   12086         Reviewed by Maciej Stachowiak.
   12087 
   12088         Browser hangs on opening Web Inspector.
   12089         https://bugs.webkit.org/show_bug.cgi?id=28438
   12090 
   12091         Code generation needs to be able to walk the entire scopechain in some
   12092         cases, however the symbol table used by activations was a member of the
   12093         codeblock.  Following recompilation this may no longer exist, leading
   12094         to a crash or hang on lookup.
   12095 
   12096         We fix this by introducing a refcounted SymbolTable subclass, SharedSymbolTable,
   12097         for the CodeBlocks used by function code.  This allows activations to
   12098         maintain ownership of a copy of the symbol table even after recompilation so
   12099         they can continue to work.
   12100 
   12101         * bytecode/CodeBlock.cpp:
   12102         (JSC::CodeBlock::CodeBlock):
   12103         * bytecode/CodeBlock.h:
   12104         (JSC::CodeBlock::symbolTable):
   12105         (JSC::CodeBlock::sharedSymbolTable):
   12106         (JSC::GlobalCodeBlock::GlobalCodeBlock):
   12107         (JSC::FunctionCodeBlock::FunctionCodeBlock):
   12108         (JSC::FunctionCodeBlock::~FunctionCodeBlock):
   12109         * interpreter/Interpreter.cpp:
   12110         (JSC::Interpreter::retrieveArguments):
   12111         * runtime/Executable.cpp:
   12112         (JSC::EvalExecutable::generateBytecode):
   12113         (JSC::FunctionExecutable::generateBytecode):
   12114         (JSC::FunctionExecutable::reparseExceptionInfo):
   12115         (JSC::EvalExecutable::reparseExceptionInfo):
   12116         * runtime/JSActivation.h:
   12117         (JSC::JSActivation::JSActivationData::JSActivationData):
   12118         (JSC::JSActivation::JSActivationData::~JSActivationData):
   12119         * runtime/SymbolTable.h:
   12120 
   12121 2009-08-20  Xan Lopez  <xlopez (a] igalia.com>
   12122 
   12123         Add new file to GTK+ build.
   12124 
   12125         * GNUmakefile.am:
   12126 
   12127 2009-08-20  Geoffrey Garen  <ggaren (a] apple.com>
   12128 
   12129         Reviewed by Maciej Stachowiak.
   12130 
   12131         Added a number => string cache.
   12132         
   12133         1.07x faster on v8 (1.7x faster on v8-splay).
   12134         1.004x faster on SunSpider.
   12135 
   12136         * runtime/JSCell.h: Moved JSValue::toString to JSString.h.
   12137         * runtime/JSGlobalData.h: Holds the cache.
   12138         * runtime/JSNumberCell.cpp:
   12139         (JSC::JSNumberCell::toString):
   12140         (JSC::JSNumberCell::toThisString): Removed -0 special case.
   12141         UString handles this now, since too many clients were
   12142         special-casing it.
   12143 
   12144         * runtime/JSString.h:
   12145         (JSC::JSValue::toString): Use the cache when converting
   12146         an int or double to string.
   12147 
   12148         * runtime/Operations.h:
   12149         (JSC::concatenateStrings): Call toString to take advantage
   12150         of the cache.
   12151 
   12152         * runtime/SmallStrings.h:
   12153         (JSC::NumericStrings::add):
   12154         (JSC::NumericStrings::lookup): The cache.
   12155 
   12156         * runtime/UString.cpp:
   12157         (JSC::UString::from): Added -0 special case mentioned above.
   12158         Removed appendNumeric because it's mutually exclusive with the
   12159         cache.
   12160 
   12161 2009-08-20  Oliver Hunt  <oliver (a] apple.com>
   12162 
   12163         Reviewed by Gavin Barraclough.
   12164 
   12165         REGRESSION: fast/profiler/call.html is crashing occasionally
   12166         https://bugs.webkit.org/show_bug.cgi?id=28476
   12167 
   12168         Using the codeblock for information about how many parameters and
   12169         locals a function has is unsafe in certain circumstances.  The
   12170         basic scenario is all function code being cleared in response to
   12171         the debugger or profiler being enabled, and then an activation is
   12172         marked before its associated function is re-executed.
   12173 
   12174         To deal with this scenario we store the variable count of a function
   12175         directly in the FunctionExecutable, and then use that information.
   12176 
   12177         * runtime/Arguments.h:
   12178         (JSC::Arguments::getArgumentsData):
   12179         * runtime/Executable.cpp:
   12180         (JSC::FunctionExecutable::generateBytecode):
   12181         * runtime/Executable.h:
   12182         (JSC::FunctionExecutable::FunctionExecutable):
   12183         (JSC::FunctionExecutable::variableCount):
   12184         * runtime/JSActivation.cpp:
   12185         (JSC::JSActivation::markChildren):
   12186 
   12187 2009-08-20  Gavin Barraclough  <barraclough (a] apple.com>
   12188 
   12189         Reviewed by Oliver Hunt.
   12190 
   12191         Numbering of arguments to emitGetJITStubArg/emitPutJITStubArg incorrect
   12192         <bug lost in the great bug disasteroony of 08/20/09!>
   12193 
   12194         The argumentNumber argument to emitGetJITStubArg/emitPutJITStubArg should match
   12195         the argument number used within the stub functions in JITStubs.cpp, but it doesn't.
   12196 
   12197         Firstly, all the numbers changed when we added a void* 'reserved' as the first slot
   12198         (rather than leaving argument 0 unused), and secondly in 32_64 builds the index to
   12199         peek/poke needs to be multiplies by 2 (since the argument to peek/poke is a number
   12200         of machine words, and on 32_64 build the argument slots to stub functions are two
   12201         words wide).
   12202 
   12203         * jit/JIT.h:
   12204         * jit/JITCall.cpp:
   12205         (JSC::JIT::compileOpCallSetupArgs):
   12206         (JSC::JIT::compileOpConstructSetupArgs):
   12207         (JSC::JIT::compileOpCallVarargsSetupArgs):
   12208         (JSC::JIT::compileOpCall):
   12209         * jit/JITInlineMethods.h:
   12210         (JSC::JIT::emitPutJITStubArg):
   12211         (JSC::JIT::emitPutJITStubArgConstant):
   12212         (JSC::JIT::emitGetJITStubArg):
   12213         (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
   12214         * jit/JITOpcodes.cpp:
   12215         (JSC::JIT::privateCompileCTIMachineTrampolines):
   12216         * jit/JITPropertyAccess.cpp:
   12217         (JSC::JIT::privateCompilePutByIdTransition):
   12218 
   12219 2009-08-20  Oliver Hunt  <oliver (a] apple.com>
   12220 
   12221         Reviewed by Geoff Garen.
   12222 
   12223         REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest
   12224         https://bugs.webkit.org/show_bug.cgi?id=28332
   12225 
   12226         Follow up style fixes that were missed in review.
   12227 
   12228         * runtime/Structure.cpp:
   12229         (JSC::Structure::hasTransition):
   12230         * runtime/Structure.h:
   12231         (JSC::Structure::get):
   12232         (JSC::StructureTransitionTable::contains):
   12233         * runtime/StructureTransitionTable.h:
   12234         (JSC::StructureTransitionTable::add):
   12235 
   12236 2009-08-20  Oliver Hunt  <oliver (a] apple.com>
   12237 
   12238         Add new exports to windows jsc build
   12239 
   12240         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   12241         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   12242 
   12243 2009-08-20  Oliver Hunt  <oliver (a] apple.com>
   12244 
   12245         Reviewed by Gavin Barraclough.
   12246 
   12247         REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest
   12248         https://bugs.webkit.org/show_bug.cgi?id=28332
   12249 
   12250         The method check optimisation made transitions aware of the value being
   12251         assigned when a transition was assigning a function.  This had the side
   12252         effect of making every assignment of a function expression result in a
   12253         new transition, and thus a new Structure.  The net result of this is that
   12254         the common JS idiom of
   12255 
   12256             function MyObject() {
   12257                 this.myFunction = function(...){...};
   12258             }
   12259             new MyObject();
   12260 
   12261         Will produce a unique structure on every iteration, meaning that all
   12262         caching is defeated and there is a significant amount of structure churn.
   12263 
   12264         The fix is to return the transition to its original form where it is
   12265         keyed off a property name + attributes tuple, but have each transition
   12266         support an optional transition on a specific value.
   12267 
   12268         * JavaScriptCore.exp:
   12269         * runtime/JSObject.h:
   12270         (JSC::JSObject::putDirectInternal):
   12271         * runtime/Structure.cpp:
   12272         (JSC::Structure::~Structure):
   12273         (JSC::Structure::addPropertyTransitionToExistingStructure):
   12274         (JSC::Structure::addPropertyTransition):
   12275         (JSC::Structure::hasTransition):
   12276         * runtime/Structure.h:
   12277         (JSC::Structure::transitionedFor):
   12278         (JSC::Structure::hasTransition):
   12279         (JSC::Structure::):
   12280         (JSC::StructureTransitionTable::contains):
   12281         (JSC::StructureTransitionTable::get):
   12282         * runtime/StructureTransitionTable.h:
   12283         (JSC::StructureTransitionTableHashTraits::emptyValue):
   12284         (JSC::StructureTransitionTable::hasTransition):
   12285         (JSC::StructureTransitionTable::remove):
   12286         (JSC::StructureTransitionTable::add):
   12287 
   12288 2009-08-20  Gavin Barraclough  <barraclough (a] apple.com>
   12289 
   12290         Reviewed by Oliver Hunt.
   12291 
   12292         Remove FunctionCodeBlock.
   12293         https://bugs.webkit.org/show_bug.cgi?id=28502
   12294 
   12295         These only exist to allow JIT code to dereference properties off the
   12296         CodeBlock for any callee, regardless of whether it is a host function.
   12297 
   12298         Instead just use the FunctionExecutable.  Copy the m_parameters field
   12299         from the CodeBlock into the Executable, and use this to distinguish
   12300         between host functions, functions that have been bytecompiled, and
   12301         functions that have not.
   12302 
   12303         m_parameters is moved to ExecutableBase rather than FunctionExecutable
   12304         so that (as a separate change) we can move make a separate class of
   12305         executable for host code, which is not devived from FunctionExecutable
   12306         (host code does not feature any of the properties that normal executable
   12307         do and will provide, such as source, attributes, and a parsed name).
   12308 
   12309         1% win on v8 tests, 0.5% on sunspider.
   12310 
   12311         * bytecode/CodeBlock.cpp:
   12312         (JSC::CodeBlock::derefStructures):
   12313         (JSC::CodeBlock::refStructures):
   12314         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
   12315         (JSC::CodeBlock::handlerForBytecodeOffset):
   12316         (JSC::CodeBlock::lineNumberForBytecodeOffset):
   12317         (JSC::CodeBlock::expressionRangeForBytecodeOffset):
   12318         (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
   12319         (JSC::CodeBlock::functionRegisterForBytecodeOffset):
   12320         (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset):
   12321         (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset):
   12322         * bytecode/CodeBlock.h:
   12323         (JSC::):
   12324         (JSC::CodeBlock::source):
   12325         (JSC::CodeBlock::sourceOffset):
   12326         (JSC::CodeBlock::evalCodeCache):
   12327         (JSC::CodeBlock::createRareDataIfNecessary):
   12328         
   12329             remove NativeCodeBlocks and the NativeCode code type.
   12330         
   12331         * jit/JIT.cpp:
   12332         (JSC::JIT::linkCall):
   12333 
   12334             Revert to previous behaviour (as currently still commented!) that Hhost functions have a null codeblock.
   12335 
   12336         * jit/JITCall.cpp:
   12337         (JSC::JIT::compileOpCallInitializeCallFrame):
   12338         (JSC::JIT::compileOpCallSetupArgs):
   12339         (JSC::JIT::compileOpCallVarargsSetupArgs):
   12340         (JSC::JIT::compileOpConstructSetupArgs):
   12341         (JSC::JIT::compileOpCallVarargs):
   12342         (JSC::JIT::compileOpCall):
   12343         (JSC::JIT::compileOpCallSlowCase):
   12344 
   12345             Bring the 32_64 & non-32_64 JITs into line with each other, callee in regT0.
   12346 
   12347         * jit/JITOpcodes.cpp:
   12348         (JSC::JIT::privateCompileCTIMachineTrampolines):
   12349 
   12350             Rewrite call trampolines to not use the CodeBlock.
   12351 
   12352         * jit/JITStubs.cpp:
   12353         (JSC::DEFINE_STUB_FUNCTION):
   12354 
   12355             Make call_JSFunction & call_arityCheck return the callee, don't expect to be passed the CodeBlock.
   12356 
   12357         * runtime/Executable.cpp:
   12358         (JSC::FunctionExecutable::generateBytecode):
   12359         (JSC::FunctionExecutable::recompile):
   12360         (JSC::FunctionExecutable::FunctionExecutable):
   12361         * runtime/Executable.h:
   12362         (JSC::ExecutableBase::):
   12363         (JSC::ExecutableBase::ExecutableBase):
   12364         (JSC::FunctionExecutable::isHostFunction):
   12365 
   12366             Add m_numParameters.
   12367 
   12368         * runtime/JSFunction.cpp:
   12369         (JSC::JSFunction::~JSFunction):
   12370 
   12371             Only call generatedBytecode() on JSFunctions non-host FunctionExecutables.
   12372 
   12373 2009-08-20  Yongjun Zhang  <yongjun.zhang (a] nokia.com>
   12374 
   12375         Reviewed by Eric Seidel.
   12376 
   12377         https://bugs.webkit.org/show_bug.cgi?id=28054
   12378        
   12379         Use a helper function to work around winscw compiler forward declaration bug
   12380         regarding templated classes.
   12381 
   12382         Add parenthesis around (PassRefPtr::*UnspecifiedBoolType) to make winscw compiler
   12383         work with the default UnSpecifiedBoolType() operator, which removes the winscw
   12384         specific bool cast hack.
   12385 
   12386         * wtf/PassRefPtr.h:
   12387         (WTF::derefIfNotNull):
   12388         (WTF::PassRefPtr::~PassRefPtr):
   12389 
   12390 2009-08-19  Yong Li  <yong.li (a] torchmobile.com>
   12391 
   12392         Reviewed by Gavin Barraclough.
   12393 
   12394         Change namespace ARM to ARMRegisters
   12395         X86 to X86Registers to avoid conflict with macros
   12396         https://bugs.webkit.org/show_bug.cgi?id=28428
   12397 
   12398         * assembler/ARMAssembler.cpp:
   12399         * assembler/ARMAssembler.h:
   12400         * assembler/ARMv7Assembler.h:
   12401         * assembler/MacroAssemblerARM.h:
   12402         * assembler/MacroAssemblerARMv7.h:
   12403         * assembler/MacroAssemblerX86Common.h:
   12404         * assembler/MacroAssemblerX86_64.h:
   12405         * assembler/X86Assembler.h:
   12406         * jit/JIT.h:
   12407         * jit/JITArithmetic.cpp:
   12408         * jit/JITInlineMethods.h:
   12409         * jit/JITOpcodes.cpp:
   12410         * wrec/WRECGenerator.cpp:
   12411         * wrec/WRECGenerator.h:
   12412         * yarr/RegexJIT.cpp:
   12413 
   12414 2009-08-19  Oliver Hunt  <oliver (a] apple.com>
   12415 
   12416         Reviewed by Gavin Barraclough.
   12417 
   12418         Devirtualise marking
   12419         https://bugs.webkit.org/show_bug.cgi?id=28294
   12420 
   12421         We actually need to mark the value in a number object if we're using the
   12422         32bit number representation.
   12423 
   12424         * runtime/NumberObject.h:
   12425         (JSC::NumberObject::createStructure):
   12426 
   12427 2009-08-19  Gavin Barraclough  <barraclough (a] apple.com>
   12428 
   12429         Reviewed by Darin Adler.
   12430 
   12431          We probably shouldn't be keeping the AST for eval nodes around forevar.
   12432         https://bugs.webkit.org/show_bug.cgi?id=28469
   12433 
   12434         EvalNodes don't destroyData() (delete their parser data) since they need to hold onto
   12435         their varStack.  Copy a list of variable onto EvalCodeBlock, and this can go away.
   12436 
   12437         * bytecode/CodeBlock.h:
   12438         (JSC::EvalCodeBlock::variable):
   12439         (JSC::EvalCodeBlock::numVariables):
   12440         (JSC::EvalCodeBlock::adoptVariables):
   12441         * bytecompiler/BytecodeGenerator.cpp:
   12442         (JSC::BytecodeGenerator::BytecodeGenerator):
   12443         * interpreter/Interpreter.cpp:
   12444         (JSC::Interpreter::execute):
   12445         * parser/Nodes.h:
   12446         * runtime/Executable.cpp:
   12447         (JSC::EvalExecutable::generateBytecode):
   12448         * runtime/Executable.h:
   12449 
   12450 2009-08-19  Jungshik Shin  <jshin (a] chromium.org>
   12451 
   12452         Reviewed by Darin Adler.
   12453 
   12454         http://bugs.webkit.org/show_bug.cgi?id=28441
   12455 
   12456         Fix a build issue with ICU 4.2 or later on Windows with Visual C++. 
   12457         Instead of defining all isXXX and toupper/tolower as 
   12458           WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h,
   12459         #define them to be different by prepending 'WTF_...ASCIIType_h' with
   12460         the originial names like 'toupper_WTF_...ASCIIType_h'. 
   12461 
   12462         * wtf/DisallowCType.h:
   12463 
   12464 2009-08-18  Oliver Hunt  <oliver (a] apple.com>
   12465 
   12466         Reviewed by Gavin Barraclough.
   12467 
   12468         Assigning a function to an object should always use the existing transition, even if the transition is not specialized
   12469         https://bugs.webkit.org/show_bug.cgi?id=28442
   12470 
   12471         Check for an unspecialized transition as an alternative to always failing if specialisation does not match.
   12472 
   12473         * runtime/Structure.cpp:
   12474         (JSC::Structure::addPropertyTransitionToExistingStructure):
   12475 
   12476 2009-08-18  Dirk Schulze  <krit (a] webkit.org>
   12477 
   12478         Reviewed by Oliver Hunt.
   12479 
   12480         Added additional getter to ByteArray with an unsigned char as return.
   12481         ByteArray can take unsigned char directly now.
   12482 
   12483         * wtf/ByteArray.h:
   12484         (WTF::ByteArray::set):
   12485         (WTF::ByteArray::get):
   12486 
   12487 2009-08-18  Peter Kasting  <pkasting (a] google.com>
   12488 
   12489         Reviewed by Eric Seidel.
   12490 
   12491         https://bugs.webkit.org/show_bug.cgi?id=28415
   12492         Set svn:eol-style CRLF on all .sln and .vcproj files that don't already
   12493         have it.
   12494 
   12495         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
   12496         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
   12497         
   12498 2009-08-18  Xan Lopez  <xlopez (a] igalia.com>
   12499 
   12500         Try to fix the GTK+ build.
   12501 
   12502         * GNUmakefile.am:
   12503 
   12504 2009-08-17  Gavin Barraclough  <barraclough (a] apple.com>
   12505 
   12506         Reviewed by Sam Weinig.
   12507 
   12508         No, silly runtime, AST nodes are not for you.
   12509 
   12510         We still use AST nodes (ScopeNodes, particularly FunctionBodyNodes) within
   12511         the runtime, which means that these nodes must be persisted outside of the
   12512         arena, contain both parser & runtime data, etc.  This is all a bit of a mess.
   12513 
   12514         Move functionality into a new FunctionExecutable class.
   12515 
   12516         * API/JSCallbackFunction.cpp:
   12517         * API/JSObjectRef.cpp:
   12518         * JavaScriptCore.exp:
   12519         * JavaScriptCore.xcodeproj/project.pbxproj:
   12520         * bytecode/CodeBlock.cpp:
   12521         (JSC::CodeBlock::CodeBlock):
   12522         (JSC::CodeBlock::markAggregate):
   12523         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
   12524         (JSC::CodeBlock::lineNumberForBytecodeOffset):
   12525         (JSC::CodeBlock::shrinkToFit):
   12526         * bytecode/CodeBlock.h:
   12527         (JSC::CodeBlock::getBytecodeIndex):
   12528         (JSC::CodeBlock::discardBytecode):
   12529         (JSC::CodeBlock::instructionCount):
   12530         (JSC::CodeBlock::getJITCode):
   12531         (JSC::CodeBlock::executablePool):
   12532         (JSC::CodeBlock::ownerExecutable):
   12533         (JSC::CodeBlock::extractExceptionInfo):
   12534         (JSC::CodeBlock::addFunctionDecl):
   12535         (JSC::CodeBlock::functionDecl):
   12536         (JSC::CodeBlock::numberOfFunctionDecls):
   12537         (JSC::CodeBlock::addFunctionExpr):
   12538         (JSC::CodeBlock::functionExpr):
   12539         (JSC::GlobalCodeBlock::GlobalCodeBlock):
   12540         (JSC::ProgramCodeBlock::ProgramCodeBlock):
   12541         (JSC::EvalCodeBlock::EvalCodeBlock):
   12542         (JSC::FunctionCodeBlock::FunctionCodeBlock):
   12543         (JSC::NativeCodeBlock::NativeCodeBlock):
   12544         * bytecode/EvalCodeCache.h:
   12545         * bytecode/SamplingTool.cpp:
   12546         (JSC::SamplingTool::doRun):
   12547         * bytecompiler/BytecodeGenerator.cpp:
   12548         (JSC::BytecodeGenerator::BytecodeGenerator):
   12549         (JSC::BytecodeGenerator::emitNewFunction):
   12550         (JSC::BytecodeGenerator::emitNewFunctionExpression):
   12551         * bytecompiler/BytecodeGenerator.h:
   12552         * debugger/Debugger.cpp:
   12553         (JSC::Debugger::recompileAllJSFunctions):
   12554         * interpreter/CachedCall.h:
   12555         (JSC::CachedCall::CachedCall):
   12556         * interpreter/CallFrameClosure.h:
   12557         * interpreter/Interpreter.cpp:
   12558         (JSC::Interpreter::unwindCallFrame):
   12559         (JSC::Interpreter::throwException):
   12560         (JSC::Interpreter::execute):
   12561         (JSC::Interpreter::prepareForRepeatCall):
   12562         (JSC::Interpreter::debug):
   12563         (JSC::Interpreter::privateExecute):
   12564         (JSC::Interpreter::retrieveLastCaller):
   12565         * interpreter/Interpreter.h:
   12566         * jit/JIT.cpp:
   12567         (JSC::JIT::privateCompile):
   12568         * jit/JIT.h:
   12569         (JSC::JIT::compile):
   12570         * jit/JITOpcodes.cpp:
   12571         (JSC::JIT::privateCompileCTIMachineTrampolines):
   12572         (JSC::JIT::emit_op_new_func):
   12573         (JSC::JIT::emit_op_new_func_exp):
   12574         * jit/JITStubs.cpp:
   12575         (JSC::DEFINE_STUB_FUNCTION):
   12576         * jit/JITStubs.h:
   12577         (JSC::):
   12578         * parser/Nodes.cpp:
   12579         (JSC::FunctionBodyNode::reparseDataIfNecessary):
   12580         * parser/Nodes.h:
   12581         (JSC::EvalNode::partialDestroyData):
   12582         * parser/Parser.h:
   12583         * profiler/ProfileGenerator.cpp:
   12584         * profiler/Profiler.cpp:
   12585         (JSC::Profiler::createCallIdentifier):
   12586         (JSC::createCallIdentifierFromFunctionImp):
   12587         * runtime/Arguments.h:
   12588         (JSC::Arguments::getArgumentsData):
   12589         (JSC::Arguments::Arguments):
   12590         (JSC::JSActivation::copyRegisters):
   12591         * runtime/ArrayPrototype.cpp:
   12592         (JSC::isNumericCompareFunction):
   12593         * runtime/CallData.h:
   12594         (JSC::):
   12595         * runtime/Collector.cpp:
   12596         (JSC::Heap::collect):
   12597         * runtime/ConstructData.h:
   12598         (JSC::):
   12599         * runtime/ExceptionHelpers.cpp:
   12600         (JSC::createUndefinedVariableError):
   12601         (JSC::createInvalidParamError):
   12602         (JSC::createNotAConstructorError):
   12603         (JSC::createNotAFunctionError):
   12604         (JSC::createNotAnObjectError):
   12605         * runtime/Executable.cpp: Added.
   12606         (JSC::EvalExecutable::generateBytecode):
   12607         (JSC::ProgramExecutable::generateBytecode):
   12608         (JSC::FunctionExecutable::generateBytecode):
   12609         (JSC::EvalExecutable::generateJITCode):
   12610         (JSC::ProgramExecutable::generateJITCode):
   12611         (JSC::FunctionExecutable::generateJITCode):
   12612         (JSC::FunctionExecutable::isHostFunction):
   12613         (JSC::FunctionExecutable::markAggregate):
   12614         (JSC::FunctionExecutable::reparseExceptionInfo):
   12615         (JSC::EvalExecutable::reparseExceptionInfo):
   12616         (JSC::FunctionExecutable::recompile):
   12617         (JSC::FunctionExecutable::FunctionExecutable):
   12618         * runtime/Executable.h:
   12619         (JSC::ExecutableBase::~ExecutableBase):
   12620         (JSC::ExecutableBase::ExecutableBase):
   12621         (JSC::ExecutableBase::source):
   12622         (JSC::ExecutableBase::sourceID):
   12623         (JSC::ExecutableBase::lastLine):
   12624         (JSC::ExecutableBase::usesEval):
   12625         (JSC::ExecutableBase::usesArguments):
   12626         (JSC::ExecutableBase::needsActivation):
   12627         (JSC::ExecutableBase::astNode):
   12628         (JSC::ExecutableBase::generatedJITCode):
   12629         (JSC::ExecutableBase::getExecutablePool):
   12630         (JSC::EvalExecutable::EvalExecutable):
   12631         (JSC::EvalExecutable::bytecode):
   12632         (JSC::EvalExecutable::varStack):
   12633         (JSC::EvalExecutable::evalNode):
   12634         (JSC::EvalExecutable::jitCode):
   12635         (JSC::ProgramExecutable::ProgramExecutable):
   12636         (JSC::ProgramExecutable::reparseExceptionInfo):
   12637         (JSC::ProgramExecutable::bytecode):
   12638         (JSC::ProgramExecutable::programNode):
   12639         (JSC::ProgramExecutable::jitCode):
   12640         (JSC::FunctionExecutable::FunctionExecutable):
   12641         (JSC::FunctionExecutable::name):
   12642         (JSC::FunctionExecutable::bytecode):
   12643         (JSC::FunctionExecutable::generatedBytecode):
   12644         (JSC::FunctionExecutable::usesEval):
   12645         (JSC::FunctionExecutable::usesArguments):
   12646         (JSC::FunctionExecutable::parameterCount):
   12647         (JSC::FunctionExecutable::paramString):
   12648         (JSC::FunctionExecutable::isGenerated):
   12649         (JSC::FunctionExecutable::body):
   12650         (JSC::FunctionExecutable::jitCode):
   12651         (JSC::FunctionExecutable::createNativeThunk):
   12652         * runtime/FunctionConstructor.cpp:
   12653         (JSC::constructFunction):
   12654         * runtime/FunctionPrototype.cpp:
   12655         (JSC::functionProtoFuncToString):
   12656         * runtime/JSActivation.cpp:
   12657         (JSC::JSActivation::JSActivation):
   12658         (JSC::JSActivation::markChildren):
   12659         (JSC::JSActivation::isDynamicScope):
   12660         (JSC::JSActivation::argumentsGetter):
   12661         * runtime/JSActivation.h:
   12662         (JSC::JSActivation::JSActivationData::JSActivationData):
   12663         * runtime/JSFunction.cpp:
   12664         (JSC::JSFunction::isHostFunction):
   12665         (JSC::JSFunction::JSFunction):
   12666         (JSC::JSFunction::~JSFunction):
   12667         (JSC::JSFunction::markChildren):
   12668         (JSC::JSFunction::getCallData):
   12669         (JSC::JSFunction::call):
   12670         (JSC::JSFunction::lengthGetter):
   12671         (JSC::JSFunction::getConstructData):
   12672         (JSC::JSFunction::construct):
   12673         * runtime/JSFunction.h:
   12674         (JSC::JSFunction::executable):
   12675         (JSC::FunctionExecutable::make):
   12676         * runtime/JSGlobalData.cpp:
   12677         (JSC::JSGlobalData::JSGlobalData):
   12678         (JSC::JSGlobalData::numericCompareFunction):
   12679         * runtime/JSGlobalData.h:
   12680 
   12681 2009-08-17  Mark Rowe  <mrowe (a] apple.com>
   12682 
   12683         Reviewed by Darin Adler.
   12684 
   12685         Fix 300,000+ leaks seen during the regression tests.
   12686 
   12687         EvalCodeCache::get was heap-allocating an EvalExecutable instance without adopting the initial reference.
   12688         While fixing this we noticed that EvalExecutable was a RefCounted type that was sometimes stack allocated.
   12689         To make this cleaner and to prevent clients from attempting to ref a stack-allocated instance, we move the
   12690         refcounting down to a new CacheableEvalExecutable class that derives from EvalExecutable. EvalCodeCache::get
   12691         now uses CacheableEvalExecutable::create and avoids the leak.
   12692 
   12693         * bytecode/EvalCodeCache.h:
   12694         (JSC::EvalCodeCache::get):
   12695         * interpreter/Interpreter.cpp:
   12696         (JSC::Interpreter::callEval):
   12697         * runtime/Executable.h:
   12698         (JSC::CacheableEvalExecutable::create):
   12699         (JSC::CacheableEvalExecutable::CacheableEvalExecutable):
   12700 
   12701 2009-08-17  Oliver Hunt  <oliver (a] apple.com>
   12702 
   12703         RS=Mark Rowe.
   12704 
   12705         REGRESSION (r47292): Prototype.js is broken by ES5 Arguments changes
   12706         https://bugs.webkit.org/show_bug.cgi?id=28341
   12707         <rdar://problem/7145615>
   12708 
   12709         Reverting r47292.  Alas Prototype.js breaks with Arguments inheriting
   12710         from Array as ES5 attempted.  Prototype.js defines $A in terms of a 
   12711         function it places on (among other global objects) the Array prototype,
   12712         thus breaking $A for arrays.
   12713 
   12714         * runtime/Arguments.h:
   12715         (JSC::Arguments::Arguments):
   12716         * runtime/JSGlobalObject.cpp:
   12717         (JSC::JSGlobalObject::reset):
   12718         (JSC::JSGlobalObject::markChildren):
   12719         * runtime/JSGlobalObject.h:
   12720         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
   12721         * runtime/ObjectPrototype.cpp:
   12722         (JSC::ObjectPrototype::ObjectPrototype):
   12723         * runtime/ObjectPrototype.h:
   12724         * tests/mozilla/ecma_3/Function/arguments-001.js:
   12725 
   12726 2009-08-17  Peter Kasting  <pkasting (a] google.com>
   12727 
   12728         Reviewed by Steve Falkenburg.
   12729 
   12730         https://bugs.webkit.org/show_bug.cgi?id=27323
   12731         Only add Cygwin to the path when it isn't already there.  This avoids
   12732         causing problems for people who purposefully have non-Cygwin versions of
   12733         executables like svn in front of the Cygwin ones in their paths.
   12734 
   12735         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
   12736         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
   12737         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
   12738         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
   12739         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
   12740 
   12741 2009-08-17  Xan Lopez  <xlopez (a] igalia.com>
   12742 
   12743         Reviewed by Mark Rowe.
   12744 
   12745         Fix build with FAST_MALLOC_MATCH_VALIDATION enabled.
   12746 
   12747         * wtf/FastMalloc.cpp:
   12748         (WTF::fastMalloc):
   12749         (WTF::fastCalloc):
   12750         (WTF::fastRealloc):
   12751 
   12752 2009-08-16  Holger Hans Peter Freyther  <zecke (a] selfish.org>
   12753 
   12754         Reviewed by Mark Rowe.
   12755 
   12756         Fix crash on ./ecma_2/RegExp/exec-002.js.
   12757         https://bugs.webkit.org/show_bug.cgi?id=28353
   12758 
   12759         Change the order of freeParenthesesDisjunctionContext and
   12760         popParenthesesDisjunctionContext on all call sites as the pop
   12761         method is accessing backTrack->lastContext which is the context
   12762         that is about to be freed.
   12763 
   12764         * yarr/RegexInterpreter.cpp:
   12765         (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
   12766         (JSC::Yarr::Interpreter::backtrackParentheses):
   12767 
   12768 2009-08-16  Holger Hans Peter Freyther  <zecke (a] selfish.org>
   12769 
   12770         Reviewed by Mark Rowe.
   12771 
   12772         https://bugs.webkit.org/show_bug.cgi?id=28352
   12773 
   12774         Fix coding style violations. Use m_ for C++ class members. Remove
   12775         trailing whitespace on empty lines.
   12776 
   12777         * yarr/RegexInterpreter.cpp:
   12778         (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext):
   12779         (JSC::Yarr::Interpreter::tryConsumeCharacter):
   12780         (JSC::Yarr::Interpreter::tryConsumeBackReference):
   12781         (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
   12782         (JSC::Yarr::Interpreter::backtrackParentheses):
   12783         (JSC::Yarr::ByteCompiler::ByteCompiler):
   12784         (JSC::Yarr::ByteCompiler::compile):
   12785         (JSC::Yarr::ByteCompiler::checkInput):
   12786         (JSC::Yarr::ByteCompiler::assertionBOL):
   12787         (JSC::Yarr::ByteCompiler::assertionEOL):
   12788         (JSC::Yarr::ByteCompiler::assertionWordBoundary):
   12789         (JSC::Yarr::ByteCompiler::atomPatternCharacter):
   12790         (JSC::Yarr::ByteCompiler::atomCharacterClass):
   12791         (JSC::Yarr::ByteCompiler::atomBackReference):
   12792         (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
   12793         (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
   12794         (JSC::Yarr::ByteCompiler::popParenthesesStack):
   12795         (JSC::Yarr::ByteCompiler::closeAlternative):
   12796         (JSC::Yarr::ByteCompiler::closeBodyAlternative):
   12797         (JSC::Yarr::ByteCompiler::atomParenthesesEnd):
   12798         (JSC::Yarr::ByteCompiler::regexBegin):
   12799         (JSC::Yarr::ByteCompiler::alterantiveBodyDisjunction):
   12800         (JSC::Yarr::ByteCompiler::alterantiveDisjunction):
   12801         (JSC::Yarr::ByteCompiler::emitDisjunction):
   12802 
   12803 2009-08-15  Mark Rowe  <mrowe (a] apple.com>
   12804 
   12805         Fix the build with JIT disabled.
   12806 
   12807         * runtime/Arguments.h: Only compile the jitCode method when the JIT is enabled.
   12808         * runtime/Executable.h: Include PrototypeFunction.h so the compiler knows what
   12809         NativeFunctionWrapper is when the JIT is disabled.
   12810 
   12811 2009-08-15  Adam Bergkvist  <adam.bergkvist (a] ericsson.com>
   12812 
   12813         Reviewed by Sam Weinig.
   12814 
   12815         Added ENABLE_EVENTSOURCE flag.
   12816         https://bugs.webkit.org/show_bug.cgi?id=14997
   12817 
   12818         * Configurations/FeatureDefines.xcconfig:
   12819 
   12820 2009-08-14  Gavin Barraclough  <barraclough (a] apple.com>
   12821 
   12822         * parser/Parser.h:
   12823         (JSC::EvalExecutable::parse):
   12824         (JSC::ProgramExecutable::parse):
   12825         * runtime/Executable.h:
   12826 
   12827 2009-08-14  Gavin Barraclough  <barraclough (a] apple.com>
   12828 
   12829         Reviewed by Oliver Hunt.
   12830 
   12831         Remove AST nodes from use within the Runtime (outside of parsing), stage 1
   12832         https://bugs.webkit.org/show_bug.cgi?id=28330
   12833 
   12834         Remove the EvalNode and ProgramNode from use in the runtime.  They still exist
   12835         after this patch, but are hidden behind EvalExecutable and FunctionExecutable,
   12836         and are also still reachable behind CodeBlock::m_ownerNode.
   12837 
   12838         The next step will be to beat back FunctionBodyNode in the same fashion.
   12839         Then remove the usage via CodeBlock, then only construct these nodes only on
   12840         demand during bytecode generation.
   12841 
   12842         * JavaScriptCore.xcodeproj/project.pbxproj:
   12843         * bytecode/CodeBlock.h:
   12844         (JSC::GlobalCodeBlock::GlobalCodeBlock):
   12845         (JSC::GlobalCodeBlock::~GlobalCodeBlock):
   12846         (JSC::ProgramCodeBlock::ProgramCodeBlock):
   12847         (JSC::EvalCodeBlock::EvalCodeBlock):
   12848         (JSC::FunctionCodeBlock::FunctionCodeBlock):
   12849         (JSC::NativeCodeBlock::NativeCodeBlock):
   12850         * bytecode/EvalCodeCache.h:
   12851         (JSC::EvalCodeCache::get):
   12852         * debugger/Debugger.cpp:
   12853         (JSC::evaluateInGlobalCallFrame):
   12854         * debugger/DebuggerCallFrame.cpp:
   12855         (JSC::DebuggerCallFrame::evaluate):
   12856         * interpreter/Interpreter.cpp:
   12857         (JSC::Interpreter::callEval):
   12858         (JSC::Interpreter::execute):
   12859         * interpreter/Interpreter.h:
   12860         * parser/Nodes.cpp:
   12861         (JSC::FunctionBodyNode::createNativeThunk):
   12862         (JSC::FunctionBodyNode::generateBytecode):
   12863         (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse):
   12864         * parser/Parser.h:
   12865         (JSC::Parser::parse):
   12866         (JSC::Parser::reparse):
   12867         (JSC::Parser::parseFunctionFromGlobalCode):
   12868         (JSC::::parse):
   12869         * runtime/Completion.cpp:
   12870         (JSC::checkSyntax):
   12871         (JSC::evaluate):
   12872         * runtime/Error.cpp:
   12873         (JSC::throwError):
   12874         * runtime/Error.h:
   12875         * runtime/Executable.h: Added.
   12876         (JSC::TemplateExecutable::TemplateExecutable):
   12877         (JSC::TemplateExecutable::markAggregate):
   12878         (JSC::TemplateExecutable::sourceURL):
   12879         (JSC::TemplateExecutable::lineNo):
   12880         (JSC::TemplateExecutable::bytecode):
   12881         (JSC::TemplateExecutable::jitCode):
   12882         (JSC::EvalExecutable::EvalExecutable):
   12883         (JSC::ProgramExecutable::ProgramExecutable):
   12884         * runtime/FunctionConstructor.cpp:
   12885         (JSC::constructFunction):
   12886         * runtime/FunctionConstructor.h:
   12887         * runtime/JSGlobalData.cpp:
   12888         (JSC::JSGlobalData::numericCompareFunction):
   12889         * runtime/JSGlobalObject.cpp:
   12890         (JSC::JSGlobalObject::~JSGlobalObject):
   12891         (JSC::JSGlobalObject::markChildren):
   12892         * runtime/JSGlobalObject.h:
   12893         (JSC::JSGlobalObject::codeBlocks):
   12894         * runtime/JSGlobalObjectFunctions.cpp:
   12895         (JSC::globalFuncEval):
   12896 
   12897 2009-08-14  Darin Adler  <darin (a] apple.com>
   12898 
   12899         Reviewed by Sam Weinig.
   12900 
   12901         Rename the confusing isObject(<class>) to inherits(<class>).
   12902         It still works on non-objects, returning false.
   12903 
   12904         * runtime/ArrayConstructor.cpp:
   12905         (JSC::arrayConstructorIsArray): Removed unneeded isObject call
   12906         and updated remaining isObject call to new name, inherits.
   12907 
   12908         * runtime/JSCell.h: Renamed isObject(<class>) to inherits(<class>)
   12909         but more importantly, made it non-virtual (it was already inline)
   12910         so it is now as fast as JSObject::inherits was.
   12911 
   12912         * runtime/JSObject.h: Removed inherits function since the one
   12913         in the base class is fine as-is. Also made various JSCell functions
   12914         that should not be called on JSObject uncallable by making them
   12915         both private and not implemented.
   12916         (JSC::JSCell::inherits): Updated name.
   12917         (JSC::JSValue::inherits): Ditto.
   12918 
   12919         * debugger/Debugger.cpp:
   12920         (JSC::Debugger::recompileAllJSFunctions):
   12921         * interpreter/Interpreter.cpp:
   12922         (JSC::Interpreter::unwindCallFrame):
   12923         * runtime/ArrayPrototype.cpp:
   12924         (JSC::arrayProtoFuncToString):
   12925         (JSC::arrayProtoFuncToLocaleString):
   12926         (JSC::arrayProtoFuncConcat):
   12927         * runtime/BooleanPrototype.cpp:
   12928         (JSC::booleanProtoFuncToString):
   12929         (JSC::booleanProtoFuncValueOf):
   12930         * runtime/DateConstructor.cpp:
   12931         (JSC::constructDate):
   12932         * runtime/DatePrototype.cpp:
   12933         (JSC::dateProtoFuncToString):
   12934         (JSC::dateProtoFuncToUTCString):
   12935         (JSC::dateProtoFuncToISOString):
   12936         (JSC::dateProtoFuncToDateString):
   12937         (JSC::dateProtoFuncToTimeString):
   12938         (JSC::dateProtoFuncToLocaleString):
   12939         (JSC::dateProtoFuncToLocaleDateString):
   12940         (JSC::dateProtoFuncToLocaleTimeString):
   12941         (JSC::dateProtoFuncGetTime):
   12942         (JSC::dateProtoFuncGetFullYear):
   12943         (JSC::dateProtoFuncGetUTCFullYear):
   12944         (JSC::dateProtoFuncToGMTString):
   12945         (JSC::dateProtoFuncGetMonth):
   12946         (JSC::dateProtoFuncGetUTCMonth):
   12947         (JSC::dateProtoFuncGetDate):
   12948         (JSC::dateProtoFuncGetUTCDate):
   12949         (JSC::dateProtoFuncGetDay):
   12950         (JSC::dateProtoFuncGetUTCDay):
   12951         (JSC::dateProtoFuncGetHours):
   12952         (JSC::dateProtoFuncGetUTCHours):
   12953         (JSC::dateProtoFuncGetMinutes):
   12954         (JSC::dateProtoFuncGetUTCMinutes):
   12955         (JSC::dateProtoFuncGetSeconds):
   12956         (JSC::dateProtoFuncGetUTCSeconds):
   12957         (JSC::dateProtoFuncGetMilliSeconds):
   12958         (JSC::dateProtoFuncGetUTCMilliseconds):
   12959         (JSC::dateProtoFuncGetTimezoneOffset):
   12960         (JSC::dateProtoFuncSetTime):
   12961         (JSC::setNewValueFromTimeArgs):
   12962         (JSC::setNewValueFromDateArgs):
   12963         (JSC::dateProtoFuncSetYear):
   12964         (JSC::dateProtoFuncGetYear):
   12965         * runtime/FunctionPrototype.cpp:
   12966         (JSC::functionProtoFuncToString):
   12967         * runtime/JSActivation.cpp:
   12968         (JSC::JSActivation::argumentsGetter):
   12969         * runtime/JSValue.h:
   12970         * runtime/RegExpConstructor.cpp:
   12971         (JSC::constructRegExp):
   12972         * runtime/RegExpPrototype.cpp:
   12973         (JSC::regExpProtoFuncTest):
   12974         (JSC::regExpProtoFuncExec):
   12975         (JSC::regExpProtoFuncCompile):
   12976         (JSC::regExpProtoFuncToString):
   12977         * runtime/ScopeChain.cpp:
   12978         (JSC::ScopeChain::localDepth):
   12979         * runtime/StringPrototype.cpp:
   12980         (JSC::stringProtoFuncReplace):
   12981         (JSC::stringProtoFuncToString):
   12982         (JSC::stringProtoFuncMatch):
   12983         (JSC::stringProtoFuncSearch):
   12984         (JSC::stringProtoFuncSplit):
   12985         Updated to new name, inherits, from old name, isObject.
   12986 
   12987 2009-07-31  Harald Fernengel  <harald.fernengel (a] nokia.com>
   12988 
   12989         Reviewed by Simon Hausmann.
   12990 
   12991         Adding QNX as a platform. Currently only tested with Qt.
   12992 
   12993         https://bugs.webkit.org/show_bug.cgi?id=27885
   12994 
   12995         * JavaScriptCore/runtime/Collector.cpp: Added retrieving of stack base
   12996           since QNX doesn't have the pthread _nt functions
   12997         * JavaScriptCore/wtf/Platform.h: Added WTF_PLATFORM_QNX and corresponding
   12998           defines
   12999         * WebCore/bridge/npapi.h: Build fix for missing typedefs on QNX
   13000 
   13001 2009-08-14  Gabor Loki  <loki (a] inf.u-szeged.hu>
   13002 
   13003         Reviewed by Simon Hausmann.
   13004 
   13005         Currently generic ARM and ARMv7 platforms work only with JSVALUE32
   13006         https://bugs.webkit.org/show_bug.cgi?id=28300
   13007 
   13008         * wtf/Platform.h:
   13009 
   13010 2009-08-14  Gabor Loki  <loki (a] inf.u-szeged.hu>
   13011 
   13012         Reviewed by Simon Hausmann.
   13013 
   13014         Enable JIT on ARM for QT by default
   13015         https://bugs.webkit.org/show_bug.cgi?id=28259
   13016 
   13017         * wtf/Platform.h:
   13018 
   13019 2009-08-14  Gabor Loki  <loki (a] inf.u-szeged.hu>
   13020 
   13021         Reviewed by Simon Hausmann.
   13022 
   13023         Enable YARR_JIT on ARM for QT by default
   13024         https://bugs.webkit.org/show_bug.cgi?id=28259
   13025 
   13026         * wtf/Platform.h:
   13027 
   13028 2009-08-14  Oliver Hunt  <oliver (a] apple.com>
   13029 
   13030         Reviewed by Gavin Barraclough.
   13031 
   13032         [ES5] Arguments object should inherit from Array
   13033         https://bugs.webkit.org/show_bug.cgi?id=28298
   13034 
   13035         Make the Arguments object conform to the behaviour specified in ES5.
   13036         The simple portion of this is to make Arguments use Array.prototype
   13037         as its prototype rather than Object.prototype.
   13038 
   13039         The spec then requires us to set instance.constructor to the pristine
   13040         Object constructor, and instance.toString and instance.toLocaleString
   13041         to the pristine versions from Object.prototype.  To do this we now 
   13042         make the ObjectPrototype constructor return its toString and
   13043         toLocaleString functions (similar to the call and apply functions
   13044         from FunctionPrototype).
   13045 
   13046         Oddly enough this reports itself as a slight win, but given the code
   13047         isn't hit in the tests that claim to have improved I put this down to
   13048         code motion.
   13049 
   13050         * runtime/Arguments.h:
   13051         (JSC::Arguments::Arguments):
   13052         (JSC::Arguments::initializeStandardProperties):
   13053         * runtime/JSGlobalObject.cpp:
   13054         (JSC::JSGlobalObject::reset):
   13055         (JSC::JSGlobalObject::markChildren):
   13056         * runtime/JSGlobalObject.h:
   13057         (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
   13058         (JSC::JSGlobalObject::objectConstructor):
   13059         (JSC::JSGlobalObject::objectToStringFunction):
   13060         (JSC::JSGlobalObject::objectToLocaleStringFunction):
   13061         * runtime/ObjectPrototype.cpp:
   13062         (JSC::ObjectPrototype::ObjectPrototype):
   13063         * runtime/ObjectPrototype.h:
   13064         * tests/mozilla/ecma_3/Function/arguments-001.js:
   13065           Update test to new es5 behaviour
   13066 
   13067 2009-08-14  Oliver Hunt  <oliver (a] apple.com>
   13068 
   13069         Remove MarkStack::drain from the JSC exports file
   13070 
   13071         MarkStack::drain is now marked inline, the including it in the exports file
   13072         produces an ld warning
   13073 
   13074         * JavaScriptCore.exp:
   13075 
   13076 2009-08-13  Sam Weinig  <sam (a] webkit.org>
   13077 
   13078         Reviewed by Oliver Hunt.
   13079 
   13080         Remove accidentally left in debugging statement.
   13081 
   13082         * runtime/JSArray.h:
   13083         (JSC::MarkStack::drain):
   13084 
   13085 2009-08-13  Oliver Hunt  <oliver (a] apple.com>
   13086 
   13087         Reviewed by Maciej Stachowiak.
   13088 
   13089         [ES5] Implement Array.isArray
   13090         https://bugs.webkit.org/show_bug.cgi?id=28296
   13091 
   13092         Add support for Array.isArray to the Array constructor
   13093 
   13094         * runtime/ArrayConstructor.cpp:
   13095         (JSC::ArrayConstructor::ArrayConstructor):
   13096         (JSC::arrayConstructorIsArray):
   13097         * runtime/ArrayConstructor.h:
   13098         * runtime/CommonIdentifiers.h:
   13099         * runtime/JSArray.h:
   13100         (JSC::MarkStack::drain):
   13101         * runtime/JSGlobalObject.cpp:
   13102         (JSC::JSGlobalObject::reset):
   13103 
   13104 2009-08-13  Oliver Hunt  <oliver (a] apple.com>
   13105 
   13106         Reviewed by NOBODY (Buildfix).
   13107 
   13108         Attempt to fix windows build
   13109 
   13110         * runtime/Collector.cpp:
   13111 
   13112 2009-08-13  Oliver Hunt  <oliver (a] apple.com>
   13113 
   13114         Reviewed by Maciej Stachowiak.
   13115 
   13116         Devirtualise marking
   13117         https://bugs.webkit.org/show_bug.cgi?id=28294
   13118 
   13119         Add a bit to TypeInfo to indicate that an object uses the standard
   13120         JSObject::markChildren method.  This allows us to devirtualise marking
   13121         of most objects (though a branch is still needed).  We also add a branch
   13122         to identify arrays thus devirtualising marking in that case as well.
   13123 
   13124         In order to make the best use of this devirtualisation I've also reworked
   13125         the MarkStack::drain() logic to make the iteration more efficient.
   13126 
   13127         * API/JSCallbackConstructor.h:
   13128         (JSC::JSCallbackConstructor::createStructure):
   13129         * API/JSCallbackFunction.h:
   13130         (JSC::JSCallbackFunction::createStructure):
   13131         * JavaScriptCore.exp:
   13132         * runtime/BooleanObject.h:
   13133         (JSC::BooleanObject::createStructure):
   13134         * runtime/FunctionPrototype.h:
   13135         (JSC::FunctionPrototype::createStructure):
   13136         * runtime/InternalFunction.h:
   13137         (JSC::InternalFunction::createStructure):
   13138         * runtime/JSAPIValueWrapper.h:
   13139         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
   13140         * runtime/JSArray.cpp:
   13141         (JSC::JSArray::markChildren):
   13142         * runtime/JSArray.h:
   13143         (JSC::JSArray::markChildrenDirect):
   13144         (JSC::MarkStack::drain):
   13145         * runtime/JSByteArray.cpp:
   13146         (JSC::JSByteArray::createStructure):
   13147         * runtime/JSCell.h:
   13148         (JSC::MarkStack::append):
   13149         * runtime/JSGlobalData.cpp:
   13150         (JSC::JSGlobalData::JSGlobalData):
   13151         * runtime/JSNumberCell.h:
   13152         (JSC::JSNumberCell::createStructure):
   13153         * runtime/JSONObject.h:
   13154         (JSC::JSONObject::createStructure):
   13155         * runtime/JSObject.cpp:
   13156         (JSC::JSObject::markChildren):
   13157         * runtime/JSObject.h:
   13158         (JSC::JSObject::markChildrenDirect):
   13159         (JSC::JSObject::createStructure):
   13160         * runtime/JSString.h:
   13161         (JSC::JSString::createStructure):
   13162         * runtime/JSType.h:
   13163         (JSC::):
   13164         * runtime/MarkStack.h:
   13165         (JSC::MarkStack::MarkStack):
   13166         (JSC::MarkStack::MarkSet::MarkSet):
   13167         (JSC::MarkStack::MarkStackArray::last):
   13168         * runtime/MathObject.h:
   13169         (JSC::MathObject::createStructure):
   13170         * runtime/NumberConstructor.h:
   13171         (JSC::NumberConstructor::createStructure):
   13172         * runtime/NumberObject.h:
   13173         (JSC::NumberObject::createStructure):
   13174         * runtime/RegExpConstructor.h:
   13175         (JSC::RegExpConstructor::createStructure):
   13176         * runtime/RegExpObject.h:
   13177         (JSC::RegExpObject::createStructure):
   13178         * runtime/StringObjectThatMasqueradesAsUndefined.h:
   13179         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
   13180         * runtime/TypeInfo.h:
   13181         (JSC::TypeInfo::hasDefaultMark):
   13182 
   13183 2009-08-13  Darin Adler  <darin (a] apple.com>
   13184 
   13185         Reviewed by Mark Rowe.
   13186 
   13187         Some small bits of housekeeping.
   13188 
   13189         * JavaScriptCore.xcodeproj/project.pbxproj: Make Parser.h
   13190         project instead of private. Remove JSONObject.lut.h.
   13191 
   13192         * assembler/ARMAssembler.h: Remove unneeded WTF prefix.
   13193         * assembler/AssemblerBufferWithConstantPool.h: Ditto.
   13194         * bytecompiler/BytecodeGenerator.h: Ditto.
   13195 
   13196         * wtf/SegmentedVector.h: Add a "using" statement as we do
   13197         with the other WTF headers.
   13198 
   13199 2009-08-13  Darin Adler  <darin (a] apple.com>
   13200 
   13201         Fix Tiger build.
   13202 
   13203         * parser/Grammar.y: Use a template function so we can compile
   13204         setStatementLocation even if it comes before YYLTYPE is defined.
   13205 
   13206 2009-08-13  Darin Adler  <darin (a] apple.com>
   13207 
   13208         Reviewed by George Staikos.
   13209 
   13210         Too much use of void* in Grammar.y
   13211         https://bugs.webkit.org/show_bug.cgi?id=28287
   13212 
   13213         * parser/Grammar.y: Changed all the helper functions to
   13214         take a JSGlobalData* instead of a void*. A couple formatting
   13215         tweaks that I missed when breaking this into pieces.
   13216 
   13217 2009-08-13  Darin Adler  <darin (a] apple.com>
   13218 
   13219         Reviewed by George Staikos.
   13220 
   13221         Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
   13222 
   13223         * parser/Grammar.y: Reduced and sorted includes. Tweaked comment
   13224         format. Marked a few more functions inline.
   13225 
   13226 2009-08-13  Darin Adler  <darin (a] apple.com>
   13227 
   13228         Reviewed by George Staikos.
   13229 
   13230         Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
   13231 
   13232         * parser/Grammar.y: Pass the number to the PropertyNode instead of
   13233         first turning it into an Identifier.
   13234 
   13235         * parser/NodeConstructors.h:
   13236         (JSC::PropertyNode::PropertyNode): Add an overload that takes a double
   13237         so the code to convert to a string can be here instead of Grammar.y.
   13238         * parser/Nodes.h: Ditto.
   13239 
   13240 2009-08-13  Darin Adler  <darin (a] apple.com>
   13241 
   13242         Reviewed by George Staikos.
   13243 
   13244         Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
   13245 
   13246         * parser/Grammar.y: Eliminate the DBG macro.
   13247 
   13248 2009-08-13  Darin Adler  <darin (a] apple.com>
   13249 
   13250         Reviewed by George Staikos.
   13251 
   13252         Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
   13253 
   13254         * parser/Grammar.y: Eliminate the SET_EXCEPTION_LOCATION macro.
   13255 
   13256 2009-08-13  Darin Adler  <darin (a] apple.com>
   13257 
   13258         Reviewed by George Staikos.
   13259 
   13260         George asked me to break the patch from
   13261         https://bugs.webkit.org/show_bug.cgi?id=28287
   13262         into smaller pieces and land it in stages.
   13263 
   13264         * parser/Grammar.y: Eliminate the LEXER macro.
   13265 
   13266 2009-08-13  Mark Rowe  <mrowe (a] apple.com>
   13267 
   13268         Try some more to fix the Windows build.
   13269 
   13270         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol.
   13271         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto.
   13272 
   13273 2009-08-13  Mark Rowe  <mrowe (a] apple.com>
   13274 
   13275         Try and fix the Windows build.
   13276 
   13277         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol.
   13278         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto.
   13279 
   13280 2009-08-13  Darin Adler  <darin (a] apple.com>
   13281 
   13282         Reviewed by David Levin.
   13283 
   13284         JavaScriptCore tweaks to get ready for the parser arena
   13285         https://bugs.webkit.org/show_bug.cgi?id=28243
   13286 
   13287         Eliminate dependencies on Nodes.h outside JavaScriptCore,
   13288         and cut down on them inside JavaScriptCore.
   13289 
   13290         Change regular expression parsing to use identifiers as
   13291         with other strings we parse.
   13292 
   13293         Fix a couple things that are needed to use const Identifier
   13294         more, which will be part of the parser arena work.
   13295 
   13296         * JavaScriptCore.exp: Resorted and updated.
   13297 
   13298         * JavaScriptCore.xcodeproj/project.pbxproj: Changed
   13299         CollectorHeapIterator.h to be project-internal.
   13300 
   13301         * bytecompiler/BytecodeGenerator.cpp:
   13302         (JSC::BytecodeGenerator::emitPushNewScope): Added const.
   13303         * bytecompiler/BytecodeGenerator.h: Ditto.
   13304 
   13305         * debugger/Debugger.cpp:
   13306         (JSC::Debugger::recompileAllJSFunctions): Moved this function
   13307         here from WebCore. Here is better since it uses so many internals.
   13308         Removed unimportant optimization for the no listener case.
   13309         * debugger/Debugger.h: Ditto. Also removed unneeded include
   13310         and tweaked formatting and comments.
   13311 
   13312         * debugger/DebuggerCallFrame.cpp:
   13313         (JSC::DebuggerCallFrame::functionName): Call asFunction instead
   13314         of doing the unchecked static_cast.
   13315         (JSC::DebuggerCallFrame::calculatedFunctionName): Ditto.
   13316 
   13317         * jit/JITStubs.cpp:
   13318         (JSC::op_call_JSFunction): Call isHostFunction on the body rather
   13319         than on the JSFunction.
   13320         (JSC::vm_lazyLinkCall): Ditto.
   13321         (JSC::op_construct_JSConstruct): Ditto.
   13322 
   13323         * parser/Grammar.y: Changed callers to use new scanRegExp with
   13324         out arguments instead of relying on state in the Lexer. And
   13325         callers that just want to skip a regular expression to use
   13326         skipRegExp.
   13327 
   13328         * parser/Lexer.cpp:
   13329         (JSC::Lexer::scanRegExp): Changed to use out arguments, and to
   13330         add a prefix argument so we can add in the "=" character as needed.
   13331         Also rewrote to streamline the logic a bit inspired by suggestions
   13332         by David Levin.
   13333         (JSC::Lexer::skipRegExp): Added. Version of the function above that
   13334         does not actually put the regular expression into a string.
   13335         (JSC::Lexer::clear): Removed code to clear m_pattern and m_flags.
   13336         * parser/Lexer.h: Changed scanRegExp to have out arguments. Added
   13337         skipRegExp. Eliminated pattern, flags, m_pattern, and m_flags.
   13338 
   13339         * parser/NodeConstructors.h:
   13340         (JSC::RegExpNode::RegExpNode): Changed to take const Identifier&.
   13341         * parser/Nodes.cpp:
   13342         (JSC::RegExpNode::emitBytecode): Changed since m_pattern and
   13343         m_flags are now Identifier instead of UString.
   13344         (JSC::FunctionBodyNode::make): Moved this function here instead
   13345         of putting it in the JSFunction.h header.
   13346         * parser/Nodes.h: Changed RegExpNode to use Identifier.
   13347 
   13348         * profiler/Profiler.cpp:
   13349         (JSC::Profiler::createCallIdentifier): Changed to use isHostFunction
   13350         on the body instead of on the JSFunction object.
   13351         * runtime/FunctionPrototype.cpp:
   13352         (JSC::functionProtoFuncToString): Ditto.
   13353 
   13354         * runtime/JSFunction.cpp:
   13355         (JSC::JSFunction::isHostFunction): Moved here from header.
   13356         (JSC::JSFunction::isHostFunctionNonInline): Added.
   13357         (JSC::JSFunction::JSFunction): Removed unneeded initialization of
   13358         m_body to 0.
   13359         (JSC::JSFunction::setBody): Moved here from header.
   13360 
   13361         * runtime/JSFunction.h: Removed unneeded includes. Moved private
   13362         constructor down to the private section. Made virtual functions
   13363         private. Removed unneeded overload of setBody and moved the body
   13364         of the function into the .cpp file. Changed assertions to use
   13365         the non-inline version of isHostFunction.
   13366 
   13367         * runtime/PropertySlot.cpp:
   13368         (JSC::PropertySlot::functionGetter): Use asFunction instead
   13369         of doing the unchecked static_cast.
   13370 
   13371         * wtf/SegmentedVector.h:
   13372         (WTF::SegmentedVector::isEmpty): Added.
   13373 
   13374 2009-08-13  Mark Rowe  <mrowe (a] apple.com>
   13375 
   13376         Rubber-stamped by Darin Adler.
   13377 
   13378         Use the version of operator new that takes a JSGlobalData when allocating FuncDeclNode and FuncExprNode
   13379         from within the grammar to prevent these nodes from being leaked.
   13380 
   13381         * parser/Grammar.y:
   13382 
   13383 2009-08-13  Simon Hausmann  <simon.hausmann (a] nokia.com>
   13384 
   13385         Reviewed by Ariya Hidayat.
   13386 
   13387         Remove the special-case for Qt wrt JSVALUE_32 introduced in
   13388         r46709. It must've been a dependency issue on the bot, as
   13389         after a manual build all the tests pass on amd64 and ia32.
   13390 
   13391         * wtf/Platform.h:
   13392 
   13393 2009-08-12  Gabor Loki  <loki (a] inf.u-szeged.hu>
   13394 
   13395         Reviewed by Gavin Barraclough.
   13396 
   13397         Add optimize call and property access support for ARM JIT.
   13398         https://bugs.webkit.org/show_bug.cgi?id=24986
   13399 
   13400         For tightly coupled sequences the BEGIN_UNINTERRUPTED_SEQUENCE and
   13401         END_UNINTERRUPTED_SEQUENCE macros have been introduced which ensure
   13402         space for instructions and constants of the named sequence. This
   13403         method is vital for those architecture which are using constant pool.
   13404 
   13405         The 'latePatch' method - which was linked to JmpSrc - is replaced with
   13406         a port specific solution (each calls are marked to place their address
   13407         on the constant pool).
   13408 
   13409         * assembler/ARMAssembler.cpp:
   13410         (JSC::ARMAssembler::linkBranch):
   13411         (JSC::ARMAssembler::executableCopy): Add extra align for constant pool.
   13412         * assembler/ARMAssembler.h:
   13413         (JSC::ARMAssembler::JmpSrc::JmpSrc):
   13414         (JSC::ARMAssembler::sizeOfConstantPool):
   13415         (JSC::ARMAssembler::jmp):
   13416         (JSC::ARMAssembler::linkCall):
   13417         * assembler/ARMv7Assembler.h:
   13418         * assembler/AbstractMacroAssembler.h:
   13419         * assembler/AssemblerBufferWithConstantPool.h:
   13420         (JSC::AssemblerBufferWithConstantPool::flushIfNoSpaceFor): Fix the
   13421         computation of the remaining space.
   13422         * assembler/MacroAssemblerARM.h:
   13423         (JSC::MacroAssemblerARM::branch32):
   13424         (JSC::MacroAssemblerARM::nearCall):
   13425         (JSC::MacroAssemblerARM::call):
   13426         (JSC::MacroAssemblerARM::branchPtrWithPatch):
   13427         (JSC::MacroAssemblerARM::ensureSpace):
   13428         (JSC::MacroAssemblerARM::sizeOfConstantPool):
   13429         (JSC::MacroAssemblerARM::prepareCall):
   13430         * assembler/X86Assembler.h:
   13431         * jit/JIT.h:
   13432         * jit/JITCall.cpp:
   13433         (JSC::JIT::compileOpCall):
   13434         * jit/JITInlineMethods.h:
   13435         (JSC::JIT::beginUninterruptedSequence):
   13436         (JSC::JIT::endUninterruptedSequence):
   13437         * jit/JITPropertyAccess.cpp:
   13438         (JSC::JIT::emit_op_method_check):
   13439         (JSC::JIT::compileGetByIdHotPath):
   13440         (JSC::JIT::compileGetByIdSlowCase):
   13441         (JSC::JIT::emit_op_put_by_id):
   13442 
   13443 2009-08-12  Gavin Barraclough  <barraclough (a] apple.com>
   13444 
   13445         Rubber Stamped by Dave Kilzer.
   13446 
   13447         Disable WTF_USE_JSVALUE32_64 on iPhone for now (support not yet added for ARMv7).
   13448 
   13449         * wtf/Platform.h:
   13450 
   13451 2009-08-12  Gavin Barraclough  <barraclough (a] apple.com>
   13452 
   13453         Reviewed by Maciej Stachoviak.
   13454 
   13455         Ooops - moved code that had been accidentally added to op_new_func instead of
   13456         op_new_func_exp, to where it shoulds be.
   13457 
   13458         * interpreter/Interpreter.cpp:
   13459         (JSC::Interpreter::privateExecute):
   13460         * wtf/Platform.h:
   13461 
   13462 2009-08-12  Ada Chan  <adachan (a] apple.com>
   13463 
   13464         Added workaround for the limitation that VirtualFree with MEM_RELEASE
   13465         can only accept the base address returned by VirtualAlloc when the region
   13466         was reserved and it can only free the entire region, and not a part of it.
   13467 
   13468         Reviewed by Oliver Hunt.
   13469 
   13470         * runtime/MarkStack.h:
   13471         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
   13472         * runtime/MarkStackWin.cpp:
   13473         (JSC::MarkStack::releaseStack):
   13474 
   13475 2009-08-12  Balazs Kelemen  <kelemen.balazs.3 (a] stud.u-szeged.hu>
   13476 
   13477         Reviewed by Ariya Hidayat.
   13478 
   13479         Build fix: use std::numeric_limits<long long>::min() instead of LLONG_MIN
   13480         since LLONG_MIN is not defined in standard c++.
   13481 
   13482         * runtime/UString.cpp:
   13483         (JSC::UString::from):
   13484 
   13485 2009-08-12  Benjamin Otte  <otte (a] gnome.org>
   13486 
   13487         Reviewed by Jan Alonzo.
   13488 
   13489         Buildfix for Gtk platforms debug builds.
   13490 
   13491         * GNUmakefile.am: Choose MarkStackPosix.cpp or MarkStackWin.cpp
   13492         depending on platform.
   13493 
   13494 2009-08-12  Simon Hausmann  <simon.hausmann (a] nokia.com>
   13495 
   13496         Prospective build fix for Mac and 32-bit Windows.
   13497 
   13498         * runtime/UString.cpp: Include wtf/StringExtras.h for snprintf.
   13499         (JSC::UString::from): Use %lld instead of %I64d for snprintf
   13500         on non-windows platforms.
   13501 
   13502 2009-08-12  Prasanth Ullattil  <prasanth.ullattil (a] nokia.com>
   13503 
   13504         Reviewed by Simon Hausmann.
   13505 
   13506         Fix compile error on 64Bit Windows, when UString::from
   13507         is called with an intptr_t.
   13508 
   13509         Added new UString::From overload with long long parameter.
   13510 
   13511         Thanks to Holger for the long long idea.
   13512 
   13513         * runtime/UString.cpp:
   13514         (JSC::UString::from):
   13515         * runtime/UString.h:
   13516 
   13517 2009-08-11  Oliver Hunt  <oliver (a] apple.com>
   13518 
   13519         Reviewed by Mark Rowe.
   13520 
   13521         Minor style fixes.
   13522 
   13523         * runtime/UString.h:
   13524         (JSC::UString::Rep::createEmptyBuffer):
   13525         * wtf/FastMalloc.h:
   13526         (WTF::TryMallocReturnValue::getValue):
   13527 
   13528 2009-08-11  Oliver Hunt  <oliver (a] apple.com>
   13529 
   13530         Reviewed by Gavin Barraclough.
   13531 
   13532         Make it harder to misuse try* allocation routines
   13533         https://bugs.webkit.org/show_bug.cgi?id=27469
   13534 
   13535         Jump through a few hoops to make it much harder to accidentally
   13536         miss null-checking of values returned by the try-* allocation
   13537         routines.
   13538 
   13539         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   13540         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   13541         * JavaScriptCore.xcodeproj/project.pbxproj:
   13542         * runtime/JSArray.cpp:
   13543         (JSC::JSArray::putSlowCase):
   13544         (JSC::JSArray::increaseVectorLength):
   13545         * runtime/StringPrototype.cpp:
   13546         (JSC::stringProtoFuncFontsize):
   13547         (JSC::stringProtoFuncLink):
   13548         * runtime/UString.cpp:
   13549         (JSC::allocChars):
   13550         (JSC::reallocChars):
   13551         (JSC::expandCapacity):
   13552         (JSC::UString::Rep::reserveCapacity):
   13553         (JSC::UString::expandPreCapacity):
   13554         (JSC::createRep):
   13555         (JSC::concatenate):
   13556         (JSC::UString::spliceSubstringsWithSeparators):
   13557         (JSC::UString::replaceRange):
   13558         (JSC::UString::append):
   13559         (JSC::UString::operator=):
   13560         * runtime/UString.h:
   13561         (JSC::UString::Rep::createEmptyBuffer):
   13562         * wtf/FastMalloc.cpp:
   13563         (WTF::tryFastZeroedMalloc):
   13564         (WTF::tryFastMalloc):
   13565         (WTF::tryFastCalloc):
   13566         (WTF::tryFastRealloc):
   13567         (WTF::TCMallocStats::tryFastMalloc):
   13568         (WTF::TCMallocStats::tryFastCalloc):
   13569         (WTF::TCMallocStats::tryFastRealloc):
   13570         * wtf/FastMalloc.h:
   13571         (WTF::TryMallocReturnValue::TryMallocReturnValue):
   13572         (WTF::TryMallocReturnValue::~TryMallocReturnValue):
   13573         (WTF::TryMallocReturnValue::operator PossiblyNull<T>):
   13574         (WTF::TryMallocReturnValue::getValue):
   13575         * wtf/Platform.h:
   13576         * wtf/PossiblyNull.h: Added.
   13577         (WTF::PossiblyNull::PossiblyNull):
   13578         (WTF::PossiblyNull::~PossiblyNull):
   13579         (WTF::::getValue):
   13580 
   13581 2009-08-11  Gavin Barraclough  <barraclough (a] apple.com>
   13582 
   13583         Reviewed by NOBODY (build fix part deux).
   13584 
   13585         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   13586         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   13587 
   13588 2009-08-11  Gavin Barraclough  <barraclough (a] apple.com>
   13589 
   13590         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   13591         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   13592 
   13593 2009-08-11  Gavin Barraclough  <barraclough (a] apple.com>
   13594 
   13595         Reviewed by Oliver Hunt.
   13596 
   13597         Restrict use of FuncDeclNode & FuncExprNode to the parser.
   13598         https://bugs.webkit.org/show_bug.cgi?id=28209
   13599 
   13600         These objects were also being referenced from the CodeBlock.  By changing this
   13601         to just retain pointers to FunctionBodyNodes these classes can be restricted to
   13602         use during parsing.
   13603 
   13604         No performance impact (or sub-percent progression).
   13605 
   13606         * JavaScriptCore.exp:
   13607             Update symbols.
   13608 
   13609         * bytecode/CodeBlock.cpp:
   13610         (JSC::CodeBlock::mark):
   13611         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
   13612         (JSC::CodeBlock::shrinkToFit):
   13613         * bytecode/CodeBlock.h:
   13614         (JSC::CodeBlock::addFunction):
   13615         (JSC::CodeBlock::function):
   13616             Unify m_functions & m_functionExpressions into a single Vector<RefPtr<FuncExprNode> >.
   13617 
   13618         * bytecompiler/BytecodeGenerator.cpp:
   13619         (JSC::BytecodeGenerator::BytecodeGenerator):
   13620         (JSC::BytecodeGenerator::addConstant):
   13621         (JSC::BytecodeGenerator::emitNewFunction):
   13622         (JSC::BytecodeGenerator::emitNewFunctionExpression):
   13623         * bytecompiler/BytecodeGenerator.h:
   13624             FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes.
   13625 
   13626         * interpreter/Interpreter.cpp:
   13627         (JSC::Interpreter::execute):
   13628         (JSC::Interpreter::privateExecute):
   13629             Update to reflect chnages in CodeBlock.
   13630 
   13631         * jit/JITOpcodes.cpp:
   13632         (JSC::JIT::emit_op_new_func_exp):
   13633         * jit/JITStubs.cpp:
   13634         (JSC::DEFINE_STUB_FUNCTION):
   13635         * jit/JITStubs.h:
   13636         (JSC::):
   13637             Update to reflect chnages in CodeBlock.
   13638 
   13639         * parser/Grammar.y:
   13640             FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes.
   13641 
   13642         * parser/NodeConstructors.h:
   13643         (JSC::FuncExprNode::FuncExprNode):
   13644         (JSC::FuncDeclNode::FuncDeclNode):
   13645         * parser/Nodes.cpp:
   13646         (JSC::ScopeNodeData::mark):
   13647         (JSC::FunctionBodyNode::finishParsing):
   13648         * parser/Nodes.h:
   13649         (JSC::FunctionBodyNode::ident):
   13650             Move m_ident & make methods from FuncDeclNode & FuncExprNode to FunctionBodyNode.
   13651 
   13652         * runtime/JSFunction.h:
   13653         (JSC::FunctionBodyNode::make):
   13654             Make this method inline (was FuncDeclNode::makeFunction).
   13655 
   13656 2009-08-11  Oliver Hunt  <oliver (a] apple.com>
   13657 
   13658         Reviewed by Gavin Barraclough.
   13659 
   13660         Native JSON.stringify does not omit functions
   13661         https://bugs.webkit.org/show_bug.cgi?id=28117
   13662 
   13663         Objects that are callable should be treated as undefined when
   13664         serialising to JSON.
   13665 
   13666         * runtime/JSONObject.cpp:
   13667         (JSC::Stringifier::appendStringifiedValue):
   13668 
   13669 2009-08-11  Oliver Hunt  <oliver (a] apple.com>
   13670 
   13671         Reviewed by Geoff Garen.
   13672 
   13673         REGRESSION: Hang/crash in BytecodeGenerator::constRegisterFor loading simple page
   13674         https://bugs.webkit.org/show_bug.cgi?id=28169
   13675 
   13676         Handle the case where someone has attempted to shadow a property
   13677         on the global object with a constant.
   13678 
   13679         * bytecompiler/BytecodeGenerator.cpp:
   13680         (JSC::BytecodeGenerator::constRegisterFor):
   13681         * parser/Nodes.cpp:
   13682         (JSC::ConstDeclNode::emitCodeSingle):
   13683 
   13684 2009-08-11  John Gregg  <johnnyg (a] google.com>
   13685 
   13686         Reviewed by Maciej Stachowiak.
   13687 
   13688         Desktop Notifications API
   13689         https://bugs.webkit.org/show_bug.cgi?id=25463
   13690 
   13691         Adds ENABLE_NOTIFICATION flag.
   13692 
   13693         * Configurations/FeatureDefines.xcconfig:
   13694         * wtf/Platform.h:
   13695 
   13696 2009-08-11  Maxime Simon  <simon.maxime (a] gmail.com>
   13697 
   13698         Reviewed by Eric Seidel.
   13699 
   13700         Modifications on JavaScriptCore to allow Haiku port.
   13701         https://bugs.webkit.org/show_bug.cgi?id=28121
   13702 
   13703         * runtime/Collector.cpp: Haiku doesn't have sys/mman.h, using OS.h instead.
   13704         (JSC::currentThreadStackBase): Haiku uses its own threading system.
   13705         * wtf/Platform.h: Defining all Haiku platform values.
   13706         * wtf/haiku/MainThreadHaiku.cpp: Adding a missing header (NotImplemented.h).
   13707 
   13708 2009-08-11  Jessie Berlin  <jberlin (a] apple.com>
   13709 
   13710         Reviewed by Adam Roben.
   13711 
   13712         Fix windows build.
   13713 
   13714         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   13715 
   13716 2009-08-11  Csaba Osztrogonac  <oszi (a] inf.u-szeged.hu>
   13717 
   13718         Reviewed by Tor Arne Vestb.
   13719 
   13720         Buildfix for Qt-win platforms.
   13721 
   13722         * JavaScriptCore.pri: Choose MarkStackPosix.cpp or MarkStackWin.cpp depend on platform.
   13723 
   13724 2009-08-10  Oliver Hunt  <oliver (a] apple.com>
   13725 
   13726         Reviewed by NOBODY (And another build fix).
   13727 
   13728         Add new exports for MSVC
   13729 
   13730         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   13731         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   13732         * JavaScriptCore.xcodeproj/project.pbxproj:
   13733 
   13734 2009-08-10  Oliver Hunt  <oliver (a] apple.com>
   13735 
   13736         Reviewed by NOBODY (yet another build fix).
   13737 
   13738         Remove obsolete entries from MSVC exports file
   13739 
   13740         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   13741         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   13742 
   13743 2009-08-10  Oliver Hunt  <oliver (a] apple.com>
   13744 
   13745         Add includes needed for non-allinonefile builds
   13746 
   13747         * runtime/GetterSetter.h:
   13748         * runtime/ScopeChain.h:
   13749 
   13750 2009-08-10  Oliver Hunt  <oliver (a] apple.com>
   13751 
   13752         Fix export file for last build fix
   13753 
   13754         * JavaScriptCore.exp:
   13755 
   13756 2009-08-10  Oliver Hunt  <oliver (a] apple.com>
   13757 
   13758         Hoist page size initialization into platform specific code.
   13759 
   13760         * jit/ExecutableAllocatorPosix.cpp:
   13761         * jit/ExecutableAllocatorWin.cpp:
   13762         * runtime/MarkStack.h:
   13763         (JSC::MarkStack::pageSize):
   13764         * runtime/MarkStackPosix.cpp:
   13765         (JSC::MarkStack::initializePagesize):
   13766         * runtime/MarkStackWin.cpp:
   13767         (JSC::MarkStack::initializePagesize):
   13768 
   13769 2009-08-07  Oliver Hunt  <oliver (a] apple.com>
   13770 
   13771         Reviewed by Gavin Barraclough.
   13772 
   13773         Stack overflow crash in JavaScript garbage collector mark pass
   13774         https://bugs.webkit.org/show_bug.cgi?id=12216
   13775 
   13776         Make the GC mark phase iterative by using an explicit mark stack.
   13777         To do this marking any single object is performed in multiple stages
   13778           * The object is appended to the MarkStack, this sets the marked
   13779             bit for the object using the new markDirect() function, and then
   13780             returns
   13781           * When the MarkStack is drain()ed the object is popped off the stack
   13782             and markChildren(MarkStack&) is called on the object to collect 
   13783             all of its children.  drain() then repeats until the stack is empty.
   13784 
   13785         Additionally I renamed a number of methods from 'mark' to 'markAggregate'
   13786         in order to make it more clear that marking of those object was not
   13787         going to result in an actual recursive mark.
   13788 
   13789         * GNUmakefile.am
   13790         * JavaScriptCore.exp:
   13791         * JavaScriptCore.gypi:
   13792         * JavaScriptCore.pri:
   13793         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
   13794         * JavaScriptCore.xcodeproj/project.pbxproj:
   13795         * bytecode/CodeBlock.cpp:
   13796         (JSC::CodeBlock::markAggregate):
   13797         * bytecode/CodeBlock.h:
   13798         * bytecode/EvalCodeCache.h:
   13799         (JSC::EvalCodeCache::markAggregate):
   13800         * debugger/DebuggerActivation.cpp:
   13801         (JSC::DebuggerActivation::markChildren):
   13802         * debugger/DebuggerActivation.h:
   13803         * interpreter/Register.h:
   13804         * interpreter/RegisterFile.h:
   13805         (JSC::RegisterFile::markGlobals):
   13806         (JSC::RegisterFile::markCallFrames):
   13807         * parser/Nodes.cpp:
   13808         (JSC::ScopeNodeData::markAggregate):
   13809         (JSC::EvalNode::markAggregate):
   13810         (JSC::FunctionBodyNode::markAggregate):
   13811         * parser/Nodes.h:
   13812         (JSC::ScopeNode::markAggregate):
   13813         * runtime/ArgList.cpp:
   13814         (JSC::MarkedArgumentBuffer::markLists):
   13815         * runtime/ArgList.h:
   13816         * runtime/Arguments.cpp:
   13817         (JSC::Arguments::markChildren):
   13818         * runtime/Arguments.h:
   13819         * runtime/Collector.cpp:
   13820         (JSC::Heap::markConservatively):
   13821         (JSC::Heap::markCurrentThreadConservativelyInternal):
   13822         (JSC::Heap::markCurrentThreadConservatively):
   13823         (JSC::Heap::markOtherThreadConservatively):
   13824         (JSC::Heap::markStackObjectsConservatively):
   13825         (JSC::Heap::markProtectedObjects):
   13826         (JSC::Heap::collect):
   13827         * runtime/Collector.h:
   13828         * runtime/GetterSetter.cpp:
   13829         (JSC::GetterSetter::markChildren):
   13830         * runtime/GetterSetter.h:
   13831         (JSC::GetterSetter::GetterSetter):
   13832         (JSC::GetterSetter::createStructure):
   13833         * runtime/GlobalEvalFunction.cpp:
   13834         (JSC::GlobalEvalFunction::markChildren):
   13835         * runtime/GlobalEvalFunction.h:
   13836         * runtime/JSActivation.cpp:
   13837         (JSC::JSActivation::markChildren):
   13838         * runtime/JSActivation.h:
   13839         * runtime/JSArray.cpp:
   13840         (JSC::JSArray::markChildren):
   13841         * runtime/JSArray.h:
   13842         * runtime/JSCell.h:
   13843         (JSC::JSCell::markCellDirect):
   13844         (JSC::JSCell::markChildren):
   13845         (JSC::JSValue::markDirect):
   13846         (JSC::JSValue::markChildren):
   13847         (JSC::JSValue::hasChildren):
   13848         (JSC::MarkStack::append):
   13849         (JSC::MarkStack::drain):
   13850         * runtime/JSFunction.cpp:
   13851         (JSC::JSFunction::markChildren):
   13852         * runtime/JSFunction.h:
   13853         * runtime/JSGlobalData.cpp:
   13854         (JSC::JSGlobalData::JSGlobalData):
   13855         * runtime/JSGlobalData.h:
   13856         * runtime/JSGlobalObject.cpp:
   13857         (JSC::markIfNeeded):
   13858         (JSC::JSGlobalObject::markChildren):
   13859         * runtime/JSGlobalObject.h:
   13860         * runtime/JSNotAnObject.cpp:
   13861         (JSC::JSNotAnObject::markChildren):
   13862         * runtime/JSNotAnObject.h:
   13863         * runtime/JSONObject.cpp:
   13864         (JSC::Stringifier::markAggregate):
   13865         (JSC::JSONObject::markStringifiers):
   13866         * runtime/JSONObject.h:
   13867         * runtime/JSObject.cpp:
   13868         (JSC::JSObject::markChildren):
   13869         (JSC::JSObject::defineGetter):
   13870         (JSC::JSObject::defineSetter):
   13871         * runtime/JSObject.h:
   13872         * runtime/JSPropertyNameIterator.cpp:
   13873         (JSC::JSPropertyNameIterator::markChildren):
   13874         * runtime/JSPropertyNameIterator.h:
   13875         (JSC::JSPropertyNameIterator::createStructure):
   13876         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
   13877         (JSC::JSPropertyNameIterator::create):
   13878         * runtime/JSStaticScopeObject.cpp:
   13879         (JSC::JSStaticScopeObject::markChildren):
   13880         * runtime/JSStaticScopeObject.h:
   13881         * runtime/JSType.h:
   13882         (JSC::):
   13883         * runtime/JSValue.h:
   13884         * runtime/JSWrapperObject.cpp:
   13885         (JSC::JSWrapperObject::markChildren):
   13886         * runtime/JSWrapperObject.h:
   13887         * runtime/MarkStack.cpp: Added.
   13888         (JSC::MarkStack::compact):
   13889         * runtime/MarkStack.h: Added.
   13890         (JSC::):
   13891         (JSC::MarkStack::MarkStack):
   13892         (JSC::MarkStack::append):
   13893         (JSC::MarkStack::appendValues):
   13894         (JSC::MarkStack::~MarkStack):
   13895         (JSC::MarkStack::MarkSet::MarkSet):
   13896         (JSC::MarkStack::pageSize):
   13897         
   13898         MarkStackArray is a non-shrinking, mmap-based vector type
   13899         used for storing objects to be marked.
   13900         (JSC::MarkStack::MarkStackArray::MarkStackArray):
   13901         (JSC::MarkStack::MarkStackArray::~MarkStackArray):
   13902         (JSC::MarkStack::MarkStackArray::expand):
   13903         (JSC::MarkStack::MarkStackArray::append):
   13904         (JSC::MarkStack::MarkStackArray::removeLast):
   13905         (JSC::MarkStack::MarkStackArray::isEmpty):
   13906         (JSC::MarkStack::MarkStackArray::size):
   13907         (JSC::MarkStack::MarkStackArray::shrinkAllocation):
   13908         * runtime/MarkStackPosix.cpp: Added.
   13909         (JSC::MarkStack::allocateStack):
   13910         (JSC::MarkStack::releaseStack):
   13911         * runtime/MarkStackWin.cpp: Added.
   13912         (JSC::MarkStack::allocateStack):
   13913         (JSC::MarkStack::releaseStack):
   13914 
   13915         * runtime/ScopeChain.h:
   13916         * runtime/ScopeChainMark.h:
   13917         (JSC::ScopeChain::markAggregate):
   13918         * runtime/SmallStrings.cpp:
   13919         (JSC::SmallStrings::mark):
   13920         * runtime/Structure.h:
   13921         (JSC::Structure::markAggregate):
   13922 
   13923 2009-08-10  Mark Rowe  <mrowe (a] apple.com>
   13924         
   13925         Reviewed by Darin Adler.
   13926 
   13927         Fix hundreds of "pointer being freed was not allocated" errors seen on the build bot.
   13928 
   13929         * wtf/FastMalloc.h: Implement nothrow variants of the delete and delete[] operators since
   13930         we implement the nothrow variants of new and new[].  The nothrow variant of delete is called
   13931         explicitly in the implementation of std::sort which was resulting in FastMalloc-allocated
   13932         memory being passed to the system allocator to free.
   13933 
   13934 2009-08-10  Jan Michael Alonzo  <jmalonzo (a] webkit.org>
   13935 
   13936         [Gtk] Unreviewed build fix. Move JSAPIValueWrapper.cpp/.h in the debug
   13937         section. This file is already part of AllInOneFile in Release builds.
   13938 
   13939         * GNUmakefile.am:
   13940 
   13941 2009-08-10  Darin Adler  <darin (a] apple.com>
   13942 
   13943         * wtf/FastMalloc.h: Fix build.
   13944 
   13945 2009-08-10  Darin Adler  <darin (a] apple.com>
   13946 
   13947         Reviewed by Mark Rowe.
   13948 
   13949         FastMalloc.h has cross-platform code but marked as WinCE-only
   13950         https://bugs.webkit.org/show_bug.cgi?id=28160
   13951 
   13952         1) The support for nothrow was inside #if PLATFORM(WINCE) even though it is
   13953            not platform-specific.
   13954         2) The code tried to override operator delete nothrow, which does not exist.
   13955         3) The code in the header checks the value of USE_SYSTEM_MALLOC, but the code
   13956            in FastMalloc.cpp checks only if the macro is defined.
   13957 
   13958         * wtf/FastMalloc.h: See above.
   13959         * wtf/FastMalloc.cpp: Ditto.
   13960 
   13961 2009-08-10  Sam Weinig  <sam (a] webkit.org>
   13962 
   13963         Reviewed by Anders Carlsson.
   13964 
   13965         Fix an annoying indentation issue.
   13966 
   13967         * runtime/DateConstructor.cpp:
   13968         (JSC::constructDate):
   13969 
   13970 2009-08-10  Xan Lopez  <xlopez (a] igalia.com>
   13971 
   13972         Unreviewed build fix.
   13973 
   13974         Add new files to makefile.
   13975 
   13976         * GNUmakefile.am:
   13977 
   13978 2009-08-10  Simon Hausmann  <simon.hausmann (a] nokia.com>
   13979 
   13980         Fix compilation with the interpreter instead of the JIT by including
   13981         PrototypeFunction.h as forward-declared through NativeFunctionWrapper.h.
   13982 
   13983         * runtime/ObjectConstructor.cpp:
   13984 
   13985 2009-08-09  Oliver Hunt  <oliver (a] apple.com>
   13986 
   13987         Reviewed by George Staikos.
   13988 
   13989         JSON.stringify replacer returning undefined does not omit object properties
   13990         https://bugs.webkit.org/show_bug.cgi?id=28118
   13991 
   13992         Correct behaviour of stringify when using a replacer function that returns
   13993         undefined.  This is a simple change to move the undefined value check to
   13994         after the replacer function is called.  This means that the replacer function
   13995         is now called for properties with the value undefined, however i've confirmed
   13996         that this behaviour is correct.
   13997         
   13998         In addition I've made the cyclic object exception have a more useful error
   13999         message.
   14000 
   14001         * runtime/JSONObject.cpp:
   14002         (JSC::Stringifier::appendStringifiedValue):
   14003 
   14004 2009-08-08  Oliver Hunt  <oliver (a] apple.com>
   14005 
   14006         Reviewed by Eric Seidel and Sam Weinig.
   14007 
   14008         [ES5] Implement Object.getPrototypeOf
   14009         https://bugs.webkit.org/show_bug.cgi?id=28114
   14010 
   14011         Implement getPrototypeOf
   14012 
   14013         * runtime/CommonIdentifiers.h:
   14014         * runtime/JSGlobalObject.cpp:
   14015         (JSC::JSGlobalObject::reset):
   14016         * runtime/ObjectConstructor.cpp:
   14017         (JSC::ObjectConstructor::ObjectConstructor):
   14018         (JSC::objectConsGetPrototypeOf):
   14019         * runtime/ObjectConstructor.h:
   14020 
   14021 2009-08-07  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   14022 
   14023         Reviewed by Eric Seidel.
   14024 
   14025         Allow custom memory allocation control for Noncopyable class
   14026         https://bugs.webkit.org/show_bug.cgi?id=27879
   14027 
   14028         Several classes which are inherited from Noncopyable are instantiated by
   14029         operator new, so Noncopyable class has been inherited from FastAllocBase.
   14030 
   14031         * wtf/Noncopyable.h:
   14032 
   14033 2009-08-07  George Staikos <george.staikos (a] torchmobile.com> 
   14034 
   14035         Reviewed by Eric Seidel.
   14036 
   14037         https://bugs.webkit.org/show_bug.cgi?id=27305
   14038         Implement WinCE-specific unicode layer.
   14039         Written by George Staikos <george.staikos (a] torchmobile.com>
   14040         with bug fixes by Yong Li <yong.li (a] torchmobile.com>
   14041         refactored by Joe Mason <joe.mason (a] torchmobile.com> 
   14042 
   14043         * wtf/Platform.h:
   14044         * wtf/unicode/Unicode.h:
   14045         * wtf/unicode/wince/UnicodeWince.cpp: Added.
   14046         (WTF::Unicode::toLower):
   14047         (WTF::Unicode::toUpper):
   14048         (WTF::Unicode::foldCase):
   14049         (WTF::Unicode::isPrintableChar):
   14050         (WTF::Unicode::isSpace):
   14051         (WTF::Unicode::isLetter):
   14052         (WTF::Unicode::isUpper):
   14053         (WTF::Unicode::isLower):
   14054         (WTF::Unicode::isDigit):
   14055         (WTF::Unicode::isPunct):
   14056         (WTF::Unicode::toTitleCase):
   14057         (WTF::Unicode::direction):
   14058         (WTF::Unicode::category):
   14059         (WTF::Unicode::decompositionType):
   14060         (WTF::Unicode::combiningClass):
   14061         (WTF::Unicode::mirroredChar):
   14062         (WTF::Unicode::digitValue):
   14063         * wtf/unicode/wince/UnicodeWince.h: Added.
   14064         (WTF::Unicode::):
   14065         (WTF::Unicode::isSeparatorSpace):
   14066         (WTF::Unicode::isHighSurrogate):
   14067         (WTF::Unicode::isLowSurrogate):
   14068         (WTF::Unicode::isArabicChar):
   14069         (WTF::Unicode::hasLineBreakingPropertyComplexContext):
   14070         (WTF::Unicode::umemcasecmp):
   14071         (WTF::Unicode::surrogateToUcs4):
   14072 
   14073 2009-08-07  Yongjun Zhang  <yongjun.zhang (a] nokia.com>
   14074 
   14075         Reviewed by Eric Seidel.
   14076 
   14077         https://bugs.webkit.org/show_bug.cgi?id=28069
   14078 
   14079         Add inline to help winscw compiler resolve specialized argument in 
   14080         templated functions.  
   14081 
   14082         * runtime/LiteralParser.cpp:
   14083         (JSC::LiteralParser::Lexer::lexString):
   14084 
   14085 2009-08-07  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   14086 
   14087         Reviewed by Eric Seidel.
   14088 
   14089         Allow custom memory allocation control for RegExpObjectData struct
   14090         http://bugs.webkit.org/show_bug.cgi?id=26750
   14091 
   14092         Inherits RegExpObjectData struct from FastAllocBase because
   14093         it has been instantiated by 'new' in JavaScriptCore/runtime/RegExpObject.cpp:62
   14094 
   14095         * runtime/RegExpObject.h:
   14096 
   14097 2009-08-06  Norbert Leser  <norbert.leser (a] nokia.com>
   14098 
   14099         Reviewed by Darin Adler.
   14100 
   14101         Updated patch for bug #27059:
   14102         Symbian platform always uses little endian encoding,
   14103         regardless of compiler.
   14104         We need to make sure that we correctly detect EABI architecture
   14105         for armv5 targets on Symbian,
   14106         where __EABI__ is set but not __ARM_EABI__
   14107 
   14108         * wtf/Platform.h:
   14109 
   14110 2009-08-06  Adam Barth  <abarth (a] webkit.org>
   14111 
   14112         Unreviewed revert.
   14113 
   14114         http://bugs.webkit.org/show_bug.cgi?id=27879
   14115 
   14116         Revert 46877 because it broke GTK.
   14117 
   14118         * wtf/Noncopyable.h:
   14119 
   14120 2009-08-06  Gavin Barraclough  <barraclough (a] apple.com>
   14121 
   14122         Reviewed by Oliver Hunt.
   14123 
   14124         Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification.
   14125         ( https://bugs.webkit.org/show_bug.cgi?id=27635 )
   14126 
   14127         This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%.
   14128         (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled).
   14129 
   14130         * bytecode/CodeBlock.cpp:
   14131         (JSC::printStructureStubInfo):
   14132             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
   14133 
   14134         * bytecode/CodeBlock.h:
   14135         (JSC::):
   14136         (JSC::CallLinkInfo::seenOnce):
   14137         (JSC::CallLinkInfo::setSeen):
   14138         (JSC::MethodCallLinkInfo::seenOnce):
   14139         (JSC::MethodCallLinkInfo::setSeen):
   14140             - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once.
   14141 
   14142         * bytecode/StructureStubInfo.cpp:
   14143         (JSC::StructureStubInfo::deref):
   14144             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
   14145 
   14146         * bytecode/StructureStubInfo.h:
   14147         (JSC::StructureStubInfo::StructureStubInfo):
   14148         (JSC::StructureStubInfo::initGetByIdSelf):
   14149         (JSC::StructureStubInfo::initGetByIdProto):
   14150         (JSC::StructureStubInfo::initGetByIdChain):
   14151         (JSC::StructureStubInfo::initGetByIdSelfList):
   14152         (JSC::StructureStubInfo::initGetByIdProtoList):
   14153         (JSC::StructureStubInfo::initPutByIdTransition):
   14154         (JSC::StructureStubInfo::initPutByIdReplace):
   14155         (JSC::StructureStubInfo::seenOnce):
   14156         (JSC::StructureStubInfo::setSeen):
   14157             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once.
   14158 
   14159         * bytecompiler/BytecodeGenerator.cpp:
   14160         (JSC::BytecodeGenerator::emitGetById):
   14161         (JSC::BytecodeGenerator::emitPutById):
   14162             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
   14163 
   14164         * jit/JIT.cpp:
   14165         (JSC::JIT::privateCompileCTIMachineTrampolines):
   14166         (JSC::JIT::unlinkCall):
   14167             - Remove the "don't lazy link" stage of calls.
   14168 
   14169         * jit/JIT.h:
   14170         (JSC::JIT::compileCTIMachineTrampolines):
   14171             - Remove the "don't lazy link" stage of calls.
   14172 
   14173         * jit/JITCall.cpp:
   14174         (JSC::JIT::compileOpCallSlowCase):
   14175             - Remove the "don't lazy link" stage of calls.
   14176 
   14177         * jit/JITStubs.cpp:
   14178         (JSC::JITThunks::JITThunks):
   14179         (JSC::JITThunks::tryCachePutByID):
   14180         (JSC::JITThunks::tryCacheGetByID):
   14181         (JSC::JITStubs::DEFINE_STUB_FUNCTION):
   14182         (JSC::JITStubs::getPolymorphicAccessStructureListSlot):
   14183             - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
   14184 
   14185         * jit/JITStubs.h:
   14186         (JSC::JITThunks::ctiStringLengthTrampoline):
   14187         (JSC::JITStubs::):
   14188             - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
   14189 
   14190         * wtf/PtrAndFlags.h:
   14191         (WTF::PtrAndFlags::PtrAndFlags):
   14192         (WTF::PtrAndFlags::operator!):
   14193         (WTF::PtrAndFlags::operator->):
   14194             - Add ! and -> operators, add constuctor with pointer argument.
   14195 
   14196 2009-08-06  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   14197 
   14198         Reviewed by Adam Barth.
   14199 
   14200         Allow custom memory allocation control for Noncopyable class
   14201         https://bugs.webkit.org/show_bug.cgi?id=27879
   14202 
   14203         Several classes which inherited from Noncopyable are instantiated by
   14204         operator new, so Noncopyable class has been inherited from FastAllocBase.
   14205 
   14206         * wtf/Noncopyable.h:
   14207 
   14208 2009-08-06  Mark Rowe  <mrowe (a] apple.com>
   14209 
   14210         Rubber-stamped by Sam Weinig.
   14211 
   14212         Add explicit dependencies for our build verification scripts to ensure that they always run after linking has completed.
   14213 
   14214         * JavaScriptCore.xcodeproj/project.pbxproj:
   14215 
   14216 2009-08-06  Mark Rowe  <mrowe (a] apple.com>
   14217 
   14218         Bring a little order to our otherwise out of control lives.
   14219 
   14220         * JavaScriptCore.xcodeproj/project.pbxproj:
   14221 
   14222 2009-08-06  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   14223 
   14224         Reviewed by Darin Adler.
   14225 
   14226         Allow custom memory allocation control for JavaScriptCore's PolymorphicAccessStructureList struct
   14227         https://bugs.webkit.org/show_bug.cgi?id=27877
   14228 
   14229         Inherits PolymorphicAccessStructureList struct from FastAllocBase because it has been instantiated by
   14230         'new' in JavaScriptCore/jit/JITStubs.cpp:1229.
   14231 
   14232         * bytecode/Instruction.h:
   14233 
   14234 2009-08-05  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   14235 
   14236         Reviewed by Darin Adler.
   14237 
   14238         Allow custom memory allocation control for JavaScriptCore's ScopeNodeData struct
   14239         https://bugs.webkit.org/show_bug.cgi?id=27875
   14240 
   14241         Inherits ScopeNodeData struct from FastAllocBase because it has been instantiated by
   14242         'new' in JavaScriptCore/parser/Nodes.cpp:1848.
   14243 
   14244         * parser/Nodes.h:
   14245 
   14246 2009-08-05  Zoltan Herczeg  <zherczeg (a] inf.u-szeged.hu>
   14247 
   14248         Reviewed by Gavin Barraclough.
   14249 
   14250         Add floating point support for generic ARM port.
   14251         https://bugs.webkit.org/show_bug.cgi?id=24986
   14252 
   14253         * assembler/ARMAssembler.cpp:
   14254         (JSC::ARMAssembler::doubleTransfer):
   14255         * assembler/ARMAssembler.h:
   14256         (JSC::ARM::):
   14257         (JSC::ARMAssembler::):
   14258         (JSC::ARMAssembler::faddd_r):
   14259         (JSC::ARMAssembler::fsubd_r):
   14260         (JSC::ARMAssembler::fmuld_r):
   14261         (JSC::ARMAssembler::fcmpd_r):
   14262         (JSC::ARMAssembler::fdtr_u):
   14263         (JSC::ARMAssembler::fdtr_d):
   14264         (JSC::ARMAssembler::fmsr_r):
   14265         (JSC::ARMAssembler::fsitod_r):
   14266         (JSC::ARMAssembler::fmstat):
   14267         * assembler/MacroAssemblerARM.h:
   14268         (JSC::MacroAssemblerARM::):
   14269         (JSC::MacroAssemblerARM::supportsFloatingPoint):
   14270         (JSC::MacroAssemblerARM::loadDouble):
   14271         (JSC::MacroAssemblerARM::storeDouble):
   14272         (JSC::MacroAssemblerARM::addDouble):
   14273         (JSC::MacroAssemblerARM::subDouble):
   14274         (JSC::MacroAssemblerARM::mulDouble):
   14275         (JSC::MacroAssemblerARM::convertInt32ToDouble):
   14276         (JSC::MacroAssemblerARM::branchDouble):
   14277         * jit/JIT.h:
   14278 
   14279 2009-08-05  Zoltan Herczeg  <zherczeg (a] inf.u-szeged.hu>
   14280 
   14281         Reviewed by Gavin Barraclough.
   14282 
   14283         Add JIT support for generic ARM port without optimizations.
   14284         https://bugs.webkit.org/show_bug.cgi?id=24986
   14285 
   14286         All JIT optimizations are disabled.
   14287 
   14288         Signed off by Zoltan Herczeg <zherczeg (a] inf.u-szeged.hu>
   14289         Signed off by Gabor Loki <loki (a] inf.u-szeged.hu>
   14290 
   14291         * assembler/ARMAssembler.cpp:
   14292         (JSC::ARMAssembler::baseIndexTransfer32):
   14293         * assembler/AbstractMacroAssembler.h:
   14294         (JSC::AbstractMacroAssembler::Imm32::Imm32):
   14295         * assembler/MacroAssemblerARM.h:
   14296         (JSC::MacroAssemblerARM::store32):
   14297         (JSC::MacroAssemblerARM::move):
   14298         (JSC::MacroAssemblerARM::branch32):
   14299         (JSC::MacroAssemblerARM::add32):
   14300         (JSC::MacroAssemblerARM::sub32):
   14301         (JSC::MacroAssemblerARM::load32):
   14302         * bytecode/CodeBlock.h:
   14303         (JSC::CodeBlock::getBytecodeIndex):
   14304         * jit/JIT.h:
   14305         * jit/JITInlineMethods.h:
   14306         (JSC::JIT::restoreArgumentReference):
   14307         * jit/JITOpcodes.cpp:
   14308         * jit/JITStubs.cpp:
   14309         * jit/JITStubs.h:
   14310         (JSC::JITStackFrame::returnAddressSlot):
   14311         * wtf/Platform.h:
   14312 
   14313 2009-08-04  Gavin Barraclough  <barraclough (a] apple.com>
   14314 
   14315         Rubber Stamped by Oiver Hunt.
   14316 
   14317         Revert r46643 since this breaks the Yarr::Interpreter running the v8 tests.
   14318         https://bugs.webkit.org/show_bug.cgi?id=27874
   14319 
   14320         * yarr/RegexInterpreter.cpp:
   14321         (JSC::Yarr::Interpreter::allocDisjunctionContext):
   14322         (JSC::Yarr::Interpreter::freeDisjunctionContext):
   14323         (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
   14324         (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
   14325 
   14326 2009-08-04  Oliver Hunt  <oliver (a] apple.com>
   14327 
   14328         PPC64 Build fix
   14329 
   14330         * wtf/Platform.h:
   14331 
   14332 2009-08-04  Benjamin C Meyer  <benjamin.meyer (a] torchmobile.com>
   14333 
   14334         Reviewed by Adam Treat
   14335 
   14336         Explicitly include limits.h header when using INT_MAX and INT_MIN
   14337 
   14338         * interpreter/Interpreter.cpp
   14339 
   14340 2009-08-03  Harald Fernengel  <harald.fernengel (a] nokia.com>
   14341 
   14342         Reviewed by Darin Adler.
   14343 
   14344         Fix compile error for ambigous call to abs()
   14345         https://bugs.webkit.org/show_bug.cgi?id=27873
   14346 
   14347         Fix ambiguity in abs(long int) call by calling labs() instead
   14348 
   14349         * wtf/DateMath.cpp: replace call to abs() with labs()
   14350 
   14351 2009-08-03  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   14352 
   14353         Reviewed by Eric Seidel.
   14354 
   14355         [Qt] Consolidate common gcc flags to WebKit.pri
   14356         https://bugs.webkit.org/show_bug.cgi?id=27934
   14357 
   14358         * JavaScriptCore.pro:
   14359 
   14360 2009-08-03  Ada Chan  <adachan (a] apple.com>
   14361 
   14362         Fixed the Tiger build.
   14363 
   14364         * wtf/FastMalloc.cpp:
   14365 
   14366 2009-08-03  Ada Chan  <adachan (a] apple.com>
   14367 
   14368         Reviewed by Darin Adler.
   14369 
   14370         Don't use background thread to scavenge memory on Tiger until we figure out why it causes a crash.
   14371         https://bugs.webkit.org/show_bug.cgi?id=27900
   14372 
   14373         * wtf/FastMalloc.cpp:
   14374 
   14375 2009-08-03  Fumitoshi Ukai  <ukai (a] chromium.org>
   14376 
   14377         Reviewed by Jan Alonzo.
   14378 
   14379         Fix build break on Gtk/x86_64.
   14380         https://bugs.webkit.org/show_bug.cgi?id=27936
   14381 
   14382         Use JSVALUE64 for X86_64 LINUX, except Qt.
   14383 
   14384         * wtf/Platform.h:
   14385 
   14386 2009-08-02  Xan Lopez  <xlopez (a] igalia.com>
   14387 
   14388         Fix the GTK+ build.
   14389 
   14390         * wtf/Platform.h:
   14391 
   14392 2009-08-02  Geoffrey Garen  <ggaren (a] apple.com>
   14393 
   14394         Reviewed by Sam Weinig.
   14395 
   14396         Disabled JSVALUE32_64 on Qt builds, since all layout tests mysteriously
   14397         crash with it enabled.
   14398 
   14399         * wtf/Platform.h:
   14400 
   14401 2009-08-02  Geoffrey Garen  <ggaren (a] apple.com>
   14402 
   14403         Qt build fix.
   14404 
   14405         Added JSAPIValueWrapper.cpp to the build.
   14406 
   14407         * JavaScriptCore.pri:
   14408 
   14409 2009-08-02  Geoffrey Garen  <ggaren (a] apple.com>
   14410 
   14411         Windows build fix.
   14412 
   14413         Exported symbols for JSAPIValueWrapper.
   14414 
   14415         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   14416         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   14417 
   14418 2009-08-02  Geoffrey Garen  <ggaren (a] apple.com>
   14419 
   14420         GTK build fix.
   14421 
   14422         * jit/JITStubs.cpp: #include <stdarg.h>, for a definition of va_start.
   14423 
   14424 2009-08-02  Geoffrey Garen  <ggaren (a] apple.com>
   14425 
   14426         Qt build fix.
   14427         
   14428         * runtime/Collector.cpp: #include <limits.h>, for a definition of ULONG_MAX.
   14429 
   14430 2009-08-02  Geoffrey Garen  <ggaren (a] apple.com>
   14431 
   14432         Windows build fix: Nixed JSImmediate::prototype, JSImmediate::toObject,
   14433         and JSImmediate::toThisObject, and removed their exported symbols.
   14434 
   14435         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   14436         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   14437         * runtime/JSImmediate.cpp:
   14438         * runtime/JSImmediate.h:
   14439 
   14440 2009-08-02  Geoffrey Garen  <ggaren (a] apple.com>
   14441 
   14442         Reviewed by Mark Rowe.
   14443 
   14444         Enabled JSVALUE32_64 by default on all platforms other than x86_64 (which uses JSVALUE64).
   14445 
   14446         * wtf/Platform.h:
   14447 
   14448 2009-08-02  Kevin Ollivier  <kevino (a] theolliviers.com>
   14449 
   14450         Reviewed by Jan Alonzo.
   14451 
   14452         Script for building the JavaScriptCore library for wx.
   14453         https://bugs.webkit.org/show_bug.cgi?id=27619
   14454 
   14455         * wscript: Added.
   14456 
   14457 2009-08-02  Yong Li  <yong.li (a] torchmobile.com>
   14458 
   14459         Reviewed by George Staikos.
   14460 
   14461         DateMath depends on strftime and localtime, which need to be imported manually on WinCE
   14462         https://bugs.webkit.org/show_bug.cgi?id=26558
   14463 
   14464         * wtf/DateMath.cpp:
   14465 
   14466 2009-08-01  David Kilzer  <ddkilzer (a] apple.com>
   14467 
   14468         wtf/Threading.h: added include of Platform.h
   14469 
   14470         Reviewed by Mark Rowe.
   14471 
   14472         * wtf/Threading.h: Added #include "Platform.h" since this header
   14473         uses PLATFORM() and other macros.
   14474 
   14475 2009-08-01  Mark Rowe  <mrowe (a] apple.com>
   14476 
   14477         Rubber-stamped by Oliver Hunt.
   14478 
   14479         Roll out r46668 as it was misinformed.  ScopeChain is only used with placement new.
   14480 
   14481         * runtime/ScopeChain.h:
   14482 
   14483 2009-08-01  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   14484 
   14485         Allow custom memory allocation control for JavaScriptCore's HashMap class
   14486         http://bugs.webkit.org/show_bug.cgi?id=27871
   14487 
   14488         Inherits HashMap class from FastAllocBase because it has been
   14489         instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:148.
   14490 
   14491         * wtf/RefPtrHashMap.h:
   14492         (WTF::):
   14493 
   14494 2009-08-01  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   14495 
   14496         Allow custom memory allocation control for JavaScriptCore's ScopeChain class
   14497         https://bugs.webkit.org/show_bug.cgi?id=27834
   14498 
   14499         Inherits ScopeChain class from FastAllocBase because it has been
   14500         instantiated by 'new' in JavaScriptCore/runtime/JSFunction.h:109.
   14501 
   14502         * runtime/ScopeChain.h:
   14503 
   14504 2009-08-01  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   14505 
   14506         Reviewed by Darin Adler.
   14507 
   14508         Allow custom memory allocation control for JavaScriptCore's RegExpConstructorPrivate struct 
   14509         https://bugs.webkit.org/show_bug.cgi?id=27833
   14510 
   14511         Inherits RegExpConstructorPrivate class from FastAllocBase because it has been
   14512         instantiated by 'new' in JavaScriptCore/runtime/RegExpConstructor.cpp:152.
   14513 
   14514         * runtime/RegExpConstructor.cpp:
   14515 
   14516 2009-07-31  Yong Li  <yong.li (a] torchmobile.com>
   14517 
   14518         Reviewed by George Staikos.
   14519 
   14520         Resurrect the old GetTickCount implementation of currentTime, controlled by WTF_USE_QUERY_PERFORMANCE_COUNTER
   14521         currentSystemTime taken from older WebKit; currentTime written by Yong Li <yong.li (a] torchmobile.com>; cleanup by Joe Mason <joe.mason (a] torchmobile.com>
   14522         https://bugs.webkit.org/show_bug.cgi?id=27848
   14523 
   14524         * wtf/CurrentTime.cpp:
   14525         (WTF::currentSystemTime): get current time with GetCurrentFT
   14526         (WTF::currentTime): track msec elapsed since first currentSystemTime call using GetTickCount
   14527         * wtf/Platform.h:
   14528 
   14529 2009-07-31  Ada Chan  <adachan (a] apple.com>
   14530 
   14531         Fixes the Windows release-PGO build.
   14532 
   14533         Reviewed by Jon Honeycutt.
   14534 
   14535         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Suppresses the warning about unreachable code that we get by adding "return 0" to WTF::TCMalloc_PageHeap::runScavengerThread().
   14536         * wtf/FastMalloc.cpp:
   14537         (WTF::TCMalloc_PageHeap::runScavengerThread): Fixes the error about the method not returning a value in the release-PGO build.
   14538 
   14539 2009-07-31  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   14540 
   14541         Change malloc to fastMalloc and free to fastFree in Yarr's RegexInterpreter.cpp
   14542         https://bugs.webkit.org/show_bug.cgi?id=27874
   14543 
   14544         Use fastMalloc and fastFree instead of malloc and free in RegexInterpreter.cpp's methods.
   14545 
   14546         * yarr/RegexInterpreter.cpp:
   14547         (JSC::Yarr::Interpreter::allocDisjunctionContext):
   14548         (JSC::Yarr::Interpreter::freeDisjunctionContext):
   14549         (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
   14550         (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
   14551 
   14552 2009-07-30  Xan Lopez  <xlopez (a] igalia.com>
   14553 
   14554         Reviewed by Jan Alonzo.
   14555 
   14556         Fix compiler warning.
   14557 
   14558         GCC does not like C++-style comments in preprocessor directives.
   14559 
   14560         * wtf/Platform.h:
   14561 
   14562 2009-07-30  John McCall  <rjmccall (a] apple.com>
   14563 
   14564         Reviewed by Gavin Barraclough.
   14565 
   14566         Optimize the X86_64 trampolines: avoid the need for filler arguments
   14567         and move the stub-args area closer to the stack pointer.
   14568 
   14569         * jit/JIT.h: adjust patch offsets because of slight code-size change 
   14570         * jit/JITCode.h:
   14571         (JSC::JITCode::execute): don't pass filler args
   14572         * jit/JITStubs.cpp:
   14573         (ctiTrampoline): (X86_64): push args onto stack, use args directly
   14574         (ctiVMThrowTrampoline): (X86_64): adjust %rsp by correct displacement
   14575         (ctiOpThrowNotCaught): (X86_64): adjust %rsp by correct displacement
   14576         * jit/JITStubs.h:
   14577         (JITStackFrame): (X86_64): move args area earlier
   14578         (ctiTrampoline): remove filler args from prototype
   14579 
   14580 2009-07-30  Gavin Barraclough  <barraclough (a] apple.com>
   14581 
   14582         Temporarily revert r46618 since this is b0rking on Linux.
   14583 
   14584 2009-07-23  Gavin Barraclough  <barraclough (a] apple.com>
   14585 
   14586         Reviewed by Oliver Hunt.
   14587 
   14588         Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification.
   14589         ( https://bugs.webkit.org/show_bug.cgi?id=27635 )
   14590 
   14591         This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%.
   14592         (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled).
   14593 
   14594         * bytecode/CodeBlock.cpp:
   14595         (JSC::printStructureStubInfo):
   14596             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
   14597 
   14598         * bytecode/CodeBlock.h:
   14599         (JSC::):
   14600         (JSC::CallLinkInfo::seenOnce):
   14601         (JSC::CallLinkInfo::setSeen):
   14602         (JSC::MethodCallLinkInfo::seenOnce):
   14603         (JSC::MethodCallLinkInfo::setSeen):
   14604             - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once.
   14605 
   14606         * bytecode/StructureStubInfo.cpp:
   14607         (JSC::StructureStubInfo::deref):
   14608             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
   14609 
   14610         * bytecode/StructureStubInfo.h:
   14611         (JSC::StructureStubInfo::StructureStubInfo):
   14612         (JSC::StructureStubInfo::initGetByIdSelf):
   14613         (JSC::StructureStubInfo::initGetByIdProto):
   14614         (JSC::StructureStubInfo::initGetByIdChain):
   14615         (JSC::StructureStubInfo::initGetByIdSelfList):
   14616         (JSC::StructureStubInfo::initGetByIdProtoList):
   14617         (JSC::StructureStubInfo::initPutByIdTransition):
   14618         (JSC::StructureStubInfo::initPutByIdReplace):
   14619         (JSC::StructureStubInfo::seenOnce):
   14620         (JSC::StructureStubInfo::setSeen):
   14621             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once.
   14622 
   14623         * bytecompiler/BytecodeGenerator.cpp:
   14624         (JSC::BytecodeGenerator::emitGetById):
   14625         (JSC::BytecodeGenerator::emitPutById):
   14626             - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
   14627 
   14628         * jit/JIT.cpp:
   14629         (JSC::JIT::privateCompileCTIMachineTrampolines):
   14630         (JSC::JIT::unlinkCall):
   14631             - Remove the "don't lazy link" stage of calls.
   14632 
   14633         * jit/JIT.h:
   14634         (JSC::JIT::compileCTIMachineTrampolines):
   14635             - Remove the "don't lazy link" stage of calls.
   14636 
   14637         * jit/JITCall.cpp:
   14638         (JSC::JIT::compileOpCallSlowCase):
   14639             - Remove the "don't lazy link" stage of calls.
   14640 
   14641         * jit/JITStubs.cpp:
   14642         (JSC::JITThunks::JITThunks):
   14643         (JSC::JITThunks::tryCachePutByID):
   14644         (JSC::JITThunks::tryCacheGetByID):
   14645         (JSC::JITStubs::DEFINE_STUB_FUNCTION):
   14646         (JSC::JITStubs::getPolymorphicAccessStructureListSlot):
   14647             - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
   14648 
   14649         * jit/JITStubs.h:
   14650         (JSC::JITThunks::ctiStringLengthTrampoline):
   14651         (JSC::JITStubs::):
   14652             - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
   14653 
   14654         * wtf/PtrAndFlags.h:
   14655         (WTF::PtrAndFlags::PtrAndFlags):
   14656         (WTF::PtrAndFlags::operator!):
   14657         (WTF::PtrAndFlags::operator->):
   14658             - Add ! and -> operators, add constuctor with pointer argument.
   14659 
   14660 2009-07-30  Geoffrey Garen  <ggaren (a] apple.com>
   14661 
   14662         Reviewed by Gavin Barraclough.
   14663 
   14664         Fixed failing tests seen on Windows buildbot.
   14665 
   14666         * jit/JITStubs.cpp:
   14667         (JSC::DEFINE_STUB_FUNCTION):
   14668         * jit/JITStubs.h:
   14669         (JSC::): Use "int" instead of "bool" to guarantee a 32-bit result,
   14670         regardless of compiler. gcc on mac uses 32-bit values for bool,
   14671         but gcc on linux and MSVC on Windows use 8-bit values.
   14672 
   14673 2009-07-30  Geoffrey Garen  <ggaren (a] apple.com>
   14674 
   14675         Windows build fix: added missing symbols on Windows.
   14676 
   14677         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   14678         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   14679 
   14680 2009-07-30  Geoffrey Garen  <ggaren (a] apple.com>
   14681 
   14682         Windows build fix: removed stale symbols on Windows.
   14683 
   14684         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   14685         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   14686 
   14687 === End merge of nitro-extreme branch 2009-07-30 ===
   14688 
   14689 2009-07-20  Geoffrey Garen  <ggaren (a] apple.com>
   14690 
   14691         Fixed a post-review typo in r46066 that caused tons of test failures.
   14692         
   14693         SunSpider reports no change.
   14694 
   14695         * runtime/JSArray.cpp:
   14696         (JSC::JSArray::JSArray): Initialize the full vector capacity, to avoid
   14697         uninitialized members at the end.
   14698 
   14699 2009-07-20  Geoffrey Garen  <ggaren (a] apple.com>
   14700 
   14701         Windows WebKit build fix: Added some missing exports.
   14702 
   14703         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   14704         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   14705 
   14706 2009-07-17  Geoffrey Garen  <ggaren (a] apple.com>
   14707 
   14708         Reviewed by Sam Weinig.
   14709 
   14710         Get the branch working on windows.
   14711         https://bugs.webkit.org/show_bug.cgi?id=27391
   14712         
   14713         SunSpider says 0.3% faster.
   14714 
   14715         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   14716         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Updated
   14717         MSVC export lists to fix linker errors.
   14718 
   14719         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added / removed
   14720         new / old project files.
   14721 
   14722         * jit/JIT.cpp:
   14723         (JSC::JIT::privateCompileCTIMachineTrampolines): Used #pragma pack to tell
   14724         MSVC that these structures represent actual memory layout, and should not be
   14725         automatically aligned. Changed the return value load to load a 64bit quantity
   14726         into the canonical registers.
   14727 
   14728         * jit/JIT.h: Moved OBJECT_OFFSETOF definition to StdLibExtras.h because
   14729         it's needed by more than just the JIT, and it supplements a standard library
   14730         macro (offsetof).
   14731 
   14732         * jit/JITCall.cpp:
   14733         (JSC::JIT::compileOpCallInitializeCallFrame): Fixed an incorrectly signed
   14734         cast to resolve an MSVC warning.
   14735 
   14736         * jit/JITStubs.h: Used #pragma pack to tell MSVC that these structures
   14737         represent actual memory layout, and should not be automatically aligned. 
   14738 
   14739         * runtime/JSArray.cpp:
   14740         (JSC::JSArray::JSArray): Replaced memset_pattern8 with a for loop, since
   14741         memset_pattern8 is not portable. (I verified that this version of the loop
   14742         gives the best performance / generated code in GCC.)
   14743 
   14744         * runtime/JSObject.h:
   14745         (JSC::JSObject::JSObject): Removed accidental usage of FIELD_OFFSET --
   14746         OBJECT_OFFSETOF is our new macro name. (FIELD_OFFSET conflicts with a
   14747         definition in winnt.h.)
   14748 
   14749         * runtime/JSValue.cpp: Added some headers needed by non-all-in-one builds.
   14750         
   14751         * runtime/JSValue.h:
   14752         (JSC::JSValue::): Made the tag signed, to match MSVC's signed enum values.
   14753         (GCC doesn't seem to care one way or the other.)
   14754 
   14755         * wtf/MainThread.cpp: Moved the StdLibExtras.h #include -- I did this a
   14756         while ago to resolve a conflict with winnt.h. I can't remember if it's truly
   14757         still needed, but what the heck.
   14758 
   14759         * wtf/StdLibExtras.h: Moved OBJECT_OFFSETOF definition here.
   14760 
   14761 2009-07-06  Geoffrey Garen  <ggaren (a] apple.com>
   14762 
   14763         Reviewed by Sam Weinig (?).
   14764         
   14765         Fixed an assertion seen during the stress test.
   14766         
   14767         Don't assume that, if op1 is constant, op2 is not, and vice versa. Sadly,
   14768         not all constants get folded.
   14769 
   14770         * jit/JITArithmetic.cpp:
   14771         (JSC::JIT::emit_op_jnless):
   14772         (JSC::JIT::emitSlow_op_jnless):
   14773         (JSC::JIT::emit_op_jnlesseq):
   14774         (JSC::JIT::emitSlow_op_jnlesseq):
   14775 
   14776 2009-07-06  Geoffrey Garen  <ggaren (a] apple.com>
   14777 
   14778         Reviewed by Sam Weinig.
   14779         
   14780         Include op_convert_this in result caching.
   14781         
   14782         No change on SunSpider or v8.
   14783 
   14784         * jit/JITOpcodes.cpp:
   14785         (JSC::JIT::emit_op_convert_this):
   14786 
   14787         * jit/JITStubs.cpp:
   14788         (JSC::DEFINE_STUB_FUNCTION):
   14789         * jit/JITStubs.h:
   14790         (JSC::): Made the op_convert_this JIT stub return an EncodedJSValue, so
   14791         to maintain the result caching contract that { tag, payload } can be
   14792         found in { regT1, regT0 }.
   14793 
   14794 2009-07-06  Geoffrey Garen  <ggaren (a] apple.com>
   14795 
   14796         Reviewed by Sam Weinig.
   14797         
   14798         Implemented result chaining.
   14799         
   14800         1% faster on SunSpider. 4%-5% faster on v8.
   14801 
   14802         * assembler/MacroAssemblerX86Common.h:
   14803         (JSC::MacroAssemblerX86Common::move):
   14804         * assembler/X86Assembler.h:
   14805         (JSC::X86Assembler::movl_rr): Added an optimization to eliminate
   14806         no-op mov instructions, to simplify chaining.
   14807 
   14808         * jit/JIT.cpp:
   14809         (JSC::JIT::JIT):
   14810         * jit/JIT.h: Added data members and helper functions for recording
   14811         chained results. We record both a mapping from virtual to machine register
   14812         and the opcode for which the mapping is valid, to help ensure that the
   14813         mapping isn't used after the mapped register has been stomped by other
   14814         instructions.
   14815 
   14816         * jit/JITCall.cpp:
   14817         (JSC::JIT::compileOpCallVarargs):
   14818         (JSC::JIT::compileOpCallVarargsSlowCase):
   14819         (JSC::JIT::emit_op_ret):
   14820         (JSC::JIT::emit_op_construct_verify):
   14821         (JSC::JIT::compileOpCall):
   14822         (JSC::JIT::compileOpCallSlowCase): Chain function call results.
   14823 
   14824         * jit/JITInlineMethods.h:
   14825         (JSC::JIT::emitLoadTag):
   14826         (JSC::JIT::emitLoadPayload):
   14827         (JSC::JIT::emitLoad):
   14828         (JSC::JIT::emitLoad2):
   14829         (JSC::JIT::isLabeled):
   14830         (JSC::JIT::map):
   14831         (JSC::JIT::unmap):
   14832         (JSC::JIT::isMapped):
   14833         (JSC::JIT::getMappedPayload):
   14834         (JSC::JIT::getMappedTag): Use helper functions when loading virtual
   14835         registers into machine registers, in case the loads can be eliminated
   14836         by chaining.
   14837 
   14838         * jit/JITOpcodes.cpp:
   14839         (JSC::JIT::emit_op_mov):
   14840         (JSC::JIT::emit_op_end):
   14841         (JSC::JIT::emit_op_instanceof):
   14842         (JSC::JIT::emit_op_get_global_var):
   14843         (JSC::JIT::emit_op_put_global_var):
   14844         (JSC::JIT::emit_op_get_scoped_var):
   14845         (JSC::JIT::emit_op_put_scoped_var):
   14846         (JSC::JIT::emit_op_to_primitive):
   14847         (JSC::JIT::emit_op_resolve_global):
   14848         (JSC::JIT::emit_op_jneq_ptr):
   14849         (JSC::JIT::emit_op_next_pname):
   14850         (JSC::JIT::emit_op_to_jsnumber):
   14851         (JSC::JIT::emit_op_catch): Chain results from these opcodes.
   14852 
   14853         (JSC::JIT::emit_op_profile_will_call):
   14854         (JSC::JIT::emit_op_profile_did_call): Load the profiler into regT2 to
   14855         avoid stomping a chained result.
   14856 
   14857         * jit/JITPropertyAccess.cpp:
   14858         (JSC::JIT::emit_op_method_check):
   14859         (JSC::JIT::emit_op_get_by_val):
   14860         (JSC::JIT::emit_op_get_by_id): Chain results from these opcodes.
   14861 
   14862         * jit/JITStubCall.h:
   14863         (JSC::JITStubCall::addArgument): Always use { regT1, regT0 }, to facilitate
   14864         chaining.
   14865 
   14866         (JSC::JITStubCall::call): Unmap all mapped registers, since our callee
   14867         stub might stomp them.
   14868 
   14869 2009-07-01  Sam Weinig  <sam (a] webkit.org>
   14870 
   14871         Reviewed by Gavin Barraclough.
   14872 
   14873         Don't reload values in emitBinaryDoubleOp.
   14874 
   14875         SunSpider reports a 0.6% progression. 
   14876 
   14877         * jit/JIT.h:
   14878         * jit/JITArithmetic.cpp:
   14879         (JSC::JIT::emit_op_jnless):
   14880         (JSC::JIT::emit_op_jnlesseq):
   14881         (JSC::JIT::emitBinaryDoubleOp):
   14882 
   14883 2009-07-01  Sam Weinig  <sam (a] webkit.org>
   14884 
   14885         Reviewed by Geoffrey Garen.
   14886 
   14887         Convert op_div to load op1 and op2 up front.
   14888 
   14889         * jit/JITArithmetic.cpp:
   14890         (JSC::JIT::emit_op_div):
   14891 
   14892 2009-07-01  Sam Weinig  <sam (a] webkit.org>
   14893 
   14894         Reviewed by Geoffrey Garen.
   14895 
   14896         Don't emit code in emitBinaryDoubleOp if code is unreachable, observable
   14897         via an empty (unlinked) jumplist passed in.  This only effects op_jnless
   14898         and op_jnlesseq at present.
   14899 
   14900         * jit/JITArithmetic.cpp:
   14901         (JSC::JIT::emitSlow_op_jnless):
   14902         (JSC::JIT::emitSlow_op_jnlesseq):
   14903         (JSC::JIT::emitBinaryDoubleOp):
   14904 
   14905 2009-07-01  Geoffrey Garen  <ggaren (a] apple.com>
   14906 
   14907         Reviewed by Sam Weinig.
   14908 
   14909         Converted op_mod to put { tag, payload } in { regT1, regT0 }, and
   14910         tidied up its constant case.
   14911         
   14912         SunSpider reports a 0.2% regression, but a micro-benchmark of op_mod
   14913         shows a 12% speedup, and the SunSpider test that uses op_mod most should
   14914         benefit a lot from result caching in the end, since it almost always
   14915         performs (expression) % constant.
   14916 
   14917         * jit/JITArithmetic.cpp:
   14918         (JSC::JIT::emit_op_mod):
   14919         (JSC::JIT::emitSlow_op_mod):
   14920 
   14921 2009-06-30  Sam Weinig  <sam (a] webkit.org>
   14922 
   14923         Reviewed by Geoffrey Garen.
   14924 
   14925         Converted some more arithmetic ops to put { tag, payload } in
   14926         { regT1, regT0 }.
   14927 
   14928         * jit/JITArithmetic.cpp:
   14929         (JSC::JIT::emit_op_mul):
   14930         (JSC::JIT::emitSlow_op_mul):
   14931 
   14932 2009-06-30  Geoffrey Garen  <ggaren (a] apple.com>
   14933 
   14934         Reviewed by Sam Weinig.
   14935 
   14936         Converted some more arithmetic ops to put { tag, payload } in
   14937         { regT1, regT0 }, and added a case for subtract constant.
   14938         
   14939         SunSpider says no change. v8 says 0.3% slower.
   14940 
   14941         * jit/JIT.h:
   14942         * jit/JITArithmetic.cpp:
   14943         (JSC::JIT::emit_op_add):
   14944         (JSC::JIT::emitAdd32Constant):
   14945         (JSC::JIT::emitSlow_op_add):
   14946         (JSC::JIT::emit_op_sub):
   14947         (JSC::JIT::emitSub32Constant):
   14948         (JSC::JIT::emitSlow_op_sub):
   14949 
   14950 2009-06-30  Gavin Barraclough  <barraclough (a] apple.com>
   14951 
   14952         Reviewed by Sam Weinig.
   14953 
   14954         Remove more uses of addressFor(), load double constants directly from
   14955         the constantpool in the CodeBlock, rather than from the register file.
   14956 
   14957         * jit/JITArithmetic.cpp:
   14958         (JSC::JIT::emitAdd32Constant):
   14959         (JSC::JIT::emitBinaryDoubleOp):
   14960 
   14961 2009-06-30  Geoffrey Garen  <ggaren (a] apple.com>
   14962 
   14963         Reviewed by Sam Weinig.
   14964         
   14965         Fixed a bug in postfix ops, where we would treat x = x++ and x = x--
   14966         as a no-op, even if x were not an int, and the ++/-- could have side-effects.
   14967 
   14968         * jit/JITArithmetic.cpp:
   14969         (JSC::JIT::emit_op_post_inc):
   14970         (JSC::JIT::emitSlow_op_post_inc):
   14971         (JSC::JIT::emit_op_post_dec):
   14972         (JSC::JIT::emitSlow_op_post_dec):
   14973 
   14974 2009-06-30  Geoffrey Garen  <ggaren (a] apple.com>
   14975 
   14976         Reviewed by Sam Weinig.
   14977         
   14978         Converted some arithmetic ops to put { tag, payload } in
   14979         { regT1, regT0 }.
   14980         
   14981         SunSpider says 0.7% faster. v8 says no change.
   14982 
   14983         * jit/JIT.h:
   14984         * jit/JITArithmetic.cpp:
   14985         (JSC::JIT::emit_op_jnless):
   14986         (JSC::JIT::emit_op_jnlesseq):
   14987         (JSC::JIT::emit_op_lshift):
   14988         (JSC::JIT::emit_op_rshift):
   14989         (JSC::JIT::emit_op_bitand):
   14990         (JSC::JIT::emit_op_bitor):
   14991         (JSC::JIT::emit_op_bitxor):
   14992         * jit/JITInlineMethods.h:
   14993         (JSC::JIT::isOperandConstantImmediateInt):
   14994         (JSC::JIT::getOperandConstantImmediateInt):
   14995 
   14996 2009-06-30  Gavin Barraclough  <barraclough (a] apple.com>
   14997 
   14998         Reviewed by Sam Weinig.
   14999 
   15000         Start removing cases of addressFor().
   15001 
   15002         * jit/JIT.h:
   15003         * jit/JITArithmetic.cpp:
   15004         (JSC::JIT::emitAdd32Constant):
   15005         (JSC::JIT::emitBinaryDoubleOp):
   15006         (JSC::JIT::emit_op_div):
   15007         * jit/JITInlineMethods.h:
   15008         (JSC::JIT::emitLoadDouble):
   15009         (JSC::JIT::emitLoadInt32ToDouble):
   15010         (JSC::JIT::emitStoreDouble):
   15011         * jit/JITOpcodes.cpp:
   15012         (JSC::JIT::emit_op_jfalse):
   15013         (JSC::JIT::emit_op_jtrue):
   15014 
   15015 2009-06-30  Geoffrey Garen  <ggaren (a] apple.com>
   15016 
   15017         Rolled back in my last patch with regression fixed.
   15018 
   15019         * jit/JIT.cpp:
   15020         (JSC::JIT::privateCompileSlowCases):
   15021         * jit/JIT.h:
   15022         * jit/JITOpcodes.cpp:
   15023         (JSC::JIT::emit_op_loop_if_less):
   15024         (JSC::JIT::emit_op_loop_if_lesseq):
   15025         (JSC::JIT::emit_op_resolve_global):
   15026         (JSC::JIT::emitSlow_op_resolve_global):
   15027         (JSC::JIT::emit_op_eq):
   15028         (JSC::JIT::emitSlow_op_eq):
   15029         (JSC::JIT::emit_op_neq):
   15030         (JSC::JIT::emitSlow_op_neq):
   15031 
   15032 2009-06-30  Geoffrey Garen  <ggaren (a] apple.com>
   15033 
   15034         Rolled out my last patch because it was a 2% SunSpider regression.
   15035 
   15036         * jit/JIT.cpp:
   15037         (JSC::JIT::privateCompileSlowCases):
   15038         * jit/JIT.h:
   15039         * jit/JITOpcodes.cpp:
   15040         (JSC::JIT::emit_op_loop_if_less):
   15041         (JSC::JIT::emit_op_loop_if_lesseq):
   15042         (JSC::JIT::emit_op_resolve_global):
   15043         (JSC::JIT::emit_op_eq):
   15044         (JSC::JIT::emitSlow_op_eq):
   15045         (JSC::JIT::emit_op_neq):
   15046         (JSC::JIT::emitSlow_op_neq):
   15047 
   15048 2009-06-30  Geoffrey Garen  <ggaren (a] apple.com>
   15049 
   15050         Reviewed by Gavin "Sam Weinig" Barraclough.
   15051         
   15052         Standardized the rest of our opcodes to put { tag, payload } in
   15053         { regT1, regT0 } where possible.
   15054 
   15055         * jit/JIT.cpp:
   15056         (JSC::JIT::privateCompileSlowCases):
   15057         * jit/JIT.h:
   15058         * jit/JITOpcodes.cpp:
   15059         (JSC::JIT::emit_op_loop_if_less):
   15060         (JSC::JIT::emit_op_loop_if_lesseq):
   15061         (JSC::JIT::emit_op_resolve_global):
   15062         (JSC::JIT::emitSlow_op_resolve_global):
   15063         (JSC::JIT::emit_op_eq):
   15064         (JSC::JIT::emitSlow_op_eq):
   15065         (JSC::JIT::emit_op_neq):
   15066         (JSC::JIT::emitSlow_op_neq):
   15067 
   15068 2009-06-30  Gavin Barraclough  <barraclough (a] apple.com>
   15069 
   15070         Reviewed by Geoffrey Garen.
   15071 
   15072         Replace calls to store32(tagFor()) and store32(payloadFor())
   15073         with emitStoreInt32(), emitStoreBool(), and emitStoreCell().
   15074 
   15075         * jit/JIT.h:
   15076         * jit/JITArithmetic.cpp:
   15077         (JSC::JIT::emit_op_negate):
   15078         (JSC::JIT::emit_op_lshift):
   15079         (JSC::JIT::emit_op_rshift):
   15080         (JSC::JIT::emit_op_bitand):
   15081         (JSC::JIT::emitBitAnd32Constant):
   15082         (JSC::JIT::emit_op_bitor):
   15083         (JSC::JIT::emitBitOr32Constant):
   15084         (JSC::JIT::emit_op_bitxor):
   15085         (JSC::JIT::emitBitXor32Constant):
   15086         (JSC::JIT::emit_op_bitnot):
   15087         (JSC::JIT::emit_op_post_inc):
   15088         (JSC::JIT::emit_op_post_dec):
   15089         (JSC::JIT::emit_op_pre_inc):
   15090         (JSC::JIT::emit_op_pre_dec):
   15091         (JSC::JIT::emit_op_add):
   15092         (JSC::JIT::emitAdd32Constant):
   15093         (JSC::JIT::emit_op_sub):
   15094         (JSC::JIT::emitSub32ConstantLeft):
   15095         (JSC::JIT::emitSub32ConstantRight):
   15096         (JSC::JIT::emit_op_mul):
   15097         (JSC::JIT::emitSlow_op_mul):
   15098         (JSC::JIT::emit_op_div):
   15099         (JSC::JIT::emit_op_mod):
   15100         * jit/JITCall.cpp:
   15101         (JSC::JIT::emit_op_load_varargs):
   15102         * jit/JITInlineMethods.h:
   15103         (JSC::JIT::emitStoreInt32):
   15104         (JSC::JIT::emitStoreCell):
   15105         (JSC::JIT::emitStoreBool):
   15106         (JSC::JIT::emitStore):
   15107         * jit/JITOpcodes.cpp:
   15108         (JSC::JIT::emit_op_instanceof):
   15109         (JSC::JIT::emit_op_not):
   15110         (JSC::JIT::emit_op_eq):
   15111         (JSC::JIT::emitSlow_op_eq):
   15112         (JSC::JIT::emit_op_neq):
   15113         (JSC::JIT::emitSlow_op_neq):
   15114         (JSC::JIT::compileOpStrictEq):
   15115         (JSC::JIT::emit_op_eq_null):
   15116         (JSC::JIT::emit_op_neq_null):
   15117         * jit/JITStubCall.h:
   15118         (JSC::JITStubCall::call):
   15119 
   15120 2009-06-30  Geoffrey Garen  <ggaren (a] apple.com>
   15121 
   15122         Reviewed by Sam Weinig.
   15123         
   15124         Standardized the rest of the property access instructions to put { tag,
   15125         payload } in { regT1, regT0 }.
   15126 
   15127         Small v8 speedup, 0.2% SunSpider slowdown.
   15128 
   15129         * jit/JIT.h:
   15130         * jit/JITInlineMethods.h:
   15131         (JSC::JIT::emitLoad):
   15132         (JSC::JIT::emitLoad2):
   15133         * jit/JITPropertyAccess.cpp:
   15134         (JSC::JIT::emit_op_get_by_val):
   15135         (JSC::JIT::emitSlow_op_get_by_val):
   15136         (JSC::JIT::emit_op_put_by_val):
   15137         (JSC::JIT::emitSlow_op_put_by_val):
   15138         (JSC::JIT::emit_op_put_by_id):
   15139         (JSC::JIT::emitSlow_op_put_by_id):
   15140         (JSC::JIT::patchPutByIdReplace):
   15141 
   15142 2009-06-29  Sam Weinig  <sam (a] webkit.org>
   15143 
   15144         Reviewed by Gavin Barraclough.
   15145 
   15146         Various cleanups.
   15147         - Use fpRegT* instead of X86::xmm*.
   15148         - Use a switch statement in emitBinaryDoubleOp instead of a bunch of
   15149           if/elses.
   15150 
   15151         * jit/JITArithmetic.cpp:
   15152         (JSC::JIT::emitAdd32Constant):
   15153         (JSC::JIT::emitBinaryDoubleOp):
   15154         (JSC::JIT::emit_op_div):
   15155 
   15156 2009-06-29  Sam Weinig  <sam (a] webkit.org>
   15157 
   15158         Reviewed by Geoffrey Garen.
   15159 
   15160         Add inline code dealing with doubles for op_jfalse and op_jtrue.
   15161 
   15162         * assembler/MacroAssemblerX86Common.h:
   15163         (JSC::MacroAssemblerX86Common::):
   15164         (JSC::MacroAssemblerX86Common::zeroDouble):
   15165         * jit/JITOpcodes.cpp:
   15166         (JSC::JIT::emit_op_jfalse):
   15167         (JSC::JIT::emit_op_jtrue):
   15168 
   15169 2009-06-28  Geoffrey Garen  <ggaren (a] apple.com>
   15170 
   15171         Reviewed by Sam Weinig.
   15172 
   15173         Standardized op_get_by_id to put { tag, payload } in { regT1, regT0 }.
   15174         
   15175         SunSpider and v8 report maybe 0.2%-0.4% regressions, but the optimization
   15176         this enables will win much more than that back.
   15177 
   15178         * jit/JIT.cpp:
   15179         (JSC::JIT::privateCompileCTIMachineTrampolines):
   15180         * jit/JIT.h:
   15181         * jit/JITPropertyAccess.cpp:
   15182         (JSC::JIT::emit_op_method_check):
   15183         (JSC::JIT::emit_op_get_by_id):
   15184         (JSC::JIT::compileGetByIdHotPath):
   15185         (JSC::JIT::compileGetByIdSlowCase):
   15186         (JSC::JIT::patchGetByIdSelf):
   15187         (JSC::JIT::privateCompilePatchGetArrayLength):
   15188         (JSC::JIT::privateCompileGetByIdProto):
   15189         (JSC::JIT::privateCompileGetByIdSelfList):
   15190         (JSC::JIT::privateCompileGetByIdProtoList):
   15191         (JSC::JIT::privateCompileGetByIdChainList):
   15192         (JSC::JIT::privateCompileGetByIdChain):
   15193 
   15194 2009-06-26  Geoffrey Garen  <ggaren (a] apple.com>
   15195 
   15196         Reviewed by Maciej Stachowiak.
   15197         
   15198         Standardized op_call to put { tag, payload } in { regT1, regT0 }.
   15199         
   15200         SunSpider and v8 report no change.
   15201 
   15202         * jit/JIT.cpp:
   15203         (JSC::JIT::privateCompileCTIMachineTrampolines):
   15204         * jit/JITCall.cpp:
   15205         (JSC::JIT::compileOpCallInitializeCallFrame):
   15206         (JSC::JIT::compileOpCallSetupArgs):
   15207         (JSC::JIT::compileOpConstructSetupArgs):
   15208         (JSC::JIT::compileOpCallVarargsSetupArgs):
   15209         (JSC::JIT::compileOpCallVarargs):
   15210         (JSC::JIT::compileOpCall):
   15211         (JSC::JIT::compileOpCallSlowCase):
   15212 
   15213 2009-06-26  Sam Weinig  <sam (a] webkit.org>
   15214 
   15215         Reviewed by Geoffrey Garen.
   15216 
   15217         Handle multiplying by zero a little better by
   15218         inlining the case that both operands are non-negative
   15219         into the slowpath.
   15220 
   15221         * assembler/MacroAssemblerX86Common.h:
   15222         (JSC::MacroAssemblerX86Common::branchOr32):
   15223         * jit/JITArithmetic.cpp:
   15224         (JSC::JIT::emit_op_mul):
   15225         (JSC::JIT::emitSlow_op_mul):
   15226 
   15227 2009-06-25  Geoffrey Garen  <ggaren (a] apple.com>
   15228 
   15229         Reviewed by Sam Weinig.
   15230         
   15231         Optimize x++ to ++x inside for loops.
   15232         
   15233         Sadly, no measurable speedup, but this should help with result chaining.
   15234 
   15235         * parser/Nodes.cpp:
   15236         (JSC::ForNode::emitBytecode):
   15237 
   15238 2009-06-25  Geoffrey Garen  <ggaren (a] apple.com>
   15239 
   15240         Reviewed by Sam Weinig.
   15241         
   15242         Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
   15243 
   15244         * jit/JITArithmetic.cpp:
   15245         (JSC::JIT::emitSlow_op_bitnot):
   15246         (JSC::JIT::emit_op_post_inc):
   15247 
   15248 2009-06-25  Geoffrey Garen  <ggaren (a] apple.com>
   15249 
   15250         Reviewed by Sam Weinig.
   15251         
   15252         Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
   15253 
   15254         * jit/JITArithmetic.cpp:
   15255         (JSC::JIT::emit_op_bitnot):
   15256         (JSC::JIT::emit_op_post_dec):
   15257         (JSC::JIT::emit_op_pre_inc):
   15258         (JSC::JIT::emitSlow_op_pre_inc):
   15259         (JSC::JIT::emit_op_pre_dec):
   15260         (JSC::JIT::emitSlow_op_pre_dec):
   15261 
   15262 2009-06-25  Geoffrey Garen  <ggaren (a] apple.com>
   15263 
   15264         Reviewed by Sam Weinig.
   15265         
   15266         Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
   15267 
   15268         * jit/JITArithmetic.cpp:
   15269         (JSC::JIT::emit_op_negate):
   15270         (JSC::JIT::emitSlow_op_negate):
   15271         * jit/JITCall.cpp:
   15272         (JSC::JIT::emit_op_construct_verify):
   15273         (JSC::JIT::emitSlow_op_construct_verify):
   15274 
   15275 2009-06-25  Geoffrey Garen  <ggaren (a] apple.com>
   15276 
   15277         Reviewed by Sam Weinig.
   15278         
   15279         Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
   15280 
   15281         * jit/JITOpcodes.cpp:
   15282         (JSC::JIT::emit_op_loop_if_true):
   15283         (JSC::JIT::emit_op_jfalse):
   15284         (JSC::JIT::emit_op_jtrue):
   15285         (JSC::JIT::emit_op_jeq_null):
   15286         (JSC::JIT::emit_op_jneq_null):
   15287         (JSC::JIT::emit_op_eq_null):
   15288         (JSC::JIT::emit_op_neq_null):
   15289 
   15290 2009-06-25  Geoffrey Garen  <ggaren (a] apple.com>
   15291 
   15292         Reviewed by Sam Weinig (sort of, maybe).
   15293         
   15294         Fixed some ASSERTs in http/tests/security.
   15295         
   15296         These ASSERTs were introduced by http://trac.webkit.org/changeset/45057,
   15297         but the underlying problem was actually older. http://trac.webkit.org/changeset/45057
   15298         just exposed the problem by enabling optimization in more cases.
   15299         
   15300         The ASSERTs fired because we tested PropertySlot::slotBase() for validity,
   15301         but slotBase() ASSERTs if it's invalid, so we would ASSERT before
   15302         the test could happen. Solution: Remove the ASSERT. Maybe it was valid
   15303         once, but it clearly goes against a pattern we've deployed of late.
   15304         
   15305         The underlying problem was that WebCore would re-use a PropertySlot in
   15306         the case of a forwarding access, and the second use would not completely
   15307         overwrite the first use. Solution: Make sure to overwrite m_offset when
   15308         setting a value on a PropertySlot. (Other values already get implicitly
   15309         overwritten during reuse.)
   15310 
   15311         * runtime/PropertySlot.h:
   15312         (JSC::PropertySlot::PropertySlot):
   15313         (JSC::PropertySlot::setValueSlot):
   15314         (JSC::PropertySlot::setValue):
   15315         (JSC::PropertySlot::setRegisterSlot):
   15316         (JSC::PropertySlot::setUndefined):
   15317         (JSC::PropertySlot::slotBase):
   15318         (JSC::PropertySlot::clearOffset):
   15319 
   15320 2009-06-24  Gavin Barraclough  <barraclough (a] apple.com>
   15321 
   15322         Reviewed by Geoff Garen.
   15323 
   15324         Enable JIT_OPTIMIZE_METHOD_CALLS on the branch, implementation matches current implemenatation in ToT.
   15325 
   15326         * jit/JIT.h:
   15327         * jit/JITPropertyAccess.cpp:
   15328         (JSC::JIT::emit_op_method_check):
   15329         (JSC::JIT::emitSlow_op_method_check):
   15330         (JSC::JIT::emit_op_get_by_id):
   15331         (JSC::JIT::compileGetByIdHotPath):
   15332         (JSC::JIT::emitSlow_op_get_by_id):
   15333         (JSC::JIT::compileGetByIdSlowCase):
   15334 
   15335 2009-06-23  Geoffrey Garen  <ggaren (a] apple.com>
   15336 
   15337         Reviewed by Sam Weinig.
   15338 
   15339         Bit off a tiny bit more of standardizing opcode behavior to help with result
   15340         caching.
   15341         
   15342         SunSpider reports no change, v8 maybe a tiny speedup.
   15343 
   15344         * jit/JITOpcodes.cpp:
   15345         (JSC::JIT::emit_op_to_jsnumber):
   15346         (JSC::JIT::emitSlow_op_to_jsnumber):
   15347         (JSC::JIT::emit_op_convert_this):
   15348         (JSC::JIT::emitSlow_op_convert_this):
   15349 
   15350 2009-06-23  Geoffrey Garen  <ggaren (a] apple.com>
   15351 
   15352         Reviewed by Sam Weinig.
   15353 
   15354         Bit off a tiny bit more of standardizing opcode behavior to help with result
   15355         caching -- including removing my old enemy, op_resolve_function, because
   15356         it was non-standard, and removing it felt better than helping it limp along.
   15357         
   15358         SunSpider reports no change, v8 maybe a tiny speedup.
   15359         
   15360         * bytecode/CodeBlock.cpp:
   15361         (JSC::CodeBlock::dump):
   15362         * bytecode/Opcode.h:
   15363         * bytecompiler/BytecodeGenerator.cpp:
   15364         * bytecompiler/BytecodeGenerator.h:
   15365         * interpreter/Interpreter.cpp:
   15366         (JSC::Interpreter::privateExecute):
   15367         * jit/JIT.cpp:
   15368         (JSC::JIT::privateCompileMainPass):
   15369         * jit/JIT.h:
   15370         * jit/JITOpcodes.cpp:
   15371         (JSC::JIT::emit_op_get_scoped_var):
   15372         (JSC::JIT::emit_op_put_scoped_var):
   15373         (JSC::JIT::emit_op_to_primitive):
   15374         (JSC::JIT::emitSlow_op_to_primitive):
   15375         * jit/JITStubs.cpp:
   15376         * jit/JITStubs.h:
   15377         * parser/Nodes.cpp:
   15378         (JSC::FunctionCallResolveNode::emitBytecode):
   15379 
   15380 2009-06-23  Geoffrey Garen  <ggaren (a] apple.com>
   15381 
   15382         Reviewed by Sam Weinig.
   15383         
   15384         Bit off a tiny bit of standardizing opcode behavior to help with result
   15385         caching.
   15386         
   15387         0.6% SunSpider speedup. 0.3% v8 speedup.
   15388 
   15389         * jit/JITInlineMethods.h:
   15390         (JSC::JIT::emitLoad): Accomodate a base register that overlaps with payload
   15391         by loading tag before payload, to avoid stomping base/payload.
   15392 
   15393         * jit/JITOpcodes.cpp:
   15394         (JSC::JIT::emit_op_mov): Abide by the standard "tag in regT1, payload in
   15395         regT0" semantics.
   15396 
   15397         (JSC::JIT::emit_op_get_global_var):
   15398         (JSC::JIT::emit_op_put_global_var): Ditto. Also, removed some irrelevent
   15399         loads while I was at it. The global object's "d" pointer never changes
   15400         after construction.
   15401 
   15402 2009-06-23  Gavin Barraclough  <barraclough (a] apple.com>
   15403 
   15404         Reviewed by Sam Weinig.
   15405 
   15406         Remove 'arguments' field from Register union (again).
   15407         This time do so without breaking tests (radical, I know).
   15408 
   15409         * interpreter/CallFrame.h:
   15410         (JSC::ExecState::optionalCalleeArguments):
   15411         (JSC::ExecState::setArgumentCount):
   15412         (JSC::ExecState::init):
   15413         * interpreter/Interpreter.cpp:
   15414         (JSC::Interpreter::dumpRegisters):
   15415         (JSC::Interpreter::unwindCallFrame):
   15416         (JSC::Interpreter::privateExecute):
   15417         (JSC::Interpreter::retrieveArguments):
   15418         * interpreter/Register.h:
   15419         (JSC::Register::withInt):
   15420         (JSC::Register::):
   15421         (JSC::Register::Register):
   15422         (JSC::Register::i):
   15423         * jit/JITStubs.cpp:
   15424         (JSC::JITStubs::cti_op_tear_off_arguments):
   15425         * runtime/Arguments.h:
   15426         (JSC::JSActivation::copyRegisters):
   15427         (JSC::Register::arguments):
   15428         * runtime/JSActivation.cpp:
   15429         (JSC::JSActivation::argumentsGetter):
   15430         * runtime/JSActivation.h:
   15431 
   15432 2009-06-23  Geoffrey Garen  <ggaren (a] apple.com>
   15433 
   15434         Reviewed by Sam Weinig.
   15435         
   15436         Removed some result register tracking cruft in preparation for a new
   15437         result tracking mechanism.
   15438         
   15439         SunSpider reports no change.
   15440 
   15441         * assembler/AbstractMacroAssembler.h:
   15442         * assembler/X86Assembler.h:
   15443         (JSC::X86Assembler::JmpDst::JmpDst): No need to track jump targets in
   15444         machine code; we already do this in bytecode.
   15445 
   15446         * jit/JIT.cpp:
   15447         (JSC::JIT::JIT):
   15448         (JSC::JIT::emitTimeoutCheck): Make sure to save and restore the result
   15449         registers, so an opcode with a timeout check can still benefit from result
   15450         register caching.
   15451 
   15452         (JSC::JIT::privateCompileMainPass):
   15453         (JSC::JIT::privateCompileSlowCases): Removed calls to killLastResultRegister()
   15454         in preparation for something new.
   15455 
   15456         * jit/JIT.h:
   15457         * jit/JITArithmetic.cpp:
   15458         (JSC::JIT::emit_op_jnless):
   15459         (JSC::JIT::emit_op_jnlesseq):
   15460         * jit/JITInlineMethods.h:
   15461         (JSC::JIT::emitGetFromCallFrameHeaderPtr):
   15462         (JSC::JIT::emitGetFromCallFrameHeader32):
   15463         * jit/JITOpcodes.cpp:
   15464         (JSC::JIT::emit_op_jmp):
   15465         (JSC::JIT::emit_op_jfalse):
   15466         (JSC::JIT::emit_op_jtrue):
   15467         (JSC::JIT::emit_op_jeq_null):
   15468         (JSC::JIT::emit_op_jneq_null):
   15469         (JSC::JIT::emit_op_jneq_ptr):
   15470         (JSC::JIT::emit_op_jsr):
   15471         (JSC::JIT::emit_op_sret):
   15472         (JSC::JIT::emit_op_jmp_scopes): ditto
   15473 
   15474         * jit/JITStubCall.h:
   15475         (JSC::JITStubCall::JITStubCall):
   15476         (JSC::JITStubCall::getArgument): added a mechanism for reloading an argument
   15477         you passed to a JIT stub, for use in emitTimeoutCheck.
   15478 
   15479 2009-06-23  Sam Weinig  <sam (a] webkit.org>
   15480 
   15481         Reviewed by Geoffrey Garen.
   15482 
   15483         Remove now-useless inplace variants of binary ops.
   15484 
   15485         * jit/JIT.h:
   15486         * jit/JITArithmetic.cpp:
   15487         (JSC::JIT::emit_op_bitand):
   15488         (JSC::JIT::emit_op_bitor):
   15489         (JSC::JIT::emit_op_bitxor):
   15490         (JSC::JIT::emit_op_add):
   15491         (JSC::JIT::emit_op_sub):
   15492         (JSC::JIT::emit_op_mul):
   15493 
   15494 2009-06-23  Sam Weinig  <sam (a] webkit.org>
   15495 
   15496         Reviewed by Geoffrey Garen.
   15497 
   15498         Move off memory operands to aid in re-enabling result caching.
   15499 
   15500         - No regression measured.
   15501 
   15502         * jit/JIT.h:
   15503         * jit/JITArithmetic.cpp:
   15504         (JSC::JIT::emit_op_negate):
   15505         (JSC::JIT::emit_op_jnless):
   15506         (JSC::JIT::emit_op_jnlesseq):
   15507         (JSC::JIT::emit_op_lshift):
   15508         (JSC::JIT::emit_op_rshift):
   15509         (JSC::JIT::emit_op_bitand):
   15510         (JSC::JIT::emitBitAnd32Constant):
   15511         (JSC::JIT::emitBitAnd32InPlace):
   15512         (JSC::JIT::emit_op_bitor):
   15513         (JSC::JIT::emitBitOr32Constant):
   15514         (JSC::JIT::emitBitOr32InPlace):
   15515         (JSC::JIT::emit_op_bitxor):
   15516         (JSC::JIT::emitBitXor32Constant):
   15517         (JSC::JIT::emitBitXor32InPlace):
   15518         (JSC::JIT::emit_op_bitnot):
   15519         (JSC::JIT::emit_op_post_inc):
   15520         (JSC::JIT::emit_op_post_dec):
   15521         (JSC::JIT::emit_op_pre_inc):
   15522         (JSC::JIT::emitSlow_op_pre_inc):
   15523         (JSC::JIT::emit_op_pre_dec):
   15524         (JSC::JIT::emitSlow_op_pre_dec):
   15525         (JSC::JIT::emit_op_add):
   15526         (JSC::JIT::emitAdd32Constant):
   15527         (JSC::JIT::emitAdd32InPlace):
   15528         (JSC::JIT::emitSlow_op_add):
   15529         (JSC::JIT::emitSlowAdd32Constant):
   15530         (JSC::JIT::emit_op_sub):
   15531         (JSC::JIT::emitSlow_op_sub):
   15532         (JSC::JIT::emitSub32ConstantLeft):
   15533         (JSC::JIT::emitSub32ConstantRight):
   15534         (JSC::JIT::emitSub32InPlaceLeft):
   15535         (JSC::JIT::emitSub32InPlaceRight):
   15536         (JSC::JIT::emitBinaryDoubleOp):
   15537         (JSC::JIT::emit_op_mul):
   15538         (JSC::JIT::emitMul32InPlace):
   15539         (JSC::JIT::emit_op_div):
   15540         (JSC::JIT::emit_op_mod):
   15541         * jit/JITCall.cpp:
   15542         (JSC::JIT::compileOpCallVarargs):
   15543         * jit/JITOpcodes.cpp:
   15544         (JSC::JIT::emit_op_loop_if_less):
   15545         (JSC::JIT::emit_op_loop_if_lesseq):
   15546         (JSC::JIT::emit_op_instanceof):
   15547         (JSC::JIT::emit_op_to_primitive):
   15548         (JSC::JIT::emit_op_not):
   15549         (JSC::JIT::emit_op_jneq_ptr):
   15550         (JSC::JIT::emit_op_eq):
   15551         (JSC::JIT::emit_op_neq):
   15552         (JSC::JIT::emit_op_to_jsnumber):
   15553         * jit/JITPropertyAccess.cpp:
   15554         (JSC::JIT::emit_op_get_by_val):
   15555         (JSC::JIT::emit_op_put_by_val):
   15556 
   15557 2009-06-23  Geoffrey Garen  <ggaren (a] apple.com>
   15558 
   15559         Reviewed by Sam Weinig.
   15560         
   15561         Fixed some missing and/or misplaced labels in bytecode generation, so
   15562         we don't have to work around them in JIT code generation.
   15563 
   15564         * bytecompiler/BytecodeGenerator.cpp:
   15565         (JSC::BytecodeGenerator::emitJumpSubroutine):
   15566         * parser/Nodes.cpp:
   15567         (JSC::TryNode::emitBytecode):
   15568 
   15569 2009-06-22  Geoffrey Garen  <ggaren (a] apple.com>
   15570 
   15571         Reviewed by Sam Weinig.
   15572         
   15573         For member function calls, emit "this" directly into the "this" slot
   15574         for the function call, instead of moving it there later. This reduces
   15575         time spent in op_mov during certain calls, like "a.b.c()".
   15576         
   15577         1%-2% speedup on v8, mostly richards and delta-blue.
   15578 
   15579         * parser/Nodes.cpp:
   15580         (JSC::FunctionCallDotNode::emitBytecode):
   15581 
   15582 2009-06-22  Gavin Barraclough  <barraclough (a] apple.com>
   15583 
   15584         Reviewed by Sam Weinig.
   15585 
   15586         Remove 'arguments' field from Register union.  Having JSCell derived types in the union is
   15587         dangerous since it opens the possibility for the field to be written as a raw pointer but
   15588         then read as a JSValue.  This will lead to statle data being read for the tag, which may
   15589         be dangerous.  Having removed Arguments* types form Register, all arguments objects must
   15590         always explicitly be stored in the register file as JSValues.
   15591 
   15592         * interpreter/CallFrame.h:
   15593         (JSC::ExecState::optionalCalleeArguments):
   15594         * interpreter/Interpreter.cpp:
   15595         (JSC::Interpreter::unwindCallFrame):
   15596         (JSC::Interpreter::privateExecute):
   15597         (JSC::Interpreter::retrieveArguments):
   15598         * interpreter/Register.h:
   15599         (JSC::Register::):
   15600         * jit/JITStubs.cpp:
   15601         (JSC::JITStubs::cti_op_tear_off_arguments):
   15602         * runtime/Arguments.h:
   15603         (JSC::JSActivation::copyRegisters):
   15604         * runtime/JSActivation.cpp:
   15605         (JSC::JSActivation::argumentsGetter):
   15606         * runtime/JSActivation.h:
   15607 
   15608 2009-06-03  Sam Weinig  <sam (a] webkit.org>
   15609 
   15610         Reviewed by Geoffrey Garen.
   15611 
   15612         Add back known this value optimization by abstracting
   15613         slow case if not JSCell jumps.
   15614 
   15615         * jit/JIT.h:
   15616         * jit/JITCall.cpp:
   15617         (JSC::JIT::compileOpCallVarargs):
   15618         (JSC::JIT::compileOpCallVarargsSlowCase):
   15619         (JSC::JIT::compileOpCall):
   15620         (JSC::JIT::compileOpCallSlowCase):
   15621         * jit/JITInlineMethods.h:
   15622         (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
   15623         (JSC::JIT::linkSlowCaseIfNotJSCell):
   15624         * jit/JITOpcodes.cpp:
   15625         (JSC::JIT::emit_op_instanceof):
   15626         (JSC::JIT::emitSlow_op_instanceof):
   15627         * jit/JITPropertyAccess.cpp:
   15628         (JSC::JIT::emit_op_get_by_val):
   15629         (JSC::JIT::emitSlow_op_get_by_val):
   15630         (JSC::JIT::emit_op_put_by_val):
   15631         (JSC::JIT::emitSlow_op_put_by_val):
   15632         (JSC::JIT::emit_op_get_by_id):
   15633         (JSC::JIT::emitSlow_op_get_by_id):
   15634         (JSC::JIT::emit_op_put_by_id):
   15635         (JSC::JIT::emitSlow_op_put_by_id):
   15636 
   15637 2009-06-01  Geoffrey Garen  <ggaren (a] apple.com>
   15638 
   15639         Reviewed by Sam Weinig.
   15640         
   15641         Fixed some of the regression in crypto-aes.js. (8.5% speedup in
   15642         crypto-aes.js.)
   15643         
   15644         SunSpider reports no change overall.
   15645         
   15646         Division was producing double results, which took the slow path through
   15647         array access code.
   15648         
   15649         Strangely, all my attempts at versions of this patch that modified array
   15650         access code to accept ints encoded as doubles along the fast or slow paths
   15651         were regressions. So I did this instead.
   15652 
   15653         * jit/JITArithmetic.cpp:
   15654         (JSC::JIT::emit_op_div): When dividing an int by an int, go ahead and try
   15655         to turn the result into an int. Don't just do int division, though, because
   15656         testing shows it to be slower than SSE double division, and the corner
   15657         cases are pretty complicated / lengthy on top of that. Also, don't try
   15658         to canonicalize division of known tiny numerators into ints, since that's a
   15659         waste of time.
   15660 
   15661 2009-05-26  Geoffrey Garen  <ggaren (a] apple.com>
   15662 
   15663         Reviewed by Oliver Hunt.
   15664         
   15665         Fixed a regression caused by my recent fix for NaN.
   15666 
   15667         * jit/JITArithmetic.cpp:
   15668         (JSC::JIT::emitBinaryDoubleOp): Actually do the comparison in reverse
   15669         order, like the ChangeLog said we would, bokay?
   15670 
   15671 2009-05-26  Geoffrey Garen  <ggaren (a] apple.com>
   15672 
   15673         Reviewed by Sam Weinig and Oliver Hunt.
   15674         
   15675         Fixed two edge cases in %:
   15676         
   15677         - Don't do -2147483648 % x as a fast case, since you might do -2147483648 % -1,
   15678         which will signal a hardware exception due to overflow.
   15679 
   15680         - In the case of a zero remainder, be sure to store negative zero if the
   15681         dividend was zero.
   15682         
   15683         SunSpider reports no change.
   15684 
   15685         * jit/JITArithmetic.cpp:
   15686         (JSC::JIT::emit_op_mod):
   15687         (JSC::JIT::emitSlow_op_mod):
   15688 
   15689 2009-05-25  Geoffrey Garen  <ggaren (a] apple.com>
   15690 
   15691         Reviewed by Maciej Stachowiak.
   15692         
   15693         Fixed a regression when comparing to NaN.
   15694 
   15695         * jit/JITArithmetic.cpp:
   15696         (JSC::JIT::emitBinaryDoubleOp): For op_jnless and op_jnless_eq, do the
   15697         comparison in reverse order, and jump if the result is below or 
   15698         below-or-equal. This ensures that we do jump in the case of NaN.
   15699 
   15700 2009-05-25  Geoffrey Garen  <ggaren (a] apple.com>
   15701 
   15702         Reviewed by Oliver Hunt.
   15703         
   15704         SunSpider says no change.
   15705         
   15706         Fixed regressions in fast/js/var-declarations-shadowing.html and
   15707         fast/js/equality.html, caused by recent == and != optimizations.
   15708 
   15709         * jit/JITStubs.cpp:
   15710         (JSC::JITStubs::cti_op_eq): Don't treat "compare to string" as always
   15711         numeric or string comparison. If the second operand is an object, you
   15712         need to ToPrimitive it, and start all over again. Also, I wrote out each
   15713         of the possible cases explicitly, to cut down on redundant branching.
   15714 
   15715 2009-05-25  Sam Weinig  <sam (a] webkit.org>
   15716 
   15717         Reviewed by Mark Rowe.
   15718 
   15719         Fix bug in fast/js/constant-folding.html where we were not negating
   15720         -0 properly.
   15721 
   15722         * jit/JITArithmetic.cpp:
   15723         (JSC::JIT::emit_op_negate):
   15724 
   15725 2009-05-23  Geoffrey Garen  <ggaren (a] apple.com>
   15726 
   15727         Reviewed by Oliver Hunt.
   15728         
   15729         Refactored new slow case codegen for == and !=.
   15730         
   15731         SunSpider reports no change, maybe a tiny speedup.
   15732 
   15733         * jit/JITOpcodes.cpp:
   15734         (JSC::JIT::emitSlow_op_eq):
   15735         (JSC::JIT::emitSlow_op_neq): Made a vptr comparison a *Ptr operation,
   15736         instead of *32, to make it portable to 64bit. Reorganized the string
   15737         and generic cases to make their control flow a little clearer.
   15738 
   15739 2009-05-23  Geoffrey Garen  <ggaren (a] apple.com>
   15740 
   15741         Reviewed by Maciej Stachowiak.
   15742         
   15743         Optimized == and != for our new value representation -- especially for strings.
   15744         
   15745         14% speedup on date-format-tofte.
   15746 
   15747         * jit/JITOpcodes.cpp:
   15748         (JSC::JIT::emit_op_eq):
   15749         (JSC::JIT::emitSlow_op_eq):
   15750         (JSC::JIT::emit_op_neq):
   15751         (JSC::JIT::emitSlow_op_neq):
   15752         * jit/JITStubCall.h:
   15753         (JSC::JITStubCall::JITStubCall):
   15754         * jit/JITStubs.cpp:
   15755         (JSC::JITStubs::cti_op_eq):
   15756         (JSC::JITStubs::cti_op_eq_strings):
   15757         (JSC::JITStubs::cti_op_call_eval):
   15758         * jit/JITStubs.h:
   15759         (JSC::):
   15760         * runtime/JSValue.h:
   15761 
   15762 2009-05-22  Sam Weinig  <sam (a] webkit.org>
   15763 
   15764         Reviewed by Gavin Barraclough.
   15765 
   15766         Fix non-SSE enabled builds.
   15767 
   15768         * jit/JITArithmetic.cpp:
   15769         (JSC::JIT::emitSlow_op_add): Don't early return here, we still need to call the JIT stub.
   15770         (JSC::JIT::emitSlow_op_sub): Ditto.
   15771 
   15772 2009-05-22  Geoffrey Garen  <ggaren (a] apple.com>
   15773 
   15774         Reviewed by Sam Weinig.
   15775         
   15776         Here's a thought: let's not take a jit stub call just to multiply by 1,
   15777         bokay?
   15778         
   15779         imul doesn't set the zero flag, so to test for a zero result, we need
   15780         an explicit instruction. (Luckily, it does set the overflow flag, so
   15781         we can still use that.)
   15782 
   15783         * jit/JIT.h:
   15784         * jit/JITArithmetic.cpp:
   15785         (JSC::JIT::emit_op_mul):
   15786         (JSC::JIT::emitSlow_op_mul):
   15787         (JSC::JIT::emitMul32InPlace):
   15788 
   15789 2009-05-22  Sam Weinig  <sam (a] webkit.org>
   15790 
   15791         Reviewed by Geoffrey "Premature Commit" Garen.
   15792 
   15793         Add back constant integer cases for op_add.
   15794 
   15795         * jit/JIT.h:
   15796         * jit/JITArithmetic.cpp:
   15797         (JSC::JIT::emit_op_add):
   15798         (JSC::JIT::emitAdd32Constant):
   15799         (JSC::JIT::emitSlow_op_add):
   15800         (JSC::JIT::emitSlowAdd32Constant):
   15801         * jit/JITInlineMethods.h:
   15802         (JSC::JIT::getConstantOperandImmediateDouble):
   15803         (JSC::JIT::isOperandConstantImmediateDouble):
   15804 
   15805 2009-05-22  Geoffrey Garen  <ggaren (a] apple.com>
   15806 
   15807         Reviewed by Sam Weinig.
   15808         
   15809         Added fast double cases for op_jnless and op_jnlesseq.
   15810 
   15811         * assembler/AbstractMacroAssembler.h:
   15812         (JSC::AbstractMacroAssembler::JumpList::jumps): New accesor, used by
   15813         addSlowCase.
   15814 
   15815         * assembler/X86Assembler.h:
   15816         (JSC::X86Assembler::ucomisd_rm): New method for comparing register to
   15817         memory.
   15818 
   15819         * jit/JIT.h:
   15820         * jit/JITArithmetic.cpp:
   15821         (JSC::JIT::emit_op_jnless):
   15822         (JSC::JIT::emitSlow_op_jnless):
   15823         (JSC::JIT::emit_op_jnlesseq):
   15824         (JSC::JIT::emitSlow_op_jnlesseq):
   15825         (JSC::JIT::emit_op_add):
   15826         (JSC::JIT::emit_op_sub):
   15827         (JSC::JIT::emitBinaryDoubleOp):
   15828         (JSC::JIT::emit_op_mul):
   15829         (JSC::JIT::emit_op_div): Modified emitBinaryDoubleOp to accept comparison/jump
   15830         operations in addition to operations with explicit result registers.
   15831 
   15832         * jit/JITInlineMethods.h:
   15833         (JSC::JIT::addSlowCase): Added an "addSlowCase" for JumpLists, so clients
   15834         can track multiple jumps to the same slow case condition together.
   15835 
   15836 2009-05-21  Sam Weinig  <sam (a] webkit.org>
   15837 
   15838         Reviewed by Gavin Barraclough.
   15839 
   15840         Implement op_negate inline fast cases.
   15841 
   15842         * assembler/MacroAssemblerX86Common.h:
   15843         (JSC::MacroAssemblerX86Common::neg32):
   15844         * assembler/X86Assembler.h:
   15845         (JSC::X86Assembler::):
   15846         (JSC::X86Assembler::negl_m):
   15847         (JSC::X86Assembler::xorpd_rr):
   15848         * jit/JIT.cpp:
   15849         (JSC::JIT::privateCompileMainPass):
   15850         (JSC::JIT::privateCompileSlowCases):
   15851         * jit/JIT.h:
   15852         * jit/JITArithmetic.cpp:
   15853         (JSC::JIT::emit_op_negate):
   15854         (JSC::JIT::emitSlow_op_negate):
   15855 
   15856 2009-05-20  Sam Weinig  <sam (a] webkit.org>
   15857 
   15858         Reviewed by Gavin Barraclough.
   15859 
   15860         Update the patchOffsetGetByIdSlowCaseCall constant for the
   15861         case that OPCODE_SAMPLING is enabled.
   15862 
   15863         * jit/JIT.h:
   15864 
   15865 2009-05-20  Geoffrey Garen  <ggaren (a] apple.com>
   15866 
   15867         Reviewed by Sam Weinig.
   15868 
   15869         Added support for inline subtraction of doubles.
   15870 
   15871         * jit/JITArithmetic.cpp:
   15872         (JSC::JIT::emit_op_sub):
   15873         (JSC::JIT::emitSlow_op_sub):
   15874         (JSC::JIT::emitSlowSub32InPlaceLeft):
   15875         (JSC::JIT::emitBinaryDoubleOp):
   15876 
   15877 2009-05-20  Sam Weinig  <sam (a] webkit.org>
   15878 
   15879         Reviewed by Geoffrey Garen.
   15880 
   15881         Added support for inline division.
   15882 
   15883         * assembler/X86Assembler.h:
   15884         (JSC::X86Assembler::):
   15885         (JSC::X86Assembler::divsd_rr):
   15886         (JSC::X86Assembler::divsd_mr):
   15887         * bytecode/CodeBlock.cpp:
   15888         (JSC::CodeBlock::dump):
   15889         * bytecode/Opcode.h:
   15890         * bytecompiler/BytecodeGenerator.cpp:
   15891         (JSC::BytecodeGenerator::emitBinaryOp):
   15892         * interpreter/Interpreter.cpp:
   15893         (JSC::Interpreter::privateExecute):
   15894         * jit/JIT.cpp:
   15895         (JSC::JIT::privateCompileMainPass):
   15896         (JSC::JIT::privateCompileSlowCases):
   15897         * jit/JIT.h:
   15898         * jit/JITArithmetic.cpp:
   15899         (JSC::JIT::emitBinaryDoubleOp):
   15900         (JSC::JIT::emit_op_div):
   15901         (JSC::JIT::emitSlow_op_div):
   15902 
   15903 2009-05-20  Geoffrey Garen  <ggaren (a] apple.com>
   15904 
   15905         Reviewed by Sam Weinig.
   15906 
   15907         Added support for inline addition of doubles.
   15908 
   15909         * jit/JITArithmetic.cpp:
   15910         (JSC::JIT::emit_op_add):
   15911         (JSC::JIT::emitSlow_op_add):
   15912         (JSC::JIT::emitSlowAdd32InPlace):
   15913         (JSC::JIT::emitBinaryDoubleOp):
   15914         (JSC::JIT::emit_op_mul):
   15915         (JSC::JIT::emitSlow_op_mul):
   15916 
   15917 2009-05-20  Geoffrey Garen  <ggaren (a] apple.com>
   15918 
   15919         Reviewed by Sam Weinig.
   15920         
   15921         Factored inline double operations into a helper function, so that we
   15922         can reuse this code for other math operations.
   15923 
   15924         * jit/JIT.h:
   15925         * jit/JITArithmetic.cpp:
   15926         (JSC::JIT::emitBinaryDoubleOp):
   15927         (JSC::JIT::emit_op_mul):
   15928         * jit/JITCall.cpp:
   15929         (JSC::JIT::compileOpCallInitializeCallFrame):
   15930 
   15931 2009-05-20  Geoffrey Garen  <ggaren (a] apple.com>
   15932 
   15933         Reviewed by Sam Weinig.
   15934         
   15935         Added support for inline multiplication of doubles.
   15936 
   15937         * assembler/X86Assembler.h:
   15938         (JSC::X86Assembler::cvtsi2sd_mr): New function, useful for loading an
   15939         int32 into a double register.
   15940 
   15941         * jit/JITArithmetic.cpp:
   15942         (JSC::JIT::emit_op_mul):
   15943         (JSC::JIT::emitSlow_op_mul): Filled out these cases for double arithmetic.
   15944 
   15945         * jit/JIT.h:
   15946         * jit/JITInlineMethods.h:
   15947         (JSC::JIT::addressFor): New function, useful for addressing a JSValue's
   15948         full 64bits as a double.
   15949 
   15950 2009-05-19  Sam Weinig  <sam (a] webkit.org>
   15951 
   15952         Reviewed by Geoffrey Garen.
   15953 
   15954         Implement and enable optimized calls.
   15955 
   15956         * jit/JIT.cpp:
   15957         (JSC::JIT::privateCompileCTIMachineTrampolines): Add ENABLE(JIT_OPTIMIZE_CALL) guards
   15958         around the the optimize call only trampolines (virtualCallPreLink and virtualCallLink).
   15959         Update the trampolines to account for the new JSValue representation.
   15960         (JSC::JIT::unlinkCall): Use NULL instead of JSValue noValue. 
   15961 
   15962         * jit/JITCall.cpp:
   15963         (JSC::JIT::compileOpCall): Update to account for the new JSValue representation
   15964         (JSC::JIT::compileOpCallSlowCase): Ditto.
   15965 
   15966         * jit/JITStubs.h: Remove incorrect !ENABLE(JIT_OPTIMIZE_CALL) guard.
   15967 
   15968         * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_CALL.
   15969 
   15970 2009-05-19  Sam Weinig  <sam (a] webkit.org>
   15971 
   15972         Reviewed by Geoffrey Garen.
   15973 
   15974         Implement and enable optimized property access.
   15975 
   15976         * assembler/AbstractMacroAssembler.h: Fix comment.
   15977         * jit/JIT.cpp:
   15978         (JSC::JIT::privateCompileCTIMachineTrampolines): Remove array length trampoline
   15979         and implement the string length trampoline.
   15980         * jit/JIT.h: Add new constants for patch offsets.
   15981         * jit/JITInlineMethods.h: Remove FIELD_OFFSET which is now in StdLibExtras.h.
   15982         * jit/JITPropertyAccess.cpp: 
   15983         (JSC::JIT::emit_op_get_by_id):
   15984         (JSC::JIT::emitSlow_op_get_by_id):
   15985         (JSC::JIT::emit_op_put_by_id):
   15986         (JSC::JIT::emitSlow_op_put_by_id):
   15987         (JSC::JIT::compilePutDirectOffset):
   15988         (JSC::JIT::compileGetDirectOffset):
   15989         (JSC::JIT::privateCompilePutByIdTransition):
   15990         (JSC::JIT::patchGetByIdSelf):
   15991         (JSC::JIT::patchPutByIdReplace):
   15992         (JSC::JIT::privateCompilePatchGetArrayLength):
   15993         (JSC::JIT::privateCompileGetByIdProto):
   15994         (JSC::JIT::privateCompileGetByIdSelfList):
   15995         (JSC::JIT::privateCompileGetByIdProtoList):
   15996         (JSC::JIT::privateCompileGetByIdChainList):
   15997         (JSC::JIT::privateCompileGetByIdChain):
   15998         * jit/JITStubCall.h:
   15999         (JSC::JITStubCall::addArgument): Add version of addArgument that takes
   16000         two registers for the tag and payload.
   16001         * jit/JITStubs.cpp:
   16002         (JSC::JITStubs::JITStubs): Remove array length trampoline pointer.
   16003         (JSC::JITStubs::cti_op_get_by_id_self_fail): 
   16004         * jit/JITStubs.h:
   16005         * runtime/JSObject.h:
   16006         (JSC::JSObject::JSObject): Move m_inheritorID below the property storage
   16007         to align it to a 16 byte boundary.
   16008         * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS
   16009         * wtf/StdLibExtras.h: Move FIELD_OFFSET here.
   16010 
   16011 2009-05-17  Sam Weinig  <sam (a] webkit.org>
   16012 
   16013         Reviewed by Geoffrey Garen.
   16014 
   16015         Remove unneeded ExecState parameter from the number JSValue constructors.
   16016 
   16017         * runtime/JSValue.h:
   16018         (JSC::jsNumber):
   16019         (JSC::jsNaN):
   16020         (JSC::JSValue::JSValue):
   16021 
   16022 2009-05-15  Sam Weinig  <sam (a] webkit.org>
   16023 
   16024         Reviewed by Geoffrey Garen.
   16025 
   16026         Implemented fast path for op_put_by_val when putting to arrays.
   16027 
   16028         * jit/JITPropertyAccess.cpp:
   16029         (JSC::JIT::emit_op_put_by_val):
   16030         (JSC::JIT::emitSlow_op_put_by_val):
   16031 
   16032 2009-05-15  Geoffrey Garen  <ggaren (a] apple.com> (Mostly by Sam)
   16033 
   16034         Reviewed by Sam Weinig.
   16035         
   16036         Implemented fast path for op_get_by_val when accessing array.
   16037 
   16038         * jit/JIT.cpp:
   16039         * jit/JITPropertyAccess.cpp:
   16040         (JSC::JIT::emit_op_get_by_val):
   16041         (JSC::JIT::emitSlow_op_get_by_val):
   16042 
   16043 2009-05-14  Geoffrey Garen  <ggaren (a] apple.com>
   16044 
   16045         Reviewed by Sam Weinig.
   16046         
   16047         Fixed a failure in fast/js/math-transforms.html caused by failing to
   16048         preserve -0 in multiplication.
   16049 
   16050         * assembler/X86Assembler.h:
   16051         (JSC::X86Assembler::jz):
   16052         * jit/JITArithmetic.cpp:
   16053         (JSC::JIT::emit_op_mul):
   16054         (JSC::JIT::emitSlow_op_mul):
   16055         (JSC::JIT::emitMul32Constant):
   16056         (JSC::JIT::emitMul32InPlace): Check both for overflow and for zero when
   16057         doing multiplication. Use a slow case to get these right.
   16058 
   16059 2009-05-14  Geoffrey Garen  <ggaren (a] apple.com>
   16060 
   16061         Reviewed by Sam Weinig.
   16062         
   16063         Fixed a bug in the varargs calling convention.
   16064 
   16065         * jit/JITCall.cpp:
   16066         (JSC::JIT::compileOpCallVarargs): Move the argument count into regT1,
   16067         since that's where ctiVirtualCall expects it to be.
   16068 
   16069 2009-05-14  Geoffrey Garen  <ggaren (a] apple.com>
   16070 
   16071         Reviewed by Sam Weinig.
   16072 
   16073         Fixed a small bug in instanceof's looping code.
   16074 
   16075         * jit/JITOpcodes.cpp:
   16076         (JSC::JIT::emit_op_instanceof): NULL means the object has no prototype,
   16077         so only loop when *not* equal to NULL.
   16078 
   16079 2009-05-14  Geoffrey Garen  <ggaren (a] apple.com>
   16080 
   16081         Reviewed by Sam Weinig.
   16082         
   16083         Fixed a small bug in instanceof's result writing code.
   16084 
   16085         * jit/JITOpcodes.cpp:
   16086         (JSC::JIT::emit_op_instanceof): Make sure to fill out the payload bits
   16087         in all cases.
   16088 
   16089 2009-05-14  Sam Weinig  <sam (a] webkit.org>
   16090 
   16091         Reviewed by Geoffrey Garen.
   16092 
   16093         Removed an invalid assertion in cti_op_urshift which
   16094         depended on a fast path for op_urshift which has
   16095         never existed.
   16096 
   16097         * jit/JITStubs.cpp:
   16098         (JSC::JITStubs::cti_op_urshift):
   16099 
   16100 2009-05-14  Geoffrey Garen  <ggaren (a] apple.com>
   16101 
   16102         Reviewed by Sam Weinig.
   16103         
   16104         Fixed loop_if_true, which had the same reversed test that jtrue had.
   16105 
   16106         * jit/JITOpcodes.cpp:
   16107         (JSC::JIT::emit_op_loop_if_true):
   16108 
   16109 2009-05-14  Sam Weinig  <sam (a] webkit.org>
   16110 
   16111         Reviewed by Geoffrey Garen.
   16112 
   16113         In op_neq, we apparently want to check that one value
   16114         does *not* equal another.  Go figure.
   16115 
   16116         * jit/JITOpcodes.cpp:
   16117         (JSC::JIT::emit_op_neq):
   16118 
   16119 2009-05-14  Sam Weinig  <sam (a] webkit.org>
   16120 
   16121         Reviewed by Geoffrey Garen.
   16122 
   16123         The slow case of op_mod should call op_mod's jit stub,
   16124         not op_mul.  That would be dumb.
   16125 
   16126         * jit/JITArithmetic.cpp:
   16127         (JSC::JIT::emitSlow_op_mod):
   16128 
   16129 2009-05-14  Geoffrey Garen  <ggaren (a] apple.com>
   16130 
   16131         Reviewed by Sam Weinig.
   16132         
   16133         Fixed problems when using 'arguments' due to a half-initialized register.
   16134 
   16135         * interpreter/CallFrame.h:
   16136         (JSC::ExecState::setCalleeArguments):
   16137         (JSC::ExecState::init): Require a full JSValue when setting up the 
   16138         'arguments' virtual register, since this register is accessible from JIT
   16139         code and bytecode, and needs to be a true JSValue.
   16140 
   16141         * interpreter/CallFrameClosure.h:
   16142         (JSC::CallFrameClosure::resetCallFrame): ditto
   16143 
   16144         * interpreter/Interpreter.cpp:
   16145         (JSC::Interpreter::privateExecute): ditto
   16146 
   16147         * interpreter/Register.h: Removed the constructor that allowed assignment
   16148         of a JSArguments* to a register. That is not safe. See above.
   16149 
   16150         * jit/JITStubs.cpp:
   16151         (JSC::JITStubs::cti_op_create_arguments):
   16152         (JSC::JITStubs::cti_op_create_arguments_no_params): ditto
   16153 
   16154 2009-05-14  Sam Weinig  <sam (a] webkit.org>
   16155 
   16156         Reviewed by Geoffrey Garen.
   16157 
   16158         We really want to go to the slow case in op_jfalse and
   16159         op_jtrue if the value is *not* boolean. 
   16160 
   16161         * jit/JITOpcodes.cpp:
   16162         (JSC::JIT::emit_op_jfalse):
   16163         (JSC::JIT::emit_op_jtrue):
   16164 
   16165 2009-05-14  Sam Weinig  <sam (a] webkit.org>
   16166 
   16167         Reviewed by Geoffrey Garen.
   16168 
   16169         Flipped the condition when emitting a an op_loop_if_less or op_loop_if_lesseq
   16170         if the first operand is a constant.
   16171 
   16172         * jit/JITOpcodes.cpp:
   16173         (JSC::JIT::emit_op_loop_if_less):
   16174         (JSC::JIT::emit_op_loop_if_lesseq):
   16175 
   16176 2009-05-14  Sam Weinig  <sam (a] webkit.org>
   16177 
   16178         Reviewed by Geoffrey Garen.
   16179 
   16180         Added missing return in op_jnless and op_jnlesseq. 
   16181 
   16182         * jit/JITArithmetic.cpp:
   16183         (JSC::JIT::emit_op_jnless):
   16184         (JSC::JIT::emit_op_jnlesseq):
   16185 
   16186 2009-05-14  Sam Weinig  <sam (a] webkit.org>
   16187 
   16188         Reviewed by Geoffrey Garen.
   16189 
   16190         Load constants into the the register file as a temporary measure to
   16191         aid bring up.  This allows us to use to treat constants like any
   16192         other virtual register.
   16193 
   16194         * jit/JITOpcodes.cpp:
   16195         (JSC::JIT::emit_op_enter):
   16196         (JSC::JIT::emit_op_enter_with_activation):
   16197 
   16198 2009-05-14  Geoffrey Garen  <ggaren (a] apple.com>
   16199 
   16200         Reviewed by Sam Weinig.
   16201         
   16202         Implemented op_strict_eq. Original patch by Snowy, by way of Sam and Gavin.
   16203 
   16204         * assembler/MacroAssemblerX86Common.h:
   16205         (JSC::MacroAssemblerX86Common::set8): Added set8, since it's slightly
   16206         faster than set32, and the new value representation usually doesn't
   16207         need set32.
   16208 
   16209         * jit/JIT.cpp:
   16210         * jit/JIT.h:
   16211         * jit/JITInlineMethods.h:
   16212         (JSC::JIT::emitLoadTag):
   16213         (JSC::JIT::emitLoadPayload): Added helper functions for dealing with
   16214         constants. Eventually, we should write special cases for all constants,
   16215         but these are helpful in the short term.
   16216 
   16217         * jit/JITOpcodes.cpp:
   16218         (JSC::JIT::compileOpStrictEq):
   16219         (JSC::JIT::emitSlow_op_stricteq):
   16220         (JSC::JIT::emitSlow_op_nstricteq): teh opcodez.
   16221 
   16222         * runtime/JSValue.h:
   16223         (JSC::JSValue::):
   16224         (JSC::JSValue::isDouble): Added a LowestTag for clarity.
   16225 
   16226 2009-05-13  Geoffrey Garen  <ggaren (a] apple.com>
   16227 
   16228         Reviewed by Sam Weinig.
   16229         
   16230         Fixed some bugs in host function calls.
   16231         
   16232         testapi now passes!
   16233 
   16234         * jit/JIT.cpp: Changed some registers around to avoid overwriting edx:eax,
   16235         which is how JSValues are now returned. Also changed the code that
   16236         passes thisValue to pass the full 64bits of the value. Also added
   16237         an #error compiler directive to other platform builds, since the JSValue
   16238         return signature probably won't return in edx:eax on those platforms,
   16239         and we'll have to investigate a solution.
   16240 
   16241 2009-05-13  Geoffrey Garen  <ggaren (a] apple.com>
   16242 
   16243         Reviewed by Sam Weinig.
   16244         
   16245         Removed parameters from functions that are intended never to use their
   16246         parameters.
   16247 
   16248         * jit/JITPropertyAccess.cpp:
   16249         (JSC::JIT::emitSlow_op_get_by_val):
   16250         (JSC::JIT::emitSlow_op_put_by_val):
   16251 
   16252 2009-05-13  Geoffrey Garen  <ggaren (a] apple.com>
   16253 
   16254         Reviewed by Sam Weinig.
   16255         
   16256         Ported op_instance_of from TOT. It's basically the same, but some register
   16257         stuff changed to memory stuff.
   16258 
   16259         * jit/JITInlineMethods.h:
   16260         (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
   16261         (JSC::JIT::emitStore): Changed to use helper functions.
   16262 
   16263         * jit/JITOpcodes.cpp:
   16264         (JSC::JIT::emit_op_instanceof):
   16265         (JSC::JIT::emitSlow_op_instanceof): Ported from TOT.
   16266 
   16267 2009-05-13  Geoffrey Garen  <ggaren (a] apple.com>
   16268 
   16269         Reviewed by Gavin Barraclough.
   16270         
   16271         Added a comment to explain an exception-handling subtelty that we found
   16272         hard to remember when reviewing my last patch.
   16273 
   16274         * jit/JITOpcodes.cpp:
   16275         (JSC::JIT::emit_op_catch):
   16276 
   16277 2009-05-13  Geoffrey Garen  <ggaren (a] apple.com>
   16278 
   16279         Reviewed by Sam Weinig.
   16280         
   16281         Implemented try/catch.
   16282 
   16283         * jit/JITOpcodes.cpp:
   16284         (JSC::JIT::emit_op_throw): Updated to use JITStackFrame abstraction.
   16285         (JSC::JIT::emit_op_catch): Filled out.
   16286 
   16287 2009-05-13  Sam Weinig  <sam (a] webkit.org>
   16288 
   16289         Reviewed by Geoffrey Garen.
   16290 
   16291         Implemented op_loop_if_true, op_jfalse, op_jtrue, op_jeq_null and op_jneq_null
   16292 
   16293         * jit/JITOpcodes.cpp:
   16294         (JSC::JIT::emitSlow_op_instanceof): Moved from below to be next to its
   16295         fast brother.
   16296 
   16297         (JSC::JIT::emit_op_loop_if_true): Similar to the old version
   16298         in that it tries to do the integer case first and reduce the
   16299         number of jumps you might need to take.
   16300         (JSC::JIT::emitSlow_op_loop_if_true):
   16301 
   16302         (JSC::JIT::emit_op_jfalse): Very similar to op_loop_if_true, only
   16303         the inverse and without a timeout check.
   16304         (JSC::JIT::emitSlow_op_jfalse):
   16305 
   16306         (JSC::JIT::emit_op_jtrue): Very similar to op_loop_if_true except
   16307         without the timeout check.
   16308         (JSC::JIT::emitSlow_op_jtrue):
   16309 
   16310         (JSC::JIT::emit_op_jeq_null): Very similar to the implementation
   16311         of op_eq, except it takes jumps instead of copying the condition
   16312         to a dst.
   16313         (JSC::JIT::emit_op_jneq_null): Ditto but for op_neq.
   16314 
   16315 2009-05-13  Geoffrey Garen  <ggaren (a] apple.com>
   16316 
   16317         Reviewed by Sam Weinig.
   16318         
   16319         Implemented op_call_varargs.
   16320 
   16321         * jit/JITCall.cpp:
   16322         (JSC::JIT::compileOpCallVarargsSetupArgs):
   16323         (JSC::JIT::compileOpCallVarargs):
   16324         (JSC::JIT::emit_op_call):
   16325         (JSC::JIT::emit_op_call_eval):
   16326         (JSC::JIT::emit_op_load_varargs):
   16327         (JSC::JIT::emit_op_call_varargs):
   16328         (JSC::JIT::emit_op_construct):
   16329         * jit/JITOpcodes.cpp:
   16330         (JSC::JIT::emit_op_jneq_ptr):
   16331 
   16332 2009-05-13  Geoffrey Garen  <ggaren (a] apple.com>
   16333 
   16334         Reviewed by Sam Weinig.
   16335         
   16336         Implemented op_call_eval.
   16337 
   16338         * jit/JITCall.cpp:
   16339         (JSC::JIT::compileOpCallVarargsSetupArgs):
   16340         (JSC::JIT::compileOpCall):
   16341         * jit/JITStubCall.h:
   16342         (JSC::CallEvalJITStub::CallEvalJITStub):
   16343 
   16344 2009-05-13  Sam Weinig  <sam (a] webkit.org>
   16345 
   16346         Reviewed by Gavin Barraclough.
   16347 
   16348         Implemented op_not. (Gavin did most of the work!)
   16349 
   16350         * jit/JITOpcodes.cpp:
   16351         (JSC::JIT::emit_op_not):
   16352         (JSC::JIT::emitSlow_op_not):
   16353 
   16354 2009-05-13  Geoffrey Garen  <ggaren (a] apple.com>
   16355 
   16356         Reviewed by Sam Weinig.
   16357         
   16358         Implemented op_global_resolve.
   16359 
   16360         * jit/JITOpcodes.cpp:
   16361         (JSC::JIT::emit_op_loop_if_less):
   16362         (JSC::JIT::emit_op_loop_if_lesseq): Added back accidentally removed
   16363         early returns. 
   16364 
   16365         (JSC::JIT::emit_op_resolve_global):
   16366         * jit/JITStubs.cpp:
   16367         (JSC::JITStubs::cti_op_resolve_global): Pretty similar to the old code,
   16368         but we need two reads and a TimesEight step in order to account for the
   16369         64bit value size.
   16370 
   16371         * jit/JITStubs.h:
   16372         (JSC::): Slightly tweaked this code to specialize for a JSGlobalObject*,
   16373         to avoid having to pass an irrelevant tag pointer to the stub.
   16374 
   16375 2009-05-13  Sam Weinig  <sam (a] webkit.org>
   16376 
   16377         Reviewed by Geoffrey Garen.
   16378 
   16379         Implemented op_to_jsnumber.
   16380 
   16381         * jit/JITOpcodes.cpp:
   16382         (JSC::JIT::emit_op_to_jsnumber):
   16383         (JSC::JIT::emitSlow_op_to_jsnumber):
   16384 
   16385 2009-05-13  Sam Weinig  <sam (a] webkit.org>
   16386 
   16387         Reviewed by Geoffrey Garen.
   16388 
   16389         Implemented op_convert_this.
   16390 
   16391         * jit/JITOpcodes.cpp:
   16392         (JSC::JIT::emit_op_convert_this):
   16393         (JSC::JIT::emitSlow_op_convert_this):
   16394 
   16395 2009-05-13  Geoffrey Garen  <ggaren (a] apple.com>
   16396 
   16397         Reviewed by Sam Weinig.
   16398         
   16399         Got basic JS function and constructor calls working.
   16400 
   16401         * jit/JIT.cpp:
   16402         (JSC::JIT::privateCompileCTIMachineTrampolines):
   16403         * jit/JIT.h:
   16404         * jit/JITCall.cpp:
   16405         (JSC::JIT::compileOpCallSetupArgs):
   16406         (JSC::JIT::compileOpCallVarargsSetupArgs):
   16407         (JSC::JIT::compileOpConstructSetupArgs):
   16408         (JSC::JIT::emit_op_ret):
   16409         (JSC::JIT::emit_op_construct_verify):
   16410         (JSC::JIT::emitSlow_op_construct_verify):
   16411         (JSC::JIT::emitSlow_op_call):
   16412         (JSC::JIT::emitSlow_op_call_eval):
   16413         (JSC::JIT::emitSlow_op_call_varargs):
   16414         (JSC::JIT::emitSlow_op_construct):
   16415         (JSC::JIT::compileOpCall): Filled out these cases, with call_eval #if'd out.
   16416 
   16417         * jit/JITInlineMethods.h:
   16418         (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
   16419         (JSC::JIT::emitLoad): Restored some legacy "*CTIArg*" functions,
   16420         since I wanted to avoid the complexity of revamping the API here while
   16421         trying to bring it up. Eventually, we should re-remove all of these functions.
   16422 
   16423         (JSC::JIT::recordJumpTarget): Removed unnecessary macro cruft. You will
   16424         not silence me, Sam Weinig! The world will know that you are a crufty,
   16425         crufty, crufty programmer!!!
   16426 
   16427         * jit/JITOpcodes.cpp:
   16428         * jit/JITStubs.cpp:
   16429         (JSC::):
   16430         * jit/JITStubs.h: Changed up some offsets in the JITStackFrame class, since
   16431         and off-by-one error was causing stack misalignment.
   16432 
   16433 2009-05-13  Sam Weinig  <sam (a] webkit.org>
   16434 
   16435         Reviewed by Geoffrey Garen.
   16436 
   16437         Implement op_eq_null and op_neq_null.
   16438 
   16439         * assembler/MacroAssemblerX86Common.h:
   16440         (JSC::MacroAssemblerX86Common::set8):
   16441         (JSC::MacroAssemblerX86Common::setTest8):
   16442         * jit/JITOpcodes.cpp:
   16443         (JSC::JIT::emit_op_stricteq):
   16444         (JSC::JIT::emitSlow_op_stricteq):
   16445         (JSC::JIT::emit_op_nstricteq):
   16446         (JSC::JIT::emitSlow_op_nstricteq):
   16447         (JSC::JIT::emit_op_eq_null):
   16448         (JSC::JIT::emit_op_neq_null):
   16449         * jsc.cpp:
   16450 
   16451 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16452 
   16453         Reviewed by Geoffrey Garen.
   16454 
   16455         Implement op_new_error.
   16456 
   16457         * jit/JITOpcodes.cpp:
   16458         (JSC::JIT::emit_op_new_error):
   16459         * jit/JITStubCall.h:
   16460         (JSC::JITStubCall::addArgument): Add a version of addArgument
   16461         that takes a constant JSValue.
   16462 
   16463 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16464 
   16465         Reviewed by Geoffrey Garen.
   16466 
   16467         Remove now unused emitGetVariableObjectRegister and emitPutVariableObjectRegister.
   16468 
   16469         * jit/JIT.cpp:
   16470         * jit/JIT.h:
   16471 
   16472 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16473 
   16474         Reviewed by Geoffrey Garen.
   16475 
   16476         Implement op_to_primitive and op_next_pname.
   16477 
   16478         * jit/JITOpcodes.cpp:
   16479         (JSC::JIT::emitSlow_op_construct_verify):
   16480         (JSC::JIT::emit_op_to_primitive):
   16481         (JSC::JIT::emitSlow_op_to_primitive):
   16482         (JSC::JIT::emitSlow_op_loop_if_true):
   16483         (JSC::JIT::emit_op_jtrue):
   16484         (JSC::JIT::emit_op_next_pname):
   16485 
   16486 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16487 
   16488         Reviewed by Geoffrey Garen.
   16489 
   16490         Add op_get_global_var, op_put_global_var, emit_op_get_scoped_var, emit_op_put_scoped_var and
   16491         op_unexpected_load.
   16492 
   16493         * jit/JIT.h:
   16494         * jit/JITInlineMethods.h:
   16495         (JSC::JIT::tagFor):
   16496         (JSC::JIT::payloadFor):
   16497         (JSC::JIT::emitLoad):
   16498         (JSC::JIT::emitStore):
   16499         (JSC::JIT::emitLoadReturnValue):
   16500         * jit/JITOpcodes.cpp:
   16501         (JSC::JIT::emit_op_get_global_var):
   16502         (JSC::JIT::emit_op_put_global_var):
   16503         (JSC::JIT::emit_op_get_scoped_var):
   16504         (JSC::JIT::emit_op_put_scoped_var):
   16505         (JSC::JIT::emit_op_unexpected_load):
   16506 
   16507 2009-05-12  Geoffrey Garen  <ggaren (a] apple.com>
   16508 
   16509         Reviewed by Sam Weinig.
   16510 
   16511         Added overflow handling to op_sub.
   16512 
   16513         * jit/JIT.h:
   16514         * jit/JITArithmetic.cpp:
   16515         (JSC::JIT::emitSlow_op_sub):
   16516         (JSC::JIT::emitSlowSub32InPlaceLeft):
   16517 
   16518 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16519 
   16520         Reviewed by Geoffrey Garen.
   16521 
   16522         Remove a function call by folding op_get_by_id and op_put_by_id into
   16523         their respective compile functions.
   16524 
   16525         * jit/JIT.h:
   16526         * jit/JITPropertyAccess.cpp:
   16527         (JSC::JIT::emit_op_get_by_id):
   16528         (JSC::JIT::emitSlow_op_get_by_id):
   16529         (JSC::JIT::emit_op_put_by_id):
   16530         (JSC::JIT::emitSlow_op_put_by_id):
   16531 
   16532 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16533 
   16534         Reviewed by Geoffrey Garen.
   16535 
   16536         Make JITStubCall work in 64bit by making the stack index
   16537         step dependent on the size of void*.
   16538 
   16539         * jit/JITStubCall.h:
   16540         (JSC::JITStubCall::JITStubCall):
   16541         (JSC::JITStubCall::addArgument):
   16542 
   16543 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16544 
   16545         Reviewed by Geoffrey Garen.
   16546 
   16547         Implement simple version of property access opcodes
   16548         which just call a stub functions.
   16549 
   16550         * jit/JITOpcodes.cpp:
   16551         * jit/JITPropertyAccess.cpp:
   16552         (JSC::JIT::emitSlow_op_put_by_id):
   16553         (JSC::JIT::emitSlow_op_get_by_id):
   16554         (JSC::JIT::emit_op_get_by_val):
   16555         (JSC::JIT::emitSlow_op_get_by_val):
   16556         (JSC::JIT::emit_op_put_by_val):
   16557         (JSC::JIT::emitSlow_op_put_by_val):
   16558         (JSC::JIT::emit_op_put_by_index):
   16559         (JSC::JIT::emit_op_put_getter):
   16560         (JSC::JIT::emit_op_put_setter):
   16561         (JSC::JIT::emit_op_del_by_id):
   16562         (JSC::JIT::compileGetByIdHotPath):
   16563         (JSC::JIT::compilePutByIdHotPath):
   16564         * jit/JITStubCall.h:
   16565         (JSC::JITStubCall::addArgument):
   16566         * jsc.cpp:
   16567 
   16568 2009-05-12  Geoffrey Garen  <ggaren (a] apple.com>
   16569 
   16570         Reviewed by Sam Weinig.
   16571         
   16572         Added work-around for XCode debugging echo problem.
   16573 
   16574         * jsc.cpp:
   16575         (runInteractive):
   16576 
   16577 2009-05-12  Geoffrey Garen  <ggaren (a] apple.com>
   16578 
   16579         Reviewed by Sam Weinig.
   16580         
   16581         Added overflow handling to op_add.
   16582 
   16583         * jit/JIT.h:
   16584         * jit/JITArithmetic.cpp:
   16585         (JSC::JIT::emitSlow_op_add):
   16586         (JSC::JIT::emitSlowAdd32InPlace):
   16587 
   16588 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16589 
   16590         Reviewed by Geoffrey Garen.
   16591 
   16592         Add slow cases for op_jnless or emit_op_jnlesseq.
   16593 
   16594         * jit/JITArithmetic.cpp:
   16595         (JSC::JIT::emitSlow_op_jnless):
   16596         (JSC::JIT::emitSlow_op_jnlesseq):
   16597 
   16598 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16599 
   16600         Reviewed by Geoffrey Garen.
   16601 
   16602         Add implementations for op_jnless, emit_op_jnlesseq, op_loop_if_less and op_loop_if_lesseq.
   16603         No slow cases for op_jnless or emit_op_jnlesseq yet.
   16604 
   16605         * jit/JITArithmetic.cpp:
   16606         (JSC::JIT::emit_op_jnless):
   16607         (JSC::JIT::emitSlow_op_jnless):
   16608         (JSC::JIT::emit_op_jnlesseq):
   16609         (JSC::JIT::emitSlow_op_jnlesseq):
   16610         * jit/JITOpcodes.cpp:
   16611         (JSC::JIT::emit_op_loop_if_less):
   16612         (JSC::JIT::emitSlow_op_loop_if_less):
   16613         (JSC::JIT::emit_op_loop_if_lesseq):
   16614         (JSC::JIT::emitSlow_op_loop_if_lesseq):
   16615 
   16616 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16617 
   16618         Reviewed by Geoffrey Garen.
   16619 
   16620         Turn the RECORD_JUMP_TARGET macro into an inline function.
   16621 
   16622         * jit/JIT.h:
   16623         * jit/JITInlineMethods.h:
   16624         (JSC::JIT::recordJumpTarget):
   16625         * jit/JITOpcodes.cpp:
   16626         (JSC::JIT::emit_op_jmp):
   16627         (JSC::JIT::emit_op_jsr):
   16628         (JSC::JIT::emit_op_jmp_scopes):
   16629 
   16630 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16631 
   16632         Add MacroAssemblerX86Common::set8 to fix the build.
   16633 
   16634         * assembler/MacroAssemblerX86Common.h:
   16635         (JSC::MacroAssemblerX86Common::set8):
   16636 
   16637 2009-05-12  Geoffrey Garen  <ggaren (a] apple.com>
   16638 
   16639         Reviewed by Sam Weinig.
   16640         
   16641         Added overflow recovery for pre_inc and pre_dec.
   16642         
   16643         Turned some short-circuit code into early returns, as is the WebKit style.
   16644 
   16645         * jit/JITArithmetic.cpp:
   16646         (JSC::JIT::emit_op_post_inc):
   16647         (JSC::JIT::emitSlow_op_post_inc):
   16648         (JSC::JIT::emit_op_post_dec):
   16649         (JSC::JIT::emitSlow_op_post_dec):
   16650         (JSC::JIT::emitSlow_op_pre_inc):
   16651         (JSC::JIT::emitSlow_op_pre_dec):
   16652 
   16653 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16654 
   16655         Reviewed by Geoffrey Garen.
   16656 
   16657         Implement op_jmp, op_loop, op_eq and op_neq.
   16658 
   16659         * jit/JITOpcodes.cpp:
   16660         (JSC::JIT::emit_op_jmp):
   16661         (JSC::JIT::emit_op_loop):
   16662         (JSC::JIT::emit_op_eq):
   16663         (JSC::JIT::emitSlow_op_eq):
   16664         (JSC::JIT::emit_op_neq):
   16665         (JSC::JIT::emitSlow_op_neq):
   16666         (JSC::JIT::emit_op_enter):
   16667         (JSC::JIT::emit_op_enter_with_activation):
   16668 
   16669 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16670 
   16671         Reviewed by Geoffrey Garen.
   16672 
   16673         Implement the slow cases for arithmetic opcodes.
   16674 
   16675         * jit/JITArithmetic.cpp:
   16676         (JSC::JIT::emitSlow_op_lshift):
   16677         (JSC::JIT::emitSlow_op_rshift):
   16678         (JSC::JIT::emitSlow_op_bitand):
   16679         (JSC::JIT::emitSlow_op_bitor):
   16680         (JSC::JIT::emitSlow_op_bitxor):
   16681         (JSC::JIT::emitSlow_op_bitnot):
   16682         (JSC::JIT::emitSlow_op_sub):
   16683         (JSC::JIT::emitSlow_op_mul):
   16684         (JSC::JIT::emitSlow_op_mod):
   16685         (JSC::JIT::emit_op_mod):
   16686 
   16687 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16688 
   16689         Reviewed by Geoffrey Garen.
   16690 
   16691         Implement op_bitnot.
   16692 
   16693         * assembler/MacroAssemblerX86Common.h:
   16694         (JSC::MacroAssemblerX86Common::not32):
   16695         * assembler/X86Assembler.h:
   16696         (JSC::X86Assembler::notl_m):
   16697         * jit/JITArithmetic.cpp:
   16698         (JSC::JIT::emit_op_bitnot):
   16699 
   16700 2009-05-12  Sam Weinig  <sam (a] webkit.org>
   16701 
   16702         Reviewed by Geoffrey Garen.
   16703 
   16704         Add arithmetic opcode implementations from the old nitro-extreme branch.
   16705 
   16706         * jit/JIT.h:
   16707         * jit/JITArithmetic.cpp:
   16708         (JSC::JIT::emit_op_jnless):
   16709         (JSC::JIT::emitSlow_op_jnless):
   16710         (JSC::JIT::emit_op_jnlesseq):
   16711         (JSC::JIT::emitSlow_op_jnlesseq):
   16712         (JSC::JIT::emit_op_lshift):
   16713         (JSC::JIT::emitSlow_op_lshift):
   16714         (JSC::JIT::emit_op_rshift):
   16715         (JSC::JIT::emitSlow_op_rshift):
   16716         (JSC::JIT::emit_op_bitand):
   16717         (JSC::JIT::emitBitAnd32Constant):
   16718         (JSC::JIT::emitBitAnd32InPlace):
   16719         (JSC::JIT::emit_op_bitor):
   16720         (JSC::JIT::emitSlow_op_bitor):
   16721         (JSC::JIT::emitBitOr32Constant):
   16722         (JSC::JIT::emitBitOr32InPlace):
   16723         (JSC::JIT::emit_op_bitxor):
   16724         (JSC::JIT::emitSlow_op_bitxor):
   16725         (JSC::JIT::emitBitXor32Constant):
   16726         (JSC::JIT::emitBitXor32InPlace):
   16727         (JSC::JIT::emit_op_bitnot):
   16728         (JSC::JIT::emitSlow_op_bitnot):
   16729         (JSC::JIT::emit_op_post_inc):
   16730         (JSC::JIT::emitSlow_op_post_inc):
   16731         (JSC::JIT::emit_op_post_dec):
   16732         (JSC::JIT::emitSlow_op_post_dec):
   16733         (JSC::JIT::emit_op_pre_inc):
   16734         (JSC::JIT::emitSlow_op_pre_inc):
   16735         (JSC::JIT::emit_op_pre_dec):
   16736         (JSC::JIT::emitSlow_op_pre_dec):
   16737         (JSC::JIT::emit_op_add):
   16738         (JSC::JIT::emitAdd32Constant):
   16739         (JSC::JIT::emitAdd32InPlace):
   16740         (JSC::JIT::emitSlow_op_add):
   16741         (JSC::JIT::emit_op_sub):
   16742         (JSC::JIT::emitSlow_op_sub):
   16743         (JSC::JIT::emitSub32ConstantLeft):
   16744         (JSC::JIT::emitSub32ConstantRight):
   16745         (JSC::JIT::emitSub32InPlaceLeft):
   16746         (JSC::JIT::emitSub32InPlaceRight):
   16747         (JSC::JIT::emit_op_mul):
   16748         (JSC::JIT::emitSlow_op_mul):
   16749         (JSC::JIT::emitMul32Constant):
   16750         (JSC::JIT::emitMul32InPlace):
   16751         (JSC::JIT::emit_op_mod):
   16752         (JSC::JIT::emitSlow_op_mod):
   16753         * jit/JITOpcodes.cpp:
   16754 
   16755 2009-05-12  Geoffrey Garen  <ggaren (a] apple.com>
   16756 
   16757         Removed JIT_OPTIMIZE_ARITHMETIC setting, since it was all about 32bit
   16758         value representations.
   16759         
   16760         Added JSAPIValueWrapper to the repository.
   16761 
   16762         * jit/JIT.h:
   16763         * jit/JITArithmetic.cpp:
   16764         * runtime/JSAPIValueWrapper.cpp: Added.
   16765         (JSC::JSAPIValueWrapper::toPrimitive):
   16766         (JSC::JSAPIValueWrapper::getPrimitiveNumber):
   16767         (JSC::JSAPIValueWrapper::toBoolean):
   16768         (JSC::JSAPIValueWrapper::toNumber):
   16769         (JSC::JSAPIValueWrapper::toString):
   16770         (JSC::JSAPIValueWrapper::toObject):
   16771         * runtime/JSAPIValueWrapper.h: Added.
   16772         (JSC::JSAPIValueWrapper::value):
   16773         (JSC::JSAPIValueWrapper::isAPIValueWrapper):
   16774         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
   16775         (JSC::jsAPIValueWrapper):
   16776         * wtf/Platform.h:
   16777 
   16778 2009-05-12  Geoffrey Garen  <ggaren (a] apple.com>
   16779 
   16780         Turned on the JIT and got it building and running the most trivial of
   16781         programs.
   16782         
   16783         All configurable optimizations are turned off, and a few opcodes are ad
   16784         hoc #if'd out.
   16785         
   16786         So far, I've only merged op_mov and op_end, but some stub-reliant
   16787         opcodes work as-is from TOT.
   16788         
   16789         * bytecode/CodeBlock.cpp:
   16790         (JSC::CodeBlock::~CodeBlock):
   16791         * bytecode/CodeBlock.h:
   16792         * jit/JIT.cpp:
   16793         (JSC::JIT::compileOpStrictEq):
   16794         * jit/JIT.h:
   16795         * jit/JITArithmetic.cpp:
   16796         (JSC::JIT::emit_op_lshift):
   16797         (JSC::JIT::emitSlow_op_lshift):
   16798         (JSC::JIT::emit_op_rshift):
   16799         (JSC::JIT::emitSlow_op_rshift):
   16800         (JSC::JIT::emit_op_jnless):
   16801         (JSC::JIT::emitSlow_op_jnless):
   16802         (JSC::JIT::emit_op_jnlesseq):
   16803         (JSC::JIT::emitSlow_op_jnlesseq):
   16804         (JSC::JIT::emit_op_bitand):
   16805         (JSC::JIT::emitSlow_op_bitand):
   16806         (JSC::JIT::emit_op_post_inc):
   16807         (JSC::JIT::emitSlow_op_post_inc):
   16808         (JSC::JIT::emit_op_post_dec):
   16809         (JSC::JIT::emitSlow_op_post_dec):
   16810         (JSC::JIT::emit_op_pre_inc):
   16811         (JSC::JIT::emitSlow_op_pre_inc):
   16812         (JSC::JIT::emit_op_pre_dec):
   16813         (JSC::JIT::emitSlow_op_pre_dec):
   16814         (JSC::JIT::emit_op_mod):
   16815         (JSC::JIT::emitSlow_op_mod):
   16816         (JSC::JIT::emit_op_add):
   16817         (JSC::JIT::emit_op_mul):
   16818         (JSC::JIT::emit_op_sub):
   16819         (JSC::JIT::compileBinaryArithOpSlowCase):
   16820         (JSC::JIT::emitSlow_op_add):
   16821         (JSC::JIT::emitSlow_op_mul):
   16822         * jit/JITCall.cpp:
   16823         (JSC::JIT::compileOpCallInitializeCallFrame):
   16824         (JSC::JIT::compileOpConstructSetupArgs):
   16825         (JSC::JIT::compileOpCallVarargs):
   16826         (JSC::JIT::compileOpCall):
   16827         (JSC::JIT::compileOpCallSlowCase):
   16828         * jit/JITInlineMethods.h:
   16829         (JSC::JIT::getConstantOperandImmediateInt):
   16830         (JSC::JIT::isOperandConstantImmediateInt):
   16831         (JSC::JIT::emitInitRegister):
   16832         (JSC::JIT::addSlowCase):
   16833         (JSC::JIT::addJump):
   16834         (JSC::JIT::emitJumpSlowToHot):
   16835         (JSC::JIT::tagFor):
   16836         (JSC::JIT::payloadFor):
   16837         (JSC::JIT::emitLoad):
   16838         (JSC::JIT::emitLoadReturnValue):
   16839         (JSC::JIT::emitStore):
   16840         (JSC::JIT::emitStoreReturnValue):
   16841         * jit/JITOpcodes.cpp:
   16842         (JSC::JIT::emit_op_mov):
   16843         (JSC::JIT::emit_op_end):
   16844         (JSC::JIT::emit_op_jmp):
   16845         (JSC::JIT::emit_op_loop):
   16846         (JSC::JIT::emit_op_loop_if_less):
   16847         (JSC::JIT::emit_op_loop_if_lesseq):
   16848         (JSC::JIT::emit_op_instanceof):
   16849         (JSC::JIT::emit_op_get_global_var):
   16850         (JSC::JIT::emit_op_put_global_var):
   16851         (JSC::JIT::emit_op_get_scoped_var):
   16852         (JSC::JIT::emit_op_put_scoped_var):
   16853         (JSC::JIT::emit_op_tear_off_activation):
   16854         (JSC::JIT::emit_op_ret):
   16855         (JSC::JIT::emit_op_construct_verify):
   16856         (JSC::JIT::emit_op_to_primitive):
   16857         (JSC::JIT::emit_op_loop_if_true):
   16858         (JSC::JIT::emit_op_resolve_global):
   16859         (JSC::JIT::emit_op_not):
   16860         (JSC::JIT::emit_op_jfalse):
   16861         (JSC::JIT::emit_op_jeq_null):
   16862         (JSC::JIT::emit_op_jneq_null):
   16863         (JSC::JIT::emit_op_jneq_ptr):
   16864         (JSC::JIT::emit_op_unexpected_load):
   16865         (JSC::JIT::emit_op_eq):
   16866         (JSC::JIT::emit_op_bitnot):
   16867         (JSC::JIT::emit_op_jtrue):
   16868         (JSC::JIT::emit_op_neq):
   16869         (JSC::JIT::emit_op_bitxor):
   16870         (JSC::JIT::emit_op_bitor):
   16871         (JSC::JIT::emit_op_throw):
   16872         (JSC::JIT::emit_op_next_pname):
   16873         (JSC::JIT::emit_op_push_scope):
   16874         (JSC::JIT::emit_op_to_jsnumber):
   16875         (JSC::JIT::emit_op_push_new_scope):
   16876         (JSC::JIT::emit_op_catch):
   16877         (JSC::JIT::emit_op_switch_imm):
   16878         (JSC::JIT::emit_op_switch_char):
   16879         (JSC::JIT::emit_op_switch_string):
   16880         (JSC::JIT::emit_op_new_error):
   16881         (JSC::JIT::emit_op_eq_null):
   16882         (JSC::JIT::emit_op_neq_null):
   16883         (JSC::JIT::emit_op_convert_this):
   16884         (JSC::JIT::emit_op_profile_will_call):
   16885         (JSC::JIT::emit_op_profile_did_call):
   16886         (JSC::JIT::emitSlow_op_construct_verify):
   16887         (JSC::JIT::emitSlow_op_get_by_val):
   16888         (JSC::JIT::emitSlow_op_loop_if_less):
   16889         (JSC::JIT::emitSlow_op_loop_if_lesseq):
   16890         (JSC::JIT::emitSlow_op_put_by_val):
   16891         (JSC::JIT::emitSlow_op_not):
   16892         (JSC::JIT::emitSlow_op_instanceof):
   16893         * jit/JITPropertyAccess.cpp:
   16894         (JSC::JIT::emit_op_get_by_val):
   16895         (JSC::JIT::emit_op_put_by_val):
   16896         (JSC::JIT::emit_op_put_by_index):
   16897         (JSC::JIT::emit_op_put_getter):
   16898         (JSC::JIT::emit_op_put_setter):
   16899         (JSC::JIT::emit_op_del_by_id):
   16900         (JSC::JIT::compileGetByIdHotPath):
   16901         (JSC::JIT::compilePutByIdHotPath):
   16902         * jit/JITStubCall.h:
   16903         (JSC::JITStubCall::JITStubCall):
   16904         (JSC::JITStubCall::addArgument):
   16905         (JSC::JITStubCall::call):
   16906         (JSC::JITStubCall::):
   16907         (JSC::CallEvalJITStub::CallEvalJITStub):
   16908         * jit/JITStubs.cpp:
   16909         (JSC::):
   16910         (JSC::JITStubs::cti_op_add):
   16911         (JSC::JITStubs::cti_op_pre_inc):
   16912         (JSC::JITStubs::cti_op_mul):
   16913         (JSC::JITStubs::cti_op_get_by_val):
   16914         (JSC::JITStubs::cti_op_get_by_val_string):
   16915         (JSC::JITStubs::cti_op_get_by_val_byte_array):
   16916         (JSC::JITStubs::cti_op_sub):
   16917         (JSC::JITStubs::cti_op_put_by_val):
   16918         (JSC::JITStubs::cti_op_put_by_val_array):
   16919         (JSC::JITStubs::cti_op_put_by_val_byte_array):
   16920         (JSC::JITStubs::cti_op_negate):
   16921         (JSC::JITStubs::cti_op_div):
   16922         (JSC::JITStubs::cti_op_pre_dec):
   16923         (JSC::JITStubs::cti_op_post_inc):
   16924         (JSC::JITStubs::cti_op_eq):
   16925         (JSC::JITStubs::cti_op_lshift):
   16926         (JSC::JITStubs::cti_op_bitand):
   16927         (JSC::JITStubs::cti_op_rshift):
   16928         (JSC::JITStubs::cti_op_bitnot):
   16929         (JSC::JITStubs::cti_op_mod):
   16930         (JSC::JITStubs::cti_op_neq):
   16931         (JSC::JITStubs::cti_op_post_dec):
   16932         (JSC::JITStubs::cti_op_urshift):
   16933         (JSC::JITStubs::cti_op_bitxor):
   16934         (JSC::JITStubs::cti_op_bitor):
   16935         (JSC::JITStubs::cti_op_switch_imm):
   16936         * jit/JITStubs.h:
   16937         * runtime/JSArray.cpp:
   16938         (JSC::JSArray::JSArray):
   16939         * runtime/JSFunction.cpp:
   16940         (JSC::JSFunction::~JSFunction):
   16941         * runtime/JSValue.h:
   16942         (JSC::JSValue::payload):
   16943         * wtf/Platform.h:
   16944 
   16945 2009-05-07  Sam Weinig  <sam (a] webkit.org>
   16946 
   16947         Reviewed by Geoffrey Garen.
   16948 
   16949         Add some new MacroAssembler and assembler functions that will be needed shortly.
   16950 
   16951         * assembler/MacroAssemblerX86Common.h:
   16952         (JSC::MacroAssemblerX86Common::add32):
   16953         (JSC::MacroAssemblerX86Common::and32):
   16954         (JSC::MacroAssemblerX86Common::mul32):
   16955         (JSC::MacroAssemblerX86Common::neg32):
   16956         (JSC::MacroAssemblerX86Common::or32):
   16957         (JSC::MacroAssemblerX86Common::sub32):
   16958         (JSC::MacroAssemblerX86Common::xor32):
   16959         (JSC::MacroAssemblerX86Common::branchAdd32):
   16960         (JSC::MacroAssemblerX86Common::branchMul32):
   16961         (JSC::MacroAssemblerX86Common::branchSub32):
   16962         * assembler/X86Assembler.h:
   16963         (JSC::X86Assembler::):
   16964         (JSC::X86Assembler::addl_rm):
   16965         (JSC::X86Assembler::andl_mr):
   16966         (JSC::X86Assembler::andl_rm):
   16967         (JSC::X86Assembler::andl_im):
   16968         (JSC::X86Assembler::negl_r):
   16969         (JSC::X86Assembler::notl_r):
   16970         (JSC::X86Assembler::orl_rm):
   16971         (JSC::X86Assembler::orl_im):
   16972         (JSC::X86Assembler::subl_rm):
   16973         (JSC::X86Assembler::xorl_mr):
   16974         (JSC::X86Assembler::xorl_rm):
   16975         (JSC::X86Assembler::xorl_im):
   16976         (JSC::X86Assembler::imull_mr):
   16977 
   16978 2009-05-11  Sam Weinig  <sam (a] webkit.org>
   16979 
   16980         Reviewed by Cameron Zwarich.
   16981 
   16982         Remove the NumberHeap.
   16983 
   16984         * JavaScriptCore.exp:
   16985         * runtime/Collector.cpp:
   16986         (JSC::Heap::Heap):
   16987         (JSC::Heap::destroy):
   16988         (JSC::Heap::recordExtraCost):
   16989         (JSC::Heap::heapAllocate):
   16990         (JSC::Heap::markConservatively):
   16991         (JSC::Heap::sweep):
   16992         (JSC::Heap::collect):
   16993         (JSC::Heap::objectCount):
   16994         (JSC::Heap::statistics):
   16995         (JSC::typeName):
   16996         (JSC::Heap::isBusy):
   16997         * runtime/Collector.h:
   16998         (JSC::Heap::globalData):
   16999         * runtime/JSCell.h:
   17000 
   17001 2009-05-11  Geoffrey Garen  <ggaren (a] apple.com>
   17002 
   17003         Reviewed by Sam Weinig.
   17004 
   17005         Land initial commit of new number representation for 32 bit platforms,
   17006         with JIT disabled.
   17007 
   17008         * API/APICast.h:
   17009         (toJS):
   17010         (toRef):
   17011         * API/JSCallbackObjectFunctions.h:
   17012         (JSC::::hasInstance):
   17013         (JSC::::toNumber):
   17014         (JSC::::toString):
   17015         * API/tests/testapi.c:
   17016         (EvilExceptionObject_convertToType):
   17017         * AllInOneFile.cpp:
   17018         * JavaScriptCore.exp:
   17019         * JavaScriptCore.xcodeproj/project.pbxproj:
   17020         * bytecode/CodeBlock.cpp:
   17021         (JSC::valueToSourceString):
   17022         * bytecompiler/BytecodeGenerator.cpp:
   17023         (JSC::BytecodeGenerator::emitLoad):
   17024         (JSC::BytecodeGenerator::emitUnexpectedLoad):
   17025         (JSC::keyForImmediateSwitch):
   17026         * bytecompiler/BytecodeGenerator.h:
   17027         * interpreter/Interpreter.cpp:
   17028         (JSC::Interpreter::dumpRegisters):
   17029         (JSC::Interpreter::privateExecute):
   17030         * parser/Nodes.cpp:
   17031         (JSC::ArrayNode::emitBytecode):
   17032         (JSC::processClauseList):
   17033         * runtime/ArgList.h:
   17034         * runtime/Collector.h:
   17035         (JSC::sizeof):
   17036         * runtime/DateMath.cpp:
   17037         * runtime/ExceptionHelpers.h:
   17038         * runtime/InitializeThreading.cpp:
   17039         * runtime/JSArray.cpp:
   17040         (JSC::JSArray::JSArray):
   17041         * runtime/JSCell.cpp:
   17042         * runtime/JSCell.h:
   17043         (JSC::JSCell::isAPIValueWrapper):
   17044         (JSC::JSValue::isString):
   17045         (JSC::JSValue::isGetterSetter):
   17046         (JSC::JSValue::isObject):
   17047         (JSC::JSValue::getString):
   17048         (JSC::JSValue::getObject):
   17049         (JSC::JSValue::getCallData):
   17050         (JSC::JSValue::getConstructData):
   17051         (JSC::JSValue::getUInt32):
   17052         (JSC::JSValue::marked):
   17053         (JSC::JSValue::toPrimitive):
   17054         (JSC::JSValue::getPrimitiveNumber):
   17055         (JSC::JSValue::toBoolean):
   17056         (JSC::JSValue::toNumber):
   17057         (JSC::JSValue::toString):
   17058         (JSC::JSValue::needsThisConversion):
   17059         (JSC::JSValue::toThisString):
   17060         (JSC::JSValue::getJSNumber):
   17061         (JSC::JSValue::toObject):
   17062         (JSC::JSValue::toThisObject):
   17063         * runtime/JSGlobalData.cpp:
   17064         (JSC::JSGlobalData::JSGlobalData):
   17065         * runtime/JSGlobalData.h:
   17066         * runtime/JSGlobalObject.h:
   17067         (JSC::Structure::prototypeForLookup):
   17068         * runtime/JSGlobalObjectFunctions.cpp:
   17069         (JSC::globalFuncParseInt):
   17070         * runtime/JSImmediate.h:
   17071         * runtime/JSNumberCell.cpp: Removed.
   17072         * runtime/JSNumberCell.h: Removed.
   17073         * runtime/JSObject.h:
   17074         (JSC::JSValue::get):
   17075         (JSC::JSValue::put):
   17076         * runtime/JSString.h:
   17077         (JSC::JSValue::toThisJSString):
   17078         * runtime/JSValue.cpp:
   17079         (JSC::JSValue::toInteger):
   17080         (JSC::JSValue::toIntegerPreserveNaN):
   17081         (JSC::JSValue::toObjectSlowCase):
   17082         (JSC::JSValue::toThisObjectSlowCase):
   17083         (JSC::JSValue::synthesizeObject):
   17084         (JSC::JSValue::synthesizePrototype):
   17085         (JSC::JSValue::description):
   17086         (JSC::nonInlineNaN):
   17087         * runtime/JSValue.h:
   17088         (JSC::JSValue::):
   17089         (JSC::EncodedJSValueHashTraits::emptyValue):
   17090         (JSC::jsNaN):
   17091         (JSC::operator==):
   17092         (JSC::operator!=):
   17093         (JSC::toInt32):
   17094         (JSC::toUInt32):
   17095         (JSC::JSValue::encode):
   17096         (JSC::JSValue::decode):
   17097         (JSC::JSValue::JSValue):
   17098         (JSC::JSValue::operator bool):
   17099         (JSC::JSValue::operator==):
   17100         (JSC::JSValue::operator!=):
   17101         (JSC::JSValue::isUndefined):
   17102         (JSC::JSValue::isNull):
   17103         (JSC::JSValue::isUndefinedOrNull):
   17104         (JSC::JSValue::isCell):
   17105         (JSC::JSValue::isInt32):
   17106         (JSC::JSValue::isUInt32):
   17107         (JSC::JSValue::isDouble):
   17108         (JSC::JSValue::isTrue):
   17109         (JSC::JSValue::isFalse):
   17110         (JSC::JSValue::tag):
   17111         (JSC::JSValue::asInt32):
   17112         (JSC::JSValue::asUInt32):
   17113         (JSC::JSValue::asDouble):
   17114         (JSC::JSValue::asCell):
   17115         (JSC::JSValue::isNumber):
   17116         (JSC::JSValue::isBoolean):
   17117         (JSC::JSValue::getBoolean):
   17118         (JSC::JSValue::uncheckedGetNumber):
   17119         (JSC::JSValue::toJSNumber):
   17120         (JSC::JSValue::getNumber):
   17121         (JSC::JSValue::toInt32):
   17122         (JSC::JSValue::toUInt32):
   17123         * runtime/Operations.h:
   17124         (JSC::JSValue::equal):
   17125         (JSC::JSValue::equalSlowCaseInline):
   17126         (JSC::JSValue::strictEqual):
   17127         (JSC::JSValue::strictEqualSlowCaseInline):
   17128         (JSC::jsLess):
   17129         (JSC::jsLessEq):
   17130         (JSC::jsAdd):
   17131         * runtime/PropertySlot.h:
   17132         * runtime/StringPrototype.cpp:
   17133         (JSC::stringProtoFuncCharAt):
   17134         (JSC::stringProtoFuncCharCodeAt):
   17135         (JSC::stringProtoFuncIndexOf):
   17136         * wtf/Platform.h:
   17137 
   17138 === Start merge of nitro-extreme branch 2009-07-30 ===
   17139 
   17140 2009-07-29  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   17141 
   17142         Reviewed by George Staikos.
   17143 
   17144         Resolve class/struct mixup in forward declarations
   17145         https://bugs.webkit.org/show_bug.cgi?id=27708
   17146 
   17147         * API/JSClassRef.h:
   17148         * bytecode/SamplingTool.h:
   17149         * interpreter/Interpreter.h:
   17150         * jit/JIT.h:
   17151         * profiler/ProfileGenerator.h:
   17152         * profiler/Profiler.h:
   17153         * runtime/ClassInfo.h:
   17154         * runtime/ExceptionHelpers.h:
   17155         * runtime/JSByteArray.h:
   17156         * runtime/JSCell.h:
   17157         * runtime/JSFunction.h:
   17158         * runtime/JSGlobalData.h:
   17159         * runtime/JSObject.h:
   17160         * runtime/JSString.h:
   17161 
   17162 2009-07-28  Ada Chan  <adachan (a] apple.com>        
   17163 
   17164         Reviewed by Darin Adler.
   17165 
   17166         https://bugs.webkit.org/show_bug.cgi?id=27236
   17167         - Implement TCMalloc_SystemRelease and TCMalloc_SystemCommit for Windows.
   17168         - Use a background thread to periodically scavenge memory to release back to the system.
   17169 
   17170         * wtf/FastMalloc.cpp:
   17171         (WTF::TCMalloc_PageHeap::init):
   17172         (WTF::TCMalloc_PageHeap::runScavengerThread):
   17173         (WTF::TCMalloc_PageHeap::scavenge):
   17174         (WTF::TCMalloc_PageHeap::shouldContinueScavenging):
   17175         (WTF::TCMalloc_PageHeap::New):
   17176         (WTF::TCMalloc_PageHeap::AllocLarge):
   17177         (WTF::TCMalloc_PageHeap::Delete):
   17178         (WTF::TCMalloc_PageHeap::GrowHeap):
   17179         (WTF::sleep):
   17180         (WTF::TCMalloc_PageHeap::scavengerThread):
   17181         * wtf/TCSystemAlloc.cpp:
   17182         (TCMalloc_SystemRelease):
   17183         (TCMalloc_SystemCommit):
   17184         * wtf/TCSystemAlloc.h:
   17185 
   17186 2009-07-28  Xan Lopez  <xlopez (a] igalia.com>
   17187 
   17188         Add new files, fixes distcheck.
   17189 
   17190         * GNUmakefile.am:
   17191 
   17192 2009-07-28  Csaba Osztrogonac  <oszi (a] inf.u-szeged.hu>
   17193 
   17194         Reviewed by Simon Hausmann.
   17195 
   17196         [Qt] Determining whether to use JIT or interpreter
   17197         moved from JavaScriptCore.pri to Platform.h
   17198 
   17199         * JavaScriptCore.pri:
   17200         * wtf/Platform.h:
   17201 
   17202 2009-07-27  Brian Weinstein  <bweinstein (a] apple.com>
   17203 
   17204         Fix of misuse of sort command.
   17205 
   17206         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   17207         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   17208 
   17209 2009-07-27  Brian Weinstein  <bweinstein (a] apple.com>
   17210 
   17211         Build fix for Windows.
   17212 
   17213         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   17214         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   17215 
   17216 2009-07-27  Gavin Barraclough  <barraclough (a] apple.com>
   17217 
   17218         Rubber stamped by Oliver Hunt.
   17219 
   17220         Fix tyop in JIT, renamed preverveReturnAddressAfterCall -> preserveReturnAddressAfterCall.
   17221 
   17222         * jit/JIT.cpp:
   17223         (JSC::JIT::privateCompile):
   17224         (JSC::JIT::privateCompileCTIMachineTrampolines):
   17225         * jit/JIT.h:
   17226         * jit/JITInlineMethods.h:
   17227         (JSC::JIT::preserveReturnAddressAfterCall):
   17228         * jit/JITPropertyAccess.cpp:
   17229         (JSC::JIT::privateCompilePutByIdTransition):
   17230 
   17231 2009-07-27  Alexey Proskuryakov  <ap (a] webkit.org>
   17232 
   17233         Gtk build fix.
   17234 
   17235         * runtime/JSLock.cpp: (JSC::JSLock::JSLock): Fix "no threading" case.
   17236 
   17237 2009-07-27  Alexey Proskuryakov  <ap (a] webkit.org>
   17238 
   17239         Release build fix.
   17240 
   17241         * runtime/JSLock.h: (JSC::JSLock::~JSLock):
   17242 
   17243 2009-07-27  Alexey Proskuryakov  <ap (a] webkit.org>
   17244 
   17245         Reviewed by Darin Adler.
   17246 
   17247         https://bugs.webkit.org/show_bug.cgi?id=27735
   17248         Give a helpful name to JSLock constructor argument
   17249 
   17250         * API/JSBase.cpp:
   17251         (JSGarbageCollect):
   17252         * API/JSContextRef.cpp:
   17253         * API/JSObjectRef.cpp:
   17254         (JSPropertyNameArrayRelease):
   17255         (JSPropertyNameAccumulatorAddName):
   17256         * JavaScriptCore.exp:
   17257         * jsc.cpp:
   17258         (functionGC):
   17259         (cleanupGlobalData):
   17260         (jscmain):
   17261         * runtime/Collector.cpp:
   17262         (JSC::Heap::destroy):
   17263         * runtime/JSLock.cpp:
   17264         (JSC::JSLock::JSLock):
   17265         (JSC::JSLock::lock):
   17266         (JSC::JSLock::unlock):
   17267         (JSC::JSLock::DropAllLocks::DropAllLocks):
   17268         (JSC::JSLock::DropAllLocks::~DropAllLocks):
   17269         * runtime/JSLock.h:
   17270         (JSC::):
   17271         (JSC::JSLock::JSLock):
   17272         (JSC::JSLock::~JSLock):
   17273 
   17274 2009-07-25  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   17275 
   17276         Reviewed by Eric Seidel.
   17277 
   17278         Allow custom memory allocation control for OpaqueJSPropertyNameArray struct
   17279         https://bugs.webkit.org/show_bug.cgi?id=27342
   17280 
   17281         Inherits OpaqueJSPropertyNameArray struct from FastAllocBase because it has been
   17282         instantiated by 'new' JavaScriptCore/API/JSObjectRef.cpp:473.
   17283 
   17284         * API/JSObjectRef.cpp:
   17285 
   17286 2009-07-24  Ada Chan  <adachan (a] apple.com>
   17287 
   17288         In preparation for https://bugs.webkit.org/show_bug.cgi?id=27236:
   17289         Remove TCMALLOC_TRACK_DECOMMITED_SPANS.  We'll always track decommitted spans.
   17290         We have tested this and show it has little impact on performance.
   17291 
   17292         Reviewed by Mark Rowe.
   17293 
   17294         * wtf/FastMalloc.cpp:
   17295         (WTF::TCMalloc_PageHeap::New):
   17296         (WTF::TCMalloc_PageHeap::AllocLarge):
   17297         (WTF::propagateDecommittedState):
   17298         (WTF::mergeDecommittedStates):
   17299         (WTF::TCMalloc_PageHeap::Delete):
   17300         (WTF::TCMalloc_PageHeap::IncrementalScavenge):
   17301 
   17302 2009-07-24  Csaba Osztrogonac  <oszi (a] inf.u-szeged.hu>
   17303 
   17304         Reviewed by Darin Adler and Adam Barth.
   17305 
   17306         Build fix for x86 platforms.
   17307         https://bugs.webkit.org/show_bug.cgi?id=27602
   17308 
   17309         * jit/JIT.cpp:
   17310 
   17311 2009-07-23  Kevin Ollivier  <kevino (a] theolliviers.com>
   17312 
   17313         wx build fix, adding missing header.
   17314 
   17315         * jit/JIT.cpp:
   17316 
   17317 2009-07-22  Yong Li  <yong.li (a] torchmobile.com>
   17318 
   17319         Reviewed by George Staikos.
   17320 
   17321         Add wince specific memory files into wtf/wince
   17322         https://bugs.webkit.org/show_bug.cgi?id=27550
   17323 
   17324         * wtf/wince/FastMallocWince.h: Added.
   17325         * wtf/wince/MemoryManager.cpp: Added.
   17326         * wtf/wince/MemoryManager.h: Added.
   17327 
   17328 2009-07-23  Norbert Leser  <norbert.leser (a] nokia.com>
   17329 
   17330         Reviewed by Simon Hausmann.
   17331 
   17332         Fix for missing mmap features in Symbian
   17333         https://bugs.webkit.org/show_bug.cgi?id=24540
   17334 
   17335         Fix, conditionally for PLATFORM(SYMBIAN), as an alternative 
   17336         to missing support for the MAP_ANON property flag in mmap. 
   17337         It utilizes Symbian specific memory allocation features.
   17338 
   17339         * runtime/Collector.cpp
   17340 
   17341 2009-07-22  Gavin Barraclough  <barraclough (a] apple.com>
   17342 
   17343         Reviewed by Sam Weinig.
   17344 
   17345         With ENABLE(ASSEMBLER_WX_EXCLUSIVE), only change permissions once per repatch event.
   17346         ( https://bugs.webkit.org/show_bug.cgi?id=27564 )
   17347 
   17348         Currently we change permissions forwards and backwards for each instruction modified,
   17349         instead we should only change permissions once per complete repatching event.
   17350 
   17351         2.5% progression running with ENABLE(ASSEMBLER_WX_EXCLUSIVE) enabled,
   17352         which recoups 1/3 of the penalty of running with this mode enabled.
   17353 
   17354         * assembler/ARMAssembler.cpp:
   17355         (JSC::ARMAssembler::linkBranch):
   17356             - Replace usage of MakeWritable with cacheFlush.
   17357         
   17358         * assembler/ARMAssembler.h:
   17359         (JSC::ARMAssembler::patchPointerInternal):
   17360         (JSC::ARMAssembler::repatchLoadPtrToLEA):
   17361             - Replace usage of MakeWritable with cacheFlush.
   17362 
   17363         * assembler/ARMv7Assembler.h:
   17364         (JSC::ARMv7Assembler::relinkJump):
   17365         (JSC::ARMv7Assembler::relinkCall):
   17366         (JSC::ARMv7Assembler::repatchInt32):
   17367         (JSC::ARMv7Assembler::repatchPointer):
   17368         (JSC::ARMv7Assembler::repatchLoadPtrToLEA):
   17369         (JSC::ARMv7Assembler::setInt32):
   17370             - Replace usage of MakeWritable with cacheFlush.
   17371 
   17372         * assembler/LinkBuffer.h:
   17373         (JSC::LinkBuffer::performFinalization):
   17374             - Make explicit call to cacheFlush.
   17375 
   17376         * assembler/MacroAssemblerCodeRef.h:
   17377         (JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
   17378             - Make size always available.
   17379 
   17380         * assembler/RepatchBuffer.h:
   17381         (JSC::RepatchBuffer::RepatchBuffer):
   17382         (JSC::RepatchBuffer::~RepatchBuffer):
   17383             - Add calls to MakeWritable & makeExecutable.
   17384 
   17385         * assembler/X86Assembler.h:
   17386         (JSC::X86Assembler::relinkJump):
   17387         (JSC::X86Assembler::relinkCall):
   17388         (JSC::X86Assembler::repatchInt32):
   17389         (JSC::X86Assembler::repatchPointer):
   17390         (JSC::X86Assembler::repatchLoadPtrToLEA):
   17391             - Remove usage of MakeWritable.
   17392 
   17393         * bytecode/CodeBlock.h:
   17394         (JSC::CodeBlock::getJITCode):
   17395             - Provide access to CodeBlock's JITCode.
   17396 
   17397         * jit/ExecutableAllocator.h:
   17398         (JSC::ExecutableAllocator::makeExecutable):
   17399         (JSC::ExecutableAllocator::cacheFlush):
   17400             - Remove MakeWritable, make cacheFlush public.
   17401 
   17402         * jit/JIT.cpp:
   17403         (JSC::ctiPatchNearCallByReturnAddress):
   17404         (JSC::ctiPatchCallByReturnAddress):
   17405         (JSC::JIT::privateCompile):
   17406         (JSC::JIT::unlinkCall):
   17407         (JSC::JIT::linkCall):
   17408             - Add CodeBlock argument to RepatchBuffer.
   17409 
   17410         * jit/JIT.h:
   17411             - Pass CodeBlock argument for use by RepatchBuffer.
   17412 
   17413         * jit/JITCode.h:
   17414         (JSC::JITCode::start):
   17415         (JSC::JITCode::size):
   17416             - Provide access to code start & size.
   17417 
   17418         * jit/JITPropertyAccess.cpp:
   17419         (JSC::JIT::privateCompilePutByIdTransition):
   17420         (JSC::JIT::patchGetByIdSelf):
   17421         (JSC::JIT::patchMethodCallProto):
   17422         (JSC::JIT::patchPutByIdReplace):
   17423         (JSC::JIT::privateCompilePatchGetArrayLength):
   17424         (JSC::JIT::privateCompileGetByIdProto):
   17425         (JSC::JIT::privateCompileGetByIdSelfList):
   17426         (JSC::JIT::privateCompileGetByIdProtoList):
   17427         (JSC::JIT::privateCompileGetByIdChainList):
   17428         (JSC::JIT::privateCompileGetByIdChain):
   17429             - Add CodeBlock argument to RepatchBuffer.
   17430 
   17431         * jit/JITStubs.cpp:
   17432         (JSC::JITThunks::tryCachePutByID):
   17433         (JSC::JITThunks::tryCacheGetByID):
   17434         (JSC::JITStubs::DEFINE_STUB_FUNCTION):
   17435             - Pass CodeBlock argument for use by RepatchBuffer.
   17436 
   17437 2009-07-21  Zoltan Herczeg  <zherczeg (a] inf.u-szeged.hu>
   17438 
   17439         Reviewed by Gavin Barraclough.
   17440 
   17441         Cache not only the structure of the method, but the
   17442         structure of its prototype as well.
   17443         https://bugs.webkit.org/show_bug.cgi?id=27077
   17444 
   17445         * bytecode/CodeBlock.cpp:
   17446         (JSC::CodeBlock::~CodeBlock):
   17447         * bytecode/CodeBlock.h:
   17448         (JSC::MethodCallLinkInfo::MethodCallLinkInfo):
   17449         * jit/JITPropertyAccess.cpp:
   17450         (JSC::JIT::patchMethodCallProto):
   17451 
   17452 2009-07-21  Gavin Barraclough  <barraclough (a] apple.com>
   17453 
   17454         Reviewed by Sam Weinig.
   17455 
   17456         Move call linking / repatching down from AbstractMacroAssembler into MacroAssemblerARCH classes.
   17457         ( https://bugs.webkit.org/show_bug.cgi?id=27527 )
   17458 
   17459         This allows the implementation to be defined per architecture.  Specifically this addresses the
   17460         fact that x86-64 MacroAssembler implements far calls as a load to register, followed by a call
   17461         to register.  Patching the call actually requires the pointer load to be patched, rather than
   17462         the call to be patched.  This is implementation detail specific to MacroAssemblerX86_64, and as
   17463         such is best handled there.
   17464 
   17465         * assembler/AbstractMacroAssembler.h:
   17466         * assembler/MacroAssemblerARM.h:
   17467         (JSC::MacroAssemblerARM::linkCall):
   17468         (JSC::MacroAssemblerARM::repatchCall):
   17469         * assembler/MacroAssemblerARMv7.h:
   17470         (JSC::MacroAssemblerARMv7::linkCall):
   17471         (JSC::MacroAssemblerARMv7::repatchCall):
   17472         * assembler/MacroAssemblerX86.h:
   17473         (JSC::MacroAssemblerX86::linkCall):
   17474         (JSC::MacroAssemblerX86::repatchCall):
   17475         * assembler/MacroAssemblerX86_64.h:
   17476         (JSC::MacroAssemblerX86_64::linkCall):
   17477         (JSC::MacroAssemblerX86_64::repatchCall):
   17478 
   17479 2009-07-21  Adam Treat  <adam.treat (a] torchmobile.com>
   17480 
   17481         Reviewed by George Staikos.
   17482 
   17483         Every wtf file includes other wtf files with <> style includes
   17484         except this one.  Fix the exception.
   17485 
   17486         * wtf/ByteArray.h:
   17487 
   17488 2009-07-21  Gavin Barraclough  <barraclough (a] apple.com>
   17489 
   17490         Reviewed by Oliver Hunt.
   17491 
   17492         Move LinkBuffer/RepatchBuffer out of AbstractMacroAssembler.
   17493         ( https://bugs.webkit.org/show_bug.cgi?id=27485 )
   17494 
   17495         This change is the first step in a process to move code that should be in
   17496         the architecture-specific MacroAssembler classes up out of Assmbler and
   17497         AbstractMacroAssembler.
   17498 
   17499         * JavaScriptCore.xcodeproj/project.pbxproj:
   17500             - added new files
   17501         
   17502         * assembler/ARMAssembler.h:
   17503         (JSC::ARMAssembler::linkPointer):
   17504             - rename patchPointer to bring it in line with the current link/repatch naming scheme
   17505         
   17506         * assembler/ARMv7Assembler.h:
   17507         (JSC::ARMv7Assembler::linkCall):
   17508         (JSC::ARMv7Assembler::linkPointer):
   17509         (JSC::ARMv7Assembler::relinkCall):
   17510         (JSC::ARMv7Assembler::repatchInt32):
   17511         (JSC::ARMv7Assembler::repatchPointer):
   17512         (JSC::ARMv7Assembler::setInt32):
   17513         (JSC::ARMv7Assembler::setPointer):
   17514             - rename patchPointer to bring it in line with the current link/repatch naming scheme
   17515 
   17516         * assembler/AbstractMacroAssembler.h:
   17517         (JSC::AbstractMacroAssembler::linkJump):
   17518         (JSC::AbstractMacroAssembler::linkCall):
   17519         (JSC::AbstractMacroAssembler::linkPointer):
   17520         (JSC::AbstractMacroAssembler::getLinkerAddress):
   17521         (JSC::AbstractMacroAssembler::getLinkerCallReturnOffset):
   17522         (JSC::AbstractMacroAssembler::repatchJump):
   17523         (JSC::AbstractMacroAssembler::repatchCall):
   17524         (JSC::AbstractMacroAssembler::repatchNearCall):
   17525         (JSC::AbstractMacroAssembler::repatchInt32):
   17526         (JSC::AbstractMacroAssembler::repatchPointer):
   17527         (JSC::AbstractMacroAssembler::repatchLoadPtrToLEA):
   17528             - remove the LinkBuffer/RepatchBuffer classes, but leave a set of (private, friended) methods to interface to the Assembler
   17529 
   17530         * assembler/LinkBuffer.h: Added.
   17531         (JSC::LinkBuffer::LinkBuffer):
   17532         (JSC::LinkBuffer::~LinkBuffer):
   17533         (JSC::LinkBuffer::link):
   17534         (JSC::LinkBuffer::patch):
   17535         (JSC::LinkBuffer::locationOf):
   17536         (JSC::LinkBuffer::locationOfNearCall):
   17537         (JSC::LinkBuffer::returnAddressOffset):
   17538         (JSC::LinkBuffer::finalizeCode):
   17539         (JSC::LinkBuffer::finalizeCodeAddendum):
   17540         (JSC::LinkBuffer::code):
   17541         (JSC::LinkBuffer::performFinalization):
   17542             - new file containing the LinkBuffer class, previously a member of AbstractMacroAssembler
   17543 
   17544         * assembler/RepatchBuffer.h: Added.
   17545         (JSC::RepatchBuffer::RepatchBuffer):
   17546         (JSC::RepatchBuffer::relink):
   17547         (JSC::RepatchBuffer::repatch):
   17548         (JSC::RepatchBuffer::repatchLoadPtrToLEA):
   17549         (JSC::RepatchBuffer::relinkCallerToTrampoline):
   17550         (JSC::RepatchBuffer::relinkCallerToFunction):
   17551         (JSC::RepatchBuffer::relinkNearCallerToTrampoline):
   17552             - new file containing the RepatchBuffer class, previously a member of AbstractMacroAssembler
   17553 
   17554         * assembler/X86Assembler.h:
   17555         (JSC::X86Assembler::linkJump):
   17556         (JSC::X86Assembler::linkCall):
   17557         (JSC::X86Assembler::linkPointerForCall):
   17558         (JSC::X86Assembler::linkPointer):
   17559         (JSC::X86Assembler::relinkJump):
   17560         (JSC::X86Assembler::relinkCall):
   17561         (JSC::X86Assembler::repatchInt32):
   17562         (JSC::X86Assembler::repatchPointer):
   17563         (JSC::X86Assembler::setPointer):
   17564         (JSC::X86Assembler::setInt32):
   17565         (JSC::X86Assembler::setRel32):
   17566             - rename patchPointer to bring it in line with the current link/repatch naming scheme
   17567 
   17568         * jit/JIT.cpp:
   17569         (JSC::ctiPatchNearCallByReturnAddress):
   17570         (JSC::ctiPatchCallByReturnAddress):
   17571             - include new headers
   17572             - remove MacroAssembler:: specification from RepatchBuffer usage
   17573 
   17574         * jit/JITPropertyAccess.cpp:
   17575         * yarr/RegexJIT.cpp:
   17576             - include new headers
   17577 
   17578 2009-07-21  Robert Agoston  <Agoston.Robert (a] stud.u-szeged.hu>
   17579 
   17580         Reviewed by David Levin.
   17581 
   17582         Fixed #undef typo.
   17583         https://bugs.webkit.org/show_bug.cgi?id=27506
   17584 
   17585         * bytecode/Opcode.h:
   17586 
   17587 2009-07-21  Adam Roben  <aroben (a] apple.com>
   17588 
   17589         Roll out r46153, r46154, and r46155
   17590 
   17591         These changes were causing build failures and assertion failures on
   17592         Windows.
   17593 
   17594         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   17595         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   17596         * JavaScriptCore.xcodeproj/project.pbxproj:
   17597         * runtime/JSArray.cpp:
   17598         * runtime/StringPrototype.cpp:
   17599         * runtime/UString.cpp:
   17600         * runtime/UString.h:
   17601         * wtf/FastMalloc.cpp:
   17602         * wtf/FastMalloc.h:
   17603         * wtf/Platform.h:
   17604         * wtf/PossiblyNull.h: Removed.
   17605 
   17606 2009-07-21  Roland Steiner  <rolandsteiner (a] google.com>
   17607 
   17608         Reviewed by David Levin.
   17609 
   17610         Add ENABLE_RUBY to list of build options
   17611         https://bugs.webkit.org/show_bug.cgi?id=27324
   17612 
   17613         * Configurations/FeatureDefines.xcconfig: Added flag ENABLE_RUBY.
   17614 
   17615 2009-07-20  Oliver Hunt  <oliver (a] apple.com>
   17616 
   17617         Build fix attempt #2
   17618 
   17619         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   17620         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   17621 
   17622 2009-07-20  Oliver Hunt  <oliver (a] apple.com>
   17623 
   17624         Build fix attempt #1
   17625 
   17626         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   17627         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   17628 
   17629 2009-07-20  Oliver Hunt  <oliver (a] apple.com>
   17630 
   17631         Reviewed by Gavin Barraclough.
   17632 
   17633         Make it harder to misuse try* allocation routines
   17634         https://bugs.webkit.org/show_bug.cgi?id=27469
   17635 
   17636         Jump through a few hoops to make it much harder to accidentally
   17637         miss null-checking of values returned by the try-* allocation
   17638         routines.
   17639 
   17640         * JavaScriptCore.xcodeproj/project.pbxproj:
   17641         * runtime/JSArray.cpp:
   17642         (JSC::JSArray::putSlowCase):
   17643         (JSC::JSArray::increaseVectorLength):
   17644         * runtime/StringPrototype.cpp:
   17645         (JSC::stringProtoFuncFontsize):
   17646         (JSC::stringProtoFuncLink):
   17647         * runtime/UString.cpp:
   17648         (JSC::allocChars):
   17649         (JSC::reallocChars):
   17650         (JSC::expandCapacity):
   17651         (JSC::UString::Rep::reserveCapacity):
   17652         (JSC::UString::expandPreCapacity):
   17653         (JSC::createRep):
   17654         (JSC::concatenate):
   17655         (JSC::UString::spliceSubstringsWithSeparators):
   17656         (JSC::UString::replaceRange):
   17657         (JSC::UString::append):
   17658         (JSC::UString::operator=):
   17659         * runtime/UString.h:
   17660         (JSC::UString::Rep::createEmptyBuffer):
   17661         * wtf/FastMalloc.cpp:
   17662         (WTF::tryFastZeroedMalloc):
   17663         (WTF::tryFastMalloc):
   17664         (WTF::tryFastCalloc):
   17665         (WTF::tryFastRealloc):
   17666         (WTF::TCMallocStats::tryFastMalloc):
   17667         (WTF::TCMallocStats::tryFastCalloc):
   17668         (WTF::TCMallocStats::tryFastRealloc):
   17669         * wtf/FastMalloc.h:
   17670         (WTF::TryMallocReturnValue::TryMallocReturnValue):
   17671         (WTF::TryMallocReturnValue::~TryMallocReturnValue):
   17672         (WTF::TryMallocReturnValue::operator Maybe<T>):
   17673         (WTF::TryMallocReturnValue::getValue):
   17674         * wtf/PossiblyNull.h:
   17675         (WTF::PossiblyNull::PossiblyNull):
   17676         (WTF::PossiblyNull::~PossiblyNull):
   17677         (WTF::PossiblyNull::getValue):
   17678         * wtf/Platform.h:
   17679 
   17680 2009-07-20  Gavin Barraclough  <barraclough (a] apple.com>
   17681 
   17682         RS Oliver Hunt.
   17683 
   17684         Add ARM assembler files to xcodeproj, for convenience editing.
   17685 
   17686         * JavaScriptCore.xcodeproj/project.pbxproj:
   17687 
   17688 2009-07-20  Jessie Berlin  <jberlin (a] apple.com>
   17689 
   17690         Reviewed by David Levin.
   17691 
   17692         Fix an incorrect assertion in Vector::remove.
   17693         
   17694         https://bugs.webkit.org/show_bug.cgi?id=27477
   17695 
   17696         * wtf/Vector.h:
   17697         (WTF::::remove):
   17698         Assert that the position at which to start removing elements + the
   17699         length (the number of elements to remove) is less than or equal to the
   17700         size of the entire Vector.
   17701 
   17702 2009-07-20  Peter Kasting  <pkasting (a] google.com>
   17703 
   17704         Reviewed by Mark Rowe.
   17705 
   17706         https://bugs.webkit.org/show_bug.cgi?id=27468
   17707         Back out r46060, which caused problems for some Apple developers.
   17708 
   17709         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
   17710         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
   17711         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
   17712         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
   17713         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
   17714 
   17715 2009-07-20  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   17716 
   17717         Reviewed by Oliver Hunt.
   17718 
   17719         Allow custom memory allocation control in NewThreadContext
   17720         https://bugs.webkit.org/show_bug.cgi?id=27338
   17721 
   17722         Inherits NewThreadContext struct from FastAllocBase because it
   17723         has been instantiated by 'new' JavaScriptCore/wtf/Threading.cpp:76.
   17724 
   17725         * wtf/Threading.cpp:
   17726 
   17727 2009-07-20  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   17728 
   17729         Reviewed by Oliver Hunt.
   17730 
   17731         Allow custom memory allocation control in JavaScriptCore's JSClassRef.h
   17732         https://bugs.webkit.org/show_bug.cgi?id=27340
   17733 
   17734         Inherit StaticValueEntry and StaticFunctionEntry struct from FastAllocBase because these
   17735         have been instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:153
   17736         and in JavaScriptCore/API/JSClassRef.cpp:166.
   17737 
   17738         * API/JSClassRef.h:
   17739 
   17740 2009-07-20  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   17741 
   17742         Reviewed by Darin Adler.
   17743 
   17744         Allow custom memory allocation control in JavaScriptCore's RegexPattern.h
   17745         https://bugs.webkit.org/show_bug.cgi?id=27343
   17746 
   17747         Inherits RegexPattern.h's structs (which have been instantiated by operator new) from FastAllocBase:
   17748 
   17749         CharacterClass (new call: JavaScriptCore/yarr/RegexCompiler.cpp:144)
   17750         PatternAlternative (new call: JavaScriptCore/yarr/RegexPattern.h:221) 
   17751         PatternDisjunction (new call: JavaScriptCore/yarr/RegexCompiler.cpp:446)
   17752 
   17753         * yarr/RegexPattern.h:
   17754 
   17755 2009-07-20  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   17756 
   17757         Reviewed by Darin Adler.
   17758 
   17759         Allow custom memory allocation control for JavaScriptCore's MatchFrame struct
   17760         https://bugs.webkit.org/show_bug.cgi?id=27344
   17761 
   17762         Inherits MatchFrame struct from FastAllocBase because it has
   17763         been instantiated by 'new' JavaScriptCore/pcre/pcre_exec.cpp:359.
   17764 
   17765         * pcre/pcre_exec.cpp:
   17766 
   17767 2009-07-20  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   17768 
   17769         Reviewed by Holger Freyther.
   17770 
   17771         Remove some outdated S60 platform specific code
   17772         https://bugs.webkit.org/show_bug.cgi?id=27423
   17773 
   17774         * wtf/Platform.h:
   17775 
   17776 2009-07-20  Csaba Osztrogonac  <oszi (a] inf.u-szeged.hu>
   17777 
   17778         Reviewed by Simon Hausmann.
   17779 
   17780         Qt build fix with MSVC and MinGW.
   17781 
   17782         * jsc.pro: Make sure jsc is a console application, and turn off
   17783         exceptions and stl support to fix the build.
   17784 
   17785 2009-07-20  Xan Lopez  <xlopez (a] igalia.com>
   17786 
   17787         Reviewed by Gustavo Noronha.
   17788 
   17789         Do not use C++-style comments in preprocessor directives.
   17790 
   17791         GCC does not like this in some configurations, using C-style
   17792         comments is safer.
   17793 
   17794         * wtf/Platform.h:
   17795 
   17796 2009-07-17  Peter Kasting  <pkasting (a] google.com>
   17797 
   17798         Reviewed by Steve Falkenburg.
   17799 
   17800         https://bugs.webkit.org/show_bug.cgi?id=27323
   17801         Only add Cygwin to the path when it isn't already there.  This avoids
   17802         causing problems for people who purposefully have non-Cygwin versions of
   17803         executables like svn in front of the Cygwin ones in their paths.
   17804 
   17805         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
   17806         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
   17807         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
   17808         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
   17809         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
   17810 
   17811 2009-07-17  Gabor Loki  <loki (a] inf.u-szeged.hu>
   17812 
   17813         Reviewed by Gavin Barraclough.
   17814 
   17815         Add YARR support for generic ARM platforms (disabled by default).
   17816         https://bugs.webkit.org/show_bug.cgi?id=24986
   17817 
   17818         Add generic ARM port for MacroAssembler. It supports the whole
   17819         MacroAssembler functionality except floating point.
   17820 
   17821         The class JmpSrc is extended with a flag which enables to patch
   17822         the jump destination offset during execution. This feature is
   17823         required for generic ARM port.
   17824 
   17825         Signed off by Zoltan Herczeg <zherczeg (a] inf.u-szeged.hu>
   17826         Signed off by Gabor Loki <loki (a] inf.u-szeged.hu>
   17827 
   17828         * JavaScriptCore.pri:
   17829         * assembler/ARMAssembler.cpp: Added.
   17830         (JSC::ARMAssembler::getLdrImmAddress):
   17831         (JSC::ARMAssembler::linkBranch):
   17832         (JSC::ARMAssembler::patchConstantPoolLoad):
   17833         (JSC::ARMAssembler::getOp2):
   17834         (JSC::ARMAssembler::genInt):
   17835         (JSC::ARMAssembler::getImm):
   17836         (JSC::ARMAssembler::moveImm):
   17837         (JSC::ARMAssembler::dataTransfer32):
   17838         (JSC::ARMAssembler::baseIndexTransfer32):
   17839         (JSC::ARMAssembler::executableCopy):
   17840         * assembler/ARMAssembler.h: Added.
   17841         (JSC::ARM::):
   17842         (JSC::ARMAssembler::ARMAssembler):
   17843         (JSC::ARMAssembler::):
   17844         (JSC::ARMAssembler::JmpSrc::JmpSrc):
   17845         (JSC::ARMAssembler::JmpSrc::enableLatePatch):
   17846         (JSC::ARMAssembler::JmpDst::JmpDst):
   17847         (JSC::ARMAssembler::JmpDst::isUsed):
   17848         (JSC::ARMAssembler::JmpDst::used):
   17849         (JSC::ARMAssembler::emitInst):
   17850         (JSC::ARMAssembler::and_r):
   17851         (JSC::ARMAssembler::ands_r):
   17852         (JSC::ARMAssembler::eor_r):
   17853         (JSC::ARMAssembler::eors_r):
   17854         (JSC::ARMAssembler::sub_r):
   17855         (JSC::ARMAssembler::subs_r):
   17856         (JSC::ARMAssembler::rsb_r):
   17857         (JSC::ARMAssembler::rsbs_r):
   17858         (JSC::ARMAssembler::add_r):
   17859         (JSC::ARMAssembler::adds_r):
   17860         (JSC::ARMAssembler::adc_r):
   17861         (JSC::ARMAssembler::adcs_r):
   17862         (JSC::ARMAssembler::sbc_r):
   17863         (JSC::ARMAssembler::sbcs_r):
   17864         (JSC::ARMAssembler::rsc_r):
   17865         (JSC::ARMAssembler::rscs_r):
   17866         (JSC::ARMAssembler::tst_r):
   17867         (JSC::ARMAssembler::teq_r):
   17868         (JSC::ARMAssembler::cmp_r):
   17869         (JSC::ARMAssembler::orr_r):
   17870         (JSC::ARMAssembler::orrs_r):
   17871         (JSC::ARMAssembler::mov_r):
   17872         (JSC::ARMAssembler::movs_r):
   17873         (JSC::ARMAssembler::bic_r):
   17874         (JSC::ARMAssembler::bics_r):
   17875         (JSC::ARMAssembler::mvn_r):
   17876         (JSC::ARMAssembler::mvns_r):
   17877         (JSC::ARMAssembler::mul_r):
   17878         (JSC::ARMAssembler::muls_r):
   17879         (JSC::ARMAssembler::mull_r):
   17880         (JSC::ARMAssembler::ldr_imm):
   17881         (JSC::ARMAssembler::ldr_un_imm):
   17882         (JSC::ARMAssembler::dtr_u):
   17883         (JSC::ARMAssembler::dtr_ur):
   17884         (JSC::ARMAssembler::dtr_d):
   17885         (JSC::ARMAssembler::dtr_dr):
   17886         (JSC::ARMAssembler::ldrh_r):
   17887         (JSC::ARMAssembler::ldrh_d):
   17888         (JSC::ARMAssembler::ldrh_u):
   17889         (JSC::ARMAssembler::strh_r):
   17890         (JSC::ARMAssembler::push_r):
   17891         (JSC::ARMAssembler::pop_r):
   17892         (JSC::ARMAssembler::poke_r):
   17893         (JSC::ARMAssembler::peek_r):
   17894         (JSC::ARMAssembler::clz_r):
   17895         (JSC::ARMAssembler::bkpt):
   17896         (JSC::ARMAssembler::lsl):
   17897         (JSC::ARMAssembler::lsr):
   17898         (JSC::ARMAssembler::asr):
   17899         (JSC::ARMAssembler::lsl_r):
   17900         (JSC::ARMAssembler::lsr_r):
   17901         (JSC::ARMAssembler::asr_r):
   17902         (JSC::ARMAssembler::size):
   17903         (JSC::ARMAssembler::ensureSpace):
   17904         (JSC::ARMAssembler::label):
   17905         (JSC::ARMAssembler::align):
   17906         (JSC::ARMAssembler::jmp):
   17907         (JSC::ARMAssembler::patchPointerInternal):
   17908         (JSC::ARMAssembler::patchConstantPoolLoad):
   17909         (JSC::ARMAssembler::patchPointer):
   17910         (JSC::ARMAssembler::repatchInt32):
   17911         (JSC::ARMAssembler::repatchPointer):
   17912         (JSC::ARMAssembler::repatchLoadPtrToLEA):
   17913         (JSC::ARMAssembler::linkJump):
   17914         (JSC::ARMAssembler::relinkJump):
   17915         (JSC::ARMAssembler::linkCall):
   17916         (JSC::ARMAssembler::relinkCall):
   17917         (JSC::ARMAssembler::getRelocatedAddress):
   17918         (JSC::ARMAssembler::getDifferenceBetweenLabels):
   17919         (JSC::ARMAssembler::getCallReturnOffset):
   17920         (JSC::ARMAssembler::getOp2Byte):
   17921         (JSC::ARMAssembler::placeConstantPoolBarrier):
   17922         (JSC::ARMAssembler::RM):
   17923         (JSC::ARMAssembler::RS):
   17924         (JSC::ARMAssembler::RD):
   17925         (JSC::ARMAssembler::RN):
   17926         (JSC::ARMAssembler::getConditionalField):
   17927         * assembler/ARMv7Assembler.h:
   17928         (JSC::ARMv7Assembler::JmpSrc::enableLatePatch):
   17929         * assembler/AbstractMacroAssembler.h:
   17930         (JSC::AbstractMacroAssembler::Call::enableLatePatch):
   17931         (JSC::AbstractMacroAssembler::Jump::enableLatePatch):
   17932         * assembler/MacroAssembler.h:
   17933         * assembler/MacroAssemblerARM.h: Added.
   17934         (JSC::MacroAssemblerARM::):
   17935         (JSC::MacroAssemblerARM::add32):
   17936         (JSC::MacroAssemblerARM::and32):
   17937         (JSC::MacroAssemblerARM::lshift32):
   17938         (JSC::MacroAssemblerARM::mul32):
   17939         (JSC::MacroAssemblerARM::not32):
   17940         (JSC::MacroAssemblerARM::or32):
   17941         (JSC::MacroAssemblerARM::rshift32):
   17942         (JSC::MacroAssemblerARM::sub32):
   17943         (JSC::MacroAssemblerARM::xor32):
   17944         (JSC::MacroAssemblerARM::load32):
   17945         (JSC::MacroAssemblerARM::load32WithAddressOffsetPatch):
   17946         (JSC::MacroAssemblerARM::loadPtrWithPatchToLEA):
   17947         (JSC::MacroAssemblerARM::load16):
   17948         (JSC::MacroAssemblerARM::store32WithAddressOffsetPatch):
   17949         (JSC::MacroAssemblerARM::store32):
   17950         (JSC::MacroAssemblerARM::pop):
   17951         (JSC::MacroAssemblerARM::push):
   17952         (JSC::MacroAssemblerARM::move):
   17953         (JSC::MacroAssemblerARM::swap):
   17954         (JSC::MacroAssemblerARM::signExtend32ToPtr):
   17955         (JSC::MacroAssemblerARM::zeroExtend32ToPtr):
   17956         (JSC::MacroAssemblerARM::branch32):
   17957         (JSC::MacroAssemblerARM::branch16):
   17958         (JSC::MacroAssemblerARM::branchTest32):
   17959         (JSC::MacroAssemblerARM::jump):
   17960         (JSC::MacroAssemblerARM::branchAdd32):
   17961         (JSC::MacroAssemblerARM::mull32):
   17962         (JSC::MacroAssemblerARM::branchMul32):
   17963         (JSC::MacroAssemblerARM::branchSub32):
   17964         (JSC::MacroAssemblerARM::breakpoint):
   17965         (JSC::MacroAssemblerARM::nearCall):
   17966         (JSC::MacroAssemblerARM::call):
   17967         (JSC::MacroAssemblerARM::ret):
   17968         (JSC::MacroAssemblerARM::set32):
   17969         (JSC::MacroAssemblerARM::setTest32):
   17970         (JSC::MacroAssemblerARM::tailRecursiveCall):
   17971         (JSC::MacroAssemblerARM::makeTailRecursiveCall):
   17972         (JSC::MacroAssemblerARM::moveWithPatch):
   17973         (JSC::MacroAssemblerARM::branchPtrWithPatch):
   17974         (JSC::MacroAssemblerARM::storePtrWithPatch):
   17975         (JSC::MacroAssemblerARM::supportsFloatingPoint):
   17976         (JSC::MacroAssemblerARM::supportsFloatingPointTruncate):
   17977         (JSC::MacroAssemblerARM::loadDouble):
   17978         (JSC::MacroAssemblerARM::storeDouble):
   17979         (JSC::MacroAssemblerARM::addDouble):
   17980         (JSC::MacroAssemblerARM::subDouble):
   17981         (JSC::MacroAssemblerARM::mulDouble):
   17982         (JSC::MacroAssemblerARM::convertInt32ToDouble):
   17983         (JSC::MacroAssemblerARM::branchDouble):
   17984         (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32):
   17985         (JSC::MacroAssemblerARM::ARMCondition):
   17986         (JSC::MacroAssemblerARM::prepareCall):
   17987         (JSC::MacroAssemblerARM::call32):
   17988         * assembler/X86Assembler.h:
   17989         (JSC::X86Assembler::JmpSrc::enableLatePatch):
   17990         * jit/ExecutableAllocator.h:
   17991         (JSC::ExecutableAllocator::cacheFlush):
   17992         * wtf/Platform.h:
   17993         * yarr/RegexJIT.cpp:
   17994         (JSC::Yarr::RegexGenerator::generateEnter):
   17995         (JSC::Yarr::RegexGenerator::generateReturn):
   17996 
   17997 2009-07-17  Gabor Loki  <loki (a] inf.u-szeged.hu>
   17998 
   17999         Reviewed by Gavin Barraclough.
   18000 
   18001         Extend AssemblerBuffer with constant pool handling mechanism.
   18002         https://bugs.webkit.org/show_bug.cgi?id=24986
   18003 
   18004         Add a platform independed constant pool framework.
   18005         This pool can store 32 or 64 bits values which is enough to hold
   18006         any integer, pointer or double constant.
   18007 
   18008         * assembler/AssemblerBuffer.h:
   18009         (JSC::AssemblerBuffer::putIntUnchecked):
   18010         (JSC::AssemblerBuffer::putInt64Unchecked):
   18011         (JSC::AssemblerBuffer::append):
   18012         (JSC::AssemblerBuffer::grow):
   18013         * assembler/AssemblerBufferWithConstantPool.h: Added.
   18014         (JSC::):
   18015 
   18016 2009-07-17  Eric Roman  <eroman (a] chromium.org>
   18017 
   18018         Reviewed by Darin Adler.
   18019 
   18020         Build fix for non-Darwin.
   18021         Add a guard for inclusion of RetainPtr.h which includes CoreFoundation.h
   18022 
   18023         https://bugs.webkit.org/show_bug.cgi?id=27382
   18024 
   18025         * wtf/unicode/icu/CollatorICU.cpp:
   18026 
   18027 2009-07-17  Alexey Proskuryakov  <ap (a] webkit.org>
   18028 
   18029         Reviewed by John Sullivan.
   18030 
   18031         Get user default collation order via a CFLocale API when available.
   18032 
   18033         * wtf/unicode/icu/CollatorICU.cpp: (WTF::Collator::userDefault):
   18034 
   18035 2009-07-17  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   18036 
   18037         Reviewed by Simon Hausmann.
   18038 
   18039         [Qt] Fix the include path for the Symbian port
   18040         https://bugs.webkit.org/show_bug.cgi?id=27358
   18041 
   18042         * JavaScriptCore.pri:
   18043 
   18044 2009-07-17  Csaba Osztrogonac  <oszi (a] inf.u-szeged.hu>
   18045 
   18046         Reviewed by David Levin.
   18047 
   18048         Build fix on platforms don't have MMAP.
   18049         https://bugs.webkit.org/show_bug.cgi?id=27365
   18050 
   18051         * interpreter/RegisterFile.h: Including stdio.h irrespectively of HAVE(MMAP)
   18052 
   18053 2009-07-16  Fumitoshi Ukai  <ukai (a] chromium.org>
   18054 
   18055         Reviewed by David Levin.
   18056 
   18057         Add --web-sockets flag and ENABLE_WEB_SOCKETS define.
   18058         https://bugs.webkit.org/show_bug.cgi?id=27206
   18059         
   18060         Add ENABLE_WEB_SOCKETS
   18061 
   18062         * Configurations/FeatureDefines.xcconfig: add ENABLE_WEB_SOCKETS
   18063 
   18064 2009-07-16  Maxime Simon  <simon.maxime (a] gmail.com>
   18065 
   18066         Reviewed by Eric Seidel.
   18067 
   18068         Added Haiku-specific files for JavaScriptCore.
   18069         https://bugs.webkit.org/show_bug.cgi?id=26620
   18070 
   18071         * wtf/haiku/MainThreadHaiku.cpp: Added.
   18072         (WTF::initializeMainThreadPlatform):
   18073         (WTF::scheduleDispatchFunctionsOnMainThread):
   18074 
   18075 2009-07-16  Gavin Barraclough  <barraclough (a] apple.com>
   18076 
   18077         RS by Oliver Hunt.
   18078 
   18079         Revert r45969, this fix does not appear to be valid.
   18080         https://bugs.webkit.org/show_bug.cgi?id=27077
   18081 
   18082         * bytecode/CodeBlock.cpp:
   18083         (JSC::CodeBlock::~CodeBlock):
   18084         (JSC::CodeBlock::unlinkCallers):
   18085         * jit/JIT.cpp:
   18086         * jit/JIT.h:
   18087 
   18088 2009-07-16  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   18089 
   18090         Reviewed by Oliver Hunt.
   18091 
   18092         Allow custom memory allocation control in ExceptionInfo and RareData struct
   18093         https://bugs.webkit.org/show_bug.cgi?id=27336
   18094 
   18095         Inherits ExceptionInfo and RareData struct from FastAllocBase because these
   18096         have been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.cpp:1289 and
   18097         in JavaScriptCore/bytecode/CodeBlock.h:453.
   18098 
   18099         Remove unnecessary WTF:: namespace from CodeBlock inheritance.
   18100  
   18101         * bytecode/CodeBlock.h:
   18102 
   18103 2009-07-16  Mark Rowe  <mrowe (a] apple.com>
   18104 
   18105         Rubber-stamped by Geoff Garen.
   18106 
   18107         Fix FeatureDefines.xcconfig to not be out of sync with the rest of the world.
   18108 
   18109         * Configurations/FeatureDefines.xcconfig:
   18110 
   18111 2009-07-16  Yong Li  <yong.li (a] torchmobile.com>
   18112 
   18113          Reviewed by George Staikos.
   18114 
   18115          https://bugs.webkit.org/show_bug.cgi?id=27320
   18116          _countof is only included in CE6; for CE5 we need to define it ourself
   18117 
   18118          * wtf/Platform.h:
   18119 
   18120 2009-07-16  Zoltan Herczeg  <zherczeg (a] inf.u-szeged.hu>
   18121 
   18122         Reviewed by Oliver Hunt.
   18123 
   18124         Workers + garbage collector: weird crashes
   18125         https://bugs.webkit.org/show_bug.cgi?id=27077
   18126 
   18127         We need to unlink cached method call sites when a function is destroyed.
   18128 
   18129         * JavaScriptCore.xcodeproj/project.pbxproj:
   18130         * bytecode/CodeBlock.cpp:
   18131         (JSC::CodeBlock::~CodeBlock):
   18132         (JSC::CodeBlock::unlinkCallers):
   18133         * jit/JIT.cpp:
   18134         (JSC::JIT::unlinkMethodCall):
   18135         * jit/JIT.h:
   18136 
   18137 2009-07-15  Steve Falkenburg  <sfalken (a] apple.com>
   18138 
   18139         Windows Build fix.
   18140 
   18141         Visual Studio reset our intermediate directory on us.
   18142         This sets it back.
   18143         
   18144         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
   18145         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
   18146 
   18147 2009-07-15  Kwang Yul Seo  <skyul (a] company100.net>
   18148 
   18149         Reviewed by Eric Seidel.
   18150 
   18151         https://bugs.webkit.org/show_bug.cgi?id=26794
   18152         Make Yacc-generated parsers to use fastMalloc/fastFree.
   18153         
   18154         Define YYMALLOC and YYFREE to fastMalloc and fastFree
   18155         respectively.
   18156 
   18157         * parser/Grammar.y:
   18158 
   18159 2009-07-15  Darin Adler  <darin (a] apple.com>
   18160 
   18161         Fix a build for a particular Apple configuration.
   18162 
   18163         * wtf/FastAllocBase.h: Change include to use "" style for
   18164         including another wtf header. This is the style we use for
   18165         including other public headers in the same directory.
   18166 
   18167 2009-07-15  George Staikos  <george.staikos (a] torchmobile.com>
   18168 
   18169         Reviewed by Adam Treat.
   18170 
   18171         https://bugs.webkit.org/show_bug.cgi?id=27303
   18172         Implement createThreadInternal for WinCE.
   18173         Contains changes by George Staikos <george.staikos (a] torchmobile.com> and Joe Mason <joe.mason (a] torchmobile.com>
   18174 
   18175         * wtf/ThreadingWin.cpp:
   18176         (WTF::createThreadInternal):
   18177 
   18178 2009-07-15  Joe Mason  <joe.mason (a] torchmobile.com>
   18179 
   18180          Reviewed by George Staikos.
   18181 
   18182          https://bugs.webkit.org/show_bug.cgi?id=27298
   18183          Platform defines for WINCE.
   18184          Contains changes by Yong Li <yong.li (a] torchmobile.com>,
   18185          George Staikos <george.staikos (a] torchmobile.com> and Joe Mason <joe.mason (a] torchmobile.com>
   18186 
   18187          * wtf/Platform.h:
   18188 
   18189 2009-07-15  Yong Li  <yong.li (a] torchmobile.com>
   18190 
   18191          Reviewed by Adam Treat.
   18192 
   18193          https://bugs.webkit.org/show_bug.cgi?id=27306
   18194          Use RegisterClass instead of RegisterClassEx on WinCE.
   18195 
   18196          * wtf/win/MainThreadWin.cpp:
   18197          (WTF::initializeMainThreadPlatform):
   18198 
   18199 2009-07-15  Yong Li  <yong.li (a] torchmobile.com>
   18200 
   18201          Reviewed by George Staikos.
   18202 
   18203          https://bugs.webkit.org/show_bug.cgi?id=27301
   18204          Use OutputDebugStringW on WinCE since OutputDebugStringA is not supported
   18205          Originally written by Yong Li <yong.li (a] torchmobile.com> and refactored by
   18206          Joe Mason <joe.mason (a] torchmobile.com>
   18207 
   18208          * wtf/Assertions.cpp: vprintf_stderr_common
   18209 
   18210 2009-07-15  Yong Li  <yong.li (a] torchmobile.com>
   18211 
   18212          Reviewed by George Staikos.
   18213 
   18214          https://bugs.webkit.org/show_bug.cgi?id=27020
   18215          msToGregorianDateTime should set utcOffset to 0 when outputIsUTC is false
   18216 
   18217          * wtf/DateMath.cpp:
   18218          (WTF::gregorianDateTimeToMS):
   18219 
   18220 2009-07-15  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   18221 
   18222         Reviewed by Simon Hausmann.
   18223 
   18224         [Qt] Cleanup - Remove obsolete code from the make system
   18225         https://bugs.webkit.org/show_bug.cgi?id=27299
   18226 
   18227         * JavaScriptCore.pro:
   18228         * jsc.pro:
   18229 
   18230 2009-07-07  Norbert Leser  <norbert.leser (a] nokia.com>
   18231 
   18232         Reviewed by Simon Hausmann.
   18233 
   18234         https://bugs.webkit.org/show_bug.cgi?id=27056
   18235 
   18236         Alternate bool operator for codewarrior compiler (WINSCW).
   18237         Compiler (latest b482) reports error for UnspecifiedBoolType construct:
   18238         "illegal explicit conversion from 'WTF::OwnArrayPtr<JSC::Register>' to 'bool'"
   18239 
   18240         Same fix as in r38391.
   18241 
   18242         * JavaScriptCore/wtf/OwnArrayPtr.h:
   18243 
   18244 2009-07-15  Norbert Leser  <norbert.leser (a] nokia.com>
   18245 
   18246         Reviewed by Darin Adler.
   18247 
   18248         Qualify include path with wtf to fix compilation
   18249         on Symbian.
   18250         https://bugs.webkit.org/show_bug.cgi?id=27055
   18251 
   18252         * interpreter/Interpreter.h:
   18253 
   18254 2009-07-15  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   18255 
   18256         Reviewed by Dave Kilzer.
   18257 
   18258         Turn off non-portable date manipulations for SYMBIAN
   18259         https://bugs.webkit.org/show_bug.cgi?id=27064
   18260 
   18261         Introduce HAVE(TM_GMTOFF), HAVE(TM_ZONE) and HAVE(TIMEGM) guards 
   18262         and place the rules for controlling the guards in Platform.h.
   18263         Turn off these newly introduced guards for SYMBIAN.
   18264 
   18265         * wtf/DateMath.cpp:
   18266         (WTF::calculateUTCOffset):
   18267         * wtf/DateMath.h:
   18268         (WTF::GregorianDateTime::GregorianDateTime):
   18269         (WTF::GregorianDateTime::operator tm):
   18270         * wtf/Platform.h:
   18271 
   18272 2009-07-15  Norbert Leser  <norbert.leser (a] nokia.com>
   18273 
   18274         Reviewed by Simon Hausmann.
   18275 
   18276         Undef ASSERT on Symbian, to avoid excessive warnings
   18277         https://bugs.webkit.org/show_bug.cgi?id=27052
   18278 
   18279         * wtf/Assertions.h:
   18280 
   18281 2009-07-15  Oliver Hunt  <oliver (a] apple.com>
   18282 
   18283         Reviewed by Simon Hausmann.
   18284 
   18285         REGRESSION: fast/js/postfix-syntax.html fails with interpreter
   18286         https://bugs.webkit.org/show_bug.cgi?id=27294
   18287 
   18288         When postfix operators operating on locals assign to the same local
   18289         the order of operations has to be to store the incremented value, then
   18290         store the unmodified number.  Rather than implementing this subtle
   18291         semantic in the interpreter I've just made the logic explicit in the
   18292         bytecode generator, so x=x++ effectively becomes x=ToNumber(x) (for a
   18293         local var x).
   18294 
   18295         * parser/Nodes.cpp:
   18296         (JSC::emitPostIncOrDec):
   18297 
   18298 2009-07-15  Oliver Hunt  <oliver (a] apple.com>
   18299 
   18300         Reviewed by Simon Hausmann.
   18301 
   18302         REGRESSION(43559): fast/js/kde/arguments-scope.html fails with interpreter
   18303         https://bugs.webkit.org/show_bug.cgi?id=27259
   18304 
   18305         The interpreter was incorrectly basing its need to create the arguments object
   18306         based on the presence of the callframe's argument reference rather than the local
   18307         arguments reference.  Based on this it then overrode the local variable reference.
   18308 
   18309         * interpreter/Interpreter.cpp:
   18310         (JSC::Interpreter::privateExecute):
   18311 
   18312 2009-07-14  Steve Falkenburg  <sfalken (a] apple.com>
   18313 
   18314         Reorganize JavaScriptCore headers into:
   18315         API: include/JavaScriptCore/
   18316         Private: include/private/JavaScriptCore/
   18317 
   18318         Reviewed by Darin Adler.
   18319 
   18320         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
   18321         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
   18322         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
   18323         * JavaScriptCore.vcproj/testapi/testapi.vcproj:
   18324         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
   18325 
   18326 2009-07-14  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   18327 
   18328         Reviewed by Darin Adler.
   18329 
   18330         Change JSCell's superclass to NoncopyableCustomAllocated
   18331         https://bugs.webkit.org/show_bug.cgi?id=27248
   18332 
   18333         JSCell class customizes operator new, since Noncopyable will be 
   18334         inherited from FastAllocBase, NoncopyableCustomAllocated has 
   18335         to be used.
   18336 
   18337         * runtime/JSCell.h:
   18338 
   18339 2009-07-14  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   18340 
   18341         Reviewed by Darin Adler.
   18342 
   18343         Change all Noncopyable inheriting visibility to public.
   18344         https://bugs.webkit.org/show_bug.cgi?id=27225
   18345 
   18346         Change all Noncopyable inheriting visibility to public because
   18347         it is needed to the custom allocation framework (bug #20422).
   18348 
   18349         * bytecode/SamplingTool.h:
   18350         * bytecompiler/RegisterID.h:
   18351         * interpreter/CachedCall.h:
   18352         * interpreter/RegisterFile.h:
   18353         * parser/Lexer.h:
   18354         * parser/Parser.h:
   18355         * runtime/ArgList.h:
   18356         * runtime/BatchedTransitionOptimizer.h:
   18357         * runtime/Collector.h:
   18358         * runtime/CommonIdentifiers.h:
   18359         * runtime/JSCell.h:
   18360         * runtime/JSGlobalObject.h:
   18361         * runtime/JSLock.h:
   18362         * runtime/JSONObject.cpp:
   18363         * runtime/SmallStrings.cpp:
   18364         * runtime/SmallStrings.h:
   18365         * wtf/CrossThreadRefCounted.h:
   18366         * wtf/GOwnPtr.h:
   18367         * wtf/Locker.h:
   18368         * wtf/MessageQueue.h:
   18369         * wtf/OwnArrayPtr.h:
   18370         * wtf/OwnFastMallocPtr.h:
   18371         * wtf/OwnPtr.h:
   18372         * wtf/RefCounted.h:
   18373         * wtf/ThreadSpecific.h:
   18374         * wtf/Threading.h:
   18375         * wtf/Vector.h:
   18376         * wtf/unicode/Collator.h:
   18377 
   18378 2009-07-14  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   18379 
   18380         Reviewed by Darin Adler.
   18381 
   18382         Change ParserArenaRefCounted's superclass to RefCountedCustomAllocated
   18383         https://bugs.webkit.org/show_bug.cgi?id=27249
   18384 
   18385         ParserArenaDeletable customizes operator new, to avoid double inheritance
   18386         ParserArenaDeletable's superclass has been changed to RefCountedCustomAllocated.
   18387 
   18388         * parser/Nodes.h:
   18389 
   18390 2009-07-14  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   18391 
   18392         Reviewed by Darin Adler.
   18393 
   18394         Add RefCountedCustomAllocated to RefCounted.h
   18395         https://bugs.webkit.org/show_bug.cgi?id=27232
   18396 
   18397         Some class which are inherited from RefCounted customize
   18398         operator new, but RefCounted is inherited from Noncopyable
   18399         which will be inherited from FastAllocBase. To avoid
   18400         conflicts Noncopyable inheriting was moved down to RefCounted
   18401         and to avoid double inheritance this class has been added.
   18402 
   18403         * wtf/RefCounted.h:
   18404         (WTF::RefCountedCustomAllocated::deref):
   18405         (WTF::RefCountedCustomAllocated::~RefCountedCustomAllocated):
   18406 
   18407 2009-07-14  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   18408 
   18409         Reviewed by Darin Adler.
   18410 
   18411         Add NoncopyableCustomAllocated to Noncopyable.h.
   18412         https://bugs.webkit.org/show_bug.cgi?id=27228
   18413         
   18414         Some classes which inherited from Noncopyable overrides operator new
   18415         since Noncopyable'll be inherited from FastAllocBase, Noncopyable.h 
   18416         needs to be extended with this new class to support the overriding. 
   18417 
   18418         * wtf/Noncopyable.h:
   18419         (WTFNoncopyable::NoncopyableCustomAllocated::NoncopyableCustomAllocated):
   18420         (WTFNoncopyable::NoncopyableCustomAllocated::~NoncopyableCustomAllocated):
   18421 
   18422 2009-07-14  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   18423 
   18424         Reviewed by Darin Adler.
   18425 
   18426         Allow custom memory allocation control for JavaScriptCore's IdentifierTable class
   18427         https://bugs.webkit.org/show_bug.cgi?id=27260
   18428 
   18429         Inherits IdentifierTable class from FastAllocBase because it has been
   18430         instantiated by 'new' in JavaScriptCore/runtime/Identifier.cpp:70.
   18431 
   18432         * runtime/Identifier.cpp:
   18433 
   18434 2009-07-14  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   18435 
   18436         Reviewed by Darin Adler.
   18437 
   18438         Allow custom memory allocation control for JavaScriptCore's Profiler class
   18439         https://bugs.webkit.org/show_bug.cgi?id=27253
   18440 
   18441         Inherits Profiler class from FastAllocBase because it has been instantiated by
   18442         'new' in JavaScriptCore/profiler/Profiler.cpp:56.
   18443 
   18444         * profiler/Profiler.h:
   18445 
   18446 2009-07-06  George Staikos  <george.staikos (a] torchmobile.com>
   18447 
   18448         Reviewed by Adam Treat.
   18449 
   18450         Authors: George Staikos <george.staikos (a] torchmobile.com>, Joe Mason <joe.mason (a] torchmobile.com>, Makoto Matsumoto <matumoto (a] math.keio.ac.jp>, Takuji Nishimura
   18451 
   18452         https://bugs.webkit.org/show_bug.cgi?id=27030
   18453         Implement custom RNG for WinCE using Mersenne Twister
   18454 
   18455         * wtf/RandomNumber.cpp:
   18456         (WTF::randomNumber):
   18457         * wtf/RandomNumberSeed.h:
   18458         (WTF::initializeRandomNumberGenerator):
   18459         * wtf/wince/mt19937ar.c: Added.
   18460         (init_genrand):
   18461         (init_by_array):
   18462         (genrand_int32):
   18463         (genrand_int31):
   18464         (genrand_real1):
   18465         (genrand_real2):
   18466         (genrand_real3):
   18467         (genrand_res53):
   18468 
   18469 2009-07-13  Gustavo Noronha Silva  <gustavo.noronha (a] collabora.co.uk>
   18470 
   18471         Unreviewed make dist build fix.
   18472 
   18473         * GNUmakefile.am:
   18474 
   18475 2009-07-13  Drew Wilson  <atwilson (a] google.com>
   18476 
   18477         Reviewed by David Levin.
   18478 
   18479         Add ENABLE(SHARED_WORKERS) flag and define SharedWorker APIs
   18480         https://bugs.webkit.org/show_bug.cgi?id=26932
   18481 
   18482         Added ENABLE(SHARED_WORKERS) flag (off by default).
   18483 
   18484         * Configurations/FeatureDefines.xcconfig:
   18485 
   18486 2009-07-07  Norbert Leser  <norbert.leser (a] nokia.com>
   18487 
   18488         Reviewed by Maciej Stachoviak.
   18489 
   18490         https://bugs.webkit.org/show_bug.cgi?id=27058
   18491 
   18492         Removed superfluous parenthesis around single expression.
   18493         Compilers on Symbian platform fail to properly parse and compile.
   18494 
   18495         * JavaScriptCore/wtf/Platform.h:
   18496 
   18497 2009-07-13  Norbert Leser  <norbert.leser (a] nokia.com>
   18498 
   18499         Reviewed by Maciej Stachoviak.
   18500 
   18501         https://bugs.webkit.org/show_bug.cgi?id=27054
   18502 
   18503         Renamed Translator to HashTranslator
   18504 
   18505         Codewarrior compiler (WINSCW) latest b482 cannot resolve typename
   18506         mismatch between template declaration and definition
   18507         (HashTranslator / Translator)
   18508 
   18509         * wtf/HashSet.h:
   18510 
   18511 2009-07-13  Norbert Leser  <norbert.leser (a] nokia.com>
   18512 
   18513         Reviewed by Eric Seidel.
   18514 
   18515         https://bugs.webkit.org/show_bug.cgi?id=27053
   18516 
   18517         Ambiguity in LabelScope initialization
   18518 
   18519         Codewarrior compiler (WINSCW) latest b482 on Symbian cannot resolve
   18520         type of "0" unambiguously. Set expression explicitly to
   18521         PassRefPtr<Label>::PassRefPtr()
   18522 
   18523         * bytecompiler/BytecodeGenerator.cpp
   18524 
   18525 2009-07-11  Simon Fraser  <simon.fraser (a] apple.com>
   18526 
   18527         Enable support for accelerated compositing and 3d transforms on Leopard.
   18528         <https://bugs.webkit.org/show_bug.cgi?id=20166>
   18529         <rdar://problem/6120614>
   18530 
   18531         Reviewed by Oliver Hunt.
   18532 
   18533         * Configurations/FeatureDefines.xcconfig:
   18534         * wtf/Platform.h:
   18535 
   18536 2009-07-10  Mark Rowe  <mrowe (a] apple.com>
   18537 
   18538         Second part of the "make Windows happier" dance.
   18539 
   18540         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   18541         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   18542 
   18543 2009-07-10  Mark Rowe  <mrowe (a] apple.com>
   18544 
   18545         Try and make the Windows build happy.
   18546 
   18547         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   18548         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   18549 
   18550 2009-07-10  Kevin McCullough  <kmccullough (a] apple.com>
   18551 
   18552         Reviewed by Geoffrey Garen.
   18553 
   18554         * debugger/Debugger.h: Made this function virtual for use in WebCore's
   18555         WebInspector.
   18556 
   18557 2009-07-10  Kwang Yul Seo  <skyul (a] company100.net>
   18558 
   18559         Reviewed by Darin Adler.
   18560 
   18561         ParserArenaDeletable should override delete
   18562         https://bugs.webkit.org/show_bug.cgi?id=26790
   18563 
   18564         ParserArenaDeletable overrides new, but it does not override delete.
   18565         ParserArenaDeletable must be freed by fastFree
   18566         because it is allocated by fastMalloc.
   18567 
   18568         * parser/NodeConstructors.h:
   18569         (JSC::ParserArenaDeletable::operator delete):
   18570         * parser/Nodes.h:
   18571 
   18572 2009-07-10  Adam Roben  <aroben (a] apple.com>
   18573 
   18574         Sort all our Xcode projects
   18575 
   18576         Accomplished using sort-Xcode-project-file.
   18577 
   18578         Requested by Dave Kilzer.
   18579 
   18580         * JavaScriptCore.xcodeproj/project.pbxproj:
   18581 
   18582 2009-07-09  Maciej Stachowiak  <mjs (a] apple.com>
   18583 
   18584         Not reviewed, build fix.
   18585 
   18586         Windows build fix for the last change.
   18587 
   18588         * wtf/dtoa.cpp: Forgot to include Vector.h
   18589 
   18590 2009-07-09  Maciej Stachowiak  <mjs (a] apple.com>
   18591 
   18592         Reviewed by Darin Adler.
   18593 
   18594         REGRESSION: crash in edge cases of floating point parsing.
   18595         https://bugs.webkit.org/show_bug.cgi?id=27110
   18596         <rdar://problem/7044458>
   18597         
   18598         Tests: fast/css/number-parsing-crash.html
   18599                fast/css/number-parsing-crash.html
   18600                fast/js/number-parsing-crash.html
   18601         
   18602         * wtf/dtoa.cpp:
   18603         (WTF::BigInt::BigInt): Converted this to more a proper class, using a Vector
   18604         with inline capacity
   18605 
   18606         (WTF::lshift): Rearranged logic somewhat nontrivially to deal with the new way of sizing BigInts.
   18607         Added an assertion to verify that invariants are maintained.
   18608 
   18609         All other functions are adapted fairly mechanically to the above changes.
   18610         (WTF::BigInt::clear):
   18611         (WTF::BigInt::size):
   18612         (WTF::BigInt::resize):
   18613         (WTF::BigInt::words):
   18614         (WTF::BigInt::append):
   18615         (WTF::multadd):
   18616         (WTF::s2b):
   18617         (WTF::i2b):
   18618         (WTF::mult):
   18619         (WTF::cmp):
   18620         (WTF::diff):
   18621         (WTF::b2d):
   18622         (WTF::d2b):
   18623         (WTF::ratio):
   18624         (WTF::strtod):
   18625         (WTF::quorem):
   18626         (WTF::dtoa):
   18627 
   18628 2009-07-09  Drew Wilson  <atwilson (a] google.com>
   18629 
   18630         Reviewed by Alexey Proskuryakov.
   18631 
   18632         Turned on CHANNEL_MESSAGING by default because the MessageChannel API
   18633         can now be implemented for Web Workers and is reasonably stable.
   18634 
   18635         * Configurations/FeatureDefines.xcconfig:
   18636 
   18637 2009-07-09  Oliver Hunt  <oliver (a] apple.com>
   18638 
   18639         * interpreter/Interpreter.cpp:
   18640         (JSC::Interpreter::privateExecute):
   18641 
   18642 2009-07-09  Oliver Hunt  <oliver (a] apple.com>
   18643 
   18644         Reviewed by Darin Adler.
   18645 
   18646         Bug 27016 - Interpreter crashes due to invalid array indexes
   18647         <https://bugs.webkit.org/show_bug.cgi?id=27016>
   18648 
   18649         Unsigned vs signed conversions results in incorrect behaviour in
   18650         64bit interpreter builds.
   18651 
   18652         * interpreter/Interpreter.cpp:
   18653         (JSC::Interpreter::privateExecute):
   18654 
   18655 2009-07-09  Dimitri Glazkov  <dglazkov (a] chromium.org>
   18656 
   18657         Reviewed by Darin Fisher.
   18658 
   18659         [Chromium] Upstream JavaScriptCore.gypi, the project file for Chromium build.
   18660         https://bugs.webkit.org/show_bug.cgi?id=27135
   18661 
   18662         * JavaScriptCore.gypi: Added.
   18663 
   18664 2009-07-09  Joe Mason  <joe.mason (a] torchmobile.com>
   18665 
   18666         Reviewed by George Staikos.
   18667         
   18668         Authors: Yong Li <yong.li (a] torchmobile.com>, Joe Mason <joe.mason (a] torchmobile.com>
   18669 
   18670         https://bugs.webkit.org/show_bug.cgi?id=27031
   18671         Add an override for deleteOwnedPtr(HDC) on Windows
   18672         
   18673         * wtf/OwnPtrCommon.h:
   18674         * wtf/OwnPtrWin.cpp:
   18675         (WTF::deleteOwnedPtr):
   18676 
   18677 2009-07-09  Laszlo Gombos  <laszlo.1.gombos (a] nokia.com>
   18678 
   18679         Reviewed by Darin Adler.
   18680 
   18681         Guard singal.h dependency with HAVE(SIGNAL_H) to enable building jsc
   18682         on SYMBIAN.
   18683 
   18684         https://bugs.webkit.org/show_bug.cgi?id=27026
   18685 
   18686         Based on Norbert Leser's work.
   18687 
   18688         * jsc.cpp:
   18689         (printUsageStatement):
   18690         (parseArguments):
   18691         * wtf/Platform.h:
   18692 
   18693 2009-07-07  Gavin Barraclough  <barraclough (a] apple.com>
   18694 
   18695         Reviewed by Sam Weinig.
   18696 
   18697         Stop loading constants into the register file.
   18698 
   18699         Instead, use high register values (highest bit bar the sign bit set) to indicate
   18700         constants in the instruction stream, and when we encounter such a value load it
   18701         directly from the CodeBlock.
   18702 
   18703         Since constants are no longer copied into the register file, this patch renders
   18704         the 'unexpected constant' mechanism redundant, and removes it.
   18705 
   18706         2% improvement, thanks to Sam Weinig.
   18707 
   18708         * bytecode/CodeBlock.cpp:
   18709         (JSC::CodeBlock::dump):
   18710         (JSC::CodeBlock::CodeBlock):
   18711         (JSC::CodeBlock::mark):
   18712         (JSC::CodeBlock::shrinkToFit):
   18713         * bytecode/CodeBlock.h:
   18714         (JSC::CodeBlock::isTemporaryRegisterIndex):
   18715         (JSC::CodeBlock::constantRegister):
   18716         (JSC::CodeBlock::isConstantRegisterIndex):
   18717         (JSC::CodeBlock::getConstant):
   18718         (JSC::ExecState::r):
   18719         * bytecode/Opcode.h:
   18720         * bytecompiler/BytecodeGenerator.cpp:
   18721         (JSC::BytecodeGenerator::preserveLastVar):
   18722         (JSC::BytecodeGenerator::BytecodeGenerator):
   18723         (JSC::BytecodeGenerator::addConstantValue):
   18724         (JSC::BytecodeGenerator::emitEqualityOp):
   18725         (JSC::BytecodeGenerator::emitLoad):
   18726         (JSC::BytecodeGenerator::emitResolveBase):
   18727         (JSC::BytecodeGenerator::emitResolveWithBase):
   18728         (JSC::BytecodeGenerator::emitNewError):
   18729         * bytecompiler/BytecodeGenerator.h:
   18730         (JSC::BytecodeGenerator::emitNode):
   18731         * interpreter/CallFrame.h:
   18732         (JSC::ExecState::noCaller):
   18733         (JSC::ExecState::hasHostCallFrameFlag):
   18734         (JSC::ExecState::addHostCallFrameFlag):
   18735         (JSC::ExecState::removeHostCallFrameFlag):
   18736         * interpreter/Interpreter.cpp:
   18737         (JSC::Interpreter::resolve):
   18738         (JSC::Interpreter::resolveSkip):
   18739         (JSC::Interpreter::resolveGlobal):
   18740         (JSC::Interpreter::resolveBase):
   18741         (JSC::Interpreter::resolveBaseAndProperty):
   18742         (JSC::Interpreter::resolveBaseAndFunc):
   18743         (JSC::Interpreter::dumpRegisters):
   18744         (JSC::Interpreter::throwException):
   18745         (JSC::Interpreter::createExceptionScope):
   18746         (JSC::Interpreter::privateExecute):
   18747         (JSC::Interpreter::retrieveArguments):
   18748         * jit/JIT.cpp:
   18749         (JSC::JIT::privateCompileMainPass):
   18750         * jit/JITInlineMethods.h:
   18751         (JSC::JIT::emitLoadDouble):
   18752         (JSC::JIT::emitLoadInt32ToDouble):
   18753         * jit/JITOpcodes.cpp:
   18754         (JSC::JIT::emit_op_new_error):
   18755         (JSC::JIT::emit_op_enter):
   18756         (JSC::JIT::emit_op_enter_with_activation):
   18757         * parser/Nodes.cpp:
   18758         (JSC::DeleteResolveNode::emitBytecode):
   18759         (JSC::DeleteValueNode::emitBytecode):
   18760         (JSC::PrefixResolveNode::emitBytecode):
   18761         * runtime/JSActivation.cpp:
   18762         (JSC::JSActivation::JSActivation):
   18763         * wtf/Platform.h:
   18764 
   18765 2009-07-07  Mark Rowe  <mrowe (a] apple.com>
   18766 
   18767         Reviewed by Darin Adler.
   18768 
   18769         Fix <https://bugs.webkit.org/show_bug.cgi?id=27025> / <rdar://problem/7033448>.
   18770         Bug 27025: Crashes and regression test failures related to regexps in 64-bit
   18771 
   18772         For x86_64 RegexGenerator uses rbx, a callee-save register, as a scratch register but
   18773         neglects to save and restore it.  The change in handling of the output vector in r45545
   18774         altered code generation so that the RegExp::match was now storing important data in rbx,
   18775         which caused crashes and bogus results when it was clobbered.
   18776 
   18777         * yarr/RegexJIT.cpp:
   18778         (JSC::Yarr::RegexGenerator::generateEnter): Save rbx.
   18779         (JSC::Yarr::RegexGenerator::generateReturn): Restore rbx.
   18780 
   18781 2009-07-06  Ada Chan  <adachan (a] apple.com>
   18782 
   18783         Reviewed by Darin Adler and Mark Rowe.
   18784 
   18785         Decommitted spans are added to the list of normal spans rather than 
   18786         the returned spans in TCMalloc_PageHeap::Delete().
   18787         https://bugs.webkit.org/show_bug.cgi?id=26998
   18788         
   18789         In TCMalloc_PageHeap::Delete(), the deleted span can be decommitted in 
   18790         the process of merging with neighboring spans that are also decommitted.  
   18791         The merged span needs to be placed in the list of returned spans (spans 
   18792         whose memory has been returned to the system).  Right now it's always added 
   18793         to the list of the normal spans which can theoretically cause thrashing.  
   18794 
   18795         * wtf/FastMalloc.cpp:
   18796         (WTF::TCMalloc_PageHeap::Delete):
   18797 
   18798 2009-07-05  Lars Knoll  <lars.knoll (a] nokia.com>
   18799 
   18800         Reviewed by Maciej Stachowiak.
   18801 
   18802         https://bugs.webkit.org/show_bug.cgi?id=26843
   18803 
   18804         Fix run-time crashes in JavaScriptCore with the Metrowerks compiler on Symbian.
   18805 
   18806         The Metrowerks compiler on the Symbian platform moves the globally
   18807         defined Hashtables into read-only memory, despite one of the members
   18808         being mutable. This causes crashes at run-time due to write access to
   18809         read-only memory.
   18810 
   18811         Avoid the use of const with this compiler by introducing the
   18812         JSC_CONST_HASHTABLE macro.
   18813 
   18814         Based on idea by Norbert Leser.
   18815 
   18816         * runtime/Lookup.h: Define JSC_CONST_HASHTABLE as const for !WINSCW.
   18817         * create_hash_table: Use JSC_CONST_HASHTABLE for hashtables.
   18818         * runtime/JSGlobalData.cpp: Import various global hashtables via the macro.
   18819 
   18820 2009-07-04  Dan Bernstein  <mitz (a] apple.com>
   18821 
   18822         - debug build fix
   18823 
   18824         * runtime/RegExpConstructor.cpp:
   18825         (JSC::RegExpConstructor::getLastParen):
   18826 
   18827 2009-07-03  Yong Li  <yong.li (a] torchmobile.com>
   18828 
   18829         Reviewed by Maciej Stachowiak (and revised slightly)
   18830 
   18831         RegExp::match to be optimized
   18832         https://bugs.webkit.org/show_bug.cgi?id=26957
   18833 
   18834         Allow regexp matching to use Vectors with inline capacity instead of
   18835         allocating a new ovector buffer every time.
   18836         
   18837         ~5% speedup on SunSpider string-unpack-code test, 0.3% on SunSpider overall.
   18838 
   18839         * runtime/RegExp.cpp:
   18840         (JSC::RegExp::match):
   18841         * runtime/RegExp.h:
   18842         * runtime/RegExpConstructor.cpp:
   18843         (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate):
   18844         (JSC::RegExpConstructorPrivate::lastOvector):
   18845         (JSC::RegExpConstructorPrivate::tempOvector):
   18846         (JSC::RegExpConstructorPrivate::changeLastOvector):
   18847         (JSC::RegExpConstructor::performMatch):
   18848         (JSC::RegExpMatchesArray::RegExpMatchesArray):
   18849         (JSC::RegExpMatchesArray::fillArrayInstance):
   18850         (JSC::RegExpConstructor::getBackref):
   18851         (JSC::RegExpConstructor::getLastParen):
   18852         (JSC::RegExpConstructor::getLeftContext):
   18853         (JSC::RegExpConstructor::getRightContext):
   18854         * runtime/StringPrototype.cpp:
   18855         (JSC::stringProtoFuncSplit):
   18856 
   18857 2009-06-30  Kwang Yul Seo  <skyul (a] company100.net>
   18858 
   18859         Reviewed by Eric Seidel.
   18860 
   18861         Override operator new/delete with const std::nothrow_t& as the second
   18862         argument.
   18863         https://bugs.webkit.org/show_bug.cgi?id=26792
   18864 
   18865         On Windows CE, operator new/delete, new[]/delete[] with const
   18866         std::nothrow_t& must be overrided because some standard template
   18867         libraries use these operators.
   18868 
   18869         The problem occurs when memory allocated by new(size_t s, const
   18870         std::nothrow_t&) is freed by delete(void* p). This causes the umatched
   18871         malloc/free problem.
   18872 
   18873         The patch overrides all new, delete, new[] and delete[] to use
   18874         fastMaloc and fastFree consistently.
   18875 
   18876         * wtf/FastMalloc.h:
   18877         (throw):
   18878 
   18879 2009-06-30  Gabor Loki  <loki (a] inf.u-szeged.hu>
   18880 
   18881         Reviewed by Sam Weinig.
   18882 
   18883         <https://bugs.webkit.org/show_bug.cgi?id=24986>
   18884 
   18885         Remove unnecessary references to AssemblerBuffer.
   18886 
   18887         * interpreter/Interpreter.cpp:
   18888         * interpreter/Interpreter.h:
   18889 
   18890 2009-06-29  David Levin  <levin (a] chromium.org>
   18891 
   18892         Reviewed by Oliver Hunt.
   18893 
   18894         Still seeing occasional leaks from UString::sharedBuffer code
   18895         https://bugs.webkit.org/show_bug.cgi?id=26420
   18896 
   18897         The problem is that the pointer to the memory allocation isn't visible
   18898         by "leaks" due to the lower bits being used as flags.  The fix is to
   18899         make the pointer visible in memory (in debug only). The downside of
   18900         this fix that the memory allocated by sharedBuffer will still look like
   18901         a leak in non-debug builds when any flags are set.
   18902 
   18903         * wtf/PtrAndFlags.h:
   18904         (WTF::PtrAndFlags::set):
   18905 
   18906 2009-06-29  Sam Weinig  <sam (a] webkit.org>
   18907 
   18908         Reviewed by Mark Rowe.
   18909 
   18910         Remove more unused scons support.
   18911 
   18912         * SConstruct: Removed.
   18913 
   18914 2009-06-29  Oliver Hunt  <oliver (a] apple.com>
   18915 
   18916         Reviewed by Gavin Barraclough.
   18917 
   18918         <rdar://problem/7016214> JSON.parse fails to parse valid JSON with most Unicode characters
   18919         <https://bugs.webkit.org/show_bug.cgi?id=26802>
   18920 
   18921         In the original JSON.parse patch unicode was handled correctly, however in some last
   18922         minute "clean up" I oversimplified isSafeStringCharacter.  This patch corrects this bug.
   18923 
   18924         * runtime/LiteralParser.cpp:
   18925         (JSC::isSafeStringCharacter):
   18926         (JSC::LiteralParser::Lexer::lexString):
   18927 
   18928 2009-06-26  Oliver Hunt  <oliver (a] apple.com>
   18929 
   18930         Reviewed by Dan Bernstein.
   18931 
   18932         <rdar://problem/7009684> REGRESSION(r45039): Crashes inside JSEvent::put on PowerPC (26746)
   18933         <https://bugs.webkit.org/show_bug.cgi?id=26746>
   18934 
   18935         Fix for r45039 incorrectly uncached a get_by_id by converting it to put_by_id.  Clearly this
   18936         is less than correct.  This patch corrects that error.
   18937 
   18938         * interpreter/Interpreter.cpp:
   18939         (JSC::Interpreter::tryCacheGetByID):
   18940 
   18941 2009-06-26  Eric Seidel  <eric (a] webkit.org>
   18942 
   18943         No review, only rolling out r45259.
   18944 
   18945         Roll out r45259 after crash appeared on the bots:
   18946         plugins/undefined-property-crash.html
   18947         ASSERTION FAILED: s <= HeapConstants<heapType>::cellSize
   18948         (leopard-intel-debug-tests/build/JavaScriptCore/runtime/Collector.cpp:278
   18949         void* JSC::Heap::heapAllocate(size_t) [with JSC::HeapType heapType = PrimaryHeap])
   18950 
   18951         * runtime/DateInstance.cpp:
   18952         * runtime/Identifier.cpp:
   18953         * runtime/Lookup.h:
   18954         * runtime/RegExpConstructor.cpp:
   18955         * runtime/RegExpObject.h:
   18956         * runtime/ScopeChain.h:
   18957         * runtime/UString.h:
   18958 
   18959 2009-06-26  Jedrzej Nowacki  <jedrzej.nowacki (a] nokia.com>
   18960 
   18961         Reviewed by Simon Hausmann.
   18962 
   18963         Add support for QDataStream operators to Vector.
   18964 
   18965         * wtf/Vector.h:
   18966         (WTF::operator<<):
   18967         (WTF::operator>>):
   18968 
   18969 2009-06-24  Sam Weinig  <sam (a] webkit.org>
   18970 
   18971         Reviewed by Gavin Barraclough.
   18972 
   18973         Make the opcode sampler work once again.
   18974 
   18975         * jit/JIT.h:
   18976         (JSC::JIT::compileGetByIdProto):
   18977         (JSC::JIT::compileGetByIdSelfList):
   18978         (JSC::JIT::compileGetByIdProtoList):
   18979         (JSC::JIT::compileGetByIdChainList):
   18980         (JSC::JIT::compileGetByIdChain):
   18981         (JSC::JIT::compilePutByIdTransition):
   18982         (JSC::JIT::compileCTIMachineTrampolines):
   18983         (JSC::JIT::compilePatchGetArrayLength):
   18984         * jit/JITStubCall.h:
   18985         (JSC::JITStubCall::call):
   18986 
   18987 2009-06-24  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   18988 
   18989         Reviewed by Maciej Stachowiak.
   18990 
   18991         Extend FastAllocBase.h with 'using WTF::FastAllocBase' to avoid
   18992         unnecessary WTF:: usings.
   18993         Remove existing unnecessary WTF:: usings.
   18994 
   18995         * interpreter/Interpreter.h:
   18996         * profiler/CallIdentifier.h:
   18997         * runtime/ScopeChain.h:
   18998         * wtf/FastAllocBase.h:
   18999 
   19000 2009-06-24  David Levin  <levin (a] chromium.org>
   19001 
   19002         Fix all builds.
   19003 
   19004         * bytecode/CodeBlock.h:
   19005         * bytecompiler/BytecodeGenerator.h:
   19006         * interpreter/Register.h:
   19007 
   19008 2009-06-24  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   19009 
   19010         Reviewed by Maciej Stachowiak.
   19011         
   19012         https://bugs.webkit.org/show_bug.cgi?id=26677
   19013 
   19014         Inherits CodeBlock class from FastAllocBase because it
   19015         has been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.h:217.
   19016 
   19017         * bytecode/CodeBlock.h:
   19018 
   19019 2009-06-24  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   19020 
   19021         Reviewed by Maciej Stachowiak.
   19022         
   19023         https://bugs.webkit.org/show_bug.cgi?id=26676
   19024 
   19025         Inherits BytecodeGenerator class from FastAllocBase because it has been
   19026         instantiated by 'new' in JavaScriptCore/parser/Nodes.cpp:1892.
   19027 
   19028         * bytecompiler/BytecodeGenerator.h:
   19029 
   19030 2009-06-24  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   19031 
   19032         Reviewed by Maciej Stachowiak.
   19033         
   19034         https://bugs.webkit.org/show_bug.cgi?id=26675
   19035 
   19036         Inherits Register class from FastAllocBase because it has been
   19037         instantiated by 'new' in JavaScriptCore/runtime/JSVariableObject.h:149.
   19038 
   19039         * interpreter/Register.h:
   19040 
   19041 2009-06-24  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   19042 
   19043         Reviewed by Darin Adler.
   19044         
   19045         https://bugs.webkit.org/show_bug.cgi?id=26674
   19046 
   19047         Inherits HashMap class from FastAllocBase because it has been
   19048         instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:458.
   19049 
   19050         * wtf/HashMap.h:
   19051 
   19052 2009-06-24  Oliver Hunt  <oliver (a] apple.com>
   19053 
   19054         Reviewed by Darin Adler.
   19055 
   19056         <rdar://problem/6940519> REGRESSION (Safari 4 Public Beta - TOT): google.com/adplanner shows blank page instead of site details in "basic research'
   19057 
   19058         The problem was caused by the page returned with a function using a
   19059         var declaration list containing around ~3000 variables.  The solution
   19060         to this is to flatten the comma expression representation and make
   19061         codegen comma expressions and initializer lists iterative rather than
   19062         recursive.
   19063 
   19064         * parser/Grammar.y:
   19065         * parser/NodeConstructors.h:
   19066         (JSC::CommaNode::CommaNode):
   19067         * parser/Nodes.cpp:
   19068         (JSC::CommaNode::emitBytecode):
   19069         * parser/Nodes.h:
   19070         (JSC::ExpressionNode::isCommaNode):
   19071         (JSC::CommaNode::isCommaNode):
   19072         (JSC::CommaNode::append):
   19073 
   19074 2009-06-24  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   19075 
   19076         Reviewed by Maciej Stachowiak.
   19077 
   19078         https://bugs.webkit.org/show_bug.cgi?id=26645
   19079 
   19080         Inherits ScopeChainNode class from FastAllocBase because it has been
   19081         instantiated by 'new' in JavaScriptCore/runtime/ScopeChain.h:95.
   19082 
   19083         * wtf/RefPtr.h:
   19084 
   19085 2009-06-24  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   19086 
   19087         Reviewed by Darin Adler.
   19088 
   19089         https://bugs.webkit.org/show_bug.cgi?id=26648
   19090 
   19091         Inherits Deque class from FastAllocBase because it has been
   19092         instantiated by 'new' with DEFINE_STATIC_LOCAL macro in 
   19093         JavaScriptCore/wtf/MainThread.cpp:62.
   19094 
   19095         * wtf/Deque.h:
   19096 
   19097 2009-06-24  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   19098 
   19099         Reviewed by Darin Adler.
   19100 
   19101         https://bugs.webkit.org/show_bug.cgi?id=26644
   19102 
   19103         Inherits RefPtr class from FastAllocBase because it has been
   19104         instantiated by 'new' in JavaScriptCore/runtime/StructureChain.cpp:41.
   19105 
   19106         * wtf/RefPtr.h:
   19107 
   19108 2009-06-24  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   19109 
   19110         Reviewed by Darin Adler.
   19111 
   19112         Inherits HashSet class from FastAllocBase, because it has been
   19113         instantiated by 'new' in JavaScriptCore/runtime/Collector.h:116.
   19114 
   19115         * wtf/HashSet.h:
   19116 
   19117 2009-06-24  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   19118 
   19119         Reviewed by Darin Adler.
   19120 
   19121         Inherits Vector class from FastAllocBase because it has been
   19122         instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:633.
   19123 
   19124         * wtf/Vector.h:
   19125 
   19126 2009-06-24  Norbert Leser  <norbert.leser (a] nokia.com>
   19127 
   19128         Reviewed by Maciej Stachoviak.
   19129 
   19130         The BytecodeGenerator objects were instantiated on stack, which takes up ~38kB per instance
   19131         (each instance includes copy of JSC::CodeBlock with large SymbolTable, etc.).
   19132         Specifically, since there is nested invocation (e.g., GlobalCode --> FunctionCode),
   19133         the stack overflows immediately on Symbian hardware (max. 80 kB).
   19134         Proposed change allocates generator objects on heap.
   19135         Performance impact (if any) should be negligible and change is proposed as general fix,
   19136         rather than ifdef'd for SYMBIAN.
   19137 
   19138         * parser/Nodes.cpp:
   19139         (JSC::ProgramNode::generateBytecode):
   19140         (JSC::EvalNode::generateBytecode):
   19141         (JSC::EvalNode::bytecodeForExceptionInfoReparse):
   19142         (JSC::FunctionBodyNode::generateBytecode):
   19143         (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse):
   19144 
   19145 2009-06-23  Oliver Hunt  <oliver (a] apple.com>
   19146 
   19147         Reviewed by Gavin Barraclough.
   19148 
   19149         <rdar://problem/6992806> REGRESSION: Enumeration can skip new properties in cases of prototypes that have more than 64 (26593)
   19150         <https://bugs.webkit.org/show_bug.cgi?id=26593>
   19151 
   19152         Do not attempt to cache structure chains if they contain a dictionary at any level.
   19153 
   19154         * interpreter/Interpreter.cpp:
   19155         (JSC::Interpreter::tryCachePutByID):
   19156         (JSC::Interpreter::tryCacheGetByID):
   19157         * jit/JITStubs.cpp:
   19158         (JSC::JITThunks::tryCachePutByID):
   19159         * runtime/Structure.cpp:
   19160         (JSC::Structure::getEnumerablePropertyNames):
   19161         (JSC::Structure::addPropertyTransition):
   19162         * runtime/StructureChain.cpp:
   19163         (JSC::StructureChain::isCacheable):
   19164         * runtime/StructureChain.h:
   19165 
   19166 2009-06-23  Yong Li  <yong.li (a] torchmobile.com>
   19167 
   19168         Reviewed by George Staikos.
   19169 
   19170         https://bugs.webkit.org/show_bug.cgi?id=26654
   19171         Add the proper export define for the JavaScriptCore API when building for WINCE.
   19172 
   19173         * API/JSBase.h:
   19174 
   19175 2009-06-23  Joe Mason  <joe.mason (a] torchmobile.com>
   19176 
   19177         Reviewed by Adam Treat.
   19178 
   19179         Authors: Yong Li <yong.li (a] torchmobile.com>, Joe Mason <joe.mason (a] torchmobile.com>
   19180 
   19181         https://bugs.webkit.org/show_bug.cgi?id=26611
   19182         Implement currentThreadStackBase on WINCE by adding a global,
   19183         g_stackBase, which must be set to the address of a local variable
   19184         by the caller before calling any WebKit function that invokes JSC.
   19185 
   19186         * runtime/Collector.cpp:
   19187         (JSC::isPageWritable):
   19188         (JSC::getStackBase):
   19189           Starts at the top of the stack and returns the entire range of
   19190           consecutive writable pages as an estimate of the actual stack.
   19191           This will be much bigger than the actual stack range, so some
   19192           dead objects can't be collected, but it guarantees live objects
   19193           aren't collected prematurely.
   19194 
   19195         (JSC::currentThreadStackBase):
   19196           On WinCE, returns g_stackBase if set or call getStackBase as a
   19197           fallback if not.
   19198 
   19199 2009-06-23  Oliver Hunt  <oliver (a] apple.com>
   19200 
   19201         Reviewed by Alexey Proskuryakov.
   19202 
   19203         Fix stupid performance problem in the LiteralParser
   19204 
   19205         The LiteralParser was making a new UString in order to use
   19206         toDouble, however UString's toDouble allows a much wider range
   19207         of numberic strings than the LiteralParser accepts, and requires
   19208         an additional heap allocation or two for the construciton of the
   19209         UString.  To rectify this we just call WTF::dtoa directly using
   19210         a stack allocated buffer to hold the validated numeric literal.
   19211 
   19212         * runtime/LiteralParser.cpp:
   19213         (JSC::LiteralParser::Lexer::lexNumber):
   19214         (JSC::LiteralParser::parse):
   19215         * runtime/LiteralParser.h:
   19216 
   19217 2009-06-22  Oliver Hunt  <oliver (a] apple.com>
   19218 
   19219         Reviewed by Alexey Proskuryakov.
   19220 
   19221         Bug 26640: JSON.stringify needs to special case Boolean objects
   19222         <https://bugs.webkit.org/show_bug.cgi?id=26640>
   19223 
   19224         Add special case handling of the Boolean object so we match current
   19225         ES5 errata.
   19226 
   19227         * runtime/JSONObject.cpp:
   19228         (JSC::unwrapBoxedPrimitive): renamed from unwrapNumberOrString
   19229         (JSC::gap):
   19230         (JSC::Stringifier::appendStringifiedValue):
   19231 
   19232 2009-06-22  Oliver Hunt  <oliver (a] apple.com>
   19233 
   19234         Reviewed by Darin Adler.
   19235 
   19236         Bug 26591: Support revivers in JSON.parse
   19237         <https://bugs.webkit.org/show_bug.cgi?id=26591>
   19238 
   19239         Add reviver support to JSON.parse.  This completes the JSON object.
   19240 
   19241         * runtime/JSONObject.cpp:
   19242         (JSC::Walker::Walker):
   19243         (JSC::Walker::callReviver):
   19244         (JSC::Walker::walk):
   19245         (JSC::JSONProtoFuncParse):
   19246 
   19247 2009-06-21  Oliver Hunt  <oliver (a] apple.com>
   19248 
   19249         Reviewed by Darin Adler.
   19250 
   19251         Bug 26592: Support standard toJSON functions
   19252         <https://bugs.webkit.org/show_bug.cgi?id=26592>
   19253 
   19254         Add support for the standard Date.toJSON function.
   19255 
   19256         * runtime/DatePrototype.cpp:
   19257         (JSC::dateProtoFuncToJSON):
   19258 
   19259 2009-06-21  Oliver Hunt  <oliver (a] apple.com>
   19260 
   19261         Reviewed by Sam Weinig.
   19262 
   19263         Bug 26594: JSC needs to support Date.toISOString
   19264         <https://bugs.webkit.org/show_bug.cgi?id=26594>
   19265 
   19266         Add support for Date.toISOString.
   19267 
   19268         * runtime/DatePrototype.cpp:
   19269         (JSC::dateProtoFuncToISOString):
   19270 
   19271 2009-06-21  Oliver Hunt  <oliver (a] apple.com>
   19272 
   19273         Remove dead code.
   19274 
   19275         * runtime/LiteralParser.cpp:
   19276         (JSC::LiteralParser::parse):
   19277 
   19278 2009-06-21  Oliver Hunt  <oliver (a] apple.com>
   19279 
   19280         Reviewed by Darin Adler and Cameron Zwarich.
   19281 
   19282         Bug 26587: Support JSON.parse
   19283         <https://bugs.webkit.org/show_bug.cgi?id=26587>
   19284 
   19285         Extend the LiteralParser to support the full strict JSON
   19286         grammar, fix a few places where the grammar was incorrectly
   19287         lenient.   Doesn't yet support the JSON.parse reviver function
   19288         but that does not block the JSON.parse functionality itself.
   19289 
   19290         * interpreter/Interpreter.cpp:
   19291         (JSC::Interpreter::callEval):
   19292         * runtime/JSGlobalObjectFunctions.cpp:
   19293         (JSC::globalFuncEval):
   19294         * runtime/JSONObject.cpp:
   19295         (JSC::JSONProtoFuncParse):
   19296         * runtime/LiteralParser.cpp:
   19297         (JSC::LiteralParser::Lexer::lex):
   19298         (JSC::isSafeStringCharacter):
   19299         (JSC::LiteralParser::Lexer::lexString):
   19300         (JSC::LiteralParser::parse):
   19301         * runtime/LiteralParser.h:
   19302         (JSC::LiteralParser::LiteralParser):
   19303         (JSC::LiteralParser::tryJSONParse):
   19304         (JSC::LiteralParser::):
   19305         (JSC::LiteralParser::Lexer::Lexer):
   19306 
   19307 2009-06-21  David Levin  <levin (a] chromium.org>
   19308 
   19309         Reviewed by NOBODY (speculative build fix for windows).
   19310 
   19311         Simply removed some whitespace form this file to make windows build wtf and
   19312         hopefully copy the new MessageQueque.h so that WebCore picks it up.
   19313 
   19314         * wtf/Assertions.cpp:
   19315 
   19316 2009-06-21  Drew Wilson  <atwilson (a] google.com>
   19317 
   19318         Reviewed by David Levin.
   19319 
   19320         <https://bugs.webkit.org/show_bug.cgi?id=25043>
   19321         Added support for multi-threaded MessagePorts.
   19322 
   19323         * wtf/MessageQueue.h:
   19324         (WTF::::appendAndCheckEmpty):
   19325             Added API to test whether the queue was empty before adding an element.
   19326   
   19327 2009-06-20  David D. Kilzer  <ddkilzer (a] webkit.org>
   19328 
   19329         Fix namespace comment in SegmentedVector.h
   19330 
   19331         * wtf/SegmentedVector.h: Updated namespace comment to reflect
   19332         new namespace after r44897.
   19333 
   19334 2009-06-20  Zoltan Herczeg  <zherczeg (a] inf.u-szeged.hu>
   19335 
   19336         Bug 24986: ARM JIT port
   19337         <https://bugs.webkit.org/show_bug.cgi?id=24986>
   19338 
   19339         Reviewed by Oliver Hunt.
   19340 
   19341         An Iterator added for SegmentedVector. Currently
   19342         only the pre ++ operator is supported.
   19343 
   19344         * wtf/SegmentedVector.h:
   19345         (WTF::SegmentedVectorIterator::~SegmentedVectorIterator):
   19346         (WTF::SegmentedVectorIterator::operator*):
   19347         (WTF::SegmentedVectorIterator::operator->):
   19348         (WTF::SegmentedVectorIterator::operator++):
   19349         (WTF::SegmentedVectorIterator::operator==):
   19350         (WTF::SegmentedVectorIterator::operator!=):
   19351         (WTF::SegmentedVectorIterator::operator=):
   19352         (WTF::SegmentedVectorIterator::SegmentedVectorIterator):
   19353         (WTF::SegmentedVector::alloc):
   19354         (WTF::SegmentedVector::begin):
   19355         (WTF::SegmentedVector::end):
   19356 
   19357 2009-06-20  Zoltan Herczeg  <zherczeg (a] inf.u-szeged.hu>
   19358 
   19359         Bug 24986: ARM JIT port
   19360         <https://bugs.webkit.org/show_bug.cgi?id=24986>
   19361 
   19362         Reviewed by Oliver Hunt.
   19363 
   19364         Move SegmentedVector to /wtf subdirectory
   19365         and change "namespace JSC" to "namespace WTF"
   19366 
   19367         Additional build file updates by David Kilzer.
   19368 
   19369         * GNUmakefile.am: Updated path to SegmentedVector.h.
   19370         * JavaScriptCore.order: Updated SegmentedVector namespace from
   19371         JSC to WTF in mangled C++ method name.
   19372         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
   19373         Removed reference to bytecompiler\SegmentedVector.h.
   19374         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added reference to
   19375         wtf\SegmentedVector.h.
   19376         * JavaScriptCore.xcodeproj/project.pbxproj: Moved
   19377         SegmentedVector.h definition from bytecompiler subdirectory to
   19378         wtf subdirectory.
   19379         * bytecompiler/BytecodeGenerator.h: Updated #include path to
   19380         SegmentedVector.h and prepended WTF:: namespace to its use.
   19381         * parser/Lexer.h: Ditto.
   19382         * wtf/SegmentedVector.h: Renamed from JavaScriptCore/bytecompiler/SegmentedVector.h.
   19383         (WTF::SegmentedVector::SegmentedVector):
   19384         (WTF::SegmentedVector::~SegmentedVector):
   19385         (WTF::SegmentedVector::size):
   19386         (WTF::SegmentedVector::at):
   19387         (WTF::SegmentedVector::operator[]):
   19388         (WTF::SegmentedVector::last):
   19389         (WTF::SegmentedVector::append):
   19390         (WTF::SegmentedVector::removeLast):
   19391         (WTF::SegmentedVector::grow):
   19392         (WTF::SegmentedVector::clear):
   19393         (WTF::SegmentedVector::deleteAllSegments):
   19394         (WTF::SegmentedVector::segmentExistsFor):
   19395         (WTF::SegmentedVector::segmentFor):
   19396         (WTF::SegmentedVector::subscriptFor):
   19397         (WTF::SegmentedVector::ensureSegmentsFor):
   19398         (WTF::SegmentedVector::ensureSegment):
   19399 
   19400 2009-06-19  Gavin Barraclough  <barraclough (a] apple.com>
   19401 
   19402         Reviewed by NOBODY (build fix take 2 - rename FIELD_OFFSET to something that doesn't conflict with winnt.h).
   19403 
   19404         * jit/JIT.cpp:
   19405         (JSC::JIT::privateCompile):
   19406         (JSC::JIT::privateCompileCTIMachineTrampolines):
   19407         (JSC::JIT::emitGetVariableObjectRegister):
   19408         (JSC::JIT::emitPutVariableObjectRegister):
   19409         * jit/JIT.h:
   19410         * jit/JITArithmetic.cpp:
   19411         (JSC::JIT::emit_op_rshift):
   19412         (JSC::JIT::emitSlow_op_jnless):
   19413         (JSC::JIT::emitSlow_op_jnlesseq):
   19414         (JSC::JIT::compileBinaryArithOp):
   19415         * jit/JITCall.cpp:
   19416         (JSC::JIT::compileOpCallInitializeCallFrame):
   19417         (JSC::JIT::compileOpCall):
   19418         * jit/JITInlineMethods.h:
   19419         (JSC::JIT::restoreArgumentReference):
   19420         (JSC::JIT::checkStructure):
   19421         * jit/JITOpcodes.cpp:
   19422         (JSC::JIT::emit_op_instanceof):
   19423         (JSC::JIT::emit_op_get_scoped_var):
   19424         (JSC::JIT::emit_op_put_scoped_var):
   19425         (JSC::JIT::emit_op_construct_verify):
   19426         (JSC::JIT::emit_op_resolve_global):
   19427         (JSC::JIT::emit_op_jeq_null):
   19428         (JSC::JIT::emit_op_jneq_null):
   19429         (JSC::JIT::emit_op_to_jsnumber):
   19430         (JSC::JIT::emit_op_catch):
   19431         (JSC::JIT::emit_op_eq_null):
   19432         (JSC::JIT::emit_op_neq_null):
   19433         (JSC::JIT::emit_op_convert_this):
   19434         (JSC::JIT::emit_op_profile_will_call):
   19435         (JSC::JIT::emit_op_profile_did_call):
   19436         (JSC::JIT::emitSlow_op_get_by_val):
   19437         * jit/JITPropertyAccess.cpp:
   19438         (JSC::JIT::emit_op_get_by_val):
   19439         (JSC::JIT::emit_op_put_by_val):
   19440         (JSC::JIT::emit_op_method_check):
   19441         (JSC::JIT::compileGetByIdHotPath):
   19442         (JSC::JIT::emit_op_put_by_id):
   19443         (JSC::JIT::compilePutDirectOffset):
   19444         (JSC::JIT::compileGetDirectOffset):
   19445         (JSC::JIT::privateCompilePutByIdTransition):
   19446         (JSC::JIT::privateCompilePatchGetArrayLength):
   19447         * jit/JITStubs.cpp:
   19448         (JSC::JITThunks::JITThunks):
   19449 
   19450 2009-06-19  Gavin Barraclough  <barraclough (a] apple.com>
   19451 
   19452         Reviewed by NOBODY (Windows build fix).
   19453 
   19454         * jit/JIT.h:
   19455         * jit/JITInlineMethods.h:
   19456 
   19457 2009-06-19  Gabor Loki  <loki (a] inf.u-szeged.hu>
   19458 
   19459         Reviewed by Gavin Barraclough.
   19460 
   19461         Reorganize ARM architecture specific macros.
   19462         Use PLATFORM_ARM_ARCH(7) instead of PLATFORM(ARM_V7).
   19463 
   19464         Bug 24986: ARM JIT port
   19465         <https://bugs.webkit.org/show_bug.cgi?id=24986>
   19466 
   19467         * assembler/ARMv7Assembler.h:
   19468         * assembler/AbstractMacroAssembler.h:
   19469         (JSC::AbstractMacroAssembler::Imm32::Imm32):
   19470         * assembler/MacroAssembler.h:
   19471         * assembler/MacroAssemblerCodeRef.h:
   19472         (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
   19473         * jit/ExecutableAllocator.h:
   19474         (JSC::ExecutableAllocator::cacheFlush):
   19475         * jit/JIT.h:
   19476         * jit/JITInlineMethods.h:
   19477         (JSC::JIT::restoreArgumentReferenceForTrampoline):
   19478         * jit/JITStubs.cpp:
   19479         * jit/JITStubs.h:
   19480         * wtf/Platform.h:
   19481         * yarr/RegexJIT.cpp:
   19482         (JSC::Yarr::RegexGenerator::generateEnter):
   19483         (JSC::Yarr::RegexGenerator::generateReturn):
   19484 
   19485 2009-06-19  Gavin Barraclough  <barraclough (a] apple.com>
   19486 
   19487         Reviewed by Oliver Hunt.
   19488 
   19489         Fix armv7 JIT build issues.
   19490 
   19491         Unfortunate the arm compiler does not like the use of offsetof on JITStackFrame (since it now contains non POD types),
   19492         and the FIELD_OFFSET macro does not appear constantish enough for it to be happy with its use in COMPILE_ASSERT macros.
   19493 
   19494         * Replace offsetofs with FIELD_OFFSETs (safe on C++ objects).
   19495         * Move COMPILE_ASSERTs defending layout of JITStackFrame structure on armv7 into JITThunks constructor.
   19496 
   19497         * jit/JIT.cpp:
   19498         * jit/JIT.h:
   19499         * jit/JITInlineMethods.h:
   19500         (JSC::JIT::restoreArgumentReference):
   19501         * jit/JITOpcodes.cpp:
   19502         (JSC::JIT::emit_op_catch):
   19503         * jit/JITStubs.cpp:
   19504         (JSC::JITThunks::JITThunks):
   19505 
   19506 2009-06-19  Adam Treat  <adam.treat (a] torchmobile.com>
   19507 
   19508         Blind attempt at build fix.
   19509 
   19510         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   19511         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   19512 
   19513 2009-06-19  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   19514 
   19515         Reviewed by Oliver Hunt.
   19516 
   19517         Inherits CallIdentifier struct from FastAllocBase because it has been
   19518         instantiated by 'new' in JavaScriptCore/profiler/CallIdentifier.h:86.
   19519 
   19520         * wtf/HashCountedSet.h:
   19521 
   19522 2009-06-19  Adam Treat  <adam.treat (a] torchmobile.com>
   19523 
   19524         Reviewed by Oliver Hunt.
   19525 
   19526         https://bugs.webkit.org/show_bug.cgi?id=26540
   19527         Modify the test shell to add a new function 'checkSyntax' that will
   19528         only parse the source instead of executing it. In this way we can test
   19529         pure parsing performance against some of the larger scripts in the wild.
   19530 
   19531         * jsc.cpp:
   19532         (GlobalObject::GlobalObject):
   19533         (functionCheckSyntax):
   19534 
   19535 2009-06-19  Zoltan Horvath  <hzoltan (a] inf.u-szeged.hu>
   19536 
   19537         Reviewed by Darin Adler.
   19538         
   19539         Inherits HashCountedSet class from FastAllocBase because it has been
   19540         instantiated by 'new' in JavaScriptCore/runtime/Collector.cpp:1095.
   19541 
   19542         * wtf/HashCountedSet.h:
   19543 
   19544 2009-06-19  Yong Li  <yong.li (a] torchmobile.com>
   19545 
   19546         Reviewed by George Staikos.
   19547 
   19548         https://bugs.webkit.org/show_bug.cgi?id=26558
   19549         Declare these symbols extern for WINCE as they are provided by libce.
   19550 
   19551         * runtime/DateConstructor.cpp:
   19552         * runtime/DatePrototype.cpp:
   19553         (JSC::formatLocaleDate):
   19554 
   19555 2009-06-19  Oliver Hunt  <oliver (a] apple.com>
   19556 
   19557         Reviewed by Maciej Stachowiak.
   19558 
   19559         <rdar://problem/6988973> ScopeChain leak in interpreter builds
   19560 
   19561         Move the Scopechain destruction code in JSFunction outside of the ENABLE(JIT)
   19562         path.
   19563 
   19564         * runtime/JSFunction.cpp:
   19565         (JSC::JSFunction::~JSFunction):
   19566         * wtf/Platform.h:
   19567 
   19568 2009-06-19  Yong Li  <yong.li (a] torchmobile.com>
   19569 
   19570         Reviewed by George Staikos.
   19571 
   19572         https://bugs.webkit.org/show_bug.cgi?id=26543
   19573         Windows CE uses 'GetLastError' instead of 'errno.'
   19574 
   19575         * interpreter/RegisterFile.h:
   19576         (JSC::RegisterFile::RegisterFile):
   19577         (JSC::RegisterFile::grow):
   19578 
   19579 2009-06-19  David Levin  <levin (a] chromium.org>
   19580 
   19581         Reviewed by NOBODY (Windows build fix).
   19582 
   19583         Add export for Windows corresponding to OSX export done in r44844.
   19584         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
   19585         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
   19586 
   19587 2009-06-18  Oliver Hunt  <oliver (a] apple.com>
   19588 
   19589         Reviewed by Gavin "Viceroy of Venezuela" Barraclough.
   19590 
   19591         Bug 26532: Native functions do not correctly unlink from optimised callsites when they're collected
   19592         <https://bugs.webkit.org/show_bug.cgi?id=26532> <rdar://problem/6625385>
   19593 
   19594         We need to make sure that each native function instance correctly unlinks any references to it
   19595         when it is collected.  Allowing this to happen required a few changes:
   19596             * Every native function needs a codeblock to track the link information
   19597             * To have this codeblock, every function now also needs its own functionbodynode
   19598               so we no longer get to have a single shared instance.
   19599             * Identifying a host function is now done by looking for CodeBlock::codeType() == NativeCode
   19600 
   19601         * JavaScriptCore.exp:
   19602         * bytecode/CodeBlock.cpp:
   19603         (JSC::CodeBlock::CodeBlock):
   19604            Constructor for NativeCode CodeBlock
   19605         (JSC::CodeBlock::derefStructures):
   19606         (JSC::CodeBlock::refStructures):
   19607         (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
   19608         (JSC::CodeBlock::handlerForBytecodeOffset):
   19609         (JSC::CodeBlock::lineNumberForBytecodeOffset):
   19610         (JSC::CodeBlock::expressionRangeForBytecodeOffset):
   19611         (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
   19612         (JSC::CodeBlock::functionRegisterForBytecodeOffset):
   19613         (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset):
   19614         (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset):
   19615         (JSC::CodeBlock::setJITCode):
   19616            Add assertions to ensure we don't try and use NativeCode CodeBlocks as
   19617            a normal codeblock.
   19618 
   19619         * bytecode/CodeBlock.h:
   19620         (JSC::):
   19621         (JSC::CodeBlock::source):
   19622         (JSC::CodeBlock::sourceOffset):
   19623         (JSC::CodeBlock::evalCodeCache):
   19624         (JSC::CodeBlock::createRareDataIfNecessary):
   19625           More assertions.
   19626 
   19627         * jit/JIT.cpp:
   19628         (JSC::JIT::privateCompileCTIMachineTrampolines):
   19629         (JSC::JIT::linkCall):
   19630           Update logic to allow native function caching
   19631 
   19632         * jit/JITStubs.cpp:
   19633         * parser/Nodes.cpp:
   19634         (JSC::FunctionBodyNode::createNativeThunk):
   19635         (JSC::FunctionBodyNode::isHostFunction):
   19636         * parser/Nodes.h:
   19637         * runtime/JSFunction.cpp:
   19638         (JSC::JSFunction::JSFunction):
   19639         (JSC::JSFunction::~JSFunction):
   19640         (JSC::JSFunction::mark):
   19641         * runtime/JSGlobalData.cpp:
   19642         (JSC::JSGlobalData::~JSGlobalData):
   19643         * runtime/JSGlobalData.h:
   19644 
   19645 2009-06-18  Gavin Barraclough  <barraclough (a] apple.com>
   19646 
   19647         Reviewed by NOBODY (Windows build fix).
   19648 
   19649         * wtf/DateMath.cpp:
   19650         (WTF::calculateUTCOffset):
   19651 
   19652 2009-06-18  Gavin Barraclough  <barraclough (a] apple.com>
   19653 
   19654         Reviewed by Geoff Garen.
   19655 
   19656         Timezone calculation incorrect in Venezuela.
   19657 
   19658         https://bugs.webkit.org/show_bug.cgi?id=26531
   19659         <rdar://problem/6646169> Time is incorrectly reported to JavaScript in both Safari 3 and Firefox 3
   19660 
   19661         The problem is that we're calculating the timezone relative to 01/01/2000,
   19662         but the VET timezone changed from -4 hours to -4:30 hours on 12/09/2007.
   19663         According to the spec, section 15.9.1.9 states "the time since the beginning
   19664         of the year", presumably meaning the *current* year.  Change the calculation
   19665         to be based on whatever the current year is, rather than a canned date.
   19666 
   19667         No performance impact.
   19668 
   19669         * wtf/DateMath.cpp:
   19670         (WTF::calculateUTCOffset):
   19671 
   19672 2009-06-18  Gavin Barraclough  <barraclough (a] apple.com>
   19673 
   19674         Rubber Stamped by Mark Rowe (originally reviewed by Sam Weinig).
   19675 
   19676         (Reintroducing patch added in r44492, and reverted in r44796.)
   19677 
   19678         Change the implementation of op_throw so the stub function always modifies its
   19679         return address - if it doesn't find a 'catch' it will switch to a trampoline
   19680         to force a return from JIT execution.  This saves memory, by avoiding the need
   19681         for a unique return for every op_throw.
   19682 
   19683         * jit/JITOpcodes.cpp:
   19684         (JSC::JIT::emit_op_throw):
   19685             JITStubs::cti_op_throw now always changes its return address,
   19686             remove return code generated after the stub call (this is now
   19687             handled by ctiOpThrowNotCaught).
   19688         * jit/JITStubs.cpp:
   19689         (JSC::):
   19690             Add ctiOpThrowNotCaught definitions.
   19691         (JSC::JITStubs::DEFINE_STUB_FUNCTION):
   19692             Change cti_op_throw to always change its return address.
   19693         * jit/JITStubs.h:
   19694             Add ctiOpThrowNotCaught declaration.
   19695 
   19696 2009-06-18  Kevin McCullough  <kmccullough (a] apple.com>
   19697 
   19698         Reviewed by Oliver Hunt.
   19699 
   19700         <rdar://problem/6940880> REGRESSION: Breakpoints don't break in 64-bit
   19701 
   19702         - Exposed functions now needed by WebCore.
   19703 
   19704         * JavaScriptCore.exp:
   19705 
   19706 2009-06-17  Darin Adler  <darin (a] apple.com>
   19707 
   19708         Reviewed by Oliver Hunt.
   19709 
   19710         Bug 26429: Make JSON.stringify non-recursive so it can handle objects
   19711         of arbitrary complexity
   19712         https://bugs.webkit.org/show_bug.cgi?id=26429
   19713 
   19714         For marking I decided not to use gcProtect, because this is inside the engine
   19715         so it's easy enough to just do marking. And that darned gcProtect does locking!
   19716         Oliver tried to convince me to used MarkedArgumentBuffer, but the constructor
   19717         for that class says "FIXME: Remove all clients of this API, then remove this API."
   19718 
   19719         * runtime/Collector.cpp:
   19720         (JSC::Heap::collect): Add a call to JSONObject::markStringifiers.
   19721 
   19722         * runtime/CommonIdentifiers.cpp:
   19723         (JSC::CommonIdentifiers::CommonIdentifiers): Added emptyIdentifier.
   19724         * runtime/CommonIdentifiers.h: Ditto.
   19725 
   19726         * runtime/JSGlobalData.cpp:
   19727         (JSC::JSGlobalData::JSGlobalData): Initialize firstStringifierToMark to 0.
   19728         * runtime/JSGlobalData.h: Added firstStringifierToMark.
   19729 
   19730         * runtime/JSONObject.cpp: Cut down the includes to the needed ones only.
   19731         (JSC::unwrapNumberOrString): Added. Helper for unwrapping number and string
   19732         objects to get their number and string values.
   19733         (JSC::ReplacerPropertyName::ReplacerPropertyName): Added. The class is used
   19734         to wrap an identifier or integer so we don't have to do any work unless we
   19735         actually call a replacer.
   19736         (JSC::ReplacerPropertyName::value): Added.
   19737         (JSC::gap): Added. Helper function for the Stringifier constructor.
   19738         (JSC::PropertyNameForFunctionCall::PropertyNameForFunctionCall): Added.
   19739         The class is used to wrap an identifier or integer so we don't have to
   19740         allocate a number or string until we actually call toJSON or a replacer.
   19741         (JSC::PropertyNameForFunctionCall::asJSValue): Added.
   19742         (JSC::Stringifier::Stringifier): Updated and moved out of the class
   19743         definition. Added code to hook this into a singly linked list for marking.
   19744         (JSC::Stringifier::~Stringifier): Remove from the singly linked list.
   19745         (JSC::Stringifier::mark): Mark all the objects in the holder stacks.
   19746         (JSC::Stringifier::stringify): Updated.
   19747         (JSC::Stringifier::appendQuotedString): Tweaked and streamlined a bit.
   19748         (JSC::Stringifier::toJSON): Renamed from toJSONValue.
   19749         (JSC::Stringifier::appendStringifiedValue): Renamed from stringify.
   19750         Added code to use the m_holderStack to do non-recursive stringify of
   19751         objects and arrays. This code also uses the timeout checker since in
   19752         pathological cases it could be slow even without calling into the
   19753         JavaScript virtual machine.
   19754         (JSC::Stringifier::willIndent): Added.
   19755         (JSC::Stringifier::indent): Added.
   19756         (JSC::Stringifier::unindent): Added.
   19757         (JSC::Stringifier::startNewLine): Added.
   19758         (JSC::Stringifier::Holder::Holder): Added.
   19759         (JSC::Stringifier::Holder::appendNextProperty): Added. This is the
   19760         function that handles the format of arrays and objects.
   19761         (JSC::JSONObject::getOwnPropertySlot): Moved this down to the bottom
   19762         of the file so the JSONObject class is not interleaved with the
   19763         Stringifier class.
   19764         (JSC::JSONObject::markStringifiers): Added. Calls mark.
   19765         (JSC::JSONProtoFuncStringify): Streamlined the code here. The code
   19766         to compute the gap string is now a separate function.
   19767 
   19768         * runtime/JSONObject.h: Made everything private. Added markStringifiers.
   19769 
   19770 2009-06-17  Oliver Hunt  <oliver (a] apple.com>
   19771 
   19772         Reviewed by Gavin Barraclough.
   19773 
   19774         <rdar://problem/6974140> REGRESSION(r43849): Crash in cti_op_call_NotJSFunction when getting directions on maps.google.com
   19775 
   19776         Roll out r43849 as it appears that we cannot rely on the address of
   19777         an objects property storage being constant even if the structure is
   19778         unchanged.
   19779 
   19780         * jit/JIT.h:
   19781         * jit/JITPropertyAccess.cpp:
   19782         (JSC::JIT::compileGetDirectOffset):
   19783         (JSC::JIT::privateCompileGetByIdProto):
   19784         (JSC::JIT::privateCompileGetByIdProtoList):
   19785         (JSC::JIT::privateCompileGetByIdChainList):
   19786         (JSC::JIT::privateCompileGetByIdChain):
   19787 
   19788 2009-06-17  Gavin Barraclough  <barraclough (a] apple.com>
   19789 
   19790         Rubber Stamped by Mark Rowe.
   19791 
   19792         Fully revert r44492 & r44748 while we fix a bug they cause on internal builds <rdar://problem/6955963>.
   19793 
   19794         * jit/JITOpcodes.cpp:
   19795         (JSC::JIT::emit_op_throw):
   19796         * jit/JITStubs.cpp:
   19797         (JSC::):
   19798         (JSC::JITStubs::DEFINE_STUB_FUNCTION):
   19799         * jit/JITStubs.h:
   19800 
   19801 2009-06-17  Gavin Barraclough  <barraclough (a] apple.com>
   19802 
   19803         Reviewed by Mark Rowe.
   19804 
   19805         <rdar://problem/6947426> sunspider math-cordic.js exhibits different intermediate results running 32-bit vs. 64-bit
   19806 
   19807         On 64-bit, NaN-encoded values must be detagged before they can be used in rshift.
   19808 
   19809         No performance impact.
   19810 
   19811         * jit/JITArithmetic.cpp:
   19812         (JSC::JIT::emit_op_rshift):
   19813 
   19814 2009-06-17  Adam Treat  <adam.treat (a] torchmobile.com>
   19815 
   19816         Reviewed by George Staikos.
   19817 
   19818         https://bugs.webkit.org/show_bug.cgi?id=23155
   19819         Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks.
   19820 
   19821         * jsc.cpp:
   19822         (main):
   19823 
   19824 2009-06-17  George Staikos  <george.staikos (a] torchmobile.com>
   19825 
   19826         Reviewed by Adam Treat.
   19827 
   19828         https://bugs.webkit.org/show_bug.cgi?id=23155
   19829         Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks.
   19830 
   19831         * config.h:
   19832         * jsc.cpp:
   19833         * wtf/Assertions.cpp:
   19834         * wtf/Assertions.h:
   19835         * wtf/CurrentTime.cpp:
   19836         (WTF::lowResUTCTime):
   19837         * wtf/DateMath.cpp:
   19838         (WTF::getLocalTime):
   19839         * wtf/MathExtras.h:
   19840         * wtf/Platform.h:
   19841         * wtf/StringExtras.h:
   19842         * wtf/Threading.h:
   19843         * wtf/win/MainThreadWin.cpp:
   19844 
   19845 2009-06-17  Gavin Barraclough  <barraclough (a] apple.com>
   19846 
   19847         Reviewed by Oliver Hunt.
   19848 
   19849         <rdar://problem/6974175> ASSERT in JITStubs.cpp at appsaccess.apple.com
   19850 
   19851         Remove PropertySlot::putValue - PropertySlots should only be used for getting,
   19852         not putting.  Rename JSGlobalObject::getOwnPropertySlot to hasOwnPropertyForWrite,
   19853         which is what it really was being used to ask, and remove some other getOwnPropertySlot
   19854         & getOwnPropertySlotForWrite methods, which were unused and likely to lead to confusion.
   19855 
   19856         * runtime/JSGlobalObject.h:
   19857         (JSC::JSGlobalObject::hasOwnPropertyForWrite):
   19858         * runtime/JSObject.h:
   19859         * runtime/JSStaticScopeObject.cpp:
   19860         * runtime/JSStaticScopeObject.h:
   19861         * runtime/PropertySlot.h:
   19862 
   19863 2009-06-16  Gavin Barraclough  <barraclough (a] apple.com>
   19864 
   19865         Reviewed by Oliver hunt.
   19866 
   19867         Temporarily partially disable r44492, since this is causing some problems on internal builds.
   19868 
   19869         * jit/JITOpcodes.cpp:
   19870         (JSC::JIT::emit_op_throw):
   19871         * jit/JITStubs.cpp:
   19872         (JSC::JITStubs::DEFINE_STUB_FUNCTION):
   19873 
   19874 2009-06-16  Sam Weinig  <sam (a] webkit.org>
   19875 
   19876         Fix windows build.
   19877 
   19878         * jit/JIT.cpp:
   19879         (JSC::JIT::JIT):
   19880 
   19881 2009-06-16  Sam Weinig  <sam (a] webkit.org>
   19882 
   19883         Reviewed by Oliver Hunt.
   19884 
   19885         Initialize m_bytecodeIndex to -1 in JIT, and correctly initialize
   19886         it for each type of stub using the return address to find the correct
   19887         offset.
   19888 
   19889         * jit/JIT.cpp:
   19890         (JSC::JIT::JIT):
   19891         * jit/JIT.h:
   19892         (JSC::JIT::compileGetByIdProto):
   19893         (JSC::JIT::compileGetByIdSelfList):
   19894         (JSC::JIT::compileGetByIdProtoList):
   19895         (JSC::JIT::compileGetByIdChainList):
   19896         (JSC::JIT::compileGetByIdChain):
   19897         (JSC::JIT::compilePutByIdTransition):
   19898         (JSC::JIT::compileCTIMachineTrampolines):
   19899         (JSC::JIT::compilePatchGetArrayLength):
   19900         * jit/JITStubCall.h:
   19901         (JSC::JITStubCall::call):
   19902 
   19903 == Rolled over to ChangeLog-2009-06-16 ==
   19904