-2009-03-26 Adam Roben <aroben@apple.com>
+2010-02-12 Janne Koskinen <janne.p.koskinen@digia.com>
- Copy testapi.js to $WebKitOutputDir on Windows
-
- Part of Bug 24856: run-javascriptcore-tests should run testapi on
- Windows
- <https://bugs.webkit.org/show_bug.cgi?id=24856>
-
- This matches what Mac does, which will help once we enable running
- testapi from run-javascriptcore-tests on Windows.
-
- Reviewed by Steve Falkenburg.
+ Reviewed by Tor Arne Vestbø.
- * JavaScriptCore.vcproj/testapi/testapi.vcproj: Copy testapi.js next
- to testapi.exe.
+ Additional refptr/passrefptr workarounds for WINSCW compiler
+ https://bugs.webkit.org/show_bug.cgi?id=28054
-2009-03-25 Oliver Hunt <oliver@apple.com>
+ * wtf/PassRefPtr.h:
+ (WTF::refIfNotNull):
+ (WTF::PassRefPtr::PassRefPtr):
+ (WTF::PassRefPtr::~PassRefPtr):
+ (WTF::PassRefPtr::clear):
+ (WTF::::operator):
+ * wtf/RefPtr.h:
+ (WTF::RefPtr::RefPtr):
+ (WTF::::operator):
- Reviewed by Geoff Garen.
+2010-02-12 Janne Koskinen <janne.p.koskinen@digia.com>
- Fix exception handling for instanceof in the interpreter.
+ Reviewed by Simon Hausmann.
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::privateExecute):
+ Don't import the cmath functions from std:: for WINSCW.
-2009-03-25 Geoffrey Garen <ggaren@apple.com>
+ * wtf/MathExtras.h:
- Reviewed by Cameron Zwarich.
-
- Fixed <rdar://problem/6724011> Write to freed memory in JSC::Label::deref
- when reloading http://helpme.att.net/speedtest/
+2010-02-12 Kwang Yul Seo <skyul@company100.net>
- * bytecompiler/BytecodeGenerator.h: Reversed the declaration order for
- m_labelScopes and m_labels to reverse their destruction order.
- m_labelScopes has references to memory within m_labels, so its destructor
- needs to run first.
+ Reviewed by Adam Barth.
-2009-03-24 Eli Fidler <eli.fidler@torchmobile.com>
+ Typedef both JSChar and UChar to wchar_t in RVCT.
+ https://bugs.webkit.org/show_bug.cgi?id=34560
- Reviewed by George Staikos.
+ Define both JSChar and UChar to wchar_t as the size
+ of wchar_t is 2 bytes in RVCT.
- Correct warnings which in some environments are treated as errors.
+ * API/JSStringRef.h:
+ * wtf/unicode/qt4/UnicodeQt4.h:
- * wtf/dtoa.cpp:
- (WTF::b2d):
- (WTF::d2b):
- (WTF::strtod):
- (WTF::dtoa):
+2010-02-11 Geoffrey Garen <ggaren@apple.com>
-2009-03-24 Kevin Ollivier <kevino@theolliviers.com>
+ Reviewed by Oliver Hunt and Darin Adler.
- Reviewed by Darin Adler.
+ The rest of the fix for
+ https://bugs.webkit.org/show_bug.cgi?id=34864 | <rdar://problem/7594198>
+ Many objects left uncollected after visiting mail.google.com and closing
+ window
- Explicitly define HAVE_LANGINFO_H on Darwin. Fixes the wx build bot jscore
- test failure.
+ Don't unconditionally hang onto small strings. Instead, hang onto all
+ small strings as long as any small string is still referenced.
- https://bugs.webkit.org/show_bug.cgi?id=24780
-
- * wtf/Platform.h:
-
-2009-03-23 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Fix className() for API defined class
-
- * API/JSCallbackObjectFunctions.h:
- (JSC::::className):
- * API/tests/testapi.c:
- (EmptyObject_class):
- (main):
- * API/tests/testapi.js:
+ SunSpider reports no change.
-2009-03-23 Oliver Hunt <oliver@apple.com>
+ * runtime/Collector.cpp:
+ (JSC::Heap::markRoots): Mark the small strings cache last, so it can
+ check if anything else has kept any strings alive.
- Reviewed by Geoff Garen.
+ * runtime/SmallStrings.cpp:
+ (JSC::isMarked):
+ (JSC::SmallStrings::markChildren): Only keep our strings alive if some
+ other reference to at least one of them exists, too.
- Make testapi assertions run in release builds, so that testapi actually
- works in a release build.
+2010-02-11 Geoffrey Garen <ggaren@apple.com>
- Many of the testapi assertions have side effects that are necessary, and
- given testapi is a testing program, perf impact of an assertion is not
- important, so it makes sense to apply the assertions in release builds
- anyway.
+ Reviewed by Gavin Barraclough.
- * API/tests/testapi.c:
- (EvilExceptionObject_hasInstance):
+ Some progress toward fixing
+ https://bugs.webkit.org/show_bug.cgi?id=34864 | <rdar://problem/7594198>
+ Many objects left uncollected after visiting mail.google.com and closing
+ window
+
+ SunSpider reports no change.
+
+ Keep weak references, rather than protected references, to cached for-in
+ property name enumerators.
+
+ One problem with protected references is that a chain like
+ [ gc object 1 ] => [ non-gc object ] => [ gc object 2 ]
+ takes two GC passes to break, since the first pass collects [ gc object 1 ],
+ releasing [ non-gc object ] and unprotecting [ gc object 2 ], and only
+ then can a second pass collect [ gc object 2 ].
+
+ Another problem with protected references is that they can keep a bunch
+ of strings alive long after they're useful. In SunSpider and a few popular
+ websites, the size-speed tradeoff seems to favor weak references.
-2009-03-23 David Kilzer <ddkilzer@apple.com>
+ * runtime/JSPropertyNameIterator.cpp:
+ (JSC::JSPropertyNameIterator::JSPropertyNameIterator): Moved this constructor
+ into the .cpp file, since it's not used elsewhere.
- Provide JavaScript exception information after slow script timeout
+ (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): Added a destructor
+ to support our weak reference.
- Reviewed by Oliver Hunt.
+ * runtime/JSPropertyNameIterator.h:
+ (JSC::Structure::setEnumerationCache):
+ (JSC::Structure::clearEnumerationCache):
+ (JSC::Structure::enumerationCache): Added a function for clearing a
+ Structure's enumeration cache, used by our new destructor. Also fixed
+ indentation to match the rest of the file.
- * runtime/Completion.cpp:
- (JSC::evaluate): Set the exception object as the Completion
- object's value for slow script timeouts. This is used in
- WebCore when reporting the exception.
- * runtime/ExceptionHelpers.cpp:
- (JSC::InterruptedExecutionError::toString): Added. Provides a
- description message for the exception when it is reported.
+ * runtime/Structure.h: Changed from protected pointer to weak pointer.
-2009-03-23 Gustavo Noronha Silva <gns@gnome.org> and Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+2010-02-11 Chris Rogers <crogers@google.com>
- Reviewed by Adam Roben.
+ Reviewed by David Levin.
- https://bugs.webkit.org/show_bug.cgi?id=24674
- Crashes in !PLATFORM(MAC)'s formatLocaleDate, in very specific situations
+ audio engine: add Complex number class
+ https://bugs.webkit.org/show_bug.cgi?id=34538
- Make sure strftime never returns 2-digits years to avoid ambiguity
- and a crash. We wrap this new code option in HAVE_LANGINFO_H,
- since it is apparently not available in all platforms.
+ * wtf/Complex.h: Added.
+ (WebCore::complexFromMagnitudePhase):
- * runtime/DatePrototype.cpp:
- (JSC::formatLocaleDate):
- * wtf/Platform.h:
+2010-02-10 Geoffrey Garen <ggaren@apple.com>
-2009-03-22 Oliver Hunt <oliver@apple.com>
+ Reviewed by Oliver Hunt.
- Reviewed by Cameron Zwarich.
+ Added an SPI for asking about all the different live objects on the heap.
+ Useful for memory debugging.
- Fix exception handling in API
+ * JavaScriptCore.exp: Export the new SPI.
- We can't just use the ExecState exception slot for returning exceptions
- from class introspection functions provided through the API as many JSC
- functions will explicitly clear the ExecState exception when returning.
+ * runtime/Collector.cpp:
+ (JSC::typeName): Use a little capitalization. Don't crash in the case of
+ a non-object cell, since it might just be an uninitialized cell.
- * API/JSCallbackObjectFunctions.h:
- (JSC::JSCallbackObject<Base>::getOwnPropertySlot):
- (JSC::JSCallbackObject<Base>::put):
- (JSC::JSCallbackObject<Base>::deleteProperty):
- (JSC::JSCallbackObject<Base>::construct):
- (JSC::JSCallbackObject<Base>::hasInstance):
- (JSC::JSCallbackObject<Base>::call):
- (JSC::JSCallbackObject<Base>::toNumber):
- (JSC::JSCallbackObject<Base>::toString):
- (JSC::JSCallbackObject<Base>::staticValueGetter):
- (JSC::JSCallbackObject<Base>::callbackGetter):
- * API/tests/testapi.c:
- (MyObject_hasProperty):
- (MyObject_getProperty):
- (MyObject_setProperty):
- (MyObject_deleteProperty):
- (MyObject_callAsFunction):
- (MyObject_callAsConstructor):
- (MyObject_hasInstance):
- (EvilExceptionObject_hasInstance):
- (EvilExceptionObject_convertToType):
- (EvilExceptionObject_class):
- (main):
- * API/tests/testapi.js:
- (EvilExceptionObject.hasInstance):
- (EvilExceptionObject.toNumber):
- (EvilExceptionObject.toStringExplicit):
+ (JSC::Heap::objectTypeCounts): The new SPI.
-2009-03-21 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ * runtime/Collector.h:
+ * runtime/CollectorHeapIterator.h:
+ (JSC::CollectorHeapIterator::advance):
+ (JSC::LiveObjectIterator::operator++):
+ (JSC::DeadObjectIterator::operator++):
+ (JSC::ObjectIterator::operator++): Made 2 tweaks to these iterators:
+ (1) Skip the last cell in the block, since it's a dummy sentinel, and
+ we don't want it to confuse the object count; (2) Fixed a logic error
+ in LiveObjectIterator that could cause it to iterate dead objects if
+ m_block were equal to m_heap.nextBlock and m_cell were less than
+ m_heap.nextCell. No test for this since I can't think of a way that this
+ could make WebKit behave badly.
+
+2010-02-11 Steve Block <steveblock@google.com>
- Reviewed by Oliver Hunt.
+ Reviewed by Darin Adler.
- Bug 20049: testapi failure: MyObject - 0 should be NaN but instead is 1.
- <https://bugs.webkit.org/show_bug.cgi?id=20049>
- <rdar://problem/6079127>
+ Guard cmath using declarations in MathExtras.h on Android
+ https://bugs.webkit.org/show_bug.cgi?id=34840
- In this case, the test is wrong. According to the ECMA spec, subtraction
- uses ToNumber, not ToPrimitive. Change the test to match the spec.
+ Android does not provide these functions.
- * API/tests/testapi.js:
+ * wtf/MathExtras.h:
-2009-03-21 Oliver Hunt <oliver@apple.com>
+2010-02-08 Maciej Stachowiak <mjs@apple.com>
Reviewed by Cameron Zwarich.
- Ensure that JSObjectMakeFunction doesn't produce incorrect line numbers.
-
- Also make test api correctly propagate failures.
-
- * API/tests/testapi.c:
- (main):
- * runtime/FunctionConstructor.cpp:
- (JSC::constructFunction):
+ Restore ENABLE_RUBY flag so vendors can ship with Ruby disabled if they choose.
+ https://bugs.webkit.org/show_bug.cgi?id=34698
-2009-03-21 Oliver Hunt <oliver@apple.com>
+ * Configurations/FeatureDefines.xcconfig:
- Reviewed by Mark Rowe.
+2010-02-10 Kevin Watters <kevinwatters@gmail.com>
- Improve testapi by making it report failures in a way we can pick up
- from our test scripts.
+ Reviewed by Kevin Ollivier.
- * API/tests/testapi.c:
- (assertEqualsAsBoolean):
- (assertEqualsAsNumber):
- (assertEqualsAsUTF8String):
- (assertEqualsAsCharactersPtr):
- (main):
- * API/tests/testapi.js:
- (pass):
- (fail):
- (shouldBe):
- (shouldThrow):
+ [wx] Add Windows complex text support and Mac support for containsCharacters.
+
+ https://bugs.webkit.org/show_bug.cgi?id=34759
-2009-03-20 Norbert Leser <norbert.leser@nokia.com>
+ * wscript:
- Reviewed by Darin Adler.
+2010-02-10 Alexey Proskuryakov <ap@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=24535
+ Addressing issues found by style bot.
- Fixes missing line terminator character (;) after macro call.
- It is common practice to add the trailing ";" where macros are substituted
- and not where they are defined with #define.
- This change is consistent with other macro declarations across webkit,
- and it also solves compilation failure with symbian compilers.
-
- * runtime/UString.cpp:
- * wtf/Assertions.h:
+ * wtf/ValueCheck.h: Renamed header guard to match final file name.
-2009-03-20 Geoffrey Garen <ggaren@apple.com>
+ * wtf/Vector.h: (WTF::::checkConsistency): Remove braces around a one-line clause.
- Reviewed by Darin Adler.
-
- Fixed a JavaScriptCore crash on the Windows buildbot.
+2010-02-09 Alexey Proskuryakov <ap@apple.com>
- * bytecompiler/BytecodeGenerator.h: Reduced the AST recursion limit.
- Apparently, Windows has small stacks.
+ Reviewed by Geoffrey Garen.
-2009-03-20 Geoffrey Garen <ggaren@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=34490
+ WebCore::ImageEventSender::dispatchPendingEvents() crashes in certain conditions
- Reviewed by Oliver Hunt.
-
- A little cleanup in the RegisterFile code.
-
- Moved large inline functions out of the class declaration, to make it
- more readable.
-
- Switched over to using the roundUpAllocationSize function to avoid
- duplicate code and subtle bugs.
-
- Renamed m_maxCommitted to m_commitEnd, to match m_end.
-
- Renamed allocationSize to commitSize because it's the chunk size for
- committing memory, not allocating memory.
-
- SunSpider reports no change.
+ * GNUmakefile.am:
+ * JavaScriptCore.gypi:
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ Added ValueCheck.h.
- * interpreter/RegisterFile.h:
- (JSC::RegisterFile::RegisterFile):
- (JSC::RegisterFile::shrink):
- (JSC::RegisterFile::grow):
- * jit/ExecutableAllocator.h:
- (JSC::roundUpAllocationSize):
+ * wtf/ValueCheck.h: Added. Moved code out of HashTraits, since it would be awkward to
+ include that from Vector.h.
+ (WTF::ValueCheck::checkConsistency): Allow null pointers, those are pretty consistent.
-2009-03-19 Geoffrey Garen <ggaren@apple.com>
+ * wtf/HashTraits.h: Moved value checking code out of here.
- Reviewed by Oliver Hunt.
-
- Fixed <rdar://problem/6033712> -- a little bit of hardening in the Collector.
-
- SunSpider reports no change. I also verified in the disassembly that
- we end up with a single compare to constant.
+ * wtf/HashTable.h: (WTF::::checkTableConsistencyExceptSize): Updated for the above changes.
- * runtime/Collector.cpp:
- (JSC::Heap::heapAllocate):
+ * wtf/Vector.h:
+ (WTF::::checkConsistency): Check all vector elements.
+ (WTF::ValueCheck): Support checking a Vector as an element in other containers. Currently
+ unused.
-2009-03-19 Geoffrey Garen <ggaren@apple.com>
+2010-02-10 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
- Reviewed by Cameron Zwarich and Oliver Hunt.
+ Reviewed by Simon Hausmann.
- Fixed <rdar://problem/6406045> REGRESSION: Stack overflow on PowerPC on
- fast/workers/use-machine-stack.html (22531)
+ Fix QScriptValue::toBool.
- Dialed down the re-entry allowance to 64 (from 128).
-
- On a 512K stack, this leaves about 64K for other code on the stack while
- JavaScript is running. Not perfect, but it solves our crash on PPC.
+ Fix ECMA compliance in the QScriptValue for values like 0, NaN and
+ empty strings.
- Different platforms may want to dial this down even more.
+ [Qt] QScriptValue::toBool problem
+ https://bugs.webkit.org/show_bug.cgi?id=34793
- Also, substantially shrunk BytecodeGenerator. Since we allocate one on
- the stack in order to throw a stack overflow exception -- well, let's
- just say the old code had an appreciation for irony.
+ * qt/api/qscriptvalue_p.h:
+ (QScriptValuePrivate::toBool):
+ * qt/tests/qscriptvalue/tst_qscriptvalue.h:
+ * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
+ (tst_QScriptValue::toBool_initData):
+ (tst_QScriptValue::toBool_makeData):
+ (tst_QScriptValue::toBool_test):
+ (tst_QScriptValue::toBoolean_initData):
+ (tst_QScriptValue::toBoolean_makeData):
+ (tst_QScriptValue::toBoolean_test):
- SunSpider reports no change.
+2009-10-06 Yongjun Zhang <yongjun.zhang@nokia.com>
- * bytecompiler/BytecodeGenerator.h:
- * interpreter/Interpreter.h:
- (JSC::):
+ Reviewed by Simon Hausmann.
-2009-03-19 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Use derefIfNotNull() to work around WINSCW compiler forward declaration bug
- Reviewed by Oliver Hunt.
+ The compiler bug is reported at
+ https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812.
- Bug 24350: REGRESSION: Safari 4 breaks SPAW wysiwyg editor multiple instances
- <https://bugs.webkit.org/show_bug.cgi?id=24350>
- <rdar://problem/6674182>
+ The change should be reverted when the above bug is fixed in WINSCW compiler.
- The SPAW editor's JavaScript assumes that toString() on a function
- constructed with the Function constructor produces a function with
- a newline after the opening brace.
+ https://bugs.webkit.org/show_bug.cgi?id=28054
- * runtime/FunctionConstructor.cpp:
- (JSC::constructFunction): Add a newline after the opening brace of the
- function's source code.
+2009-10-06 Yongjun Zhang <yongjun.zhang@nokia.com>
-2009-03-19 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Reviewed by Simon Hausmann.
- Reviewed by Geoff Garen.
+ Get rid of WINSCW hack for UnSpecifiedBoolType
- Bug 23771: REGRESSION (r36016): JSObjectHasProperty freezes on global class without kJSClassAttributeNoAutomaticPrototype
- <https://bugs.webkit.org/show_bug.cgi?id=23771>
- <rdar://problem/6561016>
+ Add parenthesis around (RefPtr::*UnspecifiedBoolType) to make the WINSCW
+ compiler work with the default UnSpecifiedBoolType() operator.
- * API/tests/testapi.c:
- (main): Add a test for this bug.
- * runtime/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::resetPrototype): Don't set the prototype of the
- last object in the prototype chain to the object prototype when the
- object prototype is already the last object in the prototype chain.
+ https://bugs.webkit.org/show_bug.cgi?id=28054
-2009-03-19 Timothy Hatcher <timothy@apple.com>
+ * wtf/RefPtr.h:
- <rdar://problem/6687342> -[WebView scheduleInRunLoop:forMode:] has no affect on timers
+2010-02-09 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
- Reviewed by Darin Adler.
+ Reviewed by Simon Hausmann.
- * wtf/Platform.h: Added HAVE_RUNLOOP_TIMER for PLATFORM(MAC).
+ New functions nullValue() and undefinedValue().
-2009-03-19 Geoffrey Garen <ggaren@apple.com>
+ [Qt] QScriptEngine should contain nullValue and undefinedValue methods
+ https://bugs.webkit.org/show_bug.cgi?id=34749
- Reviewed by Oliver Hunt.
-
- Fixed <rdar://problem/6279213> Regular expression run-time complexity
- limit too low for long inputs (21485)
-
- I raised PCRE's "matchLimit" (limit on backtracking) by an order of
- magnitude. This fixes all the reported examples of timing out on legitimate
- regular expression matches.
-
- In my testing on a Core Duo MacBook Pro, the longest you can get stuck
- trying to match a string is still under 1s, so this seems like a safe change.
-
- I can think of a number of better solutions that are more complicated,
- but this is a good improvement for now.
+ * qt/api/qscriptengine.cpp:
+ (QScriptEngine::nullValue):
+ (QScriptEngine::undefinedValue):
+ * qt/api/qscriptengine.h:
+ * qt/tests/qscriptengine/tst_qscriptengine.cpp:
+ (tst_QScriptEngine::nullValue):
+ (tst_QScriptEngine::undefinedValue):
- * pcre/pcre_exec.cpp:
+2010-02-09 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
-2009-03-19 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Simon Hausmann.
- Reviewed by Sam Weinig.
-
- Fixed <rdar://problem/6603562> REGRESSION (Safari 4): regular expression
- pattern size limit lower than Safari 3.2, other browsers, breaks SAP (14873)
-
- Bumped the pattern size limit to 1MB, and standardized it between PCRE
- and WREC. (Empirical testing says that we can easily compile a 1MB regular
- expression without risking a hang. Other browsers support bigger regular
- expressions, but also hang.)
-
- SunSpider reports no change.
-
- I started with a patch posted to Bugzilla by Erik Corry (erikcorry@google.com).
-
- * pcre/pcre_internal.h:
- (put3ByteValue):
- (get3ByteValue):
- (put3ByteValueAndAdvance):
- (putLinkValueAllowZero):
- (getLinkValueAllowZero): Made PCRE's "LINK_SIZE" (the number of bytes
- used to record jumps between bytecodes) 3, to accomodate larger potential
- jumps. Bumped PCRE's "MAX_PATTERN_SIZE" to 1MB. (Technically, at this
- LINK_SIZE, we can support even larger patterns, but we risk a hang during
- compilation, and it's not clear that such large patterns are important
- on the web.)
-
- * wrec/WREC.cpp:
- (JSC::WREC::Generator::compileRegExp): Match PCRE's maximum pattern size,
- to avoid quirks between platforms.
-
-2009-03-18 Ada Chan <adachan@apple.com>
-
- Rolling out r41818 since it broke the windows build.
- Error: ..\..\runtime\DatePrototype.cpp(30) : fatal error C1083: Cannot open include file: 'langinfo.h': No such file or directory
+ Fixes for QScriptValue::toNumber().
- * runtime/DatePrototype.cpp:
- (JSC::formatLocaleDate):
+ Fix ECMA compliance in QScriptValue for values unbound
+ to a QScriptEngine.
-2009-03-17 Oliver Hunt <oliver@apple.com>
+ [Qt] QScriptValue::toNumber() is broken
+ https://bugs.webkit.org/show_bug.cgi?id=34592
- Reviewed by Cameron Zwarich.
+ * qt/api/qscriptvalue_p.h:
+ (QScriptValuePrivate::toNumber):
+ * qt/tests/qscriptvalue/tst_qscriptvalue.h:
+ * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
+ (tst_QScriptValue::toNumber_initData):
+ (tst_QScriptValue::toNumber_makeData):
+ (tst_QScriptValue::toNumber_test):
- <rdar://problem/6692138> REGRESSION (Safari 4): Incorrect function return value when using IE "try ... finally" memory leak work-around (24654)
- <https://bugs.webkit.org/show_bug.cgi?id=24654>
+2010-02-09 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
- If the return value for a function is in a local register we need
- to copy it before executing any finalisers, otherwise it is possible
- for the finaliser to clobber the result.
+ Reviewed by Simon Hausmann.
- * bytecompiler/BytecodeGenerator.h:
- (JSC::BytecodeGenerator::hasFinaliser):
- * parser/Nodes.cpp:
- (JSC::ReturnNode::emitBytecode):
+ Fix QScriptValue::isNumber().
-2009-03-17 Kevin Ollivier <kevino@theolliviers.com>
+ The isNumber() should return 'true' if the value is in the CNumber
+ state.
- Reviewed by Mark Rowe.
-
- Move BUILDING_ON_* defines into Platform.h to make them available to other ports.
- Also tweak the defines so that they work with the default values set by
- AvailabilityMacros.h.
+ [Qt] QScriptValue::isNumber() returns an incorrect value
+ https://bugs.webkit.org/show_bug.cgi?id=34575
- https://bugs.webkit.org/show_bug.cgi?id=24630
+ * qt/api/qscriptvalue_p.h:
+ (QScriptValuePrivate::isNumber):
+ * qt/tests/qscriptvalue/tst_qscriptvalue.h:
+ * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp:
+ (tst_QScriptValue::isNumber_initData):
+ (tst_QScriptValue::isNumber_makeData):
+ (tst_QScriptValue::isNumber_test):
- * JavaScriptCorePrefix.h:
- * wtf/Platform.h:
+2010-02-09 Geoffrey Garen <ggaren@apple.com>
-2009-03-15 Simon Fraser <simon.fraser@apple.com>
+ Reviewed by Oliver Hunt.
- Revert r41718 because it broke DumpRenderTree on Tiger.
+ Small refactoring to the small strings cache to allow it to be cleared
+ dynamically.
- * JavaScriptCorePrefix.h:
- * wtf/Platform.h:
+ * runtime/SmallStrings.cpp:
+ (JSC::SmallStrings::SmallStrings):
+ (JSC::SmallStrings::clear):
+ * runtime/SmallStrings.h: Moved initialization code into a shared function,
+ and changed the constructor to call it.
-2009-03-15 Kevin Ollivier <kevino@theolliviers.com>
+2010-02-09 Gavin Barraclough <barraclough@apple.com>
- Non-Apple Mac ports build fix. Move defines for the BUILDING_ON_ macros into
- Platform.h so that they're defined for all ports building on Mac, and tweak
- the definitions of those macros based on Mark Rowe's suggestions to accomodate
- cases where the values may not be <= to the .0 release for that version.
+ Rubber Stamped by Geoff Garen.
- * JavaScriptCorePrefix.h:
- * wtf/Platform.h:
+ Rename StringBuilder::release && JSStringBuilder::releaseJSString
+ to 'build()'.
-2009-03-13 Mark Rowe <mrowe@apple.com>
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncToLocaleString):
+ (JSC::arrayProtoFuncJoin):
+ * runtime/Executable.cpp:
+ (JSC::FunctionExecutable::paramString):
+ * runtime/FunctionConstructor.cpp:
+ (JSC::constructFunction):
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::encode):
+ (JSC::decode):
+ (JSC::globalFuncEscape):
+ (JSC::globalFuncUnescape):
+ * runtime/JSONObject.cpp:
+ (JSC::Stringifier::stringify):
+ * runtime/JSStringBuilder.h:
+ (JSC::JSStringBuilder::build):
+ * runtime/LiteralParser.cpp:
+ (JSC::LiteralParser::Lexer::lexString):
+ * runtime/NumberPrototype.cpp:
+ (JSC::integerPartNoExp):
+ (JSC::numberProtoFuncToFixed):
+ * runtime/StringBuilder.h:
+ (JSC::StringBuilder::build):
- Rubber-stamped by Dan Bernstein.
+2010-02-09 John Sullivan <sullivan@apple.com>
- Take advantage of the ability of recent versions of Xcode to easily switch the active
- architecture.
+ https://bugs.webkit.org/show_bug.cgi?id=34772
+ Overzealous new assertion in URStringImpl::adopt()
- * Configurations/DebugRelease.xcconfig:
+ Reviewed by Adam Barth.
-2009-03-13 Mark Rowe <mrowe@apple.com>
+ * runtime/UStringImpl.h:
+ (JSC::UStringImpl::adopt):
+ Only assert that vector.data() is non-zero if vector.size() is non-zero.
- Reviewed by David Kilzer.
+2010-02-09 Nikolas Zimmermann <nzimmermann@rim.com>
- Prevent AllInOneFile.cpp and ProfileGenerator.cpp from rebuilding unnecessarily when
- switching between building in Xcode and via build-webkit.
+ Not reviewed. Try to fix build problem on SnowLeopard slaves to bring them back.
- build-webkit passes FEATURE_DEFINES to xcodebuild, resulting in it being present in the
- Derived Sources build settings. When building in Xcode, this setting isn't present so
- Xcode reruns the script build phases. This results in a new version of TracingDtrace.h
- being generated, and the files that include it being rebuilt.
+ * API/JSClassRef.cpp:
+ (tryCreateStringFromUTF8): Mark method as 'static inline' to suppress "warning: no previous prototype for ..."
- * JavaScriptCore.xcodeproj/project.pbxproj: Don't regenerate TracingDtrace.h if it is
- already newer than the input file.
+2010-02-09 Gavin Barraclough <barraclough@apple.com>
-2009-03-13 Norbert Leser <norbert.leser@nokia.com>
+ Reviewed by Oliver Hunt.
- Reviewed by Darin Adler.
+ Three small string fixes:
+ (1) StringBuilder::release should CRASH if the buffer allocation failed.
+ (2) Remove weird, dead code from JSString::tryGetValue, replace with an ASSERT.
+ (3) Move UString::createFromUTF8 out to the API, as tryCreateStringFromUTF8.
+ This is only used from the API, and (now) unlike other UString::create
+ methods may return UString::null() to indicate failure cases. Better
+ handle these in the API.
- Resolved name conflict with globally defined tzname in Symbian.
- Replaced with different name instead of using namespace qualifier
- (appeared to be less clumsy).
+ * API/JSClassRef.cpp:
+ (tryCreateStringFromUTF8):
+ (OpaqueJSClass::OpaqueJSClass):
+ (OpaqueJSClassContextData::OpaqueJSClassContextData):
+ * runtime/JSString.h:
+ (JSC::Fiber::tryGetValue):
+ * runtime/StringBuilder.h:
+ (JSC::StringBuilder::release):
+ * runtime/UString.cpp:
+ (JSC::UString::UString):
+ (JSC::UString::from):
+ (JSC::UString::find):
+ * runtime/UString.h:
- * runtime/DateMath.cpp:
+2010-02-09 Janne Koskinen <janne.p.koskinen@digia.com>
-2009-03-12 Mark Rowe <mrowe@apple.com>
+ Reviewed by Laszlo Gombos.
- Reviewed by Darin Adler.
+ [Qt] use nanval() for Symbian as nonInlineNaN
+ https://bugs.webkit.org/show_bug.cgi?id=34170
- <rdar://problem/6548446> TCMalloc_SystemRelease should use madvise rather than re-mmaping span of pages
+ numeric_limits<double>::quiet_NaN is broken in Symbian
+ causing NaN to be evaluated as a number.
- * wtf/FastMalloc.cpp:
- (WTF::mergeDecommittedStates): If either of the spans has been released to the system, release the other
- span as well so that the flag in the merged span is accurate.
- * wtf/Platform.h:
- * wtf/TCSystemAlloc.cpp: Track decommitted spans when using MADV_FREE_REUSABLE / MADV_FREE_REUSE.
- (TCMalloc_SystemRelease): Use madvise with MADV_FREE_REUSABLE when it is available.
- (TCMalloc_SystemCommit): Use madvise with MADV_FREE_REUSE when it is available.
- * wtf/TCSystemAlloc.h:
+ * runtime/JSValue.cpp:
+ (JSC::nonInlineNaN):
-2009-03-12 Adam Treat <adam.treat@torchmobile.com>
+2010-02-09 Tamas Szirbucz <szirbucz@inf.u-szeged.hu>
- Reviewed by NOBODY (Build fix).
+ Reviewed by Gavin Barraclough.
- Include string.h for strlen usage.
+ Add a soft modulo operation to ARM JIT using a trampoline function.
+ The performance progression is about ~1.8% on ARMv7
+ https://bugs.webkit.org/show_bug.cgi?id=34424
- * wtf/Threading.cpp:
+ Developed in cooperation with Gabor Loki.
-2009-03-12 David Kilzer <ddkilzer@apple.com>
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_mod):
+ (JSC::JIT::emitSlow_op_mod):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::softModulo):
+ * jit/JITStubs.h:
+ (JSC::JITThunks::ctiSoftModulo):
+ * wtf/Platform.h:
- Add NO_RETURN attribute to runInteractive() when not using readline
+2010-02-08 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Darin Adler.
+ Reviewed by NOBODY (SL/win build fixes).
- * jsc.cpp:
- (runInteractive): If the readline library is not used, this method
- will never return, thus the NO_RETURN attribute is needed to prevent
- a gcc warning.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * runtime/StringPrototype.cpp:
-2009-03-12 Adam Roben <aroben@apple.com>
+2010-02-08 Gavin Barraclough <barraclough@apple.com>
- Adopt setThreadNameInternal on Windows
+ Reviewed by Oliver Hunt
- Also changed a Windows-only assertion about thread name length to an
- all-platform log message.
+ Make String.replace throw an exception on out-of-memory, rather than
+ returning a null (err, empty-ish) string. Move String::replaceRange
+ and String::spliceSubstringsWithSeparators out to StringPrototype -
+ these were fairly specific use anyway, and we can better integrate
+ throwing the JS expcetion this way.
- Reviewed by Adam Treat.
+ Also removes redundant assignment operator from UString.
- * wtf/Threading.cpp:
- (WTF::createThread): Warn if the thread name is longer than 31
- characters, as Visual Studio will truncate names longer than that
- length.
+ * JavaScriptCore.exp:
+ * runtime/StringPrototype.cpp:
+ (JSC::StringRange::StringRange):
+ (JSC::jsSpliceSubstringsWithSeparators):
+ (JSC::jsReplaceRange):
+ (JSC::stringProtoFuncReplace):
+ * runtime/UString.cpp:
+ * runtime/UString.h:
- * wtf/ThreadingWin.cpp:
- (WTF::setThreadNameInternal): Renamed from setThreadName and changed
- to always operate on the current thread.
- (WTF::initializeThreading): Changed to use setThreadNameInternal.
- (WTF::createThreadInternal): Removed call to setThreadName. This is
- now handled by threadEntryPoint and setThreadNameInternal.
+2010-02-08 Kwang Yul Seo <skyul@company100.net>
-2009-03-11 David Kilzer <ddkilzer@apple.com>
+ Reviewed by Eric Seidel.
- Clarify comments regarding order of FEATURE_DEFINES
+ [BREWMP] Undefine WTF_OS_WINDOWS and WTF_PLATFORM_WIN
+ https://bugs.webkit.org/show_bug.cgi?id=34561
- Rubber-stamped by Mark Rowe.
+ As the binary for simulator is built with MSVC 2005,
+ WTF_OS_WINDOWS and WTF_PLATFORM_WIN are defined.
+ Undefine them as we don't target Windows.
- * Configurations/JavaScriptCore.xcconfig: Added warning about
- the consequences when FEATURE_DEFINES are not kept in sync.
+ * wtf/Platform.h:
-2009-03-11 Dan Bernstein <mitz@apple.com>
+2010-02-08 Chris Rogers <crogers@google.com>
Reviewed by Darin Adler.
- - WTF support for fixing <rdar://problem/3919124> Thai text selection
- in Safari is incorrect
-
- * wtf/unicode/icu/UnicodeIcu.h:
- (WTF::Unicode::hasLineBreakingPropertyComplexContext): Added. Returns
- whether the character has Unicode line breaking property value SA
- ("Complex Context").
- * wtf/unicode/qt4/UnicodeQt4.h:
- (WTF::Unicode::hasLineBreakingPropertyComplexContext): Added an
- implementation that always returns false.
-
-2009-03-11 Darin Adler <darin@apple.com>
-
- Reviewed by Mark Rowe.
-
- Give threads names on platforms with pthread_setname_np.
+ audio engine: add Vector3 class
+ https://bugs.webkit.org/show_bug.cgi?id=34548
+
+ * wtf/Vector3.h: Added.
+ (WebCore::Vector3::Vector3):
+ (WebCore::Vector3::abs):
+ (WebCore::Vector3::isZero):
+ (WebCore::Vector3::normalize):
+ (WebCore::Vector3::x):
+ (WebCore::Vector3::y):
+ (WebCore::Vector3::z):
+ (WebCore::operator+):
+ (WebCore::operator-):
+ (WebCore::operator*):
+ (WebCore::dot):
+ (WebCore::cross):
+ (WebCore::distance):
+
+2010-02-08 Oliver Hunt <oliver@apple.com>
- * wtf/Threading.cpp:
- (WTF::NewThreadContext::NewThreadContext): Initialize thread name.
- (WTF::threadEntryPoint): Call setThreadNameInternal.
- (WTF::createThread): Pass thread name.
+ Reviewed by Gavin Barraclough.
- * wtf/Threading.h: Added new comments, setThreadNameInternal.
+ Fix warning in clang++
- * wtf/ThreadingGtk.cpp:
- (WTF::setThreadNameInternal): Added. Empty.
- * wtf/ThreadingNone.cpp:
- (WTF::setThreadNameInternal): Added. Empty.
- * wtf/ThreadingPthreads.cpp:
- (WTF::setThreadNameInternal): Call pthread_setname_np when available.
- * wtf/ThreadingQt.cpp:
- (WTF::setThreadNameInternal): Added. Empty.
- * wtf/ThreadingWin.cpp:
- (WTF::setThreadNameInternal): Added. Empty.
+ * runtime/Structure.h:
+ (JSC::Structure::propertyStorageSize):
-2009-03-11 Adam Roben <aroben@apple.com>
+2010-02-08 Gavin Barraclough <barraclough@apple.com>
- Change the Windows implementation of ThreadSpecific to use functions
- instead of extern globals
+ Reviewed by Geoff Garen.
- This will make it easier to export ThreadSpecific from WebKit.
+ Make makeString CRASH if we fail to allocate a string.
- Reviewed by John Sullivan.
+ (tryMakeString or jsMakeNontrivialString can be used where we
+ expect allocation may fail and want to handle the error).
- * API/JSBase.cpp:
- (JSEvaluateScript):
- Touched this file to force ThreadSpecific.h to be copied into
- $WebKitOutputDir.
+ * runtime/JSStringBuilder.h:
+ (JSC::jsMakeNontrivialString):
+ * runtime/UString.h:
+ (JSC::tryMakeString):
+ (JSC::makeString):
- * wtf/ThreadSpecific.h: Replaced g_tls_key_count with tlsKeyCount()
- and g_tls_keys with tlsKeys().
+2010-02-08 Gavin Barraclough <barraclough@apple.com>
- (WTF::::ThreadSpecific):
- (WTF::::~ThreadSpecific):
- (WTF::::get):
- (WTF::::set):
- (WTF::::destroy):
- Updated to use the new functions.
+ Rubber Stamped by Oliver Hunt.
- * wtf/ThreadSpecificWin.cpp:
- (WTF::tlsKeyCount):
- (WTF::tlsKeys):
- Added.
+ Remove a couple of unnecesary C-style casts spotted by Darin.
- (WTF::ThreadSpecificThreadExit): Changed to use the new functions.
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::encode):
+ (JSC::globalFuncEscape):
-2009-03-10 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+2010-02-08 Gavin Barraclough <barraclough@apple.com>
Reviewed by Geoff Garen.
- Bug 24291: REGRESSION (r38635): Single line JavaScript comment prevents HTML button click handler execution
- <https://bugs.webkit.org/show_bug.cgi?id=24291>
- <rdar://problem/6663472>
+ Switch some more StringBuilder/jsNontrivialString code to use
+ JSStringBuilder/jsMakeNontrivialString - these methods will
+ throw an exception if we hit out-of-memory, rather than just
+ CRASHing.
- Add an extra newline to the end of the body of the program text constructed
- by the Function constructor for parsing. This allows single line comments to
- be handled correctly by the parser.
+ * runtime/FunctionPrototype.cpp:
+ (JSC::functionProtoFuncToString):
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::encode):
+ (JSC::decode):
+ (JSC::globalFuncEscape):
- * runtime/FunctionConstructor.cpp:
- (JSC::constructFunction):
+2010-02-08 Gavin Barraclough <barraclough@apple.com>
-2009-03-09 Oliver Hunt <oliver@apple.com>
+ Reviewed by Sam Weinig.
- Reviewed by Gavin Barraclough.
+ Use an empty identifier instead of a null identifier for parse
+ tokens without an identifier.
- Bug 24447: REGRESSION (r41508): Google Maps does not complete initialization
- <rdar://problem/6657774>
+ This helps encapsulate the null UStringImpl within UString.
- r41508 actually exposed a pre-existing bug where we were not invalidating the result
- register cache at jump targets. This causes problems when condition loads occur in an
- expression -- namely through the ?: and || operators. This patch corrects these issues
- by marking the target of all forward jumps as being a jump target, and then clears the
- result register cache when ever it starts generating code for a targeted instruction.
+ * parser/Grammar.y:
+ * parser/NodeConstructors.h:
+ (JSC::ContinueNode::ContinueNode):
+ (JSC::BreakNode::BreakNode):
+ (JSC::ForInNode::ForInNode):
+ * runtime/CommonIdentifiers.cpp:
+ (JSC::CommonIdentifiers::CommonIdentifiers):
+ * runtime/CommonIdentifiers.h:
+ * runtime/FunctionPrototype.cpp:
+ (JSC::FunctionPrototype::FunctionPrototype):
- I do not believe it is possible to cause this class of failure outside of a single
- expression, and expressions only provide forward branches, so this should resolve this
- entire class of bug. That said i've included a test case that gets as close as possible
- to hitting this bug with a back branch, to hopefully prevent anyone from introducing the
- problem in future.
+2010-02-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
- * assembler/AbstractMacroAssembler.h:
- (JSC::AbstractMacroAssembler::Label::isUsed):
- (JSC::AbstractMacroAssembler::Label::used):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::JmpDst::JmpDst):
- (JSC::X86Assembler::JmpDst::isUsed):
- (JSC::X86Assembler::JmpDst::used):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
+ Build fix for make distcheck.
-2009-03-09 David Levin <levin@chromium.org>
+ * GNUmakefile.am:
- Reviewed by Darin Adler.
+2010-02-08 Simon Hausmann <simon.hausmann@nokia.com>
- Bug 23175: String and UString should be able to share a UChar* buffer.
- <https://bugs.webkit.org/show_bug.cgi?id=23175>
-
- Add CrossThreadRefCounted.
-
- * wtf/CrossThreadRefCounted.h: Added.
- (WTF::CrossThreadRefCounted::create):
- (WTF::CrossThreadRefCounted::isShared):
- (WTF::CrossThreadRefCounted::dataAccessMustBeThreadSafe):
- (WTF::CrossThreadRefCounted::mayBePassedToAnotherThread):
- (WTF::CrossThreadRefCounted::CrossThreadRefCounted):
- (WTF::CrossThreadRefCounted::~CrossThreadRefCounted):
- (WTF::CrossThreadRefCounted::ref):
- (WTF::CrossThreadRefCounted::deref):
- (WTF::CrossThreadRefCounted::release):
- (WTF::CrossThreadRefCounted::copy):
- (WTF::CrossThreadRefCounted::threadSafeDeref):
- * wtf/RefCounted.h:
- * wtf/Threading.h:
- (WTF::ThreadSafeSharedBase::ThreadSafeSharedBase):
- (WTF::ThreadSafeSharedBase::derefBase):
- (WTF::ThreadSafeShared::ThreadSafeShared):
- (WTF::ThreadSafeShared::deref):
+ Unreviewed RVCT build fix.
-2009-03-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+ Similar to r54391, don't import the cmath functions from std:: for RVCT.
- Reviewed by George Staikos.
+ * wtf/MathExtras.h:
- https://bugs.webkit.org/show_bug.cgi?id=24353
- Allow to overrule default build options for Qt build.
+2010-02-05 Gavin Barraclough <barraclough@apple.com>
- * JavaScriptCore.pri: Allow to overrule ENABLE_JIT
+ Reviewed by Geoff Garen.
-2009-03-08 Oliver Hunt <oliver@apple.com>
+ Change UStringImpl::create to CRASH if the string cannot be allocated,
+ rather than returning a null string (which will behave like a zero-length
+ string if used).
+
+ Also move createRep function from UString to become new overloaded
+ UStringImpl::create methods. In doing so, bring their behaviour closer to
+ being in line with WebCore::StringImpl, in removing the behaviour that they
+ can be used to produce null UStrings (ASSERT the char* provided is non-null).
+ This behaviour of converting null C-strings to null UStrings is inefficient
+ (cmompared to just using UString::null()), incompatible with WebCore::StringImpl's
+ behaviour, and may generate unexpected behaviour, since in many cases a null
+ UString can be used like an empty string.
+
+ With these changes UStringImpl need not have a concept of null impls, we can
+ start transitioning this to become an implementation detail of UString, that
+ internally it chooses to use a null-object rather than an actually zero impl
+ pointer.
- Reviewed by NOBODY (build fix).
+ * JavaScriptCore.exp:
+ * debugger/Debugger.cpp:
+ (JSC::Debugger::recompileAllJSFunctions):
+ * debugger/DebuggerCallFrame.cpp:
+ (JSC::DebuggerCallFrame::calculatedFunctionName):
+ * parser/Parser.cpp:
+ (JSC::Parser::parse):
+ * profiler/Profile.cpp:
+ (JSC::Profile::Profile):
+ * profiler/ProfileGenerator.cpp:
+ (JSC::ProfileGenerator::stopProfiling):
+ * runtime/Error.cpp:
+ (JSC::Error::create):
+ (JSC::throwError):
+ * runtime/ExceptionHelpers.cpp:
+ (JSC::createError):
+ * runtime/Identifier.cpp:
+ (JSC::Identifier::add):
+ * runtime/PropertyNameArray.cpp:
+ (JSC::PropertyNameArray::add):
+ * runtime/UString.cpp:
+ (JSC::initializeUString):
+ (JSC::UString::UString):
+ (JSC::UString::operator=):
+ * runtime/UString.h:
+ (JSC::UString::isNull):
+ (JSC::UString::null):
+ (JSC::UString::rep):
+ (JSC::UString::UString):
+ * runtime/UStringImpl.cpp:
+ (JSC::UStringImpl::create):
+ * runtime/UStringImpl.h:
- Build fix.
+2010-02-05 Kwang Yul Seo <skyul@company100.net>
- * runtime/ArrayPrototype.cpp:
- (JSC::arrayProtoFuncConcat):
+ Reviewed by Eric Seidel.
-2009-03-01 Oliver Hunt <oliver@apple.com>
+ [BREWMP] Define SYSTEM_MALLOC 1
+ https://bugs.webkit.org/show_bug.cgi?id=34640
- Reviewed by Cameron Zwarich.
+ Make BREWMP use system malloc because FastMalloc is not ported.
- Bug 24268: RuntimeArray is not a fully implemented JSArray
- <https://bugs.webkit.org/show_bug.cgi?id=24268>
+ * wtf/Platform.h:
- Don't cast a type to JSArray, just because it reportsArray as a supertype
- in the JS type system. Doesn't appear feasible to create a testcase
- unfortunately as setting up the failure conditions requires internal access
- to JSC not present in DRT.
+2010-02-05 Kwang Yul Seo <skyul@company100.net>
- * runtime/ArrayPrototype.cpp:
- (JSC::arrayProtoFuncConcat):
+ Reviewed by Alexey Proskuryakov.
-2009-03-06 Gavin Barraclough <barraclough@apple.com>
+ Don't call CRASH() in fastMalloc and fastCalloc when the requested memory size is 0
+ https://bugs.webkit.org/show_bug.cgi?id=34569
- Reviewed by Oliver Hunt.
+ With USE_SYSTEM_MALLOC=1, fastMalloc and fastCalloc call CRASH()
+ if the return value of malloc and calloc is 0.
+
+ However, these functions can return 0 when the request size is 0.
+ Libc manual says, "If size is 0, then malloc() returns either NULL,
+ or a unique pointer value that can later be successfully passed to free()."
+ Though malloc returns a unique pointer in most systems,
+ 0 can be returned in some systems. For instance, BREW's MALLOC returns 0
+ when size is 0.
- When preforming an op_mov, preserve any existing register mapping.
+ If malloc or calloc returns 0 due to allocation size, increase the size
+ to 1 and try again.
- ~0.5% progression on v8 tests x86-64.
+ * wtf/FastMalloc.cpp:
+ (WTF::fastMalloc):
+ (WTF::fastCalloc):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
+2010-02-04 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Timothy Hatcher.
-2009-03-05 Simone Fiorentino <simone.fiorentino@consulenti.fastweb.it>
+ Build fix. Remove a symbol corresponding to an inline function from the linker export
+ file to prevent a weak external failure.
- Bug 24382: request to add SH4 platform
+ * JavaScriptCore.xcodeproj/project.pbxproj: Accommodate rename of script.
- <https://bugs.webkit.org/show_bug.cgi?id=24382>
+2010-02-04 Daniel Bates <dbates@webkit.org>
- Reviewed by David Kilzer.
+ [Qt] Unreviewed, build fix for Qt bot.
- * wtf/Platform.h: Added support for SH4 platform.
+ * runtime/JSStringBuilder.h: Changed #include <X.h> notation #include "X.h".
-2009-03-05 Gavin Barraclough <barraclough@apple.com>
+2010-02-04 Geoffrey Garen <ggaren@apple.com>
Reviewed by Oliver Hunt.
- Writes of constant values to SF registers should be made with direct memory
- writes where possible, rather than moving the value via a hardware register.
+ Clearing a WeakGCPtr is weird
+ https://bugs.webkit.org/show_bug.cgi?id=34627
- ~3% win on SunSpider tests on x86, ~1.5% win on v8 tests on x86-64.
+ Added a WeakGCPtr::clear interface.
+
+ As discussed in https://bugs.webkit.org/show_bug.cgi?id=33383, the old
+ interface made it pretty weird for a client to conditionally clear a
+ WeakGCPtr, which is exactly what clients want to do when objects are
+ finalized.
- * assembler/MacroAssemblerX86_64.h:
- (JSC::MacroAssemblerX86_64::storePtr):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::movq_i32m):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
+ * API/JSClassRef.cpp:
+ (clearReferenceToPrototype): Use the new WeakGCPtr::clear() interface.
-2009-03-05 Mark Rowe <mrowe@apple.com>
+ * runtime/WeakGCPtr.h:
+ (JSC::WeakGCPtr::clear): Added an interface for clearing a WeakGCPtr,
+ iff its current value is the value passed in. It's cumbersome for the
+ client to do this test, since WeakGCPtr sometimes pretends to be null.
- Fix the build.
+2010-02-04 Geoffrey Garen <ggaren@apple.com>
- Sprinkle "static" around NumberConstructor.cpp in order to please the compiler.
+ Build fix: export a header.
- * runtime/NumberConstructor.cpp:
- (JSC::numberConstructorNaNValue):
- (JSC::numberConstructorNegInfinity):
- (JSC::numberConstructorPosInfinity):
- (JSC::numberConstructorMaxValue):
- (JSC::numberConstructorMinValue):
+ * JavaScriptCore.xcodeproj/project.pbxproj:
-2009-03-04 Mark Rowe <mrowe@apple.com>
+2010-02-04 Gavin Barraclough <barraclough@apple.com>
Reviewed by Oliver Hunt.
- <rdar://problem/6354858> FastMallocZone's enumeration code reports fragmented administration space
+ Add a JSStringBuilder class (similar-to, and derived-from StringBuilder) to
+ construct JSStrings, throwing a JS exception should we run out of memory whilst
+ allocating storage for the string.
- The handling of MALLOC_ADMIN_REGION_RANGE_TYPE in FastMalloc's zone was incorrect. It was attempting
- to record the memory containing and individual span as an administrative region, when all memory
- allocated via MetaDataAlloc should in fact be recorded. This was causing memory regions allocated
- via MetaDataAlloc to appear as "VM_ALLOCATE ?" in vmmap output. They are now correctly reported as
- "MALLOC_OTHER" regions associated with the JavaScriptCore FastMalloc zone.
+ Similarly, add jsMakeNontrivialString methods to use in cases where previously
+ we were calling makeString & passing the result to jsNontrivialString. Again,
+ these new methods throw if we hit an out of memory condition.
- Memory is allocated via MetaDataAlloc from two locations: PageHeapAllocator, and TCMalloc_PageMap{2,3}.
- These two cases are handled differently.
+ Move throwOutOfMemoryError into ExceptionHelpers, to make it more widely available.
- PageHeapAllocator is extended to keep a linked list of memory regions that it has allocated. The
- first object in an allocated region contains the link to the previously allocated region. To record
- the administrative regions of a PageHeapAllocator we can simply walk the linked list and record
- each allocated region we encounter.
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncToString):
+ (JSC::arrayProtoFuncToLocaleString):
+ (JSC::arrayProtoFuncJoin):
+ * runtime/DateConstructor.cpp:
+ (JSC::callDate):
+ * runtime/DatePrototype.cpp:
+ (JSC::dateProtoFuncToString):
+ (JSC::dateProtoFuncToUTCString):
+ (JSC::dateProtoFuncToGMTString):
+ * runtime/ErrorPrototype.cpp:
+ (JSC::errorProtoFuncToString):
+ * runtime/ExceptionHelpers.cpp:
+ (JSC::throwOutOfMemoryError):
+ * runtime/ExceptionHelpers.h:
+ * runtime/JSStringBuilder.h: Added.
+ (JSC::JSStringBuilder::releaseJSString):
+ (JSC::jsMakeNontrivialString):
+ * runtime/NumberPrototype.cpp:
+ (JSC::numberProtoFuncToPrecision):
+ * runtime/ObjectPrototype.cpp:
+ (JSC::objectProtoFuncToString):
+ * runtime/Operations.cpp:
+ * runtime/Operations.h:
+ * runtime/RegExpPrototype.cpp:
+ (JSC::regExpProtoFuncToString):
+ * runtime/StringBuilder.h:
+ (JSC::StringBuilder::append):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncBig):
+ (JSC::stringProtoFuncSmall):
+ (JSC::stringProtoFuncBlink):
+ (JSC::stringProtoFuncBold):
+ (JSC::stringProtoFuncFixed):
+ (JSC::stringProtoFuncItalics):
+ (JSC::stringProtoFuncStrike):
+ (JSC::stringProtoFuncSub):
+ (JSC::stringProtoFuncSup):
+ (JSC::stringProtoFuncFontcolor):
+ (JSC::stringProtoFuncFontsize):
+ (JSC::stringProtoFuncAnchor):
- TCMalloc_PageMaps allocate memory via MetaDataAlloc to store each level of the radix tree. To record
- the administrative regions of a TCMalloc_PageMap we walk the tree and record the storage used for nodes
- at each position rather than the nodes themselves.
+2010-02-04 Steve Falkenburg <sfalken@apple.com>
- A small performance improvement is achieved by coalescing adjacent memory regions inside the PageMapMemoryUsageRecorder
- so that fewer calls in to the range recorder are necessary. We further reduce the number of calls to the
- range recorder by aggregating the in-use ranges of a given memory region into a local buffer before recording
- them with a single call. A similar approach is also used by AdminRegionRecorder.
+ Windows build fix.
- * wtf/FastMalloc.cpp:
- (WTF::PageHeapAllocator::Init):
- (WTF::PageHeapAllocator::New):
- (WTF::PageHeapAllocator::recordAdministrativeRegions):
- (WTF::TCMallocStats::FreeObjectFinder::isFreeObject):
- (WTF::TCMallocStats::PageMapMemoryUsageRecorder::~PageMapMemoryUsageRecorder):
- (WTF::TCMallocStats::PageMapMemoryUsageRecorder::recordPendingRegions):
- (WTF::TCMallocStats::PageMapMemoryUsageRecorder::visit):
- (WTF::TCMallocStats::AdminRegionRecorder::AdminRegionRecorder):
- (WTF::TCMallocStats::AdminRegionRecorder::recordRegion):
- (WTF::TCMallocStats::AdminRegionRecorder::visit):
- (WTF::TCMallocStats::AdminRegionRecorder::recordPendingRegions):
- (WTF::TCMallocStats::AdminRegionRecorder::~AdminRegionRecorder):
- (WTF::TCMallocStats::FastMallocZone::enumerate):
- (WTF::TCMallocStats::FastMallocZone::FastMallocZone):
- (WTF::TCMallocStats::FastMallocZone::init):
- * wtf/TCPageMap.h:
- (TCMalloc_PageMap2::visitValues):
- (TCMalloc_PageMap2::visitAllocations):
- (TCMalloc_PageMap3::visitValues):
- (TCMalloc_PageMap3::visitAllocations):
-
-2009-03-04 Antti Koivisto <antti@apple.com>
-
- Reviewed by Dave Hyatt.
-
- https://bugs.webkit.org/show_bug.cgi?id=24359
- Repaint throttling mechanism
-
- Set ENABLE_REPAINT_THROTTLING to 0 by default.
+ * wtf/MathExtras.h:
- * wtf/Platform.h:
+2010-02-04 Darin Adler <darin@apple.com>
-2009-03-03 David Kilzer <ddkilzer@apple.com>
+ Reviewed by David Levin.
- <rdar://problem/6581203> WebCore and WebKit should install the same set of headers during installhdrs phase as build phase
+ Make MathExtras.h compatible with <cmath>
+ https://bugs.webkit.org/show_bug.cgi?id=34618
- Reviewed by Mark Rowe.
+ * wtf/MathExtras.h: Include <cmath> instead of <math.h>.
+ Use "using" as we do elsewhere in WTF for the four functions from <cmath>
+ we want to use without the prefix. Later we could consider making the std
+ explicit at call sites instead.
- * Configurations/Base.xcconfig: Defined REAL_PLATFORM_NAME based
- on PLATFORM_NAME to work around the missing definition on Tiger.
- Updated HAVE_DTRACE to use REAL_PLATFORM_NAME.
+2010-02-04 Tamas Szirbucz <szirbucz@inf.u-szeged.hu>
-2009-03-03 Kevin McCullough <kmccullough@apple.com>
+ Reviewed by Gavin Barraclough.
- Reviewed by Oliver Hunt.
+ Use an easily appendable structure for trampolines instead of pointer parameters.
+ https://bugs.webkit.org/show_bug.cgi?id=34424
- <rdar://problem/6639110> console.profile() doesn't work without a title
+ * assembler/ARMAssembler.cpp:
+ (JSC::ARMAssembler::executableCopy):
+ * jit/JIT.h:
+ (JSC::JIT::compileCTIMachineTrampolines):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::JITThunks):
+ * jit/JITStubs.h:
+ (JSC::JITThunks::ctiStringLengthTrampoline):
+ (JSC::JITThunks::ctiVirtualCallLink):
+ (JSC::JITThunks::ctiVirtualCall):
+ (JSC::JITThunks::ctiNativeCallThunk):
- * profiler/Profiler.cpp:
- (JSC::Profiler::startProfiling): assert if there is not title to ensure
- we don't start profiling without one.
+2010-02-04 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
-2009-03-02 Sam Weinig <sam@webkit.org>
+ Reviewed by Simon Hausmann.
- Reviewed by Mark Rowe.
+ Increase test coverage for the QScriptValue.
+
+ https://bugs.webkit.org/show_bug.cgi?id=34533
+
+ * qt/tests/qscriptvalue/qscriptvalue.pro:
+ * qt/tests/qscriptvalue/tst_qscriptvalue.cpp:
+ (tst_QScriptValue::tst_QScriptValue):
+ (tst_QScriptValue::~tst_QScriptValue):
+ (tst_QScriptValue::dataHelper):
+ (tst_QScriptValue::newRow):
+ (tst_QScriptValue::testHelper):
+ (tst_QScriptValue::ctor):
+ * qt/tests/qscriptvalue/tst_qscriptvalue.h: Added.
+ * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: Added.
+ (tst_QScriptValue::initScriptValues):
+ (tst_QScriptValue::isValid_initData):
+ (tst_QScriptValue::isValid_makeData):
+ (tst_QScriptValue::isValid_test):
+ (tst_QScriptValue::isBool_initData):
+ (tst_QScriptValue::isBool_makeData):
+ (tst_QScriptValue::isBool_test):
+ (tst_QScriptValue::isBoolean_initData):
+ (tst_QScriptValue::isBoolean_makeData):
+ (tst_QScriptValue::isBoolean_test):
+ (tst_QScriptValue::isFunction_initData):
+ (tst_QScriptValue::isFunction_makeData):
+ (tst_QScriptValue::isFunction_test):
+ (tst_QScriptValue::isNull_initData):
+ (tst_QScriptValue::isNull_makeData):
+ (tst_QScriptValue::isNull_test):
+ (tst_QScriptValue::isString_initData):
+ (tst_QScriptValue::isString_makeData):
+ (tst_QScriptValue::isString_test):
+ (tst_QScriptValue::isUndefined_initData):
+ (tst_QScriptValue::isUndefined_makeData):
+ (tst_QScriptValue::isUndefined_test):
+ (tst_QScriptValue::isObject_initData):
+ (tst_QScriptValue::isObject_makeData):
+ (tst_QScriptValue::isObject_test):
+
+2010-02-03 Kwang Yul Seo <skyul@company100.net>
- Enable Geolocation (except on Tiger and Leopard).
+ Reviewed by Eric Seidel.
- * Configurations/JavaScriptCore.xcconfig:
+ [BREWMP] Define WTF_PLATFORM_BREWMP_SIMULATOR when AEE_SIMULATOR is defined
+ https://bugs.webkit.org/show_bug.cgi?id=34514
-2009-03-01 David Kilzer <ddkilzer@apple.com>
+ PLATFORM(BREWMP_SIMULATOR) guard is needed to make distinction between BREWMP
+ and BREWMP simulator.
- <rdar://problem/6635688> Move HAVE_DTRACE check to Base.xcconfig
+ * wtf/Platform.h:
- Reviewed by Mark Rowe.
+2010-02-03 Kwang Yul Seo <skyul@company100.net>
- * Configurations/Base.xcconfig: Set HAVE_DTRACE Xcode variable
- based on PLATFORM_NAME and MAC_OS_X_VERSION_MAJOR. Also define
- it as a preprocessor macro by modifying
- GCC_PREPROCESSOR_DEFINITIONS.
- * JavaScriptCore.xcodeproj/project.pbxproj: Changed "Generate
- DTrace header" script phase to check for HAVE_DTRACE instead of
- MACOSX_DEPLOYMENT_TARGET.
- * wtf/Platform.h: Removed definition of HAVE_DTRACE macro since
- it's defined in Base.xcconfig now.
+ Reviewed by Eric Seidel.
-2009-03-01 Horia Olaru <olaru@adobe.com>
+ [BREWMP] Remove COMPILE_ASSERT conflict with the underlying PLATFORM
+ https://bugs.webkit.org/show_bug.cgi?id=34190
- By looking in grammar.y there are only a few types of statement nodes
- on which the debugger should stop.
+ COMPILE_ASSERT conflicts with the underlying PLATFORM because it is defined
+ both in WTF's Assertions.h and BREWMP's AEEClassIDs.h. Include AEEClassIDs.h
+ in Assertions.h and undef COMPILE_ASSERT to avoid redefining COMPILE_ASSERT.
- Removed isBlock and isLoop virtual calls. No need to emit debug hooks in
- the "statementListEmitCode" method as long as the necessary hooks can be
- added in each "emitCode".
+ * wtf/Assertions.h:
- https://bugs.webkit.org/show_bug.cgi?id=21073
+2010-02-03 Kwang Yul Seo <skyul@company100.net>
- Reviewed by Kevin McCullough.
+ Reviewed by Eric Seidel.
- * parser/Nodes.cpp:
- (JSC::ConstStatementNode::emitBytecode):
- (JSC::statementListEmitCode):
- (JSC::EmptyStatementNode::emitBytecode):
- (JSC::ExprStatementNode::emitBytecode):
- (JSC::VarStatementNode::emitBytecode):
- (JSC::IfNode::emitBytecode):
- (JSC::IfElseNode::emitBytecode):
- (JSC::DoWhileNode::emitBytecode):
- (JSC::WhileNode::emitBytecode):
- (JSC::ForNode::emitBytecode):
- (JSC::ForInNode::emitBytecode):
- (JSC::ContinueNode::emitBytecode):
- (JSC::BreakNode::emitBytecode):
- (JSC::ReturnNode::emitBytecode):
- (JSC::WithNode::emitBytecode):
- (JSC::SwitchNode::emitBytecode):
- (JSC::LabelNode::emitBytecode):
- (JSC::ThrowNode::emitBytecode):
- (JSC::TryNode::emitBytecode):
- * parser/Nodes.h:
+ [BREWMP] Implement OwnPtrBrew to make sure BREW instances are freed.
+ https://bugs.webkit.org/show_bug.cgi?id=34518
+
+ Add OwnPtrBrew to release IFile, IFileMgr and IBitmap instances.
+
+ * wtf/brew/OwnPtrBrew.cpp: Added.
+ (WTF::IFileMgr):
+ (WTF::IFile):
+ (WTF::IBitmap):
+ (WTF::freeOwnedPtrBrew):
+ * wtf/brew/OwnPtrBrew.h: Added.
+ (WTF::OwnPtrBrew::OwnPtrBrew):
+ (WTF::OwnPtrBrew::~OwnPtrBrew):
+ (WTF::OwnPtrBrew::get):
+ (WTF::OwnPtrBrew::release):
+ (WTF::OwnPtrBrew::outPtr):
+ (WTF::OwnPtrBrew::set):
+ (WTF::OwnPtrBrew::clear):
+ (WTF::OwnPtrBrew::operator*):
+ (WTF::OwnPtrBrew::operator->):
+ (WTF::OwnPtrBrew::operator!):
+ (WTF::OwnPtrBrew::operator UnspecifiedBoolType):
+ (WTF::OwnPtrBrew::swap):
+ (WTF::swap):
+ (WTF::operator==):
+ (WTF::operator!=):
+ (WTF::getPtr):
-2009-02-26 Gavin Barraclough <barraclough@apple.com>
+2010-02-03 Kwang Yul Seo <skyul@company100.net>
- Reviewed by Geoff Garen.
+ Reviewed by Darin Adler.
- Fix bug #23614. Switches on double precision values were incorrectly
- truncating the scrutinee value. E.g.:
+ Export WTF::fastStrDup symbol
+ https://bugs.webkit.org/show_bug.cgi?id=34526
- switch (1.1) { case 1: print("FAIL"); }
+ * JavaScriptCore.exp:
- Was resulting in FAIL.
+2010-02-03 Kevin Watters <kevinwatters@gmail.com>
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::privateExecute):
- * jit/JITStubs.cpp:
- (JSC::JITStubs::cti_op_switch_imm):
+ Reviewed by Kevin Ollivier.
-2009-02-26 Gavin Barraclough <barraclough@apple.com>
+ [wx] Enable JIT compilation for wx.
+
+ https://bugs.webkit.org/show_bug.cgi?id=34536
- Reviewed by Oliver Hunt.
+ * wtf/Platform.h:
- Integer Immediate representation need not be canonical in x86 JIT code.
- On x86-64 we already have loosened the requirement that the int immediate
- representation in canonical, we should bring x86 into line.
+2010-02-02 Oliver Hunt <oliver@apple.com>
- This patch is a minor (~0.5%) improvement on sunspider & v8-tests, and
- should reduce memory footoprint (reduces JIT code size).
+ Reviewed by Geoffrey Garen.
- * jit/JIT.cpp:
- (JSC::JIT::compileOpStrictEq):
- (JSC::JIT::privateCompileSlowCases):
- * jit/JIT.h:
- (JSC::JIT::emitJumpIfImmediateNumber):
- (JSC::JIT::emitJumpIfNotImmediateNumber):
- * jit/JITArithmetic.cpp:
- (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate):
- (JSC::JIT::compileBinaryArithOp):
+ Crash in CollectorBitmap::get at nbcolympics.com
+ https://bugs.webkit.org/show_bug.cgi?id=34504
-2009-02-26 Carol Szabo <carol.szabo@nokia.com>
+ This was caused by the use of m_offset to determine the offset of
+ a new property into the property storage. This patch corrects
+ the effected cases by incorporating the anonymous slot count. It
+ also removes the duplicate copy of anonymous slot count from the
+ property table as keeping this up to date merely increased the
+ chance of a mismatch. Finally I've added a large number of
+ assertions in an attempt to prevent such a bug from happening
+ again.
- Reviewed by Darin Adler.
+ With the new assertions in place the existing anonymous slot tests
+ all fail without the m_offset fixes.
- https://bugs.webkit.org/show_bug.cgi?id=24099
- ARM Compiler Warnings in pcre_exec.cpp
+ * runtime/PropertyMapHashTable.h:
+ * runtime/Structure.cpp:
+ (JSC::Structure::materializePropertyMap):
+ (JSC::Structure::addPropertyTransitionToExistingStructure):
+ (JSC::Structure::addPropertyTransition):
+ (JSC::Structure::removePropertyTransition):
+ (JSC::Structure::flattenDictionaryStructure):
+ (JSC::Structure::addPropertyWithoutTransition):
+ (JSC::Structure::removePropertyWithoutTransition):
+ (JSC::Structure::copyPropertyTable):
+ (JSC::Structure::get):
+ (JSC::Structure::put):
+ (JSC::Structure::remove):
+ (JSC::Structure::insertIntoPropertyMapHashTable):
+ (JSC::Structure::createPropertyMapHashTable):
+ (JSC::Structure::rehashPropertyMapHashTable):
+ (JSC::Structure::checkConsistency):
- * pcre/pcre_exec.cpp:
- (match):
+2010-02-02 Steve Falkenburg <sfalken@apple.com>
-2009-02-25 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Reviewed by Darin Adler.
- Reviewed by Gavin Barraclough.
+ Copyright year updating for Windows version resources should be automatic
+ https://bugs.webkit.org/show_bug.cgi?id=34503
- Bug 24086: Regression (r40993): WebKit crashes after logging in to lists.zenbe
- <https://bugs.webkit.org/show_bug.cgi?id=24086>
- <rdar://problem/6625111>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
- The numeric sort optimization in r40993 generated bytecode for a function
- without generating JIT code. This breaks an assumption in some parts of
- the JIT's function calling logic that the presence of a CodeBlock implies
- the existence of JIT code.
+2010-02-02 Kwang Yul Seo <skyul@company100.net>
- In order to fix this, we simply generate JIT code whenever we check whether
- a function is a numeric sort function. This only incurs an additional cost
- in the case when the function is a numeric sort function, in which case it
- is not expensive to generate JIT code for it.
+ Reviewed by Eric Seidel.
- * runtime/ArrayPrototype.cpp:
- (JSC::isNumericCompareFunction):
+ [BREWMP] Add dummy main thread functions
+ https://bugs.webkit.org/show_bug.cgi?id=33569
-2009-02-25 Geoffrey Garen <ggaren@apple.com>
+ Add dummy initializeMainThreadPlatform and
+ scheduleDispatchFunctionsOnMainThread.
- Reviewed by Maciej Stachowiak.
-
- Fixed <rdar://problem/6611174> REGRESSION (r36701): Unable to select
- messages on hotmail (24052)
-
- The bug was that for-in enumeration used a cached prototype chain without
- validating that it was up-to-date.
-
- This led me to refactor prototype chain caching so it was easier to work
- with and harder to get wrong.
-
- After a bit of inlining, this patch is performance-neutral on SunSpider
- and the v8 benchmarks.
+ * wtf/brew/MainThreadBrew.cpp: Added.
+ (WTF::initializeMainThreadPlatform):
+ (WTF::scheduleDispatchFunctionsOnMainThread):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::tryCachePutByID):
- (JSC::Interpreter::tryCacheGetByID):
- * jit/JITStubs.cpp:
- (JSC::JITStubs::tryCachePutByID):
- (JSC::JITStubs::tryCacheGetByID):
- (JSC::JITStubs::cti_op_get_by_id_proto_list): Use the new refactored goodness. See
- lines beginning with "-" and smile.
+2010-02-02 Kwang Yul Seo <skyul@company100.net>
- * runtime/JSGlobalObject.h:
- (JSC::Structure::prototypeForLookup): A shout out to const.
+ Reviewed by Darin Adler.
- * runtime/JSPropertyNameIterator.h:
- (JSC::JSPropertyNameIterator::next): We can use a pointer comparison to
- see if our cached structure chain is equal to the object's structure chain,
- since in the case of a cache hit, we share references to the same structure
- chain.
+ Add using WTF::getLocalTime to CurrentTime.h
+ https://bugs.webkit.org/show_bug.cgi?id=34493
- * runtime/Operations.h:
- (JSC::countPrototypeChainEntriesAndCheckForProxies): Use the new refactored
- goodness.
+ * wtf/CurrentTime.h:
- * runtime/PropertyNameArray.h:
- (JSC::PropertyNameArray::PropertyNameArray):
- (JSC::PropertyNameArray::setShouldCache):
- (JSC::PropertyNameArray::shouldCache): Renamed "cacheable" to "shouldCache"
- to communicate that the client is specifying a recommendation, not a
- capability.
-
- * runtime/Structure.cpp:
- (JSC::Structure::Structure): No need to initialize a RefPtr.
- (JSC::Structure::getEnumerablePropertyNames): Moved some code into helper
- functions.
+2010-02-02 Kwang Yul Seo <skyul@company100.net>
- (JSC::Structure::prototypeChain): New centralized accessor for a prototype
- chain. Revalidates on every access, since the objects in the prototype
- chain may have mutated.
+ Reviewed by Eric Seidel.
- (JSC::Structure::isValid): Helper function for revalidating a cached
- prototype chain.
+ [BREWMP] Add HAVE_XXX definitions
+ https://bugs.webkit.org/show_bug.cgi?id=34414
- (JSC::Structure::getEnumerableNamesFromPropertyTable):
- (JSC::Structure::getEnumerableNamesFromClassInfoTable): Factored out of
- getEnumerablePropertyNames.
+ Add HAVE_ERRNO_H=1
- * runtime/Structure.h:
+ * wtf/Platform.h:
- * runtime/StructureChain.cpp:
- (JSC::StructureChain::StructureChain):
- * runtime/StructureChain.h:
- (JSC::StructureChain::create): No need for structureChainsAreEqual, since
- we use pointer equality now. Refactored StructureChain to make a little
- more sense and eliminate special cases for null prototypes.
+2010-02-02 Kwang Yul Seo <skyul@company100.net>
-2009-02-25 Steve Falkenburg <sfalken@apple.com>
+ Reviewed by Eric Seidel.
- Use timeBeginPeriod to enable timing resolution greater than 16ms in command line jsc for Windows.
- Allows more accurate reporting of benchmark times via command line jsc.exe. Doesn't affect WebKit's use of JavaScriptCore.
-
- Reviewed by Adam Roben.
+ [BREWMP] Don't define HAVE_TM_GMTOFF, HAVE_TM_ZONE and HAVE_TIMEGM
+ https://bugs.webkit.org/show_bug.cgi?id=34388
- * jsc.cpp:
- (main):
+ BREWMP does not have these features.
-2009-02-24 Geoffrey Garen <ggaren@apple.com>
+ * wtf/Platform.h:
- Build fix?
+2010-02-02 Kwang Yul Seo <skyul@company100.net>
- * GNUmakefile.am:
+ Reviewed by Eric Seidel.
-2009-02-24 Mark Rowe <mrowe@apple.com>
+ [BREWMP] Define WTF_PLATFORM_BREWMP=1 when BUILDING_BREWMP is defined
+ https://bugs.webkit.org/show_bug.cgi?id=34386
- Reviewed by Oliver Hunt.
+ Define WTF_PLATFORM_BREWMP=1 so that PLATFORM(BREWMP) guard can be used.
- <rdar://problem/6259220> Rename AVAILABLE_AFTER_WEBKIT_VERSION_3_1 (etc.) to match the other macros
+ * wtf/Platform.h:
- * API/JSBasePrivate.h:
- * API/JSContextRef.h:
- * API/JSObjectRef.h:
- * API/WebKitAvailability.h:
+2010-02-01 Kent Tamura <tkent@chromium.org>
-2009-02-23 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Darin Adler.
- Reviewed by Sam Weinig.
+ Date.UTC() should apply TimeClip operation.
+ https://bugs.webkit.org/show_bug.cgi?id=34461
- Next step in splitting JIT functionality out of the Interpreter class:
- Moved vptr storage from Interpreter to JSGlobalData, so it could be shared
- between Interpreter and JITStubs, and moved the *Trampoline JIT stubs
- into the JITStubs class. Also added a VPtrSet class to encapsulate vptr
- hacks during JSGlobalData initialization.
-
- SunSpider says 0.4% faster. Meh.
+ ECMAScript 5 15.9.4.3:
+ > 9 Return TimeClip(MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli))).
- * JavaScriptCore.exp:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::Interpreter):
- (JSC::Interpreter::tryCacheGetByID):
- (JSC::Interpreter::privateExecute):
- * interpreter/Interpreter.h:
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- (JSC::JIT::compileCTIMachineTrampolines):
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCall):
- (JSC::JIT::compileOpCallSlowCase):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::privateCompilePatchGetArrayLength):
- * jit/JITStubs.cpp:
- (JSC::JITStubs::JITStubs):
- (JSC::JITStubs::tryCacheGetByID):
- (JSC::JITStubs::cti_vm_dontLazyLinkCall):
- (JSC::JITStubs::cti_op_get_by_val):
- (JSC::JITStubs::cti_op_get_by_val_byte_array):
- (JSC::JITStubs::cti_op_put_by_val):
- (JSC::JITStubs::cti_op_put_by_val_array):
- (JSC::JITStubs::cti_op_put_by_val_byte_array):
- (JSC::JITStubs::cti_op_is_string):
- * jit/JITStubs.h:
- (JSC::JITStubs::ctiArrayLengthTrampoline):
- (JSC::JITStubs::ctiStringLengthTrampoline):
- (JSC::JITStubs::ctiVirtualCallPreLink):
- (JSC::JITStubs::ctiVirtualCallLink):
- (JSC::JITStubs::ctiVirtualCall):
- * runtime/ArrayPrototype.cpp:
- (JSC::arrayProtoFuncPop):
- (JSC::arrayProtoFuncPush):
- * runtime/FunctionPrototype.cpp:
- (JSC::functionProtoFuncApply):
- * runtime/JSArray.h:
- (JSC::isJSArray):
- * runtime/JSByteArray.h:
- (JSC::asByteArray):
- (JSC::isJSByteArray):
- * runtime/JSCell.h:
- * runtime/JSFunction.h:
- * runtime/JSGlobalData.cpp:
- (JSC::VPtrSet::VPtrSet):
- (JSC::JSGlobalData::JSGlobalData):
- (JSC::JSGlobalData::create):
- (JSC::JSGlobalData::sharedInstance):
- * runtime/JSGlobalData.h:
- * runtime/JSString.h:
- (JSC::isJSString):
- * runtime/Operations.h:
- (JSC::jsLess):
- (JSC::jsLessEq):
- * wrec/WREC.cpp:
- (JSC::WREC::Generator::compileRegExp):
+ * runtime/DateConstructor.cpp:
+ (JSC::dateUTC): Calls WTF::timeClip().
-2009-02-23 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
+2010-02-01 Kent Tamura <tkent@chromium.org>
- Reviewed by Oliver Hunt.
+ Reviewed by Darin Adler.
- Bug 23787: Allow JIT to generate SSE2 code if using GCC
- <https://bugs.webkit.org/show_bug.cgi?id=23787>
+ Fix a bug that Math.round() retunrs incorrect results for huge integers
+ https://bugs.webkit.org/show_bug.cgi?id=34462
- GCC version of the cpuid check.
+ * runtime/MathObject.cpp:
+ (JSC::mathProtoFuncRound): Avoid "arg + 0.5".
- * jit/JITArithmetic.cpp:
- (JSC::isSSE2Present): previous assembly code fixed.
+2010-02-01 Kwang Yul Seo <skyul@company100.net>
-2009-02-23 David Levin <levin@chromium.org>
+ Reviewed by Eric Seidel.
- Reviewed by Alexey Proskuryakov.
+ [BREWMP] Port WTF's currentTime
+ https://bugs.webkit.org/show_bug.cgi?id=33567
- Bug 24047: Need to simplify nested if's in WorkerRunLoop::runInMode
- <https://bugs.webkit.org/show_bug.cgi?id=24047>
+ Combine GETUTCSECONDS and GETTIMEMS to calculate the number
+ of milliseconds since 1970/01/01 00:00:00 UTC.
- * wtf/MessageQueue.h:
- (WTF::MessageQueue::infiniteTime):
- Allows for one to call waitForMessageFilteredWithTimeout and wait forever.
+ * wtf/CurrentTime.cpp:
+ (WTF::currentTime):
- (WTF::MessageQueue::alwaysTruePredicate):
- (WTF::MessageQueue::waitForMessage):
- Made waitForMessage call waitForMessageFilteredWithTimeout, so that there is less
- duplicate code.
+2010-02-01 Patrick Gansterer <paroga@paroga.com>
- (WTF::MessageQueue::waitForMessageFilteredWithTimeout):
+ Reviewed by Darin Adler.
- * wtf/ThreadingQt.cpp:
- (WTF::ThreadCondition::timedWait):
- * wtf/ThreadingWin.cpp:
- (WTF::ThreadCondition::timedWait):
- Made these two implementations consistent with the pthread and gtk implementations.
- Currently, the time calculations would overflow when passed large values.
+ [Qt] WinCE buildfix after r52729 and fix for Q_BIG_ENDIAN typo.
+ https://bugs.webkit.org/show_bug.cgi?id=34378
-2009-02-23 Jeremy Moskovich <jeremy@chromium.org>
+ * wtf/Platform.h:
- Reviewed by Adam Roben.
+2010-02-01 Oliver Hunt <oliver@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=24096
- PLATFORM(MAC)->PLATFORM(CF) since we want to use the CF functions in Chrome on OS X.
+ Reviewed by Gavin Barraclough.
- * wtf/CurrentTime.cpp:
+ Structure not accounting for anonymous slots when computing property storage size
+ https://bugs.webkit.org/show_bug.cgi?id=34441
-2009-02-22 Geoffrey Garen <ggaren@apple.com>
+ Previously any Structure with anonymous storage would have a property map, so we
+ were only including anonymous slot size if there was a property map. Given this
+ is no longer the case we should always include the anonymous slot count in the
+ property storage size.
- Build fix?
+ * runtime/Structure.h:
+ (JSC::Structure::propertyStorageSize):
- * GNUmakefile.am:
+2010-02-01 Oliver Hunt <oliver@apple.com>
-2009-02-22 Geoffrey Garen <ggaren@apple.com>
+ Windows build fix, update exports file (again)
- Build fix.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
- * GNUmakefile.am:
+2010-02-01 Oliver Hunt <oliver@apple.com>
-2009-02-22 Geoffrey Garen <ggaren@apple.com>
+ Windows build fix, update exports file
- Reviewed by Sam Weinig.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
- Next step in splitting JIT functionality out of the Interpreter class:
- Created a JITStubs class and renamed Interpreter::cti_* to JITStubs::cti_*.
-
- Also, moved timeout checking into its own class, located in JSGlobalData,
- so both the Interpreter and the JIT could have access to it.
+2010-01-31 Oliver Hunt <oliver@apple.com>
- * JavaScriptCore.exp:
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * interpreter/CallFrame.h:
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::Interpreter):
- (JSC::Interpreter::privateExecute):
- * interpreter/Interpreter.h:
- * interpreter/Register.h:
- * jit/JIT.cpp:
- (JSC::):
- (JSC::JIT::emitTimeoutCheck):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileFastArithSlow_op_lshift):
- (JSC::JIT::compileFastArithSlow_op_rshift):
- (JSC::JIT::compileFastArithSlow_op_bitand):
- (JSC::JIT::compileFastArithSlow_op_mod):
- (JSC::JIT::compileFastArith_op_mod):
- (JSC::JIT::compileFastArithSlow_op_post_inc):
- (JSC::JIT::compileFastArithSlow_op_post_dec):
- (JSC::JIT::compileFastArithSlow_op_pre_inc):
- (JSC::JIT::compileFastArithSlow_op_pre_dec):
- (JSC::JIT::compileFastArith_op_add):
- (JSC::JIT::compileFastArith_op_mul):
- (JSC::JIT::compileFastArith_op_sub):
- (JSC::JIT::compileBinaryArithOpSlowCase):
- (JSC::JIT::compileFastArithSlow_op_add):
- (JSC::JIT::compileFastArithSlow_op_mul):
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCall):
- (JSC::JIT::compileOpCallSlowCase):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compilePutByIdHotPath):
- (JSC::JIT::compileGetByIdSlowCase):
- (JSC::JIT::compilePutByIdSlowCase):
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::patchGetByIdSelf):
- (JSC::JIT::patchPutByIdReplace):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- (JSC::JIT::privateCompileGetByIdSelf):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdChain):
- (JSC::JIT::privateCompilePutByIdReplace):
- * jit/JITStubs.cpp:
- (JSC::JITStubs::tryCachePutByID):
- (JSC::JITStubs::tryCacheGetByID):
- (JSC::JITStubs::cti_op_convert_this):
- (JSC::JITStubs::cti_op_end):
- (JSC::JITStubs::cti_op_add):
- (JSC::JITStubs::cti_op_pre_inc):
- (JSC::JITStubs::cti_timeout_check):
- (JSC::JITStubs::cti_register_file_check):
- (JSC::JITStubs::cti_op_loop_if_less):
- (JSC::JITStubs::cti_op_loop_if_lesseq):
- (JSC::JITStubs::cti_op_new_object):
- (JSC::JITStubs::cti_op_put_by_id_generic):
- (JSC::JITStubs::cti_op_get_by_id_generic):
- (JSC::JITStubs::cti_op_put_by_id):
- (JSC::JITStubs::cti_op_put_by_id_second):
- (JSC::JITStubs::cti_op_put_by_id_fail):
- (JSC::JITStubs::cti_op_get_by_id):
- (JSC::JITStubs::cti_op_get_by_id_second):
- (JSC::JITStubs::cti_op_get_by_id_self_fail):
- (JSC::JITStubs::cti_op_get_by_id_proto_list):
- (JSC::JITStubs::cti_op_get_by_id_proto_list_full):
- (JSC::JITStubs::cti_op_get_by_id_proto_fail):
- (JSC::JITStubs::cti_op_get_by_id_array_fail):
- (JSC::JITStubs::cti_op_get_by_id_string_fail):
- (JSC::JITStubs::cti_op_instanceof):
- (JSC::JITStubs::cti_op_del_by_id):
- (JSC::JITStubs::cti_op_mul):
- (JSC::JITStubs::cti_op_new_func):
- (JSC::JITStubs::cti_op_call_JSFunction):
- (JSC::JITStubs::cti_op_call_arityCheck):
- (JSC::JITStubs::cti_vm_dontLazyLinkCall):
- (JSC::JITStubs::cti_vm_lazyLinkCall):
- (JSC::JITStubs::cti_op_push_activation):
- (JSC::JITStubs::cti_op_call_NotJSFunction):
- (JSC::JITStubs::cti_op_create_arguments):
- (JSC::JITStubs::cti_op_create_arguments_no_params):
- (JSC::JITStubs::cti_op_tear_off_activation):
- (JSC::JITStubs::cti_op_tear_off_arguments):
- (JSC::JITStubs::cti_op_profile_will_call):
- (JSC::JITStubs::cti_op_profile_did_call):
- (JSC::JITStubs::cti_op_ret_scopeChain):
- (JSC::JITStubs::cti_op_new_array):
- (JSC::JITStubs::cti_op_resolve):
- (JSC::JITStubs::cti_op_construct_JSConstruct):
- (JSC::JITStubs::cti_op_construct_NotJSConstruct):
- (JSC::JITStubs::cti_op_get_by_val):
- (JSC::JITStubs::cti_op_get_by_val_byte_array):
- (JSC::JITStubs::cti_op_resolve_func):
- (JSC::JITStubs::cti_op_sub):
- (JSC::JITStubs::cti_op_put_by_val):
- (JSC::JITStubs::cti_op_put_by_val_array):
- (JSC::JITStubs::cti_op_put_by_val_byte_array):
- (JSC::JITStubs::cti_op_lesseq):
- (JSC::JITStubs::cti_op_loop_if_true):
- (JSC::JITStubs::cti_op_negate):
- (JSC::JITStubs::cti_op_resolve_base):
- (JSC::JITStubs::cti_op_resolve_skip):
- (JSC::JITStubs::cti_op_resolve_global):
- (JSC::JITStubs::cti_op_div):
- (JSC::JITStubs::cti_op_pre_dec):
- (JSC::JITStubs::cti_op_jless):
- (JSC::JITStubs::cti_op_not):
- (JSC::JITStubs::cti_op_jtrue):
- (JSC::JITStubs::cti_op_post_inc):
- (JSC::JITStubs::cti_op_eq):
- (JSC::JITStubs::cti_op_lshift):
- (JSC::JITStubs::cti_op_bitand):
- (JSC::JITStubs::cti_op_rshift):
- (JSC::JITStubs::cti_op_bitnot):
- (JSC::JITStubs::cti_op_resolve_with_base):
- (JSC::JITStubs::cti_op_new_func_exp):
- (JSC::JITStubs::cti_op_mod):
- (JSC::JITStubs::cti_op_less):
- (JSC::JITStubs::cti_op_neq):
- (JSC::JITStubs::cti_op_post_dec):
- (JSC::JITStubs::cti_op_urshift):
- (JSC::JITStubs::cti_op_bitxor):
- (JSC::JITStubs::cti_op_new_regexp):
- (JSC::JITStubs::cti_op_bitor):
- (JSC::JITStubs::cti_op_call_eval):
- (JSC::JITStubs::cti_op_throw):
- (JSC::JITStubs::cti_op_get_pnames):
- (JSC::JITStubs::cti_op_next_pname):
- (JSC::JITStubs::cti_op_push_scope):
- (JSC::JITStubs::cti_op_pop_scope):
- (JSC::JITStubs::cti_op_typeof):
- (JSC::JITStubs::cti_op_is_undefined):
- (JSC::JITStubs::cti_op_is_boolean):
- (JSC::JITStubs::cti_op_is_number):
- (JSC::JITStubs::cti_op_is_string):
- (JSC::JITStubs::cti_op_is_object):
- (JSC::JITStubs::cti_op_is_function):
- (JSC::JITStubs::cti_op_stricteq):
- (JSC::JITStubs::cti_op_nstricteq):
- (JSC::JITStubs::cti_op_to_jsnumber):
- (JSC::JITStubs::cti_op_in):
- (JSC::JITStubs::cti_op_push_new_scope):
- (JSC::JITStubs::cti_op_jmp_scopes):
- (JSC::JITStubs::cti_op_put_by_index):
- (JSC::JITStubs::cti_op_switch_imm):
- (JSC::JITStubs::cti_op_switch_char):
- (JSC::JITStubs::cti_op_switch_string):
- (JSC::JITStubs::cti_op_del_by_val):
- (JSC::JITStubs::cti_op_put_getter):
- (JSC::JITStubs::cti_op_put_setter):
- (JSC::JITStubs::cti_op_new_error):
- (JSC::JITStubs::cti_op_debug):
- (JSC::JITStubs::cti_vm_throw):
- * jit/JITStubs.h:
- (JSC::):
- * runtime/JSFunction.h:
- * runtime/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- * runtime/JSGlobalData.h:
- * runtime/JSGlobalObject.cpp:
- * runtime/JSGlobalObject.h:
- * runtime/TimeoutChecker.cpp: Copied from interpreter/Interpreter.cpp.
- (JSC::TimeoutChecker::TimeoutChecker):
- (JSC::TimeoutChecker::reset):
- (JSC::TimeoutChecker::didTimeOut):
- * runtime/TimeoutChecker.h: Copied from interpreter/Interpreter.h.
- (JSC::TimeoutChecker::setTimeoutInterval):
- (JSC::TimeoutChecker::ticksUntilNextCheck):
- (JSC::TimeoutChecker::start):
- (JSC::TimeoutChecker::stop):
+ Reviewed by Maciej Stachowiak.
-2009-02-20 Gustavo Noronha Silva <gns@gnome.org>
+ JSC is failing to propagate anonymous slot count on some transitions
+ https://bugs.webkit.org/show_bug.cgi?id=34321
- Unreviewed build fix after r41100.
+ Remove secondary Structure constructor, and make Structure store a copy
+ of the number of anonymous slots directly so saving an immediate allocation
+ of a property map for all structures with anonymous storage, which also
+ avoids the leaked property map on new property transition in the original
+ version of this patch.
- * GNUmakefile.am:
+ We need to propagate the the anonymous slot count otherwise we can end up
+ with a structure recording incorrect information about the available and
+ needed space for property storage, or alternatively incorrectly reusing
+ some slots.
-2009-02-20 Oliver Hunt <oliver@apple.com>
+ * JavaScriptCore.exp:
+ * runtime/Structure.cpp:
+ (JSC::Structure::Structure):
+ (JSC::Structure::materializePropertyMap):
+ (JSC::Structure::addPropertyTransition):
+ (JSC::Structure::changePrototypeTransition):
+ (JSC::Structure::despecifyFunctionTransition):
+ (JSC::Structure::getterSetterTransition):
+ (JSC::Structure::toDictionaryTransition):
+ (JSC::Structure::flattenDictionaryStructure):
+ (JSC::Structure::copyPropertyTable):
+ (JSC::Structure::put):
+ (JSC::Structure::remove):
+ (JSC::Structure::insertIntoPropertyMapHashTable):
+ (JSC::Structure::createPropertyMapHashTable):
+ * runtime/Structure.h:
+ (JSC::Structure::create):
+ (JSC::Structure::hasAnonymousSlots):
+ (JSC::Structure::anonymousSlotCount):
- Reviewed by Mark Rowe.
+2010-01-31 Patrick Gansterer <paroga@paroga.com>
- <rdar://problem/6606660> 2==null returns true in 64bit jit
+ Reviewed by Darin Adler.
- Code for op_eq_null and op_neq_null was incorrectly performing
- a 32bit compare, which truncated the type tag from an integer
- immediate, leading to incorrect behaviour.
+ Buildfix for WinCE + style fixes (TLS_OUT_OF_INDEXES is not defined).
+ https://bugs.webkit.org/show_bug.cgi?id=34380
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::setPtr):
- * assembler/MacroAssemblerX86_64.h:
- (JSC::MacroAssemblerX86_64::setPtr):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
+ * wtf/ThreadSpecific.h:
-2009-02-19 Geoffrey Garen <ggaren@apple.com>
+2010-01-31 Kent Tamura <tkent@chromium.org>
- Reviewed by Gavin Barraclough.
-
- First step in splitting JIT functionality out of the Interpreter class:
- Created JITStubs.h/.cpp, and moved Interpreter::cti_* into JITStubs.cpp.
-
- Functions that the Interpreter and JITStubs share moved to Operations.h/.cpp.
+ Reviewed by Darin Adler.
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::resolveBase):
- (JSC::Interpreter::checkTimeout):
- (JSC::Interpreter::privateExecute):
- * interpreter/Interpreter.h:
- * jit/JITStubs.cpp: Copied from interpreter/Interpreter.cpp.
- (JSC::Interpreter::cti_op_resolve_base):
- * jit/JITStubs.h: Copied from interpreter/Interpreter.h.
- * runtime/Operations.cpp:
- (JSC::jsAddSlowCase):
- (JSC::jsTypeStringForValue):
- (JSC::jsIsObjectType):
- (JSC::jsIsFunctionType):
- * runtime/Operations.h:
- (JSC::jsLess):
- (JSC::jsLessEq):
- (JSC::jsAdd):
- (JSC::cachePrototypeChain):
- (JSC::countPrototypeChainEntriesAndCheckForProxies):
- (JSC::resolveBase):
+ [Windows] Fix a bug of round() with huge integral numbers
+ https://bugs.webkit.org/show_bug.cgi?id=34297
-2009-02-19 Gavin Barraclough <barraclough@apple.com>
+ Fix a bug that round() for huge integral numbers returns incorrect
+ results. For example, round(8639999913600001) returns
+ 8639999913600002 without this change though the double type can
+ represent 8639999913600001 precisely.
- Reviewed by Oliver Hunt.
+ Math.round() of JavaScript has a similar problem. But this change
+ doesn't fix it because Math.round() doesn't use round() of
+ MathExtra.h.
- Fix for x86-64. Where the JavaScriptCore text segment lies outside
- a 2gb range of the heap containing JIT generated code, callbacks
- from JIT code to the stub functions in Interpreter will be incorrectly
- linked.
+ * wtf/MathExtras.h:
+ (round): Avoid to do "num + 0.5" or "num - 0.5".
+ (roundf): Fixed similarly.
+ (llround): Calls round().
+ (llroundf): Calls roundf().
+ (lround): Calls round().
+ (lroundf): Calls roundf().
- No performance impact on Sunspider, 1% regression on v8-tests,
- due to a 3% regression on richards.
+2010-01-29 Mark Rowe <mrowe@apple.com>
- * assembler/AbstractMacroAssembler.h:
- (JSC::AbstractMacroAssembler::Call::Call):
- (JSC::AbstractMacroAssembler::Jump::link):
- (JSC::AbstractMacroAssembler::Jump::linkTo):
- (JSC::AbstractMacroAssembler::CodeLocationJump::relink):
- (JSC::AbstractMacroAssembler::CodeLocationCall::relink):
- (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToFunction):
- (JSC::AbstractMacroAssembler::PatchBuffer::link):
- (JSC::AbstractMacroAssembler::PatchBuffer::linkTailRecursive):
- (JSC::AbstractMacroAssembler::differenceBetween):
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::tailRecursiveCall):
- (JSC::MacroAssembler::makeTailRecursiveCall):
- * assembler/MacroAssemblerX86.h:
- (JSC::MacroAssemblerX86::call):
- * assembler/MacroAssemblerX86Common.h:
- * assembler/MacroAssemblerX86_64.h:
- (JSC::MacroAssemblerX86_64::call):
- (JSC::MacroAssemblerX86_64::moveWithPatch):
- (JSC::MacroAssemblerX86_64::branchPtrWithPatch):
- (JSC::MacroAssemblerX86_64::storePtrWithPatch):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::jmp_r):
- (JSC::X86Assembler::linkJump):
- (JSC::X86Assembler::patchJump):
- (JSC::X86Assembler::patchCall):
- (JSC::X86Assembler::linkCall):
- (JSC::X86Assembler::patchAddress):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::tryCTICachePutByID):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- * jit/JITArithmetic.cpp:
- (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate):
- (JSC::JIT::compileBinaryArithOp):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::privateCompileGetByIdSelf):
- (JSC::JIT::privateCompilePutByIdReplace):
+ Sort Xcode projects.
-2009-02-18 Geoffrey Garen <ggaren@apple.com>
+ * JavaScriptCore.xcodeproj/project.pbxproj:
- Reviewed by Oliver Hunt.
-
- Simplified .call and .apply in preparation for optimizing them. Also,
- a little cleanup.
+2010-01-29 Mark Rowe <mrowe@apple.com>
- * runtime/FunctionPrototype.cpp:
- (JSC::functionProtoFuncApply):
- (JSC::functionProtoFuncCall): No need to do any specific conversion on
- 'this' -- op_convert_this will do it if necessary.
+ Fix the Mac build.
- * runtime/JSImmediate.cpp:
- (JSC::JSImmediate::toThisObject): Slightly relaxed the rules on
- toThisObject to allow for 'undefined', which can be passed through
- .call and .apply.
+ Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional".
-2009-02-19 David Levin <levin@chromium.org>
+ As the comment in FeatureDefines.xcconfig notes, the list of feature defines
+ needs to be kept in sync across the various files. The default values also
+ need to be kept in sync between these files and build-webkit.
- Reviewed by Alexey Proskuryakov.
+ * Configurations/FeatureDefines.xcconfig:
- Bug 23976: MessageQueue needs a way to wait for a message that satisfies an arbitrary criteria.
- <https://bugs.webkit.org/show_bug.cgi?id=23976>
+2010-01-29 Simon Hausmann <simon.hausmann@nokia.com>
- * wtf/Deque.h:
- (WTF::Deque<T>::findIf):
- * wtf/MessageQueue.h:
- (WTF::MessageQueue<T>::waitForMessageFiltered):
+ Rubber-stamped by Maciej Stachowiak.
-2009-02-18 David Levin <levin@chromium.org>
+ Fix the ARM build.
- Reviewed by Alexey Proskuryakov.
+ * runtime/JSNumberCell.h:
+ (JSC::JSNumberCell::createStructure): Call the right Structure::create overload.
- Bug 23974: Deque::Remove would be a useful method.
- <https://bugs.webkit.org/show_bug.cgi?id=23974>
+2010-01-28 Kevin Ollivier <kevino@theolliviers.com>
- Add Deque::remove and DequeIteratorBase<T>::operator=.
+ [wx] Build fix for MSW, use ThreadingWin.cpp as the Windows pthreads implementation
+ implements pthread_t in a way that makes it impossible to check its validity,
+ which is needed by ThreadingPthreads.cpp.
- Why was operator= added? Every concrete iterator (DequeIterator..DequeConstReverseIterator)
- was calling DequeIteratorBase::assign(), which called Base::operator=(). Base::operator=()
- was not implemented. This went unnoticed because the iterator copy code has been unused.
+ * wscript:
- * wtf/Deque.h:
- (WTF::Deque<T>::remove):
- (WTF::DequeIteratorBase<T>::removeFromIteratorsList):
- (WTF::DequeIteratorBase<T>::operator=):
- (WTF::DequeIteratorBase<T>::~DequeIteratorBase):
+2010-01-28 Oliver Hunt <oliver@apple.com>
-2009-02-18 Gustavo Noronha Silva <gns@gnome.org>
+ Reviewed by Gavin Barraclough.
- Reviewed by Holger Freyther.
+ DOM Objects shouldn't all require custom mark functions
+ https://bugs.webkit.org/show_bug.cgi?id=34291
- Fix symbols.filter location, and add other missing files to the
- autotools build, so that make dist works.
+ Make getAnonymousValue const-friendly
- * GNUmakefile.am:
+ * runtime/JSObject.h:
+ (JSC::JSObject::getAnonymousValue):
-2009-02-17 Geoffrey Garen <ggaren@apple.com>
+2010-01-28 Oliver Hunt <oliver@apple.com>
- Reviewed by Sam Weinig.
-
- Fixed failure in js1_5/Regress/regress-168347.js, as seen on the Oliver
- bot.
-
- Technically, both behaviors are OK, but we might as well keep this test
- passing.
+ Reviewed by Gavin Barraclough.
- * runtime/FunctionPrototype.cpp:
- (JSC::insertSemicolonIfNeeded): No need to add a trailing semicolon
- after a trailing '}', since '}' ends a block, indicating the end of a
- statement.
+ Simplify anonymous slot implementation
+ https://bugs.webkit.org/show_bug.cgi?id=34282
-2009-02-17 Geoffrey Garen <ggaren@apple.com>
+ A class must now specify the number of slots it needs at construction time
+ rather than later on with a transition. This makes many things simpler,
+ we no longer need to need an additional transition on object creation to
+ add the anonymous slots, and we remove the need for a number of transition
+ type checks.
- Build fix.
+ * API/JSCallbackConstructor.h:
+ (JSC::JSCallbackConstructor::createStructure):
+ * API/JSCallbackFunction.h:
+ (JSC::JSCallbackFunction::createStructure):
+ * API/JSCallbackObject.h:
+ (JSC::JSCallbackObject::createStructure):
+ * JavaScriptCore.exp:
+ * debugger/DebuggerActivation.h:
+ (JSC::DebuggerActivation::createStructure):
+ * runtime/Arguments.h:
+ (JSC::Arguments::createStructure):
+ * runtime/BooleanObject.h:
+ (JSC::BooleanObject::createStructure):
+ * runtime/DateInstance.h:
+ (JSC::DateInstance::createStructure):
+ * runtime/DatePrototype.h:
+ (JSC::DatePrototype::createStructure):
+ * runtime/FunctionPrototype.h:
+ (JSC::FunctionPrototype::createStructure):
+ * runtime/GetterSetter.h:
+ (JSC::GetterSetter::createStructure):
+ * runtime/GlobalEvalFunction.h:
+ (JSC::GlobalEvalFunction::createStructure):
+ * runtime/InternalFunction.h:
+ (JSC::InternalFunction::createStructure):
+ * runtime/JSAPIValueWrapper.h:
+ (JSC::JSAPIValueWrapper::createStructure):
+ * runtime/JSActivation.h:
+ (JSC::JSActivation::createStructure):
+ * runtime/JSArray.h:
+ (JSC::JSArray::createStructure):
+ * runtime/JSByteArray.cpp:
+ (JSC::JSByteArray::createStructure):
+ * runtime/JSCell.h:
+ (JSC::JSCell::createDummyStructure):
+ * runtime/JSFunction.h:
+ (JSC::JSFunction::createStructure):
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::createStructure):
+ * runtime/JSNotAnObject.h:
+ (JSC::JSNotAnObject::createStructure):
+ * runtime/JSONObject.h:
+ (JSC::JSONObject::createStructure):
+ * runtime/JSObject.h:
+ (JSC::JSObject::createStructure):
+ (JSC::JSObject::putAnonymousValue):
+ (JSC::JSObject::getAnonymousValue):
+ * runtime/JSPropertyNameIterator.h:
+ (JSC::JSPropertyNameIterator::createStructure):
+ * runtime/JSStaticScopeObject.h:
+ (JSC::JSStaticScopeObject::createStructure):
+ * runtime/JSString.h:
+ (JSC::Fiber::createStructure):
+ * runtime/JSVariableObject.h:
+ (JSC::JSVariableObject::createStructure):
+ * runtime/JSWrapperObject.h:
+ (JSC::JSWrapperObject::createStructure):
+ (JSC::JSWrapperObject::JSWrapperObject):
+ * runtime/MathObject.h:
+ (JSC::MathObject::createStructure):
+ * runtime/NumberConstructor.h:
+ (JSC::NumberConstructor::createStructure):
+ * runtime/NumberObject.h:
+ (JSC::NumberObject::createStructure):
+ * runtime/RegExpConstructor.h:
+ (JSC::RegExpConstructor::createStructure):
+ * runtime/RegExpObject.h:
+ (JSC::RegExpObject::createStructure):
+ * runtime/StringObject.h:
+ (JSC::StringObject::createStructure):
+ * runtime/StringObjectThatMasqueradesAsUndefined.h:
+ (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
+ * runtime/Structure.cpp:
+ (JSC::Structure::~Structure):
+ (JSC::Structure::materializePropertyMap):
+ * runtime/Structure.h:
+ (JSC::Structure::create):
+ (JSC::Structure::anonymousSlotCount):
+ * runtime/StructureTransitionTable.h:
- * runtime/FunctionPrototype.cpp:
+2010-01-27 Oliver Hunt <oliver@apple.com>
-2009-02-17 Oliver Hunt <oliver@apple.com>
+ Windows build fix.
- Reviewed by Geoff Garen.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
- Add assertion to guard against oversized pc relative calls.
+2010-01-27 Oliver Hunt <oliver@apple.com>
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::link):
+ Reviewed by Maciej Stachowiak.
-2009-02-17 Geoffrey Garen <ggaren@apple.com>
+ MessageEvent.data should deserialize in the context of the MessageEvent's global object
+ https://bugs.webkit.org/show_bug.cgi?id=34227
- Reviewed by Sam Weinig.
-
- Fixed <rdar://problem/6595040> REGRESSION: http://www.amnestyusa.org/
- fails to load.
-
- amnestyusa.org uses the Optimist JavaScript library, which adds event
- listeners by concatenating string-ified functions. This is only sure to
- be syntactically valid if the string-ified functions end in semicolons.
+ Add logic to allow us to create an Object, Array, or Date instance
+ so we can create them in the context of a specific global object,
+ rather than just using the current lexical global object.
- * parser/Lexer.cpp:
- (JSC::Lexer::isWhiteSpace):
- * parser/Lexer.h:
- (JSC::Lexer::isWhiteSpace):
- (JSC::Lexer::isLineTerminator): Added some helper functions for examining
- whitespace.
+ * JavaScriptCore.exp:
+ * runtime/DateInstance.cpp:
+ (JSC::DateInstance::DateInstance):
+ * runtime/DateInstance.h:
+ * runtime/JSGlobalObject.h:
+ (JSC::constructEmptyObject):
+ (JSC::constructEmptyArray):
- * runtime/FunctionPrototype.cpp:
- (JSC::appendSemicolonIfNeeded):
- (JSC::functionProtoFuncToString): When string-ifying a function, insert
- a semicolon in the last non-whitespace position, if one doesn't already exist.
+2010-01-27 Alexey Proskuryakov <ap@apple.com>
-2009-02-16 Oliver Hunt <oliver@apple.com>
+ Reviewed by Darin Adler.
- Reviewed by NOBODY (Build fix).
+ https://bugs.webkit.org/show_bug.cgi?id=34150
+ WebKit needs a mechanism to catch stale HashMap entries
- Roll out r41022 as it breaks qt and gtk builds
+ It is very difficult to catch stale pointers that are HashMap keys - since a pointer's hash
+ is just its value, it is very unlikely that any observable problem is reproducible.
- * jit/JITArithmetic.cpp:
- (JSC::isSSE2Present):
+ This extends hash table consistency checks to check that pointers are referencing allocated
+ memory blocks, and makes it possible to invoke the checks explicitly (it is not feasible
+ to enable CHECK_HASHTABLE_CONSISTENCY by default, because that affects performance too much).
-2009-02-16 Sam Weinig <sam@webkit.org>
+ * wtf/HashMap.h: (WTF::::checkConsistency): Call through to HashTable implementation. We can
+ add similar calls to HashSet and HashCountedSet, but I haven't seen hard to debug problems
+ with those yet.
- Reviewed by Geoffrey Garen.
+ * wtf/HashSet.h: (WTF::::remove): The version of checkTableConsistency that's guarded by
+ CHECK_HASHTABLE_CONSISTENCY is now called internalCheckTableConsistency().
- Fix for <rdar://problem/6468156>
- REGRESSION (r36779): Adding link, images, flash in TinyMCE blocks entire page (21382)
+ * wtf/HashTable.h:
+ (WTF::HashTable::internalCheckTableConsistency):
+ (WTF::HashTable::internalCheckTableConsistencyExceptSize):
+ (WTF::HashTable::checkTableConsistencyExceptSize):
+ Expose checkTableConsistency() even if CHECK_HASHTABLE_CONSISTENCY is off.
+ (WTF::::add): Updated for checkTableConsistency renaming.
+ (WTF::::addPassingHashCode): Ditto.
+ (WTF::::removeAndInvalidate): Ditto.
+ (WTF::::remove): Ditto.
+ (WTF::::rehash): Ditto.
+ (WTF::::checkTableConsistency): The assertion for !shouldExpand() was not correct - this
+ function returns true for tables with m_table == 0.
+ (WTF::::checkTableConsistencyExceptSize): Call checkValueConsistency for key. Potentially,
+ we could do the same for values.
- No performance regression.
+ * wtf/HashTraits.h:
+ (WTF::GenericHashTraits::checkValueConsistency): An empty function that can be overridden
+ to add checks. Currently, the only override is for pointer hashes.
- * runtime/Arguments.cpp:
- (JSC::Arguments::fillArgList): Add codepath for when the "length" property has been
- overridden.
+ * wtf/RefPtrHashMap.h: (WTF::::remove): Updated for checkTableConsistency renaming.
-2009-02-16 Mark Rowe <mrowe@apple.com>
+2010-01-27 Anton Muhin <antonm@chromium.org>
- Build fix.
+ Reviewed by Darin Adler.
- * wtf/FastMalloc.cpp:
- (WTF::TCMallocStats::):
- (WTF::TCMallocStats::FastMallocZone::FastMallocZone):
+ Remove trailing \ from inline function code
+ https://bugs.webkit.org/show_bug.cgi?id=34223
-2009-02-16 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
+ * assembler/ARMv7Assembler.h:
+ (JSC::ARMThumbImmediate::countLeadingZerosPartial):
- Reviewed by Oliver Hunt.
+2010-01-27 Kwang Yul Seo <skyul@company100.net>
- Bug 23787: Allow JIT to generate SSE2 code if using GCC
- <https://bugs.webkit.org/show_bug.cgi?id=23787>
+ Reviewed by Eric Seidel.
- GCC version of the cpuid check.
+ [BREWMP] Port WTF's randomNumber
+ https://bugs.webkit.org/show_bug.cgi?id=33566
- * jit/JITArithmetic.cpp:
- (JSC::isSSE2Present): GCC assembly code added.
- 6.6% progression on x86 Linux with JIT and WREC on SunSpider if using SSE2 capable machine.
+ Use GETRAND to generate 4 byte random byte sequence to implement
+ weakRandomNumber. Create a secure random number generator with
+ AEECLSID_RANDOM to implement randomNumber.
-2009-02-13 Adam Treat <adam.treat@torchmobile.com>
+ * wtf/RandomNumber.cpp:
+ (WTF::weakRandomNumber):
+ (WTF::randomNumber):
- Reviewed by George Staikos.
+2010-01-27 Kwang Yul Seo <skyul@company100.net>
- https://bugs.webkit.org/show_bug.cgi?id=23960
- Crash Fix.
+ Reviewed by Eric Seidel.
- Don't depend on 'initializeThreading()' to come before a call to 'isMainThread()'
- as QtWebKit only calls 'initializeThreading()' during QWebPage construction.
+ [BREWMP] Port getCPUTime
+ https://bugs.webkit.org/show_bug.cgi?id=33572
- A client app may well make a call to QWebSettings::iconForUrl() for instance
- before creating a QWebPage and that call to QWebSettings triggers an
- ASSERT(isMainThread()) deep within WebCore.
+ Use GETUPTIMEMS which returns a continuously and
+ linearly increasing millisecond timer from the time the device
+ was powered on. This function is enough to implement getCPUTime.
- * wtf/ThreadingQt.cpp:
- (WTF::isMainThread):
+ * runtime/TimeoutChecker.cpp:
+ (JSC::getCPUTime):
-2009-02-13 Gavin Barraclough <barraclough@apple.com>
+2010-01-27 Kwang Yul Seo <skyul@company100.net>
- Reviewed by Darin Adler.
-
- Some data in the instruction stream is potentially uninitialized - fix this.
+ Reviewed by Oliver Hunt.
- Change the OperandTypes constructor so that uninitialized memory in the int
- is zeroed, and modify the Instruction constructor taking an Opcode so that
- if !HAVE(COMPUTED_GOTO) (i.e. when Opcode is an enum, and is potentially only
- a byte) it zeros the Instruction first before writing the opcode.
+ [BREWMP] Add MarkStack fastMalloc implementation for platforms without VirtualAlloc or mmap.
+ https://bugs.webkit.org/show_bug.cgi?id=33582
- * bytecode/Instruction.h:
- (JSC::Instruction::Instruction):
- * parser/ResultType.h:
- (JSC::OperandTypes::OperandTypes):
+ Use fastMalloc and fastFree to implement MarkStack::allocateStack and
+ MarkStack::releaseStack for platforms without page level allocation.
-2009-02-13 Geoffrey Garen <ggaren@apple.com>
+ * runtime/MarkStack.h:
+ (JSC::MarkStack::MarkStackArray::shrinkAllocation):
+ * runtime/MarkStackNone.cpp: Added.
+ (JSC::MarkStack::initializePagesize):
+ (JSC::MarkStack::allocateStack):
+ (JSC::MarkStack::releaseStack):
- Build fix for non_JIT platforms.
+2010-01-27 Kwang Yul Seo <skyul@company100.net>
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::setIsNumericCompareFunction):
- (JSC::CodeBlock::isNumericCompareFunction):
+ Reviewed by Eric Seidel.
-2009-02-13 Geoffrey Garen <ggaren@apple.com>
+ [BREWMP] Don't use time function
+ https://bugs.webkit.org/show_bug.cgi?id=33577
- Reviewed by Darin Adler.
-
- Fixed <rdar://problem/6584057> Optimize sort by JS numeric comparison
- function not to run the comparison function
-
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::CodeBlock):
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::setIsNumericCompareFunction):
- (JSC::CodeBlock::isNumericCompareFunction): Added the ability to track
- whether a CodeBlock performs a sort-like numeric comparison.
+ Calling time(0) in BREW devices causes a crash because time
+ is not properly ported in most devices. Cast currentTime() to
+ time_t to get the same result as time(0).
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::generate): Set the isNumericCompareFunction bit
- after compiling.
+ * wtf/DateMath.cpp:
+ (WTF::calculateUTCOffset):
- * parser/Nodes.cpp:
- (JSC::FunctionBodyNode::emitBytecode): Fixed a bug that caused us to
- codegen an extra return at the end of all functions (eek!), since this
- made it harder / weirder to detect the numeric comparison pattern in
- bytecode.
+2010-01-27 Alexey Proskuryakov <ap@apple.com>
- * runtime/ArrayPrototype.cpp:
- (JSC::arrayProtoFuncSort): Use the isNumericCompareFunction bit to do
- a faster sort if we can.
+ Revert r53899 (HashMap<AtomicStringImpl*, Value> key checks) and subsequent build fixes,
+ because they make SVG tests crash in release builds.
- * runtime/FunctionConstructor.cpp:
- (JSC::extractFunctionBody):
- (JSC::constructFunction):
- * runtime/FunctionConstructor.h: Renamed and exported extractFunctionBody for
- use in initializing lazyNumericCompareFunction.
+ * wtf/HashMap.h:
+ (WTF::::remove):
+ * wtf/HashSet.h:
+ (WTF::::remove):
+ * wtf/HashTable.h:
+ (WTF::::add):
+ (WTF::::addPassingHashCode):
+ (WTF::::removeAndInvalidate):
+ (WTF::::remove):
+ (WTF::::rehash):
+ (WTF::::checkTableConsistency):
+ (WTF::::checkTableConsistencyExceptSize):
+ * wtf/HashTraits.h:
+ (WTF::GenericHashTraits::emptyValue):
+ (WTF::):
+ * wtf/RefPtrHashMap.h:
+ (WTF::::remove):
- * runtime/JSArray.cpp:
- (JSC::compareNumbersForQSort):
- (JSC::compareByStringPairForQSort):
- (JSC::JSArray::sortNumeric):
- (JSC::JSArray::sort):
- * runtime/JSArray.h: Added a fast numeric sort. Renamed ArrayQSortPair
- to be more specific since we do different kinds of qsort now.
+2010-01-26 Alexey Proskuryakov <ap@apple.com>
- * runtime/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- (JSC::JSGlobalData::numericCompareFunction):
- (JSC::JSGlobalData::ClientData::~ClientData):
- * runtime/JSGlobalData.h: Added helper data for computing the
- isNumericCompareFunction bit.
+ More Windows build fixing.
-2009-02-13 Darin Adler <darin@apple.com>
+ * wtf/HashTraits.h: _msize takes void*, remove const qualifier from type.
- * Configurations/JavaScriptCore.xcconfig: Undo accidental commit of this file.
+2010-01-26 Alexey Proskuryakov <ap@apple.com>
-2009-02-12 Darin Adler <darin@apple.com>
+ Windows build fix.
- Reviewed by Oliver Hunt and Alexey Proskuryakov.
+ * wtf/HashTraits.h: Include malloc.h for _msize().
- Speed up a couple string functions.
+2010-01-26 Alexey Proskuryakov <ap@apple.com>
- * runtime/StringPrototype.cpp:
- (JSC::stringProtoFuncIndexOf): Added a fast path for cases where the second
- argument is either missing or an integer.
- (JSC::stringProtoFuncBig): Use jsNontrivialString since the string is guaranteed
- to be 2 or more characters long.
- (JSC::stringProtoFuncSmall): Ditto.
- (JSC::stringProtoFuncBlink): Ditto.
- (JSC::stringProtoFuncBold): Ditto.
- (JSC::stringProtoFuncItalics): Ditto.
- (JSC::stringProtoFuncStrike): Ditto.
- (JSC::stringProtoFuncSub): Ditto.
- (JSC::stringProtoFuncSup): Ditto.
- (JSC::stringProtoFuncFontcolor): Ditto.
- (JSC::stringProtoFuncFontsize): Make the fast path Sam recently added even faster
- by avoiding all but the minimum memory allocation.
- (JSC::stringProtoFuncAnchor): Use jsNontrivialString.
- (JSC::stringProtoFuncLink): Added a fast path.
+ Build fix.
- * runtime/UString.cpp:
- (JSC::UString::find): Added a fast path for single-character search strings.
+ * wtf/HashTable.h: (WTF::HashTable::checkTableConsistencyExceptSize): Remove const from a
+ static (empty) version of this function.
-2009-02-13 David Levin <levin@chromium.org>
+2010-01-26 Alexey Proskuryakov <ap@apple.com>
Reviewed by Darin Adler.
- Bug 23926: Race condition in callOnMainThreadAndWait
- <https://bugs.webkit.org/show_bug.cgi?id=23926>
+ https://bugs.webkit.org/show_bug.cgi?id=34150
+ WebKit needs a mechanism to catch stale HashMap entries
- * wtf/MainThread.cpp:
- Removed callOnMainThreadAndWait since it isn't used.
+ It is very difficult to catch stale pointers that are HashMap keys - since a pointer's hash
+ is just its value, it is very unlikely that any observable problem is reproducible.
-2009-02-13 Oliver Hunt <oliver@apple.com>
+ This extends hash table consistency checks to check that pointers are referencing allocated
+ memory blocks, and makes it possible to invoke the checks explicitly (it is not feasible
+ to enable CHECK_HASHTABLE_CONSISTENCY by default, because that affects performance too much).
- Reviewed by Jon Honeycutt.
+ * wtf/HashMap.h: (WTF::::checkConsistency): Call through to HashTable implementation. We can
+ add similar calls to HashSet and HashCountedSet, but I haven't seen hard to debug problems
+ with those yet.
- Math.random is really slow on windows.
+ * wtf/HashSet.h: (WTF::::remove): The version of checkTableConsistency that's guarded by
+ CHECK_HASHTABLE_CONSISTENCY is now called internalCheckTableConsistency().
- Math.random calls WTF::randomNumber which is implemented as
- the secure rand_s on windows. Unfortunately rand_s is an order
- of magnitude slower than arc4random. For this reason I've
- added "weakRandomNumber" for use by JavaScript's Math Object.
- In the long term we should look at using our own secure PRNG
- in place of the system, but this will do for now.
+ * wtf/HashTable.h:
+ (WTF::HashTable::internalCheckTableConsistency):
+ (WTF::HashTable::internalCheckTableConsistencyExceptSize):
+ (WTF::HashTable::checkTableConsistencyExceptSize):
+ Expose checkTableConsistency() even if CHECK_HASHTABLE_CONSISTENCY is off.
+ (WTF::::add): Updated for checkTableConsistency renaming.
+ (WTF::::addPassingHashCode): Ditto.
+ (WTF::::removeAndInvalidate): Ditto.
+ (WTF::::remove): Ditto.
+ (WTF::::rehash): Ditto.
+ (WTF::::checkTableConsistency): The assertion for !shouldExpand() was not correct - this
+ function returns true for tables with m_table == 0.
+ (WTF::::checkTableConsistencyExceptSize): Call checkValueConsistency for key. Potentially,
+ we could do the same for values.
- 30% win on SunSpider on Windows, resolving most of the remaining
- disparity vs. Mac.
+ * wtf/HashTraits.h:
+ (WTF::GenericHashTraits::checkValueConsistency): An empty function that can be overridden
+ to add checks. Currently, the only override is for pointer hashes.
- * runtime/MathObject.cpp:
- (JSC::MathObject::MathObject):
- (JSC::mathProtoFuncRandom):
- * wtf/RandomNumber.cpp:
- (WTF::weakRandomNumber):
- (WTF::randomNumber):
- * wtf/RandomNumber.h:
- * wtf/RandomNumberSeed.h:
- (WTF::initializeWeakRandomNumberGenerator):
+ * wtf/RefPtrHashMap.h: (WTF::::remove): Updated for checkTableConsistency renaming.
-2009-02-12 Mark Rowe <mrowe@apple.com>
+2010-01-26 Lyon Chen <liachen@rim.com>
- Fix the build for other platforms.
+ Reviewed by Maciej Stachowiak.
- * wtf/RandomNumber.cpp:
- (WTF::randomNumber):
+ Opcode.h use const void* for Opcode cause error #1211 for RVCT compiler
+ https://bugs.webkit.org/show_bug.cgi?id=33902
-2009-02-12 Gavin Barraclough <barraclough@apple.com>
+ * bytecode/Opcode.h:
- Reviewed by Sam Weinig.
+2010-01-26 Steve Falkenburg <sfalken@apple.com>
- Remove (/reduce) use of hard-wired register names from the JIT.
- Currently there is no abstraction of registers used in the JIT,
- which has a number of negative consequences. Hard-wiring x86
- register names makes the JIT less portable to other platforms,
- and prevents us from performing dynamic register allocation to
- attempt to maintain more temporary values in machine registers.
- (The latter will be more important on x86-64, where we have more
- registers to make use of).
+ Reviewed by Oliver Hunt.
- Also, remove MacroAssembler::mod32. This was not providing a
- useful abstraction, and was not in keeping with the rest of the
- MacroAssembler interface, in having specific register requirements.
+ Windows build references non-existent include paths
+ https://bugs.webkit.org/show_bug.cgi?id=34175
- * assembler/MacroAssemblerX86Common.h:
- * jit/JIT.cpp:
- (JSC::JIT::compileOpStrictEq):
- (JSC::JIT::emitSlowScriptCheck):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileFastArith_op_lshift):
- (JSC::JIT::compileFastArithSlow_op_lshift):
- (JSC::JIT::compileFastArith_op_rshift):
- (JSC::JIT::compileFastArithSlow_op_rshift):
- (JSC::JIT::compileFastArith_op_bitand):
- (JSC::JIT::compileFastArithSlow_op_bitand):
- (JSC::JIT::compileFastArith_op_mod):
- (JSC::JIT::compileFastArithSlow_op_mod):
- (JSC::JIT::compileFastArith_op_post_inc):
- (JSC::JIT::compileFastArithSlow_op_post_inc):
- (JSC::JIT::compileFastArith_op_post_dec):
- (JSC::JIT::compileFastArithSlow_op_post_dec):
- (JSC::JIT::compileFastArith_op_pre_inc):
- (JSC::JIT::compileFastArithSlow_op_pre_inc):
- (JSC::JIT::compileFastArith_op_pre_dec):
- (JSC::JIT::compileFastArithSlow_op_pre_dec):
- (JSC::JIT::compileFastArith_op_add):
- (JSC::JIT::compileFastArith_op_mul):
- (JSC::JIT::compileFastArith_op_sub):
- (JSC::JIT::compileBinaryArithOp):
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCallInitializeCallFrame):
- (JSC::JIT::compileOpCallSetupArgs):
- (JSC::JIT::compileOpCallEvalSetupArgs):
- (JSC::JIT::compileOpConstructSetupArgs):
- (JSC::JIT::compileOpCall):
- (JSC::JIT::compileOpCallSlowCase):
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitGetVirtualRegister):
- (JSC::JIT::emitPutVirtualRegister):
- (JSC::JIT::emitNakedCall):
- (JSC::JIT::restoreArgumentReference):
- (JSC::JIT::restoreArgumentReferenceForTrampoline):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compilePutByIdHotPath):
- (JSC::JIT::compileGetByIdSlowCase):
- (JSC::JIT::compilePutByIdSlowCase):
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- (JSC::JIT::privateCompileGetByIdSelf):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdSelfList):
- (JSC::JIT::privateCompileGetByIdProtoList):
- (JSC::JIT::privateCompileGetByIdChainList):
- (JSC::JIT::privateCompileGetByIdChain):
- (JSC::JIT::privateCompilePutByIdReplace):
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
+ * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
+ * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
+ * JavaScriptCore.vcproj/testapi/testapi.vcproj:
+ * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
-2009-02-12 Horia Olaru <olaru@adobe.com>
+2010-01-26 Oliver Hunt <oliver@apple.com>
- Reviewed by Oliver Hunt.
+ Reviewed by Geoffrey Garen.
- https://bugs.webkit.org/show_bug.cgi?id=23400
+ Using JavaScriptCore API with a webkit vended context can result in slow script dialog
+ https://bugs.webkit.org/show_bug.cgi?id=34172
- When throwing an exception within an eval argument string, the dst parameter was
- modified in the functions below and the return value for eval was altered. Changed
- the emitNode call in JSC::ThrowNode::emitBytecode to use a temporary register
- to store its results instead of dst. The JSC::FunctionCallResolveNode::emitBytecode
- would load the function within the dst registry, also altering the result returned
- by eval. Replaced it with another temporary.
+ Make the APIShim correctly increment and decrement the timeout
+ entry counter.
- * parser/Nodes.cpp:
- (JSC::FunctionCallResolveNode::emitBytecode):
- (JSC::ThrowNode::emitBytecode):
+ * API/APIShims.h:
+ (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
+ (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
+ (JSC::APICallbackShim::APICallbackShim):
+ (JSC::APICallbackShim::~APICallbackShim):
-2009-02-12 Sam Weinig <sam@webkit.org>
+2010-01-26 Simon Hausmann <simon.hausmann@nokia.com>
- Reviewed by Geoffrey Garen.
+ [Qt] Fix compilation of QtScript with non-gcc compilers
- Speed up String.prototype.fontsize.
+ Variable length stack arrays are a gcc extension. Use QVarLengthArray
+ as a more portable solution that still tries to allocate on the stack
+ first.
- * runtime/StringPrototype.cpp:
- (JSC::stringProtoFuncFontsize): Specialize for defined/commonly used values.
+ * qt/api/qscriptvalue_p.h:
+ (QScriptValuePrivate::call):
-2009-02-12 Geoffrey Garen <ggaren@apple.com>
+2010-01-26 Simon Hausmann <simon.hausmann@nokia.com>
- Reviewed by Sam Weinig.
-
- Correctness fix.
+ Reviewed by Tor Arne Vestbø.
- * wtf/RandomNumber.cpp:
- (WTF::randomNumber): Divide by the maximum representable value, which
- is different on each platform now, to get values between 0 and 1.
+ [Qt] Fix the build on platforms without JIT support.
-2009-02-12 Geoffrey Garen <ggaren@apple.com>
+ The JIT support should be determined at compile-time via wtf/Platform.h
- Build fix.
+ * qt/api/QtScript.pro:
- * wtf/RandomNumber.cpp:
- (WTF::randomNumber):
+2010-01-26 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
-2009-02-12 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Simon Hausmann.
- Reviewed by Sam Weinig.
-
- Fixed <rdar://problem/6582048>.
+ First steps of the QtScript API.
+
+ Two new classes were created; QScriptEngine and QScriptValue.
+ The first should encapsulate a javascript context and the second a script
+ value.
+
+ This API is still in development, so it isn't compiled by default.
+ To trigger compilation, pass --qmakearg="CONFIG+=build-qtscript" to
+ build-webkit.
+
+ https://bugs.webkit.org/show_bug.cgi?id=32565
+
+ * qt/api/QtScript.pro: Added.
+ * qt/api/qscriptconverter_p.h: Added.
+ (QScriptConverter::toString):
+ * qt/api/qscriptengine.cpp: Added.
+ (QScriptEngine::QScriptEngine):
+ (QScriptEngine::~QScriptEngine):
+ (QScriptEngine::evaluate):
+ (QScriptEngine::collectGarbage):
+ * qt/api/qscriptengine.h: Added.
+ * qt/api/qscriptengine_p.cpp: Added.
+ (QScriptEnginePrivate::QScriptEnginePrivate):
+ (QScriptEnginePrivate::~QScriptEnginePrivate):
+ (QScriptEnginePrivate::evaluate):
+ * qt/api/qscriptengine_p.h: Added.
+ (QScriptEnginePrivate::get):
+ (QScriptEnginePrivate::collectGarbage):
+ (QScriptEnginePrivate::makeJSValue):
+ (QScriptEnginePrivate::context):
+ * qt/api/qscriptvalue.cpp: Added.
+ (QScriptValue::QScriptValue):
+ (QScriptValue::~QScriptValue):
+ (QScriptValue::isValid):
+ (QScriptValue::isBool):
+ (QScriptValue::isBoolean):
+ (QScriptValue::isNumber):
+ (QScriptValue::isNull):
+ (QScriptValue::isString):
+ (QScriptValue::isUndefined):
+ (QScriptValue::isError):
+ (QScriptValue::isObject):
+ (QScriptValue::isFunction):
+ (QScriptValue::toString):
+ (QScriptValue::toNumber):
+ (QScriptValue::toBool):
+ (QScriptValue::toBoolean):
+ (QScriptValue::toInteger):
+ (QScriptValue::toInt32):
+ (QScriptValue::toUInt32):
+ (QScriptValue::toUInt16):
+ (QScriptValue::call):
+ (QScriptValue::engine):
+ (QScriptValue::operator=):
+ (QScriptValue::equals):
+ (QScriptValue::strictlyEquals):
+ * qt/api/qscriptvalue.h: Added.
+ (QScriptValue::):
+ * qt/api/qscriptvalue_p.h: Added.
+ (QScriptValuePrivate::):
+ (QScriptValuePrivate::get):
+ (QScriptValuePrivate::QScriptValuePrivate):
+ (QScriptValuePrivate::isValid):
+ (QScriptValuePrivate::isBool):
+ (QScriptValuePrivate::isNumber):
+ (QScriptValuePrivate::isNull):
+ (QScriptValuePrivate::isString):
+ (QScriptValuePrivate::isUndefined):
+ (QScriptValuePrivate::isError):
+ (QScriptValuePrivate::isObject):
+ (QScriptValuePrivate::isFunction):
+ (QScriptValuePrivate::toString):
+ (QScriptValuePrivate::toNumber):
+ (QScriptValuePrivate::toBool):
+ (QScriptValuePrivate::toInteger):
+ (QScriptValuePrivate::toInt32):
+ (QScriptValuePrivate::toUInt32):
+ (QScriptValuePrivate::toUInt16):
+ (QScriptValuePrivate::equals):
+ (QScriptValuePrivate::strictlyEquals):
+ (QScriptValuePrivate::assignEngine):
+ (QScriptValuePrivate::call):
+ (QScriptValuePrivate::engine):
+ (QScriptValuePrivate::context):
+ (QScriptValuePrivate::value):
+ (QScriptValuePrivate::object):
+ (QScriptValuePrivate::inherits):
+ (QScriptValuePrivate::isJSBased):
+ (QScriptValuePrivate::isNumberBased):
+ (QScriptValuePrivate::isStringBased):
+ * qt/api/qtscriptglobal.h: Added.
+ * qt/tests/qscriptengine/qscriptengine.pro: Added.
+ * qt/tests/qscriptengine/tst_qscriptengine.cpp: Added.
+ (tst_QScriptEngine::tst_QScriptEngine):
+ (tst_QScriptEngine::~tst_QScriptEngine):
+ (tst_QScriptEngine::init):
+ (tst_QScriptEngine::cleanup):
+ (tst_QScriptEngine::collectGarbage):
+ (tst_QScriptEngine::evaluate):
+ * qt/tests/qscriptvalue/qscriptvalue.pro: Added.
+ * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: Added.
+ (tst_QScriptValue::tst_QScriptValue):
+ (tst_QScriptValue::~tst_QScriptValue):
+ (tst_QScriptValue::init):
+ (tst_QScriptValue::cleanup):
+ (tst_QScriptValue::ctor):
+ (tst_QScriptValue::toString_data):
+ (tst_QScriptValue::toString):
+ (tst_QScriptValue::copyConstructor_data):
+ (tst_QScriptValue::copyConstructor):
+ (tst_QScriptValue::assignOperator_data):
+ (tst_QScriptValue::assignOperator):
+ (tst_QScriptValue::dataSharing):
+ (tst_QScriptValue::constructors_data):
+ (tst_QScriptValue::constructors):
+ (tst_QScriptValue::call):
+ * qt/tests/tests.pri: Added.
+ * qt/tests/tests.pro: Added.
+
+2010-01-25 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by David Levin.
+
+ Fix Chromium Linux tests: the pthread functions on Linux produce segfault if they receive 0 thread handle.
+ After r53714, we can have 0 thread handles passed to pthread_join and pthread_detach if corresponding threads
+ were already terminated and their threadMap entries cleared.
+ Add a 0 check.
- * wtf/RandomNumber.cpp:
- (WTF::randomNumber): Make only one call to the random number generator
- on platforms where the generator is cryptographically secure. The value
- of randomness over and above cryptographically secure randomness is not
- clear, and it caused some performance problems.
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::waitForThreadCompletion):
+ (WTF::detachThread):
-2009-02-12 Adam Roben <aroben@apple.com>
+2010-01-24 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- Fix lots of Perl warnings when building JavaScriptCoreGenerated on
- Windows
+ Reviewed by Maciej Stachowiak.
- Reviewed by John Sullivan.
+ Refactor JITStubs.cpp so that DEFINE_STUB_FUNCTION is only used once for each function
+ https://bugs.webkit.org/show_bug.cgi?id=33866
- * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
- Create the docs/ directory so that we can write bytecode.html into it.
- This matches what JavaScriptCore.xcodeproj does.
+ Place the guard USE(JSVALUE32_64) inside the body of the DEFINE_STUB_FUNCTION
+ macro for those functions that are always present.
-2009-02-12 Simon Hausmann <simon.hausmann@nokia.com>
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
- Rubber-stamped by Lars.
+2010-01-22 Kevin Watters <kevinwatters@gmail.com>
- Re-enable the JIT in the Qt build with -fno-stack-protector on Linux.
+ Reviewed by Kevin Ollivier.
- * JavaScriptCore.pri:
+ [wx] Remove the Bakefile build system, which is no longer being used.
+
+ https://bugs.webkit.org/show_bug.cgi?id=34022
-2009-02-11 Dmitry Titov <dimich@chromium.org>
+ * JavaScriptCoreSources.bkl: Removed.
+ * jscore.bkl: Removed.
- Reviewed by Alexey Proskuryakov.
+2010-01-22 Steve Falkenburg <sfalken@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=23705
- Fix the UI freeze caused by Worker generating a flood of messages.
- Measure time we spend in executing posted work items. If too much time is spent
- without returning to the run loop, exit and reschedule.
+ Reviewed by Darin Adler.
- * wtf/MainThread.h:
- Added initializeMainThreadPlatform() to initialize low-level mechanism for posting
- work items from thread to thread. This removes #ifdefs for WIN and CHROMIUM from platform-independent code.
+ https://bugs.webkit.org/show_bug.cgi?id=34025
+ Enable client-based Geolocation abstraction for Mac, Windows AppleWebKit targets.
- * wtf/MainThread.cpp:
- (WTF::initializeMainThread):
- (WTF::dispatchFunctionsFromMainThread):
- Instead of dispatching all work items in the queue, dispatch them one by one
- and measure elapsed time. After a threshold, reschedule and quit.
+ * Configurations/FeatureDefines.xcconfig:
- (WTF::callOnMainThread):
- (WTF::callOnMainThreadAndWait):
- Only schedule dispatch if the queue was empty - to avoid many posted messages in the run loop queue.
+2010-01-22 Dmitry Titov <dimich@chromium.org>
- * wtf/mac/MainThreadMac.mm:
- (WTF::scheduleDispatchFunctionsOnMainThread):
- Use static instance of the mainThreadCaller instead of allocating and releasing it each time.
- (WTF::initializeMainThreadPlatform):
- * wtf/gtk/MainThreadChromium.cpp:
- (WTF::initializeMainThreadPlatform):
- * wtf/gtk/MainThreadGtk.cpp:
- (WTF::initializeMainThreadPlatform):
- * wtf/qt/MainThreadQt.cpp:
- (WTF::initializeMainThreadPlatform):
- * wtf/win/MainThreadWin.cpp:
- (WTF::initializeMainThreadPlatform):
- * wtf/wx/MainThreadWx.cpp:
- (WTF::initializeMainThreadPlatform):
+ Not reviewed, attempted Snow Leopard build fix.
-2009-02-11 Sam Weinig <sam@webkit.org>
+ * wtf/ThreadingPthreads.cpp: Add a forward declaration of a function which is not 'static'.
- Reviewed by Gavin Barraclough.
+2009-01-22 Dmitry Titov <dimich@chromium.org>
- Style cleanup.
+ Reviewed by Maciej Stachowiak.
- * assembler/AbstractMacroAssembler.h:
- (JSC::AbstractMacroAssembler::CodeLocationCommon::CodeLocationCommon):
- (JSC::AbstractMacroAssembler::CodeLocationCommon::operator bool):
- (JSC::AbstractMacroAssembler::CodeLocationCommon::reset):
- (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForSwitch):
- (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForExceptionHandler):
- (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForJSR):
- (JSC::AbstractMacroAssembler::CodeLocationLabel::getJumpDestination):
- (JSC::AbstractMacroAssembler::CodeLocationJump::relink):
- (JSC::AbstractMacroAssembler::CodeLocationJump::CodeLocationJump):
- (JSC::AbstractMacroAssembler::CodeLocationCall::relink):
- (JSC::AbstractMacroAssembler::CodeLocationCall::calleeReturnAddressValue):
- (JSC::AbstractMacroAssembler::CodeLocationCall::CodeLocationCall):
- (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::repatch):
- (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::CodeLocationDataLabel32):
- (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::repatch):
- (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::CodeLocationDataLabelPtr):
- (JSC::AbstractMacroAssembler::ProcessorReturnAddress::ProcessorReturnAddress):
- (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToFunction):
- (JSC::AbstractMacroAssembler::ProcessorReturnAddress::operator void*):
- (JSC::AbstractMacroAssembler::PatchBuffer::link):
- (JSC::::CodeLocationCommon::labelAtOffset):
- (JSC::::CodeLocationCommon::jumpAtOffset):
- (JSC::::CodeLocationCommon::callAtOffset):
- (JSC::::CodeLocationCommon::dataLabelPtrAtOffset):
- (JSC::::CodeLocationCommon::dataLabel32AtOffset):
-
-2009-02-11 Sam Weinig <sam@webkit.org>
+ Fix the leak of ThreadIdentifiers in threadMap across threads.
+ https://bugs.webkit.org/show_bug.cgi?id=32689
- Reviewed by Gavin Barraclough.
+ Test is added to DumpRenderTree.mm.
- * assembler/AbstractMacroAssembler.h: Fix comments.
+ * Android.mk: Added file ThreadIdentifierDataPthreads.(h|cpp) to build.
+ * Android.v8.wtf.mk: Ditto.
+ * GNUmakefile.am: Ditto.
+ * JavaScriptCore.gyp/JavaScriptCore.gyp: Ditto.
+ * JavaScriptCore.gypi: Ditto.
+ * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
-2009-02-11 Alexey Proskuryakov <ap@webkit.org>
+ * wtf/ThreadIdentifierDataPthreads.cpp: Added. Contains custom implementation of thread-specific data that uses custom destructor.
+ (WTF::ThreadIdentifierData::~ThreadIdentifierData): Removes the ThreadIdentifier from the threadMap.
+ (WTF::ThreadIdentifierData::identifier):
+ (WTF::ThreadIdentifierData::initialize):
+ (WTF::ThreadIdentifierData::destruct): Custom thread-specific destructor. Resets the value for the key again to cause second invoke.
+ (WTF::ThreadIdentifierData::initializeKeyOnceHelper):
+ (WTF::ThreadIdentifierData::initializeKeyOnce): Need to use pthread_once since initialization may come on any thread(s).
+ * wtf/ThreadIdentifierDataPthreads.h: Added.
+ (WTF::ThreadIdentifierData::ThreadIdentifierData):
- Trying to fix wx build.
+ * wtf/Threading.cpp:
+ (WTF::threadEntryPoint): Move initializeCurrentThreadInternal to after the lock to make
+ sure it is invoked when ThreadIdentifier is already established.
- * bytecode/JumpTable.h: Include "MacroAssembler.h", not <MacroAssembler.h>.
- * jscore.bkl: Added assembler directory to search paths.
+ * wtf/Threading.h: Rename setThreadNameInternal -> initializeCurrentThreadInternal since it does more then only set the name now.
+ * wtf/ThreadingNone.cpp:
+ (WTF::initializeCurrentThreadInternal): Ditto.
+ * wtf/ThreadingWin.cpp:
+ (WTF::initializeCurrentThreadInternal): Ditto.
+ (WTF::initializeThreading): Ditto.
+ * wtf/gtk/ThreadingGtk.cpp:
+ (WTF::initializeCurrentThreadInternal): Ditto.
+ * wtf/qt/ThreadingQt.cpp:
+ (WTF::initializeCurrentThreadInternal): Ditto.
-2009-02-10 Gavin Barraclough <barraclough@apple.com>
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::establishIdentifierForPthreadHandle):
+ (WTF::clearPthreadHandleForIdentifier): Make it not 'static' so the ~ThreadIdentifierData() in another file can call it.
+ (WTF::initializeCurrentThreadInternal): Set the thread-specific data. The ThreadIdentifier is already established by creating thread.
+ (WTF::waitForThreadCompletion): Remove call to clearPthreadHandleForIdentifier(threadID) since it is now done in ~ThreadIdentifierData().
+ (WTF::detachThread): Ditto.
+ (WTF::currentThread): Use the thread-specific data to get the ThreadIdentifier. It's many times faster then Mutex-protected iteration through the map.
+ Also, set the thread-specific data if called first time on the thread.
- Build
- fix.
- (Narrow
- changelog
- for
- dhyatt).
+2010-01-21 Kwang Yul Seo <skyul@company100.net>
- * bytecode/Instruction.h:
- (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
- (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
+ Reviewed by Alexey Proskuryakov.
-2009-02-10 Gavin Barraclough <barraclough@apple.com>
+ Add ThreadSpecific for ENABLE(SINGLE_THREADED)
+ https://bugs.webkit.org/show_bug.cgi?id=33878
- Reviewed by Oliver Hunt.
+ Implement ThreadSpecific with a simple getter/setter
+ when ENABLE(SINGLE_THREADED) is true.
- Reduce use of void* / reinterpret_cast in JIT repatching code,
- add strong types for Calls and for the various types of pointers
- we retain into the JIT generated instruction stream.
+ Due to the change in https://bugs.webkit.org/show_bug.cgi?id=33236,
+ an implementation of ThreadSpecific must be available to build WebKit.
+ This causes a build failure for platforms without a proper
+ ThreadSpecific implementation.
- No performance impact.
+ * wtf/ThreadSpecific.h:
+ (WTF::::ThreadSpecific):
+ (WTF::::~ThreadSpecific):
+ (WTF::::get):
+ (WTF::::set):
+ (WTF::::destroy):
- * assembler/AbstractMacroAssembler.h:
- (JSC::AbstractMacroAssembler::ImmPtr::ImmPtr):
- (JSC::AbstractMacroAssembler::ImmPtr::asIntptr):
- (JSC::AbstractMacroAssembler::Imm32::Imm32):
- (JSC::AbstractMacroAssembler::Label::Label):
- (JSC::AbstractMacroAssembler::DataLabelPtr::DataLabelPtr):
- (JSC::AbstractMacroAssembler::Call::Call):
- (JSC::AbstractMacroAssembler::Call::link):
- (JSC::AbstractMacroAssembler::Call::linkTo):
- (JSC::AbstractMacroAssembler::Jump::Jump):
- (JSC::AbstractMacroAssembler::Jump::linkTo):
- (JSC::AbstractMacroAssembler::CodeLocationCommon::CodeLocationCommon):
- (JSC::AbstractMacroAssembler::CodeLocationCommon::operator bool):
- (JSC::AbstractMacroAssembler::CodeLocationCommon::reset):
- (JSC::AbstractMacroAssembler::CodeLocationLabel::CodeLocationLabel):
- (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForSwitch):
- (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForExceptionHandler):
- (JSC::AbstractMacroAssembler::CodeLocationLabel::addressForJSR):
- (JSC::AbstractMacroAssembler::CodeLocationLabel::getJumpDestination):
- (JSC::AbstractMacroAssembler::CodeLocationJump::CodeLocationJump):
- (JSC::AbstractMacroAssembler::CodeLocationJump::relink):
- (JSC::AbstractMacroAssembler::CodeLocationCall::CodeLocationCall):
- (JSC::AbstractMacroAssembler::CodeLocationCall::relink):
- (JSC::AbstractMacroAssembler::CodeLocationCall::calleeReturnAddressValue):
- (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::CodeLocationDataLabel32):
- (JSC::AbstractMacroAssembler::CodeLocationDataLabel32::repatch):
- (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::CodeLocationDataLabelPtr):
- (JSC::AbstractMacroAssembler::CodeLocationDataLabelPtr::repatch):
- (JSC::AbstractMacroAssembler::ProcessorReturnAddress::ProcessorReturnAddress):
- (JSC::AbstractMacroAssembler::ProcessorReturnAddress::relinkCallerToFunction):
- (JSC::AbstractMacroAssembler::ProcessorReturnAddress::operator void*):
- (JSC::AbstractMacroAssembler::PatchBuffer::entry):
- (JSC::AbstractMacroAssembler::PatchBuffer::trampolineAt):
- (JSC::AbstractMacroAssembler::PatchBuffer::link):
- (JSC::AbstractMacroAssembler::PatchBuffer::linkTailRecursive):
- (JSC::AbstractMacroAssembler::PatchBuffer::patch):
- (JSC::AbstractMacroAssembler::PatchBuffer::locationOf):
- (JSC::AbstractMacroAssembler::PatchBuffer::returnAddressOffset):
- (JSC::AbstractMacroAssembler::differenceBetween):
- (JSC::::CodeLocationCommon::labelAtOffset):
- (JSC::::CodeLocationCommon::jumpAtOffset):
- (JSC::::CodeLocationCommon::callAtOffset):
- (JSC::::CodeLocationCommon::dataLabelPtrAtOffset):
- (JSC::::CodeLocationCommon::dataLabel32AtOffset):
- * assembler/MacroAssemblerX86Common.h:
- (JSC::MacroAssemblerX86Common::call):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::getCallReturnOffset):
- * bytecode/CodeBlock.h:
- (JSC::CallLinkInfo::CallLinkInfo):
- (JSC::getStructureStubInfoReturnLocation):
- (JSC::getCallLinkInfoReturnLocation):
- * bytecode/Instruction.h:
- (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
- (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
- * bytecode/JumpTable.h:
- (JSC::StringJumpTable::ctiForValue):
- (JSC::SimpleJumpTable::ctiForValue):
- * bytecode/StructureStubInfo.h:
- (JSC::StructureStubInfo::StructureStubInfo):
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::emitCatch):
- (JSC::prepareJumpTableForStringSwitch):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::cti_op_get_by_id_self_fail):
- (JSC::getPolymorphicAccessStructureListSlot):
- (JSC::Interpreter::cti_op_throw):
- (JSC::Interpreter::cti_op_switch_imm):
- (JSC::Interpreter::cti_op_switch_char):
- (JSC::Interpreter::cti_op_switch_string):
- (JSC::Interpreter::cti_vm_throw):
- * jit/JIT.cpp:
- (JSC::ctiSetReturnAddress):
- (JSC::ctiPatchCallByReturnAddress):
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- (JSC::CallRecord::CallRecord):
- (JSC::JIT::compileGetByIdSelf):
- (JSC::JIT::compileGetByIdProto):
- (JSC::JIT::compileGetByIdChain):
- (JSC::JIT::compilePutByIdReplace):
- (JSC::JIT::compilePutByIdTransition):
- (JSC::JIT::compilePatchGetArrayLength):
- (JSC::JIT::emitCTICall):
- * jit/JITCall.cpp:
- (JSC::JIT::unlinkCall):
- (JSC::JIT::linkCall):
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitNakedCall):
- (JSC::JIT::emitCTICall_internal):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdSlowCase):
- (JSC::JIT::compilePutByIdSlowCase):
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::patchGetByIdSelf):
- (JSC::JIT::patchPutByIdReplace):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- (JSC::JIT::privateCompileGetByIdSelf):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdSelfList):
- (JSC::JIT::privateCompileGetByIdProtoList):
- (JSC::JIT::privateCompileGetByIdChainList):
- (JSC::JIT::privateCompileGetByIdChain):
- (JSC::JIT::privateCompilePutByIdReplace):
+2010-01-21 Kwang Yul Seo <skyul@company100.net>
-2009-02-10 Adam Roben <aroben@apple.com>
+ Reviewed by Maciej Stachowiak.
- Windows build fix after r40813
+ Add fastStrDup to FastMalloc
+ https://bugs.webkit.org/show_bug.cgi?id=33937
- * JavaScriptCore.vcproj/jsc/jsc.vcproj: Added profiler/ to the include
- path so that Profiler.h can be found.
+ The new string returned by fastStrDup is obtained with fastMalloc,
+ and can be freed with fastFree. This makes the memory management
+ more consistent because we don't need to keep strdup allocated pointers
+ and free them with free(). Instead we can use fastFree everywhere.
-2009-02-09 Gavin Barraclough <barraclough@apple.com>
+ * wtf/FastMalloc.cpp:
+ (WTF::fastStrDup):
+ * wtf/FastMalloc.h:
- Reviewed by Oliver Hunt.
+2010-01-21 Brady Eidson <beidson@apple.com>
- Provide a class type for a generated block of JIT code.
- Also changes the return address -> bytecode index map to
- track the return addess as an unsigned offset into the code
- instead of a ptrdiff_t in terms of void**s - the latter is
- equal to the actual offset / sizeof(void*), making it a
- potentially lossy representation.
+ Reviewed by Maciej Stachowiak.
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * assembler/AbstractMacroAssembler.h:
- (JSC::AbstractMacroAssembler::PatchBuffer::returnAddressOffset):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::getCallReturnOffset):
- * bytecode/CodeBlock.h:
- (JSC::CallReturnOffsetToBytecodeIndex::CallReturnOffsetToBytecodeIndex):
- (JSC::getCallReturnOffset):
- (JSC::CodeBlock::getBytecodeIndex):
- (JSC::CodeBlock::jitCode):
- (JSC::CodeBlock::callReturnIndexVector):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::execute):
- (JSC::Interpreter::cti_vm_dontLazyLinkCall):
- (JSC::Interpreter::cti_vm_lazyLinkCall):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompile):
- * jit/JIT.h:
- (JSC::):
- * jit/JITCall.cpp:
- (JSC::JIT::linkCall):
- * jit/JITCode.h: Added.
- (JSC::):
- (JSC::JITCode::JITCode):
- (JSC::JITCode::operator bool):
- (JSC::JITCode::addressForCall):
- (JSC::JITCode::offsetOf):
- (JSC::JITCode::execute):
+ history.back() for same-document history traversals isn't synchronous as the specification states.
+ <rdar://problem/7535011> and https://bugs.webkit.org/show_bug.cgi?id=33538
-2009-02-09 John Grabowski <jrg@chromium.org>
+ * wtf/Platform.h: Add a "HISTORY_ALWAYS_ASYNC" enable and turn it on for Chromium.
- Reviewed by Darin Adler.
+2010-01-21 Geoffrey Garen <ggaren@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=23856
- Change the definition of "main thread" for Chromium on OSX.
- It does not match the DARWIN definition.
+ Reviewed by Oliver Hunt.
- * wtf/ThreadingPthreads.cpp:
- (WTF::initializeThreading):
- (WTF::isMainThread):
+ Always create a prototype for automatically managed classes.
+
+ This fixes some errors where prototype chains were not correctly hooked
+ up, and also ensures that API classes work correctly with features like
+ instanceof.
-2009-02-09 Gavin Barraclough <barraclough@apple.com>
+ * API/JSClassRef.cpp:
+ (OpaqueJSClass::create): Cleaned up some of this code. Also changed it
+ to always create a prototype class.
- Reviewed by Oliver Hunt.
+ * API/tests/testapi.c:
+ (Derived2_class):
+ (main): Fixed a null value crash in the exception checking code.
+ * API/tests/testapi.js: Added some tests for the case where a prototype
+ chain would not be hooked up correctly.
- Minor bugfix, incorrect check meant that subtraction causing integer overflow
- would be missed on x86-64 JIT.
+2010-01-21 Oliver Hunt <oliver@apple.com>
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileBinaryArithOp):
+ Reviewed by Geoff Garen.
-2009-02-09 Gavin Barraclough <barraclough@apple.com>
+ Force JSC to create a prototype chain for API classes with a
+ parent class but no static functions.
- Reviewed by Oliver Hunt.
+ * API/JSClassRef.cpp:
+ (OpaqueJSClass::create):
- A more sensible register allocation for x86-64.
+2010-01-21 Kent Hansen <kent.hansen@nokia.com>
- When WREC was ported to x86-64 it stuck with the same register allocation as x86.
- This requires registers to be reordered on entry into WREC generated code, since
- argument passing is different on x86-64 and x86 (regparm(3)). This patch switches
- x86-64 to use a native register allocation, that does not require argument registers
- to be reordered.
+ Reviewed by Geoffrey Garen.
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateEnter):
- (JSC::WREC::Generator::generateReturnSuccess):
- (JSC::WREC::Generator::generateReturnFailure):
- * wrec/WRECGenerator.h:
+ Object.getOwnPropertyDescriptor always returns undefined for JS API objects
+ https://bugs.webkit.org/show_bug.cgi?id=33946
-2009-02-05 Adam Roben <aroben@apple.com>
+ Ideally the getOwnPropertyDescriptor() reimplementation should return an
+ access descriptor that wraps the property getter and setter callbacks, but
+ that approach is much more involved than returning a value descriptor.
+ Keep it simple for now.
- Build fix
+ * API/JSCallbackObject.h:
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::getOwnPropertyDescriptor):
+ * API/tests/testapi.js:
- Rubberstamped by Sam Weinig.
+2010-01-20 Mark Rowe <mrowe@apple.com>
- * wtf/TypeTraits.h: Include Platform.h, since this header uses macros
- defined there.
+ Build fix.
-2009-02-05 Dimitri Glazkov <dglazkov@chromium.org>
+ * wtf/FastMalloc.cpp:
+ (WTF::TCMalloc_PageHeap::initializeScavenger): Remove unnecessary function call.
- Reviewed by Eric Seidel.
+2010-01-20 Mark Rowe <mrowe@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=23747
- Add Chromium threading-related files.
+ Reviewed by Oliver Hunt.
- * wtf/MainThread.cpp: Added platform guard to initializeMainThread.
- * wtf/chromium/ChromiumThreading.h: Added.
- * wtf/chromium/MainThreadChromium.cpp: Added.
- (WTF::initializeMainThread):
- (WTF::scheduleDispatchFunctionsOnMainThread):
+ Use the inline i386 assembly for x86_64 as well rather than falling back to using pthread mutexes.
-2009-02-05 David Levin <levin@chromium.org>
+ * wtf/TCSpinLock.h:
+ (TCMalloc_SpinLock::Lock):
+ (TCMalloc_SpinLock::Unlock):
+ (TCMalloc_SlowLock):
- Reviewed by Darin Adler.
+2010-01-20 Mark Rowe <mrowe@apple.com>
- Bug 23713: COMPILE_ASSERTS should be moved out of TypeTraits.h and into .cpp file
- <https://bugs.webkit.org/show_bug.cgi?id=23713>
+ Reviewed by Oliver Hunt.
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
+ <rdar://problem/7215063> Use GCD instead of an extra thread for FastMalloc scavenging on platforms where it is supported
- * wtf/HashTraits.h:
- Remove unnecessary header file that I missed when moving out the type traits form this file.
+ Abstract the background scavenging slightly so that an alternate implementation that uses GCD can be used on platforms
+ where it is supported.
- * wtf/TypeTraits.cpp: Added.
- (WTF::):
- * wtf/TypeTraits.h:
- Moved the compile asserts into TypeTraits.cpp file.
+ * wtf/FastMalloc.cpp:
+ (WTF::TCMalloc_PageHeap::init):
+ (WTF::TCMalloc_PageHeap::initializeScavenger):
+ (WTF::TCMalloc_PageHeap::signalScavenger):
+ (WTF::TCMalloc_PageHeap::shouldContinueScavenging):
+ (WTF::TCMalloc_PageHeap::Delete):
+ (WTF::TCMalloc_PageHeap::periodicScavenge):
+ * wtf/Platform.h:
-2009-02-04 Gavin Barraclough <barraclough@apple.com>
+2010-01-20 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Oliver 'the nun' Hunt.
+ Reviewed by Oliver Hunt.
- Add -e switch to jsc to enable evaluation of scripts passed on the command line.
+ <rdar://problem/7562708> REGRESSION(53460): Heap::destroy may not run
+ all destructors
- * jsc.cpp:
- (Script::Script):
- (runWithScripts):
- (printUsageStatement):
- (parseArguments):
- (jscmain):
+ * runtime/Collector.cpp:
+ (JSC::Heap::freeBlocks): Instead of fully marking protected objects,
+ just set their mark bits. This prevents protected objects from keeping
+ unprotected objects alive. Destructor order is not guaranteed, so it's
+ OK to destroy objects pointed to by protected objects before destroying
+ protected objects.
-2009-02-04 Gavin Barraclough <barraclough@apple.com>
+2010-01-19 David Levin <levin@chromium.org>
- Rubber stamped by Sam 'Big Mac' Weinig.
+ Reviewed by Oliver Hunt.
- * assembler/AbstractMacroAssembler.h: Copied from assembler/MacroAssembler.h.
- * assembler/MacroAssemblerX86.h: Copied from assembler/MacroAssembler.h.
- * assembler/MacroAssemblerX86Common.h: Copied from assembler/MacroAssembler.h.
- * assembler/MacroAssemblerX86_64.h: Copied from assembler/MacroAssembler.h.
+ CrossThreadCopier needs to support ThreadSafeShared better.
+ https://bugs.webkit.org/show_bug.cgi?id=33698
-2009-02-04 Gavin Barraclough <barraclough@apple.com>
+ * wtf/TypeTraits.cpp: Added tests for the new type traits.
+ * wtf/TypeTraits.h:
+ (WTF::IsSubclass): Determines if a class is a derived from another class.
+ (WTF::IsSubclassOfTemplate): Determines if a class is a derived from a
+ template class (with one parameter that is unknown).
+ (WTF::RemoveTemplate): Reveals the type for a template parameter.
- Reviewed by Sam Weinig.
+2010-01-20 Steve Falkenburg <sfalken@apple.com>
- This patch tidies up the MacroAssembler, cleaning up the code and refactoring out the
- platform-specific parts. The MacroAssembler gets split up like a beef burger, with the
- platform-agnostic data types being the lower bun (in the form of the class AbstractMacroAssembler),
- the plaform-specific code generation forming a big meaty patty of methods like 'add32',
- 'branch32', etc (MacroAssemblerX86), and finally topped off with the bun-lid of the
- MacroAssembler class itself, providing covenience methods such as the stack peek & poke,
- and backwards branch methods, all of which can be described in a platform independent
- way using methods from the base class. The AbstractMacroAssembler is templated on the
- type of the assembler class that will be used for code generation, and the three layers
- are held together with the cocktail stick of inheritance.
-
- The above description is a slight simplification since the MacroAssemblerX86 is actually
- formed from two layers (in effect giving us a kind on bacon double cheeseburger) - with the
- bulk of methods that are common between x86 & x86-64 implemented in MacroAssemblerX86Common,
- which forms a base class for MacroAssemblerX86 and MacroAssemblerX86_64 (which add the methods
- specific to the given platform).
-
- I'm landing these changes first without splitting the classes across multiple files,
- I will follow up with a second patch to split up the file MacroAssembler.h.
+ Reviewed by Darin Adler and Adam Roben.
- * assembler/MacroAssembler.h:
- (JSC::AbstractMacroAssembler::):
- (JSC::AbstractMacroAssembler::DataLabelPtr::DataLabelPtr):
- (JSC::AbstractMacroAssembler::DataLabelPtr::patch):
- (JSC::AbstractMacroAssembler::DataLabel32::DataLabel32):
- (JSC::AbstractMacroAssembler::DataLabel32::patch):
- (JSC::AbstractMacroAssembler::Label::Label):
- (JSC::AbstractMacroAssembler::Jump::Jump):
- (JSC::AbstractMacroAssembler::Jump::link):
- (JSC::AbstractMacroAssembler::Jump::linkTo):
- (JSC::AbstractMacroAssembler::Jump::patch):
- (JSC::AbstractMacroAssembler::JumpList::link):
- (JSC::AbstractMacroAssembler::JumpList::linkTo):
- (JSC::AbstractMacroAssembler::PatchBuffer::link):
- (JSC::AbstractMacroAssembler::PatchBuffer::addressOf):
- (JSC::AbstractMacroAssembler::PatchBuffer::setPtr):
- (JSC::AbstractMacroAssembler::size):
- (JSC::AbstractMacroAssembler::copyCode):
- (JSC::AbstractMacroAssembler::label):
- (JSC::AbstractMacroAssembler::align):
- (JSC::AbstractMacroAssembler::differenceBetween):
- (JSC::MacroAssemblerX86Common::xor32):
- (JSC::MacroAssemblerX86Common::load32WithAddressOffsetPatch):
- (JSC::MacroAssemblerX86Common::store32WithAddressOffsetPatch):
- (JSC::MacroAssemblerX86Common::move):
- (JSC::MacroAssemblerX86Common::swap):
- (JSC::MacroAssemblerX86Common::signExtend32ToPtr):
- (JSC::MacroAssemblerX86Common::zeroExtend32ToPtr):
- (JSC::MacroAssemblerX86Common::branch32):
- (JSC::MacroAssemblerX86Common::jump):
- (JSC::MacroAssemblerX86_64::add32):
- (JSC::MacroAssemblerX86_64::sub32):
- (JSC::MacroAssemblerX86_64::load32):
- (JSC::MacroAssemblerX86_64::store32):
- (JSC::MacroAssemblerX86_64::addPtr):
- (JSC::MacroAssemblerX86_64::andPtr):
- (JSC::MacroAssemblerX86_64::orPtr):
- (JSC::MacroAssemblerX86_64::rshiftPtr):
- (JSC::MacroAssemblerX86_64::subPtr):
- (JSC::MacroAssemblerX86_64::xorPtr):
- (JSC::MacroAssemblerX86_64::loadPtr):
- (JSC::MacroAssemblerX86_64::loadPtrWithAddressOffsetPatch):
- (JSC::MacroAssemblerX86_64::storePtr):
- (JSC::MacroAssemblerX86_64::storePtrWithAddressOffsetPatch):
- (JSC::MacroAssemblerX86_64::branchPtr):
- (JSC::MacroAssemblerX86_64::branchTestPtr):
- (JSC::MacroAssemblerX86_64::branchAddPtr):
- (JSC::MacroAssemblerX86_64::branchSubPtr):
- (JSC::MacroAssemblerX86_64::branchPtrWithPatch):
- (JSC::MacroAssemblerX86_64::storePtrWithPatch):
- (JSC::MacroAssemblerX86::add32):
- (JSC::MacroAssemblerX86::sub32):
- (JSC::MacroAssemblerX86::load32):
- (JSC::MacroAssemblerX86::store32):
- (JSC::MacroAssemblerX86::branch32):
- (JSC::MacroAssemblerX86::branchPtrWithPatch):
- (JSC::MacroAssemblerX86::storePtrWithPatch):
- (JSC::MacroAssembler::pop):
- (JSC::MacroAssembler::peek):
- (JSC::MacroAssembler::poke):
- (JSC::MacroAssembler::branchPtr):
- (JSC::MacroAssembler::branch32):
- (JSC::MacroAssembler::branch16):
- (JSC::MacroAssembler::branchTestPtr):
- (JSC::MacroAssembler::addPtr):
- (JSC::MacroAssembler::andPtr):
- (JSC::MacroAssembler::orPtr):
- (JSC::MacroAssembler::rshiftPtr):
- (JSC::MacroAssembler::subPtr):
- (JSC::MacroAssembler::xorPtr):
- (JSC::MacroAssembler::loadPtr):
- (JSC::MacroAssembler::loadPtrWithAddressOffsetPatch):
- (JSC::MacroAssembler::storePtr):
- (JSC::MacroAssembler::storePtrWithAddressOffsetPatch):
- (JSC::MacroAssembler::branchAddPtr):
- (JSC::MacroAssembler::branchSubPtr):
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileBinaryArithOp):
+ Feature defines are difficult to maintain on Windows builds
+ https://bugs.webkit.org/show_bug.cgi?id=33883
-2009-02-04 Alexey Proskuryakov <ap@webkit.org>
+ FeatureDefines.vsprops are now maintained in a way similar to
+ Configurations/FeatureDefines.xcconfig, with the added advantage
+ of having a single FeatureDefines file across all projects.
- Reviewed by Sam Weinig.
+ * Configurations/FeatureDefines.xcconfig: Add comments about keeping feature definitions in sync.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add FeatureDefines.vsprops inherited property sheet.
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add FeatureDefines.vsprops inherited property sheet.
- https://bugs.webkit.org/show_bug.cgi?id=23681
- Worker tests crash in debug builds if run --singly
+2010-01-20 Csaba Osztrogonác <ossy@webkit.org>
- The crash happened because worker threads continued running while debug-only static objects
- were already being destroyed on main thread.
+ [Qt] Unreviewed buildfix for r53547.
- * runtime/Structure.cpp: Create static debug-only sets in heap, so that they don't get
- destroyed.
+ * DerivedSources.pro:
- * wtf/ThreadingPthreads.cpp: Changed assertions to conventional form.
+2010-01-20 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-2009-02-03 Gavin Barraclough <barraclough@apple.com>
+ Reviewed by Simon Hausmann.
- Reviewed by Geoff Garen.
+ [Qt] Make extraCompilers for generated sources depend on their scripts
- https://bugs.webkit.org/show_bug.cgi?id=23715
+ * DerivedSources.pro:
- Simplify MacroAssembler interface, by combining comparison methods.
- Seprate operations are combined as follows:
- jz32/jnz32/jzPtr/jnzPtr -> branchTest32/branchTestPtr,
- j*(Add|Mul|Sub)32/j*(Add|Mul|Sub)Ptr -> branch(Add|Mul|Sub)32/branch(Add|Mul|Sub)Ptr
- j*32/j*Ptr (all other two op combparisons) -> branch32/brnachPtr
- set*32 -> set32
+2010-01-19 Brian Weinstein <bweinstein@apple.com>
- Also, represent the Scale of BaseIndex addresses as a plain enum (0,1,2,3),
- instead of as multiplicands (1,2,4,8).
+ Reviewed by Tim Hatcher.
- This patch singificantly reduces replication of code, and increases functionality supported
- by the MacroAssembler. No performance impact.
+ When JavaScriptCore calls Debugger::Exception, have it pass a
+ hasHandler variable that represents if exception is being handled
+ in the same function (not in a parent on the call stack).
+
+ This just adds a new parameter, no behavior is changed.
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::):
- (JSC::MacroAssembler::branchPtr):
- (JSC::MacroAssembler::branchPtrWithPatch):
- (JSC::MacroAssembler::branch32):
- (JSC::MacroAssembler::branch16):
- (JSC::MacroAssembler::branchTestPtr):
- (JSC::MacroAssembler::branchTest32):
- (JSC::MacroAssembler::branchAddPtr):
- (JSC::MacroAssembler::branchAdd32):
- (JSC::MacroAssembler::branchMul32):
- (JSC::MacroAssembler::branchSubPtr):
- (JSC::MacroAssembler::branchSub32):
- (JSC::MacroAssembler::set32):
- (JSC::MacroAssembler::setTest32):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::jccRel32):
- (JSC::X86Assembler::setccOpcode):
- (JSC::X86Assembler::cmpq_mr):
- (JSC::X86Assembler::setcc_r):
- (JSC::X86Assembler::sete_r):
- (JSC::X86Assembler::setne_r):
- (JSC::X86Assembler::jne):
- (JSC::X86Assembler::je):
- (JSC::X86Assembler::jl):
- (JSC::X86Assembler::jb):
- (JSC::X86Assembler::jle):
- (JSC::X86Assembler::jbe):
- (JSC::X86Assembler::jge):
- (JSC::X86Assembler::jg):
- (JSC::X86Assembler::ja):
- (JSC::X86Assembler::jae):
- (JSC::X86Assembler::jo):
- (JSC::X86Assembler::jp):
- (JSC::X86Assembler::js):
- (JSC::X86Assembler::jcc):
- (JSC::X86Assembler::X86InstructionFormatter::putModRmSib):
- * jit/JIT.cpp:
- (JSC::JIT::compileOpStrictEq):
- (JSC::JIT::emitSlowScriptCheck):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileFastArith_op_lshift):
- (JSC::JIT::compileFastArith_op_mod):
- (JSC::JIT::compileFastArith_op_post_inc):
- (JSC::JIT::compileFastArith_op_post_dec):
- (JSC::JIT::compileFastArith_op_pre_inc):
- (JSC::JIT::compileFastArith_op_pre_dec):
- (JSC::JIT::compileBinaryArithOp):
- (JSC::JIT::compileFastArith_op_add):
- (JSC::JIT::compileFastArith_op_mul):
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCall):
- (JSC::JIT::compileOpCallSlowCase):
- * jit/JITInlineMethods.h:
- (JSC::JIT::checkStructure):
- (JSC::JIT::emitJumpIfJSCell):
- (JSC::JIT::emitJumpIfNotJSCell):
- (JSC::JIT::emitJumpIfImmediateNumber):
- (JSC::JIT::emitJumpIfNotImmediateNumber):
- (JSC::JIT::emitJumpIfImmediateInteger):
- (JSC::JIT::emitJumpIfNotImmediateInteger):
- (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compilePutByIdHotPath):
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdProtoList):
- (JSC::JIT::privateCompileGetByIdChainList):
- (JSC::JIT::privateCompileGetByIdChain):
- * runtime/RegExp.cpp:
- (JSC::RegExp::match):
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateEnter):
- (JSC::WREC::Generator::generateIncrementIndex):
- (JSC::WREC::Generator::generateLoadCharacter):
- (JSC::WREC::Generator::generateJumpIfNotEndOfInput):
- (JSC::WREC::Generator::generateBackreferenceQuantifier):
- (JSC::WREC::Generator::generateNonGreedyQuantifier):
- (JSC::WREC::Generator::generateGreedyQuantifier):
- (JSC::WREC::Generator::generatePatternCharacterPair):
- (JSC::WREC::Generator::generatePatternCharacter):
- (JSC::WREC::Generator::generateCharacterClassInvertedRange):
- (JSC::WREC::Generator::generateCharacterClassInverted):
- (JSC::WREC::Generator::generateAssertionBOL):
- (JSC::WREC::Generator::generateAssertionEOL):
- (JSC::WREC::Generator::generateAssertionWordBoundary):
- (JSC::WREC::Generator::generateBackreference):
-
-2009-02-03 David Hyatt <hyatt@apple.com>
-
- Fix a bug in Vector's shrinkCapacity method. It did not properly copy elements into the inline buffer
- when shrinking down from a size that was greater than the inline capacity.
-
- Reviewed by Maciej
+ * debugger/Debugger.h:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::throwException):
- * wtf/Vector.h:
- (WTF::VectorBuffer::VectorBuffer):
- (WTF::VectorBuffer::allocateBuffer):
+2010-01-18 Maciej Stachowiak <mjs@apple.com>
-2009-02-03 Simon Hausmann <simon.hausmann@nokia.com>
+ Reviewed by Adam Barth.
- Reviewed by Tor Arne Vestbø.
+ Inline functions that are hot in DOM manipulation
+ https://bugs.webkit.org/show_bug.cgi?id=33820
+
+ (3% speedup on Dromaeo DOM Core tests)
- Added accessor for JSByteArray storage.
+ * runtime/WeakGCMap.h:
+ (JSC::::get): inline
- * runtime/JSByteArray.h:
- (JSC::JSByteArray::storage):
+2010-01-19 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-2009-02-03 Dmitry Titov <dimich@chromium.org>
+ Unreviewed build fix for JIT with RVCT.
- Reviewed by Alexey Proskuryakov.
+ Remove IMPORT statement; cti_vm_throw is already defined in JITStubs.h.
+ Remove extra ')'.
- https://bugs.webkit.org/show_bug.cgi?id=23560
- Implement SharedTimer on WorkerRunLoop
+ * jit/JITStubs.cpp:
+ (JSC::ctiVMThrowTrampoline):
- * JavaScriptCore.exp:
- Forgot to expose ThreadCondition::timedWait() in one of previous patches.
+2010-01-19 Geoffrey Garen <ggaren@apple.com>
-2009-02-02 Oliver Hunt <oliver@apple.com>
+ Reviewed by Oliver Hunt.
- Reviewed by Gavin Barraclough.
+ REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/
+ https://bugs.webkit.org/show_bug.cgi?id=33826
- <https://bugs.webkit.org/show_bug.cgi?id=21414> REGRESSION: Regular Expressions and character classes, shorthands and ranges
- <rdar://problem/6543487>
+ This bug was caused by a GC-protected object being destroyed early by
+ Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers
+ to GC-protected memory to be valid.
- In certain circumstances when WREC::Generator::generateCharacterClassInvertedRange invokes
- itself recursively, it will incorrectly emit (and thus consume) the next single character
- match in the current character class. As WREC uses a binary search this out of sequence
- codegen could result in a character match being missed and so cause the regex to produce
- incorrect results.
+ The solution is to do two passes of tear-down in Heap::destroy. The first
+ pass tears down all unprotected objects. The second pass ASSERTs that all
+ previously protected objects are now unprotected, and then tears down
+ all perviously protected objects. These two passes simulate the two passes
+ that would have been required to free a protected object during normal GC.
+
+ * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap.
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateCharacterClassInvertedRange):
+ * runtime/Collector.cpp:
+ (JSC::Heap::destroy): Moved ASSERTs to here.
+ (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its
+ setter to the function that does the shrinking.
+ (JSC::Heap::freeBlocks): Implemented above algorithm.
+ (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink.
-2009-02-02 Darin Adler <darin@apple.com>
+2010-01-19 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Dave Hyatt.
+ Reviewed by NOBODY (build fix).
- Bug 23676: Speed up uses of reserveCapacity on new vectors by adding a new reserveInitialCapacity
- https://bugs.webkit.org/show_bug.cgi?id=23676
+ Reverting r53455, breaks 2 javascriptcore tests.
- * API/JSObjectRef.cpp:
- (JSObjectCopyPropertyNames): Use reserveInitialCapacity.
- * parser/Lexer.cpp:
- (JSC::Lexer::Lexer): Ditto.
- (JSC::Lexer::clear): Ditto.
+ * API/JSContextRef.cpp:
+ * runtime/Collector.cpp:
+ (JSC::Heap::destroy):
+ (JSC::Heap::freeBlock):
+ (JSC::Heap::freeBlocks):
+ (JSC::Heap::shrinkBlocks):
- * wtf/Vector.h: Added reserveInitialCapacity, a more efficient version of
- reserveCapacity for use when the vector is brand new (still size 0 with no
- capacity other than the inline capacity).
+2010-01-18 Gavin Barraclough <barraclough@apple.com>
-2009-01-30 Mark Rowe <mrowe@apple.com>
+ Reviewed by NOBODY (build fix).
- Rubber-stamped by Oliver Hunt.
+ Revert r53454, since it causes much sadness in this world.
- <rdar://problem/6391501> Enable the JIT on Mac OS X x86_64 as it passes all tests.
+ * runtime/UString.cpp:
+ (JSC::UString::spliceSubstringsWithSeparators):
+ (JSC::UString::replaceRange):
+ * runtime/UStringImpl.cpp:
+ (JSC::UStringImpl::baseSharedBuffer):
+ (JSC::UStringImpl::sharedBuffer):
+ (JSC::UStringImpl::~UStringImpl):
+ * runtime/UStringImpl.h:
+ (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
+ (JSC::UntypedPtrAndBitfield::asPtr):
+ (JSC::UntypedPtrAndBitfield::operator&=):
+ (JSC::UntypedPtrAndBitfield::operator|=):
+ (JSC::UntypedPtrAndBitfield::operator&):
+ (JSC::UStringImpl::create):
+ (JSC::UStringImpl::cost):
+ (JSC::UStringImpl::isIdentifier):
+ (JSC::UStringImpl::setIsIdentifier):
+ (JSC::UStringImpl::ref):
+ (JSC::UStringImpl::deref):
+ (JSC::UStringImpl::checkConsistency):
+ (JSC::UStringImpl::UStringImpl):
+ (JSC::UStringImpl::bufferOwnerString):
+ (JSC::UStringImpl::bufferOwnership):
+ (JSC::UStringImpl::isStatic):
+ * wtf/StringHashFunctions.h:
+ (WTF::stringHash):
+
+2010-01-18 Geoffrey Garen <ggaren@apple.com>
- * wtf/Platform.h:
+ Reviewed by Oliver Hunt.
-2009-01-30 Oliver Hunt <oliver@apple.com>
+ REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/
+ https://bugs.webkit.org/show_bug.cgi?id=33826
- Reviewed by Mark Rowe and Sam Weinig.
+ This bug was caused by a GC-protected object being destroyed early by
+ Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers
+ to GC-protected memory to be valid.
- Finally fix load() to propagate exceptions correctly.
+ The solution is to do two passes of tear-down in Heap::destroy. The first
+ pass tears down all unprotected objects. The second pass ASSERTs that all
+ previously protected objects are now unprotected, and then tears down
+ all perviously protected objects. These two passes simulate the two passes
+ that would have been required to free a protected object during normal GC.
+
+ * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap.
- * jsc.cpp:
- (functionLoad):
+ * runtime/Collector.cpp:
+ (JSC::Heap::destroy): Moved ASSERTs to here.
+ (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its
+ setter to the function that does the shrinking.
+ (JSC::Heap::freeBlocks): Implemented above algorithm.
+ (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink.
-2009-01-30 David Levin <levin@chromium.org>
+2010-01-18 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Darin Adler.
+ Reviewed by Oliver Hunt.
- https://bugs.webkit.org/show_bug.cgi?id=23618
- Templated worker tasks should be more error proof to use.
- Fix Chromium build.
+ https://bugs.webkit.org/show_bug.cgi?id=33731
+ Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags).
- * wtf/TypeTraits.h:
- (WTF::IsConvertibleToInteger::IsConvertibleToDouble):
- Avoid "possible loss of data" warning when using Microsoft's C++ compiler
- by avoiding an implicit conversion of int types to doubles.
+ This break the OS X Leaks tool. Instead, free up some more bits from the refCount.
-2009-01-30 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+ * runtime/UStringImpl.cpp:
+ (JSC::UStringImpl::sharedBuffer):
+ (JSC::UStringImpl::~UStringImpl):
+ * runtime/UStringImpl.h:
+ (JSC::UStringImpl::cost):
+ (JSC::UStringImpl::checkConsistency):
+ (JSC::UStringImpl::UStringImpl):
+ (JSC::UStringImpl::bufferOwnerString):
+ (JSC::UStringImpl::):
+ * wtf/StringHashFunctions.h:
+ (WTF::stringHash):
- Reviewed by Simon Hausmann.
+2010-01-18 Kent Tamura <tkent@chromium.org>
- Bug 23580: GNU mode RVCT compilation support
- <https://bugs.webkit.org/show_bug.cgi?id=23580>
+ Reviewed by Darin Adler.
- * pcre/pcre_exec.cpp: Use COMPILER(GCC) instead of __GNUC__.
- * wtf/FastMalloc.cpp: Ditto.
- (WTF::TCMallocStats::):
- * wtf/Platform.h: Don't define COMPILER(GCC) with RVCT --gnu.
+ HTMLInputElement::valueAsDate setter support for type=month.
+ https://bugs.webkit.org/show_bug.cgi?id=33021
-2009-01-30 David Levin <levin@chromium.org>
+ Expose the following functions to be used by WebCore:
+ - WTF::msToyear()
+ - WTF::dayInYear()
+ - WTF::monthFromDayInYear()
+ - WTF::dayInMonthFromDayInYear()
- Reviewed by Alexey Proskuryakov.
+ * JavaScriptCore.exp:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * wtf/DateMath.cpp:
+ (WTF::msToYear): Remove "static inline".
+ (WTF::dayInYear): Remove "static inline".
+ (WTF::monthFromDayInYear): Remove "static inline".
+ (WTF::dayInMonthFromDayInYear): Remove "static inline".
+ * wtf/DateMath.h: Declare the above functions.
- Bug 23618: Templated worker tasks should be more error proof to use
- <https://bugs.webkit.org/show_bug.cgi?id=23618>
+2010-01-18 Darin Adler <darin@apple.com>
- Add the type traits needed for the generic worker tasks
- and compile asserts for them.
+ Fix build by reverting the previous change.
- Add a summary header to the TypeTraits.h file to explain what is in there.
+ * runtime/UString.h: Rolled out the FastAllocBase base class.
+ It was making UString larger, and therefore JSString larger,
+ and too big for a garbage collection cell.
- Add a note to explain IsPod's deficiencies.
+ This raises the unpleasant possibility that many classes became
+ larger because we added the FastAllocBase base class. I am
+ worried about this, and it needs to be investigated.
- * wtf/TypeTraits.h:
+2010-01-18 Zoltan Horvath <zoltan@webkit.org>
-2009-01-30 David Levin <levin@chromium.org>
+ Reviewed by Darin Adler.
- Reviewed by Alexey Proskuryakov.
+ Allow custom memory allocation control for UString class
+ https://bugs.webkit.org/show_bug.cgi?id=27831
- Bug 23616: Various "template helpers" should be consolidated from isolated files in JavaScriptCore.
- <https://bugs.webkit.org/show_bug.cgi?id=23616>
+ Inherits the following class from FastAllocBase because it is
+ instantiated by 'new' and no need to be copyable:
- * wtf/TypeTraits.h: Moved RemovePointer, IsPod, IsInteger to this file.
+ class name - instantiated at:
+ classs UString - JavaScriptCore/runtime/UString.cpp:160
- * wtf/OwnPtr.h: Use RemovePointer from TypeTraits.h.
- * wtf/RetainPtr.h: Ditto.
+ * runtime/UString.h:
- * wtf/HashTraits.h: Use IsInteger from TypeTraits.h.
+2010-01-18 Evan Cheng <evan.cheng@apple.com>
- * wtf/VectorTraits.h: Use IsPod from TypeTraits.h.
+ Reviewed by Darin Adler.
- * GNUmakefile.am:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- Added TypeTraits.h.
+ Add some ALWAYS_INLINE for key functions not inlined by some versions of GCC.
+ rdar://problem/7553780
-2009-01-29 Stephanie Lewis <slewis@apple.com>
+ * runtime/JSObject.h:
+ (JSC::JSObject::getPropertySlot): ALWAYS_INLINE both overloads.
+ * runtime/JSString.h:
+ (JSC::JSString::JSString): ALWAYS_INLINE the version that takes a UString.
+ * runtime/UString.h:
+ (JSC::operator==): ALWAYS_INLINE the version that compares two UString objects.
- RS by Oliver Hunt.
+2010-01-18 Csaba Osztrogonác <ossy@webkit.org>
- Update the order files.
+ Reviewed by Darin Adler.
- * JavaScriptCore.order:
+ Delete dftables-xxxxxxxx.in files automatically.
+ https://bugs.webkit.org/show_bug.cgi?id=33796
-2009-01-29 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ * pcre/dftables: unlink unnecessary temporary file.
- Reviewed by Oliver Hunt.
+2010-01-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
- Bug 23551: Crash on page load with profiler enabled and running
- <https://bugs.webkit.org/show_bug.cgi?id=23551>
- <rdar://problem/6529521>
+ Reviewed by Simon Hausmann.
- Interpreter::execute(FunctionBodyNode*, ...) calls Profiler::didExecute()
- with a stale CallFrame. If some part of the scope chain has already been
- freed, Profiler::didExecute() will crash when attempting to get the lexical
- global object. The fix is to make the didExecute() call use the caller's
- CallFrame, not the one made for the function call. In this case, the
- willExecute() call should also be changed to match.
+ [Qt] Force qmake to generate a single makefile for DerivedSources.pro
- Since this occurs in the actual inspector JS, it is difficult to reduce.
- I couldn't make a layout test.
+ * DerivedSources.pro:
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::execute):
+2010-01-18 Csaba Osztrogonác <ossy@webkit.org>
-2009-01-28 Sam Weinig <sam@webkit.org>
+ Rubber-stamped by Gustavo Noronha Silva.
- Reviewed by Gavin Barraclough.
+ Rolling out r53391 and r53392 because of random crashes on buildbots.
+ https://bugs.webkit.org/show_bug.cgi?id=33731
- Fix for <rdar://problem/6525537>
- Hang occurs when closing Installer window (iTunes, Aperture)
+ * bytecode/CodeBlock.h:
+ (JSC::CallLinkInfo::seenOnce):
+ (JSC::CallLinkInfo::setSeen):
+ (JSC::MethodCallLinkInfo::MethodCallLinkInfo):
+ (JSC::MethodCallLinkInfo::seenOnce):
+ (JSC::MethodCallLinkInfo::setSeen):
+ * jit/JIT.cpp:
+ (JSC::JIT::unlinkCall):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::patchMethodCallProto):
+ * runtime/UString.cpp:
+ (JSC::UString::spliceSubstringsWithSeparators):
+ (JSC::UString::replaceRange):
+ * runtime/UString.h:
+ * runtime/UStringImpl.cpp:
+ (JSC::UStringImpl::baseSharedBuffer):
+ (JSC::UStringImpl::sharedBuffer):
+ (JSC::UStringImpl::~UStringImpl):
+ * runtime/UStringImpl.h:
+ (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
+ (JSC::UntypedPtrAndBitfield::asPtr):
+ (JSC::UntypedPtrAndBitfield::operator&=):
+ (JSC::UntypedPtrAndBitfield::operator|=):
+ (JSC::UntypedPtrAndBitfield::operator&):
+ (JSC::UStringImpl::create):
+ (JSC::UStringImpl::cost):
+ (JSC::UStringImpl::isIdentifier):
+ (JSC::UStringImpl::setIsIdentifier):
+ (JSC::UStringImpl::ref):
+ (JSC::UStringImpl::deref):
+ (JSC::UStringImpl::checkConsistency):
+ (JSC::UStringImpl::UStringImpl):
+ (JSC::UStringImpl::bufferOwnerString):
+ (JSC::UStringImpl::bufferOwnership):
+ (JSC::UStringImpl::isStatic):
+ * wtf/StringHashFunctions.h:
+ (WTF::stringHash):
+
+2010-01-18 Simon Hausmann <simon.hausmann@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Fix the build with strict gcc and RVCT versions: It's not legal to cast a
+ pointer to a function to a void* without an intermediate cast to a non-pointer
+ type. A cast to a ptrdiff_t inbetween fixes it.
- * JavaScriptCore.exp: Export JSGlobalData::sharedInstance.
+ * runtime/JSString.h:
+ (JSC::Fiber::JSString):
-2009-01-28 Sam Weinig <sam@webkit.org>
+2010-01-15 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Geoff Garen.
+ Reviewed by Oliver Hunt.
- Initial patch by Mark Rowe.
+ https://bugs.webkit.org/show_bug.cgi?id=33731
+ Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags).
- <rdar://problem/6519356>
- REGRESSION (r36006): "out of memory" alert running dromaeo on Windows
+ This break the OS X Leaks tool. Instead, free up some more bits from the refCount.
- Report the cost of the ArrayStorage vector more accurately/often.
+ * runtime/UStringImpl.cpp:
+ (JSC::UStringImpl::sharedBuffer):
+ (JSC::UStringImpl::~UStringImpl):
+ * runtime/UStringImpl.h:
+ (JSC::UStringImpl::cost):
+ (JSC::UStringImpl::checkConsistency):
+ (JSC::UStringImpl::UStringImpl):
+ (JSC::UStringImpl::bufferOwnerString):
+ (JSC::UStringImpl::):
+ * wtf/StringHashFunctions.h:
+ (WTF::stringHash):
- * runtime/JSArray.cpp:
- (JSC::JSArray::JSArray): Report the extra cost even for a filled array
- because JSString using the single character optimization and immediates
- wont increase the cost themselves.
- (JSC::JSArray::putSlowCase): Update the cost when increasing the size of
- the array.
- (JSC::JSArray::increaseVectorLength): Ditto.
+2010-01-15 Gavin Barraclough <barraclough@apple.com>
-2009-01-28 Sam Weinig <sam@webkit.org>
+ Reviewed by Oliver Hunt.
- Reviewed by Geoff Garen.
+ https://bugs.webkit.org/show_bug.cgi?id=33731
+ Remove uses of PtrAndFlags from JIT data stuctures.
- Fix for <rdar://problem/6129678>
- REGRESSION (Safari 3-4): Local variable not accessible from Dashcode console or variables view
-
- Iterating the properties of activation objects accessed through the WebKit debugging
- APIs was broken by forced conversion of JSActivation to the global object. To fix this,
- we use a proxy activation object that acts more like a normal JSObject.
-
- * debugger/DebuggerActivation.cpp: Added.
- (JSC::DebuggerActivation::DebuggerActivation):
- (JSC::DebuggerActivation::mark):
- (JSC::DebuggerActivation::className):
- (JSC::DebuggerActivation::getOwnPropertySlot):
- (JSC::DebuggerActivation::put):
- (JSC::DebuggerActivation::putWithAttributes):
- (JSC::DebuggerActivation::deleteProperty):
- (JSC::DebuggerActivation::getPropertyNames):
- (JSC::DebuggerActivation::getPropertyAttributes):
- (JSC::DebuggerActivation::defineGetter):
- (JSC::DebuggerActivation::defineSetter):
- (JSC::DebuggerActivation::lookupGetter):
- (JSC::DebuggerActivation::lookupSetter):
- * debugger/DebuggerActivation.h: Added.
- Proxy JSActivation object for Debugging.
+ These break the OS X Leaks tool. Free up a bit in CallLinkInfo, and invalid
+ permutation of pointer states in MethodCallLinkInfo to represent the removed bits.
- * runtime/JSActivation.h:
- (JSC::JSActivation::isActivationObject): Added.
- * runtime/JSObject.h:
- (JSC::JSObject::isActivationObject): Added.
+ * bytecode/CodeBlock.h:
+ (JSC::CallLinkInfo::seenOnce):
+ (JSC::CallLinkInfo::setSeen):
+ (JSC::MethodCallLinkInfo::MethodCallLinkInfo):
+ (JSC::MethodCallLinkInfo::seenOnce):
+ (JSC::MethodCallLinkInfo::setSeen):
+ * jit/JIT.cpp:
+ (JSC::JIT::unlinkCall):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::patchMethodCallProto):
+ * runtime/UString.h:
-2009-01-28 David Kilzer <ddkilzer@apple.com>
+2010-01-16 Maciej Stachowiak <mjs@apple.com>
- Bug 23490: Remove initialRefCount argument from RefCounted class
+ Reviewed by Oliver Hunt.
- <https://bugs.webkit.org/show_bug.cgi?id=23490>
+ Cache JS string values made from DOM strings (Dromaeo speedup)
+ https://bugs.webkit.org/show_bug.cgi?id=33768
+ <rdar://problem/7353576>
- Reviewed by Darin Adler.
+ * runtime/JSString.h:
+ (JSC::jsStringWithFinalizer): Added new mechanism for a string to have an optional
+ finalizer callback, for the benefit of weak-referencing caches.
+ (JSC::):
+ (JSC::Fiber::JSString):
+ (JSC::Fiber::~JSString):
+ * runtime/JSString.cpp:
+ (JSC::JSString::resolveRope): Clear fibers so this doesn't look like a string with a finalizer.
+ * runtime/WeakGCMap.h: Include "Collector.h" to make this header includable by itself.
- RefCountedBase now always starts with a ref count of 1, so there
- is no need to pass the initialRefCount into the class anymore.
+2010-01-15 Sam Weinig <sam@webkit.org>
- * wtf/ByteArray.h:
- (WTF::ByteArray::ByteArray): Removed call to RefCounted(1).
- * wtf/RefCounted.h:
- (WTF::RefCountedBase::RefCountedBase): Changed to start with a
- ref count of 1.
- (WTF::RefCounted::RefCounted): Removed initialRefCount argument
- and removed call to RefCounted(1).
+ Reviewed by Maciej Stachowiak.
-2009-01-26 Adele Peterson <adele@apple.com>
+ Fix for <rdar://problem/7548432>
+ Add ALWAYS_INLINE to jsLess for a 1% speedup on llvm-gcc.
- Build fix.
+ * runtime/Operations.h:
+ (JSC::jsLess):
- * debugger/Debugger.cpp:
+2010-01-14 Geoffrey Garen <ggaren@apple.com>
-2009-01-26 Gavin Barraclough <barraclough@apple.com>
+ Reviewed by Oliver Hunt.
- Reviewed by Darin Adler.
+ REGRESISON: Google maps buttons not working properly
+ https://bugs.webkit.org/show_bug.cgi?id=31871
- Fixes for eq null & neq null, on 64-bit JIT.
- https://bugs.webkit.org/show_bug.cgi?id=23559
+ REGRESSION(r52948): JavaScript exceptions thrown on Google Maps when
+ getting directions for a second time
+ https://bugs.webkit.org/show_bug.cgi?id=33446
+
+ SunSpider and v8 report no change.
- This patch degrades 64-bit JIT performance on some benchmarks,
- due to the whole not-being-incorrect thing.
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::tryCacheGetByID): Update our cached offset in case
+ flattening the dictionary changed any of its offsets.
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::tryCacheGetByID):
+ (JSC::DEFINE_STUB_FUNCTION):
+ * runtime/Operations.h:
+ (JSC::normalizePrototypeChain): ditto
-2009-01-26 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+2010-01-14 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Gavin Barraclough.
+ Reviewed by Oliver Hunt.
- Bug 23552: Dashcode evaluator no longer works after making ExecStates actual call frames
- <https://bugs.webkit.org/show_bug.cgi?id=23552>
- <rdar://problem/6398839>
+ https://bugs.webkit.org/show_bug.cgi?id=33705
+ UStringImpl::create() should use internal storage
- * JavaScriptCore.exp:
- * debugger/Debugger.cpp:
- (JSC::evaluateInGlobalCallFrame): Added so that WebScriptCallFrame can
- evaluate JS starting from a global call frame.
- * debugger/Debugger.h:
+ When creating a UStringImpl copying of a UChar*, we can use an internal buffer,
+ by calling UStringImpl::tryCreateUninitialized().
-2009-01-25 Mark Rowe <mrowe@apple.com>
+ Also, remove duplicate of copyChars from JSString, call UStringImpl's version.
- Rubber-stamped by Dan Bernstein.
+ Small (max 0.5%) progression on Sunspidey.
- Improve the consistency of settings in our .xcconfig files.
+ * runtime/JSString.cpp:
+ (JSC::JSString::resolveRope):
+ * runtime/UStringImpl.h:
+ (JSC::UStringImpl::create):
- * Configurations/Base.xcconfig: Enable GCC_OBJC_CALL_CXX_CDTORS to match other projects.
+2010-01-14 Gavin Barraclough <barraclough@apple.com>
-2009-01-25 Darin Adler <darin@apple.com>
+ Reviewed by Sam Weinig.
- Reviewed by Mark Rowe.
+ Make naming & behaviour of UString[Impl] methods more consistent.
+ https://bugs.webkit.org/show_bug.cgi?id=33702
+
+ UString::create() creates a copy of the UChar* passed, but UStringImpl::create() assumes
+ that it should assume ownership of the provided buffer (with UString::createNonCopying()
+ and UStringImpl::createCopying() providing the alternate behaviours). Unify on create()
+ taking a copy of the provided buffer. For non-copying cases, use the name 'adopt', and
+ make this method take a Vector<UChar>&. For cases where non-copying construction was being
+ used, other than from a Vector<UChar>, change the code to allocate the storage along with
+ the UStringImpl using UStringImpl::createUninitialized(). (The adopt() method also more
+ closely matches that of WebCore::StringImpl).
+
+ Also, UString::createUninitialized() and UStringImpl::createUninitialized() have incompatible
+ behaviours, in that the UString form sets the provided UChar* to a null or non-null value to
+ indicate success or failure, but UStringImpl uses the returned PassRefPtr<UStringImpl> to
+ indicate when allocation has failed (potentially leaving the output Char* uninitialized).
+ This is also incompatible with WebCore::StringImpl's behaviour, in that
+ StringImpl::createUninitialized() will CRASH() if unable to allocate. Some uses of
+ createUninitialized() in JSC are unsafe, since they do not test the result for null.
+ UStringImpl's indication is preferable, since we may want a successful call to set the result
+ buffer to 0 (specifically, StringImpl returns 0 for the buffer where createUninitialized()
+ returns the empty string, which seems reasonable to catch bugs early). UString's method
+ cannot support UStringImpl's behaviour directly, since it returns an object rather than a
+ pointer.
+ - remove UString::createUninitialized(), replace with calls to UStringImpl::createUninitialized()
+ - create a UStringImpl::tryCreateUninitialized() form UStringImpl::createUninitialized(),
+ with current behaviour, make createUninitialized() crash on failure to allocate.
+ - make cases in JSC that do not check the result call createUninitialized(), and cases that do
+ check call tryCreateUninitialized().
- Bug 23352: Turn on more compiler warnings in the Mac build
- https://bugs.webkit.org/show_bug.cgi?id=23352
+ Rename computedHash() to existingHash(), to bring this in line wih WebCore::StringImpl.
- Turn on the following warnings:
+ * API/JSClassRef.cpp:
+ (OpaqueJSClassContextData::OpaqueJSClassContextData):
+ * JavaScriptCore.exp:
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncToString):
+ * runtime/Identifier.cpp:
+ (JSC::CStringTranslator::translate):
+ (JSC::UCharBufferTranslator::translate):
+ * runtime/JSString.cpp:
+ (JSC::JSString::resolveRope):
+ * runtime/Lookup.cpp:
+ (JSC::HashTable::createTable):
+ * runtime/Lookup.h:
+ (JSC::HashTable::entry):
+ * runtime/StringBuilder.h:
+ (JSC::StringBuilder::release):
+ * runtime/StringConstructor.cpp:
+ (JSC::stringFromCharCodeSlowCase):
+ * runtime/StringPrototype.cpp:
+ (JSC::substituteBackreferencesSlow):
+ (JSC::stringProtoFuncToLowerCase):
+ (JSC::stringProtoFuncToUpperCase):
+ (JSC::stringProtoFuncFontsize):
+ (JSC::stringProtoFuncLink):
+ * runtime/Structure.cpp:
+ (JSC::Structure::despecifyDictionaryFunction):
+ (JSC::Structure::get):
+ (JSC::Structure::despecifyFunction):
+ (JSC::Structure::put):
+ (JSC::Structure::remove):
+ (JSC::Structure::insertIntoPropertyMapHashTable):
+ (JSC::Structure::checkConsistency):
+ * runtime/Structure.h:
+ (JSC::Structure::get):
+ * runtime/StructureTransitionTable.h:
+ (JSC::StructureTransitionTableHash::hash):
+ * runtime/UString.cpp:
+ (JSC::createRep):
+ (JSC::UString::UString):
+ (JSC::UString::spliceSubstringsWithSeparators):
+ (JSC::UString::replaceRange):
+ (JSC::UString::operator=):
+ * runtime/UString.h:
+ (JSC::UString::adopt):
+ (JSC::IdentifierRepHash::hash):
+ (JSC::makeString):
+ * runtime/UStringImpl.h:
+ (JSC::UStringImpl::adopt):
+ (JSC::UStringImpl::create):
+ (JSC::UStringImpl::createUninitialized):
+ (JSC::UStringImpl::tryCreateUninitialized):
+ (JSC::UStringImpl::existingHash):
- -Wcast-qual
- -Wextra-tokens
- -Wformat=2
- -Winit-self
- -Wmissing-noreturn
- -Wpacked
- -Wrendundant-decls
+2010-01-13 Kent Hansen <kent.hansen@nokia.com>
- * Configurations/Base.xcconfig: Added the new warnings. Switched to -Wextra instead of
- -W for clarity since we don't have to support the older versions of gcc that require the
- old -W syntax. Since we now use -Wformat=2, removed -Wformat-security. Also removed
- -Wno-format-y2k since we can have that one on now.
+ Reviewed by Oliver Hunt.
-2009-01-25 Judit Jasz <jasy@inf.u-szeged.hu>
+ JSON.stringify and JSON.parse needlessly process properties in the prototype chain
+ https://bugs.webkit.org/show_bug.cgi?id=33053
- Reviewed by Darin Adler.
-
- Compilation problem fixing
- http://bugs.webkit.org/show_bug.cgi?id=23497
+ * runtime/JSONObject.cpp:
+ (JSC::Stringifier::Holder::appendNextProperty):
+ (JSC::Walker::walk):
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCall): Use JSValuePtr::encode.
+2010-01-13 Gavin Barraclough <barraclough@apple.com>
-2009-01-25 Darin Adler <darin@apple.com>
+ Reviewed by NOBODY (buildfix).
- Reviewed by Sam Weinig.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
- Bug 23352: Turn on more compiler warnings in the Mac build
- https://bugs.webkit.org/show_bug.cgi?id=23352
+2010-01-13 Alexey Proskuryakov <ap@apple.com>
- Fourth patch: Deal with the last few stray warnings.
+ Reviewed by Darin Adler.
- * parser/Parser.cpp: Only declare jscyyparse if it's not already declared.
- This makes both separate compilation and all-in-one compilation work with the
- -Wredundant-decls warning.
+ https://bugs.webkit.org/show_bug.cgi?id=33641
+ Assertion failure in Lexer.cpp if input stream ends while in string escape
-2009-01-25 Darin Adler <darin@apple.com>
+ Test: fast/js/end-in-string-escape.html
- Reviewed by Sam Weinig.
+ * parser/Lexer.cpp: (JSC::Lexer::lex): Bail out quickly on end of stream, not giving the
+ assertion a chance to fire.
- Bug 23352: Turn on more compiler warnings in the Mac build
- https://bugs.webkit.org/show_bug.cgi?id=23352
+2010-01-13 Gavin Barraclough <barraclough@apple.com>
- Third patch: Use the noreturn attribute on functions that don't
- return to prepare for the use of the -Wmissing-noreturn warning.
+ Reviewed by NOBODY (buildfix).
- * jit/JITCall.cpp:
- (JSC::unreachable): Added NO_RETURN.
- * jsc.cpp:
- (functionQuit): Ditto.
- (printUsageStatement): Ditto.
- * wtf/AlwaysInline.h: Added definition of NO_RETURN.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
-2009-01-24 Oliver Hunt <oliver@apple.com>
+2010-01-13 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Maciej Stachowiak.
+ Rubber stamped by Sam Weinig & Darin Adler.
- Force inlining of Lexer::matchPunctuator
+ Three quick fixes to UStringImpl.
+ - The destroy() method can be switched back to a normal destructor; since we've switched
+ the way we protect static strings to be using an odd ref-count the destroy() won't abort.
+ - The cost() calculation logic was wrong. If you have multiple JSStrings wrapping substrings
+ of a base string, they would each report the full cost of the base string to the heap.
+ Instead we should only be reporting once for the base string.
+ - Remove the overloaded new operator calling fastMalloc, replace this with a 'using' to pick
+ up the implementation from the parent class.
- 2.2% win when parsing jQuery, Mootools, Prototype, etc
+ * JavaScriptCore.exp:
+ * runtime/UStringImpl.cpp:
+ (JSC::UStringImpl::~UStringImpl):
+ * runtime/UStringImpl.h:
+ (JSC::UStringImpl::cost):
+ (JSC::UStringImpl::deref):
- * parser/Lexer.h:
+2010-01-13 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-2009-01-23 Gavin Barraclough <barraclough@apple.com>
+ Reviewed by Simon Hausmann.
- Reviewed by Geoff Garen.
+ [Qt] Split the build process in two different .pro files.
+ This allows qmake to be run once all source files are available.
- Fix for <rdar://problem/6126212>
- Ensure that callbacks out from the JSC interface are only allowed
- to return in reverse-chronological order to that in which they were
- made. If we allow earlier callbacks to return first, then this may
- result in setions of the RegisterFile in use by another thread
- being trampled.
+ * DerivedSources.pro: Added.
+ * JavaScriptCore.pri: Moved source generation to DerivedSources.pro
+ * pcre/pcre.pri: Moved source generation to DerivedSources.pro
- See uber-comment in JSLock.h for details.
+2010-01-12 Kent Hansen <kent.hansen@nokia.com>
- * runtime/JSLock.cpp:
- (JSC::JSLock::DropAllLocks::DropAllLocks):
- (JSC::JSLock::DropAllLocks::~DropAllLocks):
+ Reviewed by Geoffrey Garen.
-2009-01-23 Darin Adler <darin@apple.com>
+ [ES5] Implement Object.getOwnPropertyNames
+ https://bugs.webkit.org/show_bug.cgi?id=32242
- Try to fix WX build.
+ Add an extra argument to getPropertyNames() and getOwnPropertyNames()
+ (and all reimplementations thereof) that indicates whether non-enumerable
+ properties should be added.
- * runtime/JSGlobalObjectFunctions.h: Include <wtf/unicode/Unicode.h>
- for the definition of UChar.
+ * API/JSCallbackObject.h:
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::getOwnPropertyNames):
+ * JavaScriptCore.exp:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * debugger/DebuggerActivation.cpp:
+ (JSC::DebuggerActivation::getOwnPropertyNames):
+ * debugger/DebuggerActivation.h:
+ * runtime/Arguments.cpp:
+ (JSC::Arguments::getOwnPropertyNames):
+ * runtime/Arguments.h:
+ * runtime/CommonIdentifiers.h:
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::getOwnPropertyNames):
+ * runtime/JSArray.h:
+ * runtime/JSByteArray.cpp:
+ (JSC::JSByteArray::getOwnPropertyNames):
+ * runtime/JSByteArray.h:
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::getOwnPropertyNames):
+ * runtime/JSFunction.h:
+ * runtime/JSNotAnObject.cpp:
+ (JSC::JSNotAnObject::getOwnPropertyNames):
+ * runtime/JSNotAnObject.h:
+ * runtime/JSObject.cpp:
+ (JSC::getClassPropertyNames):
+ (JSC::JSObject::getPropertyNames):
+ (JSC::JSObject::getOwnPropertyNames):
+ * runtime/JSObject.h:
+ * runtime/JSVariableObject.cpp:
+ (JSC::JSVariableObject::getOwnPropertyNames):
+ * runtime/JSVariableObject.h:
+ * runtime/ObjectConstructor.cpp:
+ (JSC::ObjectConstructor::ObjectConstructor):
+ (JSC::objectConstructorGetOwnPropertyNames):
+ * runtime/RegExpMatchesArray.h:
+ (JSC::RegExpMatchesArray::getOwnPropertyNames):
+ * runtime/StringObject.cpp:
+ (JSC::StringObject::getOwnPropertyNames):
+ * runtime/StringObject.h:
+ * runtime/Structure.cpp: Rename getEnumerablePropertyNames() to getPropertyNames(), which takes an extra argument.
+ (JSC::Structure::getPropertyNames):
+ * runtime/Structure.h:
+ (JSC::):
-2009-01-23 Anders Carlsson <andersca@apple.com>
+2010-01-12 Alexey Proskuryakov <ap@apple.com>
- * Configurations/Base.xcconfig:
- GCC 4.0 build fix.
-
- * runtime/JSNumberCell.h:
- 64-bit build fix.
+ Reviewed by Darin Adler.
-2009-01-23 Anders Carlsson <andersca@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=33540
+ Make it possible to build in debug mode with assertions disabled
- Reviewed by Sam Weinig.
-
- Turn on -Wmissing-prototypes and fix the warnings.
-
- * API/JSClassRef.cpp:
- (clearReferenceToPrototype):
- * Configurations/Base.xcconfig:
- * runtime/Collector.cpp:
- (JSC::getPlatformThreadRegisters):
- * runtime/ExceptionHelpers.cpp:
- (JSC::createError):
- * runtime/JSGlobalObjectFunctions.h:
- * runtime/JSNumberCell.h:
- * runtime/UString.cpp:
- (JSC::initializeStaticBaseString):
- (JSC::createRep):
+ * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION):
+ * runtime/Identifier.cpp: (JSC::Identifier::checkSameIdentifierTable):
* wtf/FastMalloc.cpp:
- * wtf/Threading.cpp:
+ * wtf/HashTable.h: (WTF::HashTableConstIterator::checkValidity):
+ * yarr/RegexCompiler.cpp: (JSC::Yarr::compileRegex):
-2009-01-22 Mark Rowe <mrowe@apple.com>
+2009-11-23 Yong Li <yoli@rim.com>
- Rubber-stamped by Anders Carlsson.
+ Reviewed by Adam Treat.
- Disable GCC_WARN_ABOUT_MISSING_PROTOTYPES temporarily.
+ Make GIF decoder support down-sampling
+ https://bugs.webkit.org/show_bug.cgi?id=31806
+
+ * platform/image-decoders/ImageDecoder.cpp:
+ (WebCore::ImageDecoder::upperBoundScaledY):
+ (WebCore::ImageDecoder::lowerBoundScaledY):
+ * platform/image-decoders/ImageDecoder.h:
+ (WebCore::RGBA32Buffer::scaledRect):
+ (WebCore::RGBA32Buffer::setScaledRect):
+ (WebCore::ImageDecoder::scaledSize):
+ * platform/image-decoders/gif/GIFImageDecoder.cpp:
+ (WebCore::GIFImageDecoder::sizeNowAvailable):
+ (WebCore::GIFImageDecoder::initFrameBuffer):
+ (WebCore::copyOnePixel):
+ (WebCore::GIFImageDecoder::haveDecodedRow):
+ (WebCore::GIFImageDecoder::frameComplete):
+
+2010-01-12 Adam Barth <abarth@webkit.org>
- Current versions of Xcode only respect it for C and Objective-C files,
- and our code doesn't currently compile if it is applied to C++ and
- Objective-C++ files.
+ Reviewed by Eric Seidel.
- * Configurations/Base.xcconfig:
+ ecma/Date/15.9.5.12-1.js fails every night at midnight
+ https://bugs.webkit.org/show_bug.cgi?id=28041
-2009-01-22 Steve Falkenburg <sfalken@apple.com>
+ Change the test to use a concrete time instead of "now".
- https://bugs.webkit.org/show_bug.cgi?id=23489
-
- Return currentTime() in correct units for the two early return cases.
+ * tests/mozilla/ecma/Date/15.9.5.10-1.js:
+ * tests/mozilla/ecma/Date/15.9.5.12-1.js:
- Reviewed by Mark Rowe.
+2010-01-11 Csaba Osztrogonác <ossy@webkit.org>
- * wtf/CurrentTime.cpp:
- (WTF::currentTime):
+ Reviewed by Ariya Hidayat.
-2009-01-22 Sam Weinig <sam@webkit.org>
+ [Qt] Enable JIT and YARR_JIT if (CPU(X86_64) && OS(LINUX) && GCC_VERSION >= 40100)
- Reviewed by Mark Rowe.
+ * wtf/Platform.h:
- Fix for <rdar://problem/6439247>
- FastMalloc allocating an extra 4MB of meta-data on 64-bit
+2010-01-11 Geoffrey Garen <ggaren@apple.com>
- Rely on the fact that on all known x86-64 platforms only use 48 bits of
- address space to shrink the initial size of the PageMap from ~4MB to 120K.
- For 64-bit we still use a 3-level radix tree, but now each level is only 12
- bits wide.
+ Reviewed by Alexey Proskuryakov.
- No performance change.
+ https://bugs.webkit.org/show_bug.cgi?id=33481
+ Uninitialized data members in ArrayStorage
+
+ SunSpider reports no change.
- * wtf/FastMalloc.cpp:
- (WTF::MapSelector): Add specialization for 64 bit that takes into account the
- 16 bits of unused address space on x86-64.
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::JSArray): Initialize missing data members in the two cases
+ where we don't use fastZeroedMalloc, so it doesn't happen automatically.
-2009-01-22 Beth Dakin <bdakin@apple.com>
+2010-01-11 Steve Falkenburg <sfalken@apple.com>
Reviewed by Sam Weinig.
- Fix for https://bugs.webkit.org/show_bug.cgi?id=23461 LayoutTests/
- fast/js/numeric-conversion.html is broken, and corresponding
- <rdar://problem/6514842>
+ https://bugs.webkit.org/show_bug.cgi?id=33480
+
+ Improve debugging reliability for WTF on Windows.
+ Store WTF static library's PDB file into a better location.
- The basic problem here is that parseInt(Infinity) should be NaN,
- but we were returning 0. NaN matches Safari 3.2.1 and Firefox.
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * runtime/JSGlobalObjectFunctions.cpp:
- (JSC::globalFuncParseInt):
+2010-01-11 Steve Falkenburg <sfalken@apple.com>
-2009-01-22 Oliver Hunt <oliver@apple.com>
+ Windows build fix.
+ Remove extraneous entries from def file causing build warning.
- Reviewed by Geoff Garen.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
- <rdar://problem/6516853> (r39682-r39736) JSFunFuzz: crash on "(function(){({ x2: x }), })()"
- <https://bugs.webkit.org/show_bug.cgi?id=23479>
+2010-01-10 Kent Hansen <kent.hansen@nokia.com>
- Automatic semicolon insertion was resulting in this being accepted in the initial
- nodeless parsing, but subsequent reparsing for code generation would fail, leading
- to a crash. The solution is to ensure that reparsing a function performs parsing
- in the same state as the initial parse. We do this by modifying the saved source
- ranges to include rather than exclude the opening and closing braces.
+ Reviewed by Darin Adler.
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): add an assertion for successful recompile
- * parser/Lexer.h:
- (JSC::Lexer::sourceCode): include rather than exclude braces.
- * parser/Nodes.h:
- (JSC::FunctionBodyNode::toSourceString): No need to append braces anymore.
+ RegExp.prototype.toString returns "//" for empty regular expressions
+ https://bugs.webkit.org/show_bug.cgi?id=33319
-2009-01-22 Dmitry Titov <dimich@chromium.org>
+ "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA.
- Reviewed by Alexey Proskuryakov.
+ * runtime/RegExpPrototype.cpp:
+ (JSC::regExpProtoFuncToString):
+
+ * tests/mozilla/ecma_2/RegExp/properties-001.js:
+ (AddRegExpCases):
+ * tests/mozilla/js1_2/regexp/toString.js:
+ Update relevant Mozilla tests (Mozilla has had this behavior since November 2003).
+
+2010-01-10 Darin Adler <darin@apple.com>
+
+ * tests/mozilla/ecma/Array/15.4.1.1.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Array/15.4.1.2.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Array/15.4.2.1-1.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Array/15.4.2.2-1.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Array/15.4.2.2-2.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Array/15.4.2.3.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Array/15.4.3.2.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Array/15.4.3.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Array/15.4.4.1.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Array/15.4.4.js: Added property allow-tabs.
+ * tests/mozilla/ecma/LexicalConventions/7.7.4.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Math/15.8.2.13.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Math/15.8.2.16.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Math/15.8.2.18.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Math/15.8.2.2.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Math/15.8.2.4.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Math/15.8.2.5.js: Added property allow-tabs.
+ * tests/mozilla/ecma/Math/15.8.2.7.js: Added property allow-tabs.
+ * tests/mozilla/ecma/String/15.5.1.js: Added property allow-tabs.
+ * tests/mozilla/ecma/String/15.5.2.js: Added property allow-tabs.
+ * tests/mozilla/ecma/String/15.5.3.1-3.js: Added property allow-tabs.
+ * tests/mozilla/ecma/String/15.5.3.1-4.js: Added property allow-tabs.
+ * tests/mozilla/ecma/String/15.5.3.js: Added property allow-tabs.
+ * tests/mozilla/ecma/TypeConversion/9.5-2.js: Added property allow-tabs.
+ * tests/mozilla/ecma/jsref.js: Modified property allow-tabs.
+ * tests/mozilla/ecma/shell.js: Modified property allow-tabs.
+ * tests/mozilla/ecma_2/LexicalConventions/keywords-001.js: Added property allow-tabs.
+ * tests/mozilla/ecma_2/RegExp/exec-001.js: Added property allow-tabs.
+ * tests/mozilla/ecma_2/String/match-004.js: Added property allow-tabs.
+ * tests/mozilla/ecma_2/String/replace-001.js: Added property allow-tabs.
+ * tests/mozilla/ecma_2/String/split-002.js: Added property allow-tabs.
+ * tests/mozilla/ecma_2/jsref.js: Modified property allow-tabs.
+ * tests/mozilla/ecma_2/shell.js: Added property allow-tabs.
+ * tests/mozilla/ecma_3/Date/shell.js: Modified property allow-tabs.
+ * tests/mozilla/ecma_3/Exceptions/regress-181654.js: Added property allow-tabs.
+ * tests/mozilla/ecma_3/RegExp/regress-209067.js: Added property allow-tabs.
+ * tests/mozilla/ecma_3/RegExp/regress-85721.js: Added property allow-tabs.
+ * tests/mozilla/importList.html: Added property allow-tabs.
+ * tests/mozilla/js1_1/shell.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/Array/general1.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/Array/general2.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/Array/slice.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/Array/splice1.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/Array/splice2.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/Objects/toString-001.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/String/charCodeAt.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/String/concat.js: Modified property allow-tabs.
+ * tests/mozilla/js1_2/String/match.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/String/slice.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/function/Function_object.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/function/Number.js: Modified property allow-tabs.
+ * tests/mozilla/js1_2/function/String.js: Modified property allow-tabs.
+ * tests/mozilla/js1_2/function/nesting.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/function/regexparg-1.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/function/regexparg-2-n.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/jsref.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/operator/equality.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/operator/strictEquality.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_dollar_number.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_input.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_input_as_array.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_lastIndex.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_lastMatch.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_lastMatch_as_array.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_lastParen.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_lastParen_as_array.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_leftContext.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_leftContext_as_array.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_multiline.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_multiline_as_array.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_object.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_rightContext.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/RegExp_rightContext_as_array.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/alphanumeric.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/asterisk.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/backslash.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/backspace.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/beginLine.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/character_class.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/compile.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/control_characters.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/digit.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/dot.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/endLine.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/everything.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/exec.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/flags.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/global.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/hexadecimal.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/ignoreCase.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/interval.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/octal.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/parentheses.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/plus.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/question_mark.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/simple_form.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/source.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/special_characters.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/string_replace.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/string_search.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/string_split.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/test.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/toString.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/vertical_bar.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/whitespace.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/regexp/word_boundary.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/shell.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/statements/break.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/statements/continue.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/statements/do_while.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/statements/switch.js: Added property allow-tabs.
+ * tests/mozilla/js1_2/statements/switch2.js: Added property allow-tabs.
+ * tests/mozilla/js1_3/shell.js: Added property allow-tabs.
+ * tests/mozilla/js1_4/shell.js: Added property allow-tabs.
+ * tests/mozilla/js1_5/Regress/regress-111557.js: Added property allow-tabs.
+ * tests/mozilla/js1_5/Regress/regress-216320.js: Added property allow-tabs.
+ * tests/mozilla/menuhead.html: Added property allow-tabs.
+ * tests/mozilla/mklistpage.pl: Added property allow-tabs.
+ * tests/mozilla/runtests.pl: Added property allow-tabs.
+
+2010-01-08 Daniel Bates <dbates@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ https://bugs.webkit.org/show_bug.cgi?id=33417
+
+ Cleans up style errors exposed by the patch for bug #33198.
+ Moreover, fixes all "Weird number of spaces at line-start. Are you using a 4-space indent?"
+ errors reported by check-webkit-style.
+
+ No functionality was changed. So, no new tests.
- https://bugs.webkit.org/show_bug.cgi?id=23373
+ * wtf/Platform.h:
- Implement ThreadCondition::timedWait().
- Since we borrow the code for condition variables from other sources,
- I did the same for timedWait(). See comments in ThreadingWin.cpp for
- rationale and more info.
+2010-01-08 Kent Hansen <kent.hansen@nokia.com>
- * wtf/CONTRIBUTORS.pthreads-win32:
- Added. A list of Pthreads-win32 contributors mentioned in their license. The license itself
- is included into wtf/ThreadingWin32.cpp.
+ Reviewed by Eric Seidel.
- * wtf/Threading.h:
- * wtf/ThreadingWin.cpp:
- Additional info and Pthreads-win32 license at the beginning.
- (WTF::PlatformCondition::timedWait): new method, derived from Pthreads-win32.
- (WTF::PlatformCondition::signal): same
- (WTF::ThreadCondition::ThreadCondition):
- (WTF::ThreadCondition::~ThreadCondition):
- (WTF::ThreadCondition::wait): this now calls PlatformCondition::timedWait.
- (WTF::ThreadCondition::timedWait): same
- (WTF::ThreadCondition::signal): this now calls PlatformCondition::signal.
- (WTF::ThreadCondition::broadcast): same
-
-2009-01-21 Gavin Barraclough <barraclough@apple.com>
+ Don't store RegExp flags string representation
+ https://bugs.webkit.org/show_bug.cgi?id=33321
+
+ It's unused; the string representation is reconstructed from flags.
+
+ * runtime/RegExp.cpp:
+ (JSC::RegExp::RegExp):
+ * runtime/RegExp.h:
+
+2010-01-08 Geoffrey Garen <ggaren@apple.com>
Reviewed by Oliver Hunt.
- Fix for https://bugs.webkit.org/show_bug.cgi?id=23469.
+ Memory use grows grows possibly unbounded in this JavaScript Array test case
+ https://bugs.webkit.org/show_bug.cgi?id=31675
- We need to check all numbers in integer switches, not just those
- represented as integer JSImmediates.
+ This fixes one observed bug in this test case, which is that
+ arrays don't report extra cost for the sparse value maps.
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::cti_op_switch_imm):
+ SunSpider reports a small speedup.
-2009-01-21 Gavin Barraclough <barraclough@apple.com>
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::putSlowCase): Report extra memory cost for
+ the sparse value map.
+ * runtime/JSArray.h:
- Reviewed by Geoff Garen.
+2010-01-08 Yong Li <yoli@rim.com>
- Fix for https://bugs.webkit.org/show_bug.cgi?id=23468.
+ Reviewed by Darin Adler.
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::privateExecute):
+ Remove unnecessary #include from FastMalloc.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=33393
+
+ * wtf/FastMalloc.cpp:
+
+2010-01-08 Eric Seidel <eric@webkit.org>
-2009-01-21 Alexey Proskuryakov <ap@webkit.org>
+ No review, rolling out r52983.
+ http://trac.webkit.org/changeset/52983
+ https://bugs.webkit.org/show_bug.cgi?id=33321
- Suggested by Oliver Hunt. Reviewed by Oliver Hunt.
+ Broke 59 JavaScriptCore tests. I don't think Kent knew about
+ run-javascriptcore-tests. Sadly neither does the commit-bot,
+ yet.
- https://bugs.webkit.org/show_bug.cgi?id=23456
- Function argument names leak
+ * runtime/RegExp.cpp:
+ (JSC::RegExp::RegExp):
+ * runtime/RegExp.h:
+ (JSC::RegExp::flags):
- * parser/Nodes.cpp: (JSC::FunctionBodyNode::~FunctionBodyNode): Destruct parameter names.
+2010-01-08 Eric Seidel <eric@webkit.org>
-2009-01-20 Oliver Hunt <oliver@apple.com>
+ No review, rolling out r52981.
+ http://trac.webkit.org/changeset/52981
+ https://bugs.webkit.org/show_bug.cgi?id=33319
- Reviewed by NOBODY (Build fix).
+ Caused two JS tests to start failing:
+ ecma_2/RegExp/properties-001.js and js1_2/regexp/toString.js
- Windows build fix
+ * runtime/RegExpPrototype.cpp:
+ (JSC::regExpProtoFuncToString):
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
+2010-01-08 Kent Hansen <kent.hansen@nokia.com>
-2009-01-20 Gavin Barraclough <barraclough@apple.com>
+ Reviewed by Darin Adler.
- Reviewed by Mark Rowe.
+ Don't store RegExp flags string representation
+ https://bugs.webkit.org/show_bug.cgi?id=33321
- Structure property table deleted offset maps are being leaked.
- Probably shouldn't be doing that.
+ It's unused; the string representation is reconstructed from flags.
+
+ * runtime/RegExp.cpp:
+ (JSC::RegExp::RegExp):
+ * runtime/RegExp.h:
- https://bugs.webkit.org/show_bug.cgi?id=23442
+2010-01-08 Kent Hansen <kent.hansen@nokia.com>
- * runtime/Structure.cpp:
- (JSC::Structure::~Structure):
+ Reviewed by Darin Adler.
-2009-01-20 Oliver Hunt <oliver@apple.com>
+ RegExp.prototype.toString returns "//" for empty regular expressions
+ https://bugs.webkit.org/show_bug.cgi?id=33319
- Reviewed by NOBODY (build fix).
+ "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA.
- Attempt to fix gtk build
+ * runtime/RegExpPrototype.cpp:
+ (JSC::regExpProtoFuncToString):
- * GNUmakefile.am:
+2010-01-08 Norbert Leser <norbert.leser@nokia.com>
-2009-01-20 Darin Adler <darin@apple.com>
+ Reviewed by Darin Adler.
- * runtime/StringPrototype.cpp:
- (JSC::substituteBackreferences): Add back the initialization to fix the build.
+ RVCT compiler with "-Otime -O3" optimization tries to optimize out
+ inline new'ed pointers that are passed as arguments.
+ Proposed patch assigns new'ed pointer explicitly outside function call.
-2009-01-20 Darin Adler <darin@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=33084
- Reviewed by Mark Rowe.
+ * API/JSClassRef.cpp:
+ (OpaqueJSClass::OpaqueJSClass):
+ (OpaqueJSClassContextData::OpaqueJSClassContextData):
- Bug 23352: Turn on more compiler warnings in the Mac build
- https://bugs.webkit.org/show_bug.cgi?id=23352
+2010-01-08 Gabor Loki <loki@webkit.org>
- First patch: Fix some simple cases of various warnings.
+ Reviewed by Gavin Barraclough.
- * pcre/pcre_compile.cpp:
- (jsRegExpCompile): Use const_cast to change const-ness.
+ Remove an unnecessary cacheFlush from ARM_TRADITIONAL JIT
+ https://bugs.webkit.org/show_bug.cgi?id=33203
- * runtime/StringPrototype.cpp:
- (JSC::substituteBackreferences): Remove unneeded initialization and
- use UChar instead of unsigned short for UTF-16 values.
+ * assembler/ARMAssembler.cpp: Remove obsolete linkBranch function.
+ (JSC::ARMAssembler::executableCopy): Inline a clean linkBranch code.
+ * assembler/ARMAssembler.h:
+ (JSC::ARMAssembler::getLdrImmAddress): Use inline function.
+ (JSC::ARMAssembler::getLdrImmAddressOnPool): Ditto.
+ (JSC::ARMAssembler::patchPointerInternal): Remove an unnecessary cacheFlush.
+ (JSC::ARMAssembler::linkJump): Use patchPointerInternal instead of linkBranch.
+ (JSC::ARMAssembler::linkCall): Ditto.
+ (JSC::ARMAssembler::relinkCall): Ditto.
- * wtf/dtoa.cpp:
- (WTF::strtod): Use const_cast to change const-ness.
+2010-01-07 Gabor Loki <loki@webkit.org>
-2009-01-20 Oliver Hunt <oliver@apple.com>
+ Reviewed by Gavin Barraclough.
- Reviewed by NOBODY (build fix).
+ Build fix for JSVALUE32 when ENABLE_JIT_OPTIMIZE* are disabled
+ https://bugs.webkit.org/show_bug.cgi?id=33311
+
+ Move compileGetDirectOffset function to common part of JSVALUE32
+
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::compileGetDirectOffset):
+
+2010-01-07 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Allow call sites to determine if ASSERT_* and LOG_* macros are operational
+ https://bugs.webkit.org/show_bug.cgi?id=33020
+
+ * wtf/Assertions.h: Set ASSERT_MSG_DISABLED, FATAL_DISABLED,
+ ERROR_DISABLED, LOG_DISABLED to 1 if the compiler does not support
+ variadic macros. Refactor for better readibility.
+
+2010-01-07 Daniel Bates <dbates@rim.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=32987
+
+ Added ENABLE_XHTMLMP flag. Disabled by default.
+
+ * Configurations/FeatureDefines.xcconfig:
+
+2010-01-07 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Gavin Barraclough.
+
+ [Symbian] Port ARM traditional JIT Trampolines to RVCT
+ https://bugs.webkit.org/show_bug.cgi?id=30552
+
+ Take the GCC implementation and mechanically convert
+ it to RVCT syntax.
+
+ Use 'bx rX' instead of 'mov pc, rX' when it is available.
+
+ Developed in cooperation with Iain Campbell and Gabor Loki.
+
+ * JavaScriptCore.pri: Extra step to generate RVCT stubs. The
+ script generation intentionally executed all the time not just
+ for RVCT targets.
+
+ * create_rvct_stubs: Added. Perl script to expand precompiler macros
+ for RVCT assembler - the template is defined in JITStubs.cpp.
+
+ * jit/JITStubs.cpp:
+ (JSC::ctiTrampoline):
+ (JSC::ctiVMThrowTrampoline):
+ (JSC::ctiOpThrowNotCaught):
+
+2010-01-07 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Fix a crash seen on the buildbots.
+
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::init): Disable specific function tracking here,
+ instead of in WebCore, to ensure that the disabling happens before a
+ specific function can be registered.
+
+2010-01-07 Alexey Proskuryakov <ap@apple.com>
+
+ Mac build fix.
+
+ * JavaScriptCore.exp: Export new JSGlobalData static data members.
+
+2010-01-07 Alexey Proskuryakov <ap@apple.com>
+
+ Reviewed by Geoffrey Garen.
+
+ https://bugs.webkit.org/show_bug.cgi?id=33057
+ REGRESSION(r49365): typeof(xhr.responseText) != "string" in Windows
+
+ <rdar://problem/7296920> REGRESSION: WebKit fails to start PeaceKeeper benchmark
+
+ Test: fast/js/webcore-string-comparison.html
+
+ In r49365, some code was moved from JSString.cpp to JSString.h, and as a result, WebCore
+ got a way to directly instantiate JSStrings over DLL borders. Since vftable for JSString was
+ not exported, objects created from WebCore got a different vptr, and JavaScriptCore
+ optimizations that relied on vptr of all JSString objects being equal failed.
+
+ * config.h: Added a JS_EXPORTCLASS macro for exporting classes. It's currently the same as
+ JS_EXPORTDATA, but it clearly needed a new name.
+
+ * runtime/InitializeThreading.cpp:
+ (JSC::initializeThreadingOnce):
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::storeVPtrs):
+ (JSC::JSGlobalData::JSGlobalData):
+ (JSC::JSGlobalData::createNonDefault):
+ (JSC::JSGlobalData::create):
+ (JSC::JSGlobalData::sharedInstance):
+ * runtime/JSGlobalData.h:
+ Store vptrs just once, no need to repeatedly pick and copy them. This makes it possible to
+ assert vptr correctness in object destructors (which don't have access to JSGlobalData,
+ and even Heap::heap(this) will fail for fake objects created from storeVPtrs()).
+
+ * runtime/JSArray.cpp: (JSC::JSArray::~JSArray): Assert that vptr is what we expect it to be.
+ It's important to assert in destructor, because MSVC changes the vptr after constructor
+ is invoked.
+ * runtime/JSByteArray.cpp: (JSC::JSByteArray::~JSByteArray): Ditto.
+ * runtime/JSByteArray.h: Ditto.
+ * runtime/JSFunction.h: Ditto.
+ * runtime/JSFunction.cpp: (JSC::JSFunction::~JSFunction): Ditto.
+
+ * runtime/JSCell.h: (JSC::JSCell::setVPtr): Added a method to substitute vptr for another
+ one.
+
+ * runtime/JSString.h: Export JSString class together with its vftable, and tell other
+ libraries tp import it. This is needed on platforms that have a separate JavaScriptCore
+ dynamic library - and on Mac, we already did the export via JavaScriptCore.exp.
+ (JSC::JSString::~JSString): Assert tha vptr is what we expect it to be.
+ (JSC::fixupVPtr): Store a previously saved primary vftable pointer (do nothing if building
+ JavaScriptCore itself).
+ (JSC::jsSingleCharacterString): Call fixupVPtr in case this is call across DLL boundary.
+ (JSC::jsSingleCharacterSubstring): Ditto.
+ (JSC::jsNontrivialString): Ditto.
+ (JSC::jsString): Ditto.
+ (JSC::jsSubstring): Ditto.
+ (JSC::jsOwnedString): Ditto.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export the new static
+ JSGlobalData members that are used in WebCore via inline functions.
+
+2010-01-07 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Safari memory usage skyrockets using new Google AdWords interface
+ https://bugs.webkit.org/show_bug.cgi?id=33343
+
+ The memory use was caused by the global object creating too many structures
+ as it thrashed between different specific functions.
+
+ * runtime/Structure.cpp:
+ (JSC::Structure::Structure):
+ (JSC::Structure::addPropertyTransition):
+ (JSC::Structure::changePrototypeTransition):
+ (JSC::Structure::despecifyFunctionTransition):
+ (JSC::Structure::addAnonymousSlotsTransition):
+ (JSC::Structure::getterSetterTransition):
+ (JSC::Structure::toDictionaryTransition):
+ (JSC::Structure::addPropertyWithoutTransition):
+ (JSC::Structure::despecifyAllFunctions):
+ * runtime/Structure.h:
+ (JSC::Structure::disableSpecificFunctionTracking): Track a thrash count
+ for specific functions. Disable specific function tracking once the
+ thrash count has been hit.
+
+2010-01-07 Csaba Osztrogonác <ossy@webkit.org>
- Whoops, remove runtime/ByteArray references from .pri and .scons builds, update .bkl
+ Reviewed by Simon Hausmann.
+
+ [Qt] Enable JIT in debug mode on win32 after r51141 fixed the crashes.
* JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCoreSources.bkl:
-2009-01-20 Oliver Hunt <oliver@apple.com>
+2010-01-07 Zoltan Horvath <zoltan@webkit.org>
+
+ Reviewed by Holger Freyther.
- RS=Dan Bernstein.
+ [Mac] Build fix when FAST_MALLOC_MATCH_VALIDATION=1
+ https://bugs.webkit.org/show_bug.cgi?id=33312
- Move runtime/ByteArray to wtf/ByteArray
+ Using of operator += cause compile error on Mac, so it is changed to
+ "= static_cast<AllocAlignmentInteger*>(old_ptr) + 1".
+
+ * wtf/FastMalloc.cpp:
+ (WTF::TCMallocStats::realloc):
+
+2010-01-07 Zoltan Horvath <zoltan@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ [Qt] Build fix when FAST_MALLOC_MATCH_VALIDATION=1
+ https://bugs.webkit.org/show_bug.cgi?id=33312
+
+ Remove pByte (committed in r42344 from #20422), because pByte doesn't
+ exist and it is unnecessary.
+
+ * wtf/FastMalloc.cpp:
+ (WTF::TCMallocStats::realloc):
+
+2010-01-06 Gavin Barraclough <barraclough@apple.com>
+
+ QT build fix.
+
+ * runtime/Identifier.cpp:
+ (JSC::createIdentifierTableSpecific):
+
+2010-01-06 Gavin Barraclough <barraclough@apple.com>
+
+ Windows build fix part I.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+
+2010-01-06 Dan Bernstein <mitz@apple.com>
+
+ Build fix
+
+ * runtime/Identifier.cpp:
+ (JSC::createIdentifierTableSpecificCallback):
+
+2010-01-05 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=33236
+ Remove m_identifierTable pointer from UString
+
+ Currently every string holds a pointer so that during destruction,
+ if a string has been used as an identifier, it can remove itself
+ from the table. By instead accessing the identifierTable via a
+ thread specific tracking the table associated with the current
+ globaldata, we can save the memory cost of this pointer.
+
+ * API/APIShims.h:
+ (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
+ (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
+ (JSC::APICallbackShim::APICallbackShim):
+ (JSC::APICallbackShim::~APICallbackShim):
+
+ - change the API shims to track the identifierTable of the current JSGlobalData.
+
+ * API/JSContextRef.cpp:
+ (JSContextGroupCreate):
+
+ - update creation of JSGlobalData for API usage to use new create method.
+ - fix shim instanciation bug in JSGlobalContextCreateInGroup.
- * GNUmakefile.am:
* JavaScriptCore.exp:
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * runtime/JSByteArray.cpp:
- * runtime/JSByteArray.h:
- * wtf/ByteArray.cpp: Renamed from JavaScriptCore/runtime/ByteArray.cpp.
- (WTF::ByteArray::create):
- * wtf/ByteArray.h: Renamed from JavaScriptCore/runtime/ByteArray.h.
- (WTF::ByteArray::length):
- (WTF::ByteArray::set):
- (WTF::ByteArray::get):
- (WTF::ByteArray::data):
- (WTF::ByteArray::deref):
- (WTF::ByteArray::ByteArray):
+ * runtime/Completion.cpp:
+ (JSC::checkSyntax):
+ (JSC::evaluate):
-2009-01-19 Sam Weinig <sam@webkit.org>
+ - add asserts to check the identifierTable is being tracked correctly.
- Rubber-stamped by Gavin Barraclough.
+ * runtime/Identifier.cpp:
+ (JSC::IdentifierTable::~IdentifierTable):
+ (JSC::IdentifierTable::add):
+ (JSC::Identifier::remove):
+ (JSC::Identifier::checkSameIdentifierTable):
+ (JSC::createIdentifierTableSpecificCallback):
+ (JSC::createIdentifierTableSpecific):
+ (JSC::createDefaultDataSpecific):
- Remove temporary operator-> from JSValuePtr.
+ - Use currentIdentifierTable() instead of UStringImpl::m_identifierTable.
+ - Define methods to access the thread specific identifier tables.
+
+ * runtime/Identifier.h:
+ (JSC::ThreadIdentifierTableData::ThreadIdentifierTableData):
+ (JSC::defaultIdentifierTable):
+ (JSC::setDefaultIdentifierTable):
+ (JSC::currentIdentifierTable):
+ (JSC::setCurrentIdentifierTable):
+ (JSC::resetCurrentIdentifierTable):
+
+ - Declare methods to access the thread specific identifier tables.
+
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::createNonDefault):
+ (JSC::JSGlobalData::create):
+ (JSC::JSGlobalData::sharedInstance):
+
+ - creation of JSGlobalData objects, other than for API usage, associate themselves with the current thread.
+
+ * runtime/JSGlobalData.h:
+ * runtime/UStringImpl.cpp:
+ (JSC::UStringImpl::destroy):
+
+ - destroy() method should be using isIdentifier().
+
+ * runtime/UStringImpl.h:
+ (JSC::UStringImpl::isIdentifier):
+ (JSC::UStringImpl::setIsIdentifier):
+ (JSC::UStringImpl::checkConsistency):
+ (JSC::UStringImpl::UStringImpl):
+
+ - replace m_identifierTable with a single m_isIdentifier bit.
+
+ * wtf/StringHashFunctions.h:
+ (WTF::stringHash):
+
+ - change string hash result from 32-bit to 31-bit, to free a bit in UStringImpl for m_isIdentifier.
+
+2009-12-25 Patrick Gansterer <paroga@paroga.com>
+
+ Reviewed by Eric Seidel.
+
+ Buildfix for WinCE + style fixes.
+ https://bugs.webkit.org/show_bug.cgi?id=32939
- * API/JSCallbackFunction.cpp:
- (JSC::JSCallbackFunction::call):
- * API/JSCallbackObjectFunctions.h:
- (JSC::::call):
- (JSC::::toNumber):
- (JSC::::toString):
- * API/JSObjectRef.cpp:
- (JSObjectSetPrototype):
- * API/JSValueRef.cpp:
- (JSValueGetType):
- (JSValueIsUndefined):
- (JSValueIsNull):
- (JSValueIsBoolean):
- (JSValueIsNumber):
- (JSValueIsString):
- (JSValueIsObject):
- (JSValueIsObjectOfClass):
- (JSValueToBoolean):
- (JSValueToNumber):
- (JSValueToStringCopy):
- (JSValueToObject):
- * bytecode/CodeBlock.cpp:
- (JSC::valueToSourceString):
- (JSC::CodeBlock::mark):
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::isKnownNotImmediate):
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::emitEqualityOp):
- (JSC::keyForImmediateSwitch):
- * interpreter/Interpreter.cpp:
- (JSC::jsLess):
- (JSC::jsLessEq):
- (JSC::jsAddSlowCase):
- (JSC::jsAdd):
- (JSC::jsTypeStringForValue):
- (JSC::jsIsObjectType):
- (JSC::jsIsFunctionType):
- (JSC::isNotObject):
- (JSC::Interpreter::callEval):
- (JSC::Interpreter::throwException):
- (JSC::cachePrototypeChain):
- (JSC::Interpreter::tryCachePutByID):
- (JSC::countPrototypeChainEntriesAndCheckForProxies):
- (JSC::Interpreter::tryCacheGetByID):
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::tryCTICachePutByID):
- (JSC::Interpreter::tryCTICacheGetByID):
- (JSC::Interpreter::cti_op_convert_this):
- (JSC::Interpreter::cti_op_add):
- (JSC::Interpreter::cti_op_pre_inc):
- (JSC::Interpreter::cti_op_put_by_id_generic):
- (JSC::Interpreter::cti_op_get_by_id_generic):
- (JSC::Interpreter::cti_op_put_by_id):
- (JSC::Interpreter::cti_op_put_by_id_second):
- (JSC::Interpreter::cti_op_put_by_id_fail):
- (JSC::Interpreter::cti_op_get_by_id):
- (JSC::Interpreter::cti_op_get_by_id_second):
- (JSC::Interpreter::cti_op_get_by_id_self_fail):
- (JSC::Interpreter::cti_op_get_by_id_proto_list):
- (JSC::Interpreter::cti_op_get_by_id_proto_list_full):
- (JSC::Interpreter::cti_op_get_by_id_proto_fail):
- (JSC::Interpreter::cti_op_get_by_id_array_fail):
- (JSC::Interpreter::cti_op_get_by_id_string_fail):
- (JSC::Interpreter::cti_op_instanceof):
- (JSC::Interpreter::cti_op_del_by_id):
- (JSC::Interpreter::cti_op_mul):
- (JSC::Interpreter::cti_op_call_JSFunction):
- (JSC::Interpreter::cti_op_call_NotJSFunction):
- (JSC::Interpreter::cti_op_construct_JSConstruct):
- (JSC::Interpreter::cti_op_construct_NotJSConstruct):
- (JSC::Interpreter::cti_op_get_by_val):
- (JSC::Interpreter::cti_op_get_by_val_byte_array):
- (JSC::Interpreter::cti_op_sub):
- (JSC::Interpreter::cti_op_put_by_val):
- (JSC::Interpreter::cti_op_put_by_val_array):
- (JSC::Interpreter::cti_op_put_by_val_byte_array):
- (JSC::Interpreter::cti_op_loop_if_true):
- (JSC::Interpreter::cti_op_negate):
- (JSC::Interpreter::cti_op_div):
- (JSC::Interpreter::cti_op_pre_dec):
- (JSC::Interpreter::cti_op_not):
- (JSC::Interpreter::cti_op_jtrue):
- (JSC::Interpreter::cti_op_post_inc):
- (JSC::Interpreter::cti_op_lshift):
- (JSC::Interpreter::cti_op_bitand):
- (JSC::Interpreter::cti_op_rshift):
- (JSC::Interpreter::cti_op_bitnot):
- (JSC::Interpreter::cti_op_mod):
- (JSC::Interpreter::cti_op_post_dec):
- (JSC::Interpreter::cti_op_urshift):
- (JSC::Interpreter::cti_op_bitxor):
- (JSC::Interpreter::cti_op_bitor):
- (JSC::Interpreter::cti_op_push_scope):
- (JSC::Interpreter::cti_op_is_undefined):
- (JSC::Interpreter::cti_op_is_boolean):
- (JSC::Interpreter::cti_op_is_number):
- (JSC::Interpreter::cti_op_to_jsnumber):
- (JSC::Interpreter::cti_op_in):
- (JSC::Interpreter::cti_op_put_by_index):
- (JSC::Interpreter::cti_op_switch_imm):
- (JSC::Interpreter::cti_op_switch_char):
- (JSC::Interpreter::cti_op_switch_string):
- (JSC::Interpreter::cti_op_del_by_val):
- (JSC::Interpreter::cti_op_put_getter):
- (JSC::Interpreter::cti_op_put_setter):
- (JSC::Interpreter::cti_op_new_error):
- * interpreter/Interpreter.h:
- (JSC::Interpreter::isJSArray):
- (JSC::Interpreter::isJSString):
- (JSC::Interpreter::isJSByteArray):
- * interpreter/Register.h:
- (JSC::Register::marked):
- (JSC::Register::mark):
- * jit/JITInlineMethods.h:
- (JSC::JIT::getConstantOperandImmediateInt):
- (JSC::JIT::isOperandConstantImmediateInt):
* jsc.cpp:
(functionPrint):
- (functionDebug):
- (functionRun):
- (functionLoad):
- (runWithScripts):
- (runInteractive):
- * parser/Nodes.cpp:
- (JSC::processClauseList):
- * profiler/ProfileGenerator.cpp:
- (JSC::ProfileGenerator::addParentForConsoleStart):
- * profiler/Profiler.cpp:
- (JSC::Profiler::createCallIdentifier):
- * runtime/ArrayConstructor.cpp:
- (JSC::constructArrayWithSizeQuirk):
- * runtime/ArrayPrototype.cpp:
- (JSC::arrayProtoFuncToString):
- (JSC::arrayProtoFuncToLocaleString):
- (JSC::arrayProtoFuncJoin):
- (JSC::arrayProtoFuncConcat):
- (JSC::arrayProtoFuncPop):
- (JSC::arrayProtoFuncPush):
- (JSC::arrayProtoFuncReverse):
- (JSC::arrayProtoFuncShift):
- (JSC::arrayProtoFuncSlice):
- (JSC::arrayProtoFuncSort):
- (JSC::arrayProtoFuncSplice):
- (JSC::arrayProtoFuncUnShift):
- (JSC::arrayProtoFuncFilter):
- (JSC::arrayProtoFuncMap):
- (JSC::arrayProtoFuncEvery):
- (JSC::arrayProtoFuncForEach):
- (JSC::arrayProtoFuncSome):
- (JSC::arrayProtoFuncIndexOf):
- (JSC::arrayProtoFuncLastIndexOf):
- * runtime/BooleanConstructor.cpp:
- (JSC::constructBoolean):
- (JSC::callBooleanConstructor):
- * runtime/BooleanPrototype.cpp:
- (JSC::booleanProtoFuncToString):
- (JSC::booleanProtoFuncValueOf):
- * runtime/Collector.cpp:
- (JSC::Heap::protect):
- (JSC::Heap::unprotect):
- (JSC::Heap::heap):
- (JSC::Heap::collect):
- (JSC::typeName):
- * runtime/Completion.cpp:
- (JSC::evaluate):
- * runtime/DateConstructor.cpp:
- (JSC::constructDate):
- (JSC::dateParse):
- (JSC::dateUTC):
- * runtime/DateInstance.h:
- (JSC::DateInstance::internalNumber):
- * runtime/DatePrototype.cpp:
- (JSC::formatLocaleDate):
- (JSC::fillStructuresUsingTimeArgs):
- (JSC::fillStructuresUsingDateArgs):
- (JSC::dateProtoFuncToString):
- (JSC::dateProtoFuncToUTCString):
- (JSC::dateProtoFuncToDateString):
- (JSC::dateProtoFuncToTimeString):
- (JSC::dateProtoFuncToLocaleString):
- (JSC::dateProtoFuncToLocaleDateString):
- (JSC::dateProtoFuncToLocaleTimeString):
- (JSC::dateProtoFuncGetTime):
- (JSC::dateProtoFuncGetFullYear):
- (JSC::dateProtoFuncGetUTCFullYear):
- (JSC::dateProtoFuncToGMTString):
- (JSC::dateProtoFuncGetMonth):
- (JSC::dateProtoFuncGetUTCMonth):
- (JSC::dateProtoFuncGetDate):
- (JSC::dateProtoFuncGetUTCDate):
- (JSC::dateProtoFuncGetDay):
- (JSC::dateProtoFuncGetUTCDay):
- (JSC::dateProtoFuncGetHours):
- (JSC::dateProtoFuncGetUTCHours):
- (JSC::dateProtoFuncGetMinutes):
- (JSC::dateProtoFuncGetUTCMinutes):
- (JSC::dateProtoFuncGetSeconds):
- (JSC::dateProtoFuncGetUTCSeconds):
- (JSC::dateProtoFuncGetMilliSeconds):
- (JSC::dateProtoFuncGetUTCMilliseconds):
- (JSC::dateProtoFuncGetTimezoneOffset):
- (JSC::dateProtoFuncSetTime):
- (JSC::setNewValueFromTimeArgs):
- (JSC::setNewValueFromDateArgs):
- (JSC::dateProtoFuncSetYear):
- (JSC::dateProtoFuncGetYear):
- * runtime/ErrorConstructor.cpp:
- (JSC::constructError):
- * runtime/ErrorPrototype.cpp:
- (JSC::errorProtoFuncToString):
- * runtime/ExceptionHelpers.cpp:
- (JSC::createError):
- (JSC::createErrorMessage):
- * runtime/FunctionConstructor.cpp:
- (JSC::constructFunction):
- * runtime/FunctionPrototype.cpp:
- (JSC::functionProtoFuncToString):
- (JSC::functionProtoFuncApply):
- (JSC::functionProtoFuncCall):
- * runtime/GetterSetter.cpp:
- (JSC::GetterSetter::toObject):
- * runtime/JSActivation.cpp:
- (JSC::JSActivation::getOwnPropertySlot):
- * runtime/JSArray.cpp:
- (JSC::JSArray::put):
- (JSC::JSArray::mark):
- (JSC::JSArray::sort):
- (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
- (JSC::JSArray::compactForSorting):
- * runtime/JSByteArray.h:
- (JSC::JSByteArray::setIndex):
- * runtime/JSCell.h:
- (JSC::asCell):
- * runtime/JSFunction.cpp:
- (JSC::JSFunction::call):
- (JSC::JSFunction::construct):
- * runtime/JSGlobalObject.cpp:
- (JSC::markIfNeeded):
- (JSC::lastInPrototypeChain):
- * runtime/JSGlobalObjectFunctions.cpp:
- (JSC::encode):
- (JSC::decode):
- (JSC::globalFuncEval):
- (JSC::globalFuncParseInt):
- (JSC::globalFuncParseFloat):
- (JSC::globalFuncIsNaN):
- (JSC::globalFuncIsFinite):
- (JSC::globalFuncEscape):
- (JSC::globalFuncUnescape):
- (JSC::globalFuncJSCPrint):
- * runtime/JSImmediate.cpp:
- (JSC::JSImmediate::toThisObject):
- (JSC::JSImmediate::toObject):
- (JSC::JSImmediate::prototype):
- (JSC::JSImmediate::toString):
- * runtime/JSImmediate.h:
- * runtime/JSObject.cpp:
- (JSC::JSObject::mark):
- (JSC::JSObject::put):
- (JSC::callDefaultValueFunction):
- (JSC::JSObject::getPrimitiveNumber):
- (JSC::JSObject::defineGetter):
- (JSC::JSObject::defineSetter):
- (JSC::JSObject::lookupGetter):
- (JSC::JSObject::lookupSetter):
- (JSC::JSObject::hasInstance):
- (JSC::JSObject::toNumber):
- (JSC::JSObject::toString):
- * runtime/JSObject.h:
- (JSC::JSObject::JSObject):
- (JSC::JSObject::inlineGetOwnPropertySlot):
- (JSC::JSObject::getOwnPropertySlotForWrite):
- (JSC::JSObject::getPropertySlot):
- (JSC::JSValuePtr::get):
- * runtime/JSPropertyNameIterator.h:
- (JSC::JSPropertyNameIterator::create):
- * runtime/JSString.cpp:
- (JSC::JSString::getOwnPropertySlot):
- * runtime/JSValue.h:
- * runtime/JSWrapperObject.cpp:
- (JSC::JSWrapperObject::mark):
- * runtime/JSWrapperObject.h:
- (JSC::JSWrapperObject::setInternalValue):
- * runtime/MathObject.cpp:
- (JSC::mathProtoFuncAbs):
- (JSC::mathProtoFuncACos):
- (JSC::mathProtoFuncASin):
- (JSC::mathProtoFuncATan):
- (JSC::mathProtoFuncATan2):
- (JSC::mathProtoFuncCeil):
- (JSC::mathProtoFuncCos):
- (JSC::mathProtoFuncExp):
- (JSC::mathProtoFuncFloor):
- (JSC::mathProtoFuncLog):
- (JSC::mathProtoFuncMax):
- (JSC::mathProtoFuncMin):
- (JSC::mathProtoFuncPow):
- (JSC::mathProtoFuncRound):
- (JSC::mathProtoFuncSin):
- (JSC::mathProtoFuncSqrt):
- (JSC::mathProtoFuncTan):
- * runtime/NativeErrorConstructor.cpp:
- (JSC::NativeErrorConstructor::NativeErrorConstructor):
- (JSC::NativeErrorConstructor::construct):
- * runtime/NumberConstructor.cpp:
- (JSC::constructWithNumberConstructor):
- (JSC::callNumberConstructor):
- * runtime/NumberPrototype.cpp:
- (JSC::numberProtoFuncToString):
- (JSC::numberProtoFuncToLocaleString):
- (JSC::numberProtoFuncValueOf):
- (JSC::numberProtoFuncToFixed):
- (JSC::numberProtoFuncToExponential):
- (JSC::numberProtoFuncToPrecision):
- * runtime/ObjectConstructor.cpp:
- (JSC::constructObject):
- * runtime/ObjectPrototype.cpp:
- (JSC::objectProtoFuncValueOf):
- (JSC::objectProtoFuncHasOwnProperty):
- (JSC::objectProtoFuncIsPrototypeOf):
- (JSC::objectProtoFuncDefineGetter):
- (JSC::objectProtoFuncDefineSetter):
- (JSC::objectProtoFuncLookupGetter):
- (JSC::objectProtoFuncLookupSetter):
- (JSC::objectProtoFuncPropertyIsEnumerable):
- (JSC::objectProtoFuncToLocaleString):
- (JSC::objectProtoFuncToString):
- * runtime/Operations.h:
- (JSC::JSValuePtr::equalSlowCaseInline):
- (JSC::JSValuePtr::strictEqual):
- (JSC::JSValuePtr::strictEqualSlowCaseInline):
- * runtime/Protect.h:
- (JSC::gcProtect):
- (JSC::gcUnprotect):
- * runtime/RegExpConstructor.cpp:
- (JSC::setRegExpConstructorInput):
- (JSC::setRegExpConstructorMultiline):
- (JSC::constructRegExp):
- * runtime/RegExpObject.cpp:
- (JSC::setRegExpObjectLastIndex):
- (JSC::RegExpObject::match):
- * runtime/RegExpPrototype.cpp:
- (JSC::regExpProtoFuncTest):
- (JSC::regExpProtoFuncExec):
- (JSC::regExpProtoFuncCompile):
- (JSC::regExpProtoFuncToString):
- * runtime/StringConstructor.cpp:
- (JSC::stringFromCharCodeSlowCase):
- (JSC::stringFromCharCode):
- (JSC::constructWithStringConstructor):
- (JSC::callStringConstructor):
- * runtime/StringPrototype.cpp:
- (JSC::stringProtoFuncReplace):
- (JSC::stringProtoFuncToString):
- (JSC::stringProtoFuncCharAt):
- (JSC::stringProtoFuncCharCodeAt):
- (JSC::stringProtoFuncConcat):
- (JSC::stringProtoFuncIndexOf):
- (JSC::stringProtoFuncLastIndexOf):
- (JSC::stringProtoFuncMatch):
- (JSC::stringProtoFuncSearch):
- (JSC::stringProtoFuncSlice):
- (JSC::stringProtoFuncSplit):
- (JSC::stringProtoFuncSubstr):
- (JSC::stringProtoFuncSubstring):
- (JSC::stringProtoFuncToLowerCase):
- (JSC::stringProtoFuncToUpperCase):
- (JSC::stringProtoFuncLocaleCompare):
- (JSC::stringProtoFuncBig):
- (JSC::stringProtoFuncSmall):
- (JSC::stringProtoFuncBlink):
- (JSC::stringProtoFuncBold):
- (JSC::stringProtoFuncFixed):
- (JSC::stringProtoFuncItalics):
- (JSC::stringProtoFuncStrike):
- (JSC::stringProtoFuncSub):
- (JSC::stringProtoFuncSup):
- (JSC::stringProtoFuncFontcolor):
- (JSC::stringProtoFuncFontsize):
- (JSC::stringProtoFuncAnchor):
- (JSC::stringProtoFuncLink):
- * runtime/Structure.cpp:
- (JSC::Structure::Structure):
- (JSC::Structure::getEnumerablePropertyNames):
- (JSC::Structure::createCachedPrototypeChain):
- * runtime/Structure.h:
- (JSC::Structure::mark):
- * runtime/StructureChain.cpp:
- (JSC::StructureChain::StructureChain):
-
-2009-01-19 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- Bug 23409: REGRESSION: RegExp 'replace()' function improperly processes '$$'
- <https://bugs.webkit.org/show_bug.cgi?id=23409>
- <rdar://problem/6505723>
-
- Test: fast/js/string-replace-3.html
-
- * runtime/StringPrototype.cpp:
- (JSC::substituteBackreferences): Remove code that adds an extra $ -- not sure
- how this ever worked.
-
-2009-01-16 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Oliver Hunt.
-
- On x86-64 jit, cache JSImmedate::TagMask & JSImmedate::TagTypeNumber in
- registers, save reloading them every time they're used.
-
- Draws x86-64 jit performance close to that of i386 jit.
-
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::subPtr):
- (JSC::MacroAssembler::jnzPtr):
- (JSC::MacroAssembler::jzPtr):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- * jit/JIT.h:
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileBinaryArithOpSlowCase):
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitJumpIfJSCell):
- (JSC::JIT::emitJumpIfNotJSCell):
- (JSC::JIT::emitJumpIfImmediateNumber):
- (JSC::JIT::emitJumpIfNotImmediateNumber):
- (JSC::JIT::emitJumpIfImmediateInteger):
- (JSC::JIT::emitJumpIfNotImmediateInteger):
- (JSC::JIT::emitFastArithIntToImmNoCheck):
-
-2009-01-16 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Add support to x86-64 JIT for inline double precision arithmetic ops.
- +5/6% on x86-64, JIT enabled, sunspider.
-
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::addPtr):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::movq_rr):
- * jit/JIT.h:
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileFastArith_op_pre_inc):
- (JSC::JIT::compileBinaryArithOp):
- (JSC::JIT::compileBinaryArithOpSlowCase):
- (JSC::JIT::compileFastArith_op_add):
- (JSC::JIT::compileFastArithSlow_op_add):
- (JSC::JIT::compileFastArith_op_mul):
- (JSC::JIT::compileFastArithSlow_op_mul):
- (JSC::JIT::compileFastArith_op_sub):
- (JSC::JIT::compileFastArithSlow_op_sub):
- * parser/ResultType.h:
- (JSC::ResultType::isReusable):
- (JSC::ResultType::isInt32):
- (JSC::ResultType::definitelyIsNumber):
- (JSC::ResultType::mightBeNumber):
- (JSC::ResultType::isNotNumber):
- (JSC::ResultType::unknownType):
-
-2009-01-16 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Geoff Garen.
+ (functionQuit):
+ (parseArguments):
+ (fillBufferWithContentsOfFile):
+
+2010-01-05 Patrick Gansterer <paroga@paroga.com>
- Fixes for SamplingTool.
+ Reviewed by Eric Seidel.
- https://bugs.webkit.org/show_bug.cgi?id=23390
+ WinCE buildfix after r52791 (renamed PLATFORM(WINCE) to OS(WINCE)).
+ https://bugs.webkit.org/show_bug.cgi?id=33205
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::storePtr):
- * bytecode/SamplingTool.cpp:
- (JSC::SamplingTool::run):
- (JSC::SamplingTool::dump):
- * bytecode/SamplingTool.h:
- (JSC::SamplingTool::encodeSample):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompile):
- * jit/JIT.h:
- (JSC::JIT::samplingToolTrackCodeBlock):
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCall):
- (JSC::JIT::compileOpCallSlowCase):
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitCTICall_internal):
+ * jit/ExecutableAllocator.h:
-2009-01-16 Geoffrey Garen <ggaren@apple.com>
+2010-01-05 Patrick Gansterer <paroga@paroga.com>
Reviewed by Darin Adler.
-
- Fixed <rdar://problem/6452301> REGRESSION: Latest WebKit nightlies
- turn "c" into "" when stripping \\c_ character
-
- * wrec/WRECParser.cpp:
- (JSC::WREC::Parser::consumeEscape): Mimic a Firefox quirk when parsing
- control escapes inside character classes.
-
-2009-01-16 Adam Roben <aroben@apple.com>
-
- Windows build fix
- * wrec/WRECParser.cpp:
- (JSC::WREC::Parser::parseParentheses): Removed unreachable code.
+ Added compiler error for unsupported platforms.
+ https://bugs.webkit.org/show_bug.cgi?id=33112
-2009-01-15 Geoffrey Garen <ggaren@apple.com>
+ * jit/JITStubs.cpp:
- Reviewed by Cameron Zwarich.
-
- Fixed <rdar://problem/6471394> REGRESSION (r39164): Discarding quantifier
- on assertion gives incorrect result (23075)
-
- https://bugs.webkit.org/show_bug.cgi?id=23075
+2010-01-05 Gabor Loki <loki@webkit.org>
- * pcre/pcre_compile.cpp:
- (compileBranch): Throw away an assertion if it's followed by a quantifier
- with a 0 minimum, to match SpiderMonkey, v8, and the ECMA spec.
+ Reviewed by Maciej Stachowiak.
- * wrec/WRECParser.cpp:
- (JSC::WREC::Parser::parseParentheses): Fall back on PCRE for the rare
- case of an assertion with a quantifier with a 0 minimum, since we
- don't handle quantified subexpressions yet, and in this special case,
- we can't just throw away the quantifier.
+ Follow r52729 in ARMAssembler.
+ https://bugs.webkit.org/show_bug.cgi?id=33208
-2009-01-15 Gavin Barraclough <barraclough@apple.com>
+ Use WTF_ARM_ARCH_AT_LEAST instead of ARM_ARCH_VERSION
- Reviewed by Oliver Hunt.
+ * assembler/ARMAssembler.cpp:
+ (JSC::ARMAssembler::encodeComplexImm): Move tmp declaration to ARMv7
+ * assembler/ARMAssembler.h:
+ (JSC::ARMAssembler::):
+ (JSC::ARMAssembler::bkpt):
- Add support in ResultType to track that the results of bitops
- are always of type int32_t.
+2010-01-05 Maciej Stachowiak <mjs@apple.com>
- * parser/Nodes.cpp:
- (JSC::ReadModifyResolveNode::emitBytecode):
- (JSC::ReadModifyDotNode::emitBytecode):
- (JSC::ReadModifyBracketNode::emitBytecode):
- * parser/Nodes.h:
- (JSC::ExpressionNode::):
- (JSC::BooleanNode::):
- (JSC::NumberNode::):
- (JSC::StringNode::):
- (JSC::PrePostResolveNode::):
- (JSC::TypeOfResolveNode::):
- (JSC::TypeOfValueNode::):
- (JSC::UnaryPlusNode::):
- (JSC::NegateNode::):
- (JSC::BitwiseNotNode::):
- (JSC::LogicalNotNode::):
- (JSC::MultNode::):
- (JSC::DivNode::):
- (JSC::ModNode::):
- (JSC::SubNode::):
- (JSC::LeftShiftNode::):
- (JSC::RightShiftNode::):
- (JSC::UnsignedRightShiftNode::):
- (JSC::LessNode::):
- (JSC::GreaterNode::):
- (JSC::LessEqNode::):
- (JSC::GreaterEqNode::):
- (JSC::InstanceOfNode::):
- (JSC::EqualNode::):
- (JSC::NotEqualNode::):
- (JSC::StrictEqualNode::):
- (JSC::NotStrictEqualNode::):
- (JSC::BitAndNode::):
- (JSC::BitOrNode::):
- (JSC::BitXOrNode::):
- (JSC::LogicalOpNode::):
- * parser/ResultType.h:
- (JSC::ResultType::isInt32):
- (JSC::ResultType::isNotNumber):
- (JSC::ResultType::booleanType):
- (JSC::ResultType::numberType):
- (JSC::ResultType::numberTypeCanReuse):
- (JSC::ResultType::numberTypeCanReuseIsInt32):
- (JSC::ResultType::stringOrNumberTypeCanReuse):
- (JSC::ResultType::stringType):
- (JSC::ResultType::unknownType):
- (JSC::ResultType::forAdd):
- (JSC::ResultType::forBitOp):
- (JSC::OperandTypes::OperandTypes):
-
-2009-01-15 Gavin Barraclough <barraclough@apple.com>
+ Unreviewed build fix for Gtk+
- Reviewed by Oliver Hunt.
+ Don't use // comments in Platform.h, at least some of them seem to make the version of GCC
+ used on the Gtk buildbot unhappy.
- Add support for integer addition, subtraction and multiplication
- in JIT code on x86-64.
+ * wtf/Platform.h:
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::mul32):
- (JSC::MacroAssembler::sub32):
- (JSC::MacroAssembler::joMul32):
- (JSC::MacroAssembler::joSub32):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- * jit/JIT.h:
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileFastArith_op_add):
- (JSC::JIT::compileFastArithSlow_op_add):
- (JSC::JIT::compileFastArith_op_mul):
- (JSC::JIT::compileFastArithSlow_op_mul):
- (JSC::JIT::compileFastArith_op_sub):
- (JSC::JIT::compileFastArithSlow_op_sub):
+2010-01-04 Maciej Stachowiak <mjs@apple.com>
-2009-01-15 Gavin Barraclough <barraclough@apple.com>
+ Reviewed by Darin Fisher.
- Reviewed by Geoff Garen.
+ Reorganize, document and rename OS() platform macros.
+ https://bugs.webkit.org/show_bug.cgi?id=33198
- On x86-64 allow JSImmediate to encode 64-bit double precision values.
- This patch only affects builds that set USE(ALTERNATE_JSIMMEDIATE).
- Updates the implementation of JSValuePtr:: and JSImmediate:: methods
- that operate on neumeric values to be be aware of the new representation.
- When this representation is in use, the class JSNumberCell is redundant
- and is compiled out.
+ * wtf/Platform.h: Rename, reorganize and document OS() macros.
- The format of the new immediate representation is documented in JSImmediate.h.
+ Adapt to name changes. Also fixed a few incorrect OS checks.
- * JavaScriptCore.exp:
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::subPtr):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::subq_rr):
- (JSC::X86Assembler::movq_rr):
- (JSC::X86Assembler::ucomisd_rr):
- (JSC::X86Assembler::X86InstructionFormatter::twoByteOp64):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::cti_op_stricteq):
- (JSC::Interpreter::cti_op_nstricteq):
- * jit/JIT.cpp:
- (JSC::JIT::compileOpStrictEq):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- * jit/JIT.h:
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileFastArith_op_lshift):
- (JSC::JIT::compileFastArith_op_rshift):
- (JSC::JIT::compileFastArith_op_bitand):
- (JSC::JIT::compileFastArith_op_mod):
- (JSC::JIT::compileFastArith_op_add):
- (JSC::JIT::compileFastArith_op_mul):
- (JSC::JIT::compileFastArith_op_post_inc):
- (JSC::JIT::compileFastArith_op_post_dec):
- (JSC::JIT::compileFastArith_op_pre_inc):
- (JSC::JIT::compileFastArith_op_pre_dec):
- (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate):
- (JSC::JIT::compileBinaryArithOp):
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitJumpIfBothJSCells):
- (JSC::JIT::emitJumpIfEitherNumber):
- (JSC::JIT::emitJumpIfNotEitherNumber):
- (JSC::JIT::emitJumpIfImmediateIntegerNumber):
- (JSC::JIT::emitJumpIfNotImmediateIntegerNumber):
- (JSC::JIT::emitJumpIfNotImmediateIntegerNumbers):
- (JSC::JIT::emitJumpSlowCaseIfNotImmediateIntegerNumber):
- (JSC::JIT::emitJumpSlowCaseIfNotImmediateIntegerNumbers):
- (JSC::JIT::emitFastArithDeTagImmediate):
- (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
- (JSC::JIT::emitFastArithReTagImmediate):
- (JSC::JIT::emitFastArithIntToImmNoCheck):
- * runtime/JSCell.h:
- * runtime/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- * runtime/JSImmediate.cpp:
- (JSC::JSImmediate::toThisObject):
- (JSC::JSImmediate::toObject):
- (JSC::JSImmediate::toString):
- * runtime/JSImmediate.h:
- (JSC::wtf_reinterpret_cast):
- (JSC::JSImmediate::isNumber):
- (JSC::JSImmediate::isIntegerNumber):
- (JSC::JSImmediate::isDoubleNumber):
- (JSC::JSImmediate::isPositiveIntegerNumber):
- (JSC::JSImmediate::areBothImmediateIntegerNumbers):
- (JSC::JSImmediate::makeInt):
- (JSC::JSImmediate::makeDouble):
- (JSC::JSImmediate::doubleValue):
- (JSC::doubleToBoolean):
- (JSC::JSImmediate::toBoolean):
- (JSC::JSImmediate::getTruncatedUInt32):
- (JSC::JSImmediate::makeOutOfIntegerRange):
- (JSC::JSImmediate::from):
- (JSC::JSImmediate::getTruncatedInt32):
- (JSC::JSImmediate::toDouble):
- (JSC::JSImmediate::getUInt32):
- (JSC::JSValuePtr::isInt32Fast):
- (JSC::JSValuePtr::isUInt32Fast):
- (JSC::JSValuePtr::areBothInt32Fast):
- (JSC::JSFastMath::canDoFastBitwiseOperations):
- (JSC::JSFastMath::xorImmediateNumbers):
- (JSC::JSFastMath::canDoFastRshift):
- (JSC::JSFastMath::canDoFastUrshift):
- (JSC::JSFastMath::rightShiftImmediateNumbers):
- (JSC::JSFastMath::canDoFastAdditiveOperations):
- (JSC::JSFastMath::addImmediateNumbers):
- (JSC::JSFastMath::subImmediateNumbers):
- * runtime/JSNumberCell.cpp:
- (JSC::jsNumberCell):
- * runtime/JSNumberCell.h:
- (JSC::createNumberStructure):
- (JSC::isNumberCell):
- (JSC::asNumberCell):
- (JSC::jsNumber):
- (JSC::JSValuePtr::isDoubleNumber):
- (JSC::JSValuePtr::getDoubleNumber):
- (JSC::JSValuePtr::isNumber):
- (JSC::JSValuePtr::uncheckedGetNumber):
- (JSC::jsNaN):
- (JSC::JSValuePtr::getNumber):
- (JSC::JSValuePtr::numberToInt32):
- (JSC::JSValuePtr::numberToUInt32):
- * runtime/JSValue.h:
- * runtime/NumberConstructor.cpp:
- (JSC::numberConstructorNegInfinity):
- (JSC::numberConstructorPosInfinity):
- (JSC::numberConstructorMaxValue):
- (JSC::numberConstructorMinValue):
- * runtime/NumberObject.cpp:
- (JSC::constructNumber):
- * runtime/NumberObject.h:
- * runtime/Operations.h:
- (JSC::JSValuePtr::equal):
- (JSC::JSValuePtr::equalSlowCaseInline):
- (JSC::JSValuePtr::strictEqual):
- (JSC::JSValuePtr::strictEqualSlowCaseInline):
- * wtf/Platform.h:
+ * API/JSContextRef.cpp:
+ * assembler/MacroAssemblerARM.cpp:
+ (JSC::isVFPPresent):
+ * assembler/MacroAssemblerX86Common.h:
+ * bytecode/SamplingTool.cpp:
+ * config.h:
+ * interpreter/RegisterFile.cpp:
+ (JSC::RegisterFile::~RegisterFile):
+ * interpreter/RegisterFile.h:
+ (JSC::RegisterFile::RegisterFile):
+ (JSC::RegisterFile::grow):
+ * jit/ExecutableAllocator.h:
+ * jit/ExecutableAllocatorFixedVMPool.cpp:
+ * jit/ExecutableAllocatorPosix.cpp:
+ * jit/ExecutableAllocatorSymbian.cpp:
+ * jit/ExecutableAllocatorWin.cpp:
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JITStubs.cpp:
+ * jsc.cpp:
+ (main):
+ * parser/Grammar.y:
+ * profiler/ProfileNode.cpp:
+ (JSC::getCount):
+ * runtime/Collector.cpp:
+ (JSC::Heap::Heap):
+ (JSC::Heap::allocateBlock):
+ (JSC::Heap::freeBlockPtr):
+ (JSC::currentThreadStackBase):
+ (JSC::getCurrentPlatformThread):
+ (JSC::suspendThread):
+ (JSC::resumeThread):
+ (JSC::getPlatformThreadRegisters):
+ (JSC::otherThreadStackPointer):
+ * runtime/Collector.h:
+ * runtime/DateConstructor.cpp:
+ * runtime/DatePrototype.cpp:
+ (JSC::formatLocaleDate):
+ * runtime/InitializeThreading.cpp:
+ (JSC::initializeThreading):
+ * runtime/MarkStack.h:
+ (JSC::MarkStack::MarkStackArray::shrinkAllocation):
+ * runtime/MarkStackPosix.cpp:
+ * runtime/MarkStackSymbian.cpp:
+ * runtime/MarkStackWin.cpp:
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncLastIndexOf):
+ * runtime/TimeoutChecker.cpp:
+ (JSC::getCPUTime):
+ * runtime/UString.cpp:
+ (JSC::UString::from):
+ * wtf/Assertions.cpp:
+ * wtf/Assertions.h:
+ * wtf/CurrentTime.cpp:
+ (WTF::lowResUTCTime):
+ * wtf/CurrentTime.h:
+ (WTF::getLocalTime):
+ * wtf/DateMath.cpp:
+ * wtf/FastMalloc.cpp:
+ (WTF::TCMalloc_ThreadCache::InitModule):
+ (WTF::TCMallocStats::):
+ * wtf/FastMalloc.h:
+ * wtf/MathExtras.h:
+ * wtf/RandomNumber.cpp:
+ (WTF::randomNumber):
+ * wtf/RandomNumberSeed.h:
+ (WTF::initializeRandomNumberGenerator):
+ * wtf/StringExtras.h:
+ * wtf/TCSpinLock.h:
+ (TCMalloc_SpinLock::Unlock):
+ (TCMalloc_SlowLock):
+ * wtf/TCSystemAlloc.cpp:
+ * wtf/ThreadSpecific.h:
+ (WTF::::destroy):
+ * wtf/Threading.h:
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::initializeThreading):
+ (WTF::isMainThread):
+ * wtf/ThreadingWin.cpp:
+ (WTF::wtfThreadEntryPoint):
+ (WTF::createThreadInternal):
+ * wtf/VMTags.h:
+ * wtf/unicode/icu/CollatorICU.cpp:
+ (WTF::Collator::userDefault):
+ * wtf/win/MainThreadWin.cpp:
+ (WTF::initializeMainThreadPlatform):
-2009-01-15 Sam Weinig <sam@webkit.org>
+2010-01-04 Gustavo Noronha Silva <gns@gnome.org>
- Reviewed by Geoffrey Garen.
+ Add missing files to the build system - make distcheck build fix.
- <rdar://problem/6045018>
- REGRESSION (r34838): JavaScript objects appear to be leaked after loading google.com
+ * GNUmakefile.am:
- Subtract the number of JSStrings cached in SmallStrings when calculating the
- number of live JSObjects.
+2010-01-04 Gavin Barraclough <barraclough@apple.com>
- * runtime/Collector.cpp:
- (JSC::Heap::objectCount):
- * runtime/SmallStrings.cpp:
- (JSC::SmallStrings::count):
- * runtime/SmallStrings.h:
+ Reviewed by Sam Weinig, additional coding by Mark Rowe.
-2009-01-15 Sam Weinig <sam@webkit.org>
+ https://bugs.webkit.org/show_bug.cgi?id=33163
+ Add string hashing functions to WTF.
+ Use WTF's string hashing functions from UStringImpl.
- Fix Qt build.
+ * GNUmakefile.am:
+ * JavaScriptCore.exp:
+ * JavaScriptCore.gypi:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * runtime/UStringImpl.cpp:
+ * runtime/UStringImpl.h:
+ (JSC::UStringImpl::computeHash):
+ * wtf/HashFunctions.h:
+ * wtf/StringHashFunctions.h: Added.
+ (WTF::stringHash):
- * runtime/Collector.cpp:
+2010-01-04 Dmitry Titov <dimich@chromium.org>
-2009-01-15 Sam Weinig <sam@webkit.org>
+ Not reviewed, attempt to fix ARM bulid.
- Reviewed by Gavin Barraclough.
+ * wtf/Platform.h:
- Fix crash seen running fast/canvas.
+2010-01-04 Gavin Barraclough <barraclough@apple.com>
- Make sure to mark the ScopeNode and CodeBlock being created
- in the re-parse for exception information.
+ Rubber stamped by Geoff Garen.
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
- * parser/Nodes.h:
- (JSC::ScopeNode::mark):
- * runtime/Collector.cpp:
- (JSC::Heap::collect):
- * runtime/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- * runtime/JSGlobalData.h:
+ Add an 'isIdentifier' to UStringImpl, use this where appropriate
+ (where previously 'identifierTable' was being tested).
+
+ * API/JSClassRef.cpp:
+ (OpaqueJSClass::~OpaqueJSClass):
+ (OpaqueJSClassContextData::OpaqueJSClassContextData):
+ * runtime/Identifier.cpp:
+ (JSC::Identifier::addSlowCase):
+ * runtime/Identifier.h:
+ (JSC::Identifier::add):
+ * runtime/PropertyNameArray.cpp:
+ (JSC::PropertyNameArray::add):
+ * runtime/UStringImpl.h:
+ (JSC::UStringImpl::isIdentifier):
-2009-01-15 Craig Schlenter <craig.schlenter@gmail.com>
+2010-01-04 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Darin Adler.
+ Reviewed by Sam "Shimmey Shimmey" Weinig.
- https://bugs.webkit.org/show_bug.cgi?id=23347
- Compilation of JavaScriptCore/wtf/ThreadingPthreads.cpp fails on Linux
+ https://bugs.webkit.org/show_bug.cgi?id=33158
+ Refactor JSC API entry/exit to use RAII instead of copy/pasting code.
+ Make it easier to change set of actions taken when passing across the API boundary.
- * wtf/ThreadingPthreads.cpp: included limits.h as INT_MAX is defined there.
+ * API/APIShims.h: Added.
+ (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock):
+ (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock):
+ (JSC::APIEntryShim::APIEntryShim):
+ (JSC::APICallbackShim::APICallbackShim):
+ (JSC::APICallbackShim::~APICallbackShim):
+ * API/JSBase.cpp:
+ (JSEvaluateScript):
+ (JSCheckScriptSyntax):
+ (JSGarbageCollect):
+ (JSReportExtraMemoryCost):
+ * API/JSCallbackConstructor.cpp:
+ (JSC::constructJSCallback):
+ * API/JSCallbackFunction.cpp:
+ (JSC::JSCallbackFunction::call):
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::init):
+ (JSC::::getOwnPropertySlot):
+ (JSC::::put):
+ (JSC::::deleteProperty):
+ (JSC::::construct):
+ (JSC::::hasInstance):
+ (JSC::::call):
+ (JSC::::getOwnPropertyNames):
+ (JSC::::toNumber):
+ (JSC::::toString):
+ (JSC::::staticValueGetter):
+ (JSC::::callbackGetter):
+ * API/JSContextRef.cpp:
+ * API/JSObjectRef.cpp:
+ (JSObjectMake):
+ (JSObjectMakeFunctionWithCallback):
+ (JSObjectMakeConstructor):
+ (JSObjectMakeFunction):
+ (JSObjectMakeArray):
+ (JSObjectMakeDate):
+ (JSObjectMakeError):
+ (JSObjectMakeRegExp):
+ (JSObjectGetPrototype):
+ (JSObjectSetPrototype):
+ (JSObjectHasProperty):
+ (JSObjectGetProperty):
+ (JSObjectSetProperty):
+ (JSObjectGetPropertyAtIndex):
+ (JSObjectSetPropertyAtIndex):
+ (JSObjectDeleteProperty):
+ (JSObjectCallAsFunction):
+ (JSObjectCallAsConstructor):
+ (JSObjectCopyPropertyNames):
+ (JSPropertyNameArrayRelease):
+ (JSPropertyNameAccumulatorAddName):
+ * API/JSValueRef.cpp:
+ (JSValueGetType):
+ (JSValueIsUndefined):
+ (JSValueIsNull):
+ (JSValueIsBoolean):
+ (JSValueIsNumber):
+ (JSValueIsString):
+ (JSValueIsObject):
+ (JSValueIsObjectOfClass):
+ (JSValueIsEqual):
+ (JSValueIsStrictEqual):
+ (JSValueIsInstanceOfConstructor):
+ (JSValueMakeUndefined):
+ (JSValueMakeNull):
+ (JSValueMakeBoolean):
+ (JSValueMakeNumber):
+ (JSValueMakeString):
+ (JSValueToBoolean):
+ (JSValueToNumber):
+ (JSValueToStringCopy):
+ (JSValueToObject):
+ (JSValueProtect):
+ (JSValueUnprotect):
+ * JavaScriptCore.xcodeproj/project.pbxproj:
-2009-01-15 Oliver Hunt <oliver@apple.com>
+2010-01-04 Dan Bernstein <mitz@apple.com>
- Reviewed by Geoff Garen.
+ Reviewed by Ada Chan and Mark Rowe.
- Bug 23225: REGRESSION: Assertion failure in reparseInPlace() (m_sourceElements) at sfgate.com
- <https://bugs.webkit.org/show_bug.cgi?id=23225> <rdar://problem/6487432>
+ Updated copyright string
- Character position for open and closing brace was incorrectly referencing m_position to
- record their position in a source document, however this is unsafe as BOMs may lead to
- m_position being an arbitrary position from the real position of the current character.
+ * Info.plist:
+ * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
- * parser/Lexer.cpp:
- (JSC::Lexer::matchPunctuator):
+2010-01-04 Adam Roben <aroben@apple.com>
-2009-01-14 David Kilzer <ddkilzer@apple.com>
+ No review, rolling out r52741.
+ http://trac.webkit.org/changeset/52741
+ https://bugs.webkit.org/show_bug.cgi?id=33056
- Bug 23153: JSC build always touches JavaScriptCore/docs/bytecode.html
+ * wtf/AlwaysInline.h:
- <https://bugs.webkit.org/show_bug.cgi?id=23153>
+2010-01-04 Patrick Gansterer <paroga@paroga.com>
Reviewed by Darin Adler.
- Instead of building bytecode.html into ${SRCROOT}/docs/bytecode.html, build it
- into ${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore/docs/bytecode.html.
+ Add cacheFlush support for WinCE
+ https://bugs.webkit.org/show_bug.cgi?id=33110
- Also fixes make-bytecode-docs.pl to actually generate documentation.
+ * jit/ExecutableAllocator.h:
+ (JSC::ExecutableAllocator::cacheFlush):
- * DerivedSources.make: Changed bytecode.html to be built into local docs
- directory in ${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore.
- * JavaScriptCore.xcodeproj/project.pbxproj: Added "/docs" to the end of the
- "mkdir -p" command so that the docs subdirectory is automatically created.
- * docs/make-bytecode-docs.pl: Changed BEGIN_OPCODE to DEFINE_OPCODE so that
- documentation is actually generated.
+2010-01-04 Patrick Gansterer <paroga@paroga.com>
-2009-01-14 Adam Treat <adam.treat@torchmobile.com>
+ Reviewed by Adam Roben.
- Build fix for Qt from Dmitry Titov.
+ Implement NO_RETURN for COMPILER(MSVC).
+ https://bugs.webkit.org/show_bug.cgi?id=33056
- * wtf/ThreadingQt.cpp:
- (WTF::ThreadCondition::timedWait):
+ * wtf/AlwaysInline.h:
-2009-01-14 Oliver Hunt <oliver@apple.com>
+2010-01-04 Maciej Stachowiak <mjs@apple.com>
- Reviewed by Cameron Zwarich.
+ Reviewed by Simon Hausmann.
- Bug 22903: REGRESSION (r36267): visiting this site reliably crashes WebKit nightly
+ Fix some PLATFORM(*_ENDIAN) uses to CPU()
+ https://bugs.webkit.org/show_bug.cgi?id=33148
- EvalCodeBlock's do not reference the functions that are declared inside the eval
- code, this means that simply marking the EvalCodeBlock through the global object
- is insufficient to mark the declared functions. This patch corrects this by
- explicitly marking the CodeBlocks of all the functions declared in the cached
- EvalNode.
+ * runtime/JSCell.cpp:
+ (JSC::):
+ * runtime/JSValue.h:
+ (JSC::JSValue::):
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::mark):
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::hasFunctions):
- * bytecode/EvalCodeCache.h:
- (JSC::EvalCodeCache::mark):
- * parser/Nodes.cpp:
- (JSC::ScopeNodeData::mark):
- (JSC::EvalNode::mark):
- * parser/Nodes.h:
+2010-01-04 Maciej Stachowiak <mjs@apple.com>
-2009-01-14 Dmitry Titov <dimich@chromium.org>
+ Reviewed by Adam Barth.
- Reviewed by Alexey Proskuryakov.
+ Document CPU() macros in comments.
+ https://bugs.webkit.org/show_bug.cgi?id=33147
- https://bugs.webkit.org/show_bug.cgi?id=23312
- Implement MessageQueue::waitForMessageTimed()
- Also fixed ThreadCondition::timedWait() to take absolute time, as discussed on webkit-dev.
- Win32 version of timedWait still has to be implemented.
+ * wtf/Platform.h:
- * wtf/MessageQueue.h:
- (WTF::MessageQueueWaitResult: new enum for the result of MessageQueue::waitForMessageTimed.
- (WTF::MessageQueue::waitForMessage):
- (WTF::MessageQueue::waitForMessageTimed): New method.
+2010-01-04 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Adam Barth.
+
+ Reorganize, document and rename CPU() platform macros.
+ https://bugs.webkit.org/show_bug.cgi?id=33145
+ ExecutableAllocatorSymbian appears to have buggy ARM version check
+ https://bugs.webkit.org/show_bug.cgi?id=33138
+
+ * wtf/Platform.h:
+ Rename all macros related to detection of particular CPUs or
+ classes of CPUs to CPU(), reorganize and document them.
+
+ All remaining changes are adapting to the renames, plus fixing the
+ second bug cited above.
+
+ * assembler/ARMAssembler.cpp:
+ * assembler/ARMAssembler.h:
+ * assembler/ARMv7Assembler.h:
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::Imm32::Imm32):
+ * assembler/MacroAssembler.h:
+ * assembler/MacroAssemblerARM.cpp:
+ * assembler/MacroAssemblerARM.h:
+ * assembler/MacroAssemblerCodeRef.h:
+ (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
+ * assembler/MacroAssemblerX86.h:
+ * assembler/MacroAssemblerX86Common.h:
+ * assembler/MacroAssemblerX86_64.h:
+ * assembler/X86Assembler.h:
+ (JSC::X86Registers::):
+ (JSC::X86Assembler::):
+ (JSC::X86Assembler::movl_mEAX):
+ (JSC::X86Assembler::movl_EAXm):
+ (JSC::X86Assembler::repatchLoadPtrToLEA):
+ (JSC::X86Assembler::X86InstructionFormatter::memoryModRM):
+ * jit/ExecutableAllocator.h:
+ * jit/ExecutableAllocatorFixedVMPool.cpp:
+ * jit/ExecutableAllocatorPosix.cpp:
+ * jit/ExecutableAllocatorSymbian.cpp:
+ (JSC::ExecutableAllocator::intializePageSize):
+ * jit/JIT.cpp:
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::beginUninterruptedSequence):
+ (JSC::JIT::restoreArgumentReferenceForTrampoline):
+ (JSC::JIT::emitCount):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdProtoList):
+ (JSC::JIT::privateCompileGetByIdChainList):
+ (JSC::JIT::privateCompileGetByIdChain):
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::JITThunks):
+ * jit/JITStubs.h:
+ * runtime/Collector.cpp:
+ (JSC::currentThreadStackBase):
+ (JSC::getPlatformThreadRegisters):
+ (JSC::otherThreadStackPointer):
+ * wrec/WREC.h:
+ * wrec/WRECGenerator.cpp:
+ (JSC::WREC::Generator::generateEnter):
+ (JSC::WREC::Generator::generateReturnSuccess):
+ (JSC::WREC::Generator::generateReturnFailure):
+ * wrec/WRECGenerator.h:
+ * wtf/FastMalloc.cpp:
+ * wtf/TCSpinLock.h:
+ (TCMalloc_SpinLock::Lock):
+ (TCMalloc_SpinLock::Unlock):
+ (TCMalloc_SlowLock):
* wtf/Threading.h:
- * wtf/ThreadingGtk.cpp:
- (WTF::ThreadCondition::timedWait): changed to use absolute time instead of interval.
- * wtf/ThreadingNone.cpp:
- (WTF::ThreadCondition::timedWait): ditto.
- * wtf/ThreadingPthreads.cpp:
- (WTF::ThreadCondition::timedWait): ditto.
- * wtf/ThreadingQt.cpp:
- (WTF::ThreadCondition::timedWait): ditto.
- * wtf/ThreadingWin.cpp:
- (WTF::ThreadCondition::timedWait): ditto. The actual Win32 code is still to be implemented.
+ * wtf/dtoa.cpp:
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::generateEnter):
+ (JSC::Yarr::RegexGenerator::generateReturn):
+ * yarr/RegexJIT.h:
-2009-01-14 Dean McNamee <deanm@chromium.org>
+2010-01-04 Maciej Stachowiak <mjs@apple.com>
- Reviewed by Darin Adler and Oliver hunt.
+ Reviewed by Adam Barth.
- Correctly match allocation functions by implementing a custom deref().
+ Clean up COMPILER macros and remove unused ones.
+ https://bugs.webkit.org/show_bug.cgi?id=33132
+
+ Removed values are COMPILER(BORLAND) and COMPILER(CYGWIN) - they were
+ not used anywhere.
- https://bugs.webkit.org/show_bug.cgi?id=23315
+ * wtf/Platform.h:
- * runtime/ByteArray.h:
- (JSC::ByteArray::deref):
- (JSC::ByteArray::ByteArray):
+2010-01-03 Maciej Stachowiak <mjs@apple.com>
-2009-01-14 Dan Bernstein <mitz@apple.com>
+ Reviewed by Eric Seidel.
- Reviewed by John Sullivan.
+ Update wtf/Platform.h to document the new system for porting macros.
+ https://bugs.webkit.org/show_bug.cgi?id=33130
- - update copyright
+ * wtf/Platform.h:
- * Info.plist:
+2009-12-29 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-2009-01-13 Beth Dakin <bdakin@apple.com>
+ Reviewed by Maciej Stachowiak.
- Reviewed by Darin Adler and Oliver Hunt.
+ PLATFORM(CAIRO) should be defined by WIN_CAIRO define
+ https://bugs.webkit.org/show_bug.cgi?id=22250
- <rdar://problem/6489314> REGRESSION: Business widget's front side
- fails to render correctly when flipping widget
+ * wtf/Platform.h: Define WTF_PLATFORM_CAIRO for GTK port only
+ For the WinCairo port WTF_PLATFORM_CAIRO is already defined in config.h
- The problem here is that parseInt was parsing NaN as 0. This patch
- corrects that by parsing NaN as NaN. This matches our old behavior
- and Firefox.
+2009-12-28 Shu Chang <Chang.Shu@nokia.com>
- * runtime/JSGlobalObjectFunctions.cpp:
- (JSC::globalFuncParseInt):
+ Reviewed by Laszlo Gombos.
-2009-01-13 Gavin Barraclough <barraclough@apple.com>
+ [Qt] Delete ThreadPrivate instance after it is finished.
+ https://bugs.webkit.org/show_bug.cgi?id=32614
- Reviewed by Oliver Hunt.
+ * wtf/qt/ThreadingQt.cpp:
+ (WTF::ThreadMonitor::instance):
+ (WTF::ThreadMonitor::threadFinished):
+ (WTF::createThreadInternal):
+ (WTF::detachThread):
- Fix for: https://bugs.webkit.org/show_bug.cgi?id=23292
+2009-12-28 Patrick Gansterer <paroga@paroga.com>
- Implementation of two argument canDoFastAdditiveOperations does not correlate well with reality.
+ Reviewed by Maciej Stachowiak.
- * runtime/JSImmediate.h:
- (JSC::JSFastMath::canDoFastAdditiveOperations):
+ Cleanup of #define JS_EXPORT.
-2009-01-13 Zalan Bujtas <zbujtas@gmail.com>
+ * API/JSBase.h:
- Reviewed by Darin Adler.
+2009-12-27 Patrick Gansterer <paroga@paroga.com>
- https://bugs.webkit.org/show_bug.cgi?id=23290
- Fix JSImmediate::isImmediate(src) to !src->isCell()
+ Reviewed by Adam Barth.
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::privateExecute):
+ WinCE buildfix (HWND_MESSAGE isn't supported there)
-2009-01-13 Dmitry Titov <dimich@chromium.org>
+ * wtf/win/MainThreadWin.cpp:
+ (WTF::initializeMainThreadPlatform):
- Reviewed by Darin Adler.
+2009-12-27 Patrick Gansterer <paroga@paroga.com>
- https://bugs.webkit.org/show_bug.cgi?id=23281
- Fix the Chromium Win build.
- Need to use PLATFORM(WIN_OS) instead of PLATFORM(WIN).
- Moved GTK and WX up in #if sequence because they could come with WIN_OS too,
- while they have their own implementation even on Windows.
+ Reviewed by Adam Barth.
- * wtf/CurrentTime.cpp:
- (WTF::currentTime):
+ Added a file with WinMain function to link agains in WinCE.
-2009-01-12 Gavin Barraclough <barraclough@apple.com>
+ * os-win32/WinMain.cpp: Added.
+ (convertToUtf8):
+ (WinMain):
- Reviewed by Oliver Hunt.
+2009-12-24 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- Make the JSImmediate interface private.
+ Unreviewed; revert of r52550.
- All manipulation of JS values should be through the JSValuePtr class, not by using JSImmediate
- directly. The key missing methods on JSValuePtr are:
+ The change regressed the following LayoutTests for QtWebKit.
- * isCell() - check for values that are JSCell*s, and as such where asCell() may be used.
- * isInt32Fast() getInt32Fast() - fast check/access for integer immediates.
- * isUInt32Fast() getUInt32Fast() - ditto for unsigned integer immediates.
+ fast/workers/worker-call.html -> crashed
+ fast/workers/worker-close.html -> crashed
- The JIT is allowed full access to JSImmediate, since it needs to be able to directly
- manipulate JSValuePtrs. The Interpreter is provided access to perform operations directly
- on JSValuePtrs through the new JSFastMath interface.
+ * wtf/qt/ThreadingQt.cpp:
+ (WTF::waitForThreadCompletion):
+ (WTF::detachThread):
- No performance impact.
+2009-12-24 Shu Chang <Chang.Shu@nokia.com>
- * API/JSCallbackObjectFunctions.h:
- (JSC::::toNumber):
- * API/JSValueRef.cpp:
- (JSValueIsEqual):
- (JSValueIsStrictEqual):
- * JavaScriptCore.exp:
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::isKnownNotImmediate):
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::keyForImmediateSwitch):
- * bytecompiler/BytecodeGenerator.h:
- (JSC::BytecodeGenerator::JSValueHashTraits::constructDeletedValue):
- (JSC::BytecodeGenerator::JSValueHashTraits::isDeletedValue):
- * interpreter/Interpreter.cpp:
- (JSC::jsLess):
- (JSC::jsLessEq):
- (JSC::jsAdd):
- (JSC::jsIsObjectType):
- (JSC::cachePrototypeChain):
- (JSC::Interpreter::tryCachePutByID):
- (JSC::Interpreter::tryCacheGetByID):
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::tryCTICachePutByID):
- (JSC::Interpreter::tryCTICacheGetByID):
- (JSC::Interpreter::cti_op_add):
- (JSC::Interpreter::cti_op_get_by_id_self_fail):
- (JSC::Interpreter::cti_op_get_by_id_proto_list):
- (JSC::Interpreter::cti_op_instanceof):
- (JSC::Interpreter::cti_op_mul):
- (JSC::Interpreter::cti_op_get_by_val):
- (JSC::Interpreter::cti_op_get_by_val_byte_array):
- (JSC::Interpreter::cti_op_sub):
- (JSC::Interpreter::cti_op_put_by_val):
- (JSC::Interpreter::cti_op_put_by_val_array):
- (JSC::Interpreter::cti_op_put_by_val_byte_array):
- (JSC::Interpreter::cti_op_negate):
- (JSC::Interpreter::cti_op_div):
- (JSC::Interpreter::cti_op_eq):
- (JSC::Interpreter::cti_op_lshift):
- (JSC::Interpreter::cti_op_bitand):
- (JSC::Interpreter::cti_op_rshift):
- (JSC::Interpreter::cti_op_bitnot):
- (JSC::Interpreter::cti_op_neq):
- (JSC::Interpreter::cti_op_urshift):
- (JSC::Interpreter::cti_op_call_eval):
- (JSC::Interpreter::cti_op_throw):
- (JSC::Interpreter::cti_op_is_undefined):
- (JSC::Interpreter::cti_op_stricteq):
- (JSC::Interpreter::cti_op_nstricteq):
- (JSC::Interpreter::cti_op_switch_imm):
- (JSC::Interpreter::cti_vm_throw):
- * interpreter/Interpreter.h:
- (JSC::Interpreter::isJSArray):
- (JSC::Interpreter::isJSString):
- (JSC::Interpreter::isJSByteArray):
- * jit/JIT.cpp:
- (JSC::JIT::compileOpStrictEq):
- (JSC::JIT::privateCompileMainPass):
- * jit/JIT.h:
- (JSC::JIT::isStrictEqCaseHandledInJITCode):
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileFastArith_op_rshift):
- (JSC::JIT::compileFastArith_op_bitand):
- (JSC::JIT::compileFastArith_op_mod):
- * jit/JITCall.cpp:
- (JSC::JIT::unlinkCall):
- (JSC::JIT::compileOpCall):
- * jit/JITInlineMethods.h:
- (JSC::JIT::getConstantOperandImmediateInt):
- (JSC::JIT::isOperandConstantImmediateInt):
- * parser/Nodes.cpp:
- (JSC::processClauseList):
- * runtime/ArrayPrototype.cpp:
- (JSC::arrayProtoFuncIndexOf):
- (JSC::arrayProtoFuncLastIndexOf):
- * runtime/BooleanPrototype.cpp:
- (JSC::booleanProtoFuncValueOf):
- * runtime/Collector.cpp:
- (JSC::Heap::protect):
- (JSC::Heap::unprotect):
- (JSC::Heap::heap):
- * runtime/JSByteArray.cpp:
- (JSC::JSByteArray::getOwnPropertySlot):
- * runtime/JSByteArray.h:
- (JSC::JSByteArray::getIndex):
- * runtime/JSCell.cpp:
- * runtime/JSCell.h:
- (JSC::JSValuePtr::isNumberCell):
- (JSC::JSValuePtr::asCell):
- (JSC::JSValuePtr::isNumber):
- * runtime/JSGlobalObjectFunctions.cpp:
- (JSC::globalFuncParseInt):
- * runtime/JSImmediate.h:
- (JSC::js0):
- (JSC::jsImpossibleValue):
- (JSC::JSValuePtr::toInt32):
- (JSC::JSValuePtr::toUInt32):
- (JSC::JSValuePtr::isCell):
- (JSC::JSValuePtr::isInt32Fast):
- (JSC::JSValuePtr::getInt32Fast):
- (JSC::JSValuePtr::isUInt32Fast):
- (JSC::JSValuePtr::getUInt32Fast):
- (JSC::JSValuePtr::makeInt32Fast):
- (JSC::JSValuePtr::areBothInt32Fast):
- (JSC::JSFastMath::canDoFastBitwiseOperations):
- (JSC::JSFastMath::equal):
- (JSC::JSFastMath::notEqual):
- (JSC::JSFastMath::andImmediateNumbers):
- (JSC::JSFastMath::xorImmediateNumbers):
- (JSC::JSFastMath::orImmediateNumbers):
- (JSC::JSFastMath::canDoFastRshift):
- (JSC::JSFastMath::canDoFastUrshift):
- (JSC::JSFastMath::rightShiftImmediateNumbers):
- (JSC::JSFastMath::canDoFastAdditiveOperations):
- (JSC::JSFastMath::addImmediateNumbers):
- (JSC::JSFastMath::subImmediateNumbers):
- (JSC::JSFastMath::incImmediateNumber):
- (JSC::JSFastMath::decImmediateNumber):
- * runtime/JSNumberCell.h:
- (JSC::JSValuePtr::asNumberCell):
- (JSC::jsNumber):
- (JSC::JSValuePtr::uncheckedGetNumber):
- (JSC::JSNumberCell::toInt32):
- (JSC::JSNumberCell::toUInt32):
- (JSC::JSValuePtr::toJSNumber):
- (JSC::JSValuePtr::getNumber):
- (JSC::JSValuePtr::numberToInt32):
- (JSC::JSValuePtr::numberToUInt32):
- * runtime/JSObject.h:
- (JSC::JSValuePtr::isObject):
- (JSC::JSValuePtr::get):
- (JSC::JSValuePtr::put):
- * runtime/JSValue.cpp:
- (JSC::JSValuePtr::toInteger):
- (JSC::JSValuePtr::toIntegerPreserveNaN):
- * runtime/JSValue.h:
- * runtime/Operations.cpp:
- (JSC::JSValuePtr::equalSlowCase):
- (JSC::JSValuePtr::strictEqualSlowCase):
- * runtime/Operations.h:
- (JSC::JSValuePtr::equal):
- (JSC::JSValuePtr::equalSlowCaseInline):
- (JSC::JSValuePtr::strictEqual):
- (JSC::JSValuePtr::strictEqualSlowCaseInline):
- * runtime/Protect.h:
- (JSC::gcProtect):
- (JSC::gcUnprotect):
- * runtime/StringPrototype.cpp:
- (JSC::stringProtoFuncCharAt):
- (JSC::stringProtoFuncCharCodeAt):
- * runtime/Structure.cpp:
- (JSC::Structure::createCachedPrototypeChain):
-
-2009-01-12 Kevin Ollivier <kevino@theolliviers.com>
-
- Since date time functions have moved here, now the wx port JSC
- needs to depend on wx.
-
- * jscore.bkl:
+ Reviewed by Laszlo Gombos.
-2009-01-11 David Levin <levin@chromium.org>
+ [Qt] Fix memory leak by deleting instance of ThreadPrivate
+ in function waitForThreadCompletion(), synchronously, or in
+ detachThread(), asynchronously.
+ https://bugs.webkit.org/show_bug.cgi?id=32614
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=23245
-
- Add initializeThreading to key places in JS API to ensure that
- UString is properly initialized.
+ * wtf/qt/ThreadingQt.cpp:
+ (WTF::waitForThreadCompletion):
+ (WTF::detachThread):
- * API/JSContextRef.cpp:
- (JSContextGroupCreate):
- (JSGlobalContextCreate):
- * API/JSObjectRef.cpp:
- (JSClassCreate):
- * API/JSStringRef.cpp:
- (JSStringCreateWithCharacters):
- (JSStringCreateWithUTF8CString):
- * API/JSStringRefCF.cpp:
- (JSStringCreateWithCFString):
+2009-12-23 Kwang Yul Seo <skyul@company100.net>
-2009-01-11 David Levin <levin@chromium.org>
+ Reviewed by Laszlo Gombos.
- Reviewed by Darin Adler.
+ Include stddef.h for ptrdiff_t
+ https://bugs.webkit.org/show_bug.cgi?id=32891
- https://bugs.webkit.org/show_bug.cgi?id=23175
+ ptrdiff_t is typedef-ed in stddef.h.
+ Include stddef.h in jit/ExecutableAllocator.h.
- Separate out BaseString information from UString::Rep and make all baseString access go through
- a member function, so that it may be used for something else (in the future) in the BaseString
- case.
+ * jit/ExecutableAllocator.h:
- * runtime/SmallStrings.cpp:
- (JSC::SmallStringsStorage::rep):
- (JSC::SmallStringsStorage::SmallStringsStorage):
- (JSC::SmallStrings::SmallStrings):
- (JSC::SmallStrings::mark):
- Adjust to account for the changes in UString and put the UString in place in
- SmallStringsStorage to aid in locality of reference among the UChar[] and UString::Rep's.
+2009-12-23 Patrick Gansterer <paroga@paroga.com>
- * runtime/SmallStrings.h:
- * runtime/UString.cpp:
- (JSC::initializeStaticBaseString):
- (JSC::initializeUString):
- (JSC::UString::Rep::create):
- (JSC::UString::Rep::destroy):
- (JSC::UString::Rep::checkConsistency):
- (JSC::expandCapacity):
- (JSC::UString::expandPreCapacity):
- (JSC::concatenate):
- (JSC::UString::append):
- (JSC::UString::operator=):
- * runtime/UString.h:
- (JSC::UString::Rep::baseIsSelf):
- (JSC::UString::Rep::setBaseString):
- (JSC::UString::Rep::baseString):
- (JSC::UString::Rep::):
- (JSC::UString::Rep::null):
- (JSC::UString::Rep::empty):
- (JSC::UString::Rep::data):
- (JSC::UString::cost):
- Separate out the items out used by base strings from those used in Rep's that only
- point to base strings. (This potentially saves 24 bytes per Rep.)
+ Reviewed by Eric Seidel.
-2009-01-11 Darin Adler <darin@apple.com>
+ Buildfix after r47092.
- Reviewed by Dan Bernstein.
+ * wtf/wince/MemoryManager.cpp:
+ (WTF::tryFastMalloc):
+ (WTF::tryFastZeroedMalloc):
+ (WTF::tryFastCalloc):
+ (WTF::tryFastRealloc):
- Bug 23239: improve handling of unused arguments in JavaScriptCore
- https://bugs.webkit.org/show_bug.cgi?id=23239
-
- * runtime/DatePrototype.cpp: Moved LocaleDateTimeFormat enum outside #if
- so we can use this on all platforms. Changed valueOf to share the same
- function with getTime, since the contents of the two are identical. Removed
- a FIXME since the idea isn't really specific enough or helpful enough to
- need to sit here in the source code.
- (JSC::formatLocaleDate): Changed the Mac version of this function to take
- the same arguments as the non-Mac version so the caller doesn't have to
- special-case the two platforms. Also made the formatString array be const;
- before the characters were, but the array was a modifiable global variable.
- (JSC::dateProtoFuncToLocaleString): Changed to call the new unified
- version of formatLocaleDate and remove the ifdef.
- (JSC::dateProtoFuncToLocaleDateString): Ditto.
- (JSC::dateProtoFuncToLocaleTimeString): Ditto.
+2009-12-23 Kent Tamura <tkent@chromium.org>
- * runtime/JSNotAnObject.cpp:
- (JSC::JSNotAnObject::toObject): Use the new ASSERT_UNUSED instead of the
- old UNUSED_PARAM.
+ Reviewed by Darin Adler.
- * runtime/RegExp.cpp:
- (JSC::RegExp::RegExp): Changed to only use UNUSED_PARAM when the parameter
- is actually unused.
+ HTMLInputElement::valueAsDate getter support.
+ https://bugs.webkit.org/show_bug.cgi?id=32876
- * wtf/TCSystemAlloc.cpp:
- (TCMalloc_SystemRelease): Changed to only use UNUSED_PARAM when the parameter
- is actually unused.
- (TCMalloc_SystemCommit): Changed to omit the argument names instead of using
- UNUSED_PARAM.
+ Expose dateToDaysFrom1970().
-2009-01-11 Oliver Hunt <oliver@apple.com>
+ * JavaScriptCore.exp:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * wtf/DateMath.cpp:
+ (WTF::dateToDaysFrom1970):
+ * wtf/DateMath.h:
- Reviewed by NOBODY (Build fix).
+2009-12-22 Darin Adler <darin@apple.com>
- Fix the build (whoops)
+ Reviewed by Mark Rowe.
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::cti_op_get_by_val):
+ Turn off datagrid by default, at least for all platforms Apple ships.
+ The datagrid implementation isn't ready for general web use yet.
-2009-01-11 Oliver Hunt <oliver@apple.com>
+ * Configurations/FeatureDefines.xcconfig: Turn off datagrid by default.
- Reviewed by Darin Adler and Anders Carlsson
+2009-12-22 Steve Block <steveblock@google.com>
- Bug 23128: get/put_by_val need to respecialise in the face of ByteArray
+ Reviewed by David Levin.
- Restructure the code slightly, and add comments per Darin's suggestions
+ Updates Android's scheduleDispatchFunctionsOnMainThread() to use new
+ AndroidThreading class, rather than using JavaSharedClient directly.
+ This fixes the current layering violation.
+ https://bugs.webkit.org/show_bug.cgi?id=32651
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::cti_op_get_by_val):
- (JSC::Interpreter::cti_op_get_by_val_byte_array):
- (JSC::Interpreter::cti_op_put_by_val):
- (JSC::Interpreter::cti_op_put_by_val_byte_array):
+ The pattern is copied from Chromium, which uses the ChromiumThreading
+ class. This patch also fixes the style in ChromiumThreading.h.
-2009-01-11 Oliver Hunt <oliver@apple.com>
+ * wtf/android/AndroidThreading.h: Added. Declares AndroidThreading.
+ * wtf/android/MainThreadAndroid.cpp: Modified
+ (WTF::scheduleDispatchFunctionsOnMainThread): Uses AndroidThreading.
+ * wtf/chromium/ChromiumThreading.h: Modified. Fixes style.
- Reviewed by Anders Carlsson.
+2009-12-22 Gavin Barraclough <barraclough@apple.com>
- Whoops, I accidentally removed an exception check from fast the
- fast path for string indexing when i originally landed the
- byte array logic.
+ Reviewed by Sam Weinig.
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::cti_op_get_by_val):
+ Fix a couple of problems with UntypedPtrAndBitfield.
-2009-01-11 Oliver Hunt <oliver@apple.com>
+ Add a m_leaksPtr to reduce false positives from leaks in debug builds
+ (this isn't perfect because we'd like a solution for release builds,
+ but this is now at least as good as a PtrAndFlags would be).
- Reviewed by Anders Carlsson.
+ Switch SmallStringsto use a regular string for the base, rather than
+ a static one. UntypedPtrAndBitfield assumes all strings are at least
+ 8 byte aligned; this migt not be true of static strings. Shared buffers
+ are heap allocated, as are all UStringImpls other than static strings.
+ Static strings cannot end up being the owner string of substrings,
+ since the only static strings are length 0.
- Bug 23128: get/put_by_val need to respecialise in the face of ByteArray
- <https://bugs.webkit.org/show_bug.cgi?id=23128>
+ * runtime/SmallStrings.cpp:
+ (JSC::SmallStringsStorage::SmallStringsStorage):
+ * runtime/UStringImpl.h:
+ (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
+ (JSC::UStringImpl::UStringImpl):
- Fairly simple patch, add specialised versions of cti_op_get/put_by_val
- that assume ByteArray, thus avoiding a few branches in the case of bytearray
- manipulation.
+2009-12-22 Kwang Yul Seo <skyul@company100.net>
- No effect on SunSpider. 15% win on the original testcase.
+ Reviewed by Darin Adler.
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::cti_op_get_by_val):
- (JSC::Interpreter::cti_op_get_by_val_byte_array):
- (JSC::Interpreter::cti_op_put_by_val):
- (JSC::Interpreter::cti_op_put_by_val_byte_array):
- * interpreter/Interpreter.h:
+ RVCT (__ARMCC_VERSION < 400000) does not provide strcasecmp and strncasecmp
+ https://bugs.webkit.org/show_bug.cgi?id=32857
-2009-01-11 Alexey Proskuryakov <ap@webkit.org>
+ Add implementation of strcasecmp and strncasecmp for RVCT < 4.0
+ because earlier versions of RVCT 4.0 does not provide these functions.
- Try to fix Windows build.
+ * wtf/StringExtras.cpp: Added.
+ (strcasecmp):
+ (strncasecmp):
+ * wtf/StringExtras.h:
- * wtf/CurrentTime.cpp: Added a definition of msPerSecond (previously, this code was in
- DateMath.cpp, with constant definition in DateTime.h)
+2009-12-22 Kwang Yul Seo <skyul@company100.net>
-2009-01-11 Alexey Proskuryakov <ap@webkit.org>
+ Reviewed by Darin Adler.
- Try to fix Windows build.
+ Define ALWAYS_INLINE and WTF_PRIVATE_INLINE to __forceinline for RVCT
+ https://bugs.webkit.org/show_bug.cgi?id=32853
- * wtf/CurrentTime.cpp: Include <sys/types.h> and <sys/timeb.h>, as MSDN says to.
+ Use __forceinline forces RVCT to compile a C or C++ function
+ inline. The compiler attempts to inline the function, regardless of
+ the characteristics of the function.
-2009-01-11 Dmitry Titov <dimich@chromium.org>
+ * wtf/AlwaysInline.h:
+ * wtf/FastMalloc.h:
- Reviewed by Darin Adler.
+2009-12-21 Simon Hausmann <simon.hausmann@nokia.com>
- https://bugs.webkit.org/show_bug.cgi?id=23207
- Moved currentTime() to from WebCore to WTF.
+ Prospective GTK build fix: Add UStringImpl.cpp/h to the build.
* GNUmakefile.am:
- * JavaScriptCore.exp: added export for WTF::currentTime()
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * runtime/DateMath.cpp:
- (JSC::getCurrentUTCTimeWithMicroseconds): This function had another implementation of currentTime(), essentially. Now uses WTF version.
- * wtf/CurrentTime.cpp: Added.
- (WTF::currentTime):
- (WTF::highResUpTime):
- (WTF::lowResUTCTime):
- (WTF::qpcAvailable):
- * wtf/CurrentTime.h: Added.
-
-2009-01-09 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Stage two of converting JSValue from a pointer to a class type.
- Remove the class JSValue. The functionallity has been transitioned
- into the wrapper class type JSValuePtr.
- The last stage will be to rename JSValuePtr to JSValue, remove the
- overloaded -> operator, and switch operations on JSValuePtrs from
- using '->' to use '.' instead.
+2009-12-21 Simon Hausmann <simon.hausmann@nokia.com>
- * API/APICast.h:
- * JavaScriptCore.exp:
- * runtime/JSCell.h:
- (JSC::asCell):
- (JSC::JSValuePtr::asCell):
- (JSC::JSValuePtr::isNumber):
- (JSC::JSValuePtr::isString):
- (JSC::JSValuePtr::isGetterSetter):
- (JSC::JSValuePtr::isObject):
- (JSC::JSValuePtr::getNumber):
- (JSC::JSValuePtr::getString):
- (JSC::JSValuePtr::getObject):
- (JSC::JSValuePtr::getCallData):
- (JSC::JSValuePtr::getConstructData):
- (JSC::JSValuePtr::getUInt32):
- (JSC::JSValuePtr::getTruncatedInt32):
- (JSC::JSValuePtr::getTruncatedUInt32):
- (JSC::JSValuePtr::mark):
- (JSC::JSValuePtr::marked):
- (JSC::JSValuePtr::toPrimitive):
- (JSC::JSValuePtr::getPrimitiveNumber):
- (JSC::JSValuePtr::toBoolean):
- (JSC::JSValuePtr::toNumber):
- (JSC::JSValuePtr::toString):
- (JSC::JSValuePtr::toObject):
- (JSC::JSValuePtr::toThisObject):
- (JSC::JSValuePtr::needsThisConversion):
- (JSC::JSValuePtr::toThisString):
- (JSC::JSValuePtr::getJSNumber):
- * runtime/JSImmediate.h:
- (JSC::JSValuePtr::isUndefined):
- (JSC::JSValuePtr::isNull):
- (JSC::JSValuePtr::isUndefinedOrNull):
- (JSC::JSValuePtr::isBoolean):
- (JSC::JSValuePtr::getBoolean):
- (JSC::JSValuePtr::toInt32):
- (JSC::JSValuePtr::toUInt32):
- * runtime/JSNumberCell.h:
- (JSC::JSValuePtr::uncheckedGetNumber):
- (JSC::JSValuePtr::toJSNumber):
- * runtime/JSObject.h:
- (JSC::JSValuePtr::isObject):
- (JSC::JSValuePtr::get):
- (JSC::JSValuePtr::put):
- * runtime/JSString.h:
- (JSC::JSValuePtr::toThisJSString):
- * runtime/JSValue.cpp:
- (JSC::JSValuePtr::toInteger):
- (JSC::JSValuePtr::toIntegerPreserveNaN):
- (JSC::JSValuePtr::toInt32SlowCase):
- (JSC::JSValuePtr::toUInt32SlowCase):
- * runtime/JSValue.h:
- (JSC::JSValuePtr::makeImmediate):
- (JSC::JSValuePtr::immediateValue):
- (JSC::JSValuePtr::JSValuePtr):
- (JSC::JSValuePtr::operator->):
- (JSC::JSValuePtr::operator bool):
- (JSC::JSValuePtr::operator==):
- (JSC::JSValuePtr::operator!=):
- (JSC::JSValuePtr::encode):
- (JSC::JSValuePtr::decode):
- (JSC::JSValuePtr::toFloat):
- (JSC::JSValuePtr::asValue):
- (JSC::operator==):
- (JSC::operator!=):
+ Fix the Qt build, add UStringImpl.cpp to the build.
-2009-01-09 David Levin <levin@chromium.org>
+ * JavaScriptCore.pri:
- Reviewed by Oliver Hunt.
+2009-12-21 Gavin Barraclough <barraclough@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=23175
+ Windows Build fix part 5.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- Adjustment to previous patch. Remove call to initilizeThreading from JSGlobalCreate
- and fix jsc.cpp instead.
+2009-12-21 Gavin Barraclough <barraclough@apple.com>
- * jsc.cpp:
- (main):
- (jscmain):
- * runtime/JSGlobalData.cpp:
- (JSC::JSGlobalData::create):
+ Reviewed by NOBODY (build fix).
+ Fix breakage of world introduced in build fix to r52463.
-2009-01-09 Sam Weinig <sam@webkit.org>
+ * runtime/UStringImpl.h:
- Roll r39720 back in with a working interpreted mode.
+2009-12-21 Gavin Barraclough <barraclough@apple.com>
-2009-01-09 David Levin <levin@chromium.org>
+ Reviewed by Darin Adler.
- Reviewed by Oliver Hunt.
+ https://bugs.webkit.org/show_bug.cgi?id=32831
+ Replace UString::Rep implementation, following introduction of ropes to JSC.
- https://bugs.webkit.org/show_bug.cgi?id=23175
+ * Remove redundant overcapacity mechanisms.
+ * Reduce memory cost of Rep's.
+ * Add an inline storage mechanism akin to that in WebCore's StringImpl.
- Added a template to make the pointer and flags combination
- in UString more readable and less error prone.
+ ~1% Sunspider progression.
- * GNUmakefile.am:
* JavaScriptCore.exp:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
* JavaScriptCore.xcodeproj/project.pbxproj:
- Added PtrAndFlags.h (and sorted the xcode project file).
-
- * runtime/Identifier.cpp:
- (JSC::Identifier::add):
- (JSC::Identifier::addSlowCase):
- * runtime/InitializeThreading.cpp:
- (JSC::initializeThreadingOnce):
- Made the init threading initialize the UString globals. Before
- these were initilized using {} but that became harder due to the
- addition of this tempalte class.
-
- * runtime/JSGlobalData.cpp:
- (JSC::JSGlobalData::create):
- * runtime/PropertyNameArray.cpp:
- (JSC::PropertyNameArray::add):
+ * runtime/JSString.cpp:
+ (JSC::JSString::resolveRope):
+ * runtime/SmallStrings.cpp:
+ (JSC::SmallStringsStorage::SmallStringsStorage):
* runtime/UString.cpp:
- (JSC::initializeStaticBaseString):
(JSC::initializeUString):
- (JSC::UString::Rep::create):
- (JSC::UString::Rep::createFromUTF8):
(JSC::createRep):
- (JSC::UString::UString):
- (JSC::concatenate):
+ (JSC::UString::createFromUTF8):
+ (JSC::UString::createUninitialized):
+ (JSC::UString::spliceSubstringsWithSeparators):
+ (JSC::UString::replaceRange):
+ (JSC::UString::ascii):
(JSC::UString::operator=):
- (JSC::UString::makeNull):
- (JSC::UString::nullRep):
+ (JSC::UString::toStrictUInt32):
+ (JSC::equal):
* runtime/UString.h:
- (JSC::UString::Rep::identifierTable):
- (JSC::UString::Rep::setIdentifierTable):
- (JSC::UString::Rep::isStatic):
- (JSC::UString::Rep::setStatic):
- (JSC::UString::Rep::):
- (JSC::UString::Rep::null):
- (JSC::UString::Rep::empty):
- (JSC::UString::isNull):
- (JSC::UString::null):
- (JSC::UString::UString):
+ (JSC::UString::isEmpty):
+ (JSC::UString::cost):
+ (JSC::makeString):
+ * runtime/UStringImpl.cpp: Added.
+ (JSC::UStringImpl::baseSharedBuffer):
+ (JSC::UStringImpl::sharedBuffer):
+ (JSC::UStringImpl::destroy):
+ (JSC::UStringImpl::computeHash):
+ * runtime/UStringImpl.h: Added.
+ (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield):
+ (JSC::UntypedPtrAndBitfield::asPtr):
+ (JSC::UntypedPtrAndBitfield::operator&=):
+ (JSC::UntypedPtrAndBitfield::operator|=):
+ (JSC::UntypedPtrAndBitfield::operator&):
+ (JSC::UStringImpl::create):
+ (JSC::UStringImpl::createCopying):
+ (JSC::UStringImpl::createUninitialized):
+ (JSC::UStringImpl::data):
+ (JSC::UStringImpl::size):
+ (JSC::UStringImpl::cost):
+ (JSC::UStringImpl::hash):
+ (JSC::UStringImpl::computedHash):
+ (JSC::UStringImpl::setHash):
+ (JSC::UStringImpl::identifierTable):
+ (JSC::UStringImpl::setIdentifierTable):
+ (JSC::UStringImpl::ref):
+ (JSC::UStringImpl::deref):
+ (JSC::UStringImpl::allocChars):
+ (JSC::UStringImpl::copyChars):
+ (JSC::UStringImpl::computeHash):
+ (JSC::UStringImpl::null):
+ (JSC::UStringImpl::empty):
+ (JSC::UStringImpl::checkConsistency):
+ (JSC::UStringImpl::):
+ (JSC::UStringImpl::UStringImpl):
+ (JSC::UStringImpl::operator new):
+ (JSC::UStringImpl::bufferOwnerString):
+ (JSC::UStringImpl::bufferOwnership):
+ (JSC::UStringImpl::isStatic):
+
+2009-12-18 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Move some build decisions from Qt build system into source files
+ https://bugs.webkit.org/show_bug.cgi?id=31956
+
+ * JavaScriptCore.pri: Compile files unconditionally
+ * jit/ExecutableAllocatorPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN)
+ * jit/ExecutableAllocatorWin.cpp: Guard with PLATFORM(WIN_OS)
+ * runtime/MarkStackPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN)
+ * runtime/MarkStackSymbian.cpp: Guard with PLATFORM(SYMBIAN)
+ * runtime/MarkStackWin.cpp: Guard with PLATFORM(WIN_OS)
+ * wtf/Platform.h: Guard ENABLE_JSC_MULTIPLE_THREADS with ENABLE_SINGLE_THREADED for the Qt port
+ * wtf/ThreadingNone.cpp: Guard with ENABLE(SINGLE_THREADED)
+ * wtf/qt/ThreadingQt.cpp: Guard with !ENABLE(SINGLE_THREADED)
+
+2009-12-18 Gavin Barraclough <barraclough@apple.com>
- * wtf/PtrAndFlags.h: Added.
- (WTF::PtrAndFlags::PtrAndFlags):
- (WTF::PtrAndFlags::isFlagSet):
- (WTF::PtrAndFlags::setFlag):
- (WTF::PtrAndFlags::clearFlag):
- (WTF::PtrAndFlags::get):
- (WTF::PtrAndFlags::set):
- A simple way to layer together a pointer and 2 flags. It relies on the pointer being 4 byte aligned,
- which should happen for all allocators (due to aligning pointers, int's, etc. on 4 byte boundaries).
+ Reviewed by Sam Weinig.
-2009-01-08 Gavin Barraclough <barraclough@apple.com>
+ Add createNonCopying method to UString to make replace constructor passed bool,
+ to make behaviour more explicit. Add createFromUTF8 to UString (wrapping method
+ on UString::Rep), since other cases of transliteration (e.g. from ascii) are
+ performed in UString constructors. Add/use setHash & size() accessors on Rep,
+ rather than accessing _hash/len directly.
- Reviewed by -O-l-i-v-e-r- -H-u-n-t- Sam Weinig (sorry, Sam!).
+ * API/JSClassRef.cpp:
+ (OpaqueJSClass::OpaqueJSClass):
+ * API/OpaqueJSString.cpp:
+ (OpaqueJSString::ustring):
+ * JavaScriptCore.exp:
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncToString):
+ * runtime/Identifier.cpp:
+ (JSC::Identifier::equal):
+ (JSC::CStringTranslator::translate):
+ (JSC::UCharBufferTranslator::translate):
+ (JSC::Identifier::addSlowCase):
+ * runtime/JSString.cpp:
+ (JSC::JSString::resolveRope):
+ * runtime/JSString.h:
+ (JSC::JSString::Rope::Fiber::refAndGetLength):
+ (JSC::JSString::Rope::append):
+ * runtime/StringBuilder.h:
+ (JSC::StringBuilder::release):
+ * runtime/StringConstructor.cpp:
+ (JSC::stringFromCharCodeSlowCase):
+ * runtime/StringPrototype.cpp:
+ (JSC::substituteBackreferencesSlow):
+ (JSC::stringProtoFuncToLowerCase):
+ (JSC::stringProtoFuncToUpperCase):
+ (JSC::stringProtoFuncFontsize):
+ (JSC::stringProtoFuncLink):
+ * runtime/UString.cpp:
+ (JSC::UString::UString):
+ (JSC::UString::createNonCopying):
+ (JSC::UString::createFromUTF8):
+ * runtime/UString.h:
+ (JSC::UString::Rep::setHash):
+ (JSC::UString::~UString):
+ (JSC::makeString):
- Encode immediates in the low word of JSValuePtrs, on x86-64.
+2009-12-18 Geoffrey Garen <ggaren@apple.com>
- On 32-bit platforms a JSValuePtr may represent a 31-bit signed integer.
- On 64-bit platforms, if USE(ALTERNATE_JSIMMEDIATE) is defined, a full
- 32-bit integer may be stored in an immediate.
+ Reviewed by Cameron Zwarich and Gavin Barraclough.
- Presently USE(ALTERNATE_JSIMMEDIATE) uses the same encoding as the default
- immediate format - the value is left shifted by one, so a one bit tag can
- be added to indicate the value is an immediate. However this means that
- values must be commonly be detagged (by right shifting by one) before
- arithmetic operations can be performed on immediates. This patch modifies
- the formattting so the the high bits of the immediate mark values as being
- integer.
+ Changed Register constructors to assignment operators, to streamline
+ moving values into registers. (In theory, there's no difference between
+ the two, since the constructor should just inline away, but there seems
+ to be a big difference in the addled mind of the GCC optimizer.)
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::not32):
- (JSC::MacroAssembler::orPtr):
- (JSC::MacroAssembler::zeroExtend32ToPtr):
- (JSC::MacroAssembler::jaePtr):
- (JSC::MacroAssembler::jbPtr):
- (JSC::MacroAssembler::jnzPtr):
- (JSC::MacroAssembler::jzPtr):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::notl_r):
- (JSC::X86Assembler::testq_i32r):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileFastArith_op_lshift):
- (JSC::JIT::compileFastArith_op_rshift):
- (JSC::JIT::compileFastArith_op_bitand):
- (JSC::JIT::compileFastArithSlow_op_bitand):
- (JSC::JIT::compileFastArith_op_mod):
- (JSC::JIT::compileFastArithSlow_op_mod):
- (JSC::JIT::compileFastArith_op_add):
- (JSC::JIT::compileFastArith_op_mul):
- (JSC::JIT::compileFastArith_op_post_inc):
- (JSC::JIT::compileFastArith_op_post_dec):
- (JSC::JIT::compileFastArith_op_pre_inc):
- (JSC::JIT::compileFastArith_op_pre_dec):
- (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate):
- (JSC::JIT::compileBinaryArithOp):
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCallSlowCase):
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitJumpIfJSCell):
- (JSC::JIT::emitJumpIfNotJSCell):
- (JSC::JIT::emitJumpIfImmNum):
- (JSC::JIT::emitJumpSlowCaseIfNotImmNum):
- (JSC::JIT::emitJumpSlowCaseIfNotImmNums):
- (JSC::JIT::emitFastArithDeTagImmediate):
- (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
- (JSC::JIT::emitFastArithReTagImmediate):
- (JSC::JIT::emitFastArithImmToInt):
- (JSC::JIT::emitFastArithIntToImmNoCheck):
- (JSC::JIT::emitTagAsBoolImmediate):
- * jit/JITPropertyAccess.cpp:
- (JSC::resizePropertyStorage):
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- (JSC::JIT::privateCompileGetByIdSelf):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdChain):
- (JSC::JIT::privateCompilePutByIdReplace):
- * runtime/JSImmediate.h:
- (JSC::JSImmediate::isNumber):
- (JSC::JSImmediate::isPositiveNumber):
- (JSC::JSImmediate::areBothImmediateNumbers):
- (JSC::JSImmediate::xorImmediateNumbers):
- (JSC::JSImmediate::rightShiftImmediateNumbers):
- (JSC::JSImmediate::canDoFastAdditiveOperations):
- (JSC::JSImmediate::addImmediateNumbers):
- (JSC::JSImmediate::subImmediateNumbers):
- (JSC::JSImmediate::makeInt):
- (JSC::JSImmediate::toBoolean):
- * wtf/Platform.h:
+ In the interpreter, this is a 3.5% SunSpider speedup and a 1K-2K
+ reduction in stack usage per privateExecute stack frame.
-2009-01-08 Sam Weinig <sam@webkit.org>
+ * interpreter/CallFrame.h:
+ (JSC::ExecState::setCalleeArguments):
+ (JSC::ExecState::setCallerFrame):
+ (JSC::ExecState::setScopeChain):
+ (JSC::ExecState::init):
+ (JSC::ExecState::setArgumentCount):
+ (JSC::ExecState::setCallee):
+ (JSC::ExecState::setCodeBlock): Added a little bit of casting so these
+ functions could use the new Register assignment operators.
- Revert r39720. It broke Interpreted mode.
+ * interpreter/Register.h:
+ (JSC::Register::withInt):
+ (JSC::Register::Register):
+ (JSC::Register::operator=): Swapped in assignment operators for constructors.
-2009-01-08 Sam Weinig <sam@webkit.org>
+2009-12-18 Yongjun Zhang <yongjun.zhang@nokia.com>
- Reviewed by Oliver Hunt.
+ Reviewed by Simon Hausmann.
- Fix for https://bugs.webkit.org/show_bug.cgi?id=23197
- Delay creating the PCVector until an exception is thrown
- Part of <rdar://problem/6469060>
- Don't store exception information for a CodeBlock until first exception is thrown
+ https://bugs.webkit.org/show_bug.cgi?id=32713
+ [Qt] make wtf/Assertions.h compile in winscw compiler.
- - Change the process for re-parsing/re-generating bytecode for exception information
- to use data from the original CodeBlock (offsets of GlobalResolve instructions) to
- aid in creating an identical instruction stream on re-parse, instead of padding
- interchangeable opcodes, which would result in different JITed code.
- - Fix bug where the wrong ScopeChainNode was used when re-parsing/regenerating from
- within some odd modified scope chains.
- - Lazily create the pcVector by re-JITing the regenerated CodeBlock and stealing the
- the pcVector from it.
+ Add string arg before ellipsis to help winscw compiler resolve variadic
+ macro definitions in wtf/Assertions.h.
- Saves ~2MB on Membuster head.
+ * wtf/Assertions.h:
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
- (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset):
- (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset):
- * bytecode/CodeBlock.h:
- (JSC::JITCodeRef::JITCodeRef):
- (JSC::GlobalResolveInfo::GlobalResolveInfo):
- (JSC::CodeBlock::getBytecodeIndex):
- (JSC::CodeBlock::addGlobalResolveInstruction):
- (JSC::CodeBlock::addGlobalResolveInfo):
- (JSC::CodeBlock::addFunctionRegisterInfo):
- (JSC::CodeBlock::hasExceptionInfo):
- (JSC::CodeBlock::pcVector):
- (JSC::EvalCodeBlock::EvalCodeBlock):
- (JSC::EvalCodeBlock::baseScopeDepth):
- * bytecode/Opcode.h:
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::BytecodeGenerator):
- (JSC::BytecodeGenerator::emitResolve):
- (JSC::BytecodeGenerator::emitGetScopedVar):
- * bytecompiler/BytecodeGenerator.h:
- (JSC::BytecodeGenerator::setRegeneratingForExceptionInfo):
- * interpreter/Interpreter.cpp:
- (JSC::bytecodeOffsetForPC):
- (JSC::Interpreter::unwindCallFrame):
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::retrieveLastCaller):
- (JSC::Interpreter::cti_op_instanceof):
- (JSC::Interpreter::cti_op_call_NotJSFunction):
- (JSC::Interpreter::cti_op_resolve):
- (JSC::Interpreter::cti_op_construct_NotJSConstruct):
- (JSC::Interpreter::cti_op_resolve_func):
- (JSC::Interpreter::cti_op_resolve_skip):
- (JSC::Interpreter::cti_op_resolve_global):
- (JSC::Interpreter::cti_op_resolve_with_base):
- (JSC::Interpreter::cti_op_throw):
- (JSC::Interpreter::cti_op_in):
- (JSC::Interpreter::cti_vm_throw):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompile):
- * parser/Nodes.cpp:
- (JSC::EvalNode::generateBytecode):
- (JSC::EvalNode::bytecodeForExceptionInfoReparse):
- (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse):
- * parser/Nodes.h:
+2009-12-18 Geoffrey Garen <ggaren@apple.com>
-2009-01-08 Jian Li <jianli@chromium.org>
+ Reviewed by Adam Roben.
- Reviewed by Alexey Proskuryakov.
+ Fixed intermittent failure seen on Windows buildbot, and in other JSC
+ API clients.
+
+ Added a WeakGCPtr class and changed OpaqueJSClass::cachedPrototype to
+ use it, to avoid vending a stale object as a prototype.
- Add Win32 implementation of ThreadSpecific.
- https://bugs.webkit.org/show_bug.cgi?id=22614
+ * API/JSClassRef.cpp:
+ (OpaqueJSClassContextData::OpaqueJSClassContextData):
+ (OpaqueJSClass::prototype):
+ * API/JSClassRef.h: Use WeakGCPtr.
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * wtf/ThreadSpecific.h:
- (WTF::ThreadSpecific::ThreadSpecific):
- (WTF::ThreadSpecific::~ThreadSpecific):
- (WTF::ThreadSpecific::get):
- (WTF::ThreadSpecific::set):
- (WTF::ThreadSpecific::destroy):
- * wtf/ThreadSpecificWin.cpp: Added.
- (WTF::ThreadSpecificThreadExit):
- * wtf/ThreadingWin.cpp:
- (WTF::wtfThreadEntryPoint):
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * runtime/WeakGCPtr.h: Added.
+ (JSC::WeakGCPtr::WeakGCPtr):
+ (JSC::WeakGCPtr::get):
+ (JSC::WeakGCPtr::clear):
+ (JSC::WeakGCPtr::operator*):
+ (JSC::WeakGCPtr::operator->):
+ (JSC::WeakGCPtr::operator!):
+ (JSC::WeakGCPtr::operator bool):
+ (JSC::WeakGCPtr::operator UnspecifiedBoolType):
+ (JSC::WeakGCPtr::assign):
+ (JSC::::operator):
+ (JSC::operator==):
+ (JSC::operator!=):
+ (JSC::static_pointer_cast):
+ (JSC::const_pointer_cast):
+ (JSC::getPtr): Added WeakGCPtr to the project.
-2009-01-08 Justin McPherson <justin.mcpherson@nokia.com>
+2009-12-18 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Simon Hausmann.
+ Reviewed by Sam Weinig.
- Fix compilation with Qt on NetBSD.
+ https://bugs.webkit.org/show_bug.cgi?id=32720
- * runtime/Collector.cpp:
- (JSC::currentThreadStackBase): Use PLATFORM(NETBSD) to enter the
- code path to retrieve the stack base using pthread_attr_get_np.
- The PTHREAD_NP_H define is not used because the header file does
- not exist on NetBSD, but the function is declared nevertheless.
- * wtf/Platform.h: Introduce WTF_PLATFORM_NETBSD.
+ * JavaScriptCore.exp:
+ - Remove exports for UString::append
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ - Make StringBuilder a private header (was project).
-2009-01-07 Sam Weinig <sam@webkit.org>
+2009-12-18 Martin Robinson <martin.james.robinson@gmail.com>
- Reviewed by Geoffrey Garen.
+ Reviewed by Gustavo Noronha Silva.
- <rdar://problem/6469060> Don't store exception information for a CodeBlock until first exception is thrown
+ [GTK] GRefPtr does not take a reference when assigned a raw pointer
+ https://bugs.webkit.org/show_bug.cgi?id=32709
- Don't initially store exception information (lineNumber/expressionRange/getByIdExcecptionInfo)
- in CodeBlocks blocks. Instead, re-parse for the data on demand and cache it then.
+ Ensure that when assigning a raw pointer to a GRefPtr, the reference
+ count is incremented. Also remove the GRefPtr conversion overload as
+ GRefPtr types have necessarily incompatible reference counting.
- One important change that was needed to make this work was to pad op_get_global_var with nops to
- be the same length as op_resolve_global, since one could be replaced for the other on re-parsing,
- and we want to keep the offsets bytecode offsets the same.
+ * wtf/gtk/GRefPtr.h:
+ (WTF::GRefPtr::operator=):
- 1.3MB improvement on Membuster head.
+2009-12-18 Simon Hausmann <simon.hausmann@nokia.com>
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::dump): Update op_get_global_var to account for the padding.
- (JSC::CodeBlock::dumpStatistics): Add more statistic dumping.
- (JSC::CodeBlock::CodeBlock): Initialize m_exceptionInfo.
- (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): Re-parses the CodeBlocks
- associated SourceCode and steals the ExceptionInfo from it.
- (JSC::CodeBlock::lineNumberForBytecodeOffset): Creates the exception info on demand.
- (JSC::CodeBlock::expressionRangeForBytecodeOffset): Ditto.
- (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): Ditto.
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::numberOfExceptionHandlers): Updated to account for m_exceptionInfo indirection.
- (JSC::CodeBlock::addExceptionHandler): Ditto.
- (JSC::CodeBlock::exceptionHandler): Ditto.
- (JSC::CodeBlock::clearExceptionInfo): Ditto.
- (JSC::CodeBlock::addExpressionInfo): Ditto.
- (JSC::CodeBlock::addGetByIdExceptionInfo): Ditto.
- (JSC::CodeBlock::numberOfLineInfos): Ditto.
- (JSC::CodeBlock::addLineInfo): Ditto.
- (JSC::CodeBlock::lastLineInfo): Ditto.
-
- * bytecode/Opcode.h: Change length of op_get_global_var to match op_resolve_global.
+ Reviewed by Tor Arne Vestbø.
- * bytecode/SamplingTool.cpp:
- (JSC::SamplingTool::dump): Add comment indicating why it is okay not to pass a CallFrame.
+ [Qt] Clean up the qmake build system to distinguish between trunk builds and package builds
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::generate): Clear the exception info after generation for Function and Eval
- Code when not in regenerate for exception info mode.
- (JSC::BytecodeGenerator::BytecodeGenerator): Initialize m_regeneratingForExceptionInfo to false.
- (JSC::BytecodeGenerator::emitGetScopedVar): Pad op_get_global_var with 2 nops.
- * bytecompiler/BytecodeGenerator.h:
- (JSC::BytecodeGenerator::setRegeneratingForExcpeptionInfo): Added.
+ https://bugs.webkit.org/show_bug.cgi?id=32716
+
+ * pcre/pcre.pri: Use standalone_package instead of QTDIR_build
+
+2009-12-18 Martin Robinson <martin.james.robinson@gmail.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Compile warning from line 29 of GRefPtr.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=32703
+
+ Fix memory leak and compiler warning in GRefPtr GHashTable template
+ specialization.
+
+ * wtf/gtk/GRefPtr.cpp:
+ (WTF::refGPtr):
+
+2009-12-17 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ Add BUILDING_ON_SNOW_LEOPARD and TARGETING_SNOW_LEOPARD #defines.
+
+ * wtf/Platform.h:
+
+2009-12-17 Adam Roben <aroben@apple.com>
+
+ Sync JavaScriptCore.vcproj with JavaScriptCore.xcodeproj and the
+ source tree
+
+ Fixes <http://webkit.org/b/32665>.
+
+ Reviewed by Ada Chan.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Moved
+ around files and filters so that the structure matches
+ JavaScriptCore.xcodeproj and the source tree. A few headers that were
+ previously omitted have been added, as well as JSZombie.{cpp,h}.
+
+2009-12-17 Adam Roben <aroben@apple.com>
+
+ Remove HeavyProfile and TreeProfile completely
+
+ These were mostly removed in r42808, but the empty files were left in
+ place.
+
+ Fixes <http://webkit.org/b/32664>.
+
+ Reviewed by John Sullivan.
+
+ * Android.mk:
+ * GNUmakefile.am:
+ * JavaScriptCore.gypi:
+ * JavaScriptCore.pri:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCoreSources.bkl:
+ Removed HeavyProfile/TreeProfile source files.
+
+ * profiler/HeavyProfile.cpp: Removed.
+ * profiler/HeavyProfile.h: Removed.
+ * profiler/TreeProfile.cpp: Removed.
+ * profiler/TreeProfile.h: Removed.
+
+2009-12-17 Martin Robinson <martin.james.robinson@gmail.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs
+ https://bugs.webkit.org/show_bug.cgi?id=21599
+
+ Implement GRefPtr, a smart pointer for reference counted GObject types.
+
+ * GNUmakefile.am:
+ * wtf/gtk/GOwnPtr.cpp:
+ (WTF::GDir):
+ * wtf/gtk/GRefPtr.h: Added.
+ (WTF::):
+ (WTF::GRefPtr::GRefPtr):
+ (WTF::GRefPtr::~GRefPtr):
+ (WTF::GRefPtr::clear):
+ (WTF::GRefPtr::get):
+ (WTF::GRefPtr::operator*):
+ (WTF::GRefPtr::operator->):
+ (WTF::GRefPtr::operator!):
+ (WTF::GRefPtr::operator UnspecifiedBoolType):
+ (WTF::GRefPtr::hashTableDeletedValue):
+ (WTF::::operator):
+ (WTF::::swap):
+ (WTF::swap):
+ (WTF::operator==):
+ (WTF::operator!=):
+ (WTF::static_pointer_cast):
+ (WTF::const_pointer_cast):
+ (WTF::getPtr):
+ (WTF::adoptGRef):
+ (WTF::refGPtr):
+ (WTF::derefGPtr):
+
+2009-12-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Build fixes for make distcheck.
+
+ * GNUmakefile.am:
+
+2009-12-16 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Fixed <rdar://problem/7355025> Interpreter::privateExecute macro generates
+ bloated code
+
+ This patch cuts Interpreter stack use by about a third.
+
+ * bytecode/Opcode.h: Changed Opcode to const void* to work with the
+ const static initiliazation we want to do in Interpreter::privateExecute.
* interpreter/Interpreter.cpp:
- (JSC::Interpreter::throwException): Pass the CallFrame to exception info accessors.
- (JSC::Interpreter::privateExecute): Ditto.
- (JSC::Interpreter::retrieveLastCaller): Ditto.
- (JSC::Interpreter::cti_op_new_error): Ditto.
+ (JSC::Interpreter::Interpreter): Moved hashtable initialization here to
+ avoid polluting Interpreter::privateExecute's stack, and changed it from a
+ series of add() calls to one add() call in a loop, to cut down on code size.
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass): Pass the current bytecode offset instead of hard coding the
- line number, the stub will do the accessing if it gets called.
+ (JSC::Interpreter::privateExecute): Changed a series of label computations
+ to a copy of a compile-time constant array to cut down on code size.
- * parser/Nodes.cpp:
- (JSC::ProgramNode::emitBytecode): Moved.
- (JSC::ProgramNode::generateBytecode): Moved.
- (JSC::EvalNode::create): Moved.
- (JSC::EvalNode::bytecodeForExceptionInfoReparse): Added.
- (JSC::FunctionBodyNode::generateBytecode): Rename reparse to reparseInPlace.
- (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse): Addded.
+2009-12-16 Mark Rowe <mrowe@apple.com>
- * parser/Nodes.h:
- (JSC::ScopeNode::features): Added getter.
- * parser/Parser.cpp:
- (JSC::Parser::reparseInPlace): Renamed from reparse.
- * parser/Parser.h:
- (JSC::Parser::reparse): Added. Re-parses the passed in Node into
- a new Node.
- * runtime/ExceptionHelpers.cpp:
- (JSC::createUndefinedVariableError): Pass along CallFrame.
- (JSC::createInvalidParamError): Ditto.
- (JSC::createNotAConstructorError): Ditto.
- (JSC::createNotAFunctionError): Ditto.
- (JSC::createNotAnObjectError): Ditto.
+ Build fix. Disable debug variants of WebKit frameworks.
-2009-01-06 Gavin Barraclough <baraclough@apple.com>
+ * JavaScriptCore.xcodeproj/project.pbxproj:
- Reviewed by Maciej Stachowiak.
+2009-12-15 Geoffrey Garen <ggaren@apple.com>
- Replace accidentally removed references in BytecodeGenerator, deleting these
- will be hindering the sharing of constant numbers and strings.
+ Reviewed by Sam "r=me" Weinig.
- The code to add a new constant (either number or string) to their respective
- map works by attempting to add a null entry, then checking the result of the
- add for null. The first time, this should return the null (or noValue).
- The code checks for null (to see if this is the initial add), and then allocates
- a new number / string object. This code relies on the result returned from
- the add to the map being stored as a reference, such that the allocated object
- will be stored in the map, and will be resused if the same constant is encountered
- again. By failing to use a reference we will be leaking GC object for each
- additional entry added to the map. As GC objects they should be clollected,
- be we should no be allocatin them in the first place.
+ https://bugs.webkit.org/show_bug.cgi?id=32498
+ <rdar://problem/7471495>
+ REGRESSION(r51978-r52039): AJAX "Mark This Forum Read" function no longer
+ works
+
+ Fixed a tyop.
- https://bugs.webkit.org/show_bug.cgi?id=23158
+ * runtime/Operations.h:
+ (JSC::jsAdd): Use the '&&' operator, not the ',' operator.
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::emitLoad):
+2009-12-15 Geoffrey Garen <ggaren@apple.com>
-2009-01-06 Oliver Hunt <oliver@apple.com>
+ Try to fix the windows build: don't export this inlined function.
- Reviewed by Gavin Barraclough.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
- <rdar://problem/6040850> JavaScript register file should use VirtualAlloc on Windows
+2009-12-15 Geoffrey Garen <ggaren@apple.com>
- Fairly simple, just reserve 4Mb of address space for the
- register file, and then commit one section at a time. We
- don't release committed memory as we drop back, but then
- mac doesn't either so this probably not too much of a
- problem.
+ Reviewed by Beth Dakin.
- * interpreter/RegisterFile.cpp:
- (JSC::RegisterFile::~RegisterFile):
- * interpreter/RegisterFile.h:
- (JSC::RegisterFile::RegisterFile):
- (JSC::RegisterFile::grow):
+ Inlined JSCell's operator new.
+
+ 3.7% speedup on bench-allocate-nonretained.js.
+
+ * JavaScriptCore.exp:
+ * runtime/JSCell.cpp:
+ * runtime/JSCell.h:
+ (JSC::JSCell::operator new):
+
+2009-12-15 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Removed the number heap, replacing it with a one-item free list for
+ numbers, taking advantage of the fact that two number cells fit inside
+ the space for one regular cell, and number cells don't require destruction.
+
+ SunSpider says 1.6% faster in JSVALUE32 mode (the only mode that
+ heap-allocates numbers).
+
+ SunSpider says 1.1% faster in JSVALUE32_64 mode. v8 says 0.8% faster
+ in JSVALUE32_64 mode. 10% speedup on bench-alloc-nonretained.js. 6%
+ speedup on bench-alloc-retained.js.
+
+ There's a lot of formulaic change in this patch, but not much substance.
+
+ * JavaScriptCore.exp:
+ * debugger/Debugger.cpp:
+ (JSC::Debugger::recompileAllJSFunctions):
+ * runtime/Collector.cpp:
+ (JSC::Heap::Heap):
+ (JSC::Heap::destroy):
+ (JSC::Heap::allocateBlock):
+ (JSC::Heap::freeBlock):
+ (JSC::Heap::freeBlockPtr):
+ (JSC::Heap::freeBlocks):
+ (JSC::Heap::recordExtraCost):
+ (JSC::Heap::allocate):
+ (JSC::Heap::resizeBlocks):
+ (JSC::Heap::growBlocks):
+ (JSC::Heap::shrinkBlocks):
+ (JSC::Heap::markConservatively):
+ (JSC::Heap::clearMarkBits):
+ (JSC::Heap::markedCells):
+ (JSC::Heap::sweep):
+ (JSC::Heap::markRoots):
+ (JSC::Heap::objectCount):
+ (JSC::Heap::addToStatistics):
+ (JSC::Heap::statistics):
+ (JSC::Heap::isBusy):
+ (JSC::Heap::reset):
+ (JSC::Heap::collectAllGarbage):
+ (JSC::Heap::primaryHeapBegin):
+ (JSC::Heap::primaryHeapEnd):
+ * runtime/Collector.h:
+ (JSC::): Removed all code pertaining to the number heap, and changed all
+ heap template functions and classes to non-template functions and classes.
+
+ (JSC::Heap::allocateNumber): A new optimization to replace the number
+ heap: allocate half-sized number cells in pairs, returning the first
+ cell and caching the second cell for the next allocation.
+
+ * runtime/CollectorHeapIterator.h:
+ (JSC::LiveObjectIterator::LiveObjectIterator):
+ (JSC::LiveObjectIterator::operator++):
+ (JSC::DeadObjectIterator::DeadObjectIterator):
+ (JSC::DeadObjectIterator::operator++):
+ (JSC::ObjectIterator::ObjectIterator):
+ (JSC::ObjectIterator::operator++):
+ * runtime/JSCell.h:
+ (JSC::JSCell::isNumber): Removed all code pertaining to the number heap,
+ and changed all heap template functions and classes to non-template functions
+ and classes.
-2009-01-06 Alexey Proskuryakov <ap@webkit.org>
+2009-12-15 Zoltan Horvath <zoltan@webkit.org>
Reviewed by Darin Adler.
- https://bugs.webkit.org/show_bug.cgi?id=23142
- ThreadGlobalData leaks seen on buildbot
+ Allow custom memory allocation control for WeakGCMap class
+ https://bugs.webkit.org/show_bug.cgi?id=32547
- * wtf/ThreadSpecific.h: (WTF::ThreadSpecific::destroy): Temporarily reset the thread
- specific value to make getter work on Mac OS X.
+ Inherits WeakGCMap from FastAllocBase because it is instantiated by
+ 'new' at: WebCore/dom/Document.cpp:512.
- * wtf/Platform.h: Touch this file again to make sure all Windows builds use the most recent
- version of ThreadSpecific.h.
+ * runtime/WeakGCMap.h:
-2009-01-05 Gavin Barraclough <baraclough@apple.com>
+2009-12-15 Zoltan Horvath <zoltan@webkit.org>
- Reviewed by Oliver Hunt.
+ Reviewed by Darin Adler.
+
+ Allow custom memory allocation control for dtoa's P5Node struct
+ https://bugs.webkit.org/show_bug.cgi?id=32544
+
+ Inherits P5Node struct from Noncopyable because it is instantiated by
+ 'new' at wtf/dtoa.cpp:588 and don't need to be copyable.
+
+ * wtf/dtoa.cpp:
+
+2009-12-14 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ https://bugs.webkit.org/show_bug.cgi?id=32524
+ REGRESSION(52084): fast/dom/prototypes.html failing two CSS tests
+
+ * wtf/StdLibExtras.h:
+ (WTF::bitCount): The original patch put the parentheses in the wrong
+ place, completely changing the calculation and making it almost always
+ wrong. Moved the parentheses around the '+' operation, like the original
+ compiler warning suggested.
+
+2009-12-14 Gabor Loki <loki@inf.u-szeged.hu>
+
+ Unreviewed trivial buildfix.
+
+ Fix crosses initialization of usedPrimaryBlocks for JSValue32
+
+ * runtime/Collector.cpp:
+ (JSC::Heap::markConservatively):
+
+2009-12-14 Csaba Osztrogonác <ossy@webkit.org>
+
+ Reviewed by Simon Hausmann.
+
+ GCC 4.3.x warning fixed. Suggested parantheses added.
+ warning: ../../../JavaScriptCore/wtf/StdLibExtras.h:77: warning: suggest parentheses around + or - in operand of &
+
+ * wtf/StdLibExtras.h:
+ (WTF::bitCount):
- Replace all uses of JSValue* with a new smart pointer type, JSValuePtr.
+2009-12-13 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Changed GC from mark-sweep to mark-allocate.
+
+ Added WeakGCMap to keep WebCore blissfully ignorant about objects that
+ have become garbage but haven't run their destructors yet.
- A JavaScript value may be a heap object or boxed primitive, represented by a
- pointer, or may be an unboxed immediate value, such as an integer. Since a
- value may dynamically need to contain either a pointer value or an immediate,
- we encode immediates as pointer values (since all valid JSCell pointers are
- allocated at alligned addesses, unaligned addresses are available to encode
- immediates). As such all JavaScript values are represented using a JSValue*.
-
- This implementation is encumbered by a number of constraints. It ties the
- JSValue representation to the size of pointer on the platform, which, for
- example, means that we currently can represent different ranges of integers
- as immediates on x86 and x86-64. It also prevents us from overloading the
- to-boolean conversion used to test for noValue() - effectively forcing us
- to represent noValue() as 0. This would potentially be problematic were we
- to wish to encode integer values differently (e.g. were we to use the v8
- encoding, where pointers are tagged with 1 and integers with 0, then the
- immediate integer 0 would conflict with noValue()).
-
- This patch replaces all usage of JSValue* with a new class, JSValuePtr,
- which encapsulates the pointer. JSValuePtr maintains the same interface as
- JSValue*, overloading operator-> and operator bool such that previous
- operations in the code on variables of type JSValue* are still supported.
-
- In order to provide a ProtectPtr<> type with support for the new value
- representation (without using the internal JSValue type directly), a new
- ProtectJSValuePtr type has been added, equivalent to the previous type
- ProtectPtr<JSValue>.
-
- This patch is likely the first in a sequence of three changes. With the
- value now encapsulated it will likely make sense to migrate the functionality
- from JSValue into JSValuePtr, such that the internal pointer representation
- need not be exposed. Through migrating the functionality to the wrapper
- class the existing JSValue should be rendered redundant, and the class is
- likely to be removed (the JSValuePtr now wrapping a pointer to a JSCell).
- At this stage it will likely make sense to rename JSValuePtr to JSValue.
-
- https://bugs.webkit.org/show_bug.cgi?id=23114
+ 1% SunSpider speedup.
+ 7.6% v8 speedup (37% splay speedup).
+ 17% speedup on bench-alloc-nonretained.js.
+ 18% speedup on bench-alloc-retained.js.
- * API/APICast.h:
- (toJS):
- (toRef):
* API/JSBase.cpp:
- (JSEvaluateScript):
- * API/JSCallbackConstructor.h:
- (JSC::JSCallbackConstructor::createStructure):
- * API/JSCallbackFunction.cpp:
- (JSC::JSCallbackFunction::call):
- * API/JSCallbackFunction.h:
- (JSC::JSCallbackFunction::createStructure):
- * API/JSCallbackObject.h:
- (JSC::JSCallbackObject::createStructure):
- * API/JSCallbackObjectFunctions.h:
- (JSC::::asCallbackObject):
- (JSC::::put):
- (JSC::::hasInstance):
- (JSC::::call):
- (JSC::::staticValueGetter):
- (JSC::::staticFunctionGetter):
- (JSC::::callbackGetter):
+ (JSGarbageCollect):
* API/JSContextRef.cpp:
- * API/JSObjectRef.cpp:
- (JSObjectMakeConstructor):
- (JSObjectSetPrototype):
- (JSObjectGetProperty):
- (JSObjectSetProperty):
- (JSObjectGetPropertyAtIndex):
- (JSObjectSetPropertyAtIndex):
- * API/JSValueRef.cpp:
- (JSValueGetType):
- (JSValueIsUndefined):
- (JSValueIsNull):
- (JSValueIsBoolean):
- (JSValueIsNumber):
- (JSValueIsString):
- (JSValueIsObject):
- (JSValueIsObjectOfClass):
- (JSValueIsEqual):
- (JSValueIsStrictEqual):
- (JSValueIsInstanceOfConstructor):
- (JSValueToBoolean):
- (JSValueToNumber):
- (JSValueToStringCopy):
- (JSValueToObject):
- (JSValueProtect):
- (JSValueUnprotect):
* JavaScriptCore.exp:
- * bytecode/CodeBlock.cpp:
- (JSC::valueToSourceString):
- (JSC::constantName):
- (JSC::CodeBlock::dump):
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::getConstant):
- (JSC::CodeBlock::addUnexpectedConstant):
- (JSC::CodeBlock::unexpectedConstant):
- * bytecode/EvalCodeCache.h:
- (JSC::EvalCodeCache::get):
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::BytecodeGenerator):
- (JSC::BytecodeGenerator::addConstant):
- (JSC::BytecodeGenerator::addUnexpectedConstant):
- (JSC::BytecodeGenerator::emitLoad):
- (JSC::BytecodeGenerator::emitLoadJSV):
- (JSC::BytecodeGenerator::emitGetScopedVar):
- (JSC::BytecodeGenerator::emitPutScopedVar):
- (JSC::BytecodeGenerator::emitNewError):
- (JSC::keyForImmediateSwitch):
- * bytecompiler/BytecodeGenerator.h:
- (JSC::BytecodeGenerator::JSValueHashTraits::constructDeletedValue):
- (JSC::BytecodeGenerator::JSValueHashTraits::isDeletedValue):
- * debugger/DebuggerCallFrame.cpp:
- (JSC::DebuggerCallFrame::evaluate):
- * debugger/DebuggerCallFrame.h:
- (JSC::DebuggerCallFrame::DebuggerCallFrame):
- (JSC::DebuggerCallFrame::exception):
- * interpreter/CallFrame.cpp:
- (JSC::CallFrame::thisValue):
- * interpreter/CallFrame.h:
- (JSC::ExecState::setException):
- (JSC::ExecState::exception):
- (JSC::ExecState::exceptionSlot):
- (JSC::ExecState::hadException):
- * interpreter/Interpreter.cpp:
- (JSC::fastIsNumber):
- (JSC::fastToInt32):
- (JSC::fastToUInt32):
- (JSC::jsLess):
- (JSC::jsLessEq):
- (JSC::jsAddSlowCase):
- (JSC::jsAdd):
- (JSC::jsTypeStringForValue):
- (JSC::jsIsObjectType):
- (JSC::jsIsFunctionType):
- (JSC::Interpreter::resolve):
- (JSC::Interpreter::resolveSkip):
- (JSC::Interpreter::resolveGlobal):
- (JSC::inlineResolveBase):
- (JSC::Interpreter::resolveBase):
- (JSC::Interpreter::resolveBaseAndProperty):
- (JSC::Interpreter::resolveBaseAndFunc):
- (JSC::isNotObject):
- (JSC::Interpreter::callEval):
- (JSC::Interpreter::unwindCallFrame):
- (JSC::Interpreter::throwException):
- (JSC::Interpreter::execute):
- (JSC::Interpreter::checkTimeout):
- (JSC::Interpreter::createExceptionScope):
- (JSC::cachePrototypeChain):
- (JSC::Interpreter::tryCachePutByID):
- (JSC::countPrototypeChainEntriesAndCheckForProxies):
- (JSC::Interpreter::tryCacheGetByID):
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::retrieveArguments):
- (JSC::Interpreter::retrieveCaller):
- (JSC::Interpreter::retrieveLastCaller):
- (JSC::Interpreter::tryCTICachePutByID):
- (JSC::Interpreter::tryCTICacheGetByID):
- (JSC::returnToThrowTrampoline):
- (JSC::Interpreter::cti_op_convert_this):
- (JSC::Interpreter::cti_op_add):
- (JSC::Interpreter::cti_op_pre_inc):
- (JSC::Interpreter::cti_op_loop_if_less):
- (JSC::Interpreter::cti_op_loop_if_lesseq):
- (JSC::Interpreter::cti_op_get_by_id_generic):
- (JSC::Interpreter::cti_op_get_by_id):
- (JSC::Interpreter::cti_op_get_by_id_second):
- (JSC::Interpreter::cti_op_get_by_id_self_fail):
- (JSC::Interpreter::cti_op_get_by_id_proto_list):
- (JSC::Interpreter::cti_op_get_by_id_proto_list_full):
- (JSC::Interpreter::cti_op_get_by_id_proto_fail):
- (JSC::Interpreter::cti_op_get_by_id_array_fail):
- (JSC::Interpreter::cti_op_get_by_id_string_fail):
- (JSC::Interpreter::cti_op_instanceof):
- (JSC::Interpreter::cti_op_del_by_id):
- (JSC::Interpreter::cti_op_mul):
- (JSC::Interpreter::cti_op_call_NotJSFunction):
- (JSC::Interpreter::cti_op_resolve):
- (JSC::Interpreter::cti_op_construct_NotJSConstruct):
- (JSC::Interpreter::cti_op_get_by_val):
- (JSC::Interpreter::cti_op_resolve_func):
- (JSC::Interpreter::cti_op_sub):
- (JSC::Interpreter::cti_op_put_by_val):
- (JSC::Interpreter::cti_op_put_by_val_array):
- (JSC::Interpreter::cti_op_lesseq):
- (JSC::Interpreter::cti_op_loop_if_true):
- (JSC::Interpreter::cti_op_negate):
- (JSC::Interpreter::cti_op_resolve_base):
- (JSC::Interpreter::cti_op_resolve_skip):
- (JSC::Interpreter::cti_op_resolve_global):
- (JSC::Interpreter::cti_op_div):
- (JSC::Interpreter::cti_op_pre_dec):
- (JSC::Interpreter::cti_op_jless):
- (JSC::Interpreter::cti_op_not):
- (JSC::Interpreter::cti_op_jtrue):
- (JSC::Interpreter::cti_op_post_inc):
- (JSC::Interpreter::cti_op_eq):
- (JSC::Interpreter::cti_op_lshift):
- (JSC::Interpreter::cti_op_bitand):
- (JSC::Interpreter::cti_op_rshift):
- (JSC::Interpreter::cti_op_bitnot):
- (JSC::Interpreter::cti_op_resolve_with_base):
- (JSC::Interpreter::cti_op_mod):
- (JSC::Interpreter::cti_op_less):
- (JSC::Interpreter::cti_op_neq):
- (JSC::Interpreter::cti_op_post_dec):
- (JSC::Interpreter::cti_op_urshift):
- (JSC::Interpreter::cti_op_bitxor):
- (JSC::Interpreter::cti_op_bitor):
- (JSC::Interpreter::cti_op_call_eval):
- (JSC::Interpreter::cti_op_throw):
- (JSC::Interpreter::cti_op_next_pname):
- (JSC::Interpreter::cti_op_typeof):
- (JSC::Interpreter::cti_op_is_undefined):
- (JSC::Interpreter::cti_op_is_boolean):
- (JSC::Interpreter::cti_op_is_number):
- (JSC::Interpreter::cti_op_is_string):
- (JSC::Interpreter::cti_op_is_object):
- (JSC::Interpreter::cti_op_is_function):
- (JSC::Interpreter::cti_op_stricteq):
- (JSC::Interpreter::cti_op_nstricteq):
- (JSC::Interpreter::cti_op_to_jsnumber):
- (JSC::Interpreter::cti_op_in):
- (JSC::Interpreter::cti_op_switch_imm):
- (JSC::Interpreter::cti_op_switch_char):
- (JSC::Interpreter::cti_op_switch_string):
- (JSC::Interpreter::cti_op_del_by_val):
- (JSC::Interpreter::cti_op_new_error):
- (JSC::Interpreter::cti_vm_throw):
- * interpreter/Interpreter.h:
- (JSC::Interpreter::isJSArray):
- (JSC::Interpreter::isJSString):
- * interpreter/Register.h:
- (JSC::Register::):
- (JSC::Register::Register):
- (JSC::Register::jsValue):
- (JSC::Register::getJSValue):
- * jit/JIT.cpp:
- (JSC::):
- (JSC::JIT::compileOpStrictEq):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- * jit/JIT.h:
- (JSC::):
- (JSC::JIT::execute):
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileFastArith_op_rshift):
- (JSC::JIT::compileFastArithSlow_op_rshift):
- * jit/JITCall.cpp:
- (JSC::JIT::unlinkCall):
- (JSC::JIT::compileOpCallInitializeCallFrame):
- (JSC::JIT::compileOpCall):
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitGetVirtualRegister):
- (JSC::JIT::getConstantOperand):
- (JSC::JIT::isOperandConstant31BitImmediateInt):
- (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
- (JSC::JIT::emitInitRegister):
- * jit/JITPropertyAccess.cpp:
- (JSC::resizePropertyStorage):
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::patchGetByIdSelf):
- (JSC::JIT::patchPutByIdReplace):
- (JSC::JIT::privateCompileGetByIdSelf):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdSelfList):
- (JSC::JIT::privateCompileGetByIdProtoList):
- (JSC::JIT::privateCompileGetByIdChainList):
- (JSC::JIT::privateCompileGetByIdChain):
- (JSC::JIT::privateCompilePutByIdReplace):
+ * JavaScriptCore.xcodeproj/project.pbxproj: Updated for renames and new
+ files.
+
+ * debugger/Debugger.cpp:
+ (JSC::Debugger::recompileAllJSFunctions): Updated to use the Collector
+ iterator abstraction.
+
* jsc.cpp:
- (functionPrint):
- (functionDebug):
- (functionGC):
- (functionVersion):
- (functionRun):
- (functionLoad):
- (functionReadline):
- (functionQuit):
- * parser/Nodes.cpp:
- (JSC::NullNode::emitBytecode):
- (JSC::ArrayNode::emitBytecode):
- (JSC::FunctionCallValueNode::emitBytecode):
- (JSC::FunctionCallResolveNode::emitBytecode):
- (JSC::VoidNode::emitBytecode):
- (JSC::ConstDeclNode::emitCodeSingle):
- (JSC::ReturnNode::emitBytecode):
- (JSC::processClauseList):
- (JSC::EvalNode::emitBytecode):
- (JSC::FunctionBodyNode::emitBytecode):
- (JSC::ProgramNode::emitBytecode):
- * profiler/ProfileGenerator.cpp:
- (JSC::ProfileGenerator::addParentForConsoleStart):
- * profiler/Profiler.cpp:
- (JSC::Profiler::willExecute):
- (JSC::Profiler::didExecute):
- (JSC::Profiler::createCallIdentifier):
- * profiler/Profiler.h:
- * runtime/ArgList.cpp:
- (JSC::ArgList::slowAppend):
- * runtime/ArgList.h:
- (JSC::ArgList::at):
- (JSC::ArgList::append):
- * runtime/Arguments.cpp:
- (JSC::Arguments::put):
- * runtime/Arguments.h:
- (JSC::Arguments::createStructure):
- (JSC::asArguments):
- * runtime/ArrayConstructor.cpp:
- (JSC::callArrayConstructor):
- * runtime/ArrayPrototype.cpp:
- (JSC::getProperty):
- (JSC::putProperty):
- (JSC::arrayProtoFuncToString):
- (JSC::arrayProtoFuncToLocaleString):
- (JSC::arrayProtoFuncJoin):
- (JSC::arrayProtoFuncConcat):
- (JSC::arrayProtoFuncPop):
- (JSC::arrayProtoFuncPush):
- (JSC::arrayProtoFuncReverse):
- (JSC::arrayProtoFuncShift):
- (JSC::arrayProtoFuncSlice):
- (JSC::arrayProtoFuncSort):
- (JSC::arrayProtoFuncSplice):
- (JSC::arrayProtoFuncUnShift):
- (JSC::arrayProtoFuncFilter):
- (JSC::arrayProtoFuncMap):
- (JSC::arrayProtoFuncEvery):
- (JSC::arrayProtoFuncForEach):
- (JSC::arrayProtoFuncSome):
- (JSC::arrayProtoFuncIndexOf):
- (JSC::arrayProtoFuncLastIndexOf):
- * runtime/BooleanConstructor.cpp:
- (JSC::callBooleanConstructor):
- (JSC::constructBooleanFromImmediateBoolean):
- * runtime/BooleanConstructor.h:
- * runtime/BooleanObject.h:
- (JSC::asBooleanObject):
- * runtime/BooleanPrototype.cpp:
- (JSC::booleanProtoFuncToString):
- (JSC::booleanProtoFuncValueOf):
- * runtime/CallData.cpp:
- (JSC::call):
- * runtime/CallData.h:
- * runtime/Collector.cpp:
- (JSC::Heap::protect):
- (JSC::Heap::unprotect):
- (JSC::Heap::heap):
- (JSC::Heap::collect):
- * runtime/Collector.h:
- * runtime/Completion.cpp:
- (JSC::evaluate):
- * runtime/Completion.h:
- (JSC::Completion::Completion):
- (JSC::Completion::value):
- (JSC::Completion::setValue):
- (JSC::Completion::isValueCompletion):
- * runtime/ConstructData.cpp:
- (JSC::construct):
- * runtime/ConstructData.h:
- * runtime/DateConstructor.cpp:
- (JSC::constructDate):
- (JSC::callDate):
- (JSC::dateParse):
- (JSC::dateNow):
- (JSC::dateUTC):
- * runtime/DateInstance.h:
- (JSC::asDateInstance):
- * runtime/DatePrototype.cpp:
- (JSC::dateProtoFuncToString):
- (JSC::dateProtoFuncToUTCString):
- (JSC::dateProtoFuncToDateString):
- (JSC::dateProtoFuncToTimeString):
- (JSC::dateProtoFuncToLocaleString):
- (JSC::dateProtoFuncToLocaleDateString):
- (JSC::dateProtoFuncToLocaleTimeString):
- (JSC::dateProtoFuncValueOf):
- (JSC::dateProtoFuncGetTime):
- (JSC::dateProtoFuncGetFullYear):
- (JSC::dateProtoFuncGetUTCFullYear):
- (JSC::dateProtoFuncToGMTString):
- (JSC::dateProtoFuncGetMonth):
- (JSC::dateProtoFuncGetUTCMonth):
- (JSC::dateProtoFuncGetDate):
- (JSC::dateProtoFuncGetUTCDate):
- (JSC::dateProtoFuncGetDay):
- (JSC::dateProtoFuncGetUTCDay):
- (JSC::dateProtoFuncGetHours):
- (JSC::dateProtoFuncGetUTCHours):
- (JSC::dateProtoFuncGetMinutes):
- (JSC::dateProtoFuncGetUTCMinutes):
- (JSC::dateProtoFuncGetSeconds):
- (JSC::dateProtoFuncGetUTCSeconds):
- (JSC::dateProtoFuncGetMilliSeconds):
- (JSC::dateProtoFuncGetUTCMilliseconds):
- (JSC::dateProtoFuncGetTimezoneOffset):
- (JSC::dateProtoFuncSetTime):
- (JSC::setNewValueFromTimeArgs):
- (JSC::setNewValueFromDateArgs):
- (JSC::dateProtoFuncSetMilliSeconds):
- (JSC::dateProtoFuncSetUTCMilliseconds):
- (JSC::dateProtoFuncSetSeconds):
- (JSC::dateProtoFuncSetUTCSeconds):
- (JSC::dateProtoFuncSetMinutes):
- (JSC::dateProtoFuncSetUTCMinutes):
- (JSC::dateProtoFuncSetHours):
- (JSC::dateProtoFuncSetUTCHours):
- (JSC::dateProtoFuncSetDate):
- (JSC::dateProtoFuncSetUTCDate):
- (JSC::dateProtoFuncSetMonth):
- (JSC::dateProtoFuncSetUTCMonth):
- (JSC::dateProtoFuncSetFullYear):
- (JSC::dateProtoFuncSetUTCFullYear):
- (JSC::dateProtoFuncSetYear):
- (JSC::dateProtoFuncGetYear):
- * runtime/DatePrototype.h:
- (JSC::DatePrototype::createStructure):
- * runtime/ErrorConstructor.cpp:
- (JSC::callErrorConstructor):
- * runtime/ErrorPrototype.cpp:
- (JSC::errorProtoFuncToString):
- * runtime/ExceptionHelpers.cpp:
- (JSC::createInterruptedExecutionException):
- (JSC::createError):
- (JSC::createStackOverflowError):
- (JSC::createUndefinedVariableError):
- (JSC::createErrorMessage):
- (JSC::createInvalidParamError):
- (JSC::createNotAConstructorError):
- (JSC::createNotAFunctionError):
- * runtime/ExceptionHelpers.h:
- * runtime/FunctionConstructor.cpp:
- (JSC::callFunctionConstructor):
- * runtime/FunctionPrototype.cpp:
- (JSC::callFunctionPrototype):
- (JSC::functionProtoFuncToString):
- (JSC::functionProtoFuncApply):
- (JSC::functionProtoFuncCall):
- * runtime/FunctionPrototype.h:
- (JSC::FunctionPrototype::createStructure):
- * runtime/GetterSetter.cpp:
- (JSC::GetterSetter::toPrimitive):
- (JSC::GetterSetter::getPrimitiveNumber):
- * runtime/GetterSetter.h:
- (JSC::asGetterSetter):
- * runtime/InitializeThreading.cpp:
- * runtime/InternalFunction.h:
- (JSC::InternalFunction::createStructure):
- (JSC::asInternalFunction):
- * runtime/JSActivation.cpp:
- (JSC::JSActivation::getOwnPropertySlot):
- (JSC::JSActivation::put):
- (JSC::JSActivation::putWithAttributes):
- (JSC::JSActivation::argumentsGetter):
- * runtime/JSActivation.h:
- (JSC::JSActivation::createStructure):
- (JSC::asActivation):
- * runtime/JSArray.cpp:
- (JSC::storageSize):
- (JSC::JSArray::JSArray):
- (JSC::JSArray::getOwnPropertySlot):
- (JSC::JSArray::put):
- (JSC::JSArray::putSlowCase):
- (JSC::JSArray::deleteProperty):
- (JSC::JSArray::getPropertyNames):
- (JSC::JSArray::setLength):
- (JSC::JSArray::pop):
- (JSC::JSArray::push):
- (JSC::JSArray::mark):
- (JSC::JSArray::sort):
- (JSC::JSArray::compactForSorting):
- (JSC::JSArray::checkConsistency):
- (JSC::constructArray):
- * runtime/JSArray.h:
- (JSC::JSArray::getIndex):
- (JSC::JSArray::setIndex):
- (JSC::JSArray::createStructure):
- (JSC::asArray):
- * runtime/JSCell.cpp:
- (JSC::JSCell::put):
- (JSC::JSCell::getJSNumber):
- * runtime/JSCell.h:
- (JSC::asCell):
- (JSC::JSValue::asCell):
- (JSC::JSValue::toPrimitive):
- (JSC::JSValue::getPrimitiveNumber):
- (JSC::JSValue::getJSNumber):
- * runtime/JSFunction.cpp:
- (JSC::JSFunction::call):
- (JSC::JSFunction::argumentsGetter):
- (JSC::JSFunction::callerGetter):
- (JSC::JSFunction::lengthGetter):
- (JSC::JSFunction::getOwnPropertySlot):
- (JSC::JSFunction::put):
- (JSC::JSFunction::construct):
- * runtime/JSFunction.h:
- (JSC::JSFunction::createStructure):
- (JSC::asFunction):
- * runtime/JSGlobalData.h:
- * runtime/JSGlobalObject.cpp:
- (JSC::markIfNeeded):
- (JSC::JSGlobalObject::put):
- (JSC::JSGlobalObject::putWithAttributes):
- (JSC::JSGlobalObject::reset):
- (JSC::JSGlobalObject::resetPrototype):
- * runtime/JSGlobalObject.h:
- (JSC::JSGlobalObject::createStructure):
- (JSC::JSGlobalObject::GlobalPropertyInfo::GlobalPropertyInfo):
- (JSC::asGlobalObject):
- (JSC::Structure::prototypeForLookup):
- * runtime/JSGlobalObjectFunctions.cpp:
- (JSC::encode):
- (JSC::decode):
- (JSC::globalFuncEval):
- (JSC::globalFuncParseInt):
- (JSC::globalFuncParseFloat):
- (JSC::globalFuncIsNaN):
- (JSC::globalFuncIsFinite):
- (JSC::globalFuncDecodeURI):
- (JSC::globalFuncDecodeURIComponent):
- (JSC::globalFuncEncodeURI):
- (JSC::globalFuncEncodeURIComponent):
- (JSC::globalFuncEscape):
- (JSC::globalFuncUnescape):
- (JSC::globalFuncJSCPrint):
- * runtime/JSGlobalObjectFunctions.h:
- * runtime/JSImmediate.cpp:
- (JSC::JSImmediate::toThisObject):
- (JSC::JSImmediate::toObject):
- (JSC::JSImmediate::prototype):
- (JSC::JSImmediate::toString):
- * runtime/JSImmediate.h:
- (JSC::JSImmediate::isImmediate):
- (JSC::JSImmediate::isNumber):
- (JSC::JSImmediate::isPositiveNumber):
- (JSC::JSImmediate::isBoolean):
- (JSC::JSImmediate::isUndefinedOrNull):
- (JSC::JSImmediate::isNegative):
- (JSC::JSImmediate::isEitherImmediate):
- (JSC::JSImmediate::isAnyImmediate):
- (JSC::JSImmediate::areBothImmediate):
- (JSC::JSImmediate::areBothImmediateNumbers):
- (JSC::JSImmediate::andImmediateNumbers):
- (JSC::JSImmediate::xorImmediateNumbers):
- (JSC::JSImmediate::orImmediateNumbers):
- (JSC::JSImmediate::rightShiftImmediateNumbers):
- (JSC::JSImmediate::canDoFastAdditiveOperations):
- (JSC::JSImmediate::addImmediateNumbers):
- (JSC::JSImmediate::subImmediateNumbers):
- (JSC::JSImmediate::incImmediateNumber):
- (JSC::JSImmediate::decImmediateNumber):
- (JSC::JSImmediate::makeValue):
- (JSC::JSImmediate::makeInt):
- (JSC::JSImmediate::makeBool):
- (JSC::JSImmediate::makeUndefined):
- (JSC::JSImmediate::makeNull):
- (JSC::JSImmediate::intValue):
- (JSC::JSImmediate::uintValue):
- (JSC::JSImmediate::boolValue):
- (JSC::JSImmediate::rawValue):
- (JSC::JSImmediate::trueImmediate):
- (JSC::JSImmediate::falseImmediate):
- (JSC::JSImmediate::undefinedImmediate):
- (JSC::JSImmediate::nullImmediate):
- (JSC::JSImmediate::zeroImmediate):
- (JSC::JSImmediate::oneImmediate):
- (JSC::JSImmediate::impossibleValue):
- (JSC::JSImmediate::toBoolean):
- (JSC::JSImmediate::getTruncatedUInt32):
- (JSC::JSImmediate::from):
- (JSC::JSImmediate::getTruncatedInt32):
- (JSC::JSImmediate::toDouble):
- (JSC::JSImmediate::getUInt32):
- (JSC::jsNull):
- (JSC::jsBoolean):
- (JSC::jsUndefined):
- (JSC::JSValue::isUndefined):
- (JSC::JSValue::isNull):
- (JSC::JSValue::isUndefinedOrNull):
- (JSC::JSValue::isBoolean):
- (JSC::JSValue::getBoolean):
- (JSC::JSValue::toInt32):
- (JSC::JSValue::toUInt32):
- (JSC::toInt32):
- (JSC::toUInt32):
- * runtime/JSNotAnObject.cpp:
- (JSC::JSNotAnObject::toPrimitive):
- (JSC::JSNotAnObject::getPrimitiveNumber):
- (JSC::JSNotAnObject::put):
- * runtime/JSNotAnObject.h:
- (JSC::JSNotAnObject::createStructure):
- * runtime/JSNumberCell.cpp:
- (JSC::JSNumberCell::toPrimitive):
- (JSC::JSNumberCell::getPrimitiveNumber):
- (JSC::JSNumberCell::getJSNumber):
- (JSC::jsNumberCell):
- (JSC::jsNaN):
- * runtime/JSNumberCell.h:
- (JSC::JSNumberCell::createStructure):
- (JSC::asNumberCell):
- (JSC::jsNumber):
- (JSC::JSValue::toJSNumber):
- * runtime/JSObject.cpp:
- (JSC::JSObject::mark):
- (JSC::JSObject::put):
- (JSC::JSObject::putWithAttributes):
- (JSC::callDefaultValueFunction):
- (JSC::JSObject::getPrimitiveNumber):
- (JSC::JSObject::defaultValue):
- (JSC::JSObject::defineGetter):
- (JSC::JSObject::defineSetter):
- (JSC::JSObject::lookupGetter):
- (JSC::JSObject::lookupSetter):
- (JSC::JSObject::hasInstance):
- (JSC::JSObject::toNumber):
- (JSC::JSObject::toString):
- (JSC::JSObject::fillGetterPropertySlot):
- * runtime/JSObject.h:
- (JSC::JSObject::getDirect):
- (JSC::JSObject::getDirectLocation):
- (JSC::JSObject::offsetForLocation):
- (JSC::JSObject::locationForOffset):
- (JSC::JSObject::getDirectOffset):
- (JSC::JSObject::putDirectOffset):
- (JSC::JSObject::createStructure):
- (JSC::asObject):
- (JSC::JSObject::prototype):
- (JSC::JSObject::setPrototype):
- (JSC::JSObject::inlineGetOwnPropertySlot):
- (JSC::JSObject::getOwnPropertySlotForWrite):
- (JSC::JSObject::getPropertySlot):
- (JSC::JSObject::get):
- (JSC::JSObject::putDirect):
- (JSC::JSObject::putDirectWithoutTransition):
- (JSC::JSObject::toPrimitive):
- (JSC::JSValue::get):
- (JSC::JSValue::put):
- (JSC::JSObject::allocatePropertyStorageInline):
- * runtime/JSPropertyNameIterator.cpp:
- (JSC::JSPropertyNameIterator::toPrimitive):
- (JSC::JSPropertyNameIterator::getPrimitiveNumber):
- * runtime/JSPropertyNameIterator.h:
- (JSC::JSPropertyNameIterator::create):
- (JSC::JSPropertyNameIterator::next):
- * runtime/JSStaticScopeObject.cpp:
- (JSC::JSStaticScopeObject::put):
- (JSC::JSStaticScopeObject::putWithAttributes):
- * runtime/JSStaticScopeObject.h:
- (JSC::JSStaticScopeObject::JSStaticScopeObject):
- (JSC::JSStaticScopeObject::createStructure):
- * runtime/JSString.cpp:
- (JSC::JSString::toPrimitive):
- (JSC::JSString::getPrimitiveNumber):
- (JSC::JSString::getOwnPropertySlot):
- * runtime/JSString.h:
- (JSC::JSString::createStructure):
- (JSC::asString):
- * runtime/JSValue.h:
- (JSC::JSValuePtr::makeImmediate):
- (JSC::JSValuePtr::immediateValue):
- (JSC::JSValuePtr::JSValuePtr):
- (JSC::JSValuePtr::operator->):
- (JSC::JSValuePtr::hasValue):
- (JSC::JSValuePtr::operator==):
- (JSC::JSValuePtr::operator!=):
- (JSC::JSValuePtr::encode):
- (JSC::JSValuePtr::decode):
- (JSC::JSValue::asValue):
- (JSC::noValue):
- (JSC::operator==):
- (JSC::operator!=):
- * runtime/JSVariableObject.h:
- (JSC::JSVariableObject::symbolTablePut):
- (JSC::JSVariableObject::symbolTablePutWithAttributes):
- * runtime/JSWrapperObject.cpp:
- (JSC::JSWrapperObject::mark):
- * runtime/JSWrapperObject.h:
- (JSC::JSWrapperObject::internalValue):
- (JSC::JSWrapperObject::setInternalValue):
- * runtime/Lookup.cpp:
- (JSC::setUpStaticFunctionSlot):
- * runtime/Lookup.h:
- (JSC::lookupPut):
- * runtime/MathObject.cpp:
- (JSC::mathProtoFuncAbs):
- (JSC::mathProtoFuncACos):
- (JSC::mathProtoFuncASin):
- (JSC::mathProtoFuncATan):
- (JSC::mathProtoFuncATan2):
- (JSC::mathProtoFuncCeil):
- (JSC::mathProtoFuncCos):
- (JSC::mathProtoFuncExp):
- (JSC::mathProtoFuncFloor):
- (JSC::mathProtoFuncLog):
- (JSC::mathProtoFuncMax):
- (JSC::mathProtoFuncMin):
- (JSC::mathProtoFuncPow):
- (JSC::mathProtoFuncRandom):
- (JSC::mathProtoFuncRound):
- (JSC::mathProtoFuncSin):
- (JSC::mathProtoFuncSqrt):
- (JSC::mathProtoFuncTan):
- * runtime/MathObject.h:
- (JSC::MathObject::createStructure):
- * runtime/NativeErrorConstructor.cpp:
- (JSC::callNativeErrorConstructor):
- * runtime/NumberConstructor.cpp:
- (JSC::numberConstructorNaNValue):
- (JSC::numberConstructorNegInfinity):
- (JSC::numberConstructorPosInfinity):
- (JSC::numberConstructorMaxValue):
- (JSC::numberConstructorMinValue):
- (JSC::callNumberConstructor):
- * runtime/NumberConstructor.h:
- (JSC::NumberConstructor::createStructure):
- * runtime/NumberObject.cpp:
- (JSC::NumberObject::getJSNumber):
- (JSC::constructNumberFromImmediateNumber):
- * runtime/NumberObject.h:
- * runtime/NumberPrototype.cpp:
- (JSC::numberProtoFuncToString):
- (JSC::numberProtoFuncToLocaleString):
- (JSC::numberProtoFuncValueOf):
- (JSC::numberProtoFuncToFixed):
- (JSC::numberProtoFuncToExponential):
- (JSC::numberProtoFuncToPrecision):
- * runtime/ObjectConstructor.cpp:
- (JSC::constructObject):
- (JSC::callObjectConstructor):
- * runtime/ObjectPrototype.cpp:
- (JSC::objectProtoFuncValueOf):
- (JSC::objectProtoFuncHasOwnProperty):
- (JSC::objectProtoFuncIsPrototypeOf):
- (JSC::objectProtoFuncDefineGetter):
- (JSC::objectProtoFuncDefineSetter):
- (JSC::objectProtoFuncLookupGetter):
- (JSC::objectProtoFuncLookupSetter):
- (JSC::objectProtoFuncPropertyIsEnumerable):
- (JSC::objectProtoFuncToLocaleString):
- (JSC::objectProtoFuncToString):
- * runtime/ObjectPrototype.h:
- * runtime/Operations.cpp:
- (JSC::equal):
- (JSC::equalSlowCase):
- (JSC::strictEqual):
- (JSC::strictEqualSlowCase):
- (JSC::throwOutOfMemoryError):
- * runtime/Operations.h:
- (JSC::equalSlowCaseInline):
- (JSC::strictEqualSlowCaseInline):
- * runtime/PropertySlot.cpp:
- (JSC::PropertySlot::functionGetter):
- * runtime/PropertySlot.h:
- (JSC::PropertySlot::PropertySlot):
- (JSC::PropertySlot::getValue):
- (JSC::PropertySlot::putValue):
- (JSC::PropertySlot::setValueSlot):
- (JSC::PropertySlot::setValue):
- (JSC::PropertySlot::setCustom):
- (JSC::PropertySlot::setCustomIndex):
- (JSC::PropertySlot::slotBase):
- (JSC::PropertySlot::setBase):
- (JSC::PropertySlot::):
- * runtime/Protect.h:
- (JSC::gcProtect):
- (JSC::gcUnprotect):
- (JSC::ProtectedPtr::ProtectedPtr):
- (JSC::ProtectedPtr::operator JSValuePtr):
- (JSC::ProtectedJSValuePtr::ProtectedJSValuePtr):
- (JSC::ProtectedJSValuePtr::get):
- (JSC::ProtectedJSValuePtr::operator JSValuePtr):
- (JSC::ProtectedJSValuePtr::operator->):
- (JSC::::ProtectedPtr):
- (JSC::::~ProtectedPtr):
- (JSC::::operator):
- (JSC::ProtectedJSValuePtr::~ProtectedJSValuePtr):
- (JSC::ProtectedJSValuePtr::operator=):
- (JSC::operator==):
- (JSC::operator!=):
- * runtime/RegExpConstructor.cpp:
- (JSC::RegExpConstructor::getBackref):
- (JSC::RegExpConstructor::getLastParen):
- (JSC::RegExpConstructor::getLeftContext):
- (JSC::RegExpConstructor::getRightContext):
- (JSC::regExpConstructorDollar1):
- (JSC::regExpConstructorDollar2):
- (JSC::regExpConstructorDollar3):
- (JSC::regExpConstructorDollar4):
- (JSC::regExpConstructorDollar5):
- (JSC::regExpConstructorDollar6):
- (JSC::regExpConstructorDollar7):
- (JSC::regExpConstructorDollar8):
- (JSC::regExpConstructorDollar9):
- (JSC::regExpConstructorInput):
- (JSC::regExpConstructorMultiline):
- (JSC::regExpConstructorLastMatch):
- (JSC::regExpConstructorLastParen):
- (JSC::regExpConstructorLeftContext):
- (JSC::regExpConstructorRightContext):
- (JSC::RegExpConstructor::put):
- (JSC::setRegExpConstructorInput):
- (JSC::setRegExpConstructorMultiline):
- (JSC::constructRegExp):
- (JSC::callRegExpConstructor):
- * runtime/RegExpConstructor.h:
- (JSC::RegExpConstructor::createStructure):
- (JSC::asRegExpConstructor):
- * runtime/RegExpMatchesArray.h:
- (JSC::RegExpMatchesArray::put):
- * runtime/RegExpObject.cpp:
- (JSC::regExpObjectGlobal):
- (JSC::regExpObjectIgnoreCase):
- (JSC::regExpObjectMultiline):
- (JSC::regExpObjectSource):
- (JSC::regExpObjectLastIndex):
- (JSC::RegExpObject::put):
- (JSC::setRegExpObjectLastIndex):
- (JSC::RegExpObject::test):
- (JSC::RegExpObject::exec):
- (JSC::callRegExpObject):
- * runtime/RegExpObject.h:
- (JSC::RegExpObject::createStructure):
- (JSC::asRegExpObject):
- * runtime/RegExpPrototype.cpp:
- (JSC::regExpProtoFuncTest):
- (JSC::regExpProtoFuncExec):
- (JSC::regExpProtoFuncCompile):
- (JSC::regExpProtoFuncToString):
- * runtime/StringConstructor.cpp:
- (JSC::stringFromCharCodeSlowCase):
- (JSC::stringFromCharCode):
- (JSC::callStringConstructor):
- * runtime/StringObject.cpp:
- (JSC::StringObject::put):
- * runtime/StringObject.h:
- (JSC::StringObject::createStructure):
- (JSC::asStringObject):
- * runtime/StringObjectThatMasqueradesAsUndefined.h:
- (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
- * runtime/StringPrototype.cpp:
- (JSC::stringProtoFuncReplace):
- (JSC::stringProtoFuncToString):
- (JSC::stringProtoFuncCharAt):
- (JSC::stringProtoFuncCharCodeAt):
- (JSC::stringProtoFuncConcat):
- (JSC::stringProtoFuncIndexOf):
- (JSC::stringProtoFuncLastIndexOf):
- (JSC::stringProtoFuncMatch):
- (JSC::stringProtoFuncSearch):
- (JSC::stringProtoFuncSlice):
- (JSC::stringProtoFuncSplit):
- (JSC::stringProtoFuncSubstr):
- (JSC::stringProtoFuncSubstring):
- (JSC::stringProtoFuncToLowerCase):
- (JSC::stringProtoFuncToUpperCase):
- (JSC::stringProtoFuncLocaleCompare):
- (JSC::stringProtoFuncBig):
- (JSC::stringProtoFuncSmall):
- (JSC::stringProtoFuncBlink):
- (JSC::stringProtoFuncBold):
- (JSC::stringProtoFuncFixed):
- (JSC::stringProtoFuncItalics):
- (JSC::stringProtoFuncStrike):
- (JSC::stringProtoFuncSub):
- (JSC::stringProtoFuncSup):
- (JSC::stringProtoFuncFontcolor):
- (JSC::stringProtoFuncFontsize):
- (JSC::stringProtoFuncAnchor):
- (JSC::stringProtoFuncLink):
- * runtime/Structure.cpp:
- (JSC::Structure::Structure):
- (JSC::Structure::changePrototypeTransition):
- (JSC::Structure::createCachedPrototypeChain):
- * runtime/Structure.h:
- (JSC::Structure::create):
- (JSC::Structure::setPrototypeWithoutTransition):
- (JSC::Structure::storedPrototype):
-
-2009-01-06 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- <https://bugs.webkit.org/show_bug.cgi?id=23085> [jsfunfuzz] Over released ScopeChainNode
- <rdar://problem/6474110>
-
- So this delightful bug was caused by our unwind code using a ScopeChain to perform
- the unwind. The ScopeChain would ref the initial top of the scope chain, then deref
- the resultant top of scope chain, which is incorrect.
-
- This patch removes the dependency on ScopeChain for the unwind, and i've filed
- <https://bugs.webkit.org/show_bug.cgi?id=23144> to look into the unintuitive
- ScopeChain behaviour.
-
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::throwException):
-
-2009-01-06 Adam Roben <aroben@apple.com>
-
- Hopeful Windows crash-on-launch fix
-
- * wtf/Platform.h: Force a world rebuild by touching this file.
-
-2009-01-06 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by NOBODY (Build fix).
-
- * GNUmakefile.am:Add ByteArray.cpp too
-
-2009-01-06 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by NOBODY (Speculative build fix).
-
- AllInOneFile.cpp does not include the JSByteArray.cpp include it...
-
- * GNUmakefile.am:
-
-2009-01-05 Oliver Hunt <oliver@apple.com>
-
- Reviewed by NOBODY (Build fix).
-
- Fix Wx build
-
- * JavaScriptCoreSources.bkl:
-
-2009-01-05 Oliver Hunt <oliver@apple.com>
-
- Windows build fixes
-
- Rubber-stamped by Alice Liu.
-
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::Interpreter):
- * runtime/ByteArray.cpp:
- (JSC::ByteArray::create):
- * runtime/ByteArray.h:
-
-2009-01-05 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Gavin Barraclough.
-
- CanvasPixelArray performance is too slow
- <https://bugs.webkit.org/show_bug.cgi?id=23123>
-
- The fix to this is to devirtualise get and put in a manner similar to
- JSString and JSArray. To do this I've added a ByteArray implementation
- and JSByteArray wrapper to JSC. We can then do vptr comparisons to
- devirtualise the calls.
-
- This devirtualisation improves performance by 1.5-2x in my somewhat ad
- hoc tests.
-
- * GNUmakefile.am:
- * JavaScriptCore.exp:
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::Interpreter):
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::cti_op_get_by_val):
- (JSC::Interpreter::cti_op_put_by_val):
- * interpreter/Interpreter.h:
- (JSC::Interpreter::isJSByteArray):
- * runtime/ByteArray.cpp: Added.
- (JSC::ByteArray::create):
- * runtime/ByteArray.h: Added.
- (JSC::ByteArray::length):
- (JSC::ByteArray::set):
- (JSC::ByteArray::get):
- (JSC::ByteArray::data):
- (JSC::ByteArray::ByteArray):
- * runtime/JSByteArray.cpp: Added.
- (JSC::):
- (JSC::JSByteArray::JSByteArray):
- (JSC::JSByteArray::createStructure):
- (JSC::JSByteArray::getOwnPropertySlot):
- (JSC::JSByteArray::put):
- (JSC::JSByteArray::getPropertyNames):
- * runtime/JSByteArray.h: Added.
- (JSC::JSByteArray::canAccessIndex):
- (JSC::JSByteArray::getIndex):
- (JSC::JSByteArray::setIndex):
- (JSC::JSByteArray::classInfo):
- (JSC::JSByteArray::length):
- (JSC::JSByteArray::):
- (JSC::JSByteArray::JSByteArray):
- (JSC::asByteArray):
-
-2009-01-05 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=23073
- <rdar://problem/6471129> Workers crash on Windows Release builds
-
- * wtf/ThreadSpecific.h:
- (WTF::ThreadSpecific::destroy): Changed to clear the pointer only after data object
- destruction is finished - otherwise, WebCore::ThreadGlobalData destructor was re-creating
- the object in order to access atomic string table.
- (WTF::ThreadSpecific::operator T*): Symmetrically, set up the per-thread pointer before
- data constructor is called.
-
- * wtf/ThreadingWin.cpp: (WTF::wtfThreadEntryPoint): Remove a Windows-only hack to finalize
- a thread - pthreadVC2 is a DLL, so it gets thread detached messages, and cleans up thread
- specific data automatically. Besides, this code wasn't even compiled in for some time now.
-
-2009-01-05 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=23115
- Create a version of ASSERT for use with otherwise unused variables
-
- * wtf/Assertions.h: Added ASSERT_UNUSED.
-
- * jit/ExecutableAllocatorPosix.cpp:
- (JSC::ExecutablePool::systemRelease):
- * runtime/Collector.cpp:
- (JSC::Heap::destroy):
- (JSC::Heap::heapAllocate):
- * runtime/JSNotAnObject.cpp:
- (JSC::JSNotAnObject::toPrimitive):
- (JSC::JSNotAnObject::getPrimitiveNumber):
- (JSC::JSNotAnObject::toBoolean):
- (JSC::JSNotAnObject::toNumber):
- (JSC::JSNotAnObject::toString):
- (JSC::JSNotAnObject::getOwnPropertySlot):
- (JSC::JSNotAnObject::put):
- (JSC::JSNotAnObject::deleteProperty):
- (JSC::JSNotAnObject::getPropertyNames):
- * wtf/TCSystemAlloc.cpp:
- (TCMalloc_SystemRelease):
- Use it in some places that used other idioms for this purpose.
-
-2009-01-04 Alice Liu <alice.liu@apple.com>
-
- <rdar://problem/6341776> Merge m_transitionCount and m_offset in Structure.
-
- Reviewed by Darin Adler.
-
- * runtime/Structure.cpp:
- (JSC::Structure::Structure): Remove m_transitionCount
- (JSC::Structure::addPropertyTransitionToExistingStructure): No need to wait until after the assignment to offset to assert if it's notFound; move it up.
- (JSC::Structure::addPropertyTransition): Use method for transitionCount instead of m_transitionCount. Remove line that maintains the m_transitionCount.
- (JSC::Structure::changePrototypeTransition): Remove line that maintains the m_transitionCount.
- (JSC::Structure::getterSetterTransition): Remove line that maintains the m_transitionCount.
- * runtime/Structure.h:
- Changed s_maxTransitionLength and m_offset from size_t to signed char. m_offset will never become greater than 64
- because the structure transitions to a dictionary at that time.
- (JSC::Structure::transitionCount): method to replace the data member
-
-2009-01-04 Darin Adler <darin@apple.com>
-
- Reviewed by David Kilzer.
-
- Bug 15114: Provide compile-time assertions for sizeof(UChar), sizeof(DeprecatedChar), etc.
- https://bugs.webkit.org/show_bug.cgi?id=15114
-
- * wtf/unicode/Unicode.h: Assert size of UChar. There is no DeprecatedChar any more.
-
-2009-01-03 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Change the pcVector from storing native code pointers to storing offsets
- from the base pointer. This will allow us to generate the pcVector on demand
- for exceptions.
-
- * bytecode/CodeBlock.h:
- (JSC::PC::PC):
- (JSC::getNativePCOffset):
- (JSC::CodeBlock::getBytecodeIndex):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompile):
-
-2009-01-02 Oliver Hunt <oliver@apple.com>
-
- Reviewed by NOBODY (Build fix).
-
- * runtime/ScopeChain.cpp:
-
-2009-01-02 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Gavin Barraclough.
-
- [jsfunfuzz] unwind logic for exceptions in eval fails to account for dynamic scope external to the eval
- https://bugs.webkit.org/show_bug.cgi?id=23078
-
- This bug was caused by eval codeblocks being generated without accounting
- for the depth of the scope chain they inherited. This meant that exception
- handlers would understate their expected scope chain depth, which in turn
- led to incorrectly removing nodes from the scope chain.
-
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::BytecodeGenerator):
- (JSC::BytecodeGenerator::emitCatch):
- * bytecompiler/BytecodeGenerator.h:
- * interpreter/Interpreter.cpp:
- (JSC::depth):
- * runtime/ScopeChain.cpp:
- (JSC::ScopeChain::localDepth):
- * runtime/ScopeChain.h:
- (JSC::ScopeChainNode::deref):
- (JSC::ScopeChainNode::ref):
-
-2009-01-02 David Smith <catfish.man@gmail.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=22699
- Enable NodeList caching for getElementsByTagName
-
- * wtf/HashFunctions.h: Moved the definition of PHI here and renamed to stringHashingStartValue
-
-2009-01-02 David Kilzer <ddkilzer@apple.com>
-
- Attempt to fix Qt Linux build after r39553
-
- * wtf/RandomNumberSeed.h: Include <sys/time.h> for gettimeofday().
- Include <sys/types.h> and <unistd.h> for getpid().
-
-2009-01-02 David Kilzer <ddkilzer@apple.com>
-
- Bug 23081: These files are no longer part of the KDE libraries
-
- <https://bugs.webkit.org/show_bug.cgi?id=23081>
-
- Reviewed by Darin Adler.
-
- Removed "This file is part of the KDE libraries" comment from
- source files. Added or updated Apple copyrights as well.
-
- * parser/Lexer.h:
- * wtf/HashCountedSet.h:
- * wtf/RetainPtr.h:
- * wtf/VectorTraits.h:
-
-2009-01-02 David Kilzer <ddkilzer@apple.com>
-
- Bug 23080: Remove last vestiges of KJS references
-
- <https://bugs.webkit.org/show_bug.cgi?id=23080>
-
- Reviewed by Darin Adler.
-
- Also updated Apple copyright statements.
-
- * DerivedSources.make: Changed bison "kjsyy" prefix to "jscyy".
- * GNUmakefile.am: Ditto.
- * JavaScriptCore.pri: Ditto. Also changed KJSBISON to JSCBISON
- and kjsbison to jscbison.
-
- * JavaScriptCoreSources.bkl: Changed JSCORE_KJS_SOURCES to
- JSCORE_JSC_SOURCES.
- * jscore.bkl: Ditto.
-
- * create_hash_table: Updated copyright and removed old comment.
-
- * parser/Grammar.y: Changed "kjsyy" prefix to "jscyy" prefix.
- * parser/Lexer.cpp: Ditto. Also changed KJS_DEBUG_LEX to
- JSC_DEBUG_LEX.
- (jscyylex):
- (JSC::Lexer::lex):
- * parser/Parser.cpp: Ditto.
- (JSC::Parser::parse):
-
- * pcre/dftables: Changed "kjs_pcre_" prefix to "jsc_pcre_".
- * pcre/pcre_compile.cpp: Ditto.
- (getOthercaseRange):
- (encodeUTF8):
- (compileBranch):
- (calculateCompiledPatternLength):
- * pcre/pcre_exec.cpp: Ditto.
- (matchRef):
- (getUTF8CharAndIncrementLength):
- (match):
- * pcre/pcre_internal.h: Ditto.
- (toLowerCase):
- (flipCase):
- (classBitmapForChar):
- (charTypeForChar):
- * pcre/pcre_tables.cpp: Ditto.
- * pcre/pcre_ucp_searchfuncs.cpp: Ditto.
- (jsc_pcre_ucp_othercase):
- * pcre/pcre_xclass.cpp: Ditto.
- (getUTF8CharAndAdvancePointer):
- (jsc_pcre_xclass):
-
- * runtime/Collector.h: Updated header guards using the
- clean-header-guards script.
- * runtime/CollectorHeapIterator.h: Added missing header guard.
- * runtime/Identifier.h: Updated header guards.
- * runtime/JSFunction.h: Fixed end-of-namespace comment.
-
- * runtime/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::reset): Renamed "kjsprint" debug function
- to "jscprint". Changed implementation method from
- globalFuncKJSPrint() to globalFuncJSCPrint().
- * runtime/JSGlobalObjectFunctions.cpp:
- (JSC::globalFuncJSCPrint): Renamed from globalFuncKJSPrint().
- * runtime/JSGlobalObjectFunctions.h: Ditto.
-
- * runtime/JSImmediate.h: Updated header guards.
- * runtime/JSLock.h: Ditto.
- * runtime/JSType.h: Ditto.
- * runtime/JSWrapperObject.h: Ditto.
- * runtime/Lookup.h: Ditto.
- * runtime/Operations.h: Ditto.
- * runtime/Protect.h: Ditto.
- * runtime/RegExp.h: Ditto.
- * runtime/UString.h: Ditto.
-
- * tests/mozilla/js1_5/Array/regress-157652.js: Changed "KJS"
- reference in comment to "JSC".
-
- * wrec/CharacterClassConstructor.cpp: Change "kjs_pcre_" function
- prefixes to "jsc_pcre_".
- (JSC::WREC::CharacterClassConstructor::put):
- (JSC::WREC::CharacterClassConstructor::flush):
-
- * wtf/unicode/Unicode.h: Change "KJS_" header guard to "WTF_".
- * wtf/unicode/icu/UnicodeIcu.h: Ditto.
- * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
-
-2009-01-02 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Make randomNumber generate 2^53 values instead of 2^32 (or 2^31 for rand() platforms)
-
- * wtf/RandomNumber.cpp:
- (WTF::randomNumber):
-
-2009-01-02 David Kilzer <ddkilzer@apple.com>
-
- Remove declaration for JSC::Identifier::initializeIdentifierThreading()
-
- Reviewed by Alexey Proskuryakov.
-
- * runtime/Identifier.h:
- (JSC::Identifier::initializeIdentifierThreading): Removed
- declaration since the implementation was removed in r34412.
-
-2009-01-01 Darin Adler <darin@apple.com>
-
- Reviewed by Oliver Hunt.
-
- String.replace does not support $& replacement metacharacter when search term is not a RegExp
- <https://bugs.webkit.org/show_bug.cgi?id=21431>
- <rdar://problem/6274993>
-
- Test: fast/js/string-replace-3.html
-
- * runtime/StringPrototype.cpp:
- (JSC::substituteBackreferences): Added a null check here so we won't try to handle $$-$9
- backreferences when the search term is a string, not a RegExp. Added a check for 0 so we
- won't try to handle $0 or $00 as a backreference.
- (JSC::stringProtoFuncReplace): Added a call to substituteBackreferences.
-
-2009-01-01 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Darin Adler.
-
- Allow 32-bit integers to be stored in JSImmediates, on x64-bit.
- Presently the top 32-bits of a 64-bit JSImmediate serve as a sign extension of a 31-bit
- int stored in the low word (shifted left by one, to make room for a tag). In the new
- format, the top 31-bits serve as a sign extension of a 32-bit int, still shifted left by
- one.
-
- The new behavior is enabled using a flag in Platform.h, 'WTF_USE_ALTERNATE_JSIMMEDIATE'.
- When this is set the constants defining the range of ints allowed to be stored as
- JSImmediate values is extended. The code in JSImmediate.h can safely operate on either
- format. This patch updates the JIT so that it can also operate with the new format.
-
- ~2% progression on x86-64, with & without the JIT, on sunspider & v8 tests.
-
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::addPtr):
- (JSC::MacroAssembler::orPtr):
- (JSC::MacroAssembler::or32):
- (JSC::MacroAssembler::rshiftPtr):
- (JSC::MacroAssembler::rshift32):
- (JSC::MacroAssembler::subPtr):
- (JSC::MacroAssembler::xorPtr):
- (JSC::MacroAssembler::xor32):
- (JSC::MacroAssembler::move):
- (JSC::MacroAssembler::compareImm64ForBranch):
- (JSC::MacroAssembler::compareImm64ForBranchEquality):
- (JSC::MacroAssembler::jePtr):
- (JSC::MacroAssembler::jgePtr):
- (JSC::MacroAssembler::jlPtr):
- (JSC::MacroAssembler::jlePtr):
- (JSC::MacroAssembler::jnePtr):
- (JSC::MacroAssembler::jnzSubPtr):
- (JSC::MacroAssembler::joAddPtr):
- (JSC::MacroAssembler::jzSubPtr):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::addq_rr):
- (JSC::X86Assembler::orq_ir):
- (JSC::X86Assembler::subq_ir):
- (JSC::X86Assembler::xorq_rr):
- (JSC::X86Assembler::sarq_CLr):
- (JSC::X86Assembler::sarq_i8r):
- (JSC::X86Assembler::cmpq_ir):
- * jit/JIT.cpp:
- (JSC::JIT::compileOpStrictEq):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileFastArith_op_lshift):
- (JSC::JIT::compileFastArithSlow_op_lshift):
- (JSC::JIT::compileFastArith_op_rshift):
- (JSC::JIT::compileFastArithSlow_op_rshift):
- (JSC::JIT::compileFastArith_op_bitand):
- (JSC::JIT::compileFastArithSlow_op_bitand):
- (JSC::JIT::compileFastArith_op_mod):
- (JSC::JIT::compileFastArithSlow_op_mod):
- (JSC::JIT::compileFastArith_op_add):
- (JSC::JIT::compileFastArithSlow_op_add):
- (JSC::JIT::compileFastArith_op_mul):
- (JSC::JIT::compileFastArithSlow_op_mul):
- (JSC::JIT::compileFastArith_op_post_inc):
- (JSC::JIT::compileFastArithSlow_op_post_inc):
- (JSC::JIT::compileFastArith_op_post_dec):
- (JSC::JIT::compileFastArithSlow_op_post_dec):
- (JSC::JIT::compileFastArith_op_pre_inc):
- (JSC::JIT::compileFastArithSlow_op_pre_inc):
- (JSC::JIT::compileFastArith_op_pre_dec):
- (JSC::JIT::compileFastArithSlow_op_pre_dec):
- (JSC::JIT::compileBinaryArithOp):
- * jit/JITInlineMethods.h:
- (JSC::JIT::getConstantOperand):
- (JSC::JIT::getConstantOperandImmediateInt):
- (JSC::JIT::isOperandConstantImmediateInt):
- (JSC::JIT::isOperandConstant31BitImmediateInt):
- (JSC::JIT::emitFastArithDeTagImmediate):
- (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
- (JSC::JIT::emitFastArithReTagImmediate):
- (JSC::JIT::emitFastArithImmToInt):
- (JSC::JIT::emitFastArithIntToImmNoCheck):
- * runtime/JSImmediate.h:
- (JSC::JSImmediate::isPositiveNumber):
- (JSC::JSImmediate::isNegative):
- (JSC::JSImmediate::rightShiftImmediateNumbers):
- (JSC::JSImmediate::canDoFastAdditiveOperations):
- (JSC::JSImmediate::makeValue):
- (JSC::JSImmediate::makeInt):
- (JSC::JSImmediate::makeBool):
- (JSC::JSImmediate::intValue):
- (JSC::JSImmediate::rawValue):
- (JSC::JSImmediate::toBoolean):
- (JSC::JSImmediate::from):
- * wtf/Platform.h:
-
-2008-12-31 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- [jsfunfuzz] Assertion + incorrect behaviour with dynamically created local variable in a catch block
- <https://bugs.webkit.org/show_bug.cgi?id=23063>
-
- Eval inside a catch block attempts to use the catch block's static scope in
- an unsafe way by attempting to add new properties to the scope. This patch
- fixes this issue simply by preventing the catch block from using a static
- scope if it contains an eval.
-
- * parser/Grammar.y:
- * parser/Nodes.cpp:
- (JSC::TryNode::emitBytecode):
- * parser/Nodes.h:
- (JSC::TryNode::):
-
-2008-12-31 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Gavin Barraclough.
-
- [jsfunfuzz] Computed exception offset wrong when first instruction is attempt to resolve deleted eval
- <https://bugs.webkit.org/show_bug.cgi?id=23062>
-
- This was caused by the expression information for the initial resolve of
- eval not being emitted. If this resolve was the first instruction that
- could throw an exception the information search would fail leading to an
- assertion failure. If it was not the first throwable opcode the wrong
- expression information would used.
-
- Fix is simply to emit the expression info.
-
- * parser/Nodes.cpp:
- (JSC::EvalFunctionCallNode::emitBytecode):
-
-2008-12-31 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver Hunt.
-
- Bug 23054: Caching of global lookups occurs even when the global object has become a dictionary
- <https://bugs.webkit.org/show_bug.cgi?id=23054>
- <rdar://problem/6469905>
-
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::resolveGlobal): Do not cache lookup if the global
- object has transitioned to a dictionary.
- (JSC::Interpreter::cti_op_resolve_global): Do not cache lookup if the
- global object has transitioned to a dictionary.
-
-2008-12-30 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin Adler.
-
- <https://bugs.webkit.org/show_bug.cgi?id=23049> [jsfunfuzz] With blocks do not correctly protect their scope object
- <rdar://problem/6469742> Crash in JSC::TypeInfo::hasStandardGetOwnPropertySlot() running jsfunfuzz
-
- The problem that caused this was that with nodes were not correctly protecting
- the final object that was placed in the scope chain. We correct this by forcing
- the use of a temporary register (which stops us relying on a local register
- protecting the scope) and changing the behaviour of op_push_scope so that it
- will store the final scope object.
-
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::emitPushScope):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::cti_op_push_scope):
- * interpreter/Interpreter.h:
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- * parser/Nodes.cpp:
- (JSC::WithNode::emitBytecode):
-
-2008-12-30 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Sam Weinig.
-
- Bug 23037: Parsing and reparsing disagree on automatic semicolon insertion
- <https://bugs.webkit.org/show_bug.cgi?id=23037>
- <rdar://problem/6467124>
-
- Parsing and reparsing disagree about automatic semicolon insertion, so that a
- function like
-
- function() { a = 1, }
-
- is parsed as being syntactically valid but gets a syntax error upon reparsing.
- This leads to an assertion failure in Parser::reparse(). It is not that big of
- an issue in practice, because in a Release build such a function will return
- 'undefined' when called.
-
- In this case, we are not following the spec and it should be a syntax error.
- However, unless there is a newline separating the ',' and the '}', WebKit would
- not treat it as a syntax error in the past either. It would be a bit of work to
- make the automatic semicolon insertion match the spec exactly, so this patch
- changes it to match our past behaviour.
-
- The problem is that even during reparsing, the Lexer adds a semicolon at the
- end of the input, which confuses allowAutomaticSemicolon(), because it is
- expecting either a '}', the end of input, or a terminator like a newline.
-
- * parser/Lexer.cpp:
- (JSC::Lexer::Lexer): Initialize m_isReparsing to false.
- (JSC::Lexer::lex): Do not perform automatic semicolon insertion in the Lexer if
- we are in the middle of reparsing.
- (JSC::Lexer::clear): Set m_isReparsing to false.
- * parser/Lexer.h:
- (JSC::Lexer::setIsReparsing): Added.
- * parser/Parser.cpp:
- (JSC::Parser::reparse): Call Lexer::setIsReparsing() to notify the Lexer of
- reparsing.
-
-2008-12-29 Oliver Hunt <oliver@apple.com>
-
- Reviewed by NOBODY (Build fix).
-
- Yet another attempt to fix Tiger.
-
- * wtf/RandomNumber.cpp:
- (WTF::randomNumber):
-
-2008-12-29 Oliver Hunt <oliver@apple.com>
-
- Reviewed by NOBODY (Build fix).
-
- Tiger build fix (correct this time)
-
- * wtf/RandomNumber.cpp:
-
-2008-12-29 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Rubber-stamped by Alexey Proskuryakov.
-
- Revert r39509, because kjsyydebug is used in the generated code if YYDEBUG is 1.
-
- * parser/Grammar.y:
-
-2008-12-29 Oliver Hunt <oliver@apple.com>
-
- Reviewed by NOBODY (Build fix).
-
- Tiger build fix.
-
- * wtf/RandomNumber.cpp:
-
-2008-12-29 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Mark Rowe.
-
- <rdar://problem/6358108> Insecure randomness in Math.random() leads to user tracking
-
- Switch to arc4random on PLATFORM(DARWIN), this is ~1.5x slower than random(), but the
- it is still so fast that there is no fathomable way it could be a bottleneck for anything.
-
- randomNumber is called in two places
- * During form submission where it is called once per form
- * Math.random in JSC. For this difference to show up you have to be looping on
- a cached local copy of random, for a large (>10000) calls.
-
- No change in SunSpider.
-
- * wtf/RandomNumber.cpp:
- (WTF::randomNumber):
- * wtf/RandomNumberSeed.h:
- (WTF::initializeRandomNumberGenerator):
-
-2008-12-29 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Rubber-stamped by Sam Weinig.
-
- Remove unused kjsyydebug #define.
-
- * parser/Grammar.y:
-
-2008-12-29 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver Hunt and Sam Weinig.
-
- Bug 23029: REGRESSION (r39337): jsfunfuzz generates identical test files
- <https://bugs.webkit.org/show_bug.cgi?id=23029>
- <rdar://problem/6469185>
-
- The unification of random number generation in r39337 resulted in random()
- being initialized on Darwin, but rand() actually being used. Fix this by
- making randomNumber() use random() instead of rand() on Darwin.
-
- * wtf/RandomNumber.cpp:
- (WTF::randomNumber):
-
-2008-12-29 Sam Weinig <sam@webkit.org>
-
- Fix buildbots.
-
- * runtime/Structure.cpp:
-
-2008-12-29 Sam Weinig <sam@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=23026
- Move the deleted offsets vector into the PropertyMap
-
- Saves 3 words per Structure.
-
- * runtime/PropertyMapHashTable.h:
- * runtime/Structure.cpp:
- (JSC::Structure::addPropertyTransition):
- (JSC::Structure::changePrototypeTransition):
- (JSC::Structure::getterSetterTransition):
- (JSC::Structure::toDictionaryTransition):
- (JSC::Structure::fromDictionaryTransition):
- (JSC::Structure::copyPropertyTable):
- (JSC::Structure::put):
- (JSC::Structure::remove):
- (JSC::Structure::rehashPropertyMapHashTable):
- * runtime/Structure.h:
- (JSC::Structure::propertyStorageSize):
-
-2008-12-29 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver Hunt.
-
- Change code using m_body.get() as a boolean to take advantage of the
- implicit conversion of RefPtr to boolean.
-
- * runtime/JSFunction.cpp:
- (JSC::JSFunction::~JSFunction):
-
-2008-12-28 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver Hunt.
-
- Bug 22840: REGRESSION (r38349): Gmail doesn't load with profiling enabled
- <https://bugs.webkit.org/show_bug.cgi?id=22840>
- <rdar://problem/6468077>
-
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::emitNewArray): Add an assertion that the range
- of registers passed to op_new_array is sequential.
- (JSC::BytecodeGenerator::emitCall): Correct the relocation of registers
- when emitting profiler hooks so that registers aren't leaked. Also, add
- an assertion that the 'this' register is always ref'd (because it is),
- remove the needless protection of the 'this' register when relocating,
- and add an assertion that the range of registers passed to op_call for
- function call arguments is sequential.
- (JSC::BytecodeGenerator::emitConstruct): Correct the relocation of
- registers when emitting profiler hooks so that registers aren't leaked.
- Also, add an assertion that the range of registers passed to op_construct
- for function call arguments is sequential.
-
-2008-12-26 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- <rdar://problem/6467376> Race condition in WTF::currentThread can lead to a thread using two different identifiers during its lifetime
-
- If a newly-created thread calls WTF::currentThread() before WTF::createThread calls establishIdentifierForPthreadHandle
- then more than one identifier will be used for the same thread. We can avoid this by adding some extra synchronization
- during thread creation that delays the execution of the thread function until the thread identifier has been set up, and
- an assertion to catch this problem should it reappear in the future.
-
- * wtf/Threading.cpp: Added.
- (WTF::NewThreadContext::NewThreadContext):
- (WTF::threadEntryPoint):
- (WTF::createThread): Add cross-platform createThread function that delays the execution of the thread function until
- after the thread identifier has been set up.
- * wtf/Threading.h:
- * wtf/ThreadingGtk.cpp:
- (WTF::establishIdentifierForThread):
- (WTF::createThreadInternal):
- * wtf/ThreadingNone.cpp:
- (WTF::createThreadInternal):
- * wtf/ThreadingPthreads.cpp:
- (WTF::establishIdentifierForPthreadHandle):
- (WTF::createThreadInternal):
- * wtf/ThreadingQt.cpp:
- (WTF::identifierByQthreadHandle):
- (WTF::establishIdentifierForThread):
- (WTF::createThreadInternal):
- * wtf/ThreadingWin.cpp:
- (WTF::storeThreadHandleByIdentifier):
- (WTF::createThreadInternal):
-
- Add Threading.cpp to the build.
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
-
-2008-12-26 Sam Weinig <sam@webkit.org>
-
- Reviewed by Alexey Proskuryakov.
-
- Remove unused method.
-
- * runtime/Structure.h: Remove mutableTypeInfo.
-
-2008-12-22 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fix rounding / bounds / signed comparison bug in ExecutableAllocator.
-
- ExecutableAllocator::alloc assumed that m_freePtr would be aligned. This was
- not always true, since the first allocation from an additional pool would not
- be rounded up. Subsequent allocations would be unaligned, and too much memory
- could be erroneously allocated from the pool, when the size requested was
- available, but the size rounded up to word granularity was not available in the
- pool. This may result in the value of m_freePtr being greater than m_end.
-
- Under these circumstances, the unsigned check for space will always pass,
- resulting in pointers to memory outside of the arena being returned, and
- ultimately segfaulty goodness when attempting to memcpy the hot freshly jitted
- code from the AssemblerBuffer.
-
- https://bugs.webkit.org/show_bug.cgi?id=22974
- ... and probably many, many more.
-
- * jit/ExecutableAllocator.h:
- (JSC::ExecutablePool::alloc):
- (JSC::ExecutablePool::roundUpAllocationSize):
- (JSC::ExecutablePool::ExecutablePool):
- (JSC::ExecutablePool::poolAllocate):
-
-2008-12-22 Sam Weinig <sam@webkit.org>
-
- Reviewed by Gavin Barraclough.
-
- Rename all uses of the term "repatch" to "patch".
-
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::DataLabelPtr::patch):
- (JSC::MacroAssembler::DataLabel32::patch):
- (JSC::MacroAssembler::Jump::patch):
- (JSC::MacroAssembler::PatchBuffer::PatchBuffer):
- (JSC::MacroAssembler::PatchBuffer::setPtr):
- (JSC::MacroAssembler::loadPtrWithAddressOffsetPatch):
- (JSC::MacroAssembler::storePtrWithAddressOffsetPatch):
- (JSC::MacroAssembler::storePtrWithPatch):
- (JSC::MacroAssembler::jnePtrWithPatch):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::patchAddress):
- (JSC::X86Assembler::patchImmediate):
- (JSC::X86Assembler::patchPointer):
- (JSC::X86Assembler::patchBranchOffset):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::tryCTICachePutByID):
- (JSC::Interpreter::tryCTICacheGetByID):
- (JSC::Interpreter::cti_op_put_by_id):
- (JSC::Interpreter::cti_op_get_by_id):
- (JSC::Interpreter::cti_op_get_by_id_self_fail):
- (JSC::Interpreter::cti_op_get_by_id_proto_list):
- (JSC::Interpreter::cti_vm_dontLazyLinkCall):
- * jit/JIT.cpp:
- (JSC::ctiPatchCallByReturnAddress):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- * jit/JITCall.cpp:
- (JSC::JIT::unlinkCall):
- (JSC::JIT::linkCall):
- (JSC::JIT::compileOpCall):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compilePutByIdHotPath):
- (JSC::JIT::compileGetByIdSlowCase):
- (JSC::JIT::compilePutByIdSlowCase):
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::patchGetByIdSelf):
- (JSC::JIT::patchPutByIdReplace):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- (JSC::JIT::privateCompileGetByIdSelf):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdSelfList):
- (JSC::JIT::privateCompileGetByIdProtoList):
- (JSC::JIT::privateCompileGetByIdChainList):
- (JSC::JIT::privateCompileGetByIdChain):
- (JSC::JIT::privateCompilePutByIdReplace):
-
-2008-12-22 Adam Roben <aroben@apple.com>
-
- Build fix after r39428
-
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCallSlowCase): Added a missing MacroAssembler::
-
-2008-12-22 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
-
- Rubber-stamped by George Staikos.
-
- Unify all TorchMobile copyright lines. Consolidate in a single line, as requested by Mark Rowe, some time ago.
-
- * wtf/RandomNumber.cpp:
- * wtf/RandomNumber.h:
- * wtf/RandomNumberSeed.h:
-
-2008-12-21 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
-
- Rubber-stamped by George Staikos.
-
- Fix copyright of the new RandomNumber* files.
-
- * wtf/RandomNumber.cpp:
- * wtf/RandomNumber.h:
- * wtf/RandomNumberSeed.h:
-
-2008-12-21 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Oliver Hunt & Cameron Zwarich.
-
- Add support for call and property access repatching on x86-64.
-
- No change in performance on current configurations (2x impovement on v8-tests with JIT enabled on x86-64).
-
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::DataLabelPtr::repatch):
- (JSC::MacroAssembler::DataLabelPtr::operator X86Assembler::JmpDst):
- (JSC::MacroAssembler::DataLabel32::repatch):
- (JSC::MacroAssembler::RepatchBuffer::addressOf):
- (JSC::MacroAssembler::add32):
- (JSC::MacroAssembler::sub32):
- (JSC::MacroAssembler::loadPtrWithAddressOffsetRepatch):
- (JSC::MacroAssembler::storePtrWithAddressOffsetRepatch):
- (JSC::MacroAssembler::jePtr):
- (JSC::MacroAssembler::jnePtr):
- (JSC::MacroAssembler::jnePtrWithRepatch):
- (JSC::MacroAssembler::differenceBetween):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::addl_im):
- (JSC::X86Assembler::subl_im):
- (JSC::X86Assembler::cmpl_rm):
- (JSC::X86Assembler::movq_rm_disp32):
- (JSC::X86Assembler::movq_mr_disp32):
- (JSC::X86Assembler::repatchPointer):
- (JSC::X86Assembler::X86InstructionFormatter::oneByteOp64_disp32):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- * jit/JITCall.cpp:
- (JSC::JIT::unlinkCall):
- (JSC::JIT::linkCall):
- (JSC::JIT::compileOpCall):
- (JSC::JIT::compileOpCallSlowCase):
- * jit/JITInlineMethods.h:
- (JSC::JIT::restoreArgumentReferenceForTrampoline):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compileGetByIdSlowCase):
- (JSC::JIT::compilePutByIdHotPath):
- (JSC::JIT::compilePutByIdSlowCase):
- (JSC::resizePropertyStorage):
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdProtoList):
- (JSC::JIT::privateCompileGetByIdChainList):
- (JSC::JIT::privateCompileGetByIdChain):
- * wtf/Platform.h:
-
-2008-12-20 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Port optimized property access generation to the MacroAssembler.
-
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::AbsoluteAddress::AbsoluteAddress):
- (JSC::MacroAssembler::DataLabelPtr::repatch):
- (JSC::MacroAssembler::DataLabel32::DataLabel32):
- (JSC::MacroAssembler::DataLabel32::repatch):
- (JSC::MacroAssembler::Label::operator X86Assembler::JmpDst):
- (JSC::MacroAssembler::Jump::repatch):
- (JSC::MacroAssembler::JumpList::empty):
- (JSC::MacroAssembler::RepatchBuffer::link):
- (JSC::MacroAssembler::add32):
- (JSC::MacroAssembler::and32):
- (JSC::MacroAssembler::sub32):
- (JSC::MacroAssembler::loadPtrWithAddressRepatch):
- (JSC::MacroAssembler::storePtrWithAddressRepatch):
- (JSC::MacroAssembler::push):
- (JSC::MacroAssembler::ja32):
- (JSC::MacroAssembler::jePtr):
- (JSC::MacroAssembler::jnePtr):
- (JSC::MacroAssembler::jnePtrWithRepatch):
- (JSC::MacroAssembler::align):
- (JSC::MacroAssembler::differenceBetween):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::movl_rm_disp32):
- (JSC::X86Assembler::movl_mr_disp32):
- (JSC::X86Assembler::X86InstructionFormatter::oneByteOp_disp32):
- (JSC::X86Assembler::X86InstructionFormatter::memoryModRM):
- * jit/JIT.cpp:
- (JSC::ctiRepatchCallByReturnAddress):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compileGetByIdSlowCase):
- (JSC::JIT::compilePutByIdHotPath):
- (JSC::JIT::compilePutByIdSlowCase):
- (JSC::resizePropertyStorage):
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::patchGetByIdSelf):
- (JSC::JIT::patchPutByIdReplace):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- (JSC::JIT::privateCompileGetByIdSelf):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdSelfList):
- (JSC::JIT::privateCompileGetByIdProtoList):
- (JSC::JIT::privateCompileGetByIdChainList):
- (JSC::JIT::privateCompileGetByIdChain):
- (JSC::JIT::privateCompilePutByIdReplace):
- * wtf/RefCounted.h:
- (WTF::RefCountedBase::addressOfCount):
-
-2008-12-19 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Holger Freyther.
-
- https://bugs.webkit.org/show_bug.cgi?id=22686
-
- Added file which was missing to the javascriptcore_sources
- variable, so that it shows up in the tarball created by `make
- dist'.
-
- * GNUmakefile.am:
-
-2008-12-19 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Antti Koivisto.
-
- Build fix when building JS API tests with a c89 c compiler
-
- Do not use C++ style comments and convert them to C comments.
-
- * wtf/Platform.h:
-
-2008-12-18 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Sam Weinig.
-
- Same as last revision, adding cases for pre & post inc & dec.
-
- https://bugs.webkit.org/show_bug.cgi?id=22928
-
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
-
-2008-12-18 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fixes for the JIT's handling of JSImmediate values on x86-64.
- On 64-bit systems, the code in JSImmediate.h relies on the upper
- bits of a JSImmediate being a sign extension of the low 32-bits.
- This was not being enforced by the JIT, since a number of inline
- operations were being performed on 32-bit values in registers, and
- when a 32-bit result is written to a register on x86-64 the value
- is zero-extended to 64-bits.
-
- This fix honors previous behavoir. A better fix in the long run
- (when the JIT is enabled by default) may be to change JSImmediate.h
- so it no longer relies on the upper bits of the pointer,... though
- if we're going to change JSImmediate.h for 64-bit, we probably may
- as well change the format so that the full range of 32-bit ints can
- be stored, rather than just 31-bits.
-
- https://bugs.webkit.org/show_bug.cgi?id=22925
-
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::addPtr):
- (JSC::MacroAssembler::andPtr):
- (JSC::MacroAssembler::orPtr):
- (JSC::MacroAssembler::or32):
- (JSC::MacroAssembler::xor32):
- (JSC::MacroAssembler::xorPtr):
- (JSC::MacroAssembler::signExtend32ToPtr):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::andq_rr):
- (JSC::X86Assembler::andq_ir):
- (JSC::X86Assembler::orq_rr):
- (JSC::X86Assembler::xorq_ir):
- (JSC::X86Assembler::movsxd_rr):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitFastArithReTagImmediate):
- (JSC::JIT::emitFastArithPotentiallyReTagImmediate):
- (JSC::JIT::emitFastArithImmToInt):
-
-2008-12-18 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Sam Weinig.
-
- Just a tidy up - rename & refactor some the #defines configuring the JIT.
-
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::cti_op_convert_this):
- (JSC::Interpreter::cti_op_end):
- (JSC::Interpreter::cti_op_add):
- (JSC::Interpreter::cti_op_pre_inc):
- (JSC::Interpreter::cti_timeout_check):
- (JSC::Interpreter::cti_register_file_check):
- (JSC::Interpreter::cti_op_loop_if_less):
- (JSC::Interpreter::cti_op_loop_if_lesseq):
- (JSC::Interpreter::cti_op_new_object):
- (JSC::Interpreter::cti_op_put_by_id_generic):
- (JSC::Interpreter::cti_op_get_by_id_generic):
- (JSC::Interpreter::cti_op_put_by_id):
- (JSC::Interpreter::cti_op_put_by_id_second):
- (JSC::Interpreter::cti_op_put_by_id_fail):
- (JSC::Interpreter::cti_op_get_by_id):
- (JSC::Interpreter::cti_op_get_by_id_second):
- (JSC::Interpreter::cti_op_get_by_id_self_fail):
- (JSC::Interpreter::cti_op_get_by_id_proto_list):
- (JSC::Interpreter::cti_op_get_by_id_proto_list_full):
- (JSC::Interpreter::cti_op_get_by_id_proto_fail):
- (JSC::Interpreter::cti_op_get_by_id_array_fail):
- (JSC::Interpreter::cti_op_get_by_id_string_fail):
- (JSC::Interpreter::cti_op_instanceof):
- (JSC::Interpreter::cti_op_del_by_id):
- (JSC::Interpreter::cti_op_mul):
- (JSC::Interpreter::cti_op_new_func):
- (JSC::Interpreter::cti_op_call_JSFunction):
- (JSC::Interpreter::cti_op_call_arityCheck):
- (JSC::Interpreter::cti_vm_dontLazyLinkCall):
- (JSC::Interpreter::cti_vm_lazyLinkCall):
- (JSC::Interpreter::cti_op_push_activation):
- (JSC::Interpreter::cti_op_call_NotJSFunction):
- (JSC::Interpreter::cti_op_create_arguments):
- (JSC::Interpreter::cti_op_create_arguments_no_params):
- (JSC::Interpreter::cti_op_tear_off_activation):
- (JSC::Interpreter::cti_op_tear_off_arguments):
- (JSC::Interpreter::cti_op_profile_will_call):
- (JSC::Interpreter::cti_op_profile_did_call):
- (JSC::Interpreter::cti_op_ret_scopeChain):
- (JSC::Interpreter::cti_op_new_array):
- (JSC::Interpreter::cti_op_resolve):
- (JSC::Interpreter::cti_op_construct_JSConstruct):
- (JSC::Interpreter::cti_op_construct_NotJSConstruct):
- (JSC::Interpreter::cti_op_get_by_val):
- (JSC::Interpreter::cti_op_resolve_func):
- (JSC::Interpreter::cti_op_sub):
- (JSC::Interpreter::cti_op_put_by_val):
- (JSC::Interpreter::cti_op_put_by_val_array):
- (JSC::Interpreter::cti_op_lesseq):
- (JSC::Interpreter::cti_op_loop_if_true):
- (JSC::Interpreter::cti_op_negate):
- (JSC::Interpreter::cti_op_resolve_base):
- (JSC::Interpreter::cti_op_resolve_skip):
- (JSC::Interpreter::cti_op_resolve_global):
- (JSC::Interpreter::cti_op_div):
- (JSC::Interpreter::cti_op_pre_dec):
- (JSC::Interpreter::cti_op_jless):
- (JSC::Interpreter::cti_op_not):
- (JSC::Interpreter::cti_op_jtrue):
- (JSC::Interpreter::cti_op_post_inc):
- (JSC::Interpreter::cti_op_eq):
- (JSC::Interpreter::cti_op_lshift):
- (JSC::Interpreter::cti_op_bitand):
- (JSC::Interpreter::cti_op_rshift):
- (JSC::Interpreter::cti_op_bitnot):
- (JSC::Interpreter::cti_op_resolve_with_base):
- (JSC::Interpreter::cti_op_new_func_exp):
- (JSC::Interpreter::cti_op_mod):
- (JSC::Interpreter::cti_op_less):
- (JSC::Interpreter::cti_op_neq):
- (JSC::Interpreter::cti_op_post_dec):
- (JSC::Interpreter::cti_op_urshift):
- (JSC::Interpreter::cti_op_bitxor):
- (JSC::Interpreter::cti_op_new_regexp):
- (JSC::Interpreter::cti_op_bitor):
- (JSC::Interpreter::cti_op_call_eval):
- (JSC::Interpreter::cti_op_throw):
- (JSC::Interpreter::cti_op_get_pnames):
- (JSC::Interpreter::cti_op_next_pname):
- (JSC::Interpreter::cti_op_push_scope):
- (JSC::Interpreter::cti_op_pop_scope):
- (JSC::Interpreter::cti_op_typeof):
- (JSC::Interpreter::cti_op_is_undefined):
- (JSC::Interpreter::cti_op_is_boolean):
- (JSC::Interpreter::cti_op_is_number):
- (JSC::Interpreter::cti_op_is_string):
- (JSC::Interpreter::cti_op_is_object):
- (JSC::Interpreter::cti_op_is_function):
- (JSC::Interpreter::cti_op_stricteq):
- (JSC::Interpreter::cti_op_nstricteq):
- (JSC::Interpreter::cti_op_to_jsnumber):
- (JSC::Interpreter::cti_op_in):
- (JSC::Interpreter::cti_op_push_new_scope):
- (JSC::Interpreter::cti_op_jmp_scopes):
- (JSC::Interpreter::cti_op_put_by_index):
- (JSC::Interpreter::cti_op_switch_imm):
- (JSC::Interpreter::cti_op_switch_char):
- (JSC::Interpreter::cti_op_switch_string):
- (JSC::Interpreter::cti_op_del_by_val):
- (JSC::Interpreter::cti_op_put_getter):
- (JSC::Interpreter::cti_op_put_setter):
- (JSC::Interpreter::cti_op_new_error):
- (JSC::Interpreter::cti_op_debug):
- (JSC::Interpreter::cti_vm_throw):
- * interpreter/Interpreter.h:
- * jit/JIT.cpp:
- (JSC::):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompile):
- * jit/JIT.h:
- * jit/JITInlineMethods.h:
- (JSC::JIT::restoreArgumentReference):
- (JSC::JIT::restoreArgumentReferenceForTrampoline):
- * wtf/Platform.h:
-
-2008-12-18 Cameron Zwarich <zwarich@apple.com>
-
- Reviewed by Geoff Garen.
-
- Bug 21855: REGRESSION (r37323): Gmail complains about popup blocking when opening a link
- <https://bugs.webkit.org/show_bug.cgi?id=21855>
- <rdar://problem/6278244>
-
- Move DynamicGlobalObjectScope to JSGlobalObject.h so that it can be used
- from WebCore.
-
- * interpreter/Interpreter.cpp:
- * runtime/JSGlobalObject.h:
- (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope):
- (JSC::DynamicGlobalObjectScope::~DynamicGlobalObjectScope):
-
-2008-12-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Gavin Barraclough.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=22393
- Segfault when caching property accesses to primitive cells.
-
- Changed some asObject casts to asCell casts in cases where a primitive
- value may be a cell and not an object.
-
- Re-enabled property caching for primitives in cases where it had been
- disabled because of this bug.
-
- Updated a comment to better explain something Darin thought needed
- explaining in an old patch review.
-
- * interpreter/Interpreter.cpp:
- (JSC::countPrototypeChainEntriesAndCheckForProxies):
- (JSC::Interpreter::tryCacheGetByID):
- (JSC::Interpreter::tryCTICacheGetByID):
- (JSC::Interpreter::cti_op_get_by_id_self_fail):
- (JSC::Interpreter::cti_op_get_by_id_proto_list):
-
-2008-12-17 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Fixes for Sunspider failures with the JIT enabled on x86-64.
-
- * assembler/MacroAssembler.h:
- Switch the order of the RegisterID & Address form of je32, to keep it consistent with jne32.
- * jit/JIT.cpp:
- * jit/JIT.h:
- * jit/JITInlineMethods.h:
- Port the m_ctiVirtualCall tramopline generation to use the MacroAssembler interface.
- * jit/JITCall.cpp:
- Fix bug in the non-optimizing code path, vptr check should have been to the memory address pointer
- to by the register, not to the register itself.
- * wrec/WRECGenerator.cpp:
- See assembler/MacroAssembler.h, above.
-
-2008-12-17 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Sam Weinig.
-
- print("Hello, 64-bit jitted world!");
- Get hello-world working through the JIT, on x86-64.
-
- * assembler/X86Assembler.h:
- Fix encoding of opcode + RegisterID format instructions for 64-bit.
- * interpreter/Interpreter.cpp:
- * interpreter/Interpreter.h:
- Make VoidPtrPair actually be a pair of void*s.
- (Possibly should make this change for 32-bit Mac platforms, too - but won't change 32-bit behaviour in this patch).
- * jit/JIT.cpp:
- * jit/JIT.h:
- Provide names for the timeoutCheckRegister & callFrameRegister on x86-64,
- force x86-64 ctiTrampoline arguments onto the stack,
- implement the asm trampolines for x86-64,
- implement the restoreArgumentReference methods for x86-64 calling conventions.
- * jit/JITCall.cpp:
- * jit/JITInlineMethods.h:
- * wtf/Platform.h:
- Add switch settings to ENABLE(JIT), on PLATFORM(X86_64) (currently still disabled).
-
-2008-12-17 Sam Weinig <sam@webkit.org>
-
- Reviewed by Gavin Barraclough.
-
- Add more CodeBlock statistics.
-
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::dumpStatistics):
-
-2008-12-17 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin Adler.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=22897
- <rdar://problem/6428342>
- Look into feasibility of discarding bytecode after native codegen
-
- Clear the bytecode Instruction vector at the end JIT generation.
-
- Saves 4.8 MB on Membuster head.
-
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::dump): Add logging for the case that someone tries
- to dump the instructions of a CodeBlock that has had its bytecode
- vector cleared.
- (JSC::CodeBlock::CodeBlock): Initialize the instructionCount
- (JSC::CodeBlock::handlerForBytecodeOffset): Use instructionCount instead
- of the size of the instruction vector in the assertion.
- (JSC::CodeBlock::lineNumberForBytecodeOffset): Ditto.
- (JSC::CodeBlock::expressionRangeForBytecodeOffset): Ditto.
- (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): Ditto.
- (JSC::CodeBlock::functionRegisterForBytecodeOffset): Ditto.
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::setInstructionCount): Store the instruction vector size
- in debug builds for assertions.
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::generate):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompile): Clear the bytecode vector unless we
- have compiled with Opcode sampling where we will continue to require it
-
-2008-12-17 Cary Clark <caryclark@google.com>
-
- Reviewed by Darin Adler.
- Landed by Adam Barth.
-
- Add ENABLE_TEXT_CARET to permit the ANDROID platform
- to invalidate and draw the caret in a separate thread.
-
- * wtf/Platform.h:
- Default ENABLE_TEXT_CARET to 1.
-
-2008-12-17 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- Don't use unique context group in JSGlobalContextCreate() on Tiger or Leopard, take two.
-
- * API/JSContextRef.cpp: The previous patch that claimed to do this was making Tiger and
- Leopard always use unique context group instead.
-
-2008-12-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=22838
- Remove dependency on the bytecode Instruction buffer in Interpreter::throwException
- Part of <rdar://problem/6428342>
-
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::functionRegisterForBytecodeOffset): Added. Function to get
- a function Register index in a callFrame for a bytecode offset.
- (JSC::CodeBlock::shrinkToFit): Shrink m_getByIdExceptionInfo and m_functionRegisterInfos.
- * bytecode/CodeBlock.h:
- (JSC::FunctionRegisterInfo::FunctionRegisterInfo): Added.
- (JSC::CodeBlock::addFunctionRegisterInfo):
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::emitCall):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::throwException): Use functionRegisterForBytecodeOffset in JIT
- mode.
-
-2008-12-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Gavin Barraclough.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=22837
- Remove dependency on the bytecode Instruction buffer in Interpreter::cti_op_call_NotJSFunction
- Part of <rdar://problem/6428342>
-
- * interpreter/CallFrame.h: Added comment regarding returnPC storing a void*.
- * interpreter/Interpreter.cpp:
- (JSC::bytecodeOffsetForPC): We no longer have any cases of the PC
- being in the instruction stream for JIT, so we can remove the check.
- (JSC::Interpreter::cti_op_call_NotJSFunction): Use the CTI_RETURN_ADDRESS
- as the call frame returnPC as it is only necessary for looking up when
- throwing an exception.
- * interpreter/RegisterFile.h:
- (JSC::RegisterFile::): Added comment regarding returnPC storing a void*.
- * jit/JIT.h: Remove ARG_instr4.
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCallSetupArgs): Don't pass the instruction pointer.
-
-2008-12-16 Darin Adler <darin@apple.com>
-
- Reviewed and landed by Cameron Zwarich.
-
- Preparatory work for fixing
-
- Bug 22887: Make UString::Rep use RefCounted rather than implementing its own ref counting
- <https://bugs.webkit.org/show_bug.cgi?id=22887>
-
- Change the various string translators used by Identifier:add() so that
- they never zero the ref count of a newly created UString::Rep.
-
- * runtime/Identifier.cpp:
- (JSC::CStringTranslator::translate):
- (JSC::Identifier::add):
- (JSC::UCharBufferTranslator::translate):
-
-2008-12-16 Gavin Barraclough <barraclough@apple.com>
-
- Build fix for 'doze.
-
- * assembler/AssemblerBuffer.h:
-
-2008-12-16 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Make the JIT compile on x86-64.
- This largely involves populting the missing calls in MacroAssembler.h.
- In addition some reinterpret_casts need removing from the JIT, and the
- repatching property access code will need to be fully compiled out for
- now. The changes in interpret.cpp are to reorder the functions so that
- the _generic forms come before all other property access methods, and
- then to place all property access methods other than the generic forms
- under control of the ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS macro.
-
- No performance impact.
-
- * assembler/AssemblerBuffer.h:
- (JSC::AssemblerBuffer::putInt64Unchecked):
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::loadPtr):
- (JSC::MacroAssembler::load32):
- (JSC::MacroAssembler::storePtr):
- (JSC::MacroAssembler::storePtrWithRepatch):
- (JSC::MacroAssembler::store32):
- (JSC::MacroAssembler::poke):
- (JSC::MacroAssembler::move):
- (JSC::MacroAssembler::testImm64):
- (JSC::MacroAssembler::jePtr):
- (JSC::MacroAssembler::jnePtr):
- (JSC::MacroAssembler::jnzPtr):
- (JSC::MacroAssembler::jzPtr):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::cmpq_rr):
- (JSC::X86Assembler::cmpq_rm):
- (JSC::X86Assembler::cmpq_im):
- (JSC::X86Assembler::testq_i32m):
- (JSC::X86Assembler::movl_mEAX):
- (JSC::X86Assembler::movl_i32r):
- (JSC::X86Assembler::movl_EAXm):
- (JSC::X86Assembler::movq_rm):
- (JSC::X86Assembler::movq_mEAX):
- (JSC::X86Assembler::movq_mr):
- (JSC::X86Assembler::movq_i64r):
- (JSC::X86Assembler::movl_mr):
- (JSC::X86Assembler::X86InstructionFormatter::oneByteOp64):
- (JSC::X86Assembler::X86InstructionFormatter::immediate64):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::cti_op_put_by_id_generic):
- (JSC::Interpreter::cti_op_get_by_id_generic):
- (JSC::Interpreter::cti_op_put_by_id):
- (JSC::Interpreter::cti_op_put_by_id_second):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCallSetupArgs):
- (JSC::JIT::compileOpCall):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compilePutByIdHotPath):
- * runtime/JSImmediate.h:
- (JSC::JSImmediate::makeInt):
-
-2008-12-16 Cameron Zwarich <zwarich@apple.com>
-
- Reviewed by Darin Adler.
-
- Bug 22869: REGRESSION (r38407): http://news.cnet.com/8301-13579_3-9953533-37.html crashes
- <https://bugs.webkit.org/show_bug.cgi?id=22869>
- <rdar://problem/6402499>
-
- Before r38407, Structure::m_nameInPrevious was ref'd due to it being
- stored in a PropertyMap. However, PropertyMaps are created lazily after
- r38407, so Structure::m_nameInPrevious is not necessarily ref'd while
- it is being used. Making it a RefPtr instead of a raw pointer fixes
- the problem.
-
- Unfortunately, the crash in the bug is rather intermittent, and it is
- impossible to add an assertion in UString::Ref::ref() to catch this bug
- because some users of UString::Rep deliberately zero out the reference
- count. Therefore, there is no layout test accompanying this bug fix.
-
- * runtime/Structure.cpp:
- (JSC::Structure::~Structure): Use get().
- (JSC::Structure::materializePropertyMap): Use get().
- (JSC::Structure::addPropertyTransitionToExistingStructure): Use get().
- (JSC::Structure::addPropertyTransition): Use get().
- * runtime/Structure.h: Make Structure::m_nameInPrevious a RefPtr instead
- of a raw pointer.
-
-2008-12-16 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
-
- Not reviewed. Attempt to fix win build. No 'using namespace WTF' in this file, needs manual WTF:: prefix.
- Not sure why the build works as is here.
-
- * runtime/MathObject.cpp:
- (JSC::mathProtoFuncRandom):
-
-2008-12-16 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
-
- Reviewed by Darin Adler.
-
- Fixes: https://bugs.webkit.org/show_bug.cgi?id=22876
-
- Unify random number generation in JavaScriptCore & WebCore, by introducing
- wtf/RandomNumber.h and moving wtf_random/wtf_random_init out of MathExtras.h.
-
- wtf_random_init() has been renamed to initializeRandomNumberGenerator() and
- lives in it's own private header: wtf/RandomNumberSeed.h, only intended to
- be used from within JavaScriptCore.
-
- wtf_random() has been renamed to randomNumber() and lives in a public header
- wtf/RandomNumber.h, usable from within JavaScriptCore & WebCore. It encapsulates
- the code taking care of initializing the random number generator (only when
- building without ENABLE(JSC_MULTIPLE_THREADS), otherwhise initializeThreading()
- already took care of that).
-
- Functional change on darwin: Use random() instead of rand(), as it got a larger
- period (more randomness). HTMLFormElement already contains this implementation
- and I just moved it in randomNumber(), as special case for PLATFORM(DARWIN).
-
- * GNUmakefile.am: Add RandomNumber.(cpp/h) / RandomNumberSeed.h.
- * JavaScriptCore.exp: Ditto.
- * JavaScriptCore.pri: Ditto.
- * JavaScriptCore.scons: Ditto.
- * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
- * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
- * JavaScriptCoreSources.bkl: Ditto.
- * runtime/MathObject.cpp: Use new WTF::randomNumber() functionality.
- (JSC::mathProtoFuncRandom):
- * wtf/MathExtras.h: Move wtf_random / wtf_random_init to new files.
- * wtf/RandomNumber.cpp: Added.
- (WTF::randomNumber):
- * wtf/RandomNumber.h: Added.
- * wtf/RandomNumberSeed.h: Added. Internal usage within JSC only.
- (WTF::initializeRandomNumberGenerator):
- * wtf/ThreadingGtk.cpp: Rename wtf_random_init() to initializeRandomNumberGenerator().
- (WTF::initializeThreading):
- * wtf/ThreadingPthreads.cpp: Ditto.
- (WTF::initializeThreading):
- * wtf/ThreadingQt.cpp: Ditto.
- (WTF::initializeThreading):
- * wtf/ThreadingWin.cpp: Ditto.
- (WTF::initializeThreading):
-
-2008-12-16 Yael Aharon <yael.aharon@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- Qt/Win build fix
-
- * JavaScriptCore.pri:
-
-2008-12-15 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Fix the build with GCC 4.0.
-
- * Configurations/JavaScriptCore.xcconfig: GCC 4.0 appears to have a bug when compiling with -funwind-tables on,
- so don't use it with that compiler version.
-
-2008-12-15 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Cameron Zwarich.
-
- <rdar://problem/6289933> Change WebKit-related projects to build with GCC 4.2 on Leopard.
-
- * Configurations/Base.xcconfig:
- * Configurations/DebugRelease.xcconfig:
-
-2008-12-15 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- Don't use unique context group in JSGlobalContextCreate() on Tiger or Leopard.
-
- * API/JSContextRef.cpp: (JSGlobalContextCreate):
-
-2008-12-15 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- <rdar://problem/6445089> Mach ports leak from worker threads
-
- * interpreter/Interpreter.cpp: (JSC::getCPUTime):
- Deallocate the thread self port.
-
-2008-12-15 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Mark Rowe.
-
- Construct stack frames in JIT code, so that backtracing can still work.
- <rdar://problem/6447870> JIT should play nice with attempts to take stack traces
-
- * jit/JIT.cpp:
- (JSC::):
- (JSC::JIT::privateCompileMainPass):
-
-2008-12-15 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Gavin Barraclough.
-
- <rdar://problem/6402262> JavaScriptCore needs exception handling tables in order to get stack traces without frame pointers
-
- * Configurations/JavaScriptCore.xcconfig:
-
-2008-12-15 Gavin Barraclough <barraclough@apple.com>
-
- Rubber stamped by Mark Rowe.
-
- Revert r39226 / Bug 22818: Unify JIT callback argument access OS X / Windows
- This causes Acid3 failures – reverting for now & will revisit later.
- https://bugs.webkit.org/show_bug.cgi?id=22873
-
- * interpreter/Interpreter.h:
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- * jit/JITInlineMethods.h:
- (JSC::JIT::restoreArgumentReference):
- (JSC::JIT::restoreArgumentReferenceForTrampoline):
- (JSC::JIT::emitCTICall_internal):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::privateCompilePutByIdTransition):
- * wtf/Platform.h:
-
-2008-12-15 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- - fix <rdar://problem/6427048> crash due to infinite recursion after setting window.__proto__ = window
-
- Replaced toGlobalObject with the more generally useful unwrappedObject and used it to
- fix the cycle detection code in put(__proto__).
-
- * JavaScriptCore.exp: Updated.
-
- * runtime/JSGlobalObject.cpp: Removed toGlobalObject. We now use unwrappedObject instead.
- * runtime/JSGlobalObject.h:
- (JSC::JSGlobalObject::isGlobalObject): Ditto.
-
- * runtime/JSGlobalObjectFunctions.cpp:
- (JSC::globalFuncEval): Use unwrappedObject and isGlobalObject here rather than toGlobalObject.
-
- * runtime/JSObject.cpp:
- (JSC::JSObject::put): Rewrote prototype cycle checking loop. Use unwrappedObject in the loop now.
- (JSC::JSObject::unwrappedObject): Replaced toGlobalObject with this new function.
- * runtime/JSObject.h: More of the same.
-
-2008-12-15 Steve Falkenburg <sfalken@apple.com>
-
- Windows build fix.
-
- Visual Studio requires visibility of forward declarations to match class declaration.
-
- * assembler/X86Assembler.h:
-
-2008-12-15 Gustavo Noronha Silva <kov@kov.eti.br>
-
- Reviewed by Mark Rowe.
-
- https://bugs.webkit.org/show_bug.cgi?id=22686
-
- GTK+ build fix.
-
- * GNUmakefile.am:
-
-2008-12-15 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Geoff Garen.
-
- Add support to X86Assembler emitting instructions that access all 16 registers on x86-64.
- Add a new formating class, that is reponsible for both emitting the opcode bytes and the
- ModRm bytes of an instruction in a single call; this can insert the REX byte as necessary
- before the opcode, but has access to the register numbers to build the REX.
-
- * assembler/AssemblerBuffer.h:
- (JSC::AssemblerBuffer::isAligned):
- (JSC::AssemblerBuffer::data):
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::addPtr):
- (JSC::MacroAssembler::add32):
- (JSC::MacroAssembler::and32):
- (JSC::MacroAssembler::or32):
- (JSC::MacroAssembler::sub32):
- (JSC::MacroAssembler::xor32):
- (JSC::MacroAssembler::loadPtr):
- (JSC::MacroAssembler::load32):
- (JSC::MacroAssembler::load16):
- (JSC::MacroAssembler::storePtr):
- (JSC::MacroAssembler::storePtrWithRepatch):
- (JSC::MacroAssembler::store32):
- (JSC::MacroAssembler::pop):
- (JSC::MacroAssembler::push):
- (JSC::MacroAssembler::compareImm32ForBranch):
- (JSC::MacroAssembler::compareImm32ForBranchEquality):
- (JSC::MacroAssembler::testImm32):
- (JSC::MacroAssembler::jae32):
- (JSC::MacroAssembler::jb32):
- (JSC::MacroAssembler::je16):
- (JSC::MacroAssembler::jg32):
- (JSC::MacroAssembler::jnePtr):
- (JSC::MacroAssembler::jne32):
- (JSC::MacroAssembler::jump):
- * assembler/X86Assembler.h:
- (JSC::X86::):
- (JSC::X86Assembler::):
- (JSC::X86Assembler::size):
- (JSC::X86Assembler::push_r):
- (JSC::X86Assembler::pop_r):
- (JSC::X86Assembler::push_i32):
- (JSC::X86Assembler::push_m):
- (JSC::X86Assembler::pop_m):
- (JSC::X86Assembler::addl_rr):
- (JSC::X86Assembler::addl_mr):
- (JSC::X86Assembler::addl_ir):
- (JSC::X86Assembler::addq_ir):
- (JSC::X86Assembler::addl_im):
- (JSC::X86Assembler::andl_rr):
- (JSC::X86Assembler::andl_ir):
- (JSC::X86Assembler::orl_rr):
- (JSC::X86Assembler::orl_mr):
- (JSC::X86Assembler::orl_ir):
- (JSC::X86Assembler::subl_rr):
- (JSC::X86Assembler::subl_mr):
- (JSC::X86Assembler::subl_ir):
- (JSC::X86Assembler::subl_im):
- (JSC::X86Assembler::xorl_rr):
- (JSC::X86Assembler::xorl_ir):
- (JSC::X86Assembler::sarl_i8r):
- (JSC::X86Assembler::sarl_CLr):
- (JSC::X86Assembler::shll_i8r):
- (JSC::X86Assembler::shll_CLr):
- (JSC::X86Assembler::imull_rr):
- (JSC::X86Assembler::imull_i32r):
- (JSC::X86Assembler::idivl_r):
- (JSC::X86Assembler::cmpl_rr):
- (JSC::X86Assembler::cmpl_rm):
- (JSC::X86Assembler::cmpl_mr):
- (JSC::X86Assembler::cmpl_ir):
- (JSC::X86Assembler::cmpl_ir_force32):
- (JSC::X86Assembler::cmpl_im):
- (JSC::X86Assembler::cmpl_im_force32):
- (JSC::X86Assembler::cmpw_rm):
- (JSC::X86Assembler::testl_rr):
- (JSC::X86Assembler::testl_i32r):
- (JSC::X86Assembler::testl_i32m):
- (JSC::X86Assembler::testq_rr):
- (JSC::X86Assembler::testq_i32r):
- (JSC::X86Assembler::testb_i8r):
- (JSC::X86Assembler::sete_r):
- (JSC::X86Assembler::setz_r):
- (JSC::X86Assembler::setne_r):
- (JSC::X86Assembler::setnz_r):
- (JSC::X86Assembler::cdq):
- (JSC::X86Assembler::xchgl_rr):
- (JSC::X86Assembler::movl_rr):
- (JSC::X86Assembler::movl_rm):
- (JSC::X86Assembler::movl_mr):
- (JSC::X86Assembler::movl_i32r):
- (JSC::X86Assembler::movl_i32m):
- (JSC::X86Assembler::movq_rr):
- (JSC::X86Assembler::movq_rm):
- (JSC::X86Assembler::movq_mr):
- (JSC::X86Assembler::movzwl_mr):
- (JSC::X86Assembler::movzbl_rr):
- (JSC::X86Assembler::leal_mr):
- (JSC::X86Assembler::call):
- (JSC::X86Assembler::jmp):
- (JSC::X86Assembler::jmp_r):
- (JSC::X86Assembler::jmp_m):
- (JSC::X86Assembler::jne):
- (JSC::X86Assembler::jnz):
- (JSC::X86Assembler::je):
- (JSC::X86Assembler::jl):
- (JSC::X86Assembler::jb):
- (JSC::X86Assembler::jle):
- (JSC::X86Assembler::jbe):
- (JSC::X86Assembler::jge):
- (JSC::X86Assembler::jg):
- (JSC::X86Assembler::ja):
- (JSC::X86Assembler::jae):
- (JSC::X86Assembler::jo):
- (JSC::X86Assembler::jp):
- (JSC::X86Assembler::js):
- (JSC::X86Assembler::addsd_rr):
- (JSC::X86Assembler::addsd_mr):
- (JSC::X86Assembler::cvtsi2sd_rr):
- (JSC::X86Assembler::cvttsd2si_rr):
- (JSC::X86Assembler::movd_rr):
- (JSC::X86Assembler::movsd_rm):
- (JSC::X86Assembler::movsd_mr):
- (JSC::X86Assembler::mulsd_rr):
- (JSC::X86Assembler::mulsd_mr):
- (JSC::X86Assembler::pextrw_irr):
- (JSC::X86Assembler::subsd_rr):
- (JSC::X86Assembler::subsd_mr):
- (JSC::X86Assembler::ucomis_rr):
- (JSC::X86Assembler::int3):
- (JSC::X86Assembler::ret):
- (JSC::X86Assembler::predictNotTaken):
- (JSC::X86Assembler::label):
- (JSC::X86Assembler::align):
- (JSC::X86Assembler::link):
- (JSC::X86Assembler::executableCopy):
- (JSC::X86Assembler::X86InstructionFormater::prefix):
- (JSC::X86Assembler::X86InstructionFormater::oneByteOp):
- (JSC::X86Assembler::X86InstructionFormater::twoByteOp):
- (JSC::X86Assembler::X86InstructionFormater::oneByteOp64):
- (JSC::X86Assembler::X86InstructionFormater::oneByteOp8):
- (JSC::X86Assembler::X86InstructionFormater::twoByteOp8):
- (JSC::X86Assembler::X86InstructionFormater::instructionImmediate8):
- (JSC::X86Assembler::X86InstructionFormater::instructionImmediate32):
- (JSC::X86Assembler::X86InstructionFormater::instructionRel32):
- (JSC::X86Assembler::X86InstructionFormater::size):
- (JSC::X86Assembler::X86InstructionFormater::isAligned):
- (JSC::X86Assembler::X86InstructionFormater::data):
- (JSC::X86Assembler::X86InstructionFormater::executableCopy):
- (JSC::X86Assembler::X86InstructionFormater::registerModRM):
- (JSC::X86Assembler::X86InstructionFormater::memoryModRM):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JITArithmetic.cpp:
- (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate):
- (JSC::JIT::compileBinaryArithOp):
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCall):
- (JSC::JIT::compileOpCallSlowCase):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compilePutByIdHotPath):
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdProtoList):
- (JSC::JIT::privateCompileGetByIdChainList):
- (JSC::JIT::privateCompileGetByIdChain):
-
-2008-12-15 Darin Adler <darin@apple.com>
-
- * interpreter/RegisterFile.h: Tweak include formatting.
-
-2008-12-15 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Build fix for Gtk+.
-
- * interpreter/RegisterFile.h: Include stdio.h for fprintf
-
-2008-12-15 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- <rdar://problem/6444455> Worker Thread crash running multiple workers for a moderate amount of time
-
- * interpreter/RegisterFile.h: (JSC::RegisterFile::RegisterFile):
- Improve error handling: if mmap fails, crash immediately, and print out the reason.
-
-2008-12-13 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Re-enable WREC on 64-bit.
- Implements one of the MacroAssembler::jnzPtr methods, previously only implemented for 32-bit x86.
-
- https://bugs.webkit.org/show_bug.cgi?id=22849
-
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::testImm64):
- (JSC::MacroAssembler::jnzPtr):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::testq_i32r):
- (JSC::X86Assembler::testq_rr):
- * wtf/Platform.h:
-
-2008-12-13 Gavin Barraclough <barraclough@apple.com>
-
- Fix PPC builds.
-
- * assembler/MacroAssembler.h:
+ (functionGC): Updated for rename.
-2008-12-13 Gavin Barraclough <barraclough@apple.com>
+ * runtime/Collector.cpp: Slightly reduced the number of allocations per
+ collection, so that small workloads only allocate on collector block,
+ rather than two.
- Build fix only, no review.
+ (JSC::Heap::Heap): Updated to use the new allocateBlock function.
- * bytecode/CodeBlock.h:
-
-2008-12-13 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Cameron Zwarich.
+ (JSC::Heap::destroy): Updated to use the new freeBlocks function.
- Port the remainder of the JIT, bar calling convention related code, and code
- implementing optimizations which can be disabled, to use the MacroAssembler.
-
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::DataLabelPtr::DataLabelPtr):
- (JSC::MacroAssembler::RepatchBuffer::RepatchBuffer):
- (JSC::MacroAssembler::RepatchBuffer::link):
- (JSC::MacroAssembler::RepatchBuffer::addressOf):
- (JSC::MacroAssembler::RepatchBuffer::setPtr):
- (JSC::MacroAssembler::addPtr):
- (JSC::MacroAssembler::lshift32):
- (JSC::MacroAssembler::mod32):
- (JSC::MacroAssembler::rshift32):
- (JSC::MacroAssembler::storePtrWithRepatch):
- (JSC::MacroAssembler::jnzPtr):
- (JSC::MacroAssembler::jzPtr):
- (JSC::MacroAssembler::jump):
- (JSC::MacroAssembler::label):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::xchgl_rr):
- (JSC::X86Assembler::jmp_m):
- (JSC::X86Assembler::repatchAddress):
- (JSC::X86Assembler::getRelocatedAddress):
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::CodeBlock):
- * bytecode/CodeBlock.h:
- (JSC::JITCodeRef::JITCodeRef):
- (JSC::CodeBlock::setJITCode):
- (JSC::CodeBlock::jitCode):
- (JSC::CodeBlock::executablePool):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileLinkPass):
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- (JSC::CallRecord::CallRecord):
- (JSC::JumpTable::JumpTable):
- (JSC::JIT::emitCTICall):
- (JSC::JIT::JSRInfo::JSRInfo):
- * jit/JITArithmetic.cpp:
- * jit/JITCall.cpp:
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitNakedCall):
- (JSC::JIT::emitCTICall_internal):
- (JSC::JIT::checkStructure):
- (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
- (JSC::JIT::addSlowCase):
- (JSC::JIT::addJump):
- (JSC::JIT::emitJumpSlowToHot):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::privateCompileGetByIdChainList):
- (JSC::JIT::privateCompileGetByIdChain):
+ (JSC::Heap::allocateBlock): New function to initialize a block when
+ allocating it.
-2008-12-12 Cameron Zwarich <zwarich@apple.com>
+ (JSC::Heap::freeBlock): Consolidated the responsibility for running
+ destructors into this function.
- Reviewed by Sam Weinig.
+ (JSC::Heap::freeBlocks): Updated to use freeBlock.
- Fix the failures of the following layout tests, which regressed in
- r39255:
+ (JSC::Heap::recordExtraCost): Sweep the heap in this reporting function,
+ so that allocation, which is more common, doesn't have to check extraCost.
- fast/dom/StyleSheet/ownerNode-lifetime-2.html
- fast/xsl/transform-xhr-doc.xhtml
+ (JSC::Heap::heapAllocate): Run destructors right before recycling a
+ garbage cell. This has better cache utilization than a separate sweep phase.
- The binary search in CodeBlock::getByIdExceptionInfoForBytecodeOffset()
- doesn't guarantee that it actually finds a match, so add an explicit check
- for this.
+ (JSC::Heap::resizeBlocks):
+ (JSC::Heap::growBlocks):
+ (JSC::Heap::shrinkBlocks): New set of functions for managing the size of
+ the heap, now that the heap doesn't maintain any information about its
+ size.
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
+ (JSC::isPointerAligned):
+ (JSC::isHalfCellAligned):
+ (JSC::isPossibleCell):
+ (JSC::isCellAligned):
+ (JSC::Heap::markConservatively): Cleaned up this code a bit.
-2008-12-12 Gavin Barraclough <barraclough@apple.com>
+ (JSC::Heap::clearMarkBits):
+ (JSC::Heap::markedCells): Some helper functions for examining the the mark
+ bitmap.
- Reviewed by Cameron Zwarich.
+ (JSC::Heap::sweep): Simplified this function by using a DeadObjectIterator.
- Replace emitPutCallArg methods with emitPutJITStubArg methods. Primarily to make the argument numbering
- more sensible (1-based incrementing by 1, rather than 0-based incrementing by 4). The CTI name also seems
- to be being deprecated from the code generally.
+ (JSC::Heap::markRoots): Reordered some operations for clarity.
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileBinaryArithOp):
- (JSC::JIT::compileBinaryArithOpSlowCase):
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCallSetupArgs):
- (JSC::JIT::compileOpCallEvalSetupArgs):
- (JSC::JIT::compileOpConstructSetupArgs):
- (JSC::JIT::compileOpCall):
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitPutJITStubArg):
- (JSC::JIT::emitPutJITStubArgConstant):
- (JSC::JIT::emitGetJITStubArg):
- (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compilePutByIdHotPath):
- (JSC::JIT::compileGetByIdSlowCase):
- (JSC::JIT::compilePutByIdSlowCase):
+ (JSC::Heap::objectCount):
+ (JSC::Heap::addToStatistics):
+ (JSC::Heap::statistics): Rewrote these functions to calculate an object
+ count on demand, since the heap doesn't maintain this information by
+ itself.
-2008-12-12 Gavin Barraclough <barraclough@apple.com>
+ (JSC::Heap::reset): New function for resetting the heap once we've
+ exhausted heap space.
- Fix windows builds.
+ (JSC::Heap::collectAllGarbage): This function matches the old collect()
+ behavior, but it's now an uncommon function used only by API.
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- (JSC::JIT::privateCompile):
+ * runtime/Collector.h:
+ (JSC::CollectorBitmap::count):
+ (JSC::CollectorBitmap::isEmpty): Added some helper functions for managing
+ the collector mark bitmap.
-2008-12-12 Gavin Barraclough <barraclough@apple.com>
+ (JSC::Heap::reportExtraMemoryCost): Changed reporting from cell equivalents
+ to bytes, so it's easier to understand.
+
+ * runtime/CollectorHeapIterator.h:
+ (JSC::CollectorHeapIterator::CollectorHeapIterator):
+ (JSC::CollectorHeapIterator::operator!=):
+ (JSC::CollectorHeapIterator::operator*):
+ (JSC::CollectorHeapIterator::advance):
+ (JSC::::LiveObjectIterator):
+ (JSC::::operator):
+ (JSC::::DeadObjectIterator):
+ (JSC::::ObjectIterator): New iterators for encapsulating details about
+ heap layout, and what's live and dead on the heap.
- Reviewed by Geoff Garen.
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::putSlowCase):
+ (JSC::JSArray::increaseVectorLength): Delay reporting extra cost until
+ we're fully constructed, so the heap mark phase won't visit us in an
+ invalid state.
- Remove loop counter 'i' from the JIT generation passes, replace with a member m_bytecodeIndex.
+ * runtime/JSCell.h:
+ (JSC::JSCell::):
+ (JSC::JSCell::createDummyStructure):
+ (JSC::JSCell::JSCell):
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData):
+ * runtime/JSGlobalData.h: Added a dummy cell to simplify allocation logic.
- No impact on performance.
+ * runtime/JSString.h:
+ (JSC::jsSubstring): Don't report extra cost for substrings, since they
+ share a buffer that's already reported extra cost.
- * jit/JIT.cpp:
- (JSC::JIT::compileOpStrictEq):
- (JSC::JIT::emitSlowScriptCheck):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- (JSC::JIT::privateCompile):
- * jit/JIT.h:
- (JSC::CallRecord::CallRecord):
- (JSC::JmpTable::JmpTable):
- (JSC::JIT::emitCTICall):
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileBinaryArithOp):
- (JSC::JIT::compileBinaryArithOpSlowCase):
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCall):
- (JSC::JIT::compileOpCallSlowCase):
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitGetVirtualRegister):
- (JSC::JIT::emitGetVirtualRegisters):
- (JSC::JIT::emitNakedCall):
- (JSC::JIT::emitCTICall_internal):
- (JSC::JIT::emitJumpSlowCaseIfJSCell):
- (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
- (JSC::JIT::emitJumpSlowCaseIfNotImmNum):
- (JSC::JIT::emitJumpSlowCaseIfNotImmNums):
- (JSC::JIT::emitFastArithIntToImmOrSlowCase):
- (JSC::JIT::addSlowCase):
- (JSC::JIT::addJump):
- (JSC::JIT::emitJumpSlowToHot):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compileGetByIdSlowCase):
- (JSC::JIT::compilePutByIdHotPath):
- (JSC::JIT::compilePutByIdSlowCase):
+ * runtime/Tracing.d:
+ * runtime/Tracing.h: Changed these dtrace hooks not to report object
+ counts, since they're no longer cheap to compute.
-2008-12-12 Sam Weinig <sam@webkit.org>
+ * runtime/UString.h: Updated for renames.
- Reviewed by Cameron Zwarich.
+ * runtime/WeakGCMap.h: Added.
+ (JSC::WeakGCMap::isEmpty):
+ (JSC::WeakGCMap::uncheckedGet):
+ (JSC::WeakGCMap::uncheckedBegin):
+ (JSC::WeakGCMap::uncheckedEnd):
+ (JSC::::get):
+ (JSC::::take):
+ (JSC::::set):
+ (JSC::::uncheckedRemove): Mentioned above.
- <rdar://problem/6428342> Look into feasibility of discarding bytecode after native codegen
+ * wtf/StdLibExtras.h:
+ (WTF::bitCount): Added a bit population count function, so the heap can
+ count live objects to fulfill statistics questions.
- Move more JIT functionality to using offsets into the Instruction buffer
- instead of raw pointers. Two to go!
+The very last cell in the block is not allocated -- should not be marked.
- * interpreter/Interpreter.cpp:
- (JSC::bytecodeOffsetForPC): Rename from vPCForPC.
- (JSC::Interpreter::resolve): Pass offset to exception helper.
- (JSC::Interpreter::resolveSkip): Ditto.
- (JSC::Interpreter::resolveGlobal): Ditto.
- (JSC::Interpreter::resolveBaseAndProperty): Ditto.
- (JSC::Interpreter::resolveBaseAndFunc): Ditto.
- (JSC::isNotObject): Ditto.
- (JSC::Interpreter::unwindCallFrame): Call bytecodeOffsetForPC.
- (JSC::Interpreter::throwException): Use offsets instead of vPCs.
- (JSC::Interpreter::privateExecute): Pass offset to exception helper.
- (JSC::Interpreter::retrieveLastCaller): Ditto.
- (JSC::Interpreter::cti_op_instanceof): Ditto.
- (JSC::Interpreter::cti_op_call_NotJSFunction): Ditto.
- (JSC::Interpreter::cti_op_resolve): Pass offset to exception helper.
- (JSC::Interpreter::cti_op_construct_NotJSConstruct): Ditto.
- (JSC::Interpreter::cti_op_resolve_func): Ditto.
- (JSC::Interpreter::cti_op_resolve_skip): Ditto.
- (JSC::Interpreter::cti_op_resolve_global): Ditto.
- (JSC::Interpreter::cti_op_resolve_with_base): Ditto.
- (JSC::Interpreter::cti_op_throw): Ditto.
- (JSC::Interpreter::cti_op_in): Ditto.
- (JSC::Interpreter::cti_vm_throw): Ditto.
- * interpreter/Interpreter.h:
+2009-12-13 Geoffrey Garen <ggaren@apple.com>
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass): Don't pass unnecessary vPC to stub.
- * jit/JIT.h: Remove ARG_instr1 - ARG_instr3 and ARG_instr5 - ARG_instr6.
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCallEvalSetupArgs): Don't pass unnecessary vPC to stub..
- (JSC::JIT::compileOpConstructSetupArgs): Ditto.
+ Windows build fix: Export some new symbols.
- * runtime/ExceptionHelpers.cpp:
- (JSC::createUndefinedVariableError): Take an offset instead of vPC.
- (JSC::createInvalidParamError): Ditto.
- (JSC::createNotAConstructorError): Ditto.
- (JSC::createNotAFunctionError): Ditto.
- (JSC::createNotAnObjectError): Ditto.
- * runtime/ExceptionHelpers.h:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
-2008-12-12 Cameron Zwarich <zwarich@apple.com>
+2009-12-13 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Oliver Hunt.
+ Windows build fix: Removed some old exports.
- Bug 22835: Crash during bytecode generation when comparing to null
- <https://bugs.webkit.org/show_bug.cgi?id=22835>
- <rdar://problem/6286749>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
- Change the special cases in bytecode generation for comparison to null
- to use tempDestination().
+2009-12-13 Geoffrey Garen <ggaren@apple.com>
- * parser/Nodes.cpp:
- (JSC::BinaryOpNode::emitBytecode):
- (JSC::EqualNode::emitBytecode):
+ Windows build fix: Use unsigned instead of uint32_t to avoid dependencies.
-2008-12-12 Gavin Barraclough <barraclough@apple.com>
+ * wtf/StdLibExtras.h:
+ (WTF::bitCount):
- Reviewed by Geoff Garen.
+2009-12-13 Gavin Barraclough <barraclough@apple.com>
- Move slow-cases of JIT code generation over to the MacroAssembler interface.
+ Reviewed by NOBODY (speculative Windows build fix).
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::Label::Label):
- (JSC::MacroAssembler::jae32):
- (JSC::MacroAssembler::jg32):
- (JSC::MacroAssembler::jzPtr):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileSlowCases):
- (JSC::JIT::privateCompile):
- (JSC::JIT::emitGetVariableObjectRegister):
- (JSC::JIT::emitPutVariableObjectRegister):
- * jit/JIT.h:
- (JSC::SlowCaseEntry::SlowCaseEntry):
- (JSC::JIT::getSlowCase):
- (JSC::JIT::linkSlowCase):
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileBinaryArithOpSlowCase):
- * jit/JITCall.cpp:
- (JSC::JIT::compileOpCallInitializeCallFrame):
- (JSC::JIT::compileOpCall):
- (JSC::JIT::compileOpCallSlowCase):
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
- (JSC::JIT::linkSlowCaseIfNotJSCell):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compilePutByIdHotPath):
- (JSC::JIT::compileGetByIdSlowCase):
- (JSC::JIT::compilePutByIdSlowCase):
+ * runtime/JSGlobalObjectFunctions.cpp:
-2008-12-12 Cameron Zwarich <zwarich@apple.com>
+2009-12-13 Gavin Barraclough <barraclough@apple.com>
Reviewed by Sam Weinig.
- Bug 22828: Do not inspect bytecode instruction stream for op_get_by_id exception information
- <https://bugs.webkit.org/show_bug.cgi?id=22828>
-
- In order to remove the bytecode instruction stream after generating
- native code, all inspection of bytecode instructions at runtime must
- be removed. One particular instance of this is the special handling of
- exceptions thrown by the op_get_by_id emitted directly before an
- op_construct or an op_instanceof. This patch moves that information to
- an auxiliary data structure in CodeBlock.
-
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::addGetByIdExceptionInfo):
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::emitConstruct):
- * bytecompiler/BytecodeGenerator.h:
- (JSC::BytecodeGenerator::emitGetByIdExceptionInfo):
- * parser/Nodes.cpp:
- (JSC::InstanceOfNode::emitBytecode):
- * runtime/ExceptionHelpers.cpp:
- (JSC::createNotAnObjectError):
-
-2008-12-12 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Change exception information accessors to take offsets into the bytecode
- instruction buffer instead of pointers so that they can work even even
- if the bytecode buffer is purged.
-
- * bytecode/CodeBlock.cpp:
- (JSC::instructionOffsetForNth):
- (JSC::CodeBlock::handlerForBytecodeOffset):
- (JSC::CodeBlock::lineNumberForBytecodeOffset):
- (JSC::CodeBlock::expressionRangeForBytecodeOffset):
- * bytecode/CodeBlock.h:
- * bytecode/SamplingTool.cpp:
- (JSC::SamplingTool::dump):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::throwException):
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::retrieveLastCaller):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- * runtime/ExceptionHelpers.cpp:
- (JSC::createUndefinedVariableError):
- (JSC::createInvalidParamError):
- (JSC::createNotAConstructorError):
- (JSC::createNotAFunctionError):
- (JSC::createNotAnObjectError):
-
-2008-12-12 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Tiny bit of refactoring in quantifier generation.
-
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateNonGreedyQuantifier):
- (JSC::WREC::Generator::generateGreedyQuantifier):
-
-2008-12-11 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Remove dependancy on having the Instruction buffer in order to
- deref Structures used for property access and global resolves.
- Instead, we put references to the necessary Structures in auxiliary
- data structures on the CodeBlock. This is not an ideal solution,
- as we still pay for having the Structures in two places and we
- would like to eventually just hold on to offsets into the machine
- code buffer.
+ https://bugs.webkit.org/show_bug.cgi?id=32496
+ Switch remaining cases of string construction to use StringBuilder.
+ Builds strings using a vector rather than using string append / addition.
- - Also removes CodeBlock bloat in non-JIT by #ifdefing the JIT
- only data structures.
-
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.exp:
* JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * bytecode/CodeBlock.cpp:
- (JSC::isGlobalResolve):
- (JSC::isPropertyAccess):
- (JSC::instructionOffsetForNth):
- (JSC::printGlobalResolveInfo):
- (JSC::printStructureStubInfo):
- (JSC::CodeBlock::printStructures):
- (JSC::CodeBlock::dump):
- (JSC::CodeBlock::~CodeBlock):
- (JSC::CodeBlock::shrinkToFit):
- * bytecode/CodeBlock.h:
- (JSC::GlobalResolveInfo::GlobalResolveInfo):
- (JSC::getNativePC):
- (JSC::CodeBlock::instructions):
- (JSC::CodeBlock::getStubInfo):
- (JSC::CodeBlock::getBytecodeIndex):
- (JSC::CodeBlock::addPropertyAccessInstruction):
- (JSC::CodeBlock::addGlobalResolveInstruction):
- (JSC::CodeBlock::numberOfStructureStubInfos):
- (JSC::CodeBlock::addStructureStubInfo):
- (JSC::CodeBlock::structureStubInfo):
- (JSC::CodeBlock::addGlobalResolveInfo):
- (JSC::CodeBlock::globalResolveInfo):
- (JSC::CodeBlock::numberOfCallLinkInfos):
- (JSC::CodeBlock::addCallLinkInfo):
- (JSC::CodeBlock::callLinkInfo):
- * bytecode/Instruction.h:
- (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
- (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
- * bytecode/Opcode.h:
- (JSC::):
- * bytecode/StructureStubInfo.cpp: Copied from bytecode/CodeBlock.cpp.
- (JSC::StructureStubInfo::deref):
- * bytecode/StructureStubInfo.h: Copied from bytecode/CodeBlock.h.
- (JSC::StructureStubInfo::StructureStubInfo):
- (JSC::StructureStubInfo::initGetByIdSelf):
- (JSC::StructureStubInfo::initGetByIdProto):
- (JSC::StructureStubInfo::initGetByIdChain):
- (JSC::StructureStubInfo::initGetByIdSelfList):
- (JSC::StructureStubInfo::initGetByIdProtoList):
- (JSC::StructureStubInfo::initPutByIdTransition):
- (JSC::StructureStubInfo::initPutByIdReplace):
- (JSC::StructureStubInfo::):
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::emitResolve):
- (JSC::BytecodeGenerator::emitGetById):
- (JSC::BytecodeGenerator::emitPutById):
- (JSC::BytecodeGenerator::emitCall):
- (JSC::BytecodeGenerator::emitConstruct):
- (JSC::BytecodeGenerator::emitCatch):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::tryCTICachePutByID):
- (JSC::Interpreter::tryCTICacheGetByID):
- (JSC::Interpreter::cti_op_get_by_id_self_fail):
- (JSC::getPolymorphicAccessStructureListSlot):
- (JSC::Interpreter::cti_op_get_by_id_proto_list):
- (JSC::Interpreter::cti_op_resolve_global):
- * jit/JIT.cpp:
- (JSC::JIT::JIT):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- (JSC::JIT::privateCompile):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compilePutByIdHotPath):
- (JSC::JIT::compileGetByIdSlowCase):
- (JSC::JIT::compilePutByIdSlowCase):
- (JSC::JIT::privateCompileGetByIdSelfList):
- (JSC::JIT::privateCompileGetByIdProtoList):
- (JSC::JIT::privateCompileGetByIdChainList):
+ * runtime/Executable.cpp:
+ (JSC::FunctionExecutable::paramString):
+ * runtime/FunctionConstructor.cpp:
+ (JSC::constructFunction):
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::encode):
+ (JSC::decode):
+ (JSC::globalFuncEscape):
+ (JSC::globalFuncUnescape):
+ * runtime/JSONObject.cpp:
+ (JSC::Stringifier::stringify):
+ (JSC::Stringifier::indent):
+ * runtime/JSString.h:
+ * runtime/LiteralParser.cpp:
+ (JSC::LiteralParser::Lexer::lexString):
+ * runtime/NumberPrototype.cpp:
+ (JSC::integerPartNoExp):
+ (JSC::numberProtoFuncToFixed):
+ (JSC::numberProtoFuncToPrecision):
+ * runtime/Operations.h:
+ (JSC::jsString):
+ * runtime/StringPrototype.cpp:
+ (JSC::substituteBackreferencesSlow):
+ (JSC::substituteBackreferences):
+ (JSC::stringProtoFuncConcat):
-2008-12-11 Gavin Barraclough <barraclough@apple.com>
+2009-12-08 Jeremy Moskovich <jeremy@chromium.org>
- Reviewed by Oliver Hunt.
+ Reviewed by Eric Seidel.
- Remove CTI_ARGUMENTS mode, use va_start implementation on Windows,
- unifying JIT callback (cti_*) argument access on OS X & Windows
+ Add code to allow toggling ATSUI/Core Text rendering at runtime in ComplexTextController.
+ https://bugs.webkit.org/show_bug.cgi?id=31802
- No performance impact.
+ The goal here is to allow for a zero runtime hit for ports that decide to select
+ the API at compile time.
+ When both USE(ATSUI) and USE(CORE_TEXT) are true, the API is toggled
+ at runtime. Core Text is used for OS Versions >= 10.6.
+
+ * wtf/Platform.h: #define USE_CORE_TEXT and USE_ATSUI on Chrome/Mac.
+
+2009-12-11 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Unify codegen for forward and backward variants of branches
+ https://bugs.webkit.org/show_bug.cgi?id=32463
- * interpreter/Interpreter.h:
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileCTIMachineTrampolines):
* jit/JIT.h:
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitCTICall):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::privateCompilePutByIdTransition):
- * wtf/Platform.h:
+ (JSC::JIT::emit_op_loop): Implemented in terms of forward variant.
+ (JSC::JIT::emit_op_loop_if_true): ditto
+ (JSC::JIT::emitSlow_op_loop_if_true): ditto
+ (JSC::JIT::emit_op_loop_if_false): ditto
+ (JSC::JIT::emitSlow_op_loop_if_false): ditto
+ (JSC::JIT::emit_op_loop_if_less): ditto
+ (JSC::JIT::emitSlow_op_loop_if_less): ditto
+ * jit/JITOpcodes.cpp:
-2008-12-11 Holger Freyther <zecke@selfish.org>
+2009-12-11 Sam Weinig <sam@webkit.org>
- Reviewed by Simon Hausmann.
+ Reviewed by Anders Carlsson.
- https://bugs.webkit.org/show_bug.cgi?id=20953
+ Allow WTFs concept of the main thread to differ from pthreads when necessary.
- For Qt it is not pratical to have a FontCache and GlyphPageTreeNode
- implementation. This is one of the reasons why the Qt port is currently not
- using WebCore/platform/graphics/Font.cpp. By allowing to not use
- the simple/fast-path the Qt port will be able to use it.
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::initializeThreading):
+ (WTF::isMainThread):
+ * wtf/mac/MainThreadMac.mm:
+ (WTF::initializeMainThreadPlatform):
+ (WTF::scheduleDispatchFunctionsOnMainThread):
- Introduce USE(FONT_FAST_PATH) and define it for every port but the
- Qt one.
+2009-12-11 Gavin Barraclough <barraclough@apple.com>
- * wtf/Platform.h: Enable USE(FONT_FAST_PATH)
+ Reviewed by Oliver Hunt.
-2008-12-11 Gabor Loki <loki@inf.u-szeged.hu>
+ https://bugs.webkit.org/show_bug.cgi?id=32454
+ Refactor construction of simple strings to avoid string concatenation.
- Reviewed by Darin Adler and landed by Holger Freyther.
+ Building strings through concatenation has a memory and performance cost -
+ a memory cost since we must over-allocate the buffer to leave space to append
+ into, and performance in that the string may still require reallocation (and
+ thus copying during construction). Instead move the full construction to
+ within a single function call (makeString), so that the arguments' lengths
+ can be calculated and an appropriate sized buffer allocated before copying
+ any characters.
- <https://bugs.webkit.org/show_bug.cgi?id=22648>
- Fix threading on Qt-port and Gtk-port for Sampling tool.
+ ~No performance change (~2% progression on date tests).
- * wtf/ThreadingGtk.cpp:
- (WTF::waitForThreadCompletion):
- * wtf/ThreadingQt.cpp:
- (WTF::waitForThreadCompletion):
+ * bytecode/CodeBlock.cpp:
+ (JSC::escapeQuotes):
+ (JSC::valueToSourceString):
+ (JSC::constantName):
+ (JSC::idName):
+ (JSC::CodeBlock::registerName):
+ (JSC::regexpToSourceString):
+ (JSC::regexpName):
+ * bytecompiler/NodesCodegen.cpp:
+ (JSC::substitute):
+ * profiler/Profiler.cpp:
+ (JSC::Profiler::createCallIdentifier):
+ * runtime/DateConstructor.cpp:
+ (JSC::callDate):
+ * runtime/DateConversion.cpp:
+ (JSC::formatDate):
+ (JSC::formatDateUTCVariant):
+ (JSC::formatTime):
+ (JSC::formatTimeUTC):
+ * runtime/DateConversion.h:
+ (JSC::):
+ * runtime/DatePrototype.cpp:
+ (JSC::dateProtoFuncToString):
+ (JSC::dateProtoFuncToUTCString):
+ (JSC::dateProtoFuncToDateString):
+ (JSC::dateProtoFuncToTimeString):
+ (JSC::dateProtoFuncToGMTString):
+ * runtime/ErrorPrototype.cpp:
+ (JSC::errorProtoFuncToString):
+ * runtime/ExceptionHelpers.cpp:
+ (JSC::createUndefinedVariableError):
+ (JSC::createErrorMessage):
+ (JSC::createInvalidParamError):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::insertSemicolonIfNeeded):
+ (JSC::functionProtoFuncToString):
+ * runtime/ObjectPrototype.cpp:
+ (JSC::objectProtoFuncToString):
+ * runtime/RegExpConstructor.cpp:
+ (JSC::constructRegExp):
+ * runtime/RegExpObject.cpp:
+ (JSC::RegExpObject::match):
+ * runtime/RegExpPrototype.cpp:
+ (JSC::regExpProtoFuncCompile):
+ (JSC::regExpProtoFuncToString):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncBig):
+ (JSC::stringProtoFuncSmall):
+ (JSC::stringProtoFuncBlink):
+ (JSC::stringProtoFuncBold):
+ (JSC::stringProtoFuncFixed):
+ (JSC::stringProtoFuncItalics):
+ (JSC::stringProtoFuncStrike):
+ (JSC::stringProtoFuncSub):
+ (JSC::stringProtoFuncSup):
+ (JSC::stringProtoFuncFontcolor):
+ (JSC::stringProtoFuncFontsize):
+ (JSC::stringProtoFuncAnchor):
+ * runtime/UString.h:
+ (JSC::):
+ (JSC::makeString):
-2008-12-10 Cameron Zwarich <zwarich@apple.com>
+2009-12-10 Gavin Barraclough <barraclough@apple.com>
Reviewed by Oliver Hunt.
- Bug 22734: Debugger crashes when stepping into a function call in a return statement
- <https://bugs.webkit.org/show_bug.cgi?id=22734>
- <rdar://problem/6426796>
+ https://bugs.webkit.org/show_bug.cgi?id=32400
+ Switch remaining cases of string addition to use ropes.
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::BytecodeGenerator): The DebuggerCallFrame uses
- the 'this' value stored in a callFrame, so op_convert_this should be
- emitted at the beginning of a function body when generating bytecode
- with debug hooks.
- * debugger/DebuggerCallFrame.cpp:
- (JSC::DebuggerCallFrame::thisObject): The assertion inherent in the call
- to asObject() here is valid, because any 'this' value should have been
- converted to a JSObject*.
+ Re-landing r51975 - added toPrimitiveString method,
+ performs toPrimitive then subsequent toString operations.
-2008-12-10 Gavin Barraclough <barraclough@apple.com>
+ ~1% progression on Sunspidey.
- Reviewed by Geoff Garen.
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * runtime/JSString.h:
+ (JSC::JSString::JSString):
+ (JSC::JSString::appendStringInConstruct):
+ * runtime/Operations.cpp:
+ (JSC::jsAddSlowCase):
+ * runtime/Operations.h:
+ (JSC::jsString):
+ (JSC::jsAdd):
- Port more of the JIT to use the MacroAssembler interface.
-
- Everything in the main pass, bar a few corner cases (operations with required
- registers, or calling convention code). Slightly refactors array creation,
- moving the offset calculation into the callFrame into C code (reducing code
- planted).
+2009-12-11 Adam Roben <aroben@apple.com>
- Overall this appears to be a 1% win on v8-tests, due to the smaller immediates
- being planted (in jfalse in particular).
+ Windows build fix
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::cti_op_new_array):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- * jit/JIT.h:
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateEnter):
+ * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added
+ $(WebKitOutputDir)/include/private to the include path.
-2008-12-10 Sam Weinig <sam@webkit.org>
+2009-12-11 Adam Roben <aroben@apple.com>
- Fix non-JIT builds.
+ Move QuartzCorePresent.h to include/private
- * bytecode/CodeBlock.h:
+ This fixes other projects that use wtf/Platform.h
+
+ Rubber-stamped by Steve Falkenburg.
-2008-12-10 Sam Weinig <sam@webkit.org>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Let VS do its thang.
+ * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Write
+ QuartzCorePresent.h to $(WebKitOutputDir)/include/private.
- Reviewed by Geoffrey Garen.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
+ * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
+ Added $(WebKitOutputDir)/include/private to the include path.
- <rdar://problem/6428332> Remove the CTI return address table from CodeBlock
+2009-12-11 Adam Roben <aroben@apple.com>
- Step 2:
+ Fix clean builds and everything rebuilding on every build
- Convert the return address table from a HashMap to a sorted Vector. This
- reduces the size of the data structure by ~4.5MB on Membuster head.
+ Reviewed by Sam Weinig.
- SunSpider reports a 0.5% progression.
+ * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Don't
+ write out QuartzCorePresent.h if it exists but is older than
+ QuartzCore.h. Also, create the directory we write QuartzCorePresent.h
+ into first.
- * bytecode/CodeBlock.cpp:
- (JSC::sizeInBytes): Generic method to get the cost of a Vector.
- (JSC::CodeBlock::dumpStatistics): Add dumping of member sizes.
- * bytecode/CodeBlock.h:
- (JSC::PC::PC): Struct representing NativePC -> VirtualPC mappings.
- (JSC::getNativePC): Helper for binary chop.
- (JSC::CodeBlock::getBytecodeIndex): Used to get the VirtualPC from a
- NativePC using a binary chop of the pcVector.
- (JSC::CodeBlock::pcVector): Accessor.
+2009-12-11 Adam Roben <aroben@apple.com>
- * interpreter/Interpreter.cpp:
- (JSC::vPCForPC): Use getBytecodeIndex instead of jitReturnAddressVPCMap().get().
- (JSC::Interpreter::cti_op_instanceof): Ditto.
- (JSC::Interpreter::cti_op_resolve): Ditto.
- (JSC::Interpreter::cti_op_resolve_func): Ditto.
- (JSC::Interpreter::cti_op_resolve_skip): Ditto.
- (JSC::Interpreter::cti_op_resolve_with_base): Ditto.
- (JSC::Interpreter::cti_op_throw): Ditto.
- (JSC::Interpreter::cti_op_in): Ditto.
- (JSC::Interpreter::cti_vm_throw): Ditto.
+ Windows build fix for systems with spaces in their paths
- * jit/JIT.cpp:
- (JSC::JIT::privateCompile): Reserve exact capacity and fill the pcVector.
+ * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Quote some paths.
-2008-12-09 Geoffrey Garen <ggaren@apple.com>
+2009-12-11 Chris Marrin <cmarrin@apple.com>
- Reviewed by Oliver Hunt.
+ Reviewed by Adam Roben.
- Added WREC support for an assertion followed by a quantifier. Fixed
- PCRE to match.
+ Add check for presence of QuartzCore headers
+ https://bugs.webkit.org/show_bug.cgi?id=31856
+
+ The script now checks for the presence of QuartzCore.h. If present
+ it will turn on ACCELERATED_COMPOSITING and 3D_RENDERING to enable
+ HW compositing on Windows. The script writes QuartzCorePresent.h to
+ the build directory which has a define telling whether QuartzCore is
+ present.
- * wrec/WRECParser.cpp:
- (JSC::WREC::Parser::parseParentheses): Throw away the quantifier, since
- it's meaningless. (Firefox does the same.)
+ * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh:
+ * wtf/Platform.h:
- * pcre/pcre_compile.cpp:
- (compileBranch): ditto.
+2009-12-11 Kent Tamura <tkent@chromium.org>
-2008-12-09 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Darin Adler.
- Reviewed by Cameron Zwarich.
+ Fix a problem that JSC::gregorianDateTimeToMS() returns a negative
+ value for a huge year value.
+ https://bugs.webkit.org/show_bug.cgi?id=32304
- In preparation for compiling WREC without PCRE:
-
- Further relaxed WREC's parsing to be more web-compatible. Fixed PCRE to
- match in cases where it didn't already.
-
- Changed JavaScriptCore to report syntax errors detected by WREC, rather
- than falling back on PCRE any time WREC sees an error.
-
- * pcre/pcre_compile.cpp:
- (checkEscape): Relaxed parsing of \c and \N escapes to be more
- web-compatible.
-
- * runtime/RegExp.cpp:
- (JSC::RegExp::RegExp): Only fall back on PCRE if WREC has not reported
- a syntax error.
+ * wtf/DateMath.cpp:
+ (WTF::dateToDaysFrom1970): Renamed from dateToDayInYear, and changed the return type to double.
+ (WTF::calculateDSTOffset): Follow the dateToDaysFrom1970() change.
+ (WTF::timeClip): Use maxECMAScriptTime.
+ (JSC::gregorianDateTimeToMS): Follow the dateToDaysFrom1970() change.
+
+2009-12-10 Adam Barth <abarth@webkit.org>
- * wrec/WREC.cpp:
- (JSC::WREC::Generator::compileRegExp): Fixed some error reporting to
- match PCRE.
+ No review, rolling out r51975.
+ http://trac.webkit.org/changeset/51975
- * wrec/WRECParser.cpp: Added error messages that match PCRE.
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * runtime/JSString.h:
+ (JSC::JSString::JSString):
+ (JSC::JSString::appendStringInConstruct):
+ * runtime/Operations.cpp:
+ (JSC::jsAddSlowCase):
+ * runtime/Operations.h:
+ (JSC::jsString):
+ (JSC::jsAdd):
- (JSC::WREC::Parser::consumeGreedyQuantifier):
- (JSC::WREC::Parser::parseParentheses):
- (JSC::WREC::Parser::parseCharacterClass):
- (JSC::WREC::Parser::parseNonCharacterEscape): Updated the above functions to
- use the new setError API.
+2009-12-10 Oliver Hunt <oliver@apple.com>
- (JSC::WREC::Parser::consumeEscape): Relaxed parsing of \c \N \u \x \B
- to be more web-compatible.
+ Reviewed by Gavin Barraclough.
- (JSC::WREC::Parser::parseAlternative): Distinguish between a malformed
- quantifier and a quantifier with no prefix, like PCRE does.
+ Incorrect caching of prototype lookup with dictionary base
+ https://bugs.webkit.org/show_bug.cgi?id=32402
- (JSC::WREC::Parser::consumeParenthesesType): Updated to use the new setError API.
+ Make sure we don't add cached prototype lookup to the proto_list
+ lookup chain if the top level object is a dictionary.
- * wrec/WRECParser.h:
- (JSC::WREC::Parser::error):
- (JSC::WREC::Parser::syntaxError):
- (JSC::WREC::Parser::parsePattern):
- (JSC::WREC::Parser::reset):
- (JSC::WREC::Parser::setError): Store error messages instead of error codes,
- to provide for exception messages. Use a setter for reporting errors, so
- errors detected early are not overwritten by errors detected later.
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::tryCacheGetByID):
-2008-12-09 Gavin Barraclough <barraclough@apple.com>
+2009-12-10 Gavin Barraclough <barraclough@apple.com>
Reviewed by Oliver Hunt.
- Use va_args to access cti function arguments.
- https://bugs.webkit.org/show_bug.cgi?id=22774
+ https://bugs.webkit.org/show_bug.cgi?id=32400
+ Switch remaining cases of string addition to use ropes.
- This may be a minor regression, but we'll take the hit if so to reduce fragility.
+ ~1% progression on Sunspidey.
- * interpreter/Interpreter.cpp:
- * interpreter/Interpreter.h:
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * runtime/JSString.h:
+ (JSC::JSString::JSString):
+ (JSC::JSString::appendStringInConstruct):
+ * runtime/Operations.cpp:
+ (JSC::jsAddSlowCase):
+ * runtime/Operations.h:
+ (JSC::jsString):
+ (JSC::jsAdd):
-2008-12-09 Sam Weinig <sam@webkit.org>
+2009-12-10 Kent Hansen <kent.hansen@nokia.com>
- Reviewed twice by Cameron Zwarich.
+ Reviewed by Geoffrey Garen.
- Fix for https://bugs.webkit.org/show_bug.cgi?id=22752
- Clear SymbolTable after codegen for Function codeblocks that
- don't require an activation
+ Remove JSObject::getPropertyAttributes() and all usage of it.
+ https://bugs.webkit.org/show_bug.cgi?id=31933
- This is a ~1.5MB improvement on Membuster-head.
+ getOwnPropertyDescriptor() should be used instead.
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::dumpStatistics): Add logging of non-empty symbol tables
- and total size used by symbol tables.
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::generate): Clear the symbol table here.
+ * JavaScriptCore.exp:
+ * JavaScriptCore.order:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * debugger/DebuggerActivation.cpp:
+ (JSC::DebuggerActivation::getOwnPropertyDescriptor):
+ * debugger/DebuggerActivation.h:
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::propertyIsEnumerable):
+ * runtime/JSObject.h:
+ * runtime/JSVariableObject.cpp:
+ * runtime/JSVariableObject.h:
-2008-12-09 Sam Weinig <sam@webkit.org>
+2009-12-10 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Geoffrey Garen.
+ Reviewed by Oliver Hunt & Mark Rowe.
- Remove unnecessary extra lookup when throwing an exception.
- We used to first lookup the target offset using getHandlerForVPC
- and then we would lookup the native code stub using
- nativeExceptionCodeForHandlerVPC. Instead, we can just pass around
- the HandlerInfo.
+ https://bugs.webkit.org/show_bug.cgi?id=32367
+ Add support for short Ropes (up to 3 entries) inline within JSString.
+ (rather than externally allocating an object to hold the rope).
+ Switch jsAdd of (JSString* + JSString*) to now make use of Ropes.
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::handlerForVPC): Return the HandlerInfo.
- * bytecode/CodeBlock.h: Remove nativeExceptionCodeForHandlerVPC.
+ ~1% progression on Sunspidey.
* interpreter/Interpreter.cpp:
- (JSC::Interpreter::throwException): Return a HandlerInfo instead of
- and Instruction offset.
- (JSC::Interpreter::privateExecute): Get the offset from HandlerInfo.
- (JSC::Interpreter::cti_op_throw): Get the native code from the HandleInfo.
- (JSC::Interpreter::cti_vm_throw): Ditto.
- * interpreter/Interpreter.h:
+ (JSC::Interpreter::privateExecute):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * runtime/JSString.cpp:
+ (JSC::JSString::resolveRope):
+ (JSC::JSString::toBoolean):
+ (JSC::JSString::getStringPropertyDescriptor):
+ * runtime/JSString.h:
+ (JSC::JSString::Rope::Fiber::deref):
+ (JSC::JSString::Rope::Fiber::ref):
+ (JSC::JSString::Rope::Fiber::refAndGetLength):
+ (JSC::JSString::Rope::append):
+ (JSC::JSString::JSString):
+ (JSC::JSString::~JSString):
+ (JSC::JSString::value):
+ (JSC::JSString::tryGetValue):
+ (JSC::JSString::length):
+ (JSC::JSString::canGetIndex):
+ (JSC::JSString::appendStringInConstruct):
+ (JSC::JSString::appendValueInConstructAndIncrementLength):
+ (JSC::JSString::isRope):
+ (JSC::JSString::string):
+ (JSC::JSString::ropeLength):
+ (JSC::JSString::getStringPropertySlot):
+ * runtime/Operations.h:
+ (JSC::jsString):
+ (JSC::jsAdd):
+ (JSC::resolveBase):
-2008-12-09 Eric Seidel <eric@webkit.org>
+2009-12-09 Anders Carlsson <andersca@apple.com>
- Build fix only, no review.
+ Reviewed by Geoffrey Garen.
- Speculative fix for the Chromium-Windows bot.
- Add JavaScriptCore/os-win32 to the include path (for stdint.h)
- Strangely it builds fine on my local windows box (or at least doesn't hit this error)
+ Fix three more things found by compiling with clang++.
+
+ * runtime/Structure.h:
+ (JSC::StructureTransitionTable::reifySingleTransition):
+ Add the 'std' qualifier to the call to make_pair.
- * JavaScriptCore.scons:
+ * wtf/DateMath.cpp:
+ (WTF::initializeDates):
+ Incrementing a bool is deprecated according to the C++ specification.
+
+ * wtf/PtrAndFlags.h:
+ (WTF::PtrAndFlags::PtrAndFlags):
+ Name lookup should not be done in dependent bases, so explicitly qualify the call to set.
-2008-12-09 Eric Seidel <eric@webkit.org>
+2009-12-09 Maciej Stachowiak <mjs@apple.com>
- No review, build fix only.
-
- Add ExecutableAllocator files missing from Scons build.
+ Reviewed by Oliver Hunt.
- * JavaScriptCore.scons:
+ Google reader gets stuck in the "Loading..." state and does not complete
+ https://bugs.webkit.org/show_bug.cgi?id=32256
+ <rdar://problem/7456388>
-2008-12-09 Dimitri Glazkov <dglazkov@chromium.org>
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitSlow_op_jless): Fix some backward branches.
- Reviewed by Timothy Hatcher.
+2009-12-09 Gavin Barraclough <barraclough@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=22631
- Allow ScriptCallFrame query names of functions in the call stack.
+ Reviewed by Oliver Hunt.
- * JavaScriptCore.exp: added InternalFunction::name and
- UString operator==() as exported symbol
+ https://bugs.webkit.org/show_bug.cgi?id=32228
+ Make destruction of ropes non-recursive to prevent stack exhaustion.
+ Also, pass a UString& into initializeFiber rather than a Ustring::Rep*,
+ since the Rep is not being ref counted this could result in usage of a
+ Rep with refcount zero (where the Rep comes from a temporary UString
+ returned from a function).
-2008-12-08 Judit Jasz <jasy@inf.u-szeged.hu>
+ * runtime/JSString.cpp:
+ (JSC::JSString::Rope::destructNonRecursive):
+ (JSC::JSString::Rope::~Rope):
+ * runtime/JSString.h:
+ (JSC::JSString::Rope::initializeFiber):
+ * runtime/Operations.h:
+ (JSC::concatenateStrings):
- Reviewed and tweaked by Cameron Zwarich.
+2009-12-09 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
- Bug 22352: Annotate opcodes with their length
- <https://bugs.webkit.org/show_bug.cgi?id=22352>
+ Reviewed by Eric Seidel.
- * bytecode/Opcode.cpp:
- * bytecode/Opcode.h:
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::privateExecute):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
+ https://bugs.webkit.org/show_bug.cgi?id=31930
-2008-12-08 Geoffrey Garen <ggaren@apple.com>
+ Update to r51457. ASSERTs changed to COMPILE_ASSERTs.
+ The speedup is 25%.
- Reviewed by Oliver Hunt.
-
- Implemented more of the relaxed and somewhat weird rules for deciding
- how to interpret a non-pattern-character.
-
- * wrec/Escapes.h:
- (JSC::WREC::Escape::):
- (JSC::WREC::Escape::Escape): Eliminated Escape::None because it was
- unused. If you see an '\\', it's either a valid escape or an error.
+ * runtime/JSGlobalData.cpp:
+ (JSC::VPtrSet::VPtrSet):
- * wrec/Quantifier.h:
- (JSC::WREC::Quantifier::Quantifier):
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateNonGreedyQuantifier):
- (JSC::WREC::Generator::generateGreedyQuantifier): Renamed "noMaxSpecified"
- to "Infinity", since that's what it means.
-
- * wrec/WRECParser.cpp:
- (JSC::WREC::Parser::consumeGreedyQuantifier): Re-wrote {n,m} parsing rules
- because they were too strict before. Added support for backtracking
- in the case where the {n,m} fails to parse as a quantifier, and yet is
- not a syntax error.
-
- (JSC::WREC::Parser::parseCharacterClass):
- (JSC::WREC::Parser::parseNonCharacterEscape): Eliminated Escape::None,
- as above.
-
- (JSC::WREC::Parser::consumeEscape): Don't treat ASCII and _ escapes
- as syntax errors. See fast/regex/non-pattern-characters.html.
-
- * wrec/WRECParser.h:
- (JSC::WREC::Parser::SavedState::SavedState):
- (JSC::WREC::Parser::SavedState::restore): Added a state backtracker,
- since parsing {n,m} forms requires backtracking if the form turns out
- not to be a quantifier.
+2009-12-09 Steve Block <steveblock@google.com>
-2008-12-08 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Adam Barth.
- Reviewed by Oliver Hunt.
-
- Refactored WREC parsing so that only one piece of code needs to know
- the relaxed and somewhat weird rules for deciding how to interpret a
- non-pattern-character, in preparation for implementing those rules.
-
- Also, implemented the relaxed and somewhat weird rules for '}' and ']'.
+ Updates Android Makefiles with latest additions.
+ https://bugs.webkit.org/show_bug.cgi?id=32278
- * wrec/WREC.cpp: Reduced the regular expression size limit. Now that
- WREC handles ']' properly, it compiles fast/js/regexp-charclass-crash.html,
- which makes it hang at the old limit. (The old limit was based on the
- misimpression that the same value in PCRE limited the regular expression
- pattern size; in reality, it limited the expected compiled regular
- expression size. WREC doesn't have a way to calculate an expected
- compiled regular expression size, but this should be good enough.)
+ * Android.mk: Modified.
+ * Android.v8.wtf.mk: Modified.
- * wrec/WRECParser.cpp:
- (JSC::WREC::parsePatternCharacterSequence): Nixed this function because
- it contained a second copy of the logic for handling non-pattern-characters,
- which is about to get a lot more complicated.
+2009-12-09 Sam Weinig <sam@webkit.org>
- (JSC::WREC::PatternCharacterSequence::PatternCharacterSequence):
- (JSC::WREC::PatternCharacterSequence::size):
- (JSC::WREC::PatternCharacterSequence::append):
- (JSC::WREC::PatternCharacterSequence::flush): Helper object for generating
- an optimized sequence of pattern characters.
+ Reviewed by Gavin Barraclough.
- (JSC::WREC::Parser::parseNonCharacterEscape): Renamed to reflect the fact
- that the main parseAlternative loop handles character escapes.
+ Fix a bug found while trying to compile JavaScriptCore with clang++.
- (JSC::WREC::Parser::parseAlternative): Moved pattern character sequence
- logic from parsePatternCharacterSequence to here, using
- PatternCharacterSequence to help with the details.
+ * yarr/RegexPattern.h:
+ (JSC::Yarr::PatternTerm::PatternTerm): Don't self assign here. Use false instead.
- * wrec/WRECParser.h: Updated for renames.
+2009-12-09 Anders Carlsson <andersca@apple.com>
-2008-12-08 Alexey Proskuryakov <ap@webkit.org>
+ Reviewed by Sam Weinig.
- Reviewed by Geoff Garen.
+ Attempt to fix the Windows build.
+
+ * wtf/FastMalloc.h:
- <rdar://problem/6166088> Give JSGlobalContextCreate a behavior that is concurrency aware,
- and un-deprecate it
+2009-12-09 Anders Carlsson <andersca@apple.com>
- * API/JSContextRef.cpp: (JSGlobalContextCreate):
- * API/JSContextRef.h:
- Use a unique context group for the context, unless the application was linked against old
- JavaScriptCore.
+ Reviewed by Sam Weinig.
-2008-12-08 Sam Weinig <sam@webkit.org>
+ Fix some things found while trying to compile JavaScriptCore with clang++.
- Reviewed by Cameron Zwarich.
+ * wtf/FastMalloc.h:
+ Add correct exception specifications for the allocation/deallocation operators.
+
+ * wtf/Vector.h:
+ * wtf/VectorTraits.h:
+ Fix a bunch of struct/class mismatches.
- Fix for <rdar://problem/6428332> Remove the CTI return address table from CodeBlock
+2009-12-08 Maciej Stachowiak <mjs@apple.com>
- Step 1:
+ Reviewed by Darin Adler.
- Remove use of jitReturnAddressVPCMap when looking for vPC to store Structures
- in for cached lookup. Instead, use the offset in the StructureStubInfo that is
- already required.
+ move code generation portions of Nodes.cpp to bytecompiler directory
+ https://bugs.webkit.org/show_bug.cgi?id=32284
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::dumpStatistics): Fix extraneous semicolon.
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::tryCTICachePutByID):
- (JSC::Interpreter::tryCTICacheGetByID):
- (JSC::Interpreter::cti_op_get_by_id_self_fail):
- (JSC::Interpreter::cti_op_get_by_id_proto_list):
- * jit/JIT.h:
- (JSC::JIT::compileGetByIdSelf):
- (JSC::JIT::compileGetByIdProto):
- (JSC::JIT::compileGetByIdChain):
- (JSC::JIT::compilePutByIdReplace):
- (JSC::JIT::compilePutByIdTransition):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::patchGetByIdSelf):
- (JSC::JIT::patchPutByIdReplace):
- (JSC::JIT::privateCompilePatchGetArrayLength): Remove extra call to getStubInfo.
- (JSC::JIT::privateCompileGetByIdSelf):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdChain):
- (JSC::JIT::privateCompilePutByIdReplace):
+ * bytecompiler/NodesCodegen.cpp: Copied from parser/Nodes.cpp. Removed parts that
+ are not about codegen.
+ * parser/Nodes.cpp: Removed everything that is about codegen.
-2008-12-08 Gavin Barraclough <barraclough@apple.com>
+ Update build systems:
+
+ * Android.mk:
+ * GNUmakefile.am:
+ * JavaScriptCore.gypi:
+ * JavaScriptCore.pri:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * JavaScriptCoreSources.bkl:
- Reviewed by Oliver Hunt.
+2009-12-08 Kevin Watters <kevinwatters@gmail.com>
- Port the op_j?n?eq_null JIT code generation to use the MacroAssembler,
- and clean up slightly at the same time. The 'j' forms currently compare,
- then set a register, then compare again, then branch. Branch directly on
- the result of the first compare.
+ Reviewed by Kevin Ollivier.
- Around a 1% progression on deltablue, crypto & early boyer, for about 1/2%
- overall on v8-tests.
+ [wx] Mac plugins support.
+
+ https://bugs.webkit.org/show_bug.cgi?id=32236
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdSlowCase):
+ * wtf/Platform.h:
-2008-12-08 Gavin Barraclough <barraclough@apple.com>
+2009-12-08 Dmitry Titov <dimich@chromium.org>
- Reviewed by Geoff Garen.
+ Rubber-stamped by David Levin.
- Expand MacroAssembler to support more operations, required by the JIT.
+ Revert and reopen "Add asserts to RefCounted to make sure ref/deref happens on the right thread."
+ It may have caused massive increase of reported leaks on the bots.
+ https://bugs.webkit.org/show_bug.cgi?id=31639
- Generally adds more operations and permutations of operands to the existing
- interface. Rename 'jset' to 'jnz' and 'jnset' to 'jz', which seem clearer,
- and require that immediate pointer operands (though not pointer addresses to
- load and store instructions) are wrapped in a ImmPtr() type, akin to Imm32().
+ * GNUmakefile.am:
+ * JavaScriptCore.gypi:
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * runtime/Structure.cpp:
+ (JSC::Structure::Structure):
+ * wtf/RefCounted.h:
+ (WTF::RefCountedBase::ref):
+ (WTF::RefCountedBase::hasOneRef):
+ (WTF::RefCountedBase::refCount):
+ (WTF::RefCountedBase::derefBase):
+ * wtf/ThreadVerifier.h: Removed.
- No performance impact.
+2009-12-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::):
- (JSC::MacroAssembler::ImmPtr::ImmPtr):
- (JSC::MacroAssembler::add32):
- (JSC::MacroAssembler::and32):
- (JSC::MacroAssembler::or32):
- (JSC::MacroAssembler::sub32):
- (JSC::MacroAssembler::xor32):
- (JSC::MacroAssembler::loadPtr):
- (JSC::MacroAssembler::load32):
- (JSC::MacroAssembler::storePtr):
- (JSC::MacroAssembler::store32):
- (JSC::MacroAssembler::poke):
- (JSC::MacroAssembler::move):
- (JSC::MacroAssembler::testImm32):
- (JSC::MacroAssembler::jae32):
- (JSC::MacroAssembler::jb32):
- (JSC::MacroAssembler::jePtr):
- (JSC::MacroAssembler::je32):
- (JSC::MacroAssembler::jnePtr):
- (JSC::MacroAssembler::jne32):
- (JSC::MacroAssembler::jnzPtr):
- (JSC::MacroAssembler::jnz32):
- (JSC::MacroAssembler::jzPtr):
- (JSC::MacroAssembler::jz32):
- (JSC::MacroAssembler::joSub32):
- (JSC::MacroAssembler::jump):
- (JSC::MacroAssembler::sete32):
- (JSC::MacroAssembler::setne32):
- (JSC::MacroAssembler::setnz32):
- (JSC::MacroAssembler::setz32):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::addl_mr):
- (JSC::X86Assembler::andl_i8r):
- (JSC::X86Assembler::cmpl_rm):
- (JSC::X86Assembler::cmpl_mr):
- (JSC::X86Assembler::cmpl_i8m):
- (JSC::X86Assembler::subl_mr):
- (JSC::X86Assembler::testl_i32m):
- (JSC::X86Assembler::xorl_i32r):
- (JSC::X86Assembler::movl_rm):
- (JSC::X86Assembler::modRm_opmsib):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitGetVirtualRegister):
- (JSC::JIT::emitPutCTIArgConstant):
- (JSC::JIT::emitPutCTIParam):
- (JSC::JIT::emitPutImmediateToCallFrameHeader):
- (JSC::JIT::emitInitRegister):
- (JSC::JIT::checkStructure):
- (JSC::JIT::emitJumpIfJSCell):
- (JSC::JIT::emitJumpIfNotJSCell):
- (JSC::JIT::emitJumpSlowCaseIfNotImmNum):
+ Reviewed by Darin Adler.
-2008-12-08 Geoffrey Garen <ggaren@apple.com>
+ Make WebKit build correctly on FreeBSD, IA64, and Alpha.
+ Based on work by Petr Salinger <Petr.Salinger@seznam.cz>,
+ and Colin Watson <cjwatson@ubuntu.com>.
- Reviewed by Sam Weinig.
-
- Fixed a bug where WREC would allow a quantifier whose minimum was
- greater than its maximum.
-
- * wrec/Quantifier.h:
- (JSC::WREC::Quantifier::Quantifier): ASSERT that the quantifier is not
- backwards.
-
- * wrec/WRECParser.cpp:
- (JSC::WREC::Parser::consumeGreedyQuantifier): Verify that the minimum
- is not greater than the maximum.
+ * wtf/Platform.h:
-2008-12-08 Eric Seidel <eric@webkit.org>
-
- Build fix only, no review.
+2009-12-08 Dmitry Titov <dimich@chromium.org>
- * JavaScriptCore.scons: add bytecode/JumpTable.cpp
+ Reviewed by Darin Adler.
+
+ Add asserts to RefCounted to make sure ref/deref happens on the right thread.
+ https://bugs.webkit.org/show_bug.cgi?id=31639
-2008-12-08 Sam Weinig <sam@webkit.org>
+ * runtime/Structure.cpp:
+ (JSC::Structure::Structure): Disable thread verification on this class since it uses addressOfCount().
+ * wtf/RefCounted.h:
+ (WTF::RefCountedBase::ref): Add ASSERT.
+ (WTF::RefCountedBase::hasOneRef): Ditto.
+ (WTF::RefCountedBase::refCount): Ditto.
+ (WTF::RefCountedBase::derefBase): Ditto.
+ (WTF::RefCountedBase::disableThreadVerification): delegate to ThreadVerifier method.
+ * wtf/ThreadVerifier.h: Added.
+ (WTF::ThreadVerifier::ThreadVerifier): New Debug-only class to verify that ref/deref of RefCounted is done on the same thread.
+ (WTF::ThreadVerifier::activate): Activates checks. Called when ref count becomes above 2.
+ (WTF::ThreadVerifier::deactivate): Deactivates checks. Called when ref count drops below 2.
+ (WTF::ThreadVerifier::disableThreadVerification): used on objects that should not be checked (StringImpl etc)
+ (WTF::ThreadVerifier::verifyThread):
+ * GNUmakefile.am: Add ThreadVerifier.h to the build file.
+ * JavaScriptCore.gypi: Ditto.
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
+ * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
- Reviewed by Geoffrey Garen.
+2009-12-08 Steve Block <steveblock@google.com>
- Patch for https://bugs.webkit.org/show_bug.cgi?id=22716
- <rdar://problem/6428315>
- Add RareData structure to CodeBlock for infrequently used auxiliary data
- members.
+ Reviewed by Adam Barth.
- Reduces memory on Membuster-head by ~.5MB
+ [Android] Adds Makefiles for Android port.
+ https://bugs.webkit.org/show_bug.cgi?id=31325
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- (JSC::CodeBlock::dumpStatistics):
- (JSC::CodeBlock::mark):
- (JSC::CodeBlock::getHandlerForVPC):
- (JSC::CodeBlock::nativeExceptionCodeForHandlerVPC):
- (JSC::CodeBlock::shrinkToFit):
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::numberOfExceptionHandlers):
- (JSC::CodeBlock::addExceptionHandler):
- (JSC::CodeBlock::exceptionHandler):
- (JSC::CodeBlock::addFunction):
- (JSC::CodeBlock::function):
- (JSC::CodeBlock::addUnexpectedConstant):
- (JSC::CodeBlock::unexpectedConstant):
- (JSC::CodeBlock::addRegExp):
- (JSC::CodeBlock::regexp):
- (JSC::CodeBlock::numberOfImmediateSwitchJumpTables):
- (JSC::CodeBlock::addImmediateSwitchJumpTable):
- (JSC::CodeBlock::immediateSwitchJumpTable):
- (JSC::CodeBlock::numberOfCharacterSwitchJumpTables):
- (JSC::CodeBlock::addCharacterSwitchJumpTable):
- (JSC::CodeBlock::characterSwitchJumpTable):
- (JSC::CodeBlock::numberOfStringSwitchJumpTables):
- (JSC::CodeBlock::addStringSwitchJumpTable):
- (JSC::CodeBlock::stringSwitchJumpTable):
- (JSC::CodeBlock::evalCodeCache):
- (JSC::CodeBlock::createRareDataIfNecessary):
+ * Android.mk: Added.
+ * Android.v8.wtf.mk: Added.
-2008-11-26 Peter Kasting <pkasting@google.com>
+2009-12-07 Dmitry Titov <dimich@chromium.org>
- Reviewed by Anders Carlsson.
+ Rubber-stamped by Darin Adler.
- https://bugs.webkit.org/show_bug.cgi?id=16814
- Allow ports to disable ActiveX->NPAPI conversion for Media Player.
- Improve handling of miscellaneous ActiveX objects.
+ Remove ENABLE_SHARED_SCRIPT flags
+ https://bugs.webkit.org/show_bug.cgi?id=32245
+ This patch was obtained by "git revert" command and then un-reverting of ChangeLog files.
- * wtf/Platform.h: Add another ENABLE(...).
+ * Configurations/FeatureDefines.xcconfig:
+ * wtf/Platform.h:
-2008-12-08 Sam Weinig <sam@webkit.org>
+2009-12-07 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Mark Rowe.
+ Reviewed by NOBODY (Windows build fixage part I).
- Add dumping of CodeBlock member structure usage.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::dumpStatistics):
- * bytecode/EvalCodeCache.h:
- (JSC::EvalCodeCache::isEmpty):
+2009-12-05 Gavin Barraclough <barraclough@apple.com>
-2008-12-08 David Kilzer <ddkilzer@apple.com>
+ Reviewed by Oliver Hunt.
- Bug 22555: Sort "children" sections in Xcode project files
+ https://bugs.webkit.org/show_bug.cgi?id=32184
+ Handle out-of-memory conditions with JSC Ropes with a JS exception, rather than crashing.
+ Switch from using fastMalloc to tryFastMalloc, pass an ExecState to record the exception on.
- <https://bugs.webkit.org/show_bug.cgi?id=22555>
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::toString):
+ * API/JSValueRef.cpp:
+ (JSValueIsStrictEqual):
+ * JavaScriptCore.exp:
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitEqualityOp):
+ * debugger/DebuggerCallFrame.cpp:
+ (JSC::DebuggerCallFrame::functionName):
+ (JSC::DebuggerCallFrame::calculatedFunctionName):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::callEval):
+ (JSC::Interpreter::privateExecute):
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * profiler/ProfileGenerator.cpp:
+ (JSC::ProfileGenerator::addParentForConsoleStart):
+ * profiler/Profiler.cpp:
+ (JSC::Profiler::willExecute):
+ (JSC::Profiler::didExecute):
+ (JSC::Profiler::createCallIdentifier):
+ (JSC::createCallIdentifierFromFunctionImp):
+ * profiler/Profiler.h:
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncIndexOf):
+ (JSC::arrayProtoFuncLastIndexOf):
+ * runtime/DateConstructor.cpp:
+ (JSC::constructDate):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::functionProtoFuncToString):
+ * runtime/InternalFunction.cpp:
+ (JSC::InternalFunction::name):
+ (JSC::InternalFunction::displayName):
+ (JSC::InternalFunction::calculatedDisplayName):
+ * runtime/InternalFunction.h:
+ * runtime/JSCell.cpp:
+ (JSC::JSCell::getString):
+ * runtime/JSCell.h:
+ (JSC::JSValue::getString):
+ * runtime/JSONObject.cpp:
+ (JSC::gap):
+ (JSC::Stringifier::Stringifier):
+ (JSC::Stringifier::appendStringifiedValue):
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::putDirectFunction):
+ (JSC::JSObject::putDirectFunctionWithoutTransition):
+ (JSC::JSObject::defineOwnProperty):
+ * runtime/JSObject.h:
+ * runtime/JSPropertyNameIterator.cpp:
+ (JSC::JSPropertyNameIterator::get):
+ * runtime/JSString.cpp:
+ (JSC::JSString::Rope::~Rope):
+ (JSC::JSString::resolveRope):
+ (JSC::JSString::getPrimitiveNumber):
+ (JSC::JSString::toNumber):
+ (JSC::JSString::toString):
+ (JSC::JSString::toThisString):
+ (JSC::JSString::getStringPropertyDescriptor):
+ * runtime/JSString.h:
+ (JSC::JSString::Rope::createOrNull):
+ (JSC::JSString::Rope::operator new):
+ (JSC::JSString::value):
+ (JSC::JSString::tryGetValue):
+ (JSC::JSString::getIndex):
+ (JSC::JSString::getStringPropertySlot):
+ (JSC::JSValue::toString):
+ * runtime/JSValue.h:
+ * runtime/NativeErrorConstructor.cpp:
+ (JSC::NativeErrorConstructor::NativeErrorConstructor):
+ * runtime/Operations.cpp:
+ (JSC::JSValue::strictEqualSlowCase):
+ * runtime/Operations.h:
+ (JSC::JSValue::equalSlowCaseInline):
+ (JSC::JSValue::strictEqualSlowCaseInline):
+ (JSC::JSValue::strictEqual):
+ (JSC::jsLess):
+ (JSC::jsLessEq):
+ (JSC::jsAdd):
+ (JSC::concatenateStrings):
+ * runtime/PropertyDescriptor.cpp:
+ (JSC::PropertyDescriptor::equalTo):
+ * runtime/PropertyDescriptor.h:
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncReplace):
+ (JSC::stringProtoFuncToLowerCase):
+ (JSC::stringProtoFuncToUpperCase):
- Reviewed by Eric Seidel.
+2009-12-07 Nikolas Zimmermann <nzimmermann@rim.com>
- * JavaScriptCore.xcodeproj/project.pbxproj: Sorted.
+ Reviewed by Holger Freyther.
-2008-12-08 Tony Chang <tony@chromium.org>
+ Turn on (SVG) Filters support, by default.
+ https://bugs.webkit.org/show_bug.cgi?id=32224
- Reviewed by Eric Seidel.
+ * Configurations/FeatureDefines.xcconfig: Enable FILTERS build flag.
- Enable Pan scrolling only when building on PLATFORM(WIN_OS)
- Previously platforms like Apple Windows WebKit, Cairo Windows WebKit,
- Wx and Chromium were enabling it explicitly, now we just turn it on
- for all WIN_OS, later platforms can turn it off as needed on Windows
- (or turn it on under Linux, etc.)
- https://bugs.webkit.org/show_bug.cgi?id=22698
+2009-12-07 Steve Falkenburg <sfalken@apple.com>
- * wtf/Platform.h:
+ Build fix. Be flexible about which version of ICU is used on Windows.
-2008-12-08 Sam Weinig <sam@webkit.org>
+ * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Add optional xcopy commands to copy ICU 4.2.
- Reviewed by Cameron Zwarich.
+2009-12-07 Maciej Stachowiak <mjs@apple.com>
- Add basic memory statistics dumping for CodeBlock.
+ Reviewed by Oliver Hunt.
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::dumpStatistics):
- (JSC::CodeBlock::CodeBlock):
- (JSC::CodeBlock::~CodeBlock):
- * bytecode/CodeBlock.h:
+ op_loop_if_less JIT codegen is broken for 64-bit
+ https://bugs.webkit.org/show_bug.cgi?id=32221
-2008-12-08 Simon Hausmann <simon.hausmann@nokia.com>
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_loop_if_false): Fix codegen in this version - test was backwards.
- Fix the Linux build with newer gcc/glibc.
+2009-12-07 Oliver Hunt <oliver@apple.com>
- * jit/ExecutableAllocatorPosix.cpp: Include unistd.h for
- getpagesize(), according to
- http://opengroup.org/onlinepubs/007908775/xsh/getpagesize.html
+ Reviewed by Maciej Stachowiak.
-2008-12-08 Simon Hausmann <simon.hausmann@nokia.com>
+ Object.create fails if properties on the descriptor are getters
+ https://bugs.webkit.org/show_bug.cgi?id=32219
- Fix the build with Qt on Windows.
+ Correctly initialise the PropertySlots with the descriptor object.
- * JavaScriptCore.pri: Compile ExecutableAllocatorWin.cpp on Windows.
+ * runtime/ObjectConstructor.cpp:
+ (JSC::toPropertyDescriptor):
-2008-12-07 Oliver Hunt <oliver@apple.com>
+2009-12-06 Maciej Stachowiak <mjs@apple.com>
- Reviewed by NOBODY (Buildfix).
+ Not reviewed, build fix.
- Fix non-WREC builds
+ Actually tested 64-bit *and* 32-bit build this time.
- * runtime/RegExp.cpp:
- (JSC::RegExp::RegExp):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_loop_if_false):
-2008-12-07 Oliver Hunt <oliver@apple.com>
+2009-12-06 Maciej Stachowiak <mjs@apple.com>
- Reviewed by NOBODY (Build fix).
+ Not reviewed, build fix.
- Put ENABLE(ASSEMBLER) guards around use of ExecutableAllocator in global data
+ Really really fix 64-bit build for prior patch (actually tested this time).
- Correct Qt and Gtk project files
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_loop_if_false):
+ (JSC::JIT::emitSlow_op_loop_if_false):
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * runtime/JSGlobalData.h:
+2009-12-06 Maciej Stachowiak <mjs@apple.com>
-2008-12-07 Oliver Hunt <oliver@apple.com>
+ Not reviewed, build fix.
- Reviewed by NOBODY (Build fix).
+ Really fix 64-bit build for prior patch.
- Add new files to other projects.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitSlow_op_jless):
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.pro:
+2009-12-06 Maciej Stachowiak <mjs@apple.com>
-2008-12-07 Oliver Hunt <oliver@apple.com>
+ Not reviewed, build fix.
- Rubber stamped by Mark Rowe.
+ Fix 64-bit build for prior patch.
- Rename ExecutableAllocatorMMAP to the more sensible ExecutableAllocatorPosix
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emitSlow_op_loop_if_less):
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * jit/ExecutableAllocator.h:
- * jit/ExecutableAllocatorPosix.cpp: Renamed from JavaScriptCore/jit/ExecutableAllocatorMMAP.cpp.
- (JSC::ExecutableAllocator::intializePageSize):
- (JSC::ExecutablePool::systemAlloc):
- (JSC::ExecutablePool::systemRelease):
+2009-12-05 Maciej Stachowiak <mjs@apple.com>
-2008-12-07 Oliver Hunt <oliver@apple.com>
+ Reviewed by Oliver Hunt.
- Reviewed by Cameron Zwarich and Sam Weinig
+ conway benchmark spends half it's time in op_less (jump fusion fails)
+ https://bugs.webkit.org/show_bug.cgi?id=32190
- <rdar://problem/6309878> Need more granular control over allocation of executable memory (21783)
- <https://bugs.webkit.org/show_bug.cgi?id=21783>
+ <1% speedup on SunSpider and V8
+ 2x speedup on "conway" benchmark
+
+ Two optimizations:
+ 1) Improve codegen for logical operators &&, || and ! in a condition context
+
+ When generating code for combinations of &&, || and !, in a
+ condition context (i.e. in an if statement or loop condition), we
+ used to produce a value, and then separately jump based on its
+ truthiness. Now we pass the false and true targets in, and let the
+ logical operators generate jumps directly. This helps in four
+ ways:
- Add a new allocator for use by the JIT that provides executable pages, so
- we can get rid of the current hack that makes the entire heap executable.
+ a) Individual clauses of a short-circuit logical operator can now
+ jump directly to the then or else clause of an if statement (or to
+ the top or exit of a loop) instead of jumping to a jump.
+
+ b) It used to be that jump fusion with the condition of the first
+ clause of a logical operator was inhibited, because the register
+ was ref'd to be used later, in the actual condition jump; this no
+ longer happens since a jump straight to the final target is
+ generated directly.
- 1-2% progression on SunSpider-v8, 1% on SunSpider. Reduces memory usage as well!
+ c) It used to be that jump fusion with the condition of the second
+ clause of a logical operator was inhibited, because there was a
+ jump target right after the second clause and before the actual
+ condition jump. But now it's no longer necessary for the first
+ clause to jump there so jump fusion is not blocked.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.vcproj/jsc/jsc.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * assembler/AssemblerBuffer.h:
- (JSC::AssemblerBuffer::size):
- (JSC::AssemblerBuffer::executableCopy):
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::size):
- (JSC::MacroAssembler::copyCode):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::size):
- (JSC::X86Assembler::executableCopy):
+ d) We avoid generating excess mov statements in some cases.
+
+ As a concrete example this source:
+
+ if (!((x < q && y < q) || (t < q && z < q))) {
+ // ...
+ }
+
+ Used to generate this bytecode:
+
+ [ 34] less r1, r-15, r-19
+ [ 38] jfalse r1, 7(->45)
+ [ 41] less r1, r-16, r-19
+ [ 45] jtrue r1, 14(->59)
+ [ 48] less r1, r-17, r-19
+ [ 52] jfalse r1, 7(->59)
+ [ 55] less r1, r-18, r-19
+ [ 59] jtrue r1, 17(->76)
+
+ And now generates this bytecode (also taking advantage of the second optimization below):
+
+ [ 34] jnless r-15, r-19, 8(->42)
+ [ 38] jless r-16, r-19, 26(->64)
+ [ 42] jnless r-17, r-19, 8(->50)
+ [ 46] jless r-18, r-19, 18(->64)
+
+ Note the jump fusion and the fact that there's less jump
+ indirection - three of the four jumps go straight to the target
+ clause instead of indirecting through another jump.
+
+ 2) Implement jless opcode to take advantage of the above, since we'll now often generate
+ a less followed by a jtrue where fusion is not forbidden.
+
+ * parser/Nodes.h:
+ (JSC::ExpressionNode::hasConditionContextCodegen): Helper function to determine
+ whether a node supports special conditional codegen. Return false as this is the default.
+ (JSC::ExpressionNode::emitBytecodeInConditionContext): Assert not reached - only really
+ defined for nodes that do have conditional codegen.
+ (JSC::UnaryOpNode::expr): Add const version.
+ (JSC::LogicalNotNode::hasConditionContextCodegen): Returne true only if subexpression
+ supports it.
+ (JSC::LogicalOpNode::hasConditionContextCodegen): Return true.
+ * parser/Nodes.cpp:
+ (JSC::LogicalNotNode::emitBytecodeInConditionContext): Implemented - just swap
+ the true and false targets for the child node.
+ (JSC::LogicalOpNode::emitBytecodeInConditionContext): Implemented - handle jumps
+ directly, improving codegen quality. Also handles further nested conditional codegen.
+ (JSC::ConditionalNode::emitBytecode): Use condition context codegen when available.
+ (JSC::IfNode::emitBytecode): ditto
+ (JSC::IfElseNode::emitBytecode): ditto
+ (JSC::DoWhileNode::emitBytecode): ditto
+ (JSC::WhileNode::emitBytecode): ditto
+ (JSC::ForNode::emitBytecode): ditto
+
+ * bytecode/Opcode.h:
+ - Added loop_if_false opcode - needed now that falsey jumps can be backwards.
+ - Added jless opcode to take advantage of new fusion opportunities.
* bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::~CodeBlock):
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::executablePool):
- (JSC::CodeBlock::setExecutablePool):
- * bytecode/Instruction.h:
- (JSC::PolymorphicAccessStructureList::derefStructures):
+ (JSC::CodeBlock::dump): Handle above.
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitJumpIfTrue): Add peephole for less + jtrue ==> jless.
+ (JSC::BytecodeGenerator::emitJumpIfFalse): Add handling of backwrds falsey jumps.
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::emitNodeInConditionContext): Wrapper to handle tracking of
+ overly deep expressions etc.
* interpreter/Interpreter.cpp:
- (JSC::Interpreter::~Interpreter):
- * interpreter/Interpreter.h:
- * jit/ExecutableAllocator.cpp: Added.
- * jit/ExecutableAllocator.h: Added.
- (JSC::ExecutablePool::create):
- (JSC::ExecutablePool::alloc):
- (JSC::ExecutablePool::~ExecutablePool):
- (JSC::ExecutablePool::available):
- (JSC::ExecutablePool::ExecutablePool):
- (JSC::ExecutablePool::poolAllocate):
- (JSC::ExecutableAllocator::ExecutableAllocator):
- (JSC::ExecutableAllocator::poolForSize):
- (JSC::ExecutablePool::sizeForAllocation):
- * jit/ExecutableAllocatorMMAP.cpp: Added.
- (JSC::ExecutableAllocator::intializePageSize):
- (JSC::ExecutablePool::systemAlloc):
- (JSC::ExecutablePool::systemRelease):
- * jit/ExecutableAllocatorWin.cpp: Added.
- (JSC::ExecutableAllocator::intializePageSize):
- (JSC::ExecutablePool::systemAlloc):
- (JSC::ExecutablePool::systemRelease):
+ (JSC::Interpreter::privateExecute): Implement the two new opcodes (loop_if_false, jless).
* jit/JIT.cpp:
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
+ (JSC::JIT::privateCompileMainPass): Implement JIT support for the two new opcodes.
+ (JSC::JIT::privateCompileSlowCases): ditto
* jit/JIT.h:
- (JSC::JIT::compileCTIMachineTrampolines):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- (JSC::JIT::privateCompileGetByIdSelf):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdSelfList):
- (JSC::JIT::privateCompileGetByIdProtoList):
- (JSC::JIT::privateCompileGetByIdChainList):
- (JSC::JIT::privateCompileGetByIdChain):
- (JSC::JIT::privateCompilePutByIdReplace):
- * parser/Nodes.cpp:
- (JSC::RegExpNode::emitBytecode):
- * runtime/JSGlobalData.h:
- (JSC::JSGlobalData::poolForSize):
- * runtime/RegExp.cpp:
- (JSC::RegExp::RegExp):
- (JSC::RegExp::create):
- (JSC::RegExp::~RegExp):
- * runtime/RegExp.h:
- * runtime/RegExpConstructor.cpp:
- (JSC::constructRegExp):
- * runtime/RegExpPrototype.cpp:
- (JSC::regExpProtoFuncCompile):
- * runtime/StringPrototype.cpp:
- (JSC::stringProtoFuncMatch):
- (JSC::stringProtoFuncSearch):
- * wrec/WREC.cpp:
- (JSC::WREC::Generator::compileRegExp):
- * wrec/WRECGenerator.h:
- * wtf/FastMalloc.cpp:
- * wtf/FastMalloc.h:
- * wtf/TCSystemAlloc.cpp:
- (TryMmap):
- (TryVirtualAlloc):
- (TryDevMem):
- (TCMalloc_SystemRelease):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_jless):
+ (JSC::JIT::emitSlow_op_jless): ditto
+ (JSC::JIT::emitBinaryDoubleOp): ditto
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emitSlow_op_loop_if_less): ditto
+ (JSC::JIT::emit_op_loop_if_false): ditto
+ (JSC::JIT::emitSlow_op_loop_if_false): ditto
+ * jit/JITStubs.cpp:
+ * jit/JITStubs.h:
+ (JSC::):
-2008-12-06 Sam Weinig <sam@webkit.org>
+2009-12-04 Kent Hansen <kent.hansen@nokia.com>
- Fix the Gtk build.
+ Reviewed by Darin Adler.
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compilePutByIdHotPath):
+ JavaScript delete operator should return false for string properties
+ https://bugs.webkit.org/show_bug.cgi?id=32012
-2008-12-06 Sam Weinig <sam@webkit.org>
+ * runtime/StringObject.cpp:
+ (JSC::StringObject::deleteProperty):
- Reviewed by Cameron Zwarich,
+2009-12-03 Drew Wilson <atwilson@chromium.org>
- Move CodeBlock constructor into the .cpp file.
+ Rolled back r51633 because it causes a perf regression in Chromium.
- Sunspider reports a .7% progression, but I can only assume this
- is noise.
+ * wtf/Platform.h:
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::CodeBlock):
- * bytecode/CodeBlock.h:
+2009-12-03 Gavin Barraclough <barraclough@apple.com>
-2008-12-06 Sam Weinig <sam@webkit.org>
+ Try and fix the Windows build.
- Reviewed by Cameron Zwarich.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a symbol that should be exported.
- Split JumpTable code into its own file.
+2009-12-03 Mark Rowe <mrowe@apple.com>
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * bytecode/CodeBlock.cpp:
- * bytecode/CodeBlock.h:
- * bytecode/JumpTable.cpp: Copied from bytecode/CodeBlock.cpp.
- * bytecode/JumpTable.h: Copied from bytecode/CodeBlock.h.
+ Try and fix the Mac build.
-2008-12-05 Sam Weinig <sam@webkit.org>
+ * JavaScriptCore.exp: Export a symbol that should be exported.
- Reviewed by Cameron Zwarich.
+2009-12-03 Oliver Hunt <oliver@apple.com>
- Fix for https://bugs.webkit.org/show_bug.cgi?id=22715
- Encapsulate more CodeBlock members in preparation
- of moving some of them to a rare data structure.
+ Reviewed by Gavin Barraclough.
- * bytecode/CodeBlock.cpp:
- (JSC::locationForOffset):
- (JSC::printConditionalJump):
- (JSC::printGetByIdOp):
- (JSC::printPutByIdOp):
- (JSC::CodeBlock::printStructure):
- (JSC::CodeBlock::printStructures):
- (JSC::CodeBlock::dump):
- (JSC::CodeBlock::~CodeBlock):
- (JSC::CodeBlock::unlinkCallers):
- (JSC::CodeBlock::derefStructures):
- (JSC::CodeBlock::refStructures):
- (JSC::CodeBlock::mark):
- (JSC::CodeBlock::getHandlerForVPC):
- (JSC::CodeBlock::nativeExceptionCodeForHandlerVPC):
- (JSC::CodeBlock::lineNumberForVPC):
- (JSC::CodeBlock::expressionRangeForVPC):
- (JSC::CodeBlock::shrinkToFit):
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::CodeBlock):
- (JSC::CodeBlock::addCaller):
- (JSC::CodeBlock::removeCaller):
- (JSC::CodeBlock::isKnownNotImmediate):
- (JSC::CodeBlock::isConstantRegisterIndex):
- (JSC::CodeBlock::getConstant):
- (JSC::CodeBlock::isTemporaryRegisterIndex):
- (JSC::CodeBlock::getStubInfo):
- (JSC::CodeBlock::getCallLinkInfo):
- (JSC::CodeBlock::instructions):
- (JSC::CodeBlock::setJITCode):
- (JSC::CodeBlock::jitCode):
- (JSC::CodeBlock::ownerNode):
- (JSC::CodeBlock::setGlobalData):
- (JSC::CodeBlock::setThisRegister):
- (JSC::CodeBlock::thisRegister):
- (JSC::CodeBlock::setNeedsFullScopeChain):
- (JSC::CodeBlock::needsFullScopeChain):
- (JSC::CodeBlock::setUsesEval):
- (JSC::CodeBlock::usesEval):
- (JSC::CodeBlock::setUsesArguments):
- (JSC::CodeBlock::usesArguments):
- (JSC::CodeBlock::codeType):
- (JSC::CodeBlock::source):
- (JSC::CodeBlock::sourceOffset):
- (JSC::CodeBlock::addGlobalResolveInstruction):
- (JSC::CodeBlock::numberOfPropertyAccessInstructions):
- (JSC::CodeBlock::addPropertyAccessInstruction):
- (JSC::CodeBlock::propertyAccessInstruction):
- (JSC::CodeBlock::numberOfCallLinkInfos):
- (JSC::CodeBlock::addCallLinkInfo):
- (JSC::CodeBlock::callLinkInfo):
- (JSC::CodeBlock::numberOfJumpTargets):
- (JSC::CodeBlock::addJumpTarget):
- (JSC::CodeBlock::jumpTarget):
- (JSC::CodeBlock::lastJumpTarget):
- (JSC::CodeBlock::numberOfExceptionHandlers):
- (JSC::CodeBlock::addExceptionHandler):
- (JSC::CodeBlock::exceptionHandler):
- (JSC::CodeBlock::addExpressionInfo):
- (JSC::CodeBlock::numberOfLineInfos):
- (JSC::CodeBlock::addLineInfo):
- (JSC::CodeBlock::lastLineInfo):
- (JSC::CodeBlock::jitReturnAddressVPCMap):
- (JSC::CodeBlock::numberOfIdentifiers):
- (JSC::CodeBlock::addIdentifier):
- (JSC::CodeBlock::identifier):
- (JSC::CodeBlock::numberOfConstantRegisters):
- (JSC::CodeBlock::addConstantRegister):
- (JSC::CodeBlock::constantRegister):
- (JSC::CodeBlock::addFunction):
- (JSC::CodeBlock::function):
- (JSC::CodeBlock::addFunctionExpression):
- (JSC::CodeBlock::functionExpression):
- (JSC::CodeBlock::addUnexpectedConstant):
- (JSC::CodeBlock::unexpectedConstant):
- (JSC::CodeBlock::addRegExp):
- (JSC::CodeBlock::regexp):
- (JSC::CodeBlock::symbolTable):
- (JSC::CodeBlock::evalCodeCache):
- New inline setters/getters.
+ REGRESSION(4.0.3-48777): Crash in JSC::ExecState::propertyNames() (Debug-only?)
+ https://bugs.webkit.org/show_bug.cgi?id=32133
+
+ Work around odd GCC-ism and correct the scopechain for use by
+ calls made while a cachedcall is active on the callstack.
+
+ * interpreter/CachedCall.h:
+ (JSC::CachedCall::newCallFrame):
+ * runtime/JSArray.cpp:
+ (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncReplace):
+
+2009-12-03 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by Oliver "Brraaaaiiiinnnnnzzzzzzzz" Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=32136
+ Add a rope representation to JSString. Presently JSString always holds its data in UString form.
+ Instead, allow the result of a string concatenation to be represented in a tree form - with a
+ variable sized, reference-counted rope node retaining a set of UString::Reps (or other rope nopes).
+
+ Strings must still currently be resolved down to a flat UString representation before being used,
+ but by holding the string in a rope representation during construction we can avoid copying data
+ until we know the final size of the string.
+
+ ~2% progression on SunSpider (~25% on date-format-xparb, ~20% on string-validate-input).
+
+ * JavaScriptCore.exp:
+
+ - Update exports.
- (JSC::ProgramCodeBlock::ProgramCodeBlock):
- (JSC::ProgramCodeBlock::~ProgramCodeBlock):
- (JSC::ProgramCodeBlock::clearGlobalObject):
- * bytecode/SamplingTool.cpp:
- (JSC::ScopeSampleRecord::sample):
- (JSC::SamplingTool::dump):
- * bytecompiler/BytecodeGenerator.cpp:
- * bytecompiler/BytecodeGenerator.h:
- * bytecompiler/Label.h:
- * interpreter/CallFrame.cpp:
* interpreter/Interpreter.cpp:
- * jit/JIT.cpp:
- * jit/JITCall.cpp:
- * jit/JITInlineMethods.h:
- * jit/JITPropertyAccess.cpp:
- * parser/Nodes.cpp:
- * runtime/Arguments.h:
- * runtime/ExceptionHelpers.cpp:
- * runtime/JSActivation.cpp:
- * runtime/JSActivation.h:
- * runtime/JSGlobalObject.cpp:
- Change direct access to use new getter/setters.
+ (JSC::Interpreter::privateExecute):
+
+ - Make use of new JSString::length() method to avoid prematurely resolving ropes.
+
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+
+ - Switch the string length trampoline to read the length directly from JSString::m_length,
+ rather than from the JSString's UString::Rep's 'len' property.
+
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+
+ - Modify op_add such that addition of two strings, where either or both strings are already
+ in rope representation, produces a rope as a result.
+
+ * runtime/JSString.cpp:
+ (JSC::JSString::Rope::~Rope):
+ (JSC::copyChars):
+ (JSC::JSString::resolveRope):
+ (JSC::JSString::getPrimitiveNumber):
+ (JSC::JSString::toBoolean):
+ (JSC::JSString::toNumber):
+ (JSC::JSString::toString):
+ (JSC::JSString::toThisString):
+ (JSC::JSString::getStringPropertyDescriptor):
+ * runtime/JSString.h:
+ (JSC::JSString::Rope::Fiber::Fiber):
+ (JSC::JSString::Rope::Fiber::destroy):
+ (JSC::JSString::Rope::Fiber::isRope):
+ (JSC::JSString::Rope::Fiber::rope):
+ (JSC::JSString::Rope::Fiber::string):
+ (JSC::JSString::Rope::create):
+ (JSC::JSString::Rope::initializeFiber):
+ (JSC::JSString::Rope::ropeLength):
+ (JSC::JSString::Rope::stringLength):
+ (JSC::JSString::Rope::fibers):
+ (JSC::JSString::Rope::Rope):
+ (JSC::JSString::Rope::operator new):
+ (JSC::JSString::JSString):
+ (JSC::JSString::value):
+ (JSC::JSString::length):
+ (JSC::JSString::isRope):
+ (JSC::JSString::rope):
+ (JSC::JSString::string):
+ (JSC::JSString::canGetIndex):
+ (JSC::jsSingleCharacterSubstring):
+ (JSC::JSString::getIndex):
+ (JSC::jsSubstring):
+ (JSC::JSString::getStringPropertySlot):
+
+ - Add rope form.
+
+ * runtime/Operations.h:
+ (JSC::jsAdd):
+ (JSC::concatenateStrings):
-2008-12-05 Gavin Barraclough <barraclough@apple.com>
+ - Update string concatenation, and addition of ropes, to produce ropes.
- Reviewed by Oliver Hunt.
+ * runtime/StringObject.cpp:
+ (JSC::StringObject::getOwnPropertyNames):
- Prevent GCC4.2 from hanging when trying to compile Interpreter.cpp.
- Added "-fno-var-tracking" compiler flag.
+ - Make use of new JSString::length() method to avoid prematurely resolving ropes.
- https://bugs.webkit.org/show_bug.cgi?id=22704
+2009-11-23 Jeremy Moskovich <jeremy@chromium.org>
- * JavaScriptCore.xcodeproj/project.pbxproj:
+ Reviewed by Eric Seidel.
-2008-12-05 Gavin Barraclough <barraclough@apple.com>
+ Switch Chrome/Mac to use Core Text APIs rather than ATSUI APIs.
+ https://bugs.webkit.org/show_bug.cgi?id=31802
- Reviewed by Oliver Hunt.
+ No test since this is already covered by existing pixel tests.
- Ordering of branch operands in MacroAssembler in unnecessarily inconsistent.
+ * wtf/Platform.h: #define USE_CORE_TEXT for Chrome/Mac.
- je, jg etc take an immediate operand as the second argument, but for the
- equality branches (je, jne) the immediate operand was the first argument. This
- was unnecessarily inconsistent. Change je, jne methods to take the immediate
- as the second argument.
+2009-12-02 Oliver Hunt <oliver@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=22703
+ Reviewed by Gavin Barraclough.
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::je32):
- (JSC::MacroAssembler::jne32):
- * jit/JIT.cpp:
- (JSC::JIT::compileOpStrictEq):
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateEnter):
- (JSC::WREC::Generator::generateNonGreedyQuantifier):
- (JSC::WREC::Generator::generateGreedyQuantifier):
- (JSC::WREC::Generator::generatePatternCharacterPair):
- (JSC::WREC::Generator::generatePatternCharacter):
- (JSC::WREC::Generator::generateCharacterClassInvertedRange):
- (JSC::WREC::Generator::generateCharacterClassInverted):
- (JSC::WREC::Generator::generateAssertionBOL):
- (JSC::WREC::Generator::generateAssertionWordBoundary):
+ Add files missed in prior patch.
-2008-12-05 Gavin Barraclough <barraclough@apple.com>
+ * runtime/JSZombie.cpp:
+ (JSC::):
+ (JSC::JSZombie::leakedZombieStructure):
+ * runtime/JSZombie.h: Added.
+ (JSC::JSZombie::JSZombie):
+ (JSC::JSZombie::isZombie):
+ (JSC::JSZombie::classInfo):
+ (JSC::JSZombie::isGetterSetter):
+ (JSC::JSZombie::isAPIValueWrapper):
+ (JSC::JSZombie::isPropertyNameIterator):
+ (JSC::JSZombie::getCallData):
+ (JSC::JSZombie::getConstructData):
+ (JSC::JSZombie::getUInt32):
+ (JSC::JSZombie::toPrimitive):
+ (JSC::JSZombie::getPrimitiveNumber):
+ (JSC::JSZombie::toBoolean):
+ (JSC::JSZombie::toNumber):
+ (JSC::JSZombie::toString):
+ (JSC::JSZombie::toObject):
+ (JSC::JSZombie::markChildren):
+ (JSC::JSZombie::put):
+ (JSC::JSZombie::deleteProperty):
+ (JSC::JSZombie::toThisObject):
+ (JSC::JSZombie::toThisString):
+ (JSC::JSZombie::toThisJSString):
+ (JSC::JSZombie::getJSNumber):
+ (JSC::JSZombie::getOwnPropertySlot):
+
+2009-12-02 Oliver Hunt <oliver@apple.com>
- Reviewed by Geoff Garen.
+ Reviewed by Gavin Barraclough.
- Second tranche of porting JIT.cpp to MacroAssembler interface.
+ Add zombies to JSC
+ https://bugs.webkit.org/show_bug.cgi?id=32103
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::mul32):
- (JSC::MacroAssembler::jl32):
- (JSC::MacroAssembler::jnzSub32):
- (JSC::MacroAssembler::joAdd32):
- (JSC::MacroAssembler::joMul32):
- (JSC::MacroAssembler::jzSub32):
- * jit/JIT.cpp:
- (JSC::JIT::emitSlowScriptCheck):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitJumpIfNotJSCell):
- (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
+ Add a compile time flag to make the JSC collector replace "unreachable"
+ objects with zombie objects. The zombie object is a JSCell subclass that
+ ASSERTs on any attempt to use the JSCell methods. In addition there are
+ a number of additional assertions in bottleneck code to catch zombie usage
+ as quickly as possible.
-2008-12-05 David Kilzer <ddkilzer@apple.com>
+ Grrr. Argh. Brains.
- Bug 22609: Provide a build-time choice when generating hash tables for properties of built-in DOM objects
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * interpreter/Register.h:
+ (JSC::Register::Register):
+ * runtime/ArgList.h:
+ (JSC::MarkedArgumentBuffer::append):
+ (JSC::ArgList::ArgList):
+ * runtime/Collector.cpp:
+ (JSC::Heap::destroy):
+ (JSC::Heap::sweep):
+ * runtime/Collector.h:
+ * runtime/JSCell.h:
+ (JSC::JSCell::isZombie):
+ (JSC::JSValue::isZombie):
+ * runtime/JSValue.h:
+ (JSC::JSValue::decode):
+ (JSC::JSValue::JSValue):
+ * wtf/Platform.h:
- <https://bugs.webkit.org/show_bug.cgi?id=22609>
- <rdar://problem/6331749>
+2009-12-01 Jens Alfke <snej@chromium.org>
Reviewed by Darin Adler.
- Initial patch by Yosen Lin. Adapted for ToT WebKit by David Kilzer.
+ Added variants of find/contains/add that allow a foreign key type to be used.
+ This will allow AtomicString-keyed maps to be queried by C string without
+ having to create a temporary AtomicString (see HTTPHeaderMap.)
+ The code for this is adapted from the equivalent in HashSet.h.
- Added back the code that generates a "compact" hash (instead of a
- perfect hash) as a build-time option using the
- ENABLE(PERFECT_HASH_SIZE) macro as defined in Lookup.h.
+ * wtf/HashMap.h:
+ (WTF::HashMap::find):
+ (WTF::HashMap::contains):
+ (WTF::HashMap::add):
+ * wtf/HashSet.h: Changed "method" to "function member" in a comment.
- * create_hash_table: Rename variables to differentiate perfect hash
- values from compact hash values. Added back code to compute compact
- hash tables. Generate both hash table sizes and emit
- conditionalized code based on ENABLE(PERFECT_HASH_SIZE).
- * runtime/Lookup.cpp:
- (JSC::HashTable::createTable): Added version of createTable() for
- use with compact hash tables.
- (JSC::HashTable::deleteTable): Updated to work with compact hash
- tables.
- * runtime/Lookup.h: Defined ENABLE(PERFECT_HASH_SIZE) macro here.
- (JSC::HashEntry::initialize): Set m_next to zero when using compact
- hash tables.
- (JSC::HashEntry::setNext): Added for compact hash tables.
- (JSC::HashEntry::next): Added for compact hash tables.
- (JSC::HashTable::entry): Added version of entry() for use with
- compact hash tables.
- * runtime/Structure.cpp:
- (JSC::Structure::getEnumerablePropertyNames): Updated to work with
- compact hash tables.
+2009-12-01 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-2008-12-05 Gavin Barraclough <barraclough@apple.com>
+ Revert 51551 because it broke GTK+.
- Reviewed by Geoff Garen.
+ * wtf/Platform.h:
- Remove redundant calls to JIT::emitSlowScriptCheck.
- This is checked in the hot path, so is not needed on the slow path - and the code
- was being planted before the start of the slow case, so was completely unreachable!
+2009-11-30 Gavin Barraclough <barraclough@apple.com>
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileSlowCases):
+ Windows Build fix. Reviewed by NOBODY.
-2008-12-05 Gavin Barraclough <barraclough@apple.com>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+
+2009-11-24 Gavin Barraclough <barraclough@apple.com>
Reviewed by Geoff Garen.
- Move JIT::compileOpStrictEq to MacroAssembler interface.
+ Bug 31859 - Make world selection for JSC IsolatedWorlds automagical.
- The rewrite also looks like a small (<1%) performance progression.
+ WebCore presently has to explicitly specify the world before entering into JSC,
+ which is a little fragile (particularly since property access via a
+ getter/setter might invoke execution). Instead derive the current world from
+ the lexical global object.
+
+ Remove the temporary duct tape of willExecute/didExecute virtual hooks on the JSGlobalData::ClientData - these are no longer necessary.
- https://bugs.webkit.org/show_bug.cgi?id=22697
+ * API/JSBase.cpp:
+ (JSEvaluateScript):
+ * API/JSObjectRef.cpp:
+ (JSObjectCallAsFunction):
+ * JavaScriptCore.exp:
+ * runtime/JSGlobalData.cpp:
+ * runtime/JSGlobalData.h:
- * jit/JIT.cpp:
- (JSC::JIT::compileOpStrictEq):
- (JSC::JIT::privateCompileSlowCases):
- * jit/JIT.h:
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitJumpIfJSCell):
- (JSC::JIT::emitJumpSlowCaseIfJSCell):
+2009-11-30 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-2008-12-05 Gavin Barraclough <barraclough@apple.com>
+ Reviewed by Kenneth Rohde Christiansen.
- Reviewed by Geoff Garen.
+ [Qt] Remove obsolete PLATFORM(KDE) code
+ https://bugs.webkit.org/show_bug.cgi?id=31958
- Remove m_assembler from MacroAssembler::Jump.
- Keeping a pointer allowed for some syntactic sugar - "link()" looks nicer
- than "link(this)". But maintaining this doubles the size of Jump, which
- is even more unfortunate for the JIT, since there are many large structures
- holding JmpSrcs. Probably best to remove it.
+ KDE is now using unpatched QtWebKit.
- https://bugs.webkit.org/show_bug.cgi?id=22693
+ * parser/Lexer.cpp: Remove obsolete KDE_USE_FINAL guard
+ * wtf/Platform.h: Remove PLATFORM(KDE) definition and code
+ section that is guarded with it.
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::Jump::Jump):
- (JSC::MacroAssembler::Jump::link):
- (JSC::MacroAssembler::Jump::linkTo):
- (JSC::MacroAssembler::JumpList::link):
- (JSC::MacroAssembler::JumpList::linkTo):
- (JSC::MacroAssembler::jae32):
- (JSC::MacroAssembler::je32):
- (JSC::MacroAssembler::je16):
- (JSC::MacroAssembler::jg32):
- (JSC::MacroAssembler::jge32):
- (JSC::MacroAssembler::jl32):
- (JSC::MacroAssembler::jle32):
- (JSC::MacroAssembler::jnePtr):
- (JSC::MacroAssembler::jne32):
- (JSC::MacroAssembler::jnset32):
- (JSC::MacroAssembler::jset32):
- (JSC::MacroAssembler::jump):
- (JSC::MacroAssembler::jzSub32):
- (JSC::MacroAssembler::joAdd32):
- (JSC::MacroAssembler::call):
- * wrec/WREC.cpp:
- (JSC::WREC::Generator::compileRegExp):
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateEnter):
- (JSC::WREC::Generator::generateBackreferenceQuantifier):
- (JSC::WREC::Generator::generateNonGreedyQuantifier):
- (JSC::WREC::Generator::generateGreedyQuantifier):
- (JSC::WREC::Generator::generatePatternCharacter):
- (JSC::WREC::Generator::generateCharacterClassInvertedRange):
- (JSC::WREC::Generator::generateCharacterClassInverted):
- (JSC::WREC::Generator::generateCharacterClass):
- (JSC::WREC::Generator::generateParenthesesAssertion):
- (JSC::WREC::Generator::generateParenthesesInvertedAssertion):
- (JSC::WREC::Generator::generateParenthesesNonGreedy):
- (JSC::WREC::Generator::generateParenthesesResetTrampoline):
- (JSC::WREC::Generator::generateAssertionBOL):
- (JSC::WREC::Generator::generateAssertionEOL):
- (JSC::WREC::Generator::generateAssertionWordBoundary):
- (JSC::WREC::Generator::generateBackreference):
- (JSC::WREC::Generator::terminateAlternative):
- (JSC::WREC::Generator::terminateDisjunction):
- * wrec/WRECParser.h:
-
-2008-12-05 Gavin Barraclough <barraclough@apple.com>
+2009-11-30 Jan-Arve Sæther <jan-arve.saether@nokia.com>
- Reviewed by Geoffrey Garen.
+ Reviewed by Simon Hausmann.
- Simplify JIT generated checks for timeout code, by moving more work into the C function.
- https://bugs.webkit.org/show_bug.cgi?id=22688
+ [Qt] Fix compilation with win32-icc
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::cti_timeout_check):
- * interpreter/Interpreter.h:
- * jit/JIT.cpp:
- (JSC::JIT::emitSlowScriptCheck):
+ The Intel compiler does not support the __has_trivial_constructor type
+ trait. The Intel Compiler can report itself as _MSC_VER >= 1400. The
+ reason for that is that the Intel Compiler depends on the Microsoft
+ Platform SDK, and in order to try to be "fully" MS compatible it will
+ "pretend" to be the same MS compiler as was shipped with the MS PSDK.
+ (Thus, compiling with win32-icc with VC8 SDK will make the source code
+ "think" the compiler at hand supports this type trait).
-2008-12-05 Sam Weinig <sam@webkit.org>
+ * wtf/TypeTraits.h:
- Reviewed by Geoffrey Garen.
+2009-11-29 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- Encapsulate access to jump tables in the CodeBlock in preparation
- of moving them to a rare data structure.
+ Reviewed by Eric Seidel.
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- (JSC::CodeBlock::shrinkToFit):
- * bytecode/CodeBlock.h:
- (JSC::CodeBlock::numberOfImmediateSwitchJumpTables):
- (JSC::CodeBlock::addImmediateSwitchJumpTable):
- (JSC::CodeBlock::immediateSwitchJumpTable):
- (JSC::CodeBlock::numberOfCharacterSwitchJumpTables):
- (JSC::CodeBlock::addCharacterSwitchJumpTable):
- (JSC::CodeBlock::characterSwitchJumpTable):
- (JSC::CodeBlock::numberOfStringSwitchJumpTables):
- (JSC::CodeBlock::addStringSwitchJumpTable):
- (JSC::CodeBlock::stringSwitchJumpTable):
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::generate):
- (JSC::BytecodeGenerator::endSwitch):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::cti_op_switch_imm):
- (JSC::Interpreter::cti_op_switch_char):
- (JSC::Interpreter::cti_op_switch_string):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
+ [Qt] Mac build has JIT disabled
+ https://bugs.webkit.org/show_bug.cgi?id=31828
-2008-12-05 Adam Roben <aroben@apple.com>
+ * wtf/Platform.h: Enable JIT for Qt Mac builds
- Windows build fix after r39020
+2009-11-28 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- * jit/JITInlineMethods.h:
- (JSC::JIT::restoreArgumentReference):
- (JSC::JIT::restoreArgumentReferenceForTrampoline):
- Add some apparently-missing __.
+ Reviewed by Eric Seidel.
-2008-12-04 Geoffrey Garen <ggaren@apple.com>
+ Apply workaround for the limitation of VirtualFree with MEM_RELEASE to all ports running on Windows
+ https://bugs.webkit.org/show_bug.cgi?id=31943
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=22673
-
- Added support for the assertion (?=) and inverted assertion (?!) atoms
- in WREC.
+ * runtime/MarkStack.h:
+ (JSC::MarkStack::MarkStackArray::shrinkAllocation):
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateParenthesesAssertion):
- (JSC::WREC::Generator::generateParenthesesInvertedAssertion): Split the
- old (unused) generateParentheses into these two functions, with more
- limited capabilities.
-
- * wrec/WRECGenerator.h:
- (JSC::WREC::Generator::): Moved an enum to the top of the class definition,
- to match the WebKit style, and removed a defunct comment.
+2009-11-28 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
- * wrec/WRECParser.cpp:
- (JSC::WREC::Parser::parseParentheses):
- (JSC::WREC::Parser::consumeParenthesesType):
- * wrec/WRECParser.h:
- (JSC::WREC::Parser::): Added support for parsing (?=) and (?!).
+ Reviewed by Gavin Barraclough.
-2008-12-05 Simon Hausmann <simon.hausmann@nokia.com>
+ https://bugs.webkit.org/show_bug.cgi?id=31930
- Rubber-stamped by Tor Arne Vestbø.
+ Seems a typo. We don't need ~270k memory to determine the vptrs.
- Disable the JIT for the Qt build alltogether again, after observing
- more miscompilations in a wider range of newer gcc versions.
+ * runtime/JSGlobalData.cpp:
+ (JSC::VPtrSet::VPtrSet):
- * JavaScriptCore.pri:
+2009-11-27 Shinichiro Hamaji <hamaji@chromium.org>
-2008-12-05 Simon Hausmann <simon.hausmann@nokia.com>
+ Unreviewed.
- Reviewed by Tor Arne Vestbø.
+ Move GOwnPtr* from wtf to wtf/gtk
+ https://bugs.webkit.org/show_bug.cgi?id=31793
- Disable the JIT for the Qt build on Linux unless gcc is >= 4.2,
- due to miscompilations.
+ Build fix for chromium after r51423.
+ Exclude gtk directory from chromium build.
- * JavaScriptCore.pri:
+ * JavaScriptCore.gyp/JavaScriptCore.gyp:
-2008-12-04 Gavin Barraclough <barraclough@apple.com>
+2009-11-25 Oliver Hunt <oliver@apple.com>
- Reviewed by Geoff Garen.
+ Reviewed by Gavin Barraclough.
- Start porting the JIT to use the MacroAssembler.
+ Incorrect behaviour of jneq_null in the interpreter
+ https://bugs.webkit.org/show_bug.cgi?id=31901
- https://bugs.webkit.org/show_bug.cgi?id=22671
- No change in performance.
+ Correct the logic of jneq_null. This is already covered by existing tests.
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::Jump::operator X86Assembler::JmpSrc):
- (JSC::MacroAssembler::add32):
- (JSC::MacroAssembler::and32):
- (JSC::MacroAssembler::lshift32):
- (JSC::MacroAssembler::rshift32):
- (JSC::MacroAssembler::storePtr):
- (JSC::MacroAssembler::store32):
- (JSC::MacroAssembler::poke):
- (JSC::MacroAssembler::move):
- (JSC::MacroAssembler::compareImm32ForBranchEquality):
- (JSC::MacroAssembler::jnePtr):
- (JSC::MacroAssembler::jnset32):
- (JSC::MacroAssembler::jset32):
- (JSC::MacroAssembler::jzeroSub32):
- (JSC::MacroAssembler::joverAdd32):
- (JSC::MacroAssembler::call):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::shll_i8r):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- * jit/JIT.h:
- * jit/JITArithmetic.cpp:
- (JSC::JIT::compileBinaryArithOp):
- * jit/JITInlineMethods.h:
- (JSC::JIT::emitGetVirtualRegister):
- (JSC::JIT::emitPutCTIArg):
- (JSC::JIT::emitPutCTIArgConstant):
- (JSC::JIT::emitGetCTIArg):
- (JSC::JIT::emitPutCTIArgFromVirtualRegister):
- (JSC::JIT::emitPutCTIParam):
- (JSC::JIT::emitGetCTIParam):
- (JSC::JIT::emitPutToCallFrameHeader):
- (JSC::JIT::emitPutImmediateToCallFrameHeader):
- (JSC::JIT::emitGetFromCallFrameHeader):
- (JSC::JIT::emitPutVirtualRegister):
- (JSC::JIT::emitInitRegister):
- (JSC::JIT::emitNakedCall):
- (JSC::JIT::restoreArgumentReference):
- (JSC::JIT::restoreArgumentReferenceForTrampoline):
- (JSC::JIT::emitCTICall):
- (JSC::JIT::checkStructure):
- (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
- (JSC::JIT::emitJumpSlowCaseIfNotImmNum):
- (JSC::JIT::emitJumpSlowCaseIfNotImmNums):
- (JSC::JIT::emitFastArithDeTagImmediate):
- (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
- (JSC::JIT::emitFastArithReTagImmediate):
- (JSC::JIT::emitFastArithPotentiallyReTagImmediate):
- (JSC::JIT::emitFastArithImmToInt):
- (JSC::JIT::emitFastArithIntToImmOrSlowCase):
- (JSC::JIT::emitFastArithIntToImmNoCheck):
- (JSC::JIT::emitTagAsBoolImmediate):
- * jit/JITPropertyAccess.cpp:
- (JSC::JIT::privateCompilePutByIdTransition):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
-2008-12-04 Geoffrey Garen <ggaren@apple.com>
+2009-11-26 Laszlo Gombos <laszlo.1.gombos@nokia.com>
Reviewed by Oliver Hunt.
-
- Some refactoring for generateGreedyQuantifier.
-
- SunSpider reports no change (possibly a 0.3% speedup).
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateGreedyQuantifier): Clarified label
- meanings and unified some logic to simplify things.
+ Move GOwnPtr* from wtf to wtf/gtk
+ https://bugs.webkit.org/show_bug.cgi?id=31793
- * wrec/WRECParser.h:
- (JSC::WREC::Parser::parseAlternative): Added a version of parseAlternative
- that can jump to a Label, instead of a JumpList, upon failure. (Eventually,
- when we have a true Label class, this will be redundant.) This makes
- things easier for generateGreedyQuantifier, because it can avoid
- explicitly linking things.
+ * GNUmakefile.am: Change the path for GOwnPtr.*.
+ * JavaScriptCore.gyp/JavaScriptCore.gyp: Remove
+ GOwnPtr.cpp from the exclude list.
+ * JavaScriptCore.gypi: Change the path for GOwnPtr.*.
+ * wscript: Remove GOwnPtr.cpp from the exclude list.
+ * wtf/GOwnPtr.cpp: Removed.
+ * wtf/GOwnPtr.h: Removed.
+ * wtf/Threading.h: Change the path for GOwnPtr.h.
+ * wtf/gtk/GOwnPtr.cpp: Copied from JavaScriptCore/wtf/GOwnPtr.cpp.
+ * wtf/gtk/GOwnPtr.h: Copied from JavaScriptCore/wtf/GOwnPtr.h.
+ * wtf/unicode/glib/UnicodeGLib.h: Change the path for GOwnPtr.h.
-2008-12-04 Simon Hausmann <simon.hausmann@nokia.com>
+2009-11-24 Dmitry Titov <dimich@chromium.org>
- Reviewed by Holger Freyther.
+ Reviewed by Eric Seidel.
- Fix crashes in the Qt build on Linux/i386 with non-executable memory
- by enabling TCSystemAlloc and the PROT_EXEC flag for mmap.
+ Add ENABLE_SHARED_SCRIPT feature define and flag for build-webkit
+ https://bugs.webkit.org/show_bug.cgi?id=31444
- * JavaScriptCore.pri: Enable the use of TCSystemAlloc if the JIT is
- enabled.
- * wtf/TCSystemAlloc.cpp: Extend the PROT_EXEC permissions to
- PLATFORM(QT).
+ * Configurations/FeatureDefines.xcconfig:
+ * wtf/Platform.h:
-2008-12-04 Simon Hausmann <simon.hausmann@nokia.com>
+2009-11-24 Chris Marrin <cmarrin@apple.com>
- Reviewed by Tor Arne Vestbø.
+ Reviewed by Simon Fraser.
- Enable ENABLE_JIT_OPTIMIZE_CALL, ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS
- and ENABLE_JIT_OPTIMIZE_ARITHMETIC, as suggested by Niko.
+ Add ability to enable ACCELERATED_COMPOSITING on Windows (currently disabled)
+ https://bugs.webkit.org/show_bug.cgi?id=27314
- * JavaScriptCore.pri:
+ * wtf/Platform.h:
-2008-12-04 Kent Hansen <khansen@trolltech.com>
+2009-11-24 Jason Smith <dark.panda@gmail.com>
- Reviewed by Simon Hausmann.
+ Reviewed by Alexey Proskuryakov.
- Enable the JSC jit for the Qt build by default for release builds on
- linux-g++ and win32-msvc.
+ RegExp#exec's returned Array-like object behaves differently from
+ regular Arrays
+ https://bugs.webkit.org/show_bug.cgi?id=31689
- * JavaScriptCore.pri:
+ * JavaScriptCore/runtime/RegExpConstructor.cpp: ensure that undefined
+ values are added to the returned RegExpMatchesArray
-2008-12-04 Gavin Barraclough <barraclough@apple.com>
+2009-11-24 Oliver Hunt <oliver@apple.com>
- Reviewed by Oliver Hunt.
+ Reviewed by Alexey Proskuryakov.
- Allow JIT to function without property access repatching and arithmetic optimizations.
- Controlled by ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS and ENABLE_JIT_OPTIMIZE_ARITHMETIC switches.
+ JSON.stringify performance on undefined is very poor
+ https://bugs.webkit.org/show_bug.cgi?id=31839
- https://bugs.webkit.org/show_bug.cgi?id=22643
+ Switch from a UString to a Vector<UChar> when building
+ the JSON string, allowing us to safely remove the substr-copy
+ we otherwise did when unwinding an undefined property.
+
+ Also turns out to be a ~5% speedup on stringification.
+
+ * runtime/JSONObject.cpp:
+ (JSC::Stringifier::StringBuilder::append):
+ (JSC::Stringifier::stringify):
+ (JSC::Stringifier::Holder::appendNextProperty):
+
+2009-11-24 Mark Rowe <mrowe@apple.com>
+
+ Fix production builds where the source tree may be read-only.
* JavaScriptCore.xcodeproj/project.pbxproj:
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- * jit/JIT.h:
- * jit/JITArithmetic.cpp: Copied from jit/JIT.cpp.
- (JSC::JIT::compileBinaryArithOp):
- (JSC::JIT::compileBinaryArithOpSlowCase):
- * jit/JITPropertyAccess.cpp: Copied from jit/JIT.cpp.
- (JSC::JIT::compileGetByIdHotPath):
- (JSC::JIT::compileGetByIdSlowCase):
- (JSC::JIT::compilePutByIdHotPath):
- (JSC::JIT::compilePutByIdSlowCase):
- (JSC::resizePropertyStorage):
- (JSC::transitionWillNeedStorageRealloc):
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::patchGetByIdSelf):
- (JSC::JIT::patchPutByIdReplace):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- * wtf/Platform.h:
-2008-12-03 Geoffrey Garen <ggaren@apple.com>
+2009-11-23 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ Include "config.h" to meet Coding Style Guidelines
+ https://bugs.webkit.org/show_bug.cgi?id=31792
+
+ * wtf/unicode/UTF8.cpp:
+ * wtf/unicode/glib/UnicodeGLib.cpp:
+ * wtf/unicode/wince/UnicodeWince.cpp:
+
+2009-11-23 Geoffrey Garen <ggaren@apple.com>
Reviewed by Oliver Hunt.
+
+ Streamlined some Math functions where we expect or know the result not
+ to be representable as an int.
- Optimized sequences of characters in regular expressions by comparing
- two characters at a time.
-
- 1-2% speedup on SunSpider, 19-25% speedup on regexp-dna.
+ SunSpider says 0.6% faster.
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::load32):
- (JSC::MacroAssembler::jge32): Filled out a few more macro methods.
+ * runtime/JSNumberCell.h:
+ (JSC::JSValue::JSValue):
+ * runtime/JSValue.h:
+ (JSC::JSValue::):
+ (JSC::jsDoubleNumber):
+ (JSC::JSValue::JSValue): Added a function for making a numeric JSValue
+ and skipping the "can I encode this as an int?" check, avoiding the
+ overhead of int <-> double roundtripping and double <-> double comparison
+ and branching.
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::movl_mr): Added a verion of movl_mr that operates
- without an offset, to allow the macro assembler to optmize for that case.
-
- * wrec/WREC.cpp:
- (JSC::WREC::Generator::compileRegExp): Test the saved value of index
- instead of the index register when checking for "end of input." The
- index register doesn't increment by 1 in an orderly fashion, so testing
- it for == "end of input" is not valid.
-
- Also, jump all the way to "return failure" upon reaching "end of input,"
- instead of executing the next alternative. This is more logical, and
- it's a slight optimization in the case of an expression with many alternatives.
+ * runtime/MathObject.cpp:
+ (JSC::mathProtoFuncACos):
+ (JSC::mathProtoFuncASin):
+ (JSC::mathProtoFuncATan):
+ (JSC::mathProtoFuncATan2):
+ (JSC::mathProtoFuncCos):
+ (JSC::mathProtoFuncExp):
+ (JSC::mathProtoFuncLog):
+ (JSC::mathProtoFuncRandom):
+ (JSC::mathProtoFuncSin):
+ (JSC::mathProtoFuncSqrt):
+ (JSC::mathProtoFuncTan): For these functions, which we expect or know
+ to produce results not representable as ints, call jsDoubleNumber instead
+ of jsNumber.
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateIncrementIndex): Added support for
- jumping to a failure label in the case where the index has reached "end
- of input."
-
- (JSC::WREC::Generator::generatePatternCharacterSequence):
- (JSC::WREC::Generator::generatePatternCharacterPair): This is the
- optmization. It's basically like generatePatternCharacter, but it runs two
- characters at a time.
-
- (JSC::WREC::Generator::generatePatternCharacter): Changed to use isASCII,
- since it's clearer than comparing to a magic hex value.
-
- * wrec/WRECGenerator.h:
+2009-11-23 Mark Rowe <mrowe@apple.com>
-2008-12-03 Gavin Barraclough <barraclough@apple.com>
+ Unreviewed. Unbreak the regression tests after r51329.
- Reviewed by Cameron Zwarich.
+ * API/JSBase.cpp:
+ (JSEvaluateScript): Null-check clientData before dereferencing it.
+ * API/JSObjectRef.cpp:
+ (JSObjectCallAsFunction): Ditto.
- Allow JIT to operate without the call-repatching optimization.
- Controlled by ENABLE(JIT_OPTIMIZE_CALL), defaults on, disabling
- this leads to significant performance regression.
+2009-11-23 Gavin Barraclough <barraclough@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=22639
+ Reviewed by Geoff Garen.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileSlowCases):
- * jit/JIT.h:
- * jit/JITCall.cpp: Copied from jit/JIT.cpp.
- (JSC::JIT::compileOpCallInitializeCallFrame):
- (JSC::JIT::compileOpCallSetupArgs):
- (JSC::JIT::compileOpCallEvalSetupArgs):
- (JSC::JIT::compileOpConstructSetupArgs):
- (JSC::JIT::compileOpCall):
- (JSC::JIT::compileOpCallSlowCase):
- (JSC::unreachable):
- * jit/JITInlineMethods.h: Copied from jit/JIT.cpp.
- (JSC::JIT::checkStructure):
- (JSC::JIT::emitFastArithPotentiallyReTagImmediate):
- (JSC::JIT::emitTagAsBoolImmediate):
- * wtf/Platform.h:
+ Part 1/3 of <rdar://problem/7377477> REGRESSION: Many web pages fail to render after interesting script runs in isolated world
-2008-12-03 Eric Seidel <eric@webkit.org>
+ Some clients of the JavaScriptCore API expect to be able to make callbacks over the JSC API,
+ and for this to automagically cause execution to take place in the world associated with the
+ global object associated with the ExecState (JSContextRef) passed. However this is not how
+ things work - the world must be explicitly set within WebCore.
- Rubber-stamped by David Hyatt.
+ Making this work just for API calls to evaluate & call will be a far from perfect solution,
+ since direct (non-API) use of JSC still relies on WebCore setting the current world correctly.
+ A better solution would be to make this all work automagically all throughout WebCore, but this
+ will require more refactoring.
- Make HAVE_ACCESSIBILITY only define if !defined
+ Since the API is in JSC but worlds only exist in WebCore, add callbacks on the JSGlobalData::ClientData
+ to allow it to update the current world on entry/exit via the JSC API. This is temporary duck
+ tape, and should be removed once the current world no longer needs to be explicitly tracked.
- * wtf/Platform.h:
+ * API/JSBase.cpp:
+ (JSEvaluateScript):
+ * API/JSObjectRef.cpp:
+ (JSObjectCallAsFunction):
+ * JavaScriptCore.exp:
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::ClientData::beginningExecution):
+ (JSC::JSGlobalData::ClientData::completedExecution):
+ * runtime/JSGlobalData.h:
-2008-12-03 Sam Weinig <sam@webkit.org>
+2009-11-23 Steve Block <steveblock@google.com>
- Fix build.
+ Reviewed by Dmitry Titov.
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::orl_i32r):
+ Adds MainThreadAndroid.cpp with Android-specific WTF threading functions.
+ https://bugs.webkit.org/show_bug.cgi?id=31807
-2008-12-03 Sam Weinig <sam@webkit.org>
+ * wtf/android: Added.
+ * wtf/android/MainThreadAndroid.cpp: Added.
+ (WTF::timeoutFired):
+ (WTF::initializeMainThreadPlatform):
+ (WTF::scheduleDispatchFunctionsOnMainThread):
- Reviewed by Geoffrey Garen.
+2009-11-23 Alexey Proskuryakov <ap@apple.com>
- Remove shared AssemblerBuffer 1MB buffer and instead give AssemblerBuffer
- an 256 byte inline capacity.
+ Reviewed by Brady Eidson.
- 1% progression on Sunspider.
+ https://bugs.webkit.org/show_bug.cgi?id=31748
+ Make WebSocketHandleCFNet respect proxy auto-configuration files via CFProxySupport
+
+ * JavaScriptCore.exp: Export callOnMainThreadAndWait.
+
+2009-11-23 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Symbian] Fix lastIndexOf() for Symbian
+ https://bugs.webkit.org/show_bug.cgi?id=31773
+
+ Symbian soft floating point library has problems with operators
+ comparing NaN to numbers. Without a workaround lastIndexOf()
+ function does not work.
+
+ Patch developed by David Leong.
- * assembler/AssemblerBuffer.h:
- (JSC::AssemblerBuffer::AssemblerBuffer):
- (JSC::AssemblerBuffer::~AssemblerBuffer):
- (JSC::AssemblerBuffer::grow):
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::MacroAssembler):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::X86Assembler):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::Interpreter):
- * interpreter/Interpreter.h:
- * jit/JIT.cpp:
- (JSC::JIT::JIT):
- * parser/Nodes.cpp:
- (JSC::RegExpNode::emitBytecode):
- * runtime/RegExp.cpp:
- (JSC::RegExp::RegExp):
- (JSC::RegExp::create):
- * runtime/RegExp.h:
- * runtime/RegExpConstructor.cpp:
- (JSC::constructRegExp):
- * runtime/RegExpPrototype.cpp:
- (JSC::regExpProtoFuncCompile):
* runtime/StringPrototype.cpp:
- (JSC::stringProtoFuncMatch):
- (JSC::stringProtoFuncSearch):
- * wrec/WREC.cpp:
- (JSC::WREC::Generator::compileRegExp):
- * wrec/WRECGenerator.h:
- (JSC::WREC::Generator::Generator):
- * wrec/WRECParser.h:
- (JSC::WREC::Parser::Parser):
+ (JSC::stringProtoFuncLastIndexOf):Add an extra test
+ to check for NaN for Symbian.
-2008-12-03 Geoffrey Garen <ggaren@apple.com>
+2009-11-23 Steve Block <steveblock@google.com>
- Reviewed by Oliver Hunt, with help from Gavin Barraclough.
-
- orl_i32r was actually coded as an 8bit OR. So, I renamed orl_i32r to
- orl_i8r, changed all orl_i32r clients to use orl_i8r, and then added
- a new orl_i32r that actually does a 32bit OR.
-
- (32bit OR is currently unused, but a patch I'm working on uses it.)
+ Reviewed by Eric Seidel.
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::or32): Updated to choose between 8bit and 32bit OR.
+ Android port lacks implementation of atomicIncrement and atomicDecrement.
+ https://bugs.webkit.org/show_bug.cgi?id=31715
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::orl_i8r): The old orl_i32r.
- (JSC::X86Assembler::orl_i32r): The new orl_i32r.
-
- * jit/JIT.cpp:
- (JSC::JIT::emitFastArithPotentiallyReTagImmediate):
- (JSC::JIT::emitTagAsBoolImmediate): Use orl_i8r, since we're ORing 8bit
- values.
+ * wtf/Threading.h: Modified.
+ (WTF::atomicIncrement): Added Android implementation.
+ (WTF::atomicDecrement): Added Android implementation.
+
+2009-11-22 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Unreviewed.
+
+ [Qt] Sort source lists and remove obsolete comments
+ from the build system.
+
+ * JavaScriptCore.pri:
+
+2009-11-21 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Eric Seidel.
+
+ [Qt][Mac] Turn on multiple JavaScript threads for QtWebkit on Mac
+ https://bugs.webkit.org/show_bug.cgi?id=31753
+
+ * wtf/Platform.h:
+
+2009-11-19 Steve Block <steveblock@google.com>
-2008-12-03 Dean Jackson <dino@apple.com>
+ Android port lacks configuration in Platform.h and config.h.
+ https://bugs.webkit.org/show_bug.cgi?id=31671
+
+ * wtf/Platform.h: Modified. Added Android-specific configuration.
+
+2009-11-19 Alexey Proskuryakov <ap@apple.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=31690
+ Make SocketStreamHandleCFNet work on Windows
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * wtf/MainThread.cpp:
+ (WTF::FunctionWithContext::FunctionWithContext):
+ (WTF::dispatchFunctionsFromMainThread):
+ (WTF::callOnMainThreadAndWait):
+ * wtf/MainThread.h:
+ Re-add callOnMainThreadAndWait(), which was removed in bug 23926.
- Reviewed by Dan Bernstein.
+2009-11-19 Dmitry Titov <dimich@chromium.org>
- Helper functions for turn -> degrees.
- https://bugs.webkit.org/show_bug.cgi?id=22497
+ Reviewed by David Levin.
- * wtf/MathExtras.h:
- (turn2deg):
- (deg2turn):
+ isMainThread() on Chromium (Mac and Linux) is so slow it timeouts LayoutTests..
+ https://bugs.webkit.org/show_bug.cgi?id=31693
-2008-12-02 Cameron Zwarich <zwarich@apple.com>
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::initializeThreading): grab and use the pthread_t of the main thread instead of ThreadIdentifier.
+ (WTF::isMainThread): Ditto.
- Reviewed by Geoff Garen.
+2009-11-19 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- Bug 22504: Crashes during code generation occur due to refing of ignoredResult()
- <https://bugs.webkit.org/show_bug.cgi?id=22504>
+ Reviewed by Darin Adler.
- Since ignoredResult() was implemented by casting 1 to a RegisterID*, any
- attempt to ref ignoredResult() results in a crash. This will occur in
- code generation of a function body where a node emits another node with
- the dst that was passed to it, and then refs the returned RegisterID*.
+ Remove HAVE(STRING_H) guard from JavaScriptCore
+ https://bugs.webkit.org/show_bug.cgi?id=31668
- To fix this problem, make ignoredResult() a member function of
- BytecodeGenerator that simply returns a pointe to a fixed RegisterID
- member of BytecodeGenerator.
+ * config.h:
+ * runtime/UString.cpp:
- * bytecompiler/BytecodeGenerator.h:
- (JSC::BytecodeGenerator::ignoredResult):
- * bytecompiler/RegisterID.h:
- * parser/Nodes.cpp:
- (JSC::NullNode::emitBytecode):
- (JSC::BooleanNode::emitBytecode):
- (JSC::NumberNode::emitBytecode):
- (JSC::StringNode::emitBytecode):
- (JSC::RegExpNode::emitBytecode):
- (JSC::ThisNode::emitBytecode):
- (JSC::ResolveNode::emitBytecode):
- (JSC::ObjectLiteralNode::emitBytecode):
- (JSC::PostfixResolveNode::emitBytecode):
- (JSC::PostfixBracketNode::emitBytecode):
- (JSC::PostfixDotNode::emitBytecode):
- (JSC::DeleteValueNode::emitBytecode):
- (JSC::VoidNode::emitBytecode):
- (JSC::TypeOfResolveNode::emitBytecode):
- (JSC::TypeOfValueNode::emitBytecode):
- (JSC::PrefixResolveNode::emitBytecode):
- (JSC::AssignResolveNode::emitBytecode):
- (JSC::CommaNode::emitBytecode):
- (JSC::ForNode::emitBytecode):
- (JSC::ForInNode::emitBytecode):
- (JSC::ReturnNode::emitBytecode):
- (JSC::ThrowNode::emitBytecode):
- (JSC::FunctionBodyNode::emitBytecode):
- (JSC::FuncDeclNode::emitBytecode):
+2009-11-19 Dumitru Daniliuc <dumi@chromium.org>
-2008-12-02 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Dmitry Titov.
- Reviewed by Cameron Zwarich.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=22537
- REGRESSION (r38745): Assertion failure in jsSubstring() at ge.com
+ Fixing a bug in MessageQueue::removeIf() that leads to an
+ assertion failure.
- The bug was that index would become greater than length, so our
- "end of input" checks, which all check "index == length", would fail.
-
- The solution is to check for end of input before incrementing index,
- to ensure that index is always <= length.
-
- As a side benefit, generateJumpIfEndOfInput can now use je instead of
- jg, which should be slightly faster.
+ https://bugs.webkit.org/show_bug.cgi?id=31657
- * wrec/WREC.cpp:
- (JSC::WREC::Generator::compileRegExp):
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateJumpIfEndOfInput):
+ * wtf/MessageQueue.h:
+ (WTF::MessageQueue::removeIf):
-2008-12-02 Gavin Barraclough <barraclough@apple.com>
+2009-11-19 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- Reviewed by Geoffrey Garen.
+ Reviewed by Darin Adler.
- Plant shift right immediate instructions, which are awesome.
- https://bugs.webkit.org/show_bug.cgi?id=22610
- ~5% on the v8-crypto test.
+ Remove HAVE(FLOAT_H) guard
+ https://bugs.webkit.org/show_bug.cgi?id=31661
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
+ JavaScriptCore has a dependency on float.h, there is
+ no need to guard float.h.
-2008-12-02 Geoffrey Garen <ggaren@apple.com>
+ * runtime/DatePrototype.cpp: Remove include directive
+ for float.h as it is included in MathExtras.h already.
+ * runtime/Operations.cpp: Ditto.
+ * runtime/UString.cpp: Ditto.
+ * wtf/dtoa.cpp: Ditto.
+ * wtf/MathExtras.h: Remove HAVE(FLOAT_H) guard.
+ * wtf/Platform.h: Ditto.
- Reviewed by Sam Weinig.
-
- Cleaned up SegmentedVector by abstracting segment access into helper
- functions.
-
- SunSpider reports no change.
+2009-11-19 Thiago Macieira <thiago.macieira@nokia.com>
- * bytecompiler/SegmentedVector.h:
- (JSC::SegmentedVector::SegmentedVector):
- (JSC::SegmentedVector::~SegmentedVector):
- (JSC::SegmentedVector::size):
- (JSC::SegmentedVector::at):
- (JSC::SegmentedVector::operator[]):
- (JSC::SegmentedVector::last):
- (JSC::SegmentedVector::append):
- (JSC::SegmentedVector::removeLast):
- (JSC::SegmentedVector::grow):
- (JSC::SegmentedVector::clear):
- (JSC::SegmentedVector::deleteAllSegments):
- (JSC::SegmentedVector::segmentFor):
- (JSC::SegmentedVector::subscriptFor):
- (JSC::SegmentedVector::ensureSegmentsFor):
- (JSC::SegmentedVector::ensureSegment):
-
-2008-12-02 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Geoffrey Garen. (Patch by Cameron Zwarich <zwarich@apple.com>.)
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=22482
- REGRESSION (r37991): Occasionally see "Scene rendered incorrectly"
- message when running the V8 Raytrace benchmark
-
- Rolled out r37991. It didn't properly save xmm0, which is caller-save,
- before calling helper functions.
-
- SunSpider and v8 benchmarks show little change -- possibly a .2%
- SunSpider regression, possibly a .2% v8 benchmark speedup.
+ Reviewed by Simon Hausmann.
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::):
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * bytecode/Instruction.h:
- (JSC::Instruction::):
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::emitUnaryOp):
- * bytecompiler/BytecodeGenerator.h:
- (JSC::BytecodeGenerator::emitToJSNumber):
- (JSC::BytecodeGenerator::emitTypeOf):
- (JSC::BytecodeGenerator::emitGetPropertyNames):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::privateExecute):
- * interpreter/Interpreter.h:
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- * jit/JIT.h:
- * parser/Nodes.cpp:
- (JSC::UnaryOpNode::emitBytecode):
- (JSC::BinaryOpNode::emitBytecode):
- (JSC::EqualNode::emitBytecode):
- * parser/ResultType.h:
- (JSC::ResultType::isReusable):
- (JSC::ResultType::mightBeNumber):
- * runtime/JSNumberCell.h:
+ Build fix for 32-bit Sparc machines: these machines are big-endian.
-2008-12-01 Gavin Barraclough <barraclough@apple.com>
+ * wtf/Platform.h:
- Reviewed by Geoffrey Garen.
+2009-11-18 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- Remove unused (sampling only, and derivable) argument to JIT::emitCTICall.
- https://bugs.webkit.org/show_bug.cgi?id=22587
+ Reviewed by Kenneth Rohde Christiansen.
- * jit/JIT.cpp:
- (JSC::JIT::emitCTICall):
- (JSC::JIT::compileOpCall):
- (JSC::JIT::emitSlowScriptCheck):
- (JSC::JIT::compileBinaryArithOpSlowCase):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- (JSC::JIT::privateCompile):
- * jit/JIT.h:
+ [Qt] Remove support for Qt v4.3 or older versions
+ https://bugs.webkit.org/show_bug.cgi?id=29469
-2008-12-02 Dimitri Glazkov <dglazkov@chromium.org>
+ * JavaScriptCore.pro:
+ * jsc.pro:
+ * wtf/unicode/qt4/UnicodeQt4.h:
- Reviewed by Eric Seidel.
-
- Fix the inheritance chain for JSFunction.
+2009-11-18 Kent Tamura <tkent@chromium.org>
- * runtime/JSFunction.cpp:
- (JSC::JSFunction::info): Add InternalFunction::info as parent class
+ Reviewed by Darin Adler.
-2008-12-02 Simon Hausmann <hausmann@webkit.org>
+ Move UString::from(double) implementation to new
+ WTF::doubleToStringInJavaScriptFormat(), and expose it because WebCore
+ code will use it.
+ https://bugs.webkit.org/show_bug.cgi?id=31330
- Reviewed by Tor Arne Vestbø.
+ - Introduce new function createRep(const char*, unsigned) and
+ UString::UString(const char*, unsigned) to reduce 2 calls to strlen().
+ - Fix a bug that dtoa() doesn't update *rve if the input value is NaN
+ or Infinity.
- Fix ability to include JavaScriptCore.pri from other .pro files.
+ No new tests because this doesn't change the behavior.
- * JavaScriptCore.pri: Moved -O3 setting into the .pro files.
- * JavaScriptCore.pro:
- * jsc.pro:
+ * JavaScriptCore.exp:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * runtime/UString.cpp:
+ (JSC::createRep):
+ (JSC::UString::UString):
+ (JSC::UString::from): Move the code to doubleToStringInJavaScriptFormat().
+ * runtime/UString.h:
+ * wtf/dtoa.cpp:
+ (WTF::dtoa): Fix a bug about rve.
+ (WTF::append): A helper for doubleToStringInJavaScriptFormat().
+ (WTF::doubleToStringInJavaScriptFormat): Move the code from UString::from(double).
+ * wtf/dtoa.h:
-2008-12-01 Geoffrey Garen <ggaren@apple.com>
+2009-11-18 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- Reviewed by Cameron Zwarich, with help from Gavin Barraclough.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=22583.
+ Reviewed by Kenneth Rohde Christiansen.
- Refactored regular expression parsing to parse sequences of characters
- as a single unit, in preparation for optimizing sequences of characters.
-
- SunSpider reports no change.
+ [Qt] Remove WTF_USE_JAVASCRIPTCORE_BINDINGS as it is no longer used
+ https://bugs.webkit.org/show_bug.cgi?id=31643
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * wrec/Escapes.h: Added. Set of classes for representing an escaped
- token in a pattern.
+ * JavaScriptCore.pro:
- * wrec/Quantifier.h:
- (JSC::WREC::Quantifier::Quantifier): Simplified this constructor slightly,
- to match the new Escape constructor.
+2009-11-18 Nate Chapin <japhet@chromium.org>
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generatePatternCharacterSequence):
- * wrec/WRECGenerator.h: Added an interface for generating a sequence
- of pattern characters at a time. It doesn't do anything special yet.
+ Reviewed by Darin Fisher.
- * wrec/WRECParser.cpp:
- (JSC::WREC::Parser::consumeGreedyQuantifier):
- (JSC::WREC::Parser::consumeQuantifier): Renamed "parse" to "consume" in
- these functions, to match "consumeEscape."
+ Remove Chromium's unnecessary dependency on wtf's tcmalloc files.
- (JSC::WREC::Parser::parsePatternCharacterSequence): New function for
- iteratively aggregating a sequence of characters in a pattern.
+ https://bugs.webkit.org/show_bug.cgi?id=31648
- (JSC::WREC::Parser::parseCharacterClassQuantifier):
- (JSC::WREC::Parser::parseBackreferenceQuantifier): Renamed "parse" to
- "consume" in these functions, to match "consumeEscape."
+ * JavaScriptCore.gyp/JavaScriptCore.gyp:
- (JSC::WREC::Parser::parseCharacterClass): Refactored to use the common
- escape processing code in consumeEscape.
+2009-11-18 Thiago Macieira <thiago.macieira@nokia.com>
- (JSC::WREC::Parser::parseEscape): Refactored to use the common
- escape processing code in consumeEscape.
+ Reviewed by Gavin Barraclough.
- (JSC::WREC::Parser::consumeEscape): Factored escaped token processing
- into a common function, since we were doing this in a few places.
+ [Qt] Implement symbol hiding for JSC's JIT functions.
- (JSC::WREC::Parser::parseTerm): Refactored to use the common
- escape processing code in consumeEscape.
+ These functions are implemented directly in assembly, so they need the
+ proper directives to enable/disable visibility. On ELF systems, it's
+ .hidden, whereas on Mach-O systems (Mac) it's .private_extern. On
+ Windows, it's not necessary since you have to explicitly export. I
+ also implemented the AIX idiom, though it's unlikely anyone will
+ implement AIX/POWER JIT.
+ https://bugs.webkit.org/show_bug.cgi?id=30864
- * wrec/WRECParser.h:
- (JSC::WREC::Parser::consumeOctal): Refactored to use a helper function
- for reading a digit.
+ * jit/JITStubs.cpp:
-2008-12-01 Cameron Zwarich <zwarich@apple.com>
+2009-11-18 Oliver Hunt <oliver@apple.com>
- Reviewed by Oliver Hunt.
+ Reviewed by Alexey Proskuryakov.
- Bug 20340: SegmentedVector segment allocations can lead to unsafe use of temporary registers
- <https://bugs.webkit.org/show_bug.cgi?id=20340>
+ Interpreter may do an out of range access when throwing an exception in the profiler.
+ https://bugs.webkit.org/show_bug.cgi?id=31635
- SegmentedVector currently frees segments and reallocates them when used
- as a stack. This can lead to unsafe use of pointers into freed segments.
+ Add bounds check.
- In order to fix this problem, SegmentedVector will be changed to only
- grow and never shrink. Also, rename the reserveCapacity() member
- function to grow() to match the actual usage in BytecodeGenerator, where
- this function is used to allocate a group of registers at once, rather
- than merely saving space for them.
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::throwException):
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::BytecodeGenerator): Use grow() instead of
- reserveCapacity().
- * bytecompiler/SegmentedVector.h:
- (JSC::SegmentedVector::SegmentedVector):
- (JSC::SegmentedVector::last):
- (JSC::SegmentedVector::append):
- (JSC::SegmentedVector::removeLast):
- (JSC::SegmentedVector::grow): Renamed from reserveCapacity().
- (JSC::SegmentedVector::clear):
+2009-11-18 Gabor Loki <loki@inf.u-szeged.hu>
-2008-12-01 Mark Rowe <mrowe@apple.com>
+ Reviewed by Darin Adler.
- Rubber-stamped by Anders Carlsson.
+ Fix the clobber list of cacheFlush for ARM and Thumb2 on Linux
+ https://bugs.webkit.org/show_bug.cgi?id=31631
- Disable WREC for x86_64 since memory allocated by the system allocator is not marked executable,
- which causes 64-bit debug builds to crash. Once we have a dedicated allocator for executable
- memory we can turn this back on.
+ * jit/ExecutableAllocator.h:
+ (JSC::ExecutableAllocator::cacheFlush):
- * wtf/Platform.h:
+2009-11-18 Harald Fernengel <harald.fernengel@nokia.com>
-2008-12-01 Antti Koivisto <antti@apple.com>
+ Reviewed by Simon Hausmann.
- Reviewed by Maciej Stachowiak.
-
- Restore inline buffer after vector is shrunk back below its inline capacity.
+ [Qt] Fix detection of linux-g++
- * wtf/Vector.h:
- (WTF::):
- (WTF::VectorBuffer::restoreInlineBufferIfNeeded):
- (WTF::::shrinkCapacity):
+ Never use "linux-g++*" to check for linux-g++, since this will break embedded
+ builds which use linux-arm-g++ and friends. Use 'linux*-g++*' to check for any
+ g++ on linux mkspec.
-2008-11-30 Antti Koivisto <antti@apple.com>
+ * JavaScriptCore.pri:
- Reviewed by Mark Rowe.
-
- Try to return free pages in the current thread cache too.
+2009-11-17 Jon Honeycutt <jhoneycutt@apple.com>
- * wtf/FastMalloc.cpp:
- (WTF::TCMallocStats::releaseFastMallocFreeMemory):
+ Add JSContextRefPrivate.h to list of copied files.
-2008-12-01 David Levin <levin@chromium.org>
+ Reviewed by Mark Rowe.
- Reviewed by Alexey Proskuryakov.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
- https://bugs.webkit.org/show_bug.cgi?id=22567
- Make HashTable work as expected with respect to threads. Specifically, it has class-level
- thread safety and constant methods work on constant objects without synchronization.
-
- No observable change in behavior, so no test. This only affects debug builds.
+2009-11-17 Martin Robinson <martin.james.robinson@gmail.com>
- * wtf/HashTable.cpp:
- (WTF::hashTableStatsMutex):
- (WTF::HashTableStats::~HashTableStats):
- (WTF::HashTableStats::recordCollisionAtCount):
- Guarded variable access with a mutex.
+ Reviewed by Adam Barth.
- * wtf/HashTable.h:
- (WTF::::lookup):
- (WTF::::lookupForWriting):
- (WTF::::fullLookupForWriting):
- (WTF::::add):
- (WTF::::reinsert):
- (WTF::::remove):
- (WTF::::rehash):
- Changed increments of static variables to use atomicIncrement.
+ [GTK] Style cleanup for GOwnPtr
+ https://bugs.webkit.org/show_bug.cgi?id=31506
- (WTF::::invalidateIterators):
- (WTF::addIterator):
- (WTF::removeIterator):
- Guarded mutable access with a mutex.
+ Remove forward declaration in GOwnPtr and do some style cleanup.
-2008-11-29 Gavin Barraclough <barraclough@apple.com>
+ * wtf/GOwnPtr.cpp:
+ * wtf/GOwnPtr.h:
+ (WTF::GOwnPtr::GOwnPtr):
+ (WTF::GOwnPtr::~GOwnPtr):
+ (WTF::GOwnPtr::get):
+ (WTF::GOwnPtr::release):
+ (WTF::GOwnPtr::outPtr):
+ (WTF::GOwnPtr::set):
+ (WTF::GOwnPtr::clear):
+ (WTF::GOwnPtr::operator*):
+ (WTF::GOwnPtr::operator->):
+ (WTF::GOwnPtr::operator!):
+ (WTF::GOwnPtr::operator UnspecifiedBoolType):
+ (WTF::GOwnPtr::swap):
+ (WTF::swap):
+ (WTF::operator==):
+ (WTF::operator!=):
+ (WTF::getPtr):
+ (WTF::freeOwnedGPtr):
- Reviewed by Cameron Zwarich.
+2009-11-17 Oliver Hunt <oliver@apple.com>
- Enable WREC on PLATFORM(X86_64). This change predominantly requires changes to the
- WREC::Generator::generateEnter method to support the x86-64 ABI, and addition of
- support for a limited number of quadword operations in the X86Assembler.
+ Reviewed by Maciej Stachowiak.
- This patch will cause the JS heap to be allocated with RWX permissions on 64-bit Mac
- platforms. This is a regression with respect to previous 64-bit behaviour, but is no
- more permissive than on 32-bit builds. This issue should be addressed at some point.
- (This is tracked by bug #21783.)
+ Incorrect use of JavaScriptCore API in DumpRenderTree
+ https://bugs.webkit.org/show_bug.cgi?id=31577
- https://bugs.webkit.org/show_bug.cgi?id=22554
- Greater than 4x speedup on regexp-dna, on x86-64.
+ Add assertions to the 'toJS' functions to catch mistakes like
+ this early. Restructure existing code which blindly passed potentially
+ null values to toJS when forwarding exceptions so that a null check is
+ performed first.
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::addPtr):
- (JSC::MacroAssembler::loadPtr):
- (JSC::MacroAssembler::storePtr):
- (JSC::MacroAssembler::pop):
- (JSC::MacroAssembler::push):
- (JSC::MacroAssembler::move):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::movq_rr):
- (JSC::X86Assembler::addl_i8m):
- (JSC::X86Assembler::addl_i32r):
- (JSC::X86Assembler::addq_i8r):
- (JSC::X86Assembler::addq_i32r):
- (JSC::X86Assembler::movq_mr):
- (JSC::X86Assembler::movq_rm):
- * wrec/WREC.h:
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateEnter):
- (JSC::WREC::Generator::generateReturnSuccess):
- (JSC::WREC::Generator::generateReturnFailure):
- * wtf/Platform.h:
- * wtf/TCSystemAlloc.cpp:
+ * API/APICast.h:
+ (toJS):
+ (toJSForGC):
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::getOwnPropertySlot):
+ (JSC::::put):
+ (JSC::::deleteProperty):
+ (JSC::::construct):
+ (JSC::::hasInstance):
+ (JSC::::call):
+ (JSC::::toNumber):
+ (JSC::::toString):
+ (JSC::::staticValueGetter):
+ (JSC::::callbackGetter):
+ * API/tests/testapi.c: Fix errors in the API tester.
+ (MyObject_getProperty):
+ (MyObject_convertToType):
+ (EvilExceptionObject_convertToType):
-2008-12-01 Cameron Zwarich <zwarich@apple.com>
+2009-11-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
- Reviewed by Sam Weinig.
+ Reviewed by Gavin Barraclough.
- Preliminary work for bug 20340: SegmentedVector segment allocations can lead to unsafe use of temporary registers
- <https://bugs.webkit.org/show_bug.cgi?id=20340>
+ https://bugs.webkit.org/show_bug.cgi?id=31050
- SegmentedVector currently frees segments and reallocates them when used
- as a stack. This can lead to unsafe use of pointers into freed segments.
+ Minor fixes for JSVALUE32_64: branchConvertDoubleToInt32
+ failed on a CortexA8 CPU, but not on a simulator; and
+ JITCall.cpp modifications was somehow not committed to mainline.
- In order to fix this problem, SegmentedVector will be changed to only
- grow and never shrink, with the sole exception of clearing all of its
- data, a capability that is required by Lexer. This patch changes the
- public interface to only allow for these capabilities.
+ * assembler/ARMAssembler.h:
+ (JSC::ARMAssembler::fmrs_r):
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall):
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::BytecodeGenerator): Use reserveCapacity()
- instead of resize() for m_globals and m_parameters.
- * bytecompiler/SegmentedVector.h:
- (JSC::SegmentedVector::resize): Removed.
- (JSC::SegmentedVector::reserveCapacity): Added.
- (JSC::SegmentedVector::clear): Added.
- (JSC::SegmentedVector::shrink): Removed.
- (JSC::SegmentedVector::grow): Removed.
- * parser/Lexer.cpp:
- (JSC::Lexer::clear): Use clear() instead of resize(0).
+2009-11-16 Joerg Bornemann <joerg.bornemann@trolltech.com>
-2008-11-30 Sam Weinig <sam@webkit.org>
+ Reviewed by Simon Hausmann.
- Reviewed by Mark Rowe.
+ Fix Qt build on Windows CE 6.
- Renames jumps to m_jumps in JumpList.
+ * JavaScriptCore.pri: Add missing include path.
+ * wtf/Platform.h: Include ce_time.h for Windows CE 6.
- * assembler/MacroAssembler.h:
- (JSC::MacroAssembler::JumpList::link):
- (JSC::MacroAssembler::JumpList::linkTo):
- (JSC::MacroAssembler::JumpList::append):
+2009-11-13 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
-2008-11-30 Antti Koivisto <antti@apple.com>
+ Reviewed by Gavin Barraclough.
- Reviewed by Mark Rowe.
-
- https://bugs.webkit.org/show_bug.cgi?id=22557
-
- Report free size in central and thread caches too.
+ https://bugs.webkit.org/show_bug.cgi?id=31050
- * wtf/FastMalloc.cpp:
- (WTF::TCMallocStats::fastMallocStatistics):
- * wtf/FastMalloc.h:
+ Adding optimization support for mode JSVALUE32_64
+ on ARM systems.
-2008-11-29 Antti Koivisto <antti@apple.com>
+ * jit/JIT.h:
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_method_check):
+ (JSC::JIT::compileGetByIdHotPath):
+ (JSC::JIT::compileGetByIdSlowCase):
+ (JSC::JIT::emit_op_put_by_id):
- Reviewed by Dan Bernstein.
-
- https://bugs.webkit.org/show_bug.cgi?id=22557
- Add statistics for JavaScript GC heap.
+2009-11-14 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
- * JavaScriptCore.exp:
- * runtime/Collector.cpp:
- (JSC::Heap::objectCount):
- (JSC::addToStatistics):
- (JSC::Heap::statistics):
- * runtime/Collector.h:
+ Reviewed by Gavin Barraclough.
-2008-11-29 Antti Koivisto <antti@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=31050
+
+ Adding JSVALUE32_64 support for ARM (but not turning it
+ on by default). All optimizations must be disabled, since
+ this patch is only the first of a series of patches.
+
+ During the work, a lot of x86 specific code revealed and
+ made platform independent.
+ See revisions: 50531 50541 50593 50594 50595
+
+ * assembler/ARMAssembler.h:
+ (JSC::ARMAssembler::):
+ (JSC::ARMAssembler::fdivd_r):
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::lshift32):
+ (JSC::MacroAssemblerARM::neg32):
+ (JSC::MacroAssemblerARM::rshift32):
+ (JSC::MacroAssemblerARM::branchOr32):
+ (JSC::MacroAssemblerARM::set8):
+ (JSC::MacroAssemblerARM::setTest8):
+ (JSC::MacroAssemblerARM::loadDouble):
+ (JSC::MacroAssemblerARM::divDouble):
+ (JSC::MacroAssemblerARM::convertInt32ToDouble):
+ (JSC::MacroAssemblerARM::zeroDouble):
+ * jit/JIT.cpp:
+ * jit/JIT.h:
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JITStubs.cpp:
+ * wtf/StdLibExtras.h:
- Fix debug build by adding a stub method.
+2009-11-13 Dominik Röttsches <dominik.roettsches@access-company.com>
- * wtf/FastMalloc.cpp:
- (WTF::fastMallocStatistics):
+ Reviewed by Eric Seidel.
-2008-11-29 Antti Koivisto <antti@apple.com>
+ Unify TextBoundaries implementations by only relying on WTF Unicode abstractions
+ https://bugs.webkit.org/show_bug.cgi?id=31468
- Reviewed by Alexey Proskuryakov.
-
- https://bugs.webkit.org/show_bug.cgi?id=22557
-
- Add function for getting basic statistics from FastMalloc.
+ Adding isAlphanumeric abstraction, required
+ by TextBoundaries.cpp.
- * JavaScriptCore.exp:
- * wtf/FastMalloc.cpp:
- (WTF::DLL_Length):
- (WTF::TCMalloc_PageHeap::ReturnedBytes):
- (WTF::TCMallocStats::fastMallocStatistics):
- * wtf/FastMalloc.h:
+ * wtf/unicode/glib/UnicodeGLib.h:
+ (WTF::Unicode::isAlphanumeric):
+ * wtf/unicode/icu/UnicodeIcu.h:
+ (WTF::Unicode::isAlphanumeric):
-2008-11-29 Cameron Zwarich <zwarich@apple.com>
+2009-11-13 Norbert Leser <norbert.leser&nokia.com>
- Not reviewed.
+ Reviewed by Eric Seidel.
- The C++ standard does not automatically grant the friendships of an
- enclosing class to its nested subclasses, so we should do so explicitly.
- This fixes the GCC 4.0 build, although both GCC 4.2 and Visual C++ 2005
- accept the incorrect code as it is.
+ Added macros for USERINCLUDE paths within symbian blocks
+ to guarantee inclusion of respective header files from local path
+ first (to avoid clashes with same names of header files in system include path).
- * assembler/MacroAssembler.h:
+ * JavaScriptCore.pri:
-2008-11-29 Gavin Barraclough <barraclough@apple.com>
+2009-11-13 Oliver Hunt <oliver@apple.com>
- Reviewed by Cameron Zwarich.
+ Reviewed by Geoff Garen.
- Add the class MacroAssembler to provide some abstraction of code generation,
- and change WREC to make use of this class, rather than directly accessing
- the X86Assembler.
+ JSValueProtect and JSValueUnprotect don't protect API wrapper values
+ https://bugs.webkit.org/show_bug.cgi?id=31485
- This patch also allows WREC to be compiled without the rest of the JIT enabled.
+ Make JSValueProtect/Unprotect use a new 'toJS' function, 'toJSForGC' that
+ does not attempt to to strip out API wrapper objects.
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * assembler/MacroAssembler.h: Added.
- (JSC::MacroAssembler::):
- (JSC::MacroAssembler::MacroAssembler):
- (JSC::MacroAssembler::copyCode):
- (JSC::MacroAssembler::Address::Address):
- (JSC::MacroAssembler::ImplicitAddress::ImplicitAddress):
- (JSC::MacroAssembler::BaseIndex::BaseIndex):
- (JSC::MacroAssembler::Label::Label):
- (JSC::MacroAssembler::Jump::Jump):
- (JSC::MacroAssembler::Jump::link):
- (JSC::MacroAssembler::Jump::linkTo):
- (JSC::MacroAssembler::JumpList::link):
- (JSC::MacroAssembler::JumpList::linkTo):
- (JSC::MacroAssembler::JumpList::append):
- (JSC::MacroAssembler::Imm32::Imm32):
- (JSC::MacroAssembler::add32):
- (JSC::MacroAssembler::or32):
- (JSC::MacroAssembler::sub32):
- (JSC::MacroAssembler::loadPtr):
- (JSC::MacroAssembler::load32):
- (JSC::MacroAssembler::load16):
- (JSC::MacroAssembler::storePtr):
- (JSC::MacroAssembler::store32):
- (JSC::MacroAssembler::pop):
- (JSC::MacroAssembler::push):
- (JSC::MacroAssembler::peek):
- (JSC::MacroAssembler::poke):
- (JSC::MacroAssembler::move):
- (JSC::MacroAssembler::compareImm32ForBranch):
- (JSC::MacroAssembler::compareImm32ForBranchEquality):
- (JSC::MacroAssembler::jae32):
- (JSC::MacroAssembler::je32):
- (JSC::MacroAssembler::je16):
- (JSC::MacroAssembler::jg32):
- (JSC::MacroAssembler::jge32):
- (JSC::MacroAssembler::jl32):
- (JSC::MacroAssembler::jle32):
- (JSC::MacroAssembler::jne32):
- (JSC::MacroAssembler::jump):
- (JSC::MacroAssembler::breakpoint):
- (JSC::MacroAssembler::ret):
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::cmpw_rm):
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::Interpreter):
- * interpreter/Interpreter.h:
- (JSC::Interpreter::assemblerBuffer):
- * runtime/RegExp.cpp:
- (JSC::RegExp::RegExp):
- * wrec/WREC.cpp:
- (JSC::WREC::Generator::compileRegExp):
- * wrec/WREC.h:
- * wrec/WRECFunctors.cpp:
- (JSC::WREC::GeneratePatternCharacterFunctor::generateAtom):
- (JSC::WREC::GenerateCharacterClassFunctor::generateAtom):
- (JSC::WREC::GenerateBackreferenceFunctor::generateAtom):
- (JSC::WREC::GenerateParenthesesNonGreedyFunctor::generateAtom):
- * wrec/WRECFunctors.h:
- (JSC::WREC::GenerateParenthesesNonGreedyFunctor::GenerateParenthesesNonGreedyFunctor):
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateEnter):
- (JSC::WREC::Generator::generateReturnSuccess):
- (JSC::WREC::Generator::generateSaveIndex):
- (JSC::WREC::Generator::generateIncrementIndex):
- (JSC::WREC::Generator::generateLoadCharacter):
- (JSC::WREC::Generator::generateJumpIfEndOfInput):
- (JSC::WREC::Generator::generateJumpIfNotEndOfInput):
- (JSC::WREC::Generator::generateReturnFailure):
- (JSC::WREC::Generator::generateBacktrack1):
- (JSC::WREC::Generator::generateBacktrackBackreference):
- (JSC::WREC::Generator::generateBackreferenceQuantifier):
- (JSC::WREC::Generator::generateNonGreedyQuantifier):
- (JSC::WREC::Generator::generateGreedyQuantifier):
- (JSC::WREC::Generator::generatePatternCharacter):
- (JSC::WREC::Generator::generateCharacterClassInvertedRange):
- (JSC::WREC::Generator::generateCharacterClassInverted):
- (JSC::WREC::Generator::generateCharacterClass):
- (JSC::WREC::Generator::generateParentheses):
- (JSC::WREC::Generator::generateParenthesesNonGreedy):
- (JSC::WREC::Generator::generateParenthesesResetTrampoline):
- (JSC::WREC::Generator::generateAssertionBOL):
- (JSC::WREC::Generator::generateAssertionEOL):
- (JSC::WREC::Generator::generateAssertionWordBoundary):
- (JSC::WREC::Generator::generateBackreference):
- (JSC::WREC::Generator::terminateAlternative):
- (JSC::WREC::Generator::terminateDisjunction):
- * wrec/WRECGenerator.h:
- (JSC::WREC::Generator::Generator):
- * wrec/WRECParser.cpp:
- (JSC::WREC::Parser::parsePatternCharacterQualifier):
- (JSC::WREC::Parser::parseCharacterClassQuantifier):
- (JSC::WREC::Parser::parseBackreferenceQuantifier):
- (JSC::WREC::Parser::parseParentheses):
- (JSC::WREC::Parser::parseCharacterClass):
- (JSC::WREC::Parser::parseOctalEscape):
- (JSC::WREC::Parser::parseEscape):
- (JSC::WREC::Parser::parseTerm):
- (JSC::WREC::Parser::parseDisjunction):
- * wrec/WRECParser.h:
- (JSC::WREC::Parser::Parser):
- (JSC::WREC::Parser::parsePattern):
- (JSC::WREC::Parser::parseAlternative):
- * wtf/Platform.h:
+ * API/APICast.h:
+ (toJSForGC):
+ * API/JSValueRef.cpp:
+ (JSValueProtect):
+ (JSValueUnprotect):
+ * API/tests/testapi.c:
+ (makeGlobalNumberValue):
+ (main):
-2008-11-28 Simon Hausmann <hausmann@webkit.org>
+2009-11-13 İsmail Dönmez <ismail@namtrac.org>
- Reviewed by Tor Arne Vestbø.
+ Reviewed by Antti Koivisto.
- Fix compilation on Windows CE
+ Fix typo, ce_time.cpp should be ce_time.c
- Port away from the use of errno after calling strtol(), instead
- detect conversion errors by checking the result and the stop
- position.
+ * JavaScriptCore.pri:
- * runtime/DateMath.cpp:
- (JSC::parseLong):
- (JSC::parseDate):
+2009-11-12 Steve VanDeBogart <vandebo@chromium.org>
-2008-11-28 Joerg Bornemann <joerg.bornemann@trolltech.com>
+ Reviewed by Adam Barth.
- Reviewed by Simon Hausmann.
+ Calculate the time offset only if we were able to parse
+ the date string. This saves an IPC in Chromium for
+ invalid date strings.
+ https://bugs.webkit.org/show_bug.cgi?id=31416
- Implement lowResUTCTime() on Windows CE using GetSystemTime as _ftime() is not available.
+ * wtf/DateMath.cpp:
+ (WTF::parseDateFromNullTerminatedCharacters):
+ (JSC::parseDateFromNullTerminatedCharacters):
- * runtime/DateMath.cpp:
- (JSC::lowResUTCTime):
+2009-11-12 Oliver Hunt <oliver@apple.com>
-2008-11-28 Simon Hausmann <hausmann@webkit.org>
+ Rollout r50896 until i can work out why it causes failures.
- Rubber-stamped by Tor Arne Vestbø.
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitReturn):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::execute):
+ * parser/Nodes.cpp:
+ (JSC::EvalNode::emitBytecode):
- Removed unnecessary inclusion of errno.h, which also fixes compilation on Windows CE.
+2009-11-12 Steve Falkenburg <sfalken@apple.com>
- * runtime/JSGlobalObjectFunctions.cpp:
+ Reviewed by Stephanie Lewis.
-2008-11-27 Cameron Zwarich <zwarich@apple.com>
+ Remove LIBRARY directive from def file to fix Debug_All target.
- Not reviewed.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
- r38825 made JSFunction::m_body private, but some inspector code in
- WebCore sets the field. Add setters for it.
+2009-11-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
- * runtime/JSFunction.h:
- (JSC::JSFunction::setBody):
+ Rubber-stamped by Holger Freyther.
-2008-11-27 Sam Weinig <sam@webkit.org>
+ Revert r50204, since it makes DRT crash on 32 bits release builds
+ for GTK+.
- Reviewed by Cameron Zwarich.
+ * wtf/FastMalloc.h:
- Fix FIXME by adding accessor for JSFunction's m_body property.
+2009-11-12 Oliver Hunt <oliver@apple.com>
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::cti_op_call_JSFunction):
- (JSC::Interpreter::cti_vm_dontLazyLinkCall):
- (JSC::Interpreter::cti_vm_lazyLinkCall):
- * profiler/Profiler.cpp:
- (JSC::createCallIdentifierFromFunctionImp):
- * runtime/Arguments.h:
- (JSC::Arguments::getArgumentsData):
- (JSC::Arguments::Arguments):
- * runtime/FunctionPrototype.cpp:
- (JSC::functionProtoFuncToString):
- * runtime/JSFunction.h:
- (JSC::JSFunction::JSFunction):
- (JSC::JSFunction::body):
+ Reviewed by Gavin Barraclough.
-2008-11-27 Sam Weinig <sam@webkit.org>
+ Start unifying entry logic for function and eval code.
- Reviewed by Oliver Hunt.
+ Eval now uses a ret instruction to end execution, and sets up
+ a callframe more in line with what we do for function entry.
- Remove unused member variables from ProgramNode.
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitReturn):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::execute):
+ * parser/Nodes.cpp:
+ (JSC::EvalNode::emitBytecode):
- * parser/Nodes.h:
+2009-11-12 Richard Moe Gustavsen <richard.gustavsen@nokia.com>
-2008-11-27 Brent Fulgham <bfulgham@gmail.com>
+ Reviewed by Kenneth Rohde Christiansen.
- Reviewed by Alexey Proskuryakov.
+ [Qt] Disable pthread_setname_np.
- Enable mouse panning feaure on Windows Cairo build.
- See http://bugs.webkit.org/show_bug.cgi?id=22525
+ This allows Qt builds on Mac from 10.6 to run on earlier version
+ where this symbol is not present.
+ https://bugs.webkit.org/show_bug.cgi?id=31403
- * wtf/Platform.h: Enable mouse panning feaure on Windows Cairo build.
+ * wtf/Platform.h:
-2008-11-27 Alp Toker <alp@nuanti.com>
+2009-11-12 Thiago Macieira <thiago.macieira@nokia.com>
- Change recently introduced C++ comments in Platform.h to C comments to
- fix the minidom build with traditional C.
+ Reviewed by Kenneth Rohde Christiansen.
- Build GtkLauncher and minidom with the '-ansi' compiler flag to detect
- API header breakage at build time.
+ [Qt] Fix linking on Linux 32-bit.
- * GNUmakefile.am:
- * wtf/Platform.h:
+ It was missing the ".text" directive at the top of the file,
+ indicating that code would follow. Without it, the assembler created
+ "NOTYPE" symbols, which would result in linker errors.
+ https://bugs.webkit.org/show_bug.cgi?id=30863
-2008-11-27 Alp Toker <alp@nuanti.com>
+ * jit/JITStubs.cpp:
- Remove C++ comment from JavaScriptCore API headers (introduced r35449).
- Fixes build for ANSI C applications using the public API.
+2009-11-11 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- * API/WebKitAvailability.h:
+ Reviewed by Alexey Proskuryakov.
-2008-11-26 Eric Seidel <eric@webkit.org>
+ Refactor multiple JavaScriptCore threads
+ https://bugs.webkit.org/show_bug.cgi?id=31328
- No review, build fix only.
+ Remove the id field from the PlatformThread structure
+ as it is not used.
- Fix the JSC Chromium Mac build by adding JavaScriptCore/icu into the include path
+ * runtime/Collector.cpp:
+ (JSC::getCurrentPlatformThread):
+ (JSC::suspendThread):
+ (JSC::resumeThread):
+ (JSC::getPlatformThreadRegisters):
- * JavaScriptCore.scons:
+2009-11-10 Geoffrey Garen <ggaren@apple.com>
-2008-11-25 Cameron Zwarich <zwarich@apple.com>
+ Linux build fix: Added an #include for UINT_MAX.
- Reviewed by Maciej Stachowiak.
+ * runtime/WeakRandom.h:
- Remove the unused member function JSFunction::getParameterName().
+2009-11-10 Geoffrey Garen <ggaren@apple.com>
- * runtime/JSFunction.cpp:
- * runtime/JSFunction.h:
+ JavaScriptGlue build fix: Marked a file 'private' instead of 'project'.
-2008-11-24 Gavin Barraclough <barraclough@apple.com>
+ * JavaScriptCore.xcodeproj/project.pbxproj:
- Reviewed by Geoff Garen.
+2009-11-10 Geoffrey Garen <ggaren@apple.com>
- Polymorpic caching for get by id chain. Similar to the polymorphic caching already implemented
- for self and proto accesses (implemented by allowing multiple trampolines to be JIT genertaed,
- and linked together) - the get by id chain caching is implemented as a genericization of the
- proto list caching, allowing cached access lists to contain a mix of proto and proto chain
- accesses (since in JS style inheritance hierarchies you may commonly see a mix of properties
- being overridden on the direct prototype, or higher up its prototype chain).
+ Reviewed by Gavin "avGni arBalroguch" Barraclough.
- In order to allow this patch to compile there is a fix to appease gcc 4.2 compiler issues
- (removing the jumps between fall-through cases in privateExecute).
+ Faster Math.random, based on GameRand.
- This patch also removes redundant immediate checking from the reptach code, and fixes a related
- memory leak (failure to deallocate trampolines).
+ SunSpider says 1.4% faster.
- ~2% progression on v8 tests (bulk on the win on deltablue)
+ * GNUmakefile.am:
+ * JavaScriptCore.gypi:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj: Added the header to the project.
- * bytecode/Instruction.h:
- (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::):
- (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
- (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
- (JSC::PolymorphicAccessStructureList::derefStructures):
- * interpreter/Interpreter.cpp:
- (JSC::countPrototypeChainEntriesAndCheckForProxies):
- (JSC::Interpreter::tryCacheGetByID):
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::tryCTICacheGetByID):
- (JSC::Interpreter::cti_op_get_by_id_self_fail):
- (JSC::getPolymorphicAccessStructureListSlot):
- (JSC::Interpreter::cti_op_get_by_id_proto_list):
- * interpreter/Interpreter.h:
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdSelfList):
- (JSC::JIT::privateCompileGetByIdProtoList):
- (JSC::JIT::privateCompileGetByIdChainList):
- (JSC::JIT::privateCompileGetByIdChain):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- * jit/JIT.h:
- (JSC::JIT::compileGetByIdChainList):
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData):
+ * runtime/JSGlobalData.h: Use an object to track random number generation
+ state, initialized to the current time.
-2008-11-25 Cameron Zwarich <zwarich@apple.com>
+ * runtime/MathObject.cpp:
+ (JSC::MathObject::MathObject):
+ (JSC::mathProtoFuncRandom): Use the new hotness.
- Reviewed by Alexey Proskuryakov.
+ * runtime/WeakRandom.h: Added.
+ (JSC::WeakRandom::WeakRandom):
+ (JSC::WeakRandom::get):
+ (JSC::WeakRandom::advance): The new hotness.
- Move the collect() call in Heap::heapAllocate() that is conditionally
- compiled under COLLECT_ON_EVERY_ALLOCATION so that it is before we get
- information about the heap. This was causing assertion failures for me
- while I was reducing a bug.
+2009-11-09 Geoffrey Garen <ggaren@apple.com>
- * runtime/Collector.cpp:
- (JSC::Heap::heapAllocate):
+ Reviewed by Oliver Hunt.
-2008-11-24 Cameron Zwarich <zwarich@apple.com>
+ Imported the v8 DST cache.
+
+ SunSpider says 1.5% faster.
- Reviewed by Geoff Garen.
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::resetDateCache): Reset the DST cache when resetting
+ other date data.
- Bug 13790: Function declarations are not treated as statements (used to affect starcraft2.com)
- <https://bugs.webkit.org/show_bug.cgi?id=13790>
+ * runtime/JSGlobalData.h:
+ (JSC::DSTOffsetCache::DSTOffsetCache):
+ (JSC::DSTOffsetCache::reset): Added a struct for the DST cache.
- Modify the parser to treat function declarations as statements,
- simplifying the grammar in the process. Technically, according to the
- grammar in the ECMA spec, function declarations are not statements and
- can not be used everywhere that statements can, but it is not worth the
- possibility compatibility issues just to stick to the spec in this case.
+ * wtf/DateMath.cpp:
+ (WTF::calculateDSTOffsetSimple):
+ (WTF::calculateDSTOffset):
+ (WTF::parseDateFromNullTerminatedCharacters):
+ (JSC::getDSTOffset):
+ (JSC::gregorianDateTimeToMS):
+ (JSC::msToGregorianDateTime):
+ (JSC::parseDateFromNullTerminatedCharacters):
+ * wtf/DateMath.h: The imported code for probing and updating the cache.
- * parser/Grammar.y:
- * parser/Nodes.cpp:
- (JSC::FuncDeclNode::emitBytecode): Avoid returning ignoredResult()
- as a result, because it causes a crash in DoWhileNode::emitBytecode().
+2009-11-09 Geoffrey Garen <ggaren@apple.com>
-2008-11-24 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Oliver Hunt.
- Reviewed by Sam Weinig.
+ Fixed an edge case that could cause the engine not to notice a timezone
+ change.
- Unroll the regexp matching loop by 1. 10% speedup on simple matching
- stress test. No change on SunSpider.
+ No test because this case would require manual intervention to change
+ the timezone during the test.
- (I decided not to unroll to arbitrary levels because the returns diminsh
- quickly.)
+ SunSpider reports no change.
- * wrec/WREC.cpp:
- (JSC::WREC::compileRegExp):
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateJumpIfEndOfInput):
- (JSC::WREC::Generator::generateJumpIfNotEndOfInput):
- * wrec/WRECGenerator.h:
- * wrec/WRECParser.h:
- (JSC::WREC::Parser::error):
- (JSC::WREC::Parser::parsePattern):
+ * runtime/DateInstanceCache.h:
+ (JSC::DateInstanceCache::DateInstanceCache):
+ (JSC::DateInstanceCache::reset): Added a helper function for resetting
+ this cache. Also, shrank the cache, since we'll be resetting it often.
-2008-11-24 Geoffrey Garen <ggaren@apple.com>
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::resetDateCache): Include resetting the DateInstanceCache
+ in resetting Date data. (Otherwise, a cache hit could bypass a necessary
+ timezone update check.)
+
+2009-11-09 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
+
+ Some manual inlining and constant propogation in Date code.
- Removed some unnecessary "Generator::" prefixes.
+ SunSpider reports a 0.4% speedup on date-*, no overall speedup. Shark
+ says some previously evident stalls are now gone.
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateEnter):
- (JSC::WREC::Generator::generateReturnSuccess):
- (JSC::WREC::Generator::generateSaveIndex):
- (JSC::WREC::Generator::generateIncrementIndex):
- (JSC::WREC::Generator::generateLoopIfNotEndOfInput):
- (JSC::WREC::Generator::generateReturnFailure):
+ * runtime/DateConstructor.cpp:
+ (JSC::callDate):
+ * runtime/DateConversion.cpp:
+ (JSC::formatTime):
+ (JSC::formatTimeUTC): Split formatTime into UTC and non-UTC variants.
-2008-11-24 Geoffrey Garen <ggaren@apple.com>
+ * runtime/DateConversion.h:
+ * runtime/DateInstance.cpp:
+ (JSC::DateInstance::calculateGregorianDateTime):
+ (JSC::DateInstance::calculateGregorianDateTimeUTC):
+ * runtime/DateInstance.h:
+ (JSC::DateInstance::gregorianDateTime):
+ (JSC::DateInstance::gregorianDateTimeUTC): Split gregorianDateTime into
+ a UTC and non-UTC variant, and split each variant into a fast inline
+ case and a slow out-of-line case.
- Reviewed by Sam Weinig.
-
- Made a bunch of WREC::Parser functions private, and added an explicit
- "reset()" function, so a parser can be reused.
-
- * wrec/WRECParser.h:
- (JSC::WREC::Parser::Parser):
- (JSC::WREC::Parser::generator):
- (JSC::WREC::Parser::ignoreCase):
- (JSC::WREC::Parser::multiline):
- (JSC::WREC::Parser::recordSubpattern):
- (JSC::WREC::Parser::numSubpatterns):
- (JSC::WREC::Parser::parsePattern):
- (JSC::WREC::Parser::parseAlternative):
- (JSC::WREC::Parser::reset):
-
-2008-11-24 Gavin Barraclough <barraclough@apple.com>
+ * runtime/DatePrototype.cpp:
+ (JSC::formatLocaleDate):
+ (JSC::dateProtoFuncToString):
+ (JSC::dateProtoFuncToUTCString):
+ (JSC::dateProtoFuncToISOString):
+ (JSC::dateProtoFuncToDateString):
+ (JSC::dateProtoFuncToTimeString):
+ (JSC::dateProtoFuncGetFullYear):
+ (JSC::dateProtoFuncGetUTCFullYear):
+ (JSC::dateProtoFuncToGMTString):
+ (JSC::dateProtoFuncGetMonth):
+ (JSC::dateProtoFuncGetUTCMonth):
+ (JSC::dateProtoFuncGetDate):
+ (JSC::dateProtoFuncGetUTCDate):
+ (JSC::dateProtoFuncGetDay):
+ (JSC::dateProtoFuncGetUTCDay):
+ (JSC::dateProtoFuncGetHours):
+ (JSC::dateProtoFuncGetUTCHours):
+ (JSC::dateProtoFuncGetMinutes):
+ (JSC::dateProtoFuncGetUTCMinutes):
+ (JSC::dateProtoFuncGetSeconds):
+ (JSC::dateProtoFuncGetUTCSeconds):
+ (JSC::dateProtoFuncGetTimezoneOffset):
+ (JSC::setNewValueFromTimeArgs):
+ (JSC::setNewValueFromDateArgs):
+ (JSC::dateProtoFuncSetYear):
+ (JSC::dateProtoFuncGetYear): Updated for the gregorianDateTime change above.
- Reviewed by Cameron Zwarich.
+2009-11-09 Geoffrey Garen <ggaren@apple.com>
- Implement repatching for get by id chain.
- Previously the access is performed in a function stub, in the repatch form
- the trampoline is not called to; instead the hot path is relinked to jump
- directly to the trampoline, if it fails it will jump to the slow case.
+ Build fix: export a new symbol.
- https://bugs.webkit.org/show_bug.cgi?id=22449
- 3% progression on deltablue.
+ * JavaScriptCore.exp:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdChain):
+2009-11-09 Geoffrey Garen <ggaren@apple.com>
-2008-11-24 Joerg Bornemann <joerg.bornemann@trolltech.com>
+ Reviewed by Sam "Home Wrecker" Weinig.
- Reviewed by Simon Hausmann.
+ Added a tiny cache for Date parsing.
+
+ SunSpider says 1.2% faster.
- https://bugs.webkit.org/show_bug.cgi?id=20746
+ * runtime/DateConversion.cpp:
+ (JSC::parseDate): Try to reuse the last parsed Date, if present.
- Various small compilation fixes to make the Qt port of WebKit
- compile on Windows CE.
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::resetDateCache):
+ * runtime/JSGlobalData.h: Added storage for last parsed Date. Refactored
+ this code to make resetting the date cache easier.
- * config.h: Don't set _CRT_RAND_S for CE, it's not available.
- * jsc.cpp: Disabled use of debugger includes for CE. It
- does not have the debugging functions.
- * runtime/DateMath.cpp: Use localtime() on Windows CE.
- * wtf/Assertions.cpp: Compile on Windows CE without debugger.
- * wtf/Assertions.h: Include windows.h before defining ASSERT.
- * wtf/MathExtras.h: Include stdlib.h instead of xmath.h.
- * wtf/Platform.h: Disable ERRNO_H and detect endianess based
- on the Qt endianess. On Qt for Windows CE the endianess is
- defined by the vendor specific build spec.
- * wtf/Threading.h: Use the volatile-less atomic functions.
- * wtf/dtoa.cpp: Compile without errno.
- * wtf/win/MainThreadWin.cpp: Don't include windows.h on CE after
- Assertions.h due to the redefinition of ASSERT.
+ * runtime/JSGlobalObject.h:
+ (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for
+ refactoring.
-2008-11-22 Gavin Barraclough <barraclough@apple.com>
+ * wtf/DateMath.cpp:
+ (JSC::parseDateFromNullTerminatedCharacters):
+ * wtf/DateMath.h: Changed ExecState to be first parameter, as is the JSC custom.
- Reviewed by Cameron Zwarich.
+2009-11-09 Oliver Hunt <oliver@apple.com>
- Replace accidentally deleted immediate check from get by id chain trampoline.
- https://bugs.webkit.org/show_bug.cgi?id=22413
+ Reviewed by Gavin Barraclough.
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileGetByIdChain):
+ Can cache prototype lookups on uncacheable dictionaries.
+ https://bugs.webkit.org/show_bug.cgi?id=31198
-2008-11-21 Gavin Barraclough <barraclough@apple.com>
+ Replace fromDictionaryTransition with flattenDictionaryObject and
+ flattenDictionaryStructure. This change is necessary as we need to
+ guarantee that our attempt to convert away from a dictionary structure
+ will definitely succeed, and in some cases this requires mutating the
+ object storage itself.
- Reviewed by Oliver Hunt.
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::tryCacheGetByID):
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::tryCacheGetByID):
+ (JSC::DEFINE_STUB_FUNCTION):
+ * runtime/BatchedTransitionOptimizer.h:
+ (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
+ * runtime/JSObject.h:
+ (JSC::JSObject::flattenDictionaryObject):
+ * runtime/Operations.h:
+ (JSC::normalizePrototypeChain):
+ * runtime/Structure.cpp:
+ (JSC::Structure::flattenDictionaryStructure):
+ (JSC::comparePropertyMapEntryIndices):
+ * runtime/Structure.h:
- Add (really) polymorphic caching for get by id self.
- Very similar to caching of prototype accesses, described below.
+2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- Oh, also, probably shouldn't have been leaking those structure list objects.
-
- 4% preogression on deltablue.
+ Not reviewed, build fix.
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- (JSC::CodeBlock::derefStructures):
- (JSC::PrototypeStructureList::derefStructures):
- * bytecode/Instruction.h:
- * bytecode/Opcode.h:
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::cti_op_get_by_id_self_fail):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileGetByIdSelfList):
- (JSC::JIT::patchGetByIdSelf):
- * jit/JIT.h:
- (JSC::JIT::compileGetByIdSelfList):
+ Remove extra character from r50701.
-2008-11-21 Geoffrey Garen <ggaren@apple.com>
+ * JavaScriptCore.pri:
- Reviewed by Sam Weinig.
-
- Fixed many crashes seen 'round the world (but only in release builds).
-
- Update outputParameter offset to reflect slight re-ordering of push
- instructions in r38669.
+2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- * wrec/WRECGenerator.cpp:
+ Not reviewed, build fix.
-2008-11-21 Geoffrey Garen <ggaren@apple.com>
+ Revert r50695 because it broke QtWebKit (clean builds).
- Reviewed by Sam Weinig.
-
- A little more RegExp refactoring.
-
- Deployed a helper function for reading the next character. Used the "link
- vector of jumps" helper in a place I missed before.
+ * JavaScriptCore.pri:
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateLoadCharacter):
- (JSC::WREC::Generator::generatePatternCharacter):
- (JSC::WREC::Generator::generateCharacterClass):
- (JSC::WREC::Generator::generateAssertionEOL):
- (JSC::WREC::Generator::generateAssertionWordBoundary):
- * wrec/WRECGenerator.h:
+2009-11-09 Norbert Leser <norbert.leser@nokia.com>
-2008-11-21 Alexey Proskuryakov <ap@webkit.org>
+ Reviewed by Kenneth Rohde Christiansen.
- Reviewed by Dan Bernstein.
+ Prepended $$PWD to GENERATED_SOURCES_DIR to avoid potential ambiguities when included from WebCore.pro.
+ Some preprocessors consider this GENERATED_SOURCES_DIR relative to current invoking dir (e.g., ./WebCore),
+ and not the working dir of JavaCriptCore.pri (i.e., ../JavaScriptCore/).
- https://bugs.webkit.org/show_bug.cgi?id=22402
- Replace abort() with CRASH()
+ * JavaScriptCore.pri:
- * wtf/Assertions.h: Added a different method to crash, which should work even is 0xbbadbeef
- is a valid memory address.
+2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- * runtime/Collector.cpp:
- * wtf/FastMalloc.cpp:
- * wtf/FastMalloc.h:
- * wtf/TCSpinLock.h:
- Replace abort() with CRASH().
+ Reviewed by Kenneth Rohde Christiansen.
-2008-11-21 Alexey Proskuryakov <ap@webkit.org>
+ Use explicit parentheses to silence gcc 4.4 -Wparentheses warnings
+ https://bugs.webkit.org/show_bug.cgi?id=31040
- Reverted fix for bug 22042 (Replace abort() with CRASH()), because it was breaking
- FOR_EACH_OPCODE_ID macro somehow, making Safari crash.
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
- * runtime/Collector.cpp:
- (JSC::Heap::heapAllocate):
- (JSC::Heap::collect):
- * wtf/Assertions.h:
- * wtf/FastMalloc.cpp:
- (WTF::fastMalloc):
- (WTF::fastCalloc):
- (WTF::fastRealloc):
- (WTF::InitSizeClasses):
- (WTF::PageHeapAllocator::New):
- (WTF::TCMallocStats::do_malloc):
- * wtf/FastMalloc.h:
- * wtf/TCSpinLock.h:
- (TCMalloc_SpinLock::Init):
- (TCMalloc_SpinLock::Finalize):
- (TCMalloc_SpinLock::Lock):
- (TCMalloc_SpinLock::Unlock):
+2009-11-08 David Levin <levin@chromium.org>
-2008-11-21 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by NOBODY (speculative snow leopard and windows build fixes).
- Reviewed by Sam Weinig.
-
- A little more RegExp refactoring.
-
- Moved all assembly from WREC.cpp into WRECGenerator helper functions.
- This should help with portability and readability.
+ * wtf/DateMath.cpp:
+ (WTF::parseDateFromNullTerminatedCharacters):
+ (JSC::gregorianDateTimeToMS):
+ (JSC::msToGregorianDateTime):
+ (JSC::parseDateFromNullTerminatedCharacters):
+ * wtf/DateMath.h:
+ (JSC::GregorianDateTime::GregorianDateTime):
+
+2009-11-08 David Levin <levin@chromium.org>
+
+ Reviewed by NOBODY (chromium build fix).
- Removed ASSERTs after calls to executableCopy(), and changed
- executableCopy() to ASSERT instead.
+ Hopefully, the last build fix.
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::executableCopy):
- * jit/JIT.cpp:
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileGetByIdSelf):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdChain):
- (JSC::JIT::privateCompilePutByIdReplace):
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- * wrec/WREC.cpp:
- (JSC::WREC::compileRegExp):
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateEnter):
- (JSC::WREC::Generator::generateReturnSuccess):
- (JSC::WREC::Generator::generateSaveIndex):
- (JSC::WREC::Generator::generateIncrementIndex):
- (JSC::WREC::Generator::generateLoopIfNotEndOfInput):
- (JSC::WREC::Generator::generateReturnFailure):
- * wrec/WRECGenerator.h:
- * wrec/WRECParser.h:
- (JSC::WREC::Parser::ignoreCase):
- (JSC::WREC::Parser::generator):
+ Create better separation in DateMath about the JSC
+ and non-JSC portions. Also, only expose the non-JSC
+ version in the exports.
-2008-11-21 Alexey Proskuryakov <ap@webkit.org>
+ * JavaScriptCore.exp:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * wtf/DateMath.cpp:
+ (WTF::parseDateFromNullTerminatedCharacters):
+ (JSC::getUTCOffset):
+ (JSC::gregorianDateTimeToMS):
+ (JSC::msToGregorianDateTime):
+ (JSC::parseDateFromNullTerminatedCharacters):
+ * wtf/DateMath.h:
+ (JSC::gmtoffset):
- Build fix.
+2009-11-08 David Levin <levin@chromium.org>
- * wtf/Assertions.h: Use ::abort for C++ code.
+ Reviewed by NOBODY (chromium build fix).
-2008-11-21 Alexey Proskuryakov <ap@webkit.org>
+ For the change in DateMath.
- Reviewed by Sam Weinig.
+ * config.h:
+ * wtf/DateMath.cpp:
- https://bugs.webkit.org/show_bug.cgi?id=22402
- Replace abort() with CRASH()
+2009-11-06 Geoffrey Garen <ggaren@apple.com>
- * wtf/Assertions.h: Added abort() after an attempt to crash for extra safety.
+ Windows build fix: export some symbols.
- * runtime/Collector.cpp:
- * wtf/FastMalloc.cpp:
- * wtf/FastMalloc.h:
- * wtf/TCSpinLock.h:
- Replace abort() with CRASH().
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
-2008-11-21 Geoffrey Garen <ggaren@apple.com>
+2009-11-06 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Sam Weinig.
-
- Renamed wrec => generator.
+ Build fix: updated export file.
- * wrec/WRECFunctors.cpp:
- (JSC::WREC::GeneratePatternCharacterFunctor::generateAtom):
- (JSC::WREC::GeneratePatternCharacterFunctor::backtrack):
- (JSC::WREC::GenerateCharacterClassFunctor::generateAtom):
- (JSC::WREC::GenerateCharacterClassFunctor::backtrack):
- (JSC::WREC::GenerateBackreferenceFunctor::generateAtom):
- (JSC::WREC::GenerateBackreferenceFunctor::backtrack):
- (JSC::WREC::GenerateParenthesesNonGreedyFunctor::generateAtom):
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
-2008-11-19 Gavin Barraclough <barraclough@apple.com>
+2009-11-06 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Darin Adler.
+ Build fix: added some #includes.
- Add support for (really) polymorphic caching of prototype accesses.
-
- If a cached prototype access misses, cti_op_get_by_id_proto_list is called.
- When this occurs the Structure pointers from the instruction stream are copied
- off into a new ProtoStubInfo object. A second prototype access trampoline is
- generated, and chained onto the first. Subsequent missed call to
- cti_op_get_by_id_proto_list_append, which append futher new trampolines, up to
- PROTOTYPE_LIST_CACHE_SIZE (currently 4). If any of the misses result in an
- access other than to a direct prototype property, list formation is halted (or
- for the initial miss, does not take place at all).
+ * wtf/CurrentTime.h:
+ * wtf/DateMath.h:
- Separate fail case functions are provided for each access since this contributes
- to the performance progression (enables better processor branch prediction).
+2009-11-06 Geoffrey Garen <ggaren@apple.com>
- Overall this is a near 5% progression on v8, with around 10% wins on richards
- and deltablue.
+ Reviewed by Oliver Hunt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=31197
+ Implemented a timezone cache not based on Mac OS X's notify_check API.
+
+ If the VM calculates the local timezone offset from UTC, it caches the
+ result until the end of the current VM invocation. (We don't want to cache
+ forever, because the user's timezone may change over time.)
+
+ This removes notify_* overhead on Mac, and, more significantly, removes
+ OS time and date call overhead on non-Mac platforms.
- * bytecode/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- (JSC::CodeBlock::derefStructures):
- * bytecode/Instruction.h:
- (JSC::ProtoStructureList::ProtoStubInfo::set):
- (JSC::ProtoStructureList::ProtoStructureList):
- (JSC::Instruction::Instruction):
- (JSC::Instruction::):
- * bytecode/Opcode.h:
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::tryCTICacheGetByID):
- (JSC::Interpreter::cti_op_put_by_id_fail):
- (JSC::Interpreter::cti_op_get_by_id_self_fail):
- (JSC::Interpreter::cti_op_get_by_id_proto_list):
- (JSC::Interpreter::cti_op_get_by_id_proto_list_append):
- (JSC::Interpreter::cti_op_get_by_id_proto_list_full):
- (JSC::Interpreter::cti_op_get_by_id_proto_fail):
- (JSC::Interpreter::cti_op_get_by_id_chain_fail):
- (JSC::Interpreter::cti_op_get_by_id_array_fail):
- (JSC::Interpreter::cti_op_get_by_id_string_fail):
- * interpreter/Interpreter.h:
- * jit/JIT.cpp:
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileGetByIdSelf):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdProtoList):
- (JSC::JIT::privateCompileGetByIdChain):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- * jit/JIT.h:
- (JSC::JIT::compileGetByIdProtoList):
+ ~8% speedup on Date microbenchmark on Mac. SunSpider reports maybe a tiny
+ speedup on Mac. (Speedup on non-Mac platforms should be even more noticeable.)
-2008-11-20 Sam Weinig <sam@webkit.org>
+ * JavaScriptCore.exp:
- Try and fix the tiger build.
+ * interpreter/CachedCall.h:
+ (JSC::CachedCall::CachedCall):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::execute):
+ * runtime/JSGlobalObject.h:
+ (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Made the
+ DynamicGlobalObjectScope constructor responsible for checking whether a
+ dynamicGlobalObject has already been set. This eliminated some duplicate
+ client code, and allowed me to avoid adding even more duplicate client
+ code. Made DynamicGlobalObjectScope responsible for resetting the
+ local timezone cache upon first entry to the VM.
- * parser/Grammar.y:
+ * runtime/DateConstructor.cpp:
+ (JSC::constructDate):
+ (JSC::callDate):
+ (JSC::dateParse):
+ (JSC::dateUTC):
+ * runtime/DateConversion.cpp:
+ (JSC::parseDate):
+ * runtime/DateConversion.h:
+ * runtime/DateInstance.cpp:
+ (JSC::DateInstance::gregorianDateTime):
+ * runtime/DateInstance.h:
+ * runtime/DateInstanceCache.h:
+ * runtime/DatePrototype.cpp:
+ (JSC::setNewValueFromTimeArgs):
+ (JSC::setNewValueFromDateArgs):
+ (JSC::dateProtoFuncSetYear):
+ * runtime/InitializeThreading.cpp:
+ (JSC::initializeThreadingOnce):
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData):
+ * runtime/JSGlobalData.h:
+ * wtf/DateMath.cpp:
+ (WTF::getCurrentUTCTime):
+ (WTF::getCurrentUTCTimeWithMicroseconds):
+ (WTF::getLocalTime):
+ (JSC::getUTCOffset): Use the new cache. Also, see below.
+ (JSC::gregorianDateTimeToMS):
+ (JSC::msToGregorianDateTime):
+ (JSC::initializeDates):
+ (JSC::parseDateFromNullTerminatedCharacters): Simplified the way this function
+ accounts for the local timezone offset, to accomodate our new caching API,
+ and a (possibly misguided) caller in WebCore. Also, see below.
+ * wtf/DateMath.h:
+ (JSC::GregorianDateTime::GregorianDateTime): Moved most of the code in
+ DateMath.* into the JSC namespace. The code needed to move so it could
+ naturally interact with ExecState and JSGlobalData to support caching.
+ Logically, it seemed right to move it, too, since this code is not really
+ as low-level as the WTF namespace might imply -- it implements a set of
+ date parsing and conversion quirks that are finely tuned to the JavaScript
+ language. Also removed the Mac OS X notify_* infrastructure.
+
+ * wtf/CurrentTime.h:
+ (WTF::currentTimeMS):
+ (WTF::getLocalTime): Moved the rest of the DateMath code here, and renamed
+ it to make it consistent with WTF's currentTime function.
+
+2009-11-06 Gabor Loki <loki@inf.u-szeged.hu>
+
+ Unreviewed trivial buildfix after r50595.
+
+ Rename the remaining rshiftPtr calls to rshift32
-2008-11-20 Eric Seidel <eric@webkit.org>
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_rshift):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitFastArithImmToInt):
- Reviewed by Darin Adler.
+2009-11-06 Gavin Barraclough <barraclough@apple.com>
- Make JavaScriptCore Chromium build under Windows (cmd only, cygwin almost works)
- https://bugs.webkit.org/show_bug.cgi?id=22347
+ Reviewed by Oliver Hunt.
- * JavaScriptCore.scons:
- * parser/Parser.cpp: Add using std::auto_ptr since we use auto_ptr
+ Tidy up the shift methods on the macro-assembler interface.
-2008-11-20 Steve Falkenburg <sfalken@apple.com>
+ Currently behaviour of shifts of a magnitude > 0x1f is undefined.
+ Instead defined that all shifts are masked to this range. This makes a lot of
+ practical sense, both since having undefined behaviour is not particularly
+ desirable, and because this behaviour is commonly required (particularly since
+ it is required bt ECMA-262 for shifts).
- Fix build.
-
- Reviewed by Sam Weinig.
+ Update the ARM assemblers to provide this behaviour. Remove (now) redundant
+ masks from JITArithmetic, and remove rshiftPtr (this was used in case that
+ could be rewritten in a simpler form using rshift32, only optimized JSVALUE32
+ on x86-64, which uses JSVALUE64!)
- * parser/Parser.cpp:
- (JSC::Parser::reparse):
+ * assembler/MacroAssembler.h:
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::lshift32):
+ (JSC::MacroAssemblerARM::rshift32):
+ * assembler/MacroAssemblerARMv7.h:
+ (JSC::MacroAssemblerARMv7::lshift32):
+ (JSC::MacroAssemblerARMv7::rshift32):
+ * assembler/MacroAssemblerX86_64.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_lshift):
+ (JSC::JIT::emit_op_rshift):
-2008-11-20 Geoffrey Garen <ggaren@apple.com>
+2009-11-05 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Sam Weinig.
+ Rubber Stamped by Oliver Hunt.
- A little more RegExp refactoring.
-
- Created a helper function in the assembler for linking a vector of
- JmpSrc to a location, and deployed it in a bunch of places.
+ Remove a magic number (1) from the JIT, instead compute the value with OBJECT_OFFSET.
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::link):
- * wrec/WREC.cpp:
- (JSC::WREC::compileRegExp):
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateNonGreedyQuantifier):
- (JSC::WREC::Generator::generateGreedyQuantifier):
- (JSC::WREC::Generator::generateCharacterClassInverted):
- (JSC::WREC::Generator::generateParentheses):
- (JSC::WREC::Generator::generateParenthesesResetTrampoline):
- (JSC::WREC::Generator::generateAssertionBOL):
- (JSC::WREC::Generator::generateAssertionEOL):
- (JSC::WREC::Generator::generateAssertionWordBoundary):
- (JSC::WREC::Generator::terminateAlternative):
- (JSC::WREC::Generator::terminateDisjunction):
- * wrec/WRECParser.cpp:
- * wrec/WRECParser.h:
- (JSC::WREC::Parser::consumeHex):
-
-2008-11-20 Sam Weinig <sam@webkit.org>
-
- Fix non-mac builds.
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitPutJITStubArg):
+ (JSC::JIT::emitPutJITStubArgConstant):
+ (JSC::JIT::emitGetJITStubArg):
+ (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
+ * jit/JITStubCall.h:
+ (JSC::JITStubCall::JITStubCall):
+ (JSC::JITStubCall::getArgument):
+ * jit/JITStubs.h:
- * parser/Lexer.cpp:
- * parser/Parser.cpp:
+2009-11-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
-2008-11-20 Sam Weinig <sam@webkit.org>
+ Reviewed by Gavin Barraclough.
- Reviewed by Darin Adler.
+ https://bugs.webkit.org/show_bug.cgi?id=31159
+ Fix branchDouble behaviour on ARM THUMB2 JIT.
- Patch for https://bugs.webkit.org/show_bug.cgi?id=22385
- <rdar://problem/6390179>
- Lazily reparse FunctionBodyNodes on first execution.
+ The x86 branchDouble behaviour is reworked, and all JIT
+ ports should follow the x86 port. See bug 31104 and 31151
- - Saves 57MB on Membuster head.
+ This patch contains a fix for the traditional ARM port
- * bytecompiler/BytecodeGenerator.cpp:
- (JSC::BytecodeGenerator::generate): Remove vector shrinking since this is now
- handled by destroying the ScopeNodeData after generation.
+ * assembler/ARMAssembler.h:
+ (JSC::ARMAssembler::):
+ (JSC::ARMAssembler::fmrs_r):
+ (JSC::ARMAssembler::ftosid_r):
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::):
+ (JSC::MacroAssemblerARM::branchDouble):
+ (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
- * parser/Grammar.y: Add alternate NoNode version of the grammar
- that does not create nodes. This is used to lazily create FunctionBodyNodes
- on first execution.
+2009-11-05 Chris Jerdonek <chris.jerdonek@gmail.com>
- * parser/Lexer.cpp:
- (JSC::Lexer::setCode): Fix bug where on reparse, the Lexer was confused about
- what position and length meant. Position is the current position in the original
- data buffer (important for getting correct line/column information) and length
- the end offset in the original buffer.
- * parser/Lexer.h:
- (JSC::Lexer::sourceCode): Positions are relative to the beginning of the buffer.
+ Reviewed by Eric Seidel.
- * parser/Nodes.cpp:
- (JSC::ScopeNodeData::ScopeNodeData): Move initialization of ScopeNode data here.
- (JSC::ScopeNode::ScopeNode): Add constructor that only sets the JSGlobalData
- for FunctionBodyNode stubs.
- (JSC::ScopeNode::~ScopeNode): Release m_children now that we don't inherit from
- BlockNode.
- (JSC::ScopeNode::releaseNodes): Ditto.
- (JSC::EvalNode::generateBytecode): Only shrink m_children, as we need to keep around
- the rest of the data.
- (JSC::FunctionBodyNode::FunctionBodyNode): Add constructor that only sets the
- JSGlobalData.
- (JSC::FunctionBodyNode::create): Ditto.
- (JSC::FunctionBodyNode::generateBytecode): If we don't have the data, do a reparse
- to construct it. Then after generation, destroy the data.
- (JSC::ProgramNode::generateBytecode): After generation, destroy the AST data.
- * parser/Nodes.h:
- (JSC::ExpressionNode::): Add isFuncExprNode for FunctionConstructor.
- (JSC::StatementNode::): Add isExprStatementNode for FunctionConstructor.
- (JSC::ExprStatementNode::): Ditto.
- (JSC::ExprStatementNode::expr): Add accessor for FunctionConstructor.
- (JSC::FuncExprNode::): Add isFuncExprNode for FunctionConstructor
-
- (JSC::ScopeNode::adoptData): Adopts a ScopeNodeData.
- (JSC::ScopeNode::data): Accessor for ScopeNodeData.
- (JSC::ScopeNode::destroyData): Deletes the ScopeNodeData.
- (JSC::ScopeNode::setFeatures): Added.
- (JSC::ScopeNode::varStack): Added assert.
- (JSC::ScopeNode::functionStack): Ditto.
- (JSC::ScopeNode::children): Ditto.
- (JSC::ScopeNode::neededConstants): Ditto.
- Factor m_varStack, m_functionStack, m_children and m_numConstants into ScopeNodeData.
+ Removed the "this is part of the KDE project" comments from
+ all *.h, *.cpp, *.idl, and *.pm files.
+
+ https://bugs.webkit.org/show_bug.cgi?id=31167
+
+ The maintenance and architecture page in the project wiki lists
+ this as a task.
+
+ This change includes no changes or additions to test cases
+ since the change affects only comments.
+
+ * wtf/wince/FastMallocWince.h:
- * parser/Parser.cpp:
- (JSC::Parser::reparse): Reparse the SourceCode in the FunctionBodyNode and set
- set up the ScopeNodeData for it.
- * parser/Parser.h:
+2009-11-05 Gabor Loki <loki@inf.u-szeged.hu>
- * parser/SourceCode.h:
- (JSC::SourceCode::endOffset): Added for use in the lexer.
+ Reviewed by Gavin Barraclough.
- * runtime/FunctionConstructor.cpp:
- (JSC::getFunctionBody): Assuming a ProgramNode with one FunctionExpression in it,
- get the FunctionBodyNode. Any issues signifies a parse failure in constructFunction.
- (JSC::constructFunction): Make parsing functions in the form new Function(""), easier
- by concatenating the strings together (with some glue) and parsing the function expression
- as a ProgramNode from which we can receive the FunctionBodyNode. This has the added benefit
- of not having special parsing code for the arguments and lazily constructing the
- FunctionBodyNode's AST on first execution.
+ Use ARMv7 specific encoding for immediate constants on ARMv7 target
+ https://bugs.webkit.org/show_bug.cgi?id=31060
+
+ * assembler/ARMAssembler.cpp:
+ (JSC::ARMAssembler::getOp2): Use INVALID_IMM
+ (JSC::ARMAssembler::getImm): Use encodeComplexImm for complex immediate
+ (JSC::ARMAssembler::moveImm): Ditto.
+ (JSC::ARMAssembler::encodeComplexImm): Encode a constant by one or two
+ instructions or a PC relative load.
+ * assembler/ARMAssembler.h: Use INVALID_IMM if a constant cannot be
+ encoded as an immediate constant.
+ (JSC::ARMAssembler::):
+ (JSC::ARMAssembler::movw_r): 16-bit immediate load
+ (JSC::ARMAssembler::movt_r): High halfword 16-bit immediate load
+ (JSC::ARMAssembler::getImm16Op2): Encode immediate constant for
+ movw_r and mowt_r
+
+2009-11-04 Mark Mentovai <mark@chromium.org>
- * runtime/Identifier.h:
- (JSC::operator!=): Added.
+ Reviewed by Mark Rowe.
-2008-11-20 Sam Weinig <sam@webkit.org>
+ Provide TARGETING_TIGER and TARGETING_LEOPARD as analogues to
+ BUILDING_ON_TIGER and BUILDING_ON_LEOPARD. The TARGETING_ macros
+ consider the deployment target; the BUILDING_ON_ macros consider the
+ headers being built against.
- Reviewed by Geoffrey Garen.
+ * wtf/Platform.h:
- Speedup the lexer to offset coming re-parsing patch.
+2009-11-04 Gavin Barraclough <barraclough@apple.com>
- - .6% progression on Sunspider.
+ Reviewed by Oliver Hunt.
- * bytecompiler/SegmentedVector.h:
- (JSC::SegmentedVector::shrink): Fixed bug where m_size would not be
- set when shrinking to 0.
+ https://bugs.webkit.org/show_bug.cgi?id=31151
+ Fix branchDouble behaviour on ARM THUMB2 JIT.
- * parser/Lexer.cpp:
- (JSC::Lexer::Lexer):
- (JSC::Lexer::isIdentStart): Use isASCIIAlpha and isASCII to avoid going into ICU in the common cases.
- (JSC::Lexer::isIdentPart): Use isASCIIAlphanumeric and isASCII to avoid going into ICU in the common cases
- (JSC::isDecimalDigit): Use version in ASCIICType.h. Inlining it was a regression.
- (JSC::Lexer::isHexDigit): Ditto.
- (JSC::Lexer::isOctalDigit): Ditto.
- (JSC::Lexer::clear): Resize the m_identifiers SegmentedVector to initial
- capacity
- * parser/Lexer.h: Remove unused m_strings vector. Make m_identifiers
- a SegmentedVector<Identifier> to avoid allocating a new Identifier* for
- each identifier found. The SegmentedVector is need so we can passes
- references to the Identifier to the parser, which remain valid even when
- the vector is resized.
- (JSC::Lexer::makeIdentifier): Inline and return a reference to the added
- Identifier.
-
-2008-11-20 Sam Weinig <sam@webkit.org>
+ The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch
+ for DoubleEqualOrUnordered, however this is incorrect – ConditionEQ won't
+ branch on unordered operands. Similarly, DoubleLessThanOrUnordered &
+ DoubleLessThanOrEqualOrUnordered use ARMv7Assembler::ConditionLO &
+ ARMv7Assembler::ConditionLS, whereas they should be using
+ ARMv7Assembler::ConditionLT & ARMv7Assembler::ConditionLE.
- Reviewed by Darin Adler.
+ Fix these, and fill out the missing DoubleConditions.
- Add isASCII to ASCIICType. Use coming soon!
+ * assembler/MacroAssemblerARMv7.h:
+ (JSC::MacroAssemblerARMv7::):
+ (JSC::MacroAssemblerARMv7::branchDouble):
- * wtf/ASCIICType.h:
- (WTF::isASCII):
+2009-11-04 Gavin Barraclough <barraclough@apple.com>
-2008-11-20 Sam Weinig <sam@webkit.org>
+ Rubber Stamped by Oliver Hunt.
- Reviewed by Darin Adler.
+ Enable native call optimizations on ARMv7. (Existing ARM_TRADITIONAL
+ implementation was generic, worked perfectly, just needed turning on).
- Add OwnPtr constructor and OwnPtr::adopt that take an auto_ptr.
+ * jit/JITOpcodes.cpp:
+ * wtf/Platform.h:
- * wtf/OwnPtr.h:
- (WTF::OwnPtr::OwnPtr):
- (WTF::OwnPtr::adopt):
+2009-11-04 Gavin Barraclough <barraclough@apple.com>
-2008-11-20 Alexey Proskuryakov <ap@webkit.org>
+ Rubber Stamped by Mark Rowe, Oliver Hunt, and Sam Weinig.
- Reviewed by Darin Adler.
+ Add a missing assert to the ARMv7 JIT.
- https://bugs.webkit.org/show_bug.cgi?id=22364
- Crashes seen on Tiger buildbots due to worker threads exhausting pthread keys
+ * assembler/ARMv7Assembler.h:
+ (JSC::ARMThumbImmediate::ARMThumbImmediate):
- * runtime/Collector.cpp:
- (JSC::Heap::Heap):
- (JSC::Heap::destroy):
- (JSC::Heap::makeUsableFromMultipleThreads):
- (JSC::Heap::registerThread):
- * runtime/Collector.h:
- Pthread key for tracking threads is only created on request now, because this is a limited
- resource, and thread tracking is not needed for worker heaps, or for WebCore heap.
+2009-11-04 Mark Rowe <mrowe@apple.com>
- * API/JSContextRef.cpp: (JSGlobalContextCreateInGroup): Call makeUsableFromMultipleThreads().
+ Rubber-stamped by Oliver Hunt.
- * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::sharedInstance): Ditto.
+ Remove bogus op_ prefix on dumped version of three opcodes.
- * runtime/JSGlobalData.h: (JSC::JSGlobalData::makeUsableFromMultipleThreads): Just forward
- the call to Heap, which clients need not know about, ideally.
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dump):
-2008-11-20 Geoffrey Garen <ggaren@apple.com>
+2009-11-04 Mark Rowe <mrowe@apple.com>
Reviewed by Sam Weinig.
-
- A little more WREC refactoring.
-
- Removed the "Register" suffix from register names in WREC, and renamed:
- currentPosition => index
- currentValue => character
- quantifierCount => repeatCount
-
- Added a top-level parsePattern function to the WREC parser, which
- allowed me to remove the error() and atEndOfPattern() accessors.
-
- Factored out an MSVC customization into a constant.
-
- Renamed nextLabel => beginPattern.
- * wrec/WREC.cpp:
- (JSC::WREC::compileRegExp):
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateBacktrack1):
- (JSC::WREC::Generator::generateBacktrackBackreference):
- (JSC::WREC::Generator::generateBackreferenceQuantifier):
- (JSC::WREC::Generator::generateNonGreedyQuantifier):
- (JSC::WREC::Generator::generateGreedyQuantifier):
- (JSC::WREC::Generator::generatePatternCharacter):
- (JSC::WREC::Generator::generateCharacterClassInvertedRange):
- (JSC::WREC::Generator::generateCharacterClassInverted):
- (JSC::WREC::Generator::generateCharacterClass):
- (JSC::WREC::Generator::generateParentheses):
- (JSC::WREC::Generator::generateParenthesesResetTrampoline):
- (JSC::WREC::Generator::generateAssertionBOL):
- (JSC::WREC::Generator::generateAssertionEOL):
- (JSC::WREC::Generator::generateAssertionWordBoundary):
- (JSC::WREC::Generator::generateBackreference):
- (JSC::WREC::Generator::generateDisjunction):
- (JSC::WREC::Generator::terminateDisjunction):
- * wrec/WRECGenerator.h:
- * wrec/WRECParser.h:
- (JSC::WREC::Parser::parsePattern):
+ Fix dumping of constants in bytecode so that they aren't printed as large positive register numbers.
-2008-11-19 Geoffrey Garen <ggaren@apple.com>
+ We do this by having the registerName function return information about the constant if the register
+ number corresponds to a constant. This requires that registerName, and several functions that call it,
+ be converted to member functions of CodeBlock so that the constant value can be retrieved. The
+ ExecState also needs to be threaded down through these functions so that it can be passed on to
+ constantName when needed.
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=22361
- A little more RegExp refactoring.
-
- Consistently named variables holding the starting position at which
- regexp matching should begin to "startOffset".
-
- A few more "regExpObject" => "regExpConstructor" changes.
-
- Refactored RegExpObject::match for clarity, and replaced a slow "get"
- of the "global" property with a fast access to the global bit.
-
- Made the error message you see when RegExpObject::match has no input a
- little more informative, as in Firefox.
+ * bytecode/CodeBlock.cpp:
+ (JSC::constantName):
+ (JSC::CodeBlock::registerName):
+ (JSC::CodeBlock::printUnaryOp):
+ (JSC::CodeBlock::printBinaryOp):
+ (JSC::CodeBlock::printConditionalJump):
+ (JSC::CodeBlock::printGetByIdOp):
+ (JSC::CodeBlock::printPutByIdOp):
+ (JSC::CodeBlock::dump):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::isConstantRegisterIndex):
- * runtime/RegExp.cpp:
- (JSC::RegExp::match):
- * runtime/RegExp.h:
- * runtime/RegExpObject.cpp:
- (JSC::RegExpObject::match):
- * runtime/StringPrototype.cpp:
- (JSC::stringProtoFuncReplace):
- (JSC::stringProtoFuncMatch):
- (JSC::stringProtoFuncSearch):
+2009-11-04 Pavel Heimlich <tropikhajma@gmail.com>
-2008-11-19 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Alexey Proskuryakov.
- Reviewed by Sam Weinig.
-
- A little more refactoring.
-
- Removed the "emit" and "emitUnlinked" prefixes from the assembler.
-
- Moved the JmpSrc and JmpDst class definitions to the top of the X86
- assembler class, in accordance with WebKit style guidelines.
+ https://bugs.webkit.org/show_bug.cgi?id=30647
+ Solaris build failure due to strnstr.
- * assembler/X86Assembler.h:
- (JSC::X86Assembler::JmpSrc::JmpSrc):
- (JSC::X86Assembler::JmpDst::JmpDst):
- (JSC::X86Assembler::int3):
- (JSC::X86Assembler::pushl_m):
- (JSC::X86Assembler::popl_m):
- (JSC::X86Assembler::movl_rr):
- (JSC::X86Assembler::addl_rr):
- (JSC::X86Assembler::addl_i8r):
- (JSC::X86Assembler::addl_i8m):
- (JSC::X86Assembler::addl_i32r):
- (JSC::X86Assembler::addl_mr):
- (JSC::X86Assembler::andl_rr):
- (JSC::X86Assembler::andl_i32r):
- (JSC::X86Assembler::cmpl_i8r):
- (JSC::X86Assembler::cmpl_rr):
- (JSC::X86Assembler::cmpl_rm):
- (JSC::X86Assembler::cmpl_mr):
- (JSC::X86Assembler::cmpl_i32r):
- (JSC::X86Assembler::cmpl_i32m):
- (JSC::X86Assembler::cmpl_i8m):
- (JSC::X86Assembler::cmpw_rm):
- (JSC::X86Assembler::orl_rr):
- (JSC::X86Assembler::orl_mr):
- (JSC::X86Assembler::orl_i32r):
- (JSC::X86Assembler::subl_rr):
- (JSC::X86Assembler::subl_i8r):
- (JSC::X86Assembler::subl_i8m):
- (JSC::X86Assembler::subl_i32r):
- (JSC::X86Assembler::subl_mr):
- (JSC::X86Assembler::testl_i32r):
- (JSC::X86Assembler::testl_i32m):
- (JSC::X86Assembler::testl_rr):
- (JSC::X86Assembler::xorl_i8r):
- (JSC::X86Assembler::xorl_rr):
- (JSC::X86Assembler::sarl_i8r):
- (JSC::X86Assembler::sarl_CLr):
- (JSC::X86Assembler::shl_i8r):
- (JSC::X86Assembler::shll_CLr):
- (JSC::X86Assembler::imull_rr):
- (JSC::X86Assembler::imull_i32r):
- (JSC::X86Assembler::idivl_r):
- (JSC::X86Assembler::negl_r):
- (JSC::X86Assembler::movl_mr):
- (JSC::X86Assembler::movzbl_rr):
- (JSC::X86Assembler::movzwl_mr):
- (JSC::X86Assembler::movl_rm):
- (JSC::X86Assembler::movl_i32r):
- (JSC::X86Assembler::movl_i32m):
- (JSC::X86Assembler::leal_mr):
- (JSC::X86Assembler::jmp_r):
- (JSC::X86Assembler::jmp_m):
- (JSC::X86Assembler::movsd_mr):
- (JSC::X86Assembler::xorpd_mr):
- (JSC::X86Assembler::movsd_rm):
- (JSC::X86Assembler::movd_rr):
- (JSC::X86Assembler::cvtsi2sd_rr):
- (JSC::X86Assembler::cvttsd2si_rr):
- (JSC::X86Assembler::addsd_mr):
- (JSC::X86Assembler::subsd_mr):
- (JSC::X86Assembler::mulsd_mr):
- (JSC::X86Assembler::addsd_rr):
- (JSC::X86Assembler::subsd_rr):
- (JSC::X86Assembler::mulsd_rr):
- (JSC::X86Assembler::ucomis_rr):
- (JSC::X86Assembler::pextrw_irr):
- (JSC::X86Assembler::call):
- (JSC::X86Assembler::jmp):
- (JSC::X86Assembler::jne):
- (JSC::X86Assembler::jnz):
- (JSC::X86Assembler::je):
- (JSC::X86Assembler::jl):
- (JSC::X86Assembler::jb):
- (JSC::X86Assembler::jle):
- (JSC::X86Assembler::jbe):
- (JSC::X86Assembler::jge):
- (JSC::X86Assembler::jg):
- (JSC::X86Assembler::ja):
- (JSC::X86Assembler::jae):
- (JSC::X86Assembler::jo):
- (JSC::X86Assembler::jp):
- (JSC::X86Assembler::js):
- (JSC::X86Assembler::predictNotTaken):
- (JSC::X86Assembler::convertToFastCall):
- (JSC::X86Assembler::restoreArgumentReference):
- (JSC::X86Assembler::restoreArgumentReferenceForTrampoline):
- (JSC::X86Assembler::modRm_rr):
- (JSC::X86Assembler::modRm_rr_Unchecked):
- (JSC::X86Assembler::modRm_rm):
- (JSC::X86Assembler::modRm_rm_Unchecked):
- (JSC::X86Assembler::modRm_rmsib):
- (JSC::X86Assembler::modRm_opr):
- (JSC::X86Assembler::modRm_opr_Unchecked):
- (JSC::X86Assembler::modRm_opm):
- (JSC::X86Assembler::modRm_opm_Unchecked):
- (JSC::X86Assembler::modRm_opmsib):
- * jit/JIT.cpp:
- (JSC::JIT::emitNakedCall):
- (JSC::JIT::emitNakedFastCall):
- (JSC::JIT::emitCTICall):
- (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
- (JSC::JIT::emitJumpSlowCaseIfNotImmNum):
- (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
- (JSC::JIT::emitFastArithIntToImmOrSlowCase):
- (JSC::JIT::emitArithIntToImmWithJump):
- (JSC::JIT::compileOpCall):
- (JSC::JIT::compileOpStrictEq):
- (JSC::JIT::emitSlowScriptCheck):
- (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate):
- (JSC::JIT::compileBinaryArithOp):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileSlowCases):
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileGetByIdSelf):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdChain):
- (JSC::JIT::privateCompilePutByIdReplace):
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- * wrec/WREC.cpp:
- (JSC::WREC::compileRegExp):
- * wrec/WRECGenerator.cpp:
- (JSC::WREC::Generator::generateBackreferenceQuantifier):
- (JSC::WREC::Generator::generateNonGreedyQuantifier):
- (JSC::WREC::Generator::generateGreedyQuantifier):
- (JSC::WREC::Generator::generatePatternCharacter):
- (JSC::WREC::Generator::generateCharacterClassInvertedRange):
- (JSC::WREC::Generator::generateCharacterClassInverted):
- (JSC::WREC::Generator::generateCharacterClass):
- (JSC::WREC::Generator::generateParentheses):
- (JSC::WREC::Generator::generateParenthesesNonGreedy):
- (JSC::WREC::Generator::generateParenthesesResetTrampoline):
- (JSC::WREC::Generator::generateAssertionBOL):
- (JSC::WREC::Generator::generateAssertionEOL):
- (JSC::WREC::Generator::generateAssertionWordBoundary):
- (JSC::WREC::Generator::generateBackreference):
- (JSC::WREC::Generator::generateDisjunction):
-
-2008-11-19 Simon Hausmann <hausmann@webkit.org>
-
- Sun CC build fix, removed trailing comman for last enum value.
+ * wtf/StringExtras.h: Enable strnstr on Solaris, too.
- * wtf/unicode/qt4/UnicodeQt4.h:
- (WTF::Unicode::):
+2009-11-04 Gavin Barraclough <barraclough@apple.com>
-2008-11-19 Mark Rowe <mrowe@apple.com>
+ Reviewed by Oliver Hunt.
- Reviewed by Alexey Proskuryakov.
+ https://bugs.webkit.org/show_bug.cgi?id=31104
+ Refactor x86-specific behaviour out of the JIT.
- Expand the workaround for Apple GCC compiler bug <rdar://problem/6354696> to all versions of GCC 4.0.1.
- It has been observed with builds 5465 (Xcode 3.0) and 5484 (Xcode 3.1), and there is no evidence
- that it has been fixed in newer builds of GCC 4.0.1.
+ - Add explicit double branch conditions for ordered and unordered comparisons (presently the brehaviour is a mix).
+ - Refactor double to int conversion out into the MacroAssembler.
+ - 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.
+ - 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.
- This addresses <https://bugs.webkit.org/show_bug.cgi?id=22351> (WebKit nightly crashes on launch on 10.4.11).
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::):
+ * assembler/MacroAssemblerARMv7.h:
+ (JSC::MacroAssemblerARMv7::):
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::):
+ (JSC::MacroAssemblerX86Common::convertInt32ToDouble):
+ (JSC::MacroAssemblerX86Common::branchDouble):
+ (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitBinaryDoubleOp):
+ (JSC::JIT::emit_op_div):
+ (JSC::JIT::emitSlow_op_jnless):
+ (JSC::JIT::emitSlow_op_jnlesseq):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_jfalse):
- * wtf/StdLibExtras.h:
+2009-11-04 Mark Mentovai <mark@chromium.org>
-2008-11-18 Cameron Zwarich <zwarich@apple.com>
+ Reviewed by Eric Seidel.
- Reviewed by Maciej Stachowiak and Geoff Garen.
+ Remove BUILDING_ON_LEOPARD from JavaScriptCore.gyp. This is supposed
+ to be set as needed only in wtf/Platform.h.
- Bug 22287: ASSERTION FAILED: Not enough jumps linked in slow case codegen in CTI::privateCompileSlowCases())
- <https://bugs.webkit.org/show_bug.cgi?id=22287>
+ * JavaScriptCore.gyp/JavaScriptCore.gyp:
- Fix a typo in the number cell reuse code where the first and second
- operands are sometimes confused.
+2009-11-02 Oliver Hunt <oliver@apple.com>
- * jit/JIT.cpp:
- (JSC::JIT::compileBinaryArithOpSlowCase):
+ Reviewed by Gavin Barraclough.
-2008-11-18 Dan Bernstein <mitz@apple.com>
+ REGRESSION (r48573): JSC may incorrectly cache chain lookups with a dictionary at the head of the chain
+ https://bugs.webkit.org/show_bug.cgi?id=31045
- - try to fix the Windows build
+ Add guards to prevent caching of prototype chain lookups with dictionaries at the
+ head of the chain. Also add a few tighter assertions to cached prototype lookups
+ to catch this in future.
* interpreter/Interpreter.cpp:
+ (JSC::Interpreter::tryCacheGetByID):
(JSC::Interpreter::privateExecute):
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::tryCacheGetByID):
-2008-11-18 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Minor RegExp cleanup.
-
- SunSpider says no change.
-
- * runtime/RegExpObject.cpp:
- (JSC::RegExpObject::match): Renamed "regExpObj" to "regExpConstructor".
-
- * wrec/WREC.cpp:
- (JSC::WREC::compileRegExp): Instead of checking for a NULL output vector,
- ASSERT that the output vector is not NULL. (The rest of WREC is not
- safe to use with a NULL output vector, and we probably don't want to
- spend the time and/or performance to make it safe.)
-
-2008-11-18 Geoffrey Garen <ggaren@apple.com>
+2009-11-02 Laszlo Gombos <laszlo.1.gombos@nokia.com>
Reviewed by Darin Adler.
-
- A little more renaming and refactoring.
-
- VM_CHECK_EXCEPTION() => CHECK_FOR_EXCEPTION().
- NEXT_INSTRUCTION => NEXT_INSTRUCTION().
- Removed the "Error_" and "TempError_" prefixes from WREC error types.
+ PLATFORM(CF) should be set when building for Qt on Darwin
+ https://bugs.webkit.org/show_bug.cgi?id=23671
- Refactored the WREC parser so it doesn't need a "setError" function,
- and changed "isEndOfPattern" and its use -- they read kind of backwards
- before.
-
- Changed our "TODO:" error messages at least to say something, since you
- can't say "TODO:" in shipping software.
+ * wtf/Platform.h: Turn on CF support if both QT and DARWIN
+ platforms are defined.
- * interpreter/Interpreter.cpp:
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::cti_op_convert_this):
- (JSC::Interpreter::cti_op_add):
- (JSC::Interpreter::cti_op_pre_inc):
- (JSC::Interpreter::cti_op_loop_if_less):
- (JSC::Interpreter::cti_op_loop_if_lesseq):
- (JSC::Interpreter::cti_op_put_by_id):
- (JSC::Interpreter::cti_op_put_by_id_second):
- (JSC::Interpreter::cti_op_put_by_id_generic):
- (JSC::Interpreter::cti_op_put_by_id_fail):
- (JSC::Interpreter::cti_op_get_by_id):
- (JSC::Interpreter::cti_op_get_by_id_second):
- (JSC::Interpreter::cti_op_get_by_id_generic):
- (JSC::Interpreter::cti_op_get_by_id_fail):
- (JSC::Interpreter::cti_op_instanceof):
- (JSC::Interpreter::cti_op_del_by_id):
- (JSC::Interpreter::cti_op_mul):
- (JSC::Interpreter::cti_op_call_NotJSFunction):
- (JSC::Interpreter::cti_op_resolve):
- (JSC::Interpreter::cti_op_construct_NotJSConstruct):
- (JSC::Interpreter::cti_op_get_by_val):
- (JSC::Interpreter::cti_op_resolve_func):
- (JSC::Interpreter::cti_op_sub):
- (JSC::Interpreter::cti_op_put_by_val):
- (JSC::Interpreter::cti_op_put_by_val_array):
- (JSC::Interpreter::cti_op_lesseq):
- (JSC::Interpreter::cti_op_loop_if_true):
- (JSC::Interpreter::cti_op_negate):
- (JSC::Interpreter::cti_op_resolve_skip):
- (JSC::Interpreter::cti_op_resolve_global):
- (JSC::Interpreter::cti_op_div):
- (JSC::Interpreter::cti_op_pre_dec):
- (JSC::Interpreter::cti_op_jless):
- (JSC::Interpreter::cti_op_not):
- (JSC::Interpreter::cti_op_jtrue):
- (JSC::Interpreter::cti_op_post_inc):
- (JSC::Interpreter::cti_op_eq):
- (JSC::Interpreter::cti_op_lshift):
- (JSC::Interpreter::cti_op_bitand):
- (JSC::Interpreter::cti_op_rshift):
- (JSC::Interpreter::cti_op_bitnot):
- (JSC::Interpreter::cti_op_resolve_with_base):
- (JSC::Interpreter::cti_op_mod):
- (JSC::Interpreter::cti_op_less):
- (JSC::Interpreter::cti_op_neq):
- (JSC::Interpreter::cti_op_post_dec):
- (JSC::Interpreter::cti_op_urshift):
- (JSC::Interpreter::cti_op_bitxor):
- (JSC::Interpreter::cti_op_bitor):
- (JSC::Interpreter::cti_op_push_scope):
- (JSC::Interpreter::cti_op_to_jsnumber):
- (JSC::Interpreter::cti_op_in):
- (JSC::Interpreter::cti_op_del_by_val):
- * wrec/WREC.cpp:
- (JSC::WREC::compileRegExp):
- * wrec/WRECParser.cpp:
- (JSC::WREC::Parser::parseGreedyQuantifier):
- (JSC::WREC::Parser::parseParentheses):
- (JSC::WREC::Parser::parseCharacterClass):
- (JSC::WREC::Parser::parseEscape):
- * wrec/WRECParser.h:
- (JSC::WREC::Parser::):
- (JSC::WREC::Parser::atEndOfPattern):
-
-2008-11-18 Alexey Proskuryakov <ap@webkit.org>
+2009-11-02 Dmitry Titov <dimich@chromium.org>
- Reviewed by Darin Adler.
+ Reviewed by David Levin.
- https://bugs.webkit.org/show_bug.cgi?id=22337
- Enable workers by default
+ Remove threadsafe refcounting from tasks used with WTF::MessageQueue.
+ https://bugs.webkit.org/show_bug.cgi?id=30612
- * Configurations/JavaScriptCore.xcconfig: Define ENABLE_WORKERS.
+ * wtf/MessageQueue.h:
+ (WTF::MessageQueue::alwaysTruePredicate):
+ (WTF::MessageQueue::~MessageQueue):
+ (WTF::MessageQueue::append):
+ (WTF::MessageQueue::appendAndCheckEmpty):
+ (WTF::MessageQueue::prepend):
+ (WTF::MessageQueue::waitForMessage):
+ (WTF::MessageQueue::waitForMessageFilteredWithTimeout):
+ (WTF::MessageQueue::tryGetMessage):
+ (WTF::MessageQueue::removeIf):
+ The MessageQueue is changed to act as a queue of OwnPtr<DataType>. It takes ownership
+ of posted tasks and passes it to the new owner (in another thread) when the task is fetched.
+ All methods have arguments of type PassOwnPtr<DataType> and return the same type.
-2008-11-18 Alexey Proskuryakov <ap@webkit.org>
+ * wtf/Threading.cpp:
+ (WTF::createThread):
+ Superficial change to trigger rebuild of JSC project on Windows,
+ workaround for https://bugs.webkit.org/show_bug.cgi?id=30890
- - Windows build fix
+2009-10-30 Geoffrey Garen <ggaren@apple.com>
- * wrec/WRECFunctors.h:
- * wrec/WRECGenerator.h:
- * wrec/WRECParser.h:
- CharacterClass is a struct, not a class, fix forward declarations.
+ Reviewed by Oliver Hunt.
-2008-11-18 Dan Bernstein <mitz@apple.com>
+ Fixed failing layout test: restore a special case I accidentally deleted.
- - Windows build fix
+ * runtime/DatePrototype.cpp:
+ (JSC::setNewValueFromDateArgs): In the case of applying a change to a date
+ that is NaN, reset the date to 0 *and* then apply the change; don't just
+ reset the date to 0.
- * assembler/X86Assembler.h:
+2009-10-30 Geoffrey Garen <ggaren@apple.com>
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ Windows build fix: update for object-to-pointer change.
- Not reviewed.
-
- Try to fix gtk build.
+ * runtime/DatePrototype.cpp:
+ (JSC::formatLocaleDate):
- * wrec/Quantifier.h:
+2009-10-29 Geoffrey Garen <ggaren@apple.com>
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Darin Adler.
- Not reviewed.
+ https://bugs.webkit.org/show_bug.cgi?id=30942
+ Use pointers instead of copies to pass GregorianDateTime objects around.
- Try to fix gtk build.
+ SunSpider reports a shocking 4.5% speedup on date-format-xparb, and 1.3%
+ speedup on date-format-tofte.
- * assembler/AssemblerBuffer.h:
+ * runtime/DateInstance.cpp:
+ (JSC::DateInstance::gregorianDateTime):
+ * runtime/DateInstance.h:
+ * runtime/DatePrototype.cpp:
+ (JSC::formatLocaleDate):
+ (JSC::dateProtoFuncToString):
+ (JSC::dateProtoFuncToUTCString):
+ (JSC::dateProtoFuncToISOString):
+ (JSC::dateProtoFuncToDateString):
+ (JSC::dateProtoFuncToTimeString):
+ (JSC::dateProtoFuncGetFullYear):
+ (JSC::dateProtoFuncGetUTCFullYear):
+ (JSC::dateProtoFuncToGMTString):
+ (JSC::dateProtoFuncGetMonth):
+ (JSC::dateProtoFuncGetUTCMonth):
+ (JSC::dateProtoFuncGetDate):
+ (JSC::dateProtoFuncGetUTCDate):
+ (JSC::dateProtoFuncGetDay):
+ (JSC::dateProtoFuncGetUTCDay):
+ (JSC::dateProtoFuncGetHours):
+ (JSC::dateProtoFuncGetUTCHours):
+ (JSC::dateProtoFuncGetMinutes):
+ (JSC::dateProtoFuncGetUTCMinutes):
+ (JSC::dateProtoFuncGetSeconds):
+ (JSC::dateProtoFuncGetUTCSeconds):
+ (JSC::dateProtoFuncGetTimezoneOffset):
+ (JSC::setNewValueFromTimeArgs):
+ (JSC::setNewValueFromDateArgs):
+ (JSC::dateProtoFuncSetYear):
+ (JSC::dateProtoFuncGetYear): Renamed getGregorianDateTime to gregorianDateTime,
+ since it no longer has an out parameter. Uses 0 to indicate invalid dates.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+2009-10-30 Zoltan Horvath <zoltan@webkit.org>
- Reviewed by Sam Weinig.
-
- Split WREC classes out into individual files, with a few modifications
- to more closely match the WebKit coding style.
+ Reviewed by Darin Adler.
- * GNUmakefile.am:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * assembler/X86Assembler.h:
- * runtime/RegExp.cpp:
- * wrec/CharacterClass.cpp: Copied from wrec/CharacterClassConstructor.cpp.
- (JSC::WREC::CharacterClass::newline):
- (JSC::WREC::CharacterClass::digits):
- (JSC::WREC::CharacterClass::spaces):
- (JSC::WREC::CharacterClass::wordchar):
- (JSC::WREC::CharacterClass::nondigits):
- (JSC::WREC::CharacterClass::nonspaces):
- (JSC::WREC::CharacterClass::nonwordchar):
- * wrec/CharacterClass.h: Copied from wrec/CharacterClassConstructor.h.
- * wrec/CharacterClassConstructor.cpp:
- (JSC::WREC::CharacterClassConstructor::addSortedRange):
- (JSC::WREC::CharacterClassConstructor::append):
- * wrec/CharacterClassConstructor.h:
- * wrec/Quantifier.h: Copied from wrec/WREC.h.
- * wrec/WREC.cpp:
- (JSC::WREC::compileRegExp):
- * wrec/WREC.h:
- * wrec/WRECFunctors.cpp: Copied from wrec/WREC.cpp.
- * wrec/WRECFunctors.h: Copied from wrec/WREC.cpp.
- (JSC::WREC::GenerateAtomFunctor::~GenerateAtomFunctor):
- (JSC::WREC::GeneratePatternCharacterFunctor::GeneratePatternCharacterFunctor):
- (JSC::WREC::GenerateCharacterClassFunctor::GenerateCharacterClassFunctor):
- (JSC::WREC::GenerateBackreferenceFunctor::GenerateBackreferenceFunctor):
- (JSC::WREC::GenerateParenthesesNonGreedyFunctor::GenerateParenthesesNonGreedyFunctor):
- * wrec/WRECGenerator.cpp: Copied from wrec/WREC.cpp.
- (JSC::WREC::Generator::generatePatternCharacter):
- (JSC::WREC::Generator::generateCharacterClassInvertedRange):
- (JSC::WREC::Generator::generateCharacterClassInverted):
- (JSC::WREC::Generator::generateCharacterClass):
- (JSC::WREC::Generator::generateParentheses):
- (JSC::WREC::Generator::generateAssertionBOL):
- (JSC::WREC::Generator::generateAssertionEOL):
- (JSC::WREC::Generator::generateAssertionWordBoundary):
- * wrec/WRECGenerator.h: Copied from wrec/WREC.h.
- * wrec/WRECParser.cpp: Copied from wrec/WREC.cpp.
- (JSC::WREC::Parser::parseGreedyQuantifier):
- (JSC::WREC::Parser::parseCharacterClassQuantifier):
- (JSC::WREC::Parser::parseParentheses):
- (JSC::WREC::Parser::parseCharacterClass):
- (JSC::WREC::Parser::parseEscape):
- (JSC::WREC::Parser::parseTerm):
- * wrec/WRECParser.h: Copied from wrec/WREC.h.
- (JSC::WREC::Parser::):
- (JSC::WREC::Parser::Parser):
- (JSC::WREC::Parser::setError):
- (JSC::WREC::Parser::error):
- (JSC::WREC::Parser::recordSubpattern):
- (JSC::WREC::Parser::numSubpatterns):
- (JSC::WREC::Parser::ignoreCase):
- (JSC::WREC::Parser::multiline):
-
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
-
- Not reviewed.
-
- Try to fix a few builds.
+ Allow custom memory allocation control for JavaScriptCore's ListHashSet
+ https://bugs.webkit.org/show_bug.cgi?id=30853
- * JavaScriptCoreSources.bkl:
+ Inherits ListHashSet class from FastAllocBase because it is
+ instantiated by 'new' in WebCore/rendering/RenderBlock.cpp:1813.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ * wtf/ListHashSet.h:
- Not reviewed.
-
- Try to fix a few builds.
+2009-10-30 Oliver Hunt <oliver@apple.com>
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ Reviewed by Gavin Barraclough.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ Regression: crash enumerating properties of an object with getters or setters
+ https://bugs.webkit.org/show_bug.cgi?id=30948
- Reviewed by Sam Weinig.
-
- Moved VM/CTI.* => jit/JIT.*.
-
- Removed VM.
+ Add a guard to prevent us trying to cache property enumeration on
+ objects with getters or setters.
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CTI.cpp: Removed.
- * VM/CTI.h: Removed.
- * bytecode/CodeBlock.cpp:
- * interpreter/Interpreter.cpp:
- * jit: Added.
- * jit/JIT.cpp: Copied from VM/CTI.cpp.
- * jit/JIT.h: Copied from VM/CTI.h.
- * runtime/RegExp.cpp:
+ * runtime/JSPropertyNameIterator.cpp:
+ (JSC::JSPropertyNameIterator::create):
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+2009-10-30 Roland Steiner <rolandsteiner@chromium.org>
- Reviewed by Sam Weinig.
-
- Moved runtime/ExecState.* => interpreter/CallFrame.*.
+ Reviewed by Eric Seidel.
- * API/JSBase.cpp:
- * API/OpaqueJSString.cpp:
- * GNUmakefile.am:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * debugger/DebuggerCallFrame.h:
- * interpreter/CallFrame.cpp: Copied from runtime/ExecState.cpp.
- * interpreter/CallFrame.h: Copied from runtime/ExecState.h.
- * interpreter/Interpreter.cpp:
- * parser/Nodes.cpp:
- * profiler/ProfileGenerator.cpp:
- * profiler/Profiler.cpp:
- * runtime/ClassInfo.h:
- * runtime/Collector.cpp:
- * runtime/Completion.cpp:
- * runtime/ExceptionHelpers.cpp:
- * runtime/ExecState.cpp: Removed.
- * runtime/ExecState.h: Removed.
- * runtime/Identifier.cpp:
- * runtime/JSFunction.cpp:
- * runtime/JSGlobalObjectFunctions.cpp:
- * runtime/JSLock.cpp:
- * runtime/JSNumberCell.h:
- * runtime/JSObject.h:
- * runtime/JSString.h:
- * runtime/Lookup.h:
- * runtime/PropertyNameArray.h:
+ Remove ENABLE_RUBY guards as discussed with Dave Hyatt and Maciej Stachowiak.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ Bug 28420 - Implement HTML5 <ruby> rendering
+ (https://bugs.webkit.org/show_bug.cgi?id=28420)
+
+ No new tests (no functional change).
- Not reviewed.
-
- Try to fix Windows build.
+ * Configurations/FeatureDefines.xcconfig:
- * API/APICast.h:
+2009-10-29 Oliver Hunt <oliver@apple.com>
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Maciej Stachowiak.
- Not reviewed.
-
- Try to fix Windows build.
+ REGRESSION (r50218-r50262): E*TRADE accounts page is missing content
+ https://bugs.webkit.org/show_bug.cgi?id=30947
+ <rdar://problem/7348833>
- * API/APICast.h:
- * runtime/ExecState.h:
+ The logic for flagging that a structure has non-enumerable properties
+ was in addPropertyWithoutTransition, rather than in the core Structure::put
+ method. Despite this I was unable to produce a testcase that caused
+ the failure that etrade was experiencing, but the new assertion in
+ getEnumerablePropertyNames triggers on numerous layout tests without
+ the fix, so in effecti all for..in enumeration in any test ends up
+ doing the required consistency check.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ * runtime/Structure.cpp:
+ (JSC::Structure::addPropertyWithoutTransition):
+ (JSC::Structure::put):
+ (JSC::Structure::getEnumerablePropertyNames):
+ (JSC::Structure::checkConsistency):
- Reviewed by Sam Weinig.
-
- Moved VM/SamplingTool.* => bytecode/SamplingTool.*.
+2009-10-29 Gabor Loki <loki@inf.u-szeged.hu>
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/SamplingTool.cpp: Removed.
- * VM/SamplingTool.h: Removed.
- * bytecode/SamplingTool.cpp: Copied from VM/SamplingTool.cpp.
- * bytecode/SamplingTool.h: Copied from VM/SamplingTool.h.
- * jsc.cpp:
- (runWithScripts):
+ Reviewed by Gavin Barraclough.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ Add cacheFlush support for Thumb-2 on Linux
+ https://bugs.webkit.org/show_bug.cgi?id=30865
- Not reviewed.
-
- Try to fix Windows build.
+ * jit/ExecutableAllocator.h:
+ (JSC::ExecutableAllocator::cacheFlush):
+
+2009-10-28 Gavin Barraclough <barraclough@apple.com>
- * runtime/ExecState.h:
+ Reviewed by Oliver Hunt.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ JSC JIT on ARMv7 cannot link jumps >16Mb range
+ https://bugs.webkit.org/show_bug.cgi?id=30891
- Reviewed by Sam Weinig.
-
- Moved VM/ExceptionHelpers.cpp => runtime/ExceptionHelpers.cpp.
+ Start planing all relative jumps as move-32-bit-immediate-to-register-BX.
+ In the cases where the jump would fall within a relative jump range, use a relative jump.
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
* JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/ExceptionHelpers.cpp: Removed.
- * runtime/ExceptionHelpers.cpp: Copied from VM/ExceptionHelpers.cpp.
+ * assembler/ARMv7Assembler.h:
+ (JSC::ARMv7Assembler::~ARMv7Assembler):
+ (JSC::ARMv7Assembler::LinkRecord::LinkRecord):
+ (JSC::ARMv7Assembler::):
+ (JSC::ARMv7Assembler::executableCopy):
+ (JSC::ARMv7Assembler::linkJump):
+ (JSC::ARMv7Assembler::relinkJump):
+ (JSC::ARMv7Assembler::setInt32):
+ (JSC::ARMv7Assembler::isB):
+ (JSC::ARMv7Assembler::isBX):
+ (JSC::ARMv7Assembler::isMOV_imm_T3):
+ (JSC::ARMv7Assembler::isMOVT):
+ (JSC::ARMv7Assembler::isNOP_T1):
+ (JSC::ARMv7Assembler::isNOP_T2):
+ (JSC::ARMv7Assembler::linkJumpAbsolute):
+ (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmFirst):
+ (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmSecond):
+ (JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp5i6Imm4Reg4EncodedImm):
+ * assembler/MacroAssemblerARMv7.h:
+ (JSC::MacroAssemblerARMv7::makeJump):
+ (JSC::MacroAssemblerARMv7::makeBranch):
+ * jit/JIT.h:
+ * wtf/Platform.h:
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+2009-10-28 Oliver Hunt <oliver@apple.com>
- Reviewed by Sam Weinig.
-
- Moved VM/RegisterFile.cpp => interpreter/RegisterFile.cpp.
+ Reviewed by Geoff Garen.
- * AllInOneFile.cpp:
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/RegisterFile.cpp: Removed.
- * interpreter/RegisterFile.cpp: Copied from VM/RegisterFile.cpp.
+ Improve for..in enumeration performance
+ https://bugs.webkit.org/show_bug.cgi?id=30887
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ Improve indexing of an object with a for..in iterator by
+ identifying cases where get_by_val is being used with a iterator
+ as the subscript and replace it with a new get_by_pname
+ bytecode. get_by_pname then optimizes lookups that directly access
+ the base object.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dump):
+ * bytecode/Opcode.h:
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitGetByVal):
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::pushOptimisedForIn):
+ (JSC::BytecodeGenerator::popOptimisedForIn):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ * jit/JIT.h:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::compileGetDirectOffset):
+ (JSC::JIT::emit_op_get_by_pname):
+ (JSC::JIT::emitSlow_op_get_by_pname):
+ * parser/Nodes.cpp:
+ (JSC::ForInNode::emitBytecode):
+ * runtime/JSObject.h:
+ * runtime/JSPropertyNameIterator.cpp:
+ (JSC::JSPropertyNameIterator::create):
+ * runtime/JSPropertyNameIterator.h:
+ (JSC::JSPropertyNameIterator::getOffset):
+ (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
+ * runtime/JSValue.h:
+ (JSC::JSValue::):
+ * runtime/Structure.cpp:
+ (JSC::Structure::addPropertyTransition):
+ (JSC::Structure::changePrototypeTransition):
+ (JSC::Structure::despecifyFunctionTransition):
+ (JSC::Structure::addAnonymousSlotsTransition):
+ (JSC::Structure::getterSetterTransition):
+ (JSC::Structure::toDictionaryTransition):
+ (JSC::Structure::addPropertyWithoutTransition):
+ Track the existence (or not) of non-enumerable properties.
+ * runtime/Structure.h:
+ (JSC::Structure::propertyStorageCapacity):
+ (JSC::Structure::propertyStorageSize):
+ (JSC::Structure::hasNonEnumerableProperties):
+ (JSC::Structure::hasAnonymousSlots):
- Not reviewed.
-
- Try to fix Windows build.
+2009-10-28 Dmitry Titov <dimich@chromium.org>
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ Not reviewed, attemp to fix Windows build.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ Touch the cpp file to cause recompile.
- Not reviewed.
-
- Try to fix Windows build.
+ * wtf/Threading.cpp:
+ (WTF::threadEntryPoint):
- * JavaScriptCore.vcproj/jsc/jsc.vcproj:
+2009-10-28 Dmitry Titov <dimich@chromium.org>
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by David Levin.
- Not reviewed.
-
- Try to fix Windows build.
+ https://bugs.webkit.org/show_bug.cgi?id=30805
+ Add MessageQueue::removeIf(Predicate&) to remove certain tasks without pulling them from the queue.
+ Existing Database tests cover this since Database removes tasks when it is stopped.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * wtf/MessageQueue.h:
+ (WTF::::removeIf):
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+2009-10-28 Afonso R. Costa Jr. <afonso.costa@openbossa.org>
- Reviewed by Sam Weinig.
-
- Moved:
- VM/ExceptionHelpers.h => runtime/ExceptionHelpers.h
- VM/Register.h => interpreter/Register.h
- VM/RegisterFile.h => interpreter/RegisterFile.h
-
-
- * GNUmakefile.am:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/ExceptionHelpers.h: Removed.
- * VM/Register.h: Removed.
- * VM/RegisterFile.h: Removed.
- * interpreter/Register.h: Copied from VM/Register.h.
- * interpreter/RegisterFile.h: Copied from VM/RegisterFile.h.
- * runtime/ExceptionHelpers.h: Copied from VM/ExceptionHelpers.h.
+ Reviewed by Oliver Hunt.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ [Qt] Enable YARR when YARR_JIT is enabled
+ https://bugs.webkit.org/show_bug.cgi?id=30730
- Not reviewed.
-
- Try to fix Qt build.
+ When enabling or disabling JIT using JAVASCRIPTCORE_JIT, the ENABLE_YARR should
+ be toggled also.
* JavaScriptCore.pri:
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+2009-10-24 Martin Robinson <martin.james.robinson@gmail.com>
- Reviewed by Sam Weinig.
-
- Moved VM/Machine.cpp => interpreter/Interpreter.cpp.
+ Reviewed by Oliver Hunt.
- * DerivedSources.make:
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/Machine.cpp: Removed.
- * interpreter/Interpreter.cpp: Copied from VM/Machine.cpp.
+ Fix strict aliasing warning by switching reinterpret_cast to bitwise_cast.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ strict-aliasing warnings in JSFunction.h
+ https://bugs.webkit.org/show_bug.cgi?id=27869
- Reviewed by Sam Weinig.
-
- Moved VM/Machine.h => interpreter/Interpreter.h
+ * runtime/JSFunction.h:
+ (JSC::JSFunction::nativeFunction):
+ (JSC::JSFunction::scopeChain):
+ (JSC::JSFunction::setScopeChain):
+ (JSC::JSFunction::setNativeFunction):
- * GNUmakefile.am:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CTI.cpp:
- * VM/CTI.h:
- * VM/ExceptionHelpers.cpp:
- * VM/Machine.cpp:
- * VM/Machine.h: Removed.
- * VM/SamplingTool.cpp:
- * bytecode/CodeBlock.cpp:
- * bytecompiler/BytecodeGenerator.cpp:
- * bytecompiler/BytecodeGenerator.h:
- * debugger/DebuggerCallFrame.cpp:
- * interpreter: Added.
- * interpreter/Interpreter.h: Copied from VM/Machine.h.
- * profiler/ProfileGenerator.cpp:
- * runtime/Arguments.h:
- * runtime/ArrayPrototype.cpp:
- * runtime/Collector.cpp:
- * runtime/Completion.cpp:
- * runtime/ExecState.h:
- * runtime/FunctionPrototype.cpp:
- * runtime/JSActivation.cpp:
- * runtime/JSFunction.cpp:
- * runtime/JSGlobalData.cpp:
- * runtime/JSGlobalObject.cpp:
- * runtime/JSGlobalObjectFunctions.cpp:
- * wrec/WREC.cpp:
+2009-10-28 Jan-Arve Sæther <jan-arve.saether@nokia.com>
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Tor Arne Vestbø.
- Reviewed by Sam Weinig.
-
- Moved runtime/Interpreter.cpp => runtime/Completion.cpp.
+ Build-fix for 64-bit Windows
- Moved functions from Interpreter.h to Completion.h, and removed
- Interpreter.h from the project.
+ * wtf/Platform.h: Make sure to use WTF_USE_JSVALUE64
- * API/JSBase.cpp:
- * AllInOneFile.cpp:
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * jsc.cpp:
- * runtime/Completion.cpp: Copied from runtime/Interpreter.cpp.
- * runtime/Completion.h:
- * runtime/Interpreter.cpp: Removed.
- * runtime/Interpreter.h: Removed.
+2009-10-28 Gavin Barraclough <barraclough@apple.com>
-2008-11-17 Gabor Loki <loki@inf.u-szeged.hu>
+ Reviewed by NOBODY (build fix!).
- Reviewed by Darin Adler.
+ * jit/JIT.h:
- <https://bugs.webkit.org/show_bug.cgi?id=22312>
- Fix PCRE include path problem on Qt-port
+2009-10-26 Holger Hans Peter Freyther <zecke@selfish.org>
- * JavaScriptCore.pri:
- * pcre/pcre.pri:
+ Rubber-stamped by Darin Adler.
-2008-11-17 Gabor Loki <loki@inf.u-szeged.hu>
+ Export fastMalloc, fastCalloc, fastRealloc and fastFree on GCC/Unix
+ https://bugs.webkit.org/show_bug.cgi?id=30769
- Reviewed by Darin Adler.
+ When using -fvisibility=hidden to hide all internal symbols by default
+ the malloc symbols will be hidden as well. For memory instrumentation
+ it is needed to provide an instrumented version of these symbols and
+ override the normal routines and by changing the visibility back to
+ default this becomes possible.
- <https://bugs.webkit.org/show_bug.cgi?id=22313>
- Add missing CTI source to the build system on Qt-port
+ The only other solution would be to use system malloc instead of the
+ TCmalloc implementation but this will not allow to analyze memory
+ behavior with the default allocator.
- * JavaScriptCore.pri:
+ * wtf/FastMalloc.h: Define WTF_FAST_MALLOC_EXPORT for GCC and !darwin
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+2009-10-27 Gavin Barraclough <barraclough@apple.com>
- Not reviewed.
-
- Try to fix JSGlue build.
+ Rubber Stamped by Samuel Q. Weinig.
- * JavaScriptCore.xcodeproj/project.pbxproj:
+ Make the asserts protecting the offsets in the JIT more descriptive.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ * jit/JIT.h:
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_method_check):
+ (JSC::JIT::compileGetByIdHotPath):
+ (JSC::JIT::compileGetByIdSlowCase):
+ (JSC::JIT::emit_op_put_by_id):
- Not reviewed.
-
- Try to fix Qt build.
+2009-10-27 Geoffrey Garen <ggaren@apple.com>
- * jsc.pro:
+ Reviewed by Sam Weinig.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ A little bit of refactoring in the date code.
- Not reviewed.
-
- Try to fix Qt build.
+ * JavaScriptCore.exp: Don't export this unused symbol.
- * JavaScriptCore.pri:
+ * runtime/DateConstructor.cpp:
+ (JSC::constructDate):
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ * runtime/DateInstance.cpp:
+ (JSC::DateInstance::DateInstance):
+ * runtime/DateInstance.h: Removed some unused functions. Changed the default
+ constructor to ensure that a DateInstance is always initialized.
- Not reviewed.
-
- Try to fix Qt build.
+ * runtime/DatePrototype.cpp:
+ (JSC::DatePrototype::DatePrototype): Pass an initializer to our constructor,
+ since it now requires one.
- * JavaScriptCore.pri:
+ * wtf/DateMath.cpp:
+ (WTF::msToGregorianDateTime): Only compute our offset from UTC if our
+ output will require it. Otherwise, our offset is 0.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+2009-10-27 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Sam Weinig.
-
- More file moves:
-
- VM/CodeBlock.* => bytecode/CodeBlock.*
- VM/EvalCodeCache.h => bytecode/EvalCodeCache.h
- VM/Instruction.h => bytecode/Instruction.h
- VM/Opcode.* => bytecode/Opcode.*
+ Build fix: Mark DateInstaceCache.h private, so other frameworks can see it.
- * GNUmakefile.am:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.vcproj/jsc/jsc.vcproj:
* JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/CodeBlock.cpp: Removed.
- * VM/CodeBlock.h: Removed.
- * VM/EvalCodeCache.h: Removed.
- * VM/Instruction.h: Removed.
- * VM/Opcode.cpp: Removed.
- * VM/Opcode.h: Removed.
- * bytecode: Added.
- * bytecode/CodeBlock.cpp: Copied from VM/CodeBlock.cpp.
- * bytecode/CodeBlock.h: Copied from VM/CodeBlock.h.
- * bytecode/EvalCodeCache.h: Copied from VM/EvalCodeCache.h.
- * bytecode/Instruction.h: Copied from VM/Instruction.h.
- * bytecode/Opcode.cpp: Copied from VM/Opcode.cpp.
- * bytecode/Opcode.h: Copied from VM/Opcode.h.
- * jsc.pro:
- * jscore.bkl:
-
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
-
- Not reviewed.
-
- Try to fix a few more builds.
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCoreSources.bkl:
+2009-10-27 Geoffrey Garen <ggaren@apple.com>
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ Build fix: re-readded this file.
- Not reviewed.
-
- Try to fix gtk build.
+ * runtime/DateInstanceCache.h: Added.
+ (JSC::DateInstanceData::create):
+ (JSC::DateInstanceData::DateInstanceData):
+ (JSC::DateInstanceCache::DateInstanceCache):
+ (JSC::DateInstanceCache::add):
+ (JSC::DateInstanceCache::lookup):
- * GNUmakefile.am:
+2009-10-27 Geoffrey Garen <ggaren@apple.com>
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Darin Adler and Oliver Hunt.
- Not reviewed.
+ https://bugs.webkit.org/show_bug.cgi?id=30800
+ Cache recently computed date data.
- Try to fix Windows build.
+ SunSpider reports a ~0.5% speedup, mostly from date-format-tofte.js.
+ * GNUmakefile.am:
+ * JavaScriptCore.gypi:
* JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj: Added new file.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Some file moves:
-
- VM/LabelID.h => bytecompiler/Label.h
- VM/RegisterID.h => bytecompiler/RegisterID.h
- VM/SegmentedVector.h => bytecompiler/SegmentedVector.h
- bytecompiler/CodeGenerator.* => bytecompiler/BytecodeGenerator.*
+ * runtime/DateInstance.cpp:
+ (JSC::DateInstance::DateInstance):
+ (JSC::DateInstance::getGregorianDateTime): Use the shared cache.
- * AllInOneFile.cpp:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/LabelID.h: Removed.
- * VM/RegisterID.h: Removed.
- * VM/SegmentedVector.h: Removed.
- * bytecompiler/BytecodeGenerator.cpp: Copied from bytecompiler/CodeGenerator.cpp.
- * bytecompiler/BytecodeGenerator.h: Copied from bytecompiler/CodeGenerator.h.
- * bytecompiler/CodeGenerator.cpp: Removed.
- * bytecompiler/CodeGenerator.h: Removed.
- * bytecompiler/Label.h: Copied from VM/LabelID.h.
- * bytecompiler/LabelScope.h:
- * bytecompiler/RegisterID.h: Copied from VM/RegisterID.h.
- * bytecompiler/SegmentedVector.h: Copied from VM/SegmentedVector.h.
- * jsc.cpp:
- * parser/Nodes.cpp:
+ * runtime/DateInstance.h: Renamed m_cache to m_data, to avoid the confusion
+ of a "cache cache".
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ * runtime/DatePrototype.cpp:
+ (JSC::formatLocaleDate):
+ (JSC::dateProtoFuncToString):
+ (JSC::dateProtoFuncToUTCString):
+ (JSC::dateProtoFuncToISOString):
+ (JSC::dateProtoFuncToDateString):
+ (JSC::dateProtoFuncToTimeString):
+ (JSC::dateProtoFuncGetFullYear):
+ (JSC::dateProtoFuncGetUTCFullYear):
+ (JSC::dateProtoFuncToGMTString):
+ (JSC::dateProtoFuncGetMonth):
+ (JSC::dateProtoFuncGetUTCMonth):
+ (JSC::dateProtoFuncGetDate):
+ (JSC::dateProtoFuncGetUTCDate):
+ (JSC::dateProtoFuncGetDay):
+ (JSC::dateProtoFuncGetUTCDay):
+ (JSC::dateProtoFuncGetHours):
+ (JSC::dateProtoFuncGetUTCHours):
+ (JSC::dateProtoFuncGetMinutes):
+ (JSC::dateProtoFuncGetUTCMinutes):
+ (JSC::dateProtoFuncGetSeconds):
+ (JSC::dateProtoFuncGetUTCSeconds):
+ (JSC::dateProtoFuncGetTimezoneOffset):
+ (JSC::setNewValueFromTimeArgs):
+ (JSC::setNewValueFromDateArgs):
+ (JSC::dateProtoFuncSetYear):
+ (JSC::dateProtoFuncGetYear): Pass an ExecState to these functions, so they
+ can access the DateInstanceCache.
- Not reviewed.
-
- Try to fix Windows build.
+ * runtime/JSGlobalData.h: Keep a DateInstanceCache.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+2009-10-27 James Robinson <jamesr@chromium.org>
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Darin Fisher.
- Not reviewed.
-
- Try to fix Windows build.
+ Ensures that JavaScriptCore/wtf/CurrentTime.cpp is not built in PLATFORM(CHROMIUM) builds.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ Chromium uses a different method to calculate the current time than is used in
+ JavaScriptCore/wtf/CurrentTime.cpp. This can lead to time skew when calls to currentTime() and Chromium's time
+ function are mixed. In particular, timers can get scheduled in the past which leads to 100% CPU use.
+ See http://code.google.com/p/chromium/issues/detail?id=25892 for an example.
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=30833
- Not reviewed.
-
- Try to fix Windows build.
+ * JavaScriptCore.gyp/JavaScriptCore.gyp:
+ * wtf/CurrentTime.cpp:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+2009-10-27 Peter Varga <pvarga@inf.u-szeged.hu>
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+ Rubber-stamped by Tor Arne Vestbø.
- Not reviewed.
-
- Try to fix Windows build.
+ Fix typo in RegexInterpreter.cpp and RegexJIT.cpp alterantive to
+ alternative.
- * JavaScriptCore.vcproj/jsc/jsc.vcproj:
+ * yarr/RegexInterpreter.cpp:
+ (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction):
+ (JSC::Yarr::ByteCompiler::alternativeDisjunction):
+ (JSC::Yarr::ByteCompiler::emitDisjunction):
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::generateDisjunction):
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+2009-10-26 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- Not reviewed.
-
- Try to fix Windows build.
+ Reviewed by Darin Adler.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ Make .rc files compile on Windows without depending on MFC headers
+ https://bugs.webkit.org/show_bug.cgi?id=30750
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Use
+ winresrc.h because it exists even when MFC is not installed, and is
+ all that's needed here.
- Reviewed by Sam Weinig.
-
- Moved masm => assembler and split "AssemblerBuffer.h" out of "X86Assembler.h".
-
- Also renamed ENABLE_MASM to ENABLE_ASSEMBLER.
+2009-10-26 Gabor Loki <loki@inf.u-szeged.hu>
- * GNUmakefile.am:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * assembler: Added.
- * assembler/AssemblerBuffer.h: Copied from masm/X86Assembler.h.
- (JSC::AssemblerBuffer::AssemblerBuffer):
- (JSC::AssemblerBuffer::~AssemblerBuffer):
- (JSC::AssemblerBuffer::ensureSpace):
- (JSC::AssemblerBuffer::isAligned):
- (JSC::AssemblerBuffer::putByteUnchecked):
- (JSC::AssemblerBuffer::putByte):
- (JSC::AssemblerBuffer::putShortUnchecked):
- (JSC::AssemblerBuffer::putShort):
- (JSC::AssemblerBuffer::putIntUnchecked):
- (JSC::AssemblerBuffer::putInt):
- (JSC::AssemblerBuffer::data):
- (JSC::AssemblerBuffer::size):
- (JSC::AssemblerBuffer::reset):
- (JSC::AssemblerBuffer::executableCopy):
- (JSC::AssemblerBuffer::grow):
- * assembler/X86Assembler.h: Copied from masm/X86Assembler.h.
- * masm: Removed.
- * masm/X86Assembler.h: Removed.
- * wtf/Platform.h:
+ Reviewed by Gavin Barraclough.
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+ The thunkReturnAddress is on JITStackFrame on ARM JIT as well
+ https://bugs.webkit.org/show_bug.cgi?id=30782
+
+ Move the thunkReturnAddress from top of the stack into the JITStackFrame
+ structure. This is a requirement for JSValue32_64 support on ARM.
+
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::ret): Return with link register
+ (JSC::MacroAssemblerARM::prepareCall): Store the return address in link register
+ * jit/JIT.h: Remove unused ctiReturnRegister
+ * jit/JITInlineMethods.h: Same as ARMv7
+ (JSC::JIT::restoreArgumentReference): Ditto.
+ (JSC::JIT::restoreArgumentReferenceForTrampoline): Ditto.
+ * jit/JITOpcodes.cpp: Remove ctiReturnRegister related instruction
+ * jit/JITStubs.cpp: Store thunkReturnAddress on JITStackFrame. Use
+ small trampoline functions which handle return addresses for each
+ CTI_STUB_FUNCTION.
+ * jit/JITStubs.h: Store thunkReturnAddress on JITStackFrame
+ (JSC::JITStackFrame::returnAddressSlot): Return with the address of thunkReturnAddress
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::generateEnter): Remove the unnecessary instruction
+
+2009-10-26 Steve Block <steveblock@google.com>
- Not reviewed.
-
- Try to fix gtk build.
+ Reviewed by Darin Adler.
- * GNUmakefile.am:
+ Adds ability to disable ReadWriteLock on platforms (eg Android) that use pthreads but do not support pthread_rwlock.
+ https://bugs.webkit.org/show_bug.cgi?id=30713
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+ * wtf/Platform.h: Modified. Defines HAVE_PTHREAD_RWLOCK for all platforms currently using pthreads.
+ * wtf/Threading.h: Modified. Use pthread_rwlock_t only when HAVE_PTHREAD_RWLOCK is defined.
+ * wtf/ThreadingPthreads.cpp: Modified. Build ReadWriteLock methods only when HAVE_PTHREAD_RWLOCK is defined.
- Not reviewed.
-
- Fixed tyop.
+2009-10-24 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- * VM/CTI.cpp:
+ Reviewed by Holger Freyther.
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+ [Qt] [Symbian] Set the capability and memory required to run QtWebKit for Symbian
+ https://bugs.webkit.org/show_bug.cgi?id=30476
- Not reviewed.
-
- Try to fix windows build.
+ Assign ReadUserData WriteUserData NetworkServices Symbian capabilities
+ to jsc.exe.
- * VM/CTI.cpp:
+ * jsc.pro:
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+2009-10-23 Steve Block <steveblock@google.com>
- Not reviewed.
-
- Try to fix gtk build.
+ Reviewed by Dmitry Titov.
- * GNUmakefile.am:
+ Fixes a leak in createThreadInternal on Android.
+ https://bugs.webkit.org/show_bug.cgi?id=30698
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+ * wtf/ThreadingPthreads.cpp: Modified.
+ (WTF::createThreadInternal): Avoid leaking a ThreadData object on failure.
- Reviewed by Sam Weinig.
+2009-10-22 Geoffrey Garen <ggaren@apple.com>
- Renamed ENABLE_CTI and ENABLE(CTI) to ENABLE_JIT and ENABLE(JIT).
+ Reviewed by Alexey Proskuryakov.
- * VM/CTI.cpp:
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::~CodeBlock):
- * VM/CodeBlock.h:
- (JSC::CodeBlock::CodeBlock):
- * VM/Machine.cpp:
- (JSC::Interpreter::Interpreter):
- (JSC::Interpreter::initialize):
- (JSC::Interpreter::~Interpreter):
- (JSC::Interpreter::execute):
- (JSC::Interpreter::privateExecute):
- * VM/Machine.h:
- * bytecompiler/CodeGenerator.cpp:
- (JSC::prepareJumpTableForStringSwitch):
- * runtime/JSFunction.cpp:
- (JSC::JSFunction::~JSFunction):
- * runtime/JSGlobalData.h:
- * wrec/WREC.h:
- * wtf/Platform.h:
- * wtf/TCSystemAlloc.cpp:
+ Fixed ASSERT when opening Safari's Caches window while the Web Inspector
+ is open.
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+ * runtime/Collector.cpp:
+ (JSC::typeName): Added two new types to the type name list in the Collector.
+ These types have been around for a while, but nobody remembered to consider them here.
- Not reviewed.
-
- Try to fix gtk build.
+ * runtime/JSCell.h:
+ (JSC::JSCell::isPropertyNameIterator):
+ * runtime/JSPropertyNameIterator.h:
+ (JSC::JSPropertyNameIterator::isPropertyNameIterator): Give the Collector
+ a way to tell if a cell is a JSPropertyNameIterator.
- * VM/CTI.cpp:
+2009-10-22 Steve Falkenburg <sfalken@apple.com>
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Jon Honeycutt.
- Reviewed by a few people on squirrelfish-dev.
-
- Renamed CTI => JIT.
-
- * VM/CTI.cpp:
- (JSC::JIT::killLastResultRegister):
- (JSC::JIT::emitGetVirtualRegister):
- (JSC::JIT::emitGetVirtualRegisters):
- (JSC::JIT::emitPutCTIArgFromVirtualRegister):
- (JSC::JIT::emitPutCTIArg):
- (JSC::JIT::emitGetCTIArg):
- (JSC::JIT::emitPutCTIArgConstant):
- (JSC::JIT::getConstantImmediateNumericArg):
- (JSC::JIT::emitPutCTIParam):
- (JSC::JIT::emitGetCTIParam):
- (JSC::JIT::emitPutToCallFrameHeader):
- (JSC::JIT::emitGetFromCallFrameHeader):
- (JSC::JIT::emitPutVirtualRegister):
- (JSC::JIT::emitInitRegister):
- (JSC::JIT::printBytecodeOperandTypes):
- (JSC::JIT::emitAllocateNumber):
- (JSC::JIT::emitNakedCall):
- (JSC::JIT::emitNakedFastCall):
- (JSC::JIT::emitCTICall):
- (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
- (JSC::JIT::linkSlowCaseIfNotJSCell):
- (JSC::JIT::emitJumpSlowCaseIfNotImmNum):
- (JSC::JIT::emitJumpSlowCaseIfNotImmNums):
- (JSC::JIT::getDeTaggedConstantImmediate):
- (JSC::JIT::emitFastArithDeTagImmediate):
- (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
- (JSC::JIT::emitFastArithReTagImmediate):
- (JSC::JIT::emitFastArithPotentiallyReTagImmediate):
- (JSC::JIT::emitFastArithImmToInt):
- (JSC::JIT::emitFastArithIntToImmOrSlowCase):
- (JSC::JIT::emitFastArithIntToImmNoCheck):
- (JSC::JIT::emitArithIntToImmWithJump):
- (JSC::JIT::emitTagAsBoolImmediate):
- (JSC::JIT::JIT):
- (JSC::JIT::compileOpCallInitializeCallFrame):
- (JSC::JIT::compileOpCallSetupArgs):
- (JSC::JIT::compileOpCallEvalSetupArgs):
- (JSC::JIT::compileOpConstructSetupArgs):
- (JSC::JIT::compileOpCall):
- (JSC::JIT::compileOpStrictEq):
- (JSC::JIT::emitSlowScriptCheck):
- (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate):
- (JSC::JIT::compileBinaryArithOp):
- (JSC::JIT::compileBinaryArithOpSlowCase):
- (JSC::JIT::privateCompileMainPass):
- (JSC::JIT::privateCompileLinkPass):
- (JSC::JIT::privateCompileSlowCases):
- (JSC::JIT::privateCompile):
- (JSC::JIT::privateCompileGetByIdSelf):
- (JSC::JIT::privateCompileGetByIdProto):
- (JSC::JIT::privateCompileGetByIdChain):
- (JSC::JIT::privateCompilePutByIdReplace):
- (JSC::JIT::privateCompilePutByIdTransition):
- (JSC::JIT::unlinkCall):
- (JSC::JIT::linkCall):
- (JSC::JIT::privateCompileCTIMachineTrampolines):
- (JSC::JIT::freeCTIMachineTrampolines):
- (JSC::JIT::patchGetByIdSelf):
- (JSC::JIT::patchPutByIdReplace):
- (JSC::JIT::privateCompilePatchGetArrayLength):
- (JSC::JIT::emitGetVariableObjectRegister):
- (JSC::JIT::emitPutVariableObjectRegister):
- * VM/CTI.h:
- (JSC::JIT::compile):
- (JSC::JIT::compileGetByIdSelf):
- (JSC::JIT::compileGetByIdProto):
- (JSC::JIT::compileGetByIdChain):
- (JSC::JIT::compilePutByIdReplace):
- (JSC::JIT::compilePutByIdTransition):
- (JSC::JIT::compileCTIMachineTrampolines):
- (JSC::JIT::compilePatchGetArrayLength):
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::unlinkCallers):
- * VM/Machine.cpp:
- (JSC::Interpreter::initialize):
- (JSC::Interpreter::~Interpreter):
- (JSC::Interpreter::execute):
- (JSC::Interpreter::tryCTICachePutByID):
- (JSC::Interpreter::tryCTICacheGetByID):
- (JSC::Interpreter::cti_op_call_JSFunction):
- (JSC::Interpreter::cti_vm_dontLazyLinkCall):
- (JSC::Interpreter::cti_vm_lazyLinkCall):
- * VM/Machine.h:
- * VM/RegisterFile.h:
- * parser/Nodes.h:
- * runtime/JSArray.h:
- * runtime/JSCell.h:
- * runtime/JSFunction.h:
- * runtime/JSImmediate.h:
- * runtime/JSNumberCell.h:
- * runtime/JSObject.h:
- * runtime/JSString.h:
- * runtime/JSVariableObject.h:
- * runtime/ScopeChain.h:
- * runtime/Structure.h:
- * runtime/TypeInfo.h:
- * runtime/UString.h:
+ https://bugs.webkit.org/show_bug.cgi?id=30686
+ Remove debug-specific def file.
+ Only Debug_All target uses JavaScriptCore_debug.dll naming, and since
+ that target is only used internally, maintaining two files just to
+ suppress a single link warning isn't worthwhile.
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Removed.
- Not reviewed.
-
- Try to fix wx build.
+2009-10-21 Jon Honeycutt <jhoneycutt@apple.com>
- * jscore.bkl:
+ <rdar://problem/7270320> Screenshots of off-screen plug-ins are blank
+ <rdar://problem/7270314> After halting a transparent PluginView on
+ Windows, the transparency is applied twice
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Dan Bernstein.
- Reviewed by Sam Weinig.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ Export WTF::deleteOwnedPtr(HDC).
- Nixed X86:: and X86Assembler:: prefixes in a lot of places using typedefs.
-
- * VM/CTI.cpp:
- (JSC::CTI::emitGetVirtualRegister):
- (JSC::CTI::emitGetVirtualRegisters):
- (JSC::CTI::emitPutCTIArgFromVirtualRegister):
- (JSC::CTI::emitPutCTIArg):
- (JSC::CTI::emitGetCTIArg):
- (JSC::CTI::emitPutCTIParam):
- (JSC::CTI::emitGetCTIParam):
- (JSC::CTI::emitPutToCallFrameHeader):
- (JSC::CTI::emitGetFromCallFrameHeader):
- (JSC::CTI::emitPutVirtualRegister):
- (JSC::CTI::emitNakedCall):
- (JSC::CTI::emitNakedFastCall):
- (JSC::CTI::emitCTICall):
- (JSC::CTI::emitJumpSlowCaseIfNotJSCell):
- (JSC::CTI::emitJumpSlowCaseIfNotImmNum):
- (JSC::CTI::emitJumpSlowCaseIfNotImmNums):
- (JSC::CTI::emitFastArithDeTagImmediate):
- (JSC::CTI::emitFastArithDeTagImmediateJumpIfZero):
- (JSC::CTI::emitFastArithReTagImmediate):
- (JSC::CTI::emitFastArithPotentiallyReTagImmediate):
- (JSC::CTI::emitFastArithImmToInt):
- (JSC::CTI::emitFastArithIntToImmOrSlowCase):
- (JSC::CTI::emitFastArithIntToImmNoCheck):
- (JSC::CTI::emitArithIntToImmWithJump):
- (JSC::CTI::emitTagAsBoolImmediate):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::compileOpStrictEq):
- (JSC::CTI::emitSlowScriptCheck):
- (JSC::CTI::putDoubleResultToJSNumberCellOrJSImmediate):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::compileBinaryArithOpSlowCase):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- (JSC::CTI::privateCompileGetByIdSelf):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::privateCompilePutByIdReplace):
- (JSC::CTI::privateCompilePutByIdTransition):
- (JSC::CTI::privateCompileCTIMachineTrampolines):
- (JSC::CTI::privateCompilePatchGetArrayLength):
- (JSC::CTI::emitGetVariableObjectRegister):
- (JSC::CTI::emitPutVariableObjectRegister):
- * VM/CTI.h:
- (JSC::CallRecord::CallRecord):
- (JSC::JmpTable::JmpTable):
- (JSC::SlowCaseEntry::SlowCaseEntry):
- (JSC::CTI::JSRInfo::JSRInfo):
- * wrec/WREC.h:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+ Ditto.
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+2009-10-20 Geoffrey Garen <ggaren@apple.com>
- Not reviewed.
-
- Try to fix Qt build.
+ Windows build fix: updated variable name.
- * JavaScriptCore.pri:
+ * runtime/DatePrototype.cpp:
+ (JSC::formatLocaleDate):
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+2009-10-20 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Sam Weinig.
-
- Renamed OBJECT_OFFSET => FIELD_OFFSET
-
- Nixed use of OBJECT_OFFSET outside of CTI.cpp by making CTI a friend in
- more places.
-
- * VM/CTI.cpp:
- (JSC::CTI::compileOpCallInitializeCallFrame):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::emitSlowScriptCheck):
- (JSC::CTI::putDoubleResultToJSNumberCellOrJSImmediate):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- (JSC::CTI::privateCompileGetByIdSelf):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::privateCompilePutByIdReplace):
- (JSC::CTI::privateCompilePutByIdTransition):
- (JSC::CTI::privateCompileCTIMachineTrampolines):
- (JSC::CTI::privateCompilePatchGetArrayLength):
- (JSC::CTI::emitGetVariableObjectRegister):
- (JSC::CTI::emitPutVariableObjectRegister):
- * runtime/JSValue.h:
- * runtime/JSVariableObject.h:
+ Reviewed by Mark Rowe.
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_next_pname): Slightly tweaked this #ifdef to match the
+ size of a JSValue because m_jsStrings is an array of JSValues.
- Reviewed by Sam Weinig.
-
- Renames:
-
- X86Assembler::copy => X86Assembler::executableCopy
- AssemblerBuffer::copy => AssemblerBuffer::executableCopy
-
- * VM/CTI.cpp:
- (JSC::CTI::privateCompile):
- (JSC::CTI::privateCompileGetByIdSelf):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::privateCompilePutByIdReplace):
- (JSC::CTI::privateCompilePutByIdTransition):
- (JSC::CTI::privateCompileCTIMachineTrampolines):
- (JSC::CTI::privateCompilePatchGetArrayLength):
- * masm/X86Assembler.h:
- (JSC::AssemblerBuffer::executableCopy):
- (JSC::X86Assembler::executableCopy):
- * wrec/WREC.cpp:
- (JSC::WREC::compileRegExp):
-
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+2009-10-20 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Sam Weinig.
-
- Renamed WREC => JSC::WREC, removing JSC:: prefix in a lot of places.
- Renamed WRECFunction => WREC::CompiledRegExp, and deployed this type
- name in place of a few casts.
+ Reviewed by Mark Rowe.
- * runtime/RegExp.cpp:
- (JSC::RegExp::RegExp):
- (JSC::RegExp::~RegExp):
- (JSC::RegExp::match):
- * runtime/RegExp.h:
- * wrec/CharacterClassConstructor.cpp:
- * wrec/CharacterClassConstructor.h:
- * wrec/WREC.cpp:
- (JSC::WREC::compileRegExp):
- * wrec/WREC.h:
- (JSC::WREC::Generator::Generator):
- (JSC::WREC::Parser::Parser):
- (JSC::WREC::Parser::parseAlternative):
+ Fixed a 64-bit regression caused by the fix for
+ https://bugs.webkit.org/show_bug.cgi?id=30570.
+
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_next_pname): Use TimesEight stepping on 64-bit, since
+ 64-bit pointers are eight bytes long.
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+2009-10-20 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
-
- Renamed BytecodeInterpreter => Interpreter.
- * JavaScriptCore.exp:
- * VM/CTI.cpp:
- (JSC::):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::emitSlowScriptCheck):
- (JSC::CTI::compileBinaryArithOpSlowCase):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- (JSC::CTI::privateCompileGetByIdSelf):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::privateCompilePutByIdReplace):
- (JSC::CTI::privateCompilePutByIdTransition):
- (JSC::CTI::privateCompileCTIMachineTrampolines):
- (JSC::CTI::freeCTIMachineTrampolines):
- (JSC::CTI::patchGetByIdSelf):
- (JSC::CTI::patchPutByIdReplace):
- (JSC::CTI::privateCompilePatchGetArrayLength):
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::printStructures):
- (JSC::CodeBlock::derefStructures):
- (JSC::CodeBlock::refStructures):
- * VM/Machine.cpp:
- (JSC::jsLess):
- (JSC::jsLessEq):
- (JSC::Interpreter::resolve):
- (JSC::Interpreter::resolveSkip):
- (JSC::Interpreter::resolveGlobal):
- (JSC::Interpreter::resolveBase):
- (JSC::Interpreter::resolveBaseAndProperty):
- (JSC::Interpreter::resolveBaseAndFunc):
- (JSC::Interpreter::slideRegisterWindowForCall):
- (JSC::Interpreter::callEval):
- (JSC::Interpreter::Interpreter):
- (JSC::Interpreter::initialize):
- (JSC::Interpreter::~Interpreter):
- (JSC::Interpreter::dumpCallFrame):
- (JSC::Interpreter::dumpRegisters):
- (JSC::Interpreter::isOpcode):
- (JSC::Interpreter::unwindCallFrame):
- (JSC::Interpreter::throwException):
- (JSC::Interpreter::execute):
- (JSC::Interpreter::debug):
- (JSC::Interpreter::resetTimeoutCheck):
- (JSC::Interpreter::checkTimeout):
- (JSC::Interpreter::createExceptionScope):
- (JSC::Interpreter::tryCachePutByID):
- (JSC::Interpreter::uncachePutByID):
- (JSC::Interpreter::tryCacheGetByID):
- (JSC::Interpreter::uncacheGetByID):
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::retrieveArguments):
- (JSC::Interpreter::retrieveCaller):
- (JSC::Interpreter::retrieveLastCaller):
- (JSC::Interpreter::findFunctionCallFrame):
- (JSC::Interpreter::tryCTICachePutByID):
- (JSC::Interpreter::tryCTICacheGetByID):
- (JSC::Interpreter::cti_op_convert_this):
- (JSC::Interpreter::cti_op_end):
- (JSC::Interpreter::cti_op_add):
- (JSC::Interpreter::cti_op_pre_inc):
- (JSC::Interpreter::cti_timeout_check):
- (JSC::Interpreter::cti_register_file_check):
- (JSC::Interpreter::cti_op_loop_if_less):
- (JSC::Interpreter::cti_op_loop_if_lesseq):
- (JSC::Interpreter::cti_op_new_object):
- (JSC::Interpreter::cti_op_put_by_id):
- (JSC::Interpreter::cti_op_put_by_id_second):
- (JSC::Interpreter::cti_op_put_by_id_generic):
- (JSC::Interpreter::cti_op_put_by_id_fail):
- (JSC::Interpreter::cti_op_get_by_id):
- (JSC::Interpreter::cti_op_get_by_id_second):
- (JSC::Interpreter::cti_op_get_by_id_generic):
- (JSC::Interpreter::cti_op_get_by_id_fail):
- (JSC::Interpreter::cti_op_instanceof):
- (JSC::Interpreter::cti_op_del_by_id):
- (JSC::Interpreter::cti_op_mul):
- (JSC::Interpreter::cti_op_new_func):
- (JSC::Interpreter::cti_op_call_JSFunction):
- (JSC::Interpreter::cti_op_call_arityCheck):
- (JSC::Interpreter::cti_vm_dontLazyLinkCall):
- (JSC::Interpreter::cti_vm_lazyLinkCall):
- (JSC::Interpreter::cti_op_push_activation):
- (JSC::Interpreter::cti_op_call_NotJSFunction):
- (JSC::Interpreter::cti_op_create_arguments):
- (JSC::Interpreter::cti_op_create_arguments_no_params):
- (JSC::Interpreter::cti_op_tear_off_activation):
- (JSC::Interpreter::cti_op_tear_off_arguments):
- (JSC::Interpreter::cti_op_profile_will_call):
- (JSC::Interpreter::cti_op_profile_did_call):
- (JSC::Interpreter::cti_op_ret_scopeChain):
- (JSC::Interpreter::cti_op_new_array):
- (JSC::Interpreter::cti_op_resolve):
- (JSC::Interpreter::cti_op_construct_JSConstruct):
- (JSC::Interpreter::cti_op_construct_NotJSConstruct):
- (JSC::Interpreter::cti_op_get_by_val):
- (JSC::Interpreter::cti_op_resolve_func):
- (JSC::Interpreter::cti_op_sub):
- (JSC::Interpreter::cti_op_put_by_val):
- (JSC::Interpreter::cti_op_put_by_val_array):
- (JSC::Interpreter::cti_op_lesseq):
- (JSC::Interpreter::cti_op_loop_if_true):
- (JSC::Interpreter::cti_op_negate):
- (JSC::Interpreter::cti_op_resolve_base):
- (JSC::Interpreter::cti_op_resolve_skip):
- (JSC::Interpreter::cti_op_resolve_global):
- (JSC::Interpreter::cti_op_div):
- (JSC::Interpreter::cti_op_pre_dec):
- (JSC::Interpreter::cti_op_jless):
- (JSC::Interpreter::cti_op_not):
- (JSC::Interpreter::cti_op_jtrue):
- (JSC::Interpreter::cti_op_post_inc):
- (JSC::Interpreter::cti_op_eq):
- (JSC::Interpreter::cti_op_lshift):
- (JSC::Interpreter::cti_op_bitand):
- (JSC::Interpreter::cti_op_rshift):
- (JSC::Interpreter::cti_op_bitnot):
- (JSC::Interpreter::cti_op_resolve_with_base):
- (JSC::Interpreter::cti_op_new_func_exp):
- (JSC::Interpreter::cti_op_mod):
- (JSC::Interpreter::cti_op_less):
- (JSC::Interpreter::cti_op_neq):
- (JSC::Interpreter::cti_op_post_dec):
- (JSC::Interpreter::cti_op_urshift):
- (JSC::Interpreter::cti_op_bitxor):
- (JSC::Interpreter::cti_op_new_regexp):
- (JSC::Interpreter::cti_op_bitor):
- (JSC::Interpreter::cti_op_call_eval):
- (JSC::Interpreter::cti_op_throw):
- (JSC::Interpreter::cti_op_get_pnames):
- (JSC::Interpreter::cti_op_next_pname):
- (JSC::Interpreter::cti_op_push_scope):
- (JSC::Interpreter::cti_op_pop_scope):
- (JSC::Interpreter::cti_op_typeof):
- (JSC::Interpreter::cti_op_is_undefined):
- (JSC::Interpreter::cti_op_is_boolean):
- (JSC::Interpreter::cti_op_is_number):
- (JSC::Interpreter::cti_op_is_string):
- (JSC::Interpreter::cti_op_is_object):
- (JSC::Interpreter::cti_op_is_function):
- (JSC::Interpreter::cti_op_stricteq):
- (JSC::Interpreter::cti_op_nstricteq):
- (JSC::Interpreter::cti_op_to_jsnumber):
- (JSC::Interpreter::cti_op_in):
- (JSC::Interpreter::cti_op_push_new_scope):
- (JSC::Interpreter::cti_op_jmp_scopes):
- (JSC::Interpreter::cti_op_put_by_index):
- (JSC::Interpreter::cti_op_switch_imm):
- (JSC::Interpreter::cti_op_switch_char):
- (JSC::Interpreter::cti_op_switch_string):
- (JSC::Interpreter::cti_op_del_by_val):
- (JSC::Interpreter::cti_op_put_getter):
- (JSC::Interpreter::cti_op_put_setter):
- (JSC::Interpreter::cti_op_new_error):
- (JSC::Interpreter::cti_op_debug):
- (JSC::Interpreter::cti_vm_throw):
- * VM/Machine.h:
- * VM/Register.h:
- * VM/SamplingTool.h:
- (JSC::SamplingTool::SamplingTool):
- * bytecompiler/CodeGenerator.cpp:
- (JSC::BytecodeGenerator::generate):
- (JSC::BytecodeGenerator::BytecodeGenerator):
- * jsc.cpp:
- (runWithScripts):
- * runtime/ExecState.h:
- (JSC::ExecState::interpreter):
- * runtime/JSCell.h:
- * runtime/JSFunction.h:
- * runtime/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- * runtime/JSGlobalData.h:
- * runtime/JSString.h:
- * wrec/WREC.cpp:
- (WREC::compileRegExp):
- * wrec/WREC.h:
+ Refactored DateInstance::msToGregorianDateTime so that a DateInstance's
+ caller doesn't need to supply the DateInstance's own internal value to
+ the DateInstance.
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+ * runtime/DateInstance.cpp:
+ (JSC::DateInstance::getGregorianDateTime): Renamed from "msToGregorianDateTime".
- Roll out r38461 (my last patch) because it broke the world.
+ * runtime/DateInstance.h:
+ * runtime/DatePrototype.cpp:
+ (JSC::formatLocaleDate):
+ (JSC::dateProtoFuncToString):
+ (JSC::dateProtoFuncToUTCString):
+ (JSC::dateProtoFuncToISOString):
+ (JSC::dateProtoFuncToDateString):
+ (JSC::dateProtoFuncToTimeString):
+ (JSC::dateProtoFuncToLocaleString):
+ (JSC::dateProtoFuncToLocaleDateString):
+ (JSC::dateProtoFuncToLocaleTimeString):
+ (JSC::dateProtoFuncGetTime):
+ (JSC::dateProtoFuncGetFullYear):
+ (JSC::dateProtoFuncGetUTCFullYear):
+ (JSC::dateProtoFuncToGMTString):
+ (JSC::dateProtoFuncGetMonth):
+ (JSC::dateProtoFuncGetUTCMonth):
+ (JSC::dateProtoFuncGetDate):
+ (JSC::dateProtoFuncGetUTCDate):
+ (JSC::dateProtoFuncGetDay):
+ (JSC::dateProtoFuncGetUTCDay):
+ (JSC::dateProtoFuncGetHours):
+ (JSC::dateProtoFuncGetUTCHours):
+ (JSC::dateProtoFuncGetMinutes):
+ (JSC::dateProtoFuncGetUTCMinutes):
+ (JSC::dateProtoFuncGetSeconds):
+ (JSC::dateProtoFuncGetUTCSeconds):
+ (JSC::dateProtoFuncGetTimezoneOffset):
+ (JSC::setNewValueFromTimeArgs):
+ (JSC::setNewValueFromDateArgs):
+ (JSC::dateProtoFuncSetYear):
+ (JSC::dateProtoFuncGetYear): Also renamed "utc" to "outputIsUTC", for clarity.
-2008-11-16 Geoffrey Garen <ggaren@apple.com>
+2009-10-20 Gabor Loki <loki@inf.u-szeged.hu>
- Reviewed by Sam Weinig.
+ Reviewed by Geoffrey Garen.
- A few more renames:
+ The op_next_pname should use 4 bytes addressing mode in case of JSValue32
+ https://bugs.webkit.org/show_bug.cgi?id=30570
- BytecodeInterpreter => Interpreter
- WREC => JSC::WREC, removing JSC:: prefix in a lot of places
- X86Assembler::copy => X86Assembler::executableCopy
- AssemblerBuffer::copy => AssemblerBuffer::executableCopy
- WRECFunction => WREC::RegExpFunction
- OBJECT_OFFSET => FIELD_OFFSET
-
- Also:
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_next_pname):
- Nixed use of OBJECT_OFFSET outside of CTI.cpp by making CTI a friend in more places.
- Nixed X86:: and X86Assembler:: prefixes in a lot of places using typedefs
+2009-10-20 Gabor Loki <loki@inf.u-szeged.hu>
- * JavaScriptCore.exp:
- * VM/CTI.cpp:
- (JSC::):
- (JSC::CTI::emitGetVirtualRegister):
- (JSC::CTI::emitGetVirtualRegisters):
- (JSC::CTI::emitPutCTIArgFromVirtualRegister):
- (JSC::CTI::emitPutCTIArg):
- (JSC::CTI::emitGetCTIArg):
- (JSC::CTI::emitPutCTIParam):
- (JSC::CTI::emitGetCTIParam):
- (JSC::CTI::emitPutToCallFrameHeader):
- (JSC::CTI::emitGetFromCallFrameHeader):
- (JSC::CTI::emitPutVirtualRegister):
- (JSC::CTI::emitNakedCall):
- (JSC::CTI::emitNakedFastCall):
- (JSC::CTI::emitCTICall):
- (JSC::CTI::emitJumpSlowCaseIfNotJSCell):
- (JSC::CTI::emitJumpSlowCaseIfNotImmNum):
- (JSC::CTI::emitJumpSlowCaseIfNotImmNums):
- (JSC::CTI::emitFastArithDeTagImmediate):
- (JSC::CTI::emitFastArithDeTagImmediateJumpIfZero):
- (JSC::CTI::emitFastArithReTagImmediate):
- (JSC::CTI::emitFastArithPotentiallyReTagImmediate):
- (JSC::CTI::emitFastArithImmToInt):
- (JSC::CTI::emitFastArithIntToImmOrSlowCase):
- (JSC::CTI::emitFastArithIntToImmNoCheck):
- (JSC::CTI::emitArithIntToImmWithJump):
- (JSC::CTI::emitTagAsBoolImmediate):
- (JSC::CTI::compileOpCallInitializeCallFrame):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::compileOpStrictEq):
- (JSC::CTI::emitSlowScriptCheck):
- (JSC::CTI::putDoubleResultToJSNumberCellOrJSImmediate):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::compileBinaryArithOpSlowCase):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- (JSC::CTI::privateCompileGetByIdSelf):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::privateCompilePutByIdReplace):
- (JSC::CTI::privateCompilePutByIdTransition):
- (JSC::CTI::privateCompileCTIMachineTrampolines):
- (JSC::CTI::freeCTIMachineTrampolines):
- (JSC::CTI::patchGetByIdSelf):
- (JSC::CTI::patchPutByIdReplace):
- (JSC::CTI::privateCompilePatchGetArrayLength):
- (JSC::CTI::emitGetVariableObjectRegister):
- (JSC::CTI::emitPutVariableObjectRegister):
- * VM/CTI.h:
- (JSC::CallRecord::CallRecord):
- (JSC::JmpTable::JmpTable):
- (JSC::SlowCaseEntry::SlowCaseEntry):
- (JSC::CTI::JSRInfo::JSRInfo):
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::printStructures):
- (JSC::CodeBlock::derefStructures):
- (JSC::CodeBlock::refStructures):
- * VM/Machine.cpp:
- (JSC::jsLess):
- (JSC::jsLessEq):
- (JSC::Interpreter::resolve):
- (JSC::Interpreter::resolveSkip):
- (JSC::Interpreter::resolveGlobal):
- (JSC::Interpreter::resolveBase):
- (JSC::Interpreter::resolveBaseAndProperty):
- (JSC::Interpreter::resolveBaseAndFunc):
- (JSC::Interpreter::slideRegisterWindowForCall):
- (JSC::Interpreter::callEval):
- (JSC::Interpreter::Interpreter):
- (JSC::Interpreter::initialize):
- (JSC::Interpreter::~Interpreter):
- (JSC::Interpreter::dumpCallFrame):
- (JSC::Interpreter::dumpRegisters):
- (JSC::Interpreter::isOpcode):
- (JSC::Interpreter::unwindCallFrame):
- (JSC::Interpreter::throwException):
- (JSC::Interpreter::execute):
- (JSC::Interpreter::debug):
- (JSC::Interpreter::resetTimeoutCheck):
- (JSC::Interpreter::checkTimeout):
- (JSC::Interpreter::createExceptionScope):
- (JSC::Interpreter::tryCachePutByID):
- (JSC::Interpreter::uncachePutByID):
- (JSC::Interpreter::tryCacheGetByID):
- (JSC::Interpreter::uncacheGetByID):
- (JSC::Interpreter::privateExecute):
- (JSC::Interpreter::retrieveArguments):
- (JSC::Interpreter::retrieveCaller):
- (JSC::Interpreter::retrieveLastCaller):
- (JSC::Interpreter::findFunctionCallFrame):
- (JSC::Interpreter::tryCTICachePutByID):
- (JSC::Interpreter::tryCTICacheGetByID):
- (JSC::):
- (JSC::Interpreter::cti_op_convert_this):
- (JSC::Interpreter::cti_op_end):
- (JSC::Interpreter::cti_op_add):
- (JSC::Interpreter::cti_op_pre_inc):
- (JSC::Interpreter::cti_timeout_check):
- (JSC::Interpreter::cti_register_file_check):
- (JSC::Interpreter::cti_op_loop_if_less):
- (JSC::Interpreter::cti_op_loop_if_lesseq):
- (JSC::Interpreter::cti_op_new_object):
- (JSC::Interpreter::cti_op_put_by_id):
- (JSC::Interpreter::cti_op_put_by_id_second):
- (JSC::Interpreter::cti_op_put_by_id_generic):
- (JSC::Interpreter::cti_op_put_by_id_fail):
- (JSC::Interpreter::cti_op_get_by_id):
- (JSC::Interpreter::cti_op_get_by_id_second):
- (JSC::Interpreter::cti_op_get_by_id_generic):
- (JSC::Interpreter::cti_op_get_by_id_fail):
- (JSC::Interpreter::cti_op_instanceof):
- (JSC::Interpreter::cti_op_del_by_id):
- (JSC::Interpreter::cti_op_mul):
- (JSC::Interpreter::cti_op_new_func):
- (JSC::Interpreter::cti_op_call_JSFunction):
- (JSC::Interpreter::cti_op_call_arityCheck):
- (JSC::Interpreter::cti_vm_dontLazyLinkCall):
- (JSC::Interpreter::cti_vm_lazyLinkCall):
- (JSC::Interpreter::cti_op_push_activation):
- (JSC::Interpreter::cti_op_call_NotJSFunction):
- (JSC::Interpreter::cti_op_create_arguments):
- (JSC::Interpreter::cti_op_create_arguments_no_params):
- (JSC::Interpreter::cti_op_tear_off_activation):
- (JSC::Interpreter::cti_op_tear_off_arguments):
- (JSC::Interpreter::cti_op_profile_will_call):
- (JSC::Interpreter::cti_op_profile_did_call):
- (JSC::Interpreter::cti_op_ret_scopeChain):
- (JSC::Interpreter::cti_op_new_array):
- (JSC::Interpreter::cti_op_resolve):
- (JSC::Interpreter::cti_op_construct_JSConstruct):
- (JSC::Interpreter::cti_op_construct_NotJSConstruct):
- (JSC::Interpreter::cti_op_get_by_val):
- (JSC::Interpreter::cti_op_resolve_func):
- (JSC::Interpreter::cti_op_sub):
- (JSC::Interpreter::cti_op_put_by_val):
- (JSC::Interpreter::cti_op_put_by_val_array):
- (JSC::Interpreter::cti_op_lesseq):
- (JSC::Interpreter::cti_op_loop_if_true):
- (JSC::Interpreter::cti_op_negate):
- (JSC::Interpreter::cti_op_resolve_base):
- (JSC::Interpreter::cti_op_resolve_skip):
- (JSC::Interpreter::cti_op_resolve_global):
- (JSC::Interpreter::cti_op_div):
- (JSC::Interpreter::cti_op_pre_dec):
- (JSC::Interpreter::cti_op_jless):
- (JSC::Interpreter::cti_op_not):
- (JSC::Interpreter::cti_op_jtrue):
- (JSC::Interpreter::cti_op_post_inc):
- (JSC::Interpreter::cti_op_eq):
- (JSC::Interpreter::cti_op_lshift):
- (JSC::Interpreter::cti_op_bitand):
- (JSC::Interpreter::cti_op_rshift):
- (JSC::Interpreter::cti_op_bitnot):
- (JSC::Interpreter::cti_op_resolve_with_base):
- (JSC::Interpreter::cti_op_new_func_exp):
- (JSC::Interpreter::cti_op_mod):
- (JSC::Interpreter::cti_op_less):
- (JSC::Interpreter::cti_op_neq):
- (JSC::Interpreter::cti_op_post_dec):
- (JSC::Interpreter::cti_op_urshift):
- (JSC::Interpreter::cti_op_bitxor):
- (JSC::Interpreter::cti_op_new_regexp):
- (JSC::Interpreter::cti_op_bitor):
- (JSC::Interpreter::cti_op_call_eval):
- (JSC::Interpreter::cti_op_throw):
- (JSC::Interpreter::cti_op_get_pnames):
- (JSC::Interpreter::cti_op_next_pname):
- (JSC::Interpreter::cti_op_push_scope):
- (JSC::Interpreter::cti_op_pop_scope):
- (JSC::Interpreter::cti_op_typeof):
- (JSC::Interpreter::cti_op_is_undefined):
- (JSC::Interpreter::cti_op_is_boolean):
- (JSC::Interpreter::cti_op_is_number):
- (JSC::Interpreter::cti_op_is_string):
- (JSC::Interpreter::cti_op_is_object):
- (JSC::Interpreter::cti_op_is_function):
- (JSC::Interpreter::cti_op_stricteq):
- (JSC::Interpreter::cti_op_nstricteq):
- (JSC::Interpreter::cti_op_to_jsnumber):
- (JSC::Interpreter::cti_op_in):
- (JSC::Interpreter::cti_op_push_new_scope):
- (JSC::Interpreter::cti_op_jmp_scopes):
- (JSC::Interpreter::cti_op_put_by_index):
- (JSC::Interpreter::cti_op_switch_imm):
- (JSC::Interpreter::cti_op_switch_char):
- (JSC::Interpreter::cti_op_switch_string):
- (JSC::Interpreter::cti_op_del_by_val):
- (JSC::Interpreter::cti_op_put_getter):
- (JSC::Interpreter::cti_op_put_setter):
- (JSC::Interpreter::cti_op_new_error):
- (JSC::Interpreter::cti_op_debug):
- (JSC::Interpreter::cti_vm_throw):
- * VM/Machine.h:
- * VM/Register.h:
- * VM/SamplingTool.cpp:
- (JSC::SamplingTool::dump):
- * VM/SamplingTool.h:
- (JSC::SamplingTool::SamplingTool):
- * bytecompiler/CodeGenerator.cpp:
- (JSC::BytecodeGenerator::generate):
- (JSC::BytecodeGenerator::BytecodeGenerator):
- * jsc.cpp:
- (runWithScripts):
- * masm/X86Assembler.h:
- (JSC::AssemblerBuffer::executableCopy):
- (JSC::X86Assembler::executableCopy):
- * runtime/ExecState.h:
- (JSC::ExecState::interpreter):
- * runtime/JSCell.h:
- * runtime/JSFunction.h:
- * runtime/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- * runtime/JSGlobalData.h:
- * runtime/JSImmediate.h:
- * runtime/JSString.h:
- * runtime/JSValue.h:
- * runtime/JSVariableObject.h:
- * runtime/RegExp.cpp:
- (JSC::RegExp::RegExp):
- (JSC::RegExp::~RegExp):
- (JSC::RegExp::match):
- * runtime/RegExp.h:
- * wrec/CharacterClassConstructor.cpp:
- * wrec/CharacterClassConstructor.h:
- * wrec/WREC.cpp:
- (JSC::WREC::compileRegExp):
- * wrec/WREC.h:
- (JSC::WREC::Generator::Generator):
- (JSC::WREC::Parser::):
- (JSC::WREC::Parser::Parser):
- (JSC::WREC::Parser::parseAlternative):
+ Reviewed by Oliver Hunt.
-2008-11-16 Greg Bolsinga <bolsinga@apple.com>
+ Move OverridesMarkChildren flag from DatePrototype to its parent class
+ https://bugs.webkit.org/show_bug.cgi?id=30372
- Reviewed by Darin Adler.
+ * runtime/DateInstance.h:
+ (JSC::DateInstance::createStructure):
+ * runtime/DatePrototype.h:
- https://bugs.webkit.org/show_bug.cgi?id=21810
- Remove use of static C++ objects that are destroyed at exit time (destructors)
+2009-10-19 Geoffrey Garen <ggaren@apple.com>
- Conditionally have the DEFINE_STATIC_LOCAL workaround <rdar://problem/6354696>
- (Codegen issue with C++ static reference in gcc build 5465) based upon the compiler
- build versions. It will use the:
- static T& = *new T;
- style for all other compilers.
+ Reviewed by Oliver Hunt.
- * wtf/StdLibExtras.h:
+ Tightened up some put_by_id_transition code generation.
+ https://bugs.webkit.org/show_bug.cgi?id=30539
-2008-11-16 Alexey Proskuryakov <ap@webkit.org>
+ * jit/JIT.h:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::testPrototype):
+ (JSC::JIT::privateCompilePutByIdTransition): No need to do object type
+ checks or read Structures and prototypes from objects: they're all known
+ constants at compile time.
- Reviewed by Dan Bernstein.
+2009-10-19 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Added a private API for getting a global context from a context, for
+ clients who want to preserve a context for a later callback.
+
+ * API/APICast.h:
+ (toGlobalRef): Added an ASSERT, since this function is used more often
+ than before.
- https://bugs.webkit.org/show_bug.cgi?id=22290
- Remove cross-heap GC and MessagePort multi-threading support
+ * API/JSContextRef.cpp:
+ * API/JSContextRefPrivate.h: Added. The new API.
- It is broken (and may not be implementable at all), and no longer needed, as we
- don't use MessagePorts for communication with workers any more.
+ * API/tests/testapi.c:
+ (print_callAsFunction):
+ (main): Test the new API.
* JavaScriptCore.exp:
- * runtime/Collector.cpp:
- (JSC::Heap::collect):
- * runtime/JSGlobalObject.cpp:
- * runtime/JSGlobalObject.h:
- Remove hooks for cross-heap GC.
+ * JavaScriptCore.xcodeproj/project.pbxproj: Build and export the new API.
-2008-11-15 Sam Weinig <sam@webkit.org>
+2009-10-17 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Cameron Zwarich.
+ Reviewed by Oliver Hunt.
+
+ Tightened up some instanceof code generation.
+ https://bugs.webkit.org/show_bug.cgi?id=30488
- Cleanup jsc command line code a little.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_instanceof):
+ (JSC::JIT::emitSlow_op_instanceof): No need to do object type checks -
+ cell type checks and ImplementsDefaultHasIntance checks implicitly
+ supersede object type checks.
- * jsc.cpp:
- (functionQuit):
- (main): Use standard exit status macros
- (cleanupGlobalData): Factor out cleanup code into this function.
- (printUsageStatement): Use standard exit status macros.
+2009-10-18 Kwang Yul Seo <skyul@company100.net>
-2008-11-15 Sam Weinig <sam@webkit.org>
+ Reviewed by Darin Adler.
- Reviewed by Cameron Zwarich.
+ Use _stricmp and _strnicmp instead of deprecated stricmp and strnicmp.
+ https://bugs.webkit.org/show_bug.cgi?id=30474
- Cleanup BytecodeGenerator constructors.
+ stricmp and strnicmp are deprecated beginning in Visual
+ C++ 2005. Use _stricmp and _strnicmp instead in StringExtras.h.
- * bytecompiler/CodeGenerator.cpp:
- (JSC::BytecodeGenerator::BytecodeGenerator):
- * bytecompiler/CodeGenerator.h:
- * parser/Nodes.cpp:
- (JSC::ProgramNode::generateBytecode):
+ * wtf/StringExtras.h:
+ (strncasecmp):
+ (strcasecmp):
-2008-11-15 Darin Adler <darin@apple.com>
+2009-10-16 Geoffrey Garen <ggaren@apple.com>
- Rubber stamped by Geoff Garen.
+ Build fix: apparently we shouldn't export those symbols?
- - do the long-planned StructureID -> Structure rename
+ * JavaScriptCore.exp:
+
+2009-10-16 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix: export some symbols.
+
+ * JavaScriptCore.exp:
+
+2009-10-16 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ structure typeinfo flags should be inherited.
+ https://bugs.webkit.org/show_bug.cgi?id=30468
+
+ Add StructureFlag constant to the various JSC classes and use
+ it for the TypeInfo construction. This allows us to simply
+ accumulate flags by basing each classes StructureInfo on its parents.
- * API/JSCallbackConstructor.cpp:
- (JSC::JSCallbackConstructor::JSCallbackConstructor):
* API/JSCallbackConstructor.h:
(JSC::JSCallbackConstructor::createStructure):
* API/JSCallbackFunction.h:
(JSC::JSCallbackFunction::createStructure):
* API/JSCallbackObject.h:
(JSC::JSCallbackObject::createStructure):
- * API/JSCallbackObjectFunctions.h:
- (JSC::::JSCallbackObject):
- * API/JSValueRef.cpp:
- (JSValueIsInstanceOfConstructor):
- * GNUmakefile.am:
- * JavaScriptCore.exp:
- * JavaScriptCore.pri:
- * JavaScriptCore.scons:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/CTI.cpp:
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileGetByIdSelf):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::privateCompilePutByIdReplace):
- (JSC::transitionWillNeedStorageRealloc):
- (JSC::CTI::privateCompilePutByIdTransition):
- (JSC::CTI::patchGetByIdSelf):
- (JSC::CTI::patchPutByIdReplace):
- * VM/CTI.h:
- (JSC::CTI::compileGetByIdSelf):
- (JSC::CTI::compileGetByIdProto):
- (JSC::CTI::compileGetByIdChain):
- (JSC::CTI::compilePutByIdReplace):
- (JSC::CTI::compilePutByIdTransition):
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::printStructure):
- (JSC::CodeBlock::printStructures):
- (JSC::CodeBlock::dump):
- (JSC::CodeBlock::~CodeBlock):
- (JSC::CodeBlock::derefStructures):
- (JSC::CodeBlock::refStructures):
- * VM/CodeBlock.h:
- * VM/Instruction.h:
- (JSC::Instruction::Instruction):
- (JSC::Instruction::):
- * VM/Machine.cpp:
- (JSC::jsTypeStringForValue):
- (JSC::jsIsObjectType):
- (JSC::BytecodeInterpreter::resolveGlobal):
- (JSC::BytecodeInterpreter::BytecodeInterpreter):
- (JSC::cachePrototypeChain):
- (JSC::BytecodeInterpreter::tryCachePutByID):
- (JSC::BytecodeInterpreter::uncachePutByID):
- (JSC::BytecodeInterpreter::tryCacheGetByID):
- (JSC::BytecodeInterpreter::uncacheGetByID):
- (JSC::BytecodeInterpreter::privateExecute):
- (JSC::BytecodeInterpreter::tryCTICachePutByID):
- (JSC::BytecodeInterpreter::tryCTICacheGetByID):
- (JSC::BytecodeInterpreter::cti_op_instanceof):
- (JSC::BytecodeInterpreter::cti_op_construct_JSConstruct):
- (JSC::BytecodeInterpreter::cti_op_resolve_global):
- (JSC::BytecodeInterpreter::cti_op_is_undefined):
+ * debugger/DebuggerActivation.h:
+ (JSC::DebuggerActivation::createStructure):
* runtime/Arguments.h:
(JSC::Arguments::createStructure):
- * runtime/ArrayConstructor.cpp:
- (JSC::ArrayConstructor::ArrayConstructor):
- * runtime/ArrayConstructor.h:
- * runtime/ArrayPrototype.cpp:
- (JSC::ArrayPrototype::ArrayPrototype):
- * runtime/ArrayPrototype.h:
- * runtime/BatchedTransitionOptimizer.h:
- (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
- (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
- * runtime/BooleanConstructor.cpp:
- (JSC::BooleanConstructor::BooleanConstructor):
- * runtime/BooleanConstructor.h:
- * runtime/BooleanObject.cpp:
- (JSC::BooleanObject::BooleanObject):
* runtime/BooleanObject.h:
- * runtime/BooleanPrototype.cpp:
- (JSC::BooleanPrototype::BooleanPrototype):
- * runtime/BooleanPrototype.h:
- * runtime/DateConstructor.cpp:
- (JSC::DateConstructor::DateConstructor):
- * runtime/DateConstructor.h:
- * runtime/DateInstance.cpp:
- (JSC::DateInstance::DateInstance):
- * runtime/DateInstance.h:
- * runtime/DatePrototype.cpp:
- (JSC::DatePrototype::DatePrototype):
+ (JSC::BooleanObject::createStructure):
* runtime/DatePrototype.h:
(JSC::DatePrototype::createStructure):
- * runtime/ErrorConstructor.cpp:
- (JSC::ErrorConstructor::ErrorConstructor):
- * runtime/ErrorConstructor.h:
- * runtime/ErrorInstance.cpp:
- (JSC::ErrorInstance::ErrorInstance):
- * runtime/ErrorInstance.h:
- * runtime/ErrorPrototype.cpp:
- (JSC::ErrorPrototype::ErrorPrototype):
- * runtime/ErrorPrototype.h:
- * runtime/FunctionConstructor.cpp:
- (JSC::FunctionConstructor::FunctionConstructor):
- * runtime/FunctionConstructor.h:
- * runtime/FunctionPrototype.cpp:
- (JSC::FunctionPrototype::FunctionPrototype):
- (JSC::FunctionPrototype::addFunctionProperties):
* runtime/FunctionPrototype.h:
(JSC::FunctionPrototype::createStructure):
- * runtime/GlobalEvalFunction.cpp:
- (JSC::GlobalEvalFunction::GlobalEvalFunction):
* runtime/GlobalEvalFunction.h:
- * runtime/Identifier.h:
- * runtime/InternalFunction.cpp:
- (JSC::InternalFunction::InternalFunction):
+ (JSC::GlobalEvalFunction::createStructure):
* runtime/InternalFunction.h:
(JSC::InternalFunction::createStructure):
- (JSC::InternalFunction::InternalFunction):
- * runtime/JSActivation.cpp:
- (JSC::JSActivation::JSActivation):
* runtime/JSActivation.h:
(JSC::JSActivation::createStructure):
- * runtime/JSArray.cpp:
- (JSC::JSArray::JSArray):
* runtime/JSArray.h:
(JSC::JSArray::createStructure):
- * runtime/JSCell.h:
- (JSC::JSCell::JSCell):
- (JSC::JSCell::isObject):
- (JSC::JSCell::isString):
- (JSC::JSCell::structure):
- (JSC::JSValue::needsThisConversion):
- * runtime/JSFunction.cpp:
- (JSC::JSFunction::construct):
+ * runtime/JSByteArray.cpp:
+ (JSC::JSByteArray::createStructure):
+ * runtime/JSByteArray.h:
* runtime/JSFunction.h:
- (JSC::JSFunction::JSFunction):
(JSC::JSFunction::createStructure):
- * runtime/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- (JSC::JSGlobalData::createLeaked):
- * runtime/JSGlobalData.h:
- * runtime/JSGlobalObject.cpp:
- (JSC::markIfNeeded):
- (JSC::JSGlobalObject::reset):
* runtime/JSGlobalObject.h:
- (JSC::JSGlobalObject::JSGlobalObject):
- (JSC::JSGlobalObject::argumentsStructure):
- (JSC::JSGlobalObject::arrayStructure):
- (JSC::JSGlobalObject::booleanObjectStructure):
- (JSC::JSGlobalObject::callbackConstructorStructure):
- (JSC::JSGlobalObject::callbackFunctionStructure):
- (JSC::JSGlobalObject::callbackObjectStructure):
- (JSC::JSGlobalObject::dateStructure):
- (JSC::JSGlobalObject::emptyObjectStructure):
- (JSC::JSGlobalObject::errorStructure):
- (JSC::JSGlobalObject::functionStructure):
- (JSC::JSGlobalObject::numberObjectStructure):
- (JSC::JSGlobalObject::prototypeFunctionStructure):
- (JSC::JSGlobalObject::regExpMatchesArrayStructure):
- (JSC::JSGlobalObject::regExpStructure):
- (JSC::JSGlobalObject::stringObjectStructure):
(JSC::JSGlobalObject::createStructure):
- (JSC::Structure::prototypeForLookup):
* runtime/JSNotAnObject.h:
(JSC::JSNotAnObject::createStructure):
- * runtime/JSNumberCell.h:
- (JSC::JSNumberCell::createStructure):
- (JSC::JSNumberCell::JSNumberCell):
- * runtime/JSObject.cpp:
- (JSC::JSObject::mark):
- (JSC::JSObject::put):
- (JSC::JSObject::deleteProperty):
- (JSC::JSObject::defineGetter):
- (JSC::JSObject::defineSetter):
- (JSC::JSObject::getPropertyAttributes):
- (JSC::JSObject::getPropertyNames):
- (JSC::JSObject::removeDirect):
- (JSC::JSObject::createInheritorID):
+ * runtime/JSONObject.h:
+ (JSC::JSONObject::createStructure):
* runtime/JSObject.h:
- (JSC::JSObject::getDirect):
- (JSC::JSObject::getDirectLocation):
- (JSC::JSObject::hasCustomProperties):
- (JSC::JSObject::hasGetterSetterProperties):
(JSC::JSObject::createStructure):
- (JSC::JSObject::JSObject):
- (JSC::JSObject::~JSObject):
- (JSC::JSObject::prototype):
- (JSC::JSObject::setPrototype):
- (JSC::JSObject::setStructure):
- (JSC::JSObject::inheritorID):
- (JSC::JSObject::inlineGetOwnPropertySlot):
- (JSC::JSObject::getOwnPropertySlotForWrite):
- (JSC::JSCell::fastGetOwnPropertySlot):
- (JSC::JSObject::putDirect):
- (JSC::JSObject::putDirectWithoutTransition):
- (JSC::JSObject::transitionTo):
- * runtime/JSPropertyNameIterator.h:
- (JSC::JSPropertyNameIterator::next):
* runtime/JSStaticScopeObject.h:
- (JSC::JSStaticScopeObject::JSStaticScopeObject):
(JSC::JSStaticScopeObject::createStructure):
- * runtime/JSString.h:
- (JSC::JSString::JSString):
- (JSC::JSString::createStructure):
* runtime/JSVariableObject.h:
- (JSC::JSVariableObject::JSVariableObject):
+ (JSC::JSVariableObject::createStructure):
* runtime/JSWrapperObject.h:
- (JSC::JSWrapperObject::JSWrapperObject):
- * runtime/MathObject.cpp:
- (JSC::MathObject::MathObject):
+ (JSC::JSWrapperObject::createStructure):
* runtime/MathObject.h:
(JSC::MathObject::createStructure):
- * runtime/NativeErrorConstructor.cpp:
- (JSC::NativeErrorConstructor::NativeErrorConstructor):
- * runtime/NativeErrorConstructor.h:
- * runtime/NativeErrorPrototype.cpp:
- (JSC::NativeErrorPrototype::NativeErrorPrototype):
- * runtime/NativeErrorPrototype.h:
- * runtime/NumberConstructor.cpp:
- (JSC::NumberConstructor::NumberConstructor):
* runtime/NumberConstructor.h:
(JSC::NumberConstructor::createStructure):
- * runtime/NumberObject.cpp:
- (JSC::NumberObject::NumberObject):
* runtime/NumberObject.h:
- * runtime/NumberPrototype.cpp:
- (JSC::NumberPrototype::NumberPrototype):
- * runtime/NumberPrototype.h:
- * runtime/ObjectConstructor.cpp:
- (JSC::ObjectConstructor::ObjectConstructor):
- * runtime/ObjectConstructor.h:
- * runtime/ObjectPrototype.cpp:
- (JSC::ObjectPrototype::ObjectPrototype):
- * runtime/ObjectPrototype.h:
- * runtime/Operations.h:
- (JSC::equalSlowCaseInline):
- * runtime/PropertyNameArray.h:
- (JSC::PropertyNameArrayData::setCachedStructure):
- (JSC::PropertyNameArrayData::cachedStructure):
- (JSC::PropertyNameArrayData::setCachedPrototypeChain):
- (JSC::PropertyNameArrayData::cachedPrototypeChain):
- (JSC::PropertyNameArrayData::PropertyNameArrayData):
- * runtime/PrototypeFunction.cpp:
- (JSC::PrototypeFunction::PrototypeFunction):
- * runtime/PrototypeFunction.h:
- * runtime/RegExpConstructor.cpp:
- (JSC::RegExpConstructor::RegExpConstructor):
+ (JSC::NumberObject::createStructure):
* runtime/RegExpConstructor.h:
(JSC::RegExpConstructor::createStructure):
- * runtime/RegExpObject.cpp:
- (JSC::RegExpObject::RegExpObject):
* runtime/RegExpObject.h:
(JSC::RegExpObject::createStructure):
- * runtime/RegExpPrototype.cpp:
- (JSC::RegExpPrototype::RegExpPrototype):
- * runtime/RegExpPrototype.h:
- * runtime/StringConstructor.cpp:
- (JSC::StringConstructor::StringConstructor):
- * runtime/StringConstructor.h:
- * runtime/StringObject.cpp:
- (JSC::StringObject::StringObject):
* runtime/StringObject.h:
(JSC::StringObject::createStructure):
* runtime/StringObjectThatMasqueradesAsUndefined.h:
- (JSC::StringObjectThatMasqueradesAsUndefined::create):
- (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
(JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
- * runtime/StringPrototype.cpp:
- (JSC::StringPrototype::StringPrototype):
- * runtime/StringPrototype.h:
- * runtime/Structure.cpp: Copied from JavaScriptCore/runtime/StructureID.cpp.
- (JSC::Structure::dumpStatistics):
- (JSC::Structure::Structure):
- (JSC::Structure::~Structure):
- (JSC::Structure::startIgnoringLeaks):
- (JSC::Structure::stopIgnoringLeaks):
- (JSC::Structure::materializePropertyMap):
- (JSC::Structure::getEnumerablePropertyNames):
- (JSC::Structure::clearEnumerationCache):
- (JSC::Structure::growPropertyStorageCapacity):
- (JSC::Structure::addPropertyTransitionToExistingStructure):
- (JSC::Structure::addPropertyTransition):
- (JSC::Structure::removePropertyTransition):
- (JSC::Structure::changePrototypeTransition):
- (JSC::Structure::getterSetterTransition):
- (JSC::Structure::toDictionaryTransition):
- (JSC::Structure::fromDictionaryTransition):
- (JSC::Structure::addPropertyWithoutTransition):
- (JSC::Structure::removePropertyWithoutTransition):
- (JSC::Structure::createCachedPrototypeChain):
- (JSC::Structure::checkConsistency):
- (JSC::Structure::copyPropertyTable):
- (JSC::Structure::get):
- (JSC::Structure::put):
- (JSC::Structure::remove):
- (JSC::Structure::insertIntoPropertyMapHashTable):
- (JSC::Structure::createPropertyMapHashTable):
- (JSC::Structure::expandPropertyMapHashTable):
- (JSC::Structure::rehashPropertyMapHashTable):
- (JSC::Structure::getEnumerablePropertyNamesInternal):
- * runtime/Structure.h: Copied from JavaScriptCore/runtime/StructureID.h.
- (JSC::Structure::create):
- (JSC::Structure::previousID):
- (JSC::Structure::setCachedPrototypeChain):
- (JSC::Structure::cachedPrototypeChain):
- (JSC::Structure::):
- (JSC::Structure::get):
- * runtime/StructureChain.cpp: Copied from JavaScriptCore/runtime/StructureIDChain.cpp.
- (JSC::StructureChain::StructureChain):
- (JSC::structureChainsAreEqual):
- * runtime/StructureChain.h: Copied from JavaScriptCore/runtime/StructureIDChain.h.
- (JSC::StructureChain::create):
- (JSC::StructureChain::head):
- * runtime/StructureID.cpp: Removed.
- * runtime/StructureID.h: Removed.
- * runtime/StructureIDChain.cpp: Removed.
- * runtime/StructureIDChain.h: Removed.
- * runtime/StructureIDTransitionTable.h: Removed.
- * runtime/StructureTransitionTable.h: Copied from JavaScriptCore/runtime/StructureIDTransitionTable.h.
-
-2008-11-15 Darin Adler <darin@apple.com>
-
- - fix non-WREC build
-
- * runtime/RegExp.cpp: Put "using namespace WREC" inside #if ENABLE(WREC).
-2008-11-15 Kevin Ollivier <kevino@theolliviers.com>
+2009-10-16 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Timothy Hatcher.
-
- As ThreadingNone doesn't implement threads, isMainThread should return true,
- not false.
+ Reviewed by Oliver Hunt.
- https://bugs.webkit.org/show_bug.cgi?id=22285
-
- * wtf/ThreadingNone.cpp:
- (WTF::isMainThread):
+ Fast for-in enumeration: Cache JSPropertyNameIterator; cache JSStrings
+ in JSPropertyNameIterator; inline more code.
-2008-11-15 Geoffrey Garen <ggaren@apple.com>
+ 1.024x as fast on SunSpider (fasta: 1.43x as fast).
- Reviewed by Sam Weinig.
-
- Moved all WREC-related code into WREC.cpp and put it in a WREC namespace.
- Removed the WREC prefix from class names.
-
- * VM/CTI.cpp:
- * VM/CTI.h:
- * VM/Machine.h:
- (JSC::BytecodeInterpreter::assemblerBuffer):
- * masm/X86Assembler.h:
- * runtime/RegExp.cpp:
- (JSC::RegExp::RegExp):
- * wrec/CharacterClassConstructor.cpp:
- * wrec/CharacterClassConstructor.h:
- * wrec/WREC.cpp:
- (WREC::GenerateParenthesesNonGreedyFunctor::GenerateParenthesesNonGreedyFunctor):
- (WREC::GeneratePatternCharacterFunctor::generateAtom):
- (WREC::GeneratePatternCharacterFunctor::backtrack):
- (WREC::GenerateCharacterClassFunctor::generateAtom):
- (WREC::GenerateCharacterClassFunctor::backtrack):
- (WREC::GenerateBackreferenceFunctor::generateAtom):
- (WREC::GenerateBackreferenceFunctor::backtrack):
- (WREC::GenerateParenthesesNonGreedyFunctor::generateAtom):
- (WREC::GenerateParenthesesNonGreedyFunctor::backtrack):
- (WREC::Generator::generateBacktrack1):
- (WREC::Generator::generateBacktrackBackreference):
- (WREC::Generator::generateBackreferenceQuantifier):
- (WREC::Generator::generateNonGreedyQuantifier):
- (WREC::Generator::generateGreedyQuantifier):
- (WREC::Generator::generatePatternCharacter):
- (WREC::Generator::generateCharacterClassInvertedRange):
- (WREC::Generator::generateCharacterClassInverted):
- (WREC::Generator::generateCharacterClass):
- (WREC::Generator::generateParentheses):
- (WREC::Generator::generateParenthesesNonGreedy):
- (WREC::Generator::generateParenthesesResetTrampoline):
- (WREC::Generator::generateAssertionBOL):
- (WREC::Generator::generateAssertionEOL):
- (WREC::Generator::generateAssertionWordBoundary):
- (WREC::Generator::generateBackreference):
- (WREC::Generator::generateDisjunction):
- (WREC::Generator::terminateDisjunction):
- (WREC::Parser::parseGreedyQuantifier):
- (WREC::Parser::parseQuantifier):
- (WREC::Parser::parsePatternCharacterQualifier):
- (WREC::Parser::parseCharacterClassQuantifier):
- (WREC::Parser::parseBackreferenceQuantifier):
- (WREC::Parser::parseParentheses):
- (WREC::Parser::parseCharacterClass):
- (WREC::Parser::parseOctalEscape):
- (WREC::Parser::parseEscape):
- (WREC::Parser::parseTerm):
- (WREC::Parser::parseDisjunction):
- (WREC::compileRegExp):
- * wrec/WREC.h:
- (WREC::Generator::Generator):
- (WREC::Parser::Parser):
- (WREC::Parser::parseAlternative):
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dump):
+ * bytecode/Opcode.h:
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitGetPropertyNames):
+ (JSC::BytecodeGenerator::emitNextPropertyName):
+ * bytecompiler/BytecodeGenerator.h: Added a few extra operands to
+ op_get_pnames and op_next_pname so that we can track iteration state
+ in the register file instead of in the JSPropertyNameIterator. (To be
+ cacheable, the JSPropertyNameIterator must be stateless.)
-2008-11-15 Geoffrey Garen <ggaren@apple.com>
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::tryCachePutByID):
+ (JSC::Interpreter::tryCacheGetByID): Updated for rename to
+ "normalizePrototypeChain" and removal of "isCacheable".
- Reviewed by Sam Weinig.
-
- Changed another case of "m_jit" to "m_assembler".
+ (JSC::Interpreter::privateExecute): Updated for in-RegisterFile
+ iteration state tracking.
- * VM/CTI.cpp:
- * wrec/WREC.cpp:
- * wrec/WREC.h:
- (JSC::WRECGenerator::WRECGenerator):
- (JSC::WRECParser::WRECParser):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ * jit/JIT.h:
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_get_pnames): Updated for in-RegisterFile
+ iteration state tracking.
-2008-11-15 Geoffrey Garen <ggaren@apple.com>
+ (JSC::JIT::emit_op_next_pname): Inlined code generation for op_next_pname.
- Reviewed by Sam Weinig.
-
- Renamed "jit" to "assembler" and, for brevity, replaced *jit.* with __
- using a macro.
-
- * VM/CTI.cpp:
- (JSC::CTI::emitGetVirtualRegister):
- (JSC::CTI::emitPutCTIArgFromVirtualRegister):
- (JSC::CTI::emitPutCTIArg):
- (JSC::CTI::emitGetCTIArg):
- (JSC::CTI::emitPutCTIArgConstant):
- (JSC::CTI::emitPutCTIParam):
- (JSC::CTI::emitGetCTIParam):
- (JSC::CTI::emitPutToCallFrameHeader):
- (JSC::CTI::emitGetFromCallFrameHeader):
- (JSC::CTI::emitPutVirtualRegister):
- (JSC::CTI::emitInitRegister):
- (JSC::CTI::emitAllocateNumber):
- (JSC::CTI::emitNakedCall):
- (JSC::CTI::emitNakedFastCall):
- (JSC::CTI::emitCTICall):
- (JSC::CTI::emitJumpSlowCaseIfNotJSCell):
- (JSC::CTI::linkSlowCaseIfNotJSCell):
- (JSC::CTI::emitJumpSlowCaseIfNotImmNum):
- (JSC::CTI::emitJumpSlowCaseIfNotImmNums):
- (JSC::CTI::emitFastArithDeTagImmediate):
- (JSC::CTI::emitFastArithDeTagImmediateJumpIfZero):
- (JSC::CTI::emitFastArithReTagImmediate):
- (JSC::CTI::emitFastArithPotentiallyReTagImmediate):
- (JSC::CTI::emitFastArithImmToInt):
- (JSC::CTI::emitFastArithIntToImmOrSlowCase):
- (JSC::CTI::emitFastArithIntToImmNoCheck):
- (JSC::CTI::emitArithIntToImmWithJump):
- (JSC::CTI::emitTagAsBoolImmediate):
- (JSC::CTI::CTI):
- (JSC::CTI::compileOpCallInitializeCallFrame):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::compileOpStrictEq):
- (JSC::CTI::emitSlowScriptCheck):
- (JSC::CTI::putDoubleResultToJSNumberCellOrJSImmediate):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::compileBinaryArithOpSlowCase):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileLinkPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- (JSC::CTI::privateCompileGetByIdSelf):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::privateCompilePutByIdReplace):
- (JSC::CTI::privateCompilePutByIdTransition):
- (JSC::CTI::privateCompileCTIMachineTrampolines):
- (JSC::CTI::privateCompilePatchGetArrayLength):
- (JSC::CTI::emitGetVariableObjectRegister):
- (JSC::CTI::emitPutVariableObjectRegister):
- (JSC::CTI::compileRegExp):
- * VM/CTI.h:
- * wrec/WREC.cpp:
- (JSC::WRECGenerator::generateBacktrack1):
- (JSC::WRECGenerator::generateBacktrackBackreference):
- (JSC::WRECGenerator::generateBackreferenceQuantifier):
- (JSC::WRECGenerator::generateNonGreedyQuantifier):
- (JSC::WRECGenerator::generateGreedyQuantifier):
- (JSC::WRECGenerator::generatePatternCharacter):
- (JSC::WRECGenerator::generateCharacterClassInvertedRange):
- (JSC::WRECGenerator::generateCharacterClassInverted):
- (JSC::WRECGenerator::generateCharacterClass):
- (JSC::WRECGenerator::generateParentheses):
- (JSC::WRECGenerator::generateParenthesesNonGreedy):
- (JSC::WRECGenerator::generateParenthesesResetTrampoline):
- (JSC::WRECGenerator::generateAssertionBOL):
- (JSC::WRECGenerator::generateAssertionEOL):
- (JSC::WRECGenerator::generateAssertionWordBoundary):
- (JSC::WRECGenerator::generateBackreference):
- (JSC::WRECGenerator::generateDisjunction):
- (JSC::WRECGenerator::terminateDisjunction):
-
-2008-11-15 Sam Weinig <sam@webkit.org>
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::tryCachePutByID):
+ (JSC::JITThunks::tryCacheGetByID): Updated for rename to
+ "normalizePrototypeChain" and removal of "isCacheable".
- Reviewed by Geoffrey Garen.
+ (JSC::DEFINE_STUB_FUNCTION):
+ * jit/JITStubs.h:
+ (JSC::): Added has_property and to_object stubs. Removed op_next_pname
+ stub, since has_property is all we need anymore.
- Remove dead method declaration.
+ * parser/Nodes.cpp:
+ (JSC::ForInNode::emitBytecode): Updated for in-RegisterFile
+ iteration state tracking.
- * bytecompiler/CodeGenerator.h:
+ * runtime/JSCell.h:
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::getPropertyNames): Don't do caching at this layer
+ anymore, since we don't create a JSPropertyNameIterator at this layer.
-2008-11-15 Geoffrey Garen <ggaren@apple.com>
+ * runtime/JSPropertyNameIterator.cpp:
+ (JSC::JSPropertyNameIterator::create): Do do caching at this layer.
+ (JSC::JSPropertyNameIterator::get): Updated for in-RegisterFile
+ iteration state tracking.
+ (JSC::JSPropertyNameIterator::markChildren): Mark our JSStrings.
- Reviewed by Sam Weinig.
-
- Renamed LabelID to Label, Label::isForwardLabel to Label::isForward.
-
- * VM/LabelID.h:
- (JSC::Label::Label):
- (JSC::Label::isForward):
- * bytecompiler/CodeGenerator.cpp:
- (JSC::BytecodeGenerator::newLabel):
- (JSC::BytecodeGenerator::emitLabel):
- (JSC::BytecodeGenerator::emitJump):
- (JSC::BytecodeGenerator::emitJumpIfTrue):
- (JSC::BytecodeGenerator::emitJumpIfFalse):
- (JSC::BytecodeGenerator::pushFinallyContext):
- (JSC::BytecodeGenerator::emitComplexJumpScopes):
- (JSC::BytecodeGenerator::emitJumpScopes):
- (JSC::BytecodeGenerator::emitNextPropertyName):
- (JSC::BytecodeGenerator::emitCatch):
- (JSC::BytecodeGenerator::emitJumpSubroutine):
- (JSC::prepareJumpTableForImmediateSwitch):
- (JSC::prepareJumpTableForCharacterSwitch):
- (JSC::prepareJumpTableForStringSwitch):
- (JSC::BytecodeGenerator::endSwitch):
- * bytecompiler/CodeGenerator.h:
- * bytecompiler/LabelScope.h:
- (JSC::LabelScope::LabelScope):
- (JSC::LabelScope::breakTarget):
- (JSC::LabelScope::continueTarget):
- * parser/Nodes.cpp:
- (JSC::LogicalOpNode::emitBytecode):
- (JSC::ConditionalNode::emitBytecode):
- (JSC::IfNode::emitBytecode):
- (JSC::IfElseNode::emitBytecode):
- (JSC::DoWhileNode::emitBytecode):
- (JSC::WhileNode::emitBytecode):
- (JSC::ForNode::emitBytecode):
- (JSC::ForInNode::emitBytecode):
- (JSC::ReturnNode::emitBytecode):
- (JSC::CaseBlockNode::emitBytecodeForBlock):
- (JSC::TryNode::emitBytecode):
+ * runtime/JSPropertyNameIterator.h:
+ (JSC::JSPropertyNameIterator::size):
+ (JSC::JSPropertyNameIterator::setCachedStructure):
+ (JSC::JSPropertyNameIterator::cachedStructure):
+ (JSC::JSPropertyNameIterator::setCachedPrototypeChain):
+ (JSC::JSPropertyNameIterator::cachedPrototypeChain):
+ (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
+ (JSC::Structure::setEnumerationCache): Don't store iteration state in
+ a JSPropertyNameIterator. Do cache a JSPropertyNameIterator in a
+ Structure.
-2008-11-15 Geoffrey Garen <ggaren@apple.com>
+ * runtime/JSValue.h:
+ (JSC::asCell):
+ * runtime/MarkStack.h: Make those mischievous #include gods happy.
- Reviewed by Sam Weinig.
-
- Renamed JITCodeBuffer to AssemblerBuffer and renamed its data members
- to be more like the rest of our buffer classes, with a size and a
- capacity.
-
- Added an assert in the unchecked put case to match the test in the checked
- put case.
-
- Changed a C-style cast to a C++-style cast.
-
- Renamed MAX_INSTRUCTION_SIZE to maxInstructionSize.
-
- * VM/CTI.cpp:
- (JSC::CTI::CTI):
- (JSC::CTI::compileRegExp):
- * VM/Machine.cpp:
- (JSC::BytecodeInterpreter::BytecodeInterpreter):
- * VM/Machine.h:
- (JSC::BytecodeInterpreter::assemblerBuffer):
- * masm/X86Assembler.h:
- (JSC::AssemblerBuffer::AssemblerBuffer):
- (JSC::AssemblerBuffer::~AssemblerBuffer):
- (JSC::AssemblerBuffer::ensureSpace):
- (JSC::AssemblerBuffer::isAligned):
- (JSC::AssemblerBuffer::putByteUnchecked):
- (JSC::AssemblerBuffer::putByte):
- (JSC::AssemblerBuffer::putShortUnchecked):
- (JSC::AssemblerBuffer::putShort):
- (JSC::AssemblerBuffer::putIntUnchecked):
- (JSC::AssemblerBuffer::putInt):
- (JSC::AssemblerBuffer::data):
- (JSC::AssemblerBuffer::size):
- (JSC::AssemblerBuffer::reset):
- (JSC::AssemblerBuffer::copy):
- (JSC::AssemblerBuffer::grow):
- (JSC::X86Assembler::):
- (JSC::X86Assembler::X86Assembler):
- (JSC::X86Assembler::testl_i32r):
- (JSC::X86Assembler::movl_mr):
- (JSC::X86Assembler::movl_rm):
- (JSC::X86Assembler::movl_i32m):
- (JSC::X86Assembler::emitCall):
- (JSC::X86Assembler::label):
- (JSC::X86Assembler::emitUnlinkedJmp):
- (JSC::X86Assembler::emitUnlinkedJne):
- (JSC::X86Assembler::emitUnlinkedJe):
- (JSC::X86Assembler::emitUnlinkedJl):
- (JSC::X86Assembler::emitUnlinkedJb):
- (JSC::X86Assembler::emitUnlinkedJle):
- (JSC::X86Assembler::emitUnlinkedJbe):
- (JSC::X86Assembler::emitUnlinkedJge):
- (JSC::X86Assembler::emitUnlinkedJg):
- (JSC::X86Assembler::emitUnlinkedJa):
- (JSC::X86Assembler::emitUnlinkedJae):
- (JSC::X86Assembler::emitUnlinkedJo):
- (JSC::X86Assembler::emitUnlinkedJp):
- (JSC::X86Assembler::emitUnlinkedJs):
- (JSC::X86Assembler::link):
- (JSC::X86Assembler::emitModRm_rr):
- (JSC::X86Assembler::emitModRm_rm):
- (JSC::X86Assembler::emitModRm_opr):
-
-2008-11-15 Geoffrey Garen <ggaren@apple.com>
-
- Suggested by Maciej Stachowiak.
-
- Reverted most "opcode" => "bytecode" renames. We use "bytecode" as a
- mass noun to refer to a stream of instructions. Each instruction may be
- an opcode or an operand.
-
- * VM/CTI.cpp:
- (JSC::CTI::emitCTICall):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::compileBinaryArithOpSlowCase):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::printStructureIDs):
- (JSC::CodeBlock::dump):
- (JSC::CodeBlock::derefStructureIDs):
- (JSC::CodeBlock::refStructureIDs):
- * VM/CodeBlock.h:
- * VM/ExceptionHelpers.cpp:
- (JSC::createNotAnObjectError):
- * VM/Instruction.h:
- (JSC::Instruction::Instruction):
- (JSC::Instruction::):
- * VM/Machine.cpp:
- (JSC::BytecodeInterpreter::isOpcode):
- (JSC::BytecodeInterpreter::throwException):
- (JSC::BytecodeInterpreter::tryCachePutByID):
- (JSC::BytecodeInterpreter::uncachePutByID):
- (JSC::BytecodeInterpreter::tryCacheGetByID):
- (JSC::BytecodeInterpreter::uncacheGetByID):
- (JSC::BytecodeInterpreter::privateExecute):
- (JSC::BytecodeInterpreter::tryCTICachePutByID):
- (JSC::BytecodeInterpreter::tryCTICacheGetByID):
- * VM/Machine.h:
- (JSC::BytecodeInterpreter::getOpcode):
- (JSC::BytecodeInterpreter::getOpcodeID):
- (JSC::BytecodeInterpreter::isCallBytecode):
- * VM/Opcode.cpp:
- (JSC::):
- (JSC::OpcodeStats::OpcodeStats):
- (JSC::compareOpcodeIndices):
- (JSC::compareOpcodePairIndices):
- (JSC::OpcodeStats::~OpcodeStats):
- (JSC::OpcodeStats::recordInstruction):
- (JSC::OpcodeStats::resetLastInstruction):
- * VM/Opcode.h:
- (JSC::):
- (JSC::padOpcodeName):
- * VM/SamplingTool.cpp:
- (JSC::ScopeSampleRecord::sample):
- (JSC::SamplingTool::run):
- (JSC::compareOpcodeIndicesSampling):
- (JSC::SamplingTool::dump):
- * VM/SamplingTool.h:
- (JSC::ScopeSampleRecord::ScopeSampleRecord):
- (JSC::SamplingTool::SamplingTool):
- * bytecompiler/CodeGenerator.cpp:
- (JSC::BytecodeGenerator::BytecodeGenerator):
- (JSC::BytecodeGenerator::emitLabel):
- (JSC::BytecodeGenerator::emitOpcode):
- (JSC::BytecodeGenerator::emitJump):
- (JSC::BytecodeGenerator::emitJumpIfTrue):
- (JSC::BytecodeGenerator::emitJumpIfFalse):
- (JSC::BytecodeGenerator::emitMove):
- (JSC::BytecodeGenerator::emitUnaryOp):
- (JSC::BytecodeGenerator::emitPreInc):
- (JSC::BytecodeGenerator::emitPreDec):
- (JSC::BytecodeGenerator::emitPostInc):
- (JSC::BytecodeGenerator::emitPostDec):
- (JSC::BytecodeGenerator::emitBinaryOp):
- (JSC::BytecodeGenerator::emitEqualityOp):
- (JSC::BytecodeGenerator::emitUnexpectedLoad):
- (JSC::BytecodeGenerator::emitInstanceOf):
- (JSC::BytecodeGenerator::emitResolve):
- (JSC::BytecodeGenerator::emitGetScopedVar):
- (JSC::BytecodeGenerator::emitPutScopedVar):
- (JSC::BytecodeGenerator::emitResolveBase):
- (JSC::BytecodeGenerator::emitResolveWithBase):
- (JSC::BytecodeGenerator::emitResolveFunction):
- (JSC::BytecodeGenerator::emitGetById):
- (JSC::BytecodeGenerator::emitPutById):
- (JSC::BytecodeGenerator::emitPutGetter):
- (JSC::BytecodeGenerator::emitPutSetter):
- (JSC::BytecodeGenerator::emitDeleteById):
- (JSC::BytecodeGenerator::emitGetByVal):
- (JSC::BytecodeGenerator::emitPutByVal):
- (JSC::BytecodeGenerator::emitDeleteByVal):
- (JSC::BytecodeGenerator::emitPutByIndex):
- (JSC::BytecodeGenerator::emitNewObject):
- (JSC::BytecodeGenerator::emitNewArray):
- (JSC::BytecodeGenerator::emitNewFunction):
- (JSC::BytecodeGenerator::emitNewRegExp):
- (JSC::BytecodeGenerator::emitNewFunctionExpression):
- (JSC::BytecodeGenerator::emitCall):
- (JSC::BytecodeGenerator::emitReturn):
- (JSC::BytecodeGenerator::emitUnaryNoDstOp):
- (JSC::BytecodeGenerator::emitConstruct):
- (JSC::BytecodeGenerator::emitPopScope):
- (JSC::BytecodeGenerator::emitDebugHook):
- (JSC::BytecodeGenerator::emitComplexJumpScopes):
- (JSC::BytecodeGenerator::emitJumpScopes):
- (JSC::BytecodeGenerator::emitNextPropertyName):
- (JSC::BytecodeGenerator::emitCatch):
- (JSC::BytecodeGenerator::emitNewError):
- (JSC::BytecodeGenerator::emitJumpSubroutine):
- (JSC::BytecodeGenerator::emitSubroutineReturn):
- (JSC::BytecodeGenerator::emitPushNewScope):
- (JSC::BytecodeGenerator::beginSwitch):
- * bytecompiler/CodeGenerator.h:
- * jsc.cpp:
- (runWithScripts):
- * masm/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::emitModRm_opr):
- (JSC::X86Assembler::emitModRm_opr_Unchecked):
- (JSC::X86Assembler::emitModRm_opm):
- (JSC::X86Assembler::emitModRm_opm_Unchecked):
- (JSC::X86Assembler::emitModRm_opmsib):
- * parser/Nodes.cpp:
- (JSC::UnaryOpNode::emitBytecode):
- (JSC::BinaryOpNode::emitBytecode):
- (JSC::ReverseBinaryOpNode::emitBytecode):
- (JSC::ThrowableBinaryOpNode::emitBytecode):
- (JSC::emitReadModifyAssignment):
- (JSC::ScopeNode::ScopeNode):
- * parser/Nodes.h:
- (JSC::UnaryPlusNode::):
- (JSC::NegateNode::):
- (JSC::BitwiseNotNode::):
- (JSC::LogicalNotNode::):
- (JSC::MultNode::):
- (JSC::DivNode::):
- (JSC::ModNode::):
- (JSC::AddNode::):
- (JSC::SubNode::):
- (JSC::LeftShiftNode::):
- (JSC::RightShiftNode::):
- (JSC::UnsignedRightShiftNode::):
- (JSC::LessNode::):
- (JSC::GreaterNode::):
- (JSC::LessEqNode::):
- (JSC::GreaterEqNode::):
- (JSC::InstanceOfNode::):
- (JSC::InNode::):
- (JSC::EqualNode::):
- (JSC::NotEqualNode::):
- (JSC::StrictEqualNode::):
- (JSC::NotStrictEqualNode::):
- (JSC::BitAndNode::):
- (JSC::BitOrNode::):
- (JSC::BitXOrNode::):
- * runtime/StructureID.cpp:
- (JSC::StructureID::fromDictionaryTransition):
- * wtf/Platform.h:
+ * runtime/ObjectConstructor.cpp:
-2008-11-15 Geoffrey Garen <ggaren@apple.com>
+ * runtime/Operations.h:
+ (JSC::normalizePrototypeChain): Renamed countPrototypeChainEntriesAndCheckForProxies
+ to normalizePrototypeChain, since it changes dictionary prototypes to
+ non-dictionary objects.
- Reviewed by Sam Weinig.
-
- Renames:
-
- CodeGenerator => BytecodeGenerator
- emitCodeForBlock => emitBytecodeForBlock
- generatedByteCode => generatedBytecode
- generateCode => generateBytecode
+ * runtime/PropertyNameArray.cpp:
+ (JSC::PropertyNameArray::add):
+ * runtime/PropertyNameArray.h:
+ (JSC::PropertyNameArrayData::PropertyNameArrayData):
+ (JSC::PropertyNameArray::data):
+ (JSC::PropertyNameArray::size):
+ (JSC::PropertyNameArray::begin):
+ (JSC::PropertyNameArray::end): Simplified some code here to help with
+ current and future refactoring.
- * JavaScriptCore.exp:
- * bytecompiler/CodeGenerator.cpp:
- (JSC::BytecodeGenerator::setDumpsGeneratedCode):
- (JSC::BytecodeGenerator::generate):
- (JSC::BytecodeGenerator::addVar):
- (JSC::BytecodeGenerator::addGlobalVar):
- (JSC::BytecodeGenerator::allocateConstants):
- (JSC::BytecodeGenerator::BytecodeGenerator):
- (JSC::BytecodeGenerator::addParameter):
- (JSC::BytecodeGenerator::registerFor):
- (JSC::BytecodeGenerator::constRegisterFor):
- (JSC::BytecodeGenerator::isLocal):
- (JSC::BytecodeGenerator::isLocalConstant):
- (JSC::BytecodeGenerator::newRegister):
- (JSC::BytecodeGenerator::newTemporary):
- (JSC::BytecodeGenerator::highestUsedRegister):
- (JSC::BytecodeGenerator::newLabelScope):
- (JSC::BytecodeGenerator::newLabel):
- (JSC::BytecodeGenerator::emitLabel):
- (JSC::BytecodeGenerator::emitBytecode):
- (JSC::BytecodeGenerator::retrieveLastBinaryOp):
- (JSC::BytecodeGenerator::retrieveLastUnaryOp):
- (JSC::BytecodeGenerator::rewindBinaryOp):
- (JSC::BytecodeGenerator::rewindUnaryOp):
- (JSC::BytecodeGenerator::emitJump):
- (JSC::BytecodeGenerator::emitJumpIfTrue):
- (JSC::BytecodeGenerator::emitJumpIfFalse):
- (JSC::BytecodeGenerator::addConstant):
- (JSC::BytecodeGenerator::addUnexpectedConstant):
- (JSC::BytecodeGenerator::addRegExp):
- (JSC::BytecodeGenerator::emitMove):
- (JSC::BytecodeGenerator::emitUnaryOp):
- (JSC::BytecodeGenerator::emitPreInc):
- (JSC::BytecodeGenerator::emitPreDec):
- (JSC::BytecodeGenerator::emitPostInc):
- (JSC::BytecodeGenerator::emitPostDec):
- (JSC::BytecodeGenerator::emitBinaryOp):
- (JSC::BytecodeGenerator::emitEqualityOp):
- (JSC::BytecodeGenerator::emitLoad):
- (JSC::BytecodeGenerator::emitUnexpectedLoad):
- (JSC::BytecodeGenerator::findScopedProperty):
- (JSC::BytecodeGenerator::emitInstanceOf):
- (JSC::BytecodeGenerator::emitResolve):
- (JSC::BytecodeGenerator::emitGetScopedVar):
- (JSC::BytecodeGenerator::emitPutScopedVar):
- (JSC::BytecodeGenerator::emitResolveBase):
- (JSC::BytecodeGenerator::emitResolveWithBase):
- (JSC::BytecodeGenerator::emitResolveFunction):
- (JSC::BytecodeGenerator::emitGetById):
- (JSC::BytecodeGenerator::emitPutById):
- (JSC::BytecodeGenerator::emitPutGetter):
- (JSC::BytecodeGenerator::emitPutSetter):
- (JSC::BytecodeGenerator::emitDeleteById):
- (JSC::BytecodeGenerator::emitGetByVal):
- (JSC::BytecodeGenerator::emitPutByVal):
- (JSC::BytecodeGenerator::emitDeleteByVal):
- (JSC::BytecodeGenerator::emitPutByIndex):
- (JSC::BytecodeGenerator::emitNewObject):
- (JSC::BytecodeGenerator::emitNewArray):
- (JSC::BytecodeGenerator::emitNewFunction):
- (JSC::BytecodeGenerator::emitNewRegExp):
- (JSC::BytecodeGenerator::emitNewFunctionExpression):
- (JSC::BytecodeGenerator::emitCall):
- (JSC::BytecodeGenerator::emitCallEval):
- (JSC::BytecodeGenerator::emitReturn):
- (JSC::BytecodeGenerator::emitUnaryNoDstOp):
- (JSC::BytecodeGenerator::emitConstruct):
- (JSC::BytecodeGenerator::emitPushScope):
- (JSC::BytecodeGenerator::emitPopScope):
- (JSC::BytecodeGenerator::emitDebugHook):
- (JSC::BytecodeGenerator::pushFinallyContext):
- (JSC::BytecodeGenerator::popFinallyContext):
- (JSC::BytecodeGenerator::breakTarget):
- (JSC::BytecodeGenerator::continueTarget):
- (JSC::BytecodeGenerator::emitComplexJumpScopes):
- (JSC::BytecodeGenerator::emitJumpScopes):
- (JSC::BytecodeGenerator::emitNextPropertyName):
- (JSC::BytecodeGenerator::emitCatch):
- (JSC::BytecodeGenerator::emitNewError):
- (JSC::BytecodeGenerator::emitJumpSubroutine):
- (JSC::BytecodeGenerator::emitSubroutineReturn):
- (JSC::BytecodeGenerator::emitPushNewScope):
- (JSC::BytecodeGenerator::beginSwitch):
- (JSC::BytecodeGenerator::endSwitch):
- (JSC::BytecodeGenerator::emitThrowExpressionTooDeepException):
- * bytecompiler/CodeGenerator.h:
- * jsc.cpp:
- (runWithScripts):
- * parser/Nodes.cpp:
- (JSC::ThrowableExpressionData::emitThrowError):
- (JSC::NullNode::emitBytecode):
- (JSC::BooleanNode::emitBytecode):
- (JSC::NumberNode::emitBytecode):
- (JSC::StringNode::emitBytecode):
- (JSC::RegExpNode::emitBytecode):
- (JSC::ThisNode::emitBytecode):
- (JSC::ResolveNode::isPure):
- (JSC::ResolveNode::emitBytecode):
- (JSC::ArrayNode::emitBytecode):
- (JSC::ObjectLiteralNode::emitBytecode):
- (JSC::PropertyListNode::emitBytecode):
- (JSC::BracketAccessorNode::emitBytecode):
- (JSC::DotAccessorNode::emitBytecode):
- (JSC::ArgumentListNode::emitBytecode):
- (JSC::NewExprNode::emitBytecode):
- (JSC::EvalFunctionCallNode::emitBytecode):
- (JSC::FunctionCallValueNode::emitBytecode):
- (JSC::FunctionCallResolveNode::emitBytecode):
- (JSC::FunctionCallBracketNode::emitBytecode):
- (JSC::FunctionCallDotNode::emitBytecode):
- (JSC::emitPreIncOrDec):
- (JSC::emitPostIncOrDec):
- (JSC::PostfixResolveNode::emitBytecode):
- (JSC::PostfixBracketNode::emitBytecode):
- (JSC::PostfixDotNode::emitBytecode):
- (JSC::PostfixErrorNode::emitBytecode):
- (JSC::DeleteResolveNode::emitBytecode):
- (JSC::DeleteBracketNode::emitBytecode):
- (JSC::DeleteDotNode::emitBytecode):
- (JSC::DeleteValueNode::emitBytecode):
- (JSC::VoidNode::emitBytecode):
- (JSC::TypeOfResolveNode::emitBytecode):
- (JSC::TypeOfValueNode::emitBytecode):
- (JSC::PrefixResolveNode::emitBytecode):
- (JSC::PrefixBracketNode::emitBytecode):
- (JSC::PrefixDotNode::emitBytecode):
- (JSC::PrefixErrorNode::emitBytecode):
- (JSC::UnaryOpNode::emitBytecode):
- (JSC::BinaryOpNode::emitBytecode):
- (JSC::EqualNode::emitBytecode):
- (JSC::StrictEqualNode::emitBytecode):
- (JSC::ReverseBinaryOpNode::emitBytecode):
- (JSC::ThrowableBinaryOpNode::emitBytecode):
- (JSC::InstanceOfNode::emitBytecode):
- (JSC::LogicalOpNode::emitBytecode):
- (JSC::ConditionalNode::emitBytecode):
- (JSC::emitReadModifyAssignment):
- (JSC::ReadModifyResolveNode::emitBytecode):
- (JSC::AssignResolveNode::emitBytecode):
- (JSC::AssignDotNode::emitBytecode):
- (JSC::ReadModifyDotNode::emitBytecode):
- (JSC::AssignErrorNode::emitBytecode):
- (JSC::AssignBracketNode::emitBytecode):
- (JSC::ReadModifyBracketNode::emitBytecode):
- (JSC::CommaNode::emitBytecode):
- (JSC::ConstDeclNode::emitCodeSingle):
- (JSC::ConstDeclNode::emitBytecode):
- (JSC::ConstStatementNode::emitBytecode):
- (JSC::statementListEmitCode):
- (JSC::BlockNode::emitBytecode):
- (JSC::EmptyStatementNode::emitBytecode):
- (JSC::DebuggerStatementNode::emitBytecode):
- (JSC::ExprStatementNode::emitBytecode):
- (JSC::VarStatementNode::emitBytecode):
- (JSC::IfNode::emitBytecode):
- (JSC::IfElseNode::emitBytecode):
- (JSC::DoWhileNode::emitBytecode):
- (JSC::WhileNode::emitBytecode):
- (JSC::ForNode::emitBytecode):
- (JSC::ForInNode::emitBytecode):
- (JSC::ContinueNode::emitBytecode):
- (JSC::BreakNode::emitBytecode):
- (JSC::ReturnNode::emitBytecode):
- (JSC::WithNode::emitBytecode):
- (JSC::CaseBlockNode::emitBytecodeForBlock):
- (JSC::SwitchNode::emitBytecode):
- (JSC::LabelNode::emitBytecode):
- (JSC::ThrowNode::emitBytecode):
- (JSC::TryNode::emitBytecode):
- (JSC::EvalNode::emitBytecode):
- (JSC::EvalNode::generateBytecode):
- (JSC::FunctionBodyNode::generateBytecode):
- (JSC::FunctionBodyNode::emitBytecode):
- (JSC::ProgramNode::emitBytecode):
- (JSC::ProgramNode::generateBytecode):
- (JSC::FuncDeclNode::emitBytecode):
- (JSC::FuncExprNode::emitBytecode):
- * parser/Nodes.h:
- (JSC::ExpressionNode::):
- (JSC::BooleanNode::):
- (JSC::NumberNode::):
- (JSC::StringNode::):
- (JSC::ProgramNode::):
- (JSC::EvalNode::):
- (JSC::FunctionBodyNode::):
+ * runtime/Protect.h:
+ * runtime/Structure.cpp:
+ (JSC::Structure::~Structure):
+ (JSC::Structure::addPropertyWithoutTransition):
+ (JSC::Structure::removePropertyWithoutTransition): No need to clear
+ the enumeration cache with adding / removing properties without
+ transition. It is an error to add / remove properties without transition
+ once an object has been observed, and we can ASSERT to catch that.
+
+ * runtime/Structure.h:
+ (JSC::Structure::enumerationCache): Changed the enumeration cache to
+ hold a JSPropertyNameIterator.
+
+ * runtime/StructureChain.cpp:
+ * runtime/StructureChain.h:
+ (JSC::StructureChain::head): Removed StructureChain::isCacheable because
+ it was wrong-headed in two ways: (1) It gave up when a prototype was a
+ dictionary, but instead we want un-dictionary heavily accessed
+ prototypes; (2) It folded a test for hasDefaultGetPropertyNames() into
+ a generic test for "cacheable-ness", but hasDefaultGetPropertyNames()
+ is only releavant to for-in caching.
+
+2009-10-16 Steve Falkenburg <sfalken@apple.com>
+
+ Reviewed by Adam Roben.
+
+ Add a Debug_All configuration to build entire stack as debug.
+ Change Debug_Internal to:
+ - stop using _debug suffix for all WebKit/Safari binaries
+ - not use _debug as a DLL naming suffix
+ - use non-debug C runtime lib.
+
+ * JavaScriptCore.vcproj/JavaScriptCore.make: Debug build in makefile should build Debug_All.
+ * JavaScriptCore.vcproj/JavaScriptCore.sln: Add Debug_All configuration.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add Debug_All configuration.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Renamed single configuration from "Release" to "all".
+ * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Add Debug_All configuration.
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add Debug_All configuration.
+ * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_All configuration.
+ * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_All configuration.
+
+2009-10-16 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Gavin Barraclough.
+
+ Make typeinfo flags default to false
+ https://bugs.webkit.org/show_bug.cgi?id=30372
+
+ Last part -- replace HasDefaultGetPropertyNames with OverridesGetPropertyNames
+ flag.
+
+ * API/JSCallbackConstructor.h:
+ (JSC::JSCallbackConstructor::createStructure):
+ * API/JSCallbackObject.h:
+ (JSC::JSCallbackObject::createStructure):
+ * debugger/DebuggerActivation.h:
+ (JSC::DebuggerActivation::createStructure):
* runtime/Arguments.h:
- (JSC::Arguments::getArgumentsData):
- (JSC::JSActivation::copyRegisters):
- * runtime/JSActivation.cpp:
- (JSC::JSActivation::mark):
+ (JSC::Arguments::createStructure):
+ * runtime/BooleanObject.h:
+ (JSC::BooleanObject::createStructure):
+ * runtime/DatePrototype.h:
+ (JSC::DatePrototype::createStructure):
+ * runtime/FunctionPrototype.h:
+ (JSC::FunctionPrototype::createStructure):
+ * runtime/GlobalEvalFunction.h:
+ (JSC::GlobalEvalFunction::createStructure):
+ * runtime/JSAPIValueWrapper.h:
+ (JSC::JSAPIValueWrapper::createStructure):
* runtime/JSActivation.h:
- (JSC::JSActivation::JSActivationData::JSActivationData):
- * runtime/JSFunction.cpp:
- (JSC::JSFunction::~JSFunction):
+ (JSC::JSActivation::createStructure):
+ * runtime/JSArray.h:
+ (JSC::JSArray::createStructure):
+ * runtime/JSByteArray.cpp:
+ (JSC::JSByteArray::createStructure):
+ * runtime/JSFunction.h:
+ (JSC::JSFunction::createStructure):
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::createStructure):
+ * runtime/JSNotAnObject.h:
+ (JSC::JSNotAnObject::createStructure):
+ * runtime/JSONObject.h:
+ (JSC::JSONObject::createStructure):
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::getPropertyNames):
+ * runtime/JSObject.h:
+ (JSC::JSObject::createStructure):
+ * runtime/JSStaticScopeObject.h:
+ (JSC::JSStaticScopeObject::createStructure):
+ * runtime/JSTypeInfo.h:
+ (JSC::TypeInfo::overridesGetPropertyNames):
+ * runtime/JSVariableObject.h:
+ (JSC::JSVariableObject::createStructure):
+ * runtime/JSWrapperObject.h:
+ (JSC::JSWrapperObject::createStructure):
+ * runtime/MathObject.h:
+ (JSC::MathObject::createStructure):
+ * runtime/NumberConstructor.h:
+ (JSC::NumberConstructor::createStructure):
+ * runtime/NumberObject.h:
+ (JSC::NumberObject::createStructure):
+ * runtime/RegExpConstructor.h:
+ (JSC::RegExpConstructor::createStructure):
+ * runtime/RegExpObject.h:
+ (JSC::RegExpObject::createStructure):
+ * runtime/StringObject.h:
+ (JSC::StringObject::createStructure):
+ * runtime/StringObjectThatMasqueradesAsUndefined.h:
+ (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
+ * runtime/StructureChain.cpp:
+ (JSC::StructureChain::isCacheable):
-2008-11-15 Geoffrey Garen <ggaren@apple.com>
+2009-10-16 Kevin Ollivier <kevino@theolliviers.com>
- Reviewed by Sam Weinig.
-
- Renamed all forms of "byte code" "opcode" "op code" "code" "bitcode"
- etc. to "bytecode".
-
- * VM/CTI.cpp:
- (JSC::CTI::printBytecodeOperandTypes):
- (JSC::CTI::emitAllocateNumber):
- (JSC::CTI::emitNakedCall):
- (JSC::CTI::emitNakedFastCall):
- (JSC::CTI::emitCTICall):
- (JSC::CTI::emitJumpSlowCaseIfNotJSCell):
- (JSC::CTI::emitJumpSlowCaseIfNotImmNum):
- (JSC::CTI::emitJumpSlowCaseIfNotImmNums):
- (JSC::CTI::emitFastArithIntToImmOrSlowCase):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::emitSlowScriptCheck):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::compileBinaryArithOpSlowCase):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- * VM/CTI.h:
- (JSC::CallRecord::CallRecord):
- (JSC::SwitchRecord::SwitchRecord):
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::printStructureIDs):
- (JSC::CodeBlock::dump):
- (JSC::CodeBlock::~CodeBlock):
- (JSC::CodeBlock::derefStructureIDs):
- (JSC::CodeBlock::refStructureIDs):
- * VM/CodeBlock.h:
- (JSC::StructureStubInfo::StructureStubInfo):
- * VM/ExceptionHelpers.cpp:
- (JSC::createNotAnObjectError):
- * VM/Instruction.h:
- (JSC::Instruction::Instruction):
- (JSC::Instruction::):
- * VM/Machine.cpp:
- (JSC::BytecodeInterpreter::isBytecode):
- (JSC::BytecodeInterpreter::throwException):
- (JSC::BytecodeInterpreter::execute):
- (JSC::BytecodeInterpreter::tryCachePutByID):
- (JSC::BytecodeInterpreter::uncachePutByID):
- (JSC::BytecodeInterpreter::tryCacheGetByID):
- (JSC::BytecodeInterpreter::uncacheGetByID):
- (JSC::BytecodeInterpreter::privateExecute):
- (JSC::BytecodeInterpreter::tryCTICachePutByID):
- (JSC::BytecodeInterpreter::tryCTICacheGetByID):
- (JSC::BytecodeInterpreter::cti_op_call_JSFunction):
- (JSC::BytecodeInterpreter::cti_vm_dontLazyLinkCall):
- (JSC::BytecodeInterpreter::cti_vm_lazyLinkCall):
- * VM/Machine.h:
- (JSC::BytecodeInterpreter::getBytecode):
- (JSC::BytecodeInterpreter::getBytecodeID):
- (JSC::BytecodeInterpreter::isCallBytecode):
- * VM/Opcode.cpp:
- (JSC::):
- (JSC::BytecodeStats::BytecodeStats):
- (JSC::compareBytecodeIndices):
- (JSC::compareBytecodePairIndices):
- (JSC::BytecodeStats::~BytecodeStats):
- (JSC::BytecodeStats::recordInstruction):
- (JSC::BytecodeStats::resetLastInstruction):
- * VM/Opcode.h:
- (JSC::):
- (JSC::padBytecodeName):
- * VM/SamplingTool.cpp:
- (JSC::ScopeSampleRecord::sample):
- (JSC::SamplingTool::run):
- (JSC::compareBytecodeIndicesSampling):
- (JSC::SamplingTool::dump):
- * VM/SamplingTool.h:
- (JSC::ScopeSampleRecord::ScopeSampleRecord):
- (JSC::SamplingTool::SamplingTool):
- * bytecompiler/CodeGenerator.cpp:
- (JSC::CodeGenerator::generate):
- (JSC::CodeGenerator::CodeGenerator):
- (JSC::CodeGenerator::emitLabel):
- (JSC::CodeGenerator::emitBytecode):
- (JSC::CodeGenerator::emitJump):
- (JSC::CodeGenerator::emitJumpIfTrue):
- (JSC::CodeGenerator::emitJumpIfFalse):
- (JSC::CodeGenerator::emitMove):
- (JSC::CodeGenerator::emitUnaryOp):
- (JSC::CodeGenerator::emitPreInc):
- (JSC::CodeGenerator::emitPreDec):
- (JSC::CodeGenerator::emitPostInc):
- (JSC::CodeGenerator::emitPostDec):
- (JSC::CodeGenerator::emitBinaryOp):
- (JSC::CodeGenerator::emitEqualityOp):
- (JSC::CodeGenerator::emitUnexpectedLoad):
- (JSC::CodeGenerator::emitInstanceOf):
- (JSC::CodeGenerator::emitResolve):
- (JSC::CodeGenerator::emitGetScopedVar):
- (JSC::CodeGenerator::emitPutScopedVar):
- (JSC::CodeGenerator::emitResolveBase):
- (JSC::CodeGenerator::emitResolveWithBase):
- (JSC::CodeGenerator::emitResolveFunction):
- (JSC::CodeGenerator::emitGetById):
- (JSC::CodeGenerator::emitPutById):
- (JSC::CodeGenerator::emitPutGetter):
- (JSC::CodeGenerator::emitPutSetter):
- (JSC::CodeGenerator::emitDeleteById):
- (JSC::CodeGenerator::emitGetByVal):
- (JSC::CodeGenerator::emitPutByVal):
- (JSC::CodeGenerator::emitDeleteByVal):
- (JSC::CodeGenerator::emitPutByIndex):
- (JSC::CodeGenerator::emitNewObject):
- (JSC::CodeGenerator::emitNewArray):
- (JSC::CodeGenerator::emitNewFunction):
- (JSC::CodeGenerator::emitNewRegExp):
- (JSC::CodeGenerator::emitNewFunctionExpression):
- (JSC::CodeGenerator::emitCall):
- (JSC::CodeGenerator::emitReturn):
- (JSC::CodeGenerator::emitUnaryNoDstOp):
- (JSC::CodeGenerator::emitConstruct):
- (JSC::CodeGenerator::emitPopScope):
- (JSC::CodeGenerator::emitDebugHook):
- (JSC::CodeGenerator::emitComplexJumpScopes):
- (JSC::CodeGenerator::emitJumpScopes):
- (JSC::CodeGenerator::emitNextPropertyName):
- (JSC::CodeGenerator::emitCatch):
- (JSC::CodeGenerator::emitNewError):
- (JSC::CodeGenerator::emitJumpSubroutine):
- (JSC::CodeGenerator::emitSubroutineReturn):
- (JSC::CodeGenerator::emitPushNewScope):
- (JSC::CodeGenerator::beginSwitch):
- (JSC::CodeGenerator::endSwitch):
- * bytecompiler/CodeGenerator.h:
- (JSC::CodeGenerator::emitNode):
- * jsc.cpp:
- (runWithScripts):
- * masm/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::emitModRm_opr):
- (JSC::X86Assembler::emitModRm_opr_Unchecked):
- (JSC::X86Assembler::emitModRm_opm):
- (JSC::X86Assembler::emitModRm_opm_Unchecked):
- (JSC::X86Assembler::emitModRm_opmsib):
- * parser/Nodes.cpp:
- (JSC::NullNode::emitBytecode):
- (JSC::BooleanNode::emitBytecode):
- (JSC::NumberNode::emitBytecode):
- (JSC::StringNode::emitBytecode):
- (JSC::RegExpNode::emitBytecode):
- (JSC::ThisNode::emitBytecode):
- (JSC::ResolveNode::emitBytecode):
- (JSC::ArrayNode::emitBytecode):
- (JSC::ObjectLiteralNode::emitBytecode):
- (JSC::PropertyListNode::emitBytecode):
- (JSC::BracketAccessorNode::emitBytecode):
- (JSC::DotAccessorNode::emitBytecode):
- (JSC::ArgumentListNode::emitBytecode):
- (JSC::NewExprNode::emitBytecode):
- (JSC::EvalFunctionCallNode::emitBytecode):
- (JSC::FunctionCallValueNode::emitBytecode):
- (JSC::FunctionCallResolveNode::emitBytecode):
- (JSC::FunctionCallBracketNode::emitBytecode):
- (JSC::FunctionCallDotNode::emitBytecode):
- (JSC::PostfixResolveNode::emitBytecode):
- (JSC::PostfixBracketNode::emitBytecode):
- (JSC::PostfixDotNode::emitBytecode):
- (JSC::PostfixErrorNode::emitBytecode):
- (JSC::DeleteResolveNode::emitBytecode):
- (JSC::DeleteBracketNode::emitBytecode):
- (JSC::DeleteDotNode::emitBytecode):
- (JSC::DeleteValueNode::emitBytecode):
- (JSC::VoidNode::emitBytecode):
- (JSC::TypeOfResolveNode::emitBytecode):
- (JSC::TypeOfValueNode::emitBytecode):
- (JSC::PrefixResolveNode::emitBytecode):
- (JSC::PrefixBracketNode::emitBytecode):
- (JSC::PrefixDotNode::emitBytecode):
- (JSC::PrefixErrorNode::emitBytecode):
- (JSC::UnaryOpNode::emitBytecode):
- (JSC::BinaryOpNode::emitBytecode):
- (JSC::EqualNode::emitBytecode):
- (JSC::StrictEqualNode::emitBytecode):
- (JSC::ReverseBinaryOpNode::emitBytecode):
- (JSC::ThrowableBinaryOpNode::emitBytecode):
- (JSC::InstanceOfNode::emitBytecode):
- (JSC::LogicalOpNode::emitBytecode):
- (JSC::ConditionalNode::emitBytecode):
- (JSC::emitReadModifyAssignment):
- (JSC::ReadModifyResolveNode::emitBytecode):
- (JSC::AssignResolveNode::emitBytecode):
- (JSC::AssignDotNode::emitBytecode):
- (JSC::ReadModifyDotNode::emitBytecode):
- (JSC::AssignErrorNode::emitBytecode):
- (JSC::AssignBracketNode::emitBytecode):
- (JSC::ReadModifyBracketNode::emitBytecode):
- (JSC::CommaNode::emitBytecode):
- (JSC::ConstDeclNode::emitBytecode):
- (JSC::ConstStatementNode::emitBytecode):
- (JSC::BlockNode::emitBytecode):
- (JSC::EmptyStatementNode::emitBytecode):
- (JSC::DebuggerStatementNode::emitBytecode):
- (JSC::ExprStatementNode::emitBytecode):
- (JSC::VarStatementNode::emitBytecode):
- (JSC::IfNode::emitBytecode):
- (JSC::IfElseNode::emitBytecode):
- (JSC::DoWhileNode::emitBytecode):
- (JSC::WhileNode::emitBytecode):
- (JSC::ForNode::emitBytecode):
- (JSC::ForInNode::emitBytecode):
- (JSC::ContinueNode::emitBytecode):
- (JSC::BreakNode::emitBytecode):
- (JSC::ReturnNode::emitBytecode):
- (JSC::WithNode::emitBytecode):
- (JSC::SwitchNode::emitBytecode):
- (JSC::LabelNode::emitBytecode):
- (JSC::ThrowNode::emitBytecode):
- (JSC::TryNode::emitBytecode):
- (JSC::ScopeNode::ScopeNode):
- (JSC::EvalNode::emitBytecode):
- (JSC::FunctionBodyNode::emitBytecode):
- (JSC::ProgramNode::emitBytecode):
- (JSC::FuncDeclNode::emitBytecode):
- (JSC::FuncExprNode::emitBytecode):
- * parser/Nodes.h:
- (JSC::UnaryPlusNode::):
- (JSC::NegateNode::):
- (JSC::BitwiseNotNode::):
- (JSC::LogicalNotNode::):
- (JSC::MultNode::):
- (JSC::DivNode::):
- (JSC::ModNode::):
- (JSC::AddNode::):
- (JSC::SubNode::):
- (JSC::LeftShiftNode::):
- (JSC::RightShiftNode::):
- (JSC::UnsignedRightShiftNode::):
- (JSC::LessNode::):
- (JSC::GreaterNode::):
- (JSC::LessEqNode::):
- (JSC::GreaterEqNode::):
- (JSC::InstanceOfNode::):
- (JSC::InNode::):
- (JSC::EqualNode::):
- (JSC::NotEqualNode::):
- (JSC::StrictEqualNode::):
- (JSC::NotStrictEqualNode::):
- (JSC::BitAndNode::):
- (JSC::BitOrNode::):
- (JSC::BitXOrNode::):
- (JSC::ProgramNode::):
- (JSC::EvalNode::):
- (JSC::FunctionBodyNode::):
- * runtime/JSNotAnObject.h:
- * runtime/StructureID.cpp:
- (JSC::StructureID::fromDictionaryTransition):
- * wtf/Platform.h:
+ wxMSW build fix, we can't use the simple hash there because the PlatformModuleVersion
+ structure differs.
-2008-11-15 Geoffrey Garen <ggaren@apple.com>
+ * wtf/Platform.h:
- Reviewed by Sam Weinig.
-
- Renamed Machine to BytecodeInterpreter.
-
- Nixed the Interpreter class, and changed its two functions to stand-alone
- functions.
+2009-10-16 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- * JavaScriptCore.exp:
- * VM/CTI.cpp:
- (JSC::):
- (JSC::CTI::emitCTICall):
- (JSC::CTI::CTI):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::emitSlowScriptCheck):
- (JSC::CTI::compileBinaryArithOpSlowCase):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- (JSC::CTI::privateCompileGetByIdSelf):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::privateCompilePutByIdReplace):
- (JSC::CTI::privateCompilePutByIdTransition):
- (JSC::CTI::privateCompileCTIMachineTrampolines):
- (JSC::CTI::freeCTIMachineTrampolines):
- (JSC::CTI::patchGetByIdSelf):
- (JSC::CTI::patchPutByIdReplace):
- (JSC::CTI::privateCompilePatchGetArrayLength):
- (JSC::CTI::compileRegExp):
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::printStructureIDs):
- (JSC::CodeBlock::dump):
- (JSC::CodeBlock::derefStructureIDs):
- (JSC::CodeBlock::refStructureIDs):
- * VM/ExceptionHelpers.cpp:
- (JSC::createNotAnObjectError):
- * VM/Machine.cpp:
- (JSC::jsLess):
- (JSC::jsLessEq):
- (JSC::BytecodeInterpreter::resolve):
- (JSC::BytecodeInterpreter::resolveSkip):
- (JSC::BytecodeInterpreter::resolveGlobal):
- (JSC::BytecodeInterpreter::resolveBase):
- (JSC::BytecodeInterpreter::resolveBaseAndProperty):
- (JSC::BytecodeInterpreter::resolveBaseAndFunc):
- (JSC::BytecodeInterpreter::slideRegisterWindowForCall):
- (JSC::BytecodeInterpreter::callEval):
- (JSC::BytecodeInterpreter::BytecodeInterpreter):
- (JSC::BytecodeInterpreter::initialize):
- (JSC::BytecodeInterpreter::~BytecodeInterpreter):
- (JSC::BytecodeInterpreter::dumpCallFrame):
- (JSC::BytecodeInterpreter::dumpRegisters):
- (JSC::BytecodeInterpreter::isOpcode):
- (JSC::BytecodeInterpreter::unwindCallFrame):
- (JSC::BytecodeInterpreter::throwException):
- (JSC::BytecodeInterpreter::execute):
- (JSC::BytecodeInterpreter::debug):
- (JSC::BytecodeInterpreter::resetTimeoutCheck):
- (JSC::BytecodeInterpreter::checkTimeout):
- (JSC::BytecodeInterpreter::createExceptionScope):
- (JSC::BytecodeInterpreter::tryCachePutByID):
- (JSC::BytecodeInterpreter::uncachePutByID):
- (JSC::BytecodeInterpreter::tryCacheGetByID):
- (JSC::BytecodeInterpreter::uncacheGetByID):
- (JSC::BytecodeInterpreter::privateExecute):
- (JSC::BytecodeInterpreter::retrieveArguments):
- (JSC::BytecodeInterpreter::retrieveCaller):
- (JSC::BytecodeInterpreter::retrieveLastCaller):
- (JSC::BytecodeInterpreter::findFunctionCallFrame):
- (JSC::BytecodeInterpreter::tryCTICachePutByID):
- (JSC::BytecodeInterpreter::tryCTICacheGetByID):
- (JSC::BytecodeInterpreter::cti_op_convert_this):
- (JSC::BytecodeInterpreter::cti_op_end):
- (JSC::BytecodeInterpreter::cti_op_add):
- (JSC::BytecodeInterpreter::cti_op_pre_inc):
- (JSC::BytecodeInterpreter::cti_timeout_check):
- (JSC::BytecodeInterpreter::cti_register_file_check):
- (JSC::BytecodeInterpreter::cti_op_loop_if_less):
- (JSC::BytecodeInterpreter::cti_op_loop_if_lesseq):
- (JSC::BytecodeInterpreter::cti_op_new_object):
- (JSC::BytecodeInterpreter::cti_op_put_by_id):
- (JSC::BytecodeInterpreter::cti_op_put_by_id_second):
- (JSC::BytecodeInterpreter::cti_op_put_by_id_generic):
- (JSC::BytecodeInterpreter::cti_op_put_by_id_fail):
- (JSC::BytecodeInterpreter::cti_op_get_by_id):
- (JSC::BytecodeInterpreter::cti_op_get_by_id_second):
- (JSC::BytecodeInterpreter::cti_op_get_by_id_generic):
- (JSC::BytecodeInterpreter::cti_op_get_by_id_fail):
- (JSC::BytecodeInterpreter::cti_op_instanceof):
- (JSC::BytecodeInterpreter::cti_op_del_by_id):
- (JSC::BytecodeInterpreter::cti_op_mul):
- (JSC::BytecodeInterpreter::cti_op_new_func):
- (JSC::BytecodeInterpreter::cti_op_call_JSFunction):
- (JSC::BytecodeInterpreter::cti_op_call_arityCheck):
- (JSC::BytecodeInterpreter::cti_vm_dontLazyLinkCall):
- (JSC::BytecodeInterpreter::cti_vm_lazyLinkCall):
- (JSC::BytecodeInterpreter::cti_op_push_activation):
- (JSC::BytecodeInterpreter::cti_op_call_NotJSFunction):
- (JSC::BytecodeInterpreter::cti_op_create_arguments):
- (JSC::BytecodeInterpreter::cti_op_create_arguments_no_params):
- (JSC::BytecodeInterpreter::cti_op_tear_off_activation):
- (JSC::BytecodeInterpreter::cti_op_tear_off_arguments):
- (JSC::BytecodeInterpreter::cti_op_profile_will_call):
- (JSC::BytecodeInterpreter::cti_op_profile_did_call):
- (JSC::BytecodeInterpreter::cti_op_ret_scopeChain):
- (JSC::BytecodeInterpreter::cti_op_new_array):
- (JSC::BytecodeInterpreter::cti_op_resolve):
- (JSC::BytecodeInterpreter::cti_op_construct_JSConstruct):
- (JSC::BytecodeInterpreter::cti_op_construct_NotJSConstruct):
- (JSC::BytecodeInterpreter::cti_op_get_by_val):
- (JSC::BytecodeInterpreter::cti_op_resolve_func):
- (JSC::BytecodeInterpreter::cti_op_sub):
- (JSC::BytecodeInterpreter::cti_op_put_by_val):
- (JSC::BytecodeInterpreter::cti_op_put_by_val_array):
- (JSC::BytecodeInterpreter::cti_op_lesseq):
- (JSC::BytecodeInterpreter::cti_op_loop_if_true):
- (JSC::BytecodeInterpreter::cti_op_negate):
- (JSC::BytecodeInterpreter::cti_op_resolve_base):
- (JSC::BytecodeInterpreter::cti_op_resolve_skip):
- (JSC::BytecodeInterpreter::cti_op_resolve_global):
- (JSC::BytecodeInterpreter::cti_op_div):
- (JSC::BytecodeInterpreter::cti_op_pre_dec):
- (JSC::BytecodeInterpreter::cti_op_jless):
- (JSC::BytecodeInterpreter::cti_op_not):
- (JSC::BytecodeInterpreter::cti_op_jtrue):
- (JSC::BytecodeInterpreter::cti_op_post_inc):
- (JSC::BytecodeInterpreter::cti_op_eq):
- (JSC::BytecodeInterpreter::cti_op_lshift):
- (JSC::BytecodeInterpreter::cti_op_bitand):
- (JSC::BytecodeInterpreter::cti_op_rshift):
- (JSC::BytecodeInterpreter::cti_op_bitnot):
- (JSC::BytecodeInterpreter::cti_op_resolve_with_base):
- (JSC::BytecodeInterpreter::cti_op_new_func_exp):
- (JSC::BytecodeInterpreter::cti_op_mod):
- (JSC::BytecodeInterpreter::cti_op_less):
- (JSC::BytecodeInterpreter::cti_op_neq):
- (JSC::BytecodeInterpreter::cti_op_post_dec):
- (JSC::BytecodeInterpreter::cti_op_urshift):
- (JSC::BytecodeInterpreter::cti_op_bitxor):
- (JSC::BytecodeInterpreter::cti_op_new_regexp):
- (JSC::BytecodeInterpreter::cti_op_bitor):
- (JSC::BytecodeInterpreter::cti_op_call_eval):
- (JSC::BytecodeInterpreter::cti_op_throw):
- (JSC::BytecodeInterpreter::cti_op_get_pnames):
- (JSC::BytecodeInterpreter::cti_op_next_pname):
- (JSC::BytecodeInterpreter::cti_op_push_scope):
- (JSC::BytecodeInterpreter::cti_op_pop_scope):
- (JSC::BytecodeInterpreter::cti_op_typeof):
- (JSC::BytecodeInterpreter::cti_op_is_undefined):
- (JSC::BytecodeInterpreter::cti_op_is_boolean):
- (JSC::BytecodeInterpreter::cti_op_is_number):
- (JSC::BytecodeInterpreter::cti_op_is_string):
- (JSC::BytecodeInterpreter::cti_op_is_object):
- (JSC::BytecodeInterpreter::cti_op_is_function):
- (JSC::BytecodeInterpreter::cti_op_stricteq):
- (JSC::BytecodeInterpreter::cti_op_nstricteq):
- (JSC::BytecodeInterpreter::cti_op_to_jsnumber):
- (JSC::BytecodeInterpreter::cti_op_in):
- (JSC::BytecodeInterpreter::cti_op_push_new_scope):
- (JSC::BytecodeInterpreter::cti_op_jmp_scopes):
- (JSC::BytecodeInterpreter::cti_op_put_by_index):
- (JSC::BytecodeInterpreter::cti_op_switch_imm):
- (JSC::BytecodeInterpreter::cti_op_switch_char):
- (JSC::BytecodeInterpreter::cti_op_switch_string):
- (JSC::BytecodeInterpreter::cti_op_del_by_val):
- (JSC::BytecodeInterpreter::cti_op_put_getter):
- (JSC::BytecodeInterpreter::cti_op_put_setter):
- (JSC::BytecodeInterpreter::cti_op_new_error):
- (JSC::BytecodeInterpreter::cti_op_debug):
- (JSC::BytecodeInterpreter::cti_vm_throw):
- * VM/Machine.h:
- * VM/Register.h:
- * VM/SamplingTool.cpp:
- (JSC::SamplingTool::run):
- * VM/SamplingTool.h:
- (JSC::SamplingTool::SamplingTool):
- * bytecompiler/CodeGenerator.cpp:
- (JSC::CodeGenerator::generate):
- (JSC::CodeGenerator::CodeGenerator):
- (JSC::CodeGenerator::emitOpcode):
- * debugger/DebuggerCallFrame.cpp:
- (JSC::DebuggerCallFrame::evaluate):
- * jsc.cpp:
- (runWithScripts):
- * parser/Nodes.cpp:
- (JSC::ScopeNode::ScopeNode):
- * profiler/ProfileGenerator.cpp:
- (JSC::ProfileGenerator::addParentForConsoleStart):
- * runtime/ArrayPrototype.cpp:
- (JSC::arrayProtoFuncPop):
- (JSC::arrayProtoFuncPush):
- * runtime/Collector.cpp:
- (JSC::Heap::collect):
- * runtime/ExecState.h:
- (JSC::ExecState::interpreter):
- * runtime/FunctionPrototype.cpp:
- (JSC::functionProtoFuncApply):
- * runtime/Interpreter.cpp:
- (JSC::Interpreter::evaluate):
- * runtime/JSCell.h:
- * runtime/JSFunction.cpp:
- (JSC::JSFunction::call):
- (JSC::JSFunction::argumentsGetter):
- (JSC::JSFunction::callerGetter):
- (JSC::JSFunction::construct):
- * runtime/JSFunction.h:
- * runtime/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- (JSC::JSGlobalData::~JSGlobalData):
- * runtime/JSGlobalData.h:
- * runtime/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::~JSGlobalObject):
- (JSC::JSGlobalObject::setTimeoutTime):
- (JSC::JSGlobalObject::startTimeoutCheck):
- (JSC::JSGlobalObject::stopTimeoutCheck):
- (JSC::JSGlobalObject::mark):
- * runtime/JSGlobalObjectFunctions.cpp:
- (JSC::globalFuncEval):
- * runtime/JSString.h:
- * runtime/RegExp.cpp:
- (JSC::RegExp::RegExp):
+ Reviewed by Simon Hausmann.
-2008-11-15 Maciej Stachowiak <mjs@apple.com>
+ [Qt] Implement ExecutableAllocator for Symbian
+ https://bugs.webkit.org/show_bug.cgi?id=29946
- Reviewed by Sam Weinig.
-
- - Remove SymbolTable from FunctionBodyNode and move it to CodeBlock
-
- It's not needed for functions that have never been executed, so no
- need to waste the memory. Saves ~4M on membuster after 30 pages.
+ Tested with YARR JIT enabled for Symbian;
+ This patch does not (yet) enable YARR JIT by default.
- * VM/CodeBlock.h:
- * VM/Machine.cpp:
- (JSC::Machine::retrieveArguments):
- * parser/Nodes.cpp:
- (JSC::EvalNode::generateCode):
- (JSC::FunctionBodyNode::generateCode):
- * parser/Nodes.h:
- * runtime/JSActivation.h:
- (JSC::JSActivation::JSActivationData::JSActivationData):
+ * JavaScriptCore.pri:
+ * jit/ExecutableAllocator.h:
+ * jit/ExecutableAllocatorSymbian.cpp: Added.
+ (JSC::ExecutableAllocator::intializePageSize):
+ (JSC::ExecutablePool::systemAlloc):
+ (JSC::ExecutablePool::systemRelease):
-2008-11-14 Cameron Zwarich <zwarich@apple.com>
+2009-10-15 Oliver Hunt <oliver@apple.com>
Reviewed by Darin Adler.
- Bug 22259: Make all opcodes use eax as their final result register
- <https://bugs.webkit.org/show_bug.cgi?id=22259>
+ Make typeinfo flags default to false
+ https://bugs.webkit.org/show_bug.cgi?id=30372
+
+ Part 2 -- Reverse the TypeInfo HasDefaultMark flag to OverridesMarkChildren, etc
+
+ * API/JSCallbackConstructor.h:
+ (JSC::JSCallbackConstructor::createStructure):
+ * API/JSCallbackFunction.h:
+ (JSC::JSCallbackFunction::createStructure):
+ * API/JSCallbackObject.h:
+ (JSC::JSCallbackObject::createStructure):
+ * debugger/DebuggerActivation.h:
+ (JSC::DebuggerActivation::createStructure):
+ * runtime/Arguments.h:
+ (JSC::Arguments::createStructure):
+ * runtime/BooleanObject.h:
+ (JSC::BooleanObject::createStructure):
+ * runtime/DatePrototype.h:
+ (JSC::DatePrototype::createStructure):
+ * runtime/FunctionPrototype.h:
+ (JSC::FunctionPrototype::createStructure):
+ * runtime/GetterSetter.h:
+ (JSC::GetterSetter::createStructure):
+ * runtime/GlobalEvalFunction.h:
+ (JSC::GlobalEvalFunction::createStructure):
+ * runtime/InternalFunction.h:
+ (JSC::InternalFunction::createStructure):
+ * runtime/JSAPIValueWrapper.h:
+ (JSC::JSAPIValueWrapper::createStructure):
+ * runtime/JSActivation.h:
+ (JSC::JSActivation::createStructure):
+ * runtime/JSArray.h:
+ (JSC::JSArray::createStructure):
+ (JSC::MarkStack::markChildren):
+ * runtime/JSByteArray.cpp:
+ (JSC::JSByteArray::createStructure):
+ * runtime/JSFunction.h:
+ (JSC::JSFunction::createStructure):
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::createStructure):
+ * runtime/JSNotAnObject.h:
+ (JSC::JSNotAnObject::createStructure):
+ * runtime/JSNumberCell.h:
+ (JSC::JSNumberCell::createStructure):
+ * runtime/JSONObject.h:
+ (JSC::JSONObject::createStructure):
+ * runtime/JSObject.h:
+ (JSC::JSObject::createStructure):
+ * runtime/JSPropertyNameIterator.h:
+ (JSC::JSPropertyNameIterator::createStructure):
+ * runtime/JSStaticScopeObject.h:
+ (JSC::JSStaticScopeObject::createStructure):
+ * runtime/JSString.h:
+ (JSC::JSString::createStructure):
+ * runtime/JSTypeInfo.h:
+ (JSC::TypeInfo::overridesMarkChildren):
+ * runtime/JSVariableObject.h:
+ (JSC::JSVariableObject::createStructure):
+ * runtime/JSWrapperObject.h:
+ (JSC::JSWrapperObject::createStructure):
+ * runtime/MathObject.h:
+ (JSC::MathObject::createStructure):
+ * runtime/NumberConstructor.h:
+ (JSC::NumberConstructor::createStructure):
+ * runtime/NumberObject.h:
+ (JSC::NumberObject::createStructure):
+ * runtime/RegExpConstructor.h:
+ (JSC::RegExpConstructor::createStructure):
+ * runtime/RegExpObject.h:
+ (JSC::RegExpObject::createStructure):
+ * runtime/StringObject.h:
+ (JSC::StringObject::createStructure):
+ * runtime/StringObjectThatMasqueradesAsUndefined.h:
+ (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
- Change one case of op_add (and the corresponding slow case) to use eax
- rather than edx. Also, change the order in which the two results of
- resolve_func and resolve_base are emitted so that the retrieved value is
- put last into eax.
+2009-10-14 Oliver Hunt <oliver@apple.com>
- This gives no performance change on SunSpider or the V8 benchmark suite
- when run in either harness.
+ Reviewed by Geoff Garen.
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
+ Make typeinfo flags default to false
+ https://bugs.webkit.org/show_bug.cgi?id=30372
+
+ Part 1. Reverse the HasStandardGetOwnPropertySlot flag.
-2008-11-14 Gavin Barraclough <barraclough@apple.com>
+ * API/JSCallbackConstructor.h:
+ (JSC::JSCallbackConstructor::createStructure):
+ * API/JSCallbackFunction.h:
+ (JSC::JSCallbackFunction::createStructure):
+ * API/JSCallbackObject.h:
+ (JSC::JSCallbackObject::createStructure):
+ * debugger/DebuggerActivation.h:
+ (JSC::DebuggerActivation::createStructure):
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * runtime/Arguments.h:
+ (JSC::Arguments::createStructure):
+ * runtime/BooleanObject.h:
+ (JSC::BooleanObject::createStructure):
+ * runtime/DatePrototype.h:
+ (JSC::DatePrototype::createStructure):
+ * runtime/FunctionPrototype.h:
+ (JSC::FunctionPrototype::createStructure):
+ * runtime/GlobalEvalFunction.h:
+ (JSC::GlobalEvalFunction::createStructure):
+ * runtime/InternalFunction.h:
+ (JSC::InternalFunction::createStructure):
+ * runtime/JSActivation.h:
+ (JSC::JSActivation::createStructure):
+ * runtime/JSArray.h:
+ (JSC::JSArray::createStructure):
+ * runtime/JSByteArray.cpp:
+ (JSC::JSByteArray::createStructure):
+ * runtime/JSFunction.h:
+ (JSC::JSFunction::createStructure):
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::createStructure):
+ * runtime/JSNumberCell.h:
+ (JSC::JSNumberCell::createStructure):
+ * runtime/JSONObject.h:
+ (JSC::JSONObject::createStructure):
+ * runtime/JSObject.h:
+ (JSC::JSObject::createStructure):
+ (JSC::JSCell::fastGetOwnPropertySlot):
+ * runtime/JSStaticScopeObject.h:
+ (JSC::JSStaticScopeObject::createStructure):
+ * runtime/JSString.h:
+ (JSC::JSString::createStructure):
+ * runtime/JSTypeInfo.h:
+ (JSC::TypeInfo::overridesGetOwnPropertySlot):
+ * runtime/JSVariableObject.h:
+ (JSC::JSVariableObject::createStructure):
+ * runtime/JSWrapperObject.h:
+ (JSC::JSWrapperObject::createStructure):
+ * runtime/MathObject.h:
+ (JSC::MathObject::createStructure):
+ * runtime/NumberConstructor.h:
+ (JSC::NumberConstructor::createStructure):
+ * runtime/NumberObject.h:
+ (JSC::NumberObject::createStructure):
+ * runtime/RegExpConstructor.h:
+ (JSC::RegExpConstructor::createStructure):
+ * runtime/RegExpObject.h:
+ (JSC::RegExpObject::createStructure):
+ * runtime/StringObject.h:
+ (JSC::StringObject::createStructure):
+ * runtime/StringObjectThatMasqueradesAsUndefined.h:
+ (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
- Reviewed by Geoff Garen.
+2009-10-14 Kevin Ollivier <kevino@theolliviers.com>
+2009-10-14 Darin Adler <darin@apple.com>
- Geoff has this wacky notion that emitGetArg and emitPutArg should be related to
- doing the same thing. Crazy.
-
- Rename the methods for accessing virtual registers to say 'VirtualRegister' in the
- name, and those for setting up the arguments for CTI methods to contain 'CTIArg'.
-
- * VM/CTI.cpp:
- (JSC::CTI::emitGetVirtualRegister):
- (JSC::CTI::emitGetVirtualRegisters):
- (JSC::CTI::emitPutCTIArgFromVirtualRegister):
- (JSC::CTI::emitPutCTIArg):
- (JSC::CTI::emitGetCTIArg):
- (JSC::CTI::emitPutCTIArgConstant):
- (JSC::CTI::emitPutVirtualRegister):
- (JSC::CTI::compileOpCallSetupArgs):
- (JSC::CTI::compileOpCallEvalSetupArgs):
- (JSC::CTI::compileOpConstructSetupArgs):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::compileOpStrictEq):
- (JSC::CTI::putDoubleResultToJSNumberCellOrJSImmediate):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::compileBinaryArithOpSlowCase):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompileCTIMachineTrampolines):
- * VM/CTI.h:
-
-2008-11-14 Greg Bolsinga <bolsinga@apple.com>
-
- Reviewed by Antti Koivisto
-
- Fix potential build break by adding StdLibExtras.h
-
- * GNUmakefile.am:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
+ Additions so fix for https://bugs.webkit.org/show_bug.cgi?id=18994
+ can build on Windows.
-2008-11-14 Gavin Barraclough <barraclough@apple.com>
+ * wtf/MathExtras.h: Added llround and llroundf for Windows.
- Reviewed by Geoff Garen.
+2009-10-14 Kevin Ollivier <kevino@theolliviers.com>
- Generate less code for the slow cases of op_call and op_construct.
- https://bugs.webkit.org/show_bug.cgi?id=22272
-
- 1% progression on v8 tests.
-
- * VM/CTI.cpp:
- (JSC::CTI::emitRetrieveArg):
- (JSC::CTI::emitNakedCall):
- (JSC::CTI::compileOpCallInitializeCallFrame):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompileCTIMachineTrampolines):
- * VM/CTI.h:
- * VM/CodeBlock.h:
- (JSC::getCallLinkInfoReturnLocation):
- (JSC::CodeBlock::getCallLinkInfo):
- * VM/Machine.cpp:
- (JSC::Machine::Machine):
- (JSC::Machine::cti_vm_dontLazyLinkCall):
- (JSC::Machine::cti_vm_lazyLinkCall):
- * VM/Machine.h:
-
-2008-11-14 Greg Bolsinga <bolsinga@apple.com>
-
- Reviewed by Darin Alder.
-
- https://bugs.webkit.org/show_bug.cgi?id=21810
- Remove use of static C++ objects that are destroyed at exit time (destructors)
-
- Create DEFINE_STATIC_LOCAL macro. Change static local objects to leak to avoid
- exit-time destructor. Update code that was changed to fix this issue that ran
- into a gcc bug (<rdar://problem/6354696> Codegen issue with C++ static reference
- in gcc build 5465). Also typdefs for template types needed to be added in some
- cases so the type could make it through the macro successfully.
-
- Basically code of the form:
- static T m;
- becomes:
- DEFINE_STATIC_LOCAL(T, m, ());
-
- Also any code of the form:
- static T& m = *new T;
- also becomes:
- DEFINE_STATIC_LOCAL(T, m, ());
+ wx build fix. Set ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH for plugins while we're still building stubs.
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * wtf/MainThread.cpp:
- (WTF::mainThreadFunctionQueueMutex):
- (WTF::functionQueue):
- * wtf/StdLibExtras.h: Added. Add DEFINE_STATIC_LOCAL macro
- * wtf/ThreadingPthreads.cpp:
- (WTF::threadMapMutex):
- (WTF::threadMap):
- (WTF::identifierByPthreadHandle):
-
-2008-11-13 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin Adler
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=22269
- Reduce PropertyMap usage
-
- From observation of StructureID statistics, it became clear that many
- StructureID's were not being used as StructureIDs themselves, but rather
- only being necessary as links in the transition chain. Acknowledging this
- and that PropertyMaps stored in StructureIDs can be treated as caches, that
- is that they can be reconstructed on demand, it became clear that we could
- reduce the memory consumption of StructureIDs by only keeping PropertyMaps
- for the StructureIDs that need them the most.
-
- The specific strategy used to reduce the number of StructureIDs with
- PropertyMaps is to take the previous StructureIDs PropertyMap when initially
- transitioning (addPropertyTransition) from it and clearing out the pointer
- in the process. The next time we need to do the same transition, for instance
- repeated calls to the same constructor, we use the new addPropertyTransitionToExistingStructure
- first, which allows us not to need the PropertyMap to determine if the property
- exists already, since a transition to that property would require it not already
- be present in the StructureID. Should there be no transition, the PropertyMap
- can be constructed on demand (via materializePropertyMap) to determine if the put is a
- replace or a transition to a new StructureID.
-
- Reduces memory use on Membuster head test (30 pages open) by ~15MB.
+ * wtf/Platform.h:
- * JavaScriptCore.exp:
- * runtime/JSObject.h:
- (JSC::JSObject::putDirect): First use addPropertyTransitionToExistingStructure
- so that we can avoid building the PropertyMap on subsequent similar object
- creations.
- * runtime/PropertyMapHashTable.h:
- (JSC::PropertyMapEntry::PropertyMapEntry): Add version of constructor which takes
- all values to be used when lazily building the PropertyMap.
- * runtime/StructureID.cpp:
- (JSC::StructureID::dumpStatistics): Add statistics on the number of StructureIDs
- with PropertyMaps.
- (JSC::StructureID::StructureID): Rename m_cachedTransistionOffset to m_offset
- (JSC::isPowerOf2):
- (JSC::nextPowerOf2):
- (JSC::sizeForKeyCount): Returns the expected size of a PropertyMap for a key count.
- (JSC::StructureID::materializePropertyMap): Builds the PropertyMap out of its previous pointer chain.
- (JSC::StructureID::addPropertyTransitionToExistingStructure): Only transitions if there is a
- an existing transition.
- (JSC::StructureID::addPropertyTransition): Instead of always copying the ProperyMap, try and take
- it from it previous pointer.
- (JSC::StructureID::removePropertyTransition): Simplify by calling toDictionaryTransition() to do
- transition work.
- (JSC::StructureID::changePrototypeTransition): Build the PropertyMap if necessary before transitioning
- because once you have transitioned, you will not be able to reconstruct it afterwards as there is no
- previous pointer, pinning the ProperyMap as well.
- (JSC::StructureID::getterSetterTransition): Ditto.
- (JSC::StructureID::toDictionaryTransition): Pin the PropertyMap so that it is not destroyed on further transitions.
- (JSC::StructureID::fromDictionaryTransition): We can only transition back from a dictionary transition if there
- are no deleted offsets.
- (JSC::StructureID::addPropertyWithoutTransition): Build PropertyMap on demands and pin.
- (JSC::StructureID::removePropertyWithoutTransition): Ditto.
- (JSC::StructureID::get): Build on demand.
- (JSC::StructureID::createPropertyMapHashTable): Add version of create that takes a size
- for on demand building.
- (JSC::StructureID::expandPropertyMapHashTable):
- (JSC::StructureID::rehashPropertyMapHashTable):
- (JSC::StructureID::getEnumerablePropertyNamesInternal): Build PropertyMap on demand.
- * runtime/StructureID.h:
- (JSC::StructureID::propertyStorageSize): Account for StructureIDs without PropertyMaps.
- (JSC::StructureID::isEmpty): Ditto.
- (JSC::StructureID::materializePropertyMapIfNecessary):
- (JSC::StructureID::get): Build PropertyMap on demand
-
-2008-11-14 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
+2009-10-13 Laszlo Gombos <laszlo.1.gombos@nokia.com>
Reviewed by Simon Hausmann.
- <https://bugs.webkit.org/show_bug.cgi?id=21500>
-
- JavaScriptCore build with -O3 flag instead of -O2 (gcc).
- 2.02% speedup on SunSpider (Qt-port on Linux)
- 1.10% speedup on V8 (Qt-port on Linux)
- 3.45% speedup on WindScorpion (Qt-port on Linux)
-
- * JavaScriptCore.pri:
-
-2008-11-14 Kristian Amlie <kristian.amlie@trolltech.com>
-
- Reviewed by Darin Adler.
+ Refactor ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH
+ https://bugs.webkit.org/show_bug.cgi?id=30278
- Compile fix for RVCT.
+ Move the definition of ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH
+ from the make system into common code.
- In reality, it is two fixes:
-
- 1. Remove typename. I believe typename can only be used when the named
- type depends on the template parameters, which it doesn't in this
- case, so I think this is more correct.
- 2. Replace ::iterator scope with specialized typedef. This is to work
- around a bug in RVCT.
-
- https://bugs.webkit.org/show_bug.cgi?id=22260
-
- * wtf/ListHashSet.h:
- (WTF::::find):
+ * wtf/Platform.h:
-2008-11-14 Kristian Amlie <kristian.amlie@trolltech.com>
+2009-10-13 Laszlo Gombos <laszlo.1.gombos@nokia.com>
Reviewed by Darin Adler.
- Compile fix for WINSCW.
-
- This fix doesn't protect against implicit conversions from bool to
- integers, but most likely that will be caught on another platform.
-
- https://bugs.webkit.org/show_bug.cgi?id=22260
-
- * wtf/PassRefPtr.h:
- (WTF::PassRefPtr::operator bool):
- * wtf/RefPtr.h:
- (WTF::RefPtr::operator bool):
+ ARM compiler does not understand reinterpret_cast<void*>
+ https://bugs.webkit.org/show_bug.cgi?id=29034
-2008-11-14 Cameron Zwarich <zwarich@apple.com>
+ Change reinterpret_cast<void*> to regular C style (void*) cast
+ for the ARM RVCT compiler.
- Reviewed by Darin Adler.
+ * assembler/MacroAssemblerCodeRef.h:
+ (JSC::FunctionPtr::FunctionPtr):
+ * jit/JITOpcodes.cpp: Cast to FunctionPtr first
+ instead of directly casting to reinterpret_cast
+ * jit/JITStubCall.h: Ditto + change the type of m_stub
+ from void* to FunctionPtr.
+ (JSC::JITStubCall::JITStubCall):
+ (JSC::JITStubCall::call):
+ * jit/JITStubs.cpp: Ditto.
+ (JSC::DEFINE_STUB_FUNCTION(EncodedJSValue, op_throw)):
- Bug 22245: Move wtf/dtoa.h into the WTF namespace
- <https://bugs.webkit.org/show_bug.cgi?id=22245>
+2009-10-11 Oliver Hunt <oliver@apple.com>
- Move wtf/dtoa.h into the WTF namespace from the JSC namespace. This
- introduces some ambiguities in name lookups, so I changed all uses of
- the functions in wtf/dtoa.h to explicitly state the namespace.
+ Re-enable the JIT.
- * JavaScriptCore.exp:
- * parser/Lexer.cpp:
- (JSC::Lexer::lex):
- * runtime/InitializeThreading.cpp:
- * runtime/JSGlobalObjectFunctions.cpp:
- (JSC::parseInt):
- * runtime/NumberPrototype.cpp:
- (JSC::integerPartNoExp):
- (JSC::numberProtoFuncToExponential):
- * runtime/UString.cpp:
- (JSC::concatenate):
- (JSC::UString::from):
- (JSC::UString::toDouble):
- * wtf/dtoa.cpp:
- * wtf/dtoa.h:
+ * wtf/Platform.h:
-2008-11-14 Cameron Zwarich <zwarich@apple.com>
+2009-10-10 Oliver Hunt <oliver@apple.com>
Reviewed by Maciej Stachowiak.
- Bug 22257: Enable redundant read optimizations for results generated by compileBinaryArithOp()
- <https://bugs.webkit.org/show_bug.cgi?id=22257>
-
- This shows no change in performance on either SunSpider or the V8
- benchmark suite, but it removes an ugly special case and allows for
- future optimizations to be implemented in a cleaner fashion.
+ Support for String.trim(), String.trimLeft() and String.trimRight() methods
+ https://bugs.webkit.org/show_bug.cgi?id=26590
- This patch was essentially given to me by Gavin Barraclough upon my
- request, but I did regression and performance testing so that he could
- work on something else.
-
- * VM/CTI.cpp:
- (JSC::CTI::putDoubleResultToJSNumberCellOrJSImmediate): Move the final
- result to eax if it is not already there.
- (JSC::CTI::compileBinaryArithOp): Remove the killing of the final result
- register that disables the optimization.
-
-2008-11-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Roben.
+ Implement trim, trimLeft, and trimRight
- Add a Scons-based build system for building
- the Chromium-Mac build of JavaScriptCore.
- https://bugs.webkit.org/show_bug.cgi?id=21991
+ * runtime/StringPrototype.cpp:
+ (JSC::isTrimWhitespace):
+ Our normal string whitespace function does not include U+200B which
+ is needed for compatibility with mozilla's implementation of trim.
+ U+200B does not appear to be expected according to spec, however I am
+ choosing to be lax, and match mozilla behavior so have added this
+ exception.
+ (JSC::trimString):
- * JavaScriptCore.scons: Added.
- * SConstruct: Added.
+2009-10-09 Geoffrey Garen <ggaren@apple.com>
-2008-11-13 Eric Seidel <eric@webkit.org>
+ Reviewed by Oliver Hunt.
- Reviewed by Adam Roben.
+ Eliminated some legacy bytecode weirdness.
- Add PLATFORM(CHROMIUM) to the "we don't use cairo" blacklist
- until https://bugs.webkit.org/show_bug.cgi?id=22250 is fixed.
+ Use vPC[x] subscripting instead of ++vPC to access instruction operands.
+ This is simpler, and often more efficient.
- * wtf/Platform.h:
+ To support this, and to remove use of hard-coded offsets in bytecode and
+ JIT code generation and dumping, calculate jump offsets from the beginning
+ of an instruction, rather than the middle or end.
+
+ Also, use OPCODE_LENGTH instead of hard-coded constants for the sizes of
+ opcodes.
+
+ SunSpider reports no change in JIT mode, and a 1.01x speedup in Interpreter
+ mode.
-2008-11-13 Cameron Zwarich <zwarich@apple.com>
+ * bytecode/CodeBlock.cpp:
+ (JSC::printConditionalJump):
+ (JSC::CodeBlock::dump):
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitJump):
+ (JSC::BytecodeGenerator::emitJumpIfTrue):
+ (JSC::BytecodeGenerator::emitJumpIfFalse):
+ (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
+ (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):
+ (JSC::BytecodeGenerator::emitComplexJumpScopes):
+ (JSC::BytecodeGenerator::emitJumpScopes):
+ (JSC::BytecodeGenerator::emitNextPropertyName):
+ (JSC::BytecodeGenerator::emitCatch):
+ (JSC::BytecodeGenerator::emitJumpSubroutine):
+ (JSC::prepareJumpTableForImmediateSwitch):
+ (JSC::prepareJumpTableForCharacterSwitch):
+ (JSC::prepareJumpTableForStringSwitch):
+ (JSC::BytecodeGenerator::endSwitch):
+ * bytecompiler/Label.h:
+ (JSC::Label::setLocation):
+ (JSC::Label::bind):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::resolve):
+ (JSC::Interpreter::resolveSkip):
+ (JSC::Interpreter::resolveGlobal):
+ (JSC::Interpreter::resolveBase):
+ (JSC::Interpreter::resolveBaseAndProperty):
+ (JSC::Interpreter::createExceptionScope):
+ (JSC::Interpreter::privateExecute):
+ * interpreter/Interpreter.h:
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompile):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_jnless):
+ (JSC::JIT::emitSlow_op_jnless):
+ (JSC::JIT::emit_op_jnlesseq):
+ (JSC::JIT::emitSlow_op_jnlesseq):
+ (JSC::JIT::emitBinaryDoubleOp):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_jmp):
+ (JSC::JIT::emit_op_loop):
+ (JSC::JIT::emit_op_loop_if_less):
+ (JSC::JIT::emitSlow_op_loop_if_less):
+ (JSC::JIT::emit_op_loop_if_lesseq):
+ (JSC::JIT::emitSlow_op_loop_if_lesseq):
+ (JSC::JIT::emit_op_loop_if_true):
+ (JSC::JIT::emitSlow_op_loop_if_true):
+ (JSC::JIT::emit_op_jfalse):
+ (JSC::JIT::emitSlow_op_jfalse):
+ (JSC::JIT::emit_op_jtrue):
+ (JSC::JIT::emitSlow_op_jtrue):
+ (JSC::JIT::emit_op_jeq_null):
+ (JSC::JIT::emit_op_jneq_null):
+ (JSC::JIT::emit_op_jneq_ptr):
+ (JSC::JIT::emit_op_jsr):
+ (JSC::JIT::emit_op_next_pname):
+ (JSC::JIT::emit_op_jmp_scopes):
+
+2009-10-09 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
- In r38375 the 'jsc' shell was changed to improve teardown on quit. The
- main() function in jsc.cpp uses Structured Exception Handling, so Visual
- C++ emits a warning when destructors are used.
+ Migrated some code that didn't belong out of Structure.
- In order to speculatively fix the Windows build, this patch changes that
- code to use explicit pointer manipulation and locking rather than smart
- pointers and RAII.
-
- * jsc.cpp:
- (main):
-
-2008-11-13 Cameron Zwarich <zwarich@apple.com>
+ SunSpider says maybe 1.03x faster.
- Reviewed by Darin Adler.
+ * runtime/JSCell.h: Nixed Structure::markAggregate, and made marking of
+ a Structure's prototype the direct responsility of the object using it.
+ (Giving Structure a mark function was misleading because it implied that
+ all live structures get marked during GC, when they don't.)
+
+ * runtime/JSGlobalObject.cpp:
+ (JSC::markIfNeeded):
+ (JSC::JSGlobalObject::markChildren): Added code to mark prototypes stored
+ on the global object. Maybe this wasn't necessary, but now we don't have
+ to wonder.
- Bug 22246: Get arguments for opcodes together to eliminate more redundant memory reads
- <https://bugs.webkit.org/show_bug.cgi?id=22246>
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::getPropertyNames):
+ (JSC::JSObject::getOwnPropertyNames):
+ (JSC::JSObject::getEnumerableNamesFromClassInfoTable):
+ * runtime/JSObject.h:
+ (JSC::JSObject::markChildrenDirect):
+ * runtime/PropertyNameArray.h:
+ * runtime/Structure.cpp:
+ * runtime/Structure.h:
+ (JSC::Structure::setEnumerationCache):
+ (JSC::Structure::enumerationCache): Moved property name gathering code
+ from Structure to JSObject because having a Structure iterate its JSObject
+ was a layering violation. A JSObject is implemented using a Structure; not
+ the other way around.
- It is common for opcodes to read their first operand into eax and their
- second operand into edx. If the value intended for the second operand is
- in eax, we should first move eax to the register for the second operand
- and then read the first operand into eax.
+2009-10-09 Mark Rowe <mrowe@apple.com>
- This is a 0.5% speedup on SunSpider and a 2.0% speedup on the V8
- benchmark suite when measured using the V8 harness.
+ Attempt to fix the GTK release build.
- * VM/CTI.cpp:
- (JSC::CTI::emitGetArgs):
- (JSC::CTI::compileOpStrictEq):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/CTI.h:
+ * GNUmakefile.am: Include Grammar.cpp in release builds now that
+ AllInOneFile.cpp is gone.
-2008-11-13 Cameron Zwarich <zwarich@apple.com>
+2009-10-09 Gabor Loki <loki@inf.u-szeged.hu>
- Reviewed by Darin Adler.
+ Rubber-stamped by Eric Seidel.
- Bug 22238: Avoid unnecessary reads of temporaries when the target machine register is not eax
- <https://bugs.webkit.org/show_bug.cgi?id=22238>
+ Add ARM JIT support for Gtk port (disabled by default)
+ https://bugs.webkit.org/show_bug.cgi?id=30228
- Enable the optimization of not reading a value back from memory that we
- just wrote when the target machine register is not eax. In order to do
- this, the code generation for op_put_global_var must be changed to
- read its argument into a register before overwriting eax.
+ * GNUmakefile.am:
- This is a 0.5% speedup on SunSpider and shows no change on the V8
- benchmark suite when run in either harness.
+2009-10-08 Geoffrey Garen <ggaren@apple.com>
- * VM/CTI.cpp:
- (JSC::CTI::emitGetArg):
- (JSC::CTI::privateCompileMainPass):
+ Tiger build fix: added a few more variable initializations.
-2008-11-13 Cameron Zwarich <zwarich@apple.com>
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncReplace):
+ (JSC::stringProtoFuncSearch):
- Reviewed by Alexey Proskuryakov.
+2009-10-08 Geoffrey Garen <ggaren@apple.com>
- Perform teardown in the 'jsc' shell in order to suppress annoying and
- misleading leak messages. There is still a lone JSC::Node leaking when
- quit() is called, but hopefully that can be fixed as well.
+ Qt build fix: added missing #include.
* jsc.cpp:
- (functionQuit):
- (main):
-
-2008-11-13 Mike Pinkerton <pinkerton@chromium.org>
-
- Reviewed by Sam Weinig.
- Fix for https://bugs.webkit.org/show_bug.cgi?id=22087
- Need correct platform defines for Mac Chromium
+2009-10-08 Geoffrey Garen <ggaren@apple.com>
- Set the appropriate platform defines for Mac Chromium, which is
- similar to PLATFORM(MAC), but isn't.
+ Tiger build fix: initialize variable whose initialization the compiler
+ can't otherwise figure out.
- * wtf/Platform.h:
+ * runtime/RegExpObject.cpp:
+ (JSC::RegExpObject::match):
-2008-11-13 Maciej Stachowiak <mjs@apple.com>
+2009-10-08 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Cameron Zwarich.
-
- - remove immediate checks from native codegen for known non-immediate cases like "this"
-
- ~.5% speedup on v8 benchmarks
-
- In the future we can extend this model to remove all sorts of
- typechecks based on local type info or type inference.
-
- I also added an assertion to verify that all slow cases linked as
- many slow case jumps as the corresponding fast case generated, and
- fixed the pre-existing cases where this was not true.
-
- * VM/CTI.cpp:
- (JSC::CTI::emitJumpSlowCaseIfNotJSCell):
- (JSC::CTI::linkSlowCaseIfNotJSCell):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::compileBinaryArithOpSlowCase):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/CTI.h:
- * VM/CodeBlock.h:
- (JSC::CodeBlock::isKnownNotImmediate):
-
-2008-11-13 Cameron Zwarich <zwarich@apple.com>
+ Windows build fix: updated exports.
- Reviewed by Maciej Stachowiak.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Bug 21943: Avoid needless reads of temporary values in CTI code
- <https://bugs.webkit.org/show_bug.cgi?id=21943>
-
- If an opcode needs to load a virtual register and a previous opcode left
- the contents of that virtual register in a machine register, use the
- value in the machine register rather than getting it from memory.
-
- In order to perform this optimization, it is necessary to know the
- jump tagets in the CodeBlock. For temporaries, the only problematic
- jump targets are binary logical operators and the ternary conditional
- operator. However, if this optimization were to be extended to local
- variable registers as well, other jump targets would need to be
- included, like switch statement cases and the beginnings of catch
- blocks.
-
- This optimization also requires that the fast case and the slow case
- of an opcode use emitPutResult() on the same register, which was chosen
- to be eax, as that is the register into which we read the first operand
- of opcodes. In order to make this the case, we needed to add some mov
- instructions to the slow cases of some instructions.
-
- This optimizaton is not applied whenever compileBinaryArithOp() is used
- to compile an opcode, because different machine registers may be used to
- store the final result. It seems possible to rewrite the code generation
- in compileBinaryArithOp() to allow for this optimization.
-
- This optimization is also not applied when generating slow cases,
- because some fast cases overwrite the value of eax before jumping to the
- slow case. In the future, it may be possible to apply this optimization
- to slow cases as well, but it did not seem to be a speedup when testing
- an early version of this patch.
-
- This is a 1.0% speedup on SunSpider and a 6.3% speedup on the V8
- benchmark suite.
-
- * VM/CTI.cpp:
- (JSC::CTI::killLastResultRegister):
- (JSC::CTI::emitGetArg):
- (JSC::CTI::emitGetPutArg):
- (JSC::CTI::emitGetCTIParam):
- (JSC::CTI::emitGetFromCallFrameHeader):
- (JSC::CTI::emitPutResult):
- (JSC::CTI::emitCTICall):
- (JSC::CTI::CTI):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::compileOpStrictEq):
- (JSC::CTI::emitSlowScriptCheck):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompilePatchGetArrayLength):
- * VM/CTI.h:
- * VM/CodeBlock.h:
- (JSC::CodeBlock::isTemporaryRegisterIndex):
- * bytecompiler/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitLabel):
+2009-10-08 Geoffrey Garen <ggaren@apple.com>
-2008-11-12 Alp Toker <alp@nuanti.com>
+ Tiger build fix: fixed file name case.
- autotools build system fix-up only. Add FloatQuad.h to the source
- lists and sort them.
+ * JavaScriptCore.xcodeproj/project.pbxproj:
- * GNUmakefile.am:
+2009-10-08 Geoffrey Garen <ggaren@apple.com>
-2008-11-12 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Maciej Stachowiak.
- Reviewed by Sam Weinig.
+ At long last, I pronounce the death of AllInOneFile.cpp.
- Fixed https://bugs.webkit.org/show_bug.cgi?id=22192
- +37 failures in fast/profiler
-
- along with Darin's review comments in
- https://bugs.webkit.org/show_bug.cgi?id=22174
- Simplified op_call by nixing its responsibility for moving the value of
- "this" into the first argument slot
-
- * VM/Machine.cpp:
- (JSC::returnToThrowTrampoline):
- (JSC::throwStackOverflowError):
- (JSC::Machine::cti_register_file_check):
- (JSC::Machine::cti_op_call_arityCheck):
- (JSC::Machine::cti_vm_throw): Moved the throw logic into a function, since
- functions are better than macros.
-
- * bytecompiler/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitCall):
- (JSC::CodeGenerator::emitConstruct): Ensure that the function register
- is preserved if profiling is enabled, since the profiler uses that
- register.
-
- * runtime/JSGlobalData.h: Renamed throwReturnAddress to exceptionLocation,
- because I had a hard time understanding what "throwReturnAddress" meant.
-
-2008-11-12 Geoffrey Garen <ggaren@apple.com>
+ SunSpider reports a 1.01x speedup.
- Reviewed by Sam Weinig.
+ * AllInOneFile.cpp: Removed.
+ * GNUmakefile.am:
+ * JavaScriptCore.exp:
+ * JavaScriptCore.gypi:
+ * JavaScriptCore.xcodeproj/project.pbxproj: Added missing project files
+ to compilation stages.
- Roll in r38322, now that test failures have been fixed.
-
- * VM/CTI.cpp:
- (JSC::CTI::compileOpCallSetupArgs):
- (JSC::CTI::compileOpCallEvalSetupArgs):
- (JSC::CTI::compileOpConstructSetupArgs):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/Machine.cpp:
- (JSC::Machine::callEval):
- (JSC::Machine::dumpCallFrame):
- (JSC::Machine::dumpRegisters):
- (JSC::Machine::execute):
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_register_file_check):
- (JSC::Machine::cti_op_call_arityCheck):
- (JSC::Machine::cti_op_call_NotJSFunction):
- (JSC::Machine::cti_op_construct_JSConstruct):
- (JSC::Machine::cti_op_construct_NotJSConstruct):
- (JSC::Machine::cti_op_call_eval):
- (JSC::Machine::cti_vm_throw):
- * VM/Machine.h:
- * bytecompiler/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitCall):
- (JSC::CodeGenerator::emitCallEval):
- (JSC::CodeGenerator::emitConstruct):
- * bytecompiler/CodeGenerator.h:
- * parser/Nodes.cpp:
- (JSC::EvalFunctionCallNode::emitCode):
- (JSC::FunctionCallValueNode::emitCode):
- (JSC::FunctionCallResolveNode::emitCode):
- (JSC::FunctionCallBracketNode::emitCode):
- (JSC::FunctionCallDotNode::emitCode):
- * parser/Nodes.h:
- (JSC::ScopeNode::neededConstants):
+ * parser/Grammar.y:
+ * parser/Lexer.cpp:
+ * parser/Lexer.h:
+ (JSC::jscyylex):
+ * runtime/ArrayConstructor.cpp:
+ (JSC::constructArrayWithSizeQuirk):
+ * runtime/Collector.h:
+ * runtime/JSCell.cpp:
+ (JSC::JSCell::operator new):
+ * runtime/JSCell.h:
+ (JSC::JSCell::operator new):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::operator new):
+ * runtime/JSNumberCell.h:
+ (JSC::JSNumberCell::operator new):
+ * runtime/JSString.cpp:
+ * runtime/JSString.h:
+ (JSC::jsString):
+ (JSC::jsSubstring):
+ (JSC::jsOwnedString):
+ * runtime/RegExpConstructor.cpp:
+ * runtime/RegExpConstructor.h:
+ (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate):
+ (JSC::RegExpConstructorPrivate::lastOvector):
+ (JSC::RegExpConstructorPrivate::tempOvector):
+ (JSC::RegExpConstructorPrivate::changeLastOvector):
+ (JSC::RegExpConstructor::performMatch):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncMatch):
+ * yarr/RegexJIT.cpp:
+ * yarr/RegexJIT.h:
+ (JSC::Yarr::executeRegex): Inlined a few things that Shark said
+ were hot, on the presumption that AllInOneFile.cpp used to inline them
+ automatically.
-2008-11-12 Gavin Barraclough <barraclough@apple.com>
+2009-10-08 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
- Reviewed by Cameron Zwarich.
+ Reviewed by Gavin Barraclough.
- Fix for https://bugs.webkit.org/show_bug.cgi?id=22201
- Integer conversion in array.length was safe signed values,
- but the length is unsigned.
+ Fix for JIT'ed op_call instructions (evals, constructs, etc.)
+ when !ENABLE(JIT_OPTIMIZE_CALL) && USE(JSVALUE32_64)
- * VM/CTI.cpp:
- (JSC::CTI::privateCompilePatchGetArrayLength):
+ https://bugs.webkit.org/show_bug.cgi?id=30201
-2008-11-12 Cameron Zwarich <zwarich@apple.com>
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall):
- Rubber-stamped by Mark Rowe.
+2009-10-07 Geoffrey Garen <ggaren@apple.com>
- Roll out r38322 due to test failures on the bots.
+ Windows build fix: removed no longer exported symbol.
- * VM/CTI.cpp:
- (JSC::CTI::compileOpCallSetupArgs):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/Machine.cpp:
- (JSC::Machine::callEval):
- (JSC::Machine::dumpCallFrame):
- (JSC::Machine::dumpRegisters):
- (JSC::Machine::execute):
- (JSC::Machine::privateExecute):
- (JSC::Machine::throwStackOverflowPreviousFrame):
- (JSC::Machine::cti_register_file_check):
- (JSC::Machine::cti_op_call_arityCheck):
- (JSC::Machine::cti_op_call_NotJSFunction):
- (JSC::Machine::cti_op_construct_JSConstruct):
- (JSC::Machine::cti_op_construct_NotJSConstruct):
- (JSC::Machine::cti_op_call_eval):
- (JSC::Machine::cti_vm_throw):
- * VM/Machine.h:
- * bytecompiler/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitCall):
- (JSC::CodeGenerator::emitCallEval):
- (JSC::CodeGenerator::emitConstruct):
- * bytecompiler/CodeGenerator.h:
- * parser/Nodes.cpp:
- (JSC::EvalFunctionCallNode::emitCode):
- (JSC::FunctionCallValueNode::emitCode):
- (JSC::FunctionCallResolveNode::emitCode):
- (JSC::FunctionCallBracketNode::emitCode):
- (JSC::FunctionCallDotNode::emitCode):
- * parser/Nodes.h:
- (JSC::ScopeNode::neededConstants):
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
-2008-11-11 Geoffrey Garen <ggaren@apple.com>
+2009-10-07 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Darin Adler.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=22174
- Simplified op_call by nixing its responsibility for moving the value of
- "this" into the first argument slot.
+ Reviewed by Oliver Hunt.
- Instead, the caller emits an explicit load or mov instruction, or relies
- on implicit knowledge that "this" is already in the first argument slot.
- As a result, two operands to op_call are gone: firstArg and thisVal.
+ Fixed <rdar://problem/5751979> Database code takes JSLock on secondary
+ thread, permanently slowing down JavaScript
- SunSpider and v8 tests show no change in bytecode or CTI.
+ Removed the optional lock from Heap::protect, Heap::unprotect, and friends,
+ since WebCore no longer uses it.
- * VM/CTI.cpp:
- (JSC::CTI::compileOpCallSetupArgs):
- (JSC::CTI::compileOpCallEvalSetupArgs):
- (JSC::CTI::compileOpConstructSetupArgs): Split apart these three versions
- of setting up arguments to op_call, because they're more different than
- they are the same -- even more so with this patch.
+ * JavaScriptCore.exp:
+ * runtime/Collector.cpp:
+ (JSC::Heap::protect):
+ (JSC::Heap::unprotect):
+ (JSC::Heap::markProtectedObjects):
+ (JSC::Heap::protectedGlobalObjectCount):
+ (JSC::Heap::protectedObjectCount):
+ (JSC::Heap::protectedObjectTypeCounts):
+ * runtime/Collector.h:
- (JSC::CTI::compileOpCall): Updated for the fact that op_construct doesn't
- match op_call anymore.
+2009-10-07 Zoltan Horvath <zoltan@webkit.org>
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases): Merged a few call cases. Updated
- for changes mentioned above.
+ Reviewed by Darin Adler.
- * VM/CTI.h:
+ Allow custom memory allocation control for JavaScriptCore's IdentifierArena
+ https://bugs.webkit.org/show_bug.cgi?id=30158
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump): Updated for new bytecode format of call / construct.
+ Inherits IdentifierArena class from FastAllocBase because it has been
+ instantiated by 'new' in JavaScriptCore/parser/ParserArena.cpp:36.
- * VM/Machine.cpp:
- (JSC::Machine::callEval): Updated for new bytecode format of call / construct.
+ * parser/ParserArena.h:
- (JSC::Machine::dumpCallFrame):
- (JSC::Machine::dumpRegisters): Simplified these debugging functions,
- taking advantage of the new call frame layout.
+2009-10-07 Adam Roben <aroben@apple.com>
- (JSC::Machine::execute): Fixed up the eval version of execute to be
- friendlier to calls in the new format.
+ Export DateInstance::info in a way that works on Windows
- (JSC::Machine::privateExecute): Implemented the new call format in
- bytecode.
+ Fixes <http://webkit.org/b/30171>
+ fast/dom/Window/window-postmessage-clone.html fails on Windows
- (JSC::Machine::cti_op_call_NotJSFunction):
- (JSC::Machine::cti_op_construct_JSConstruct):
- (JSC::Machine::cti_op_construct_NotJSConstruct):
- (JSC::Machine::cti_op_call_eval): Updated CTI helpers to match the new
- call format.
-
- Fixed a latent bug in stack overflow checking that is now hit because
- the register layout has changed a bit -- namely: when throwing a stack
- overflow exception inside an op_call helper, we need to account for the
- fact that the current call frame is only half-constructed, and use the
- parent call frame instead.
+ Reviewed by Anders Carlsson.
- * VM/Machine.h:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+ Removed the export of DateInstance::info from here.
- * bytecompiler/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitCall):
- (JSC::CodeGenerator::emitCallEval):
- (JSC::CodeGenerator::emitConstruct):
- * bytecompiler/CodeGenerator.h: Updated codegen to match the new call
- format.
+ * runtime/DateInstance.h: Use JS_EXPORTDATA to export
+ DateInstance::info, which is the required way of exporting data on
+ Windows.
- * parser/Nodes.cpp:
- (JSC::EvalFunctionCallNode::emitCode):
- (JSC::FunctionCallValueNode::emitCode):
- (JSC::FunctionCallResolveNode::emitCode):
- (JSC::FunctionCallBracketNode::emitCode):
- (JSC::FunctionCallDotNode::emitCode):
- * parser/Nodes.h:
- (JSC::ScopeNode::neededConstants): ditto
+2009-10-07 Jørgen Lind <jorgen.lind@nokia.com>
-2008-11-11 Cameron Zwarich <zwarich@apple.com>
+ Reviewed by Simon Hausmann.
- Reviewed by Geoff Garen.
+ When enabling or disabling the JIT through .qmake.cache, make sure
+ to also toggle ENABLE_YARR_JIT.
- Remove an unused forwarding header for a file that no longer exists.
+ * JavaScriptCore.pri:
- * ForwardingHeaders/JavaScriptCore/JSLock.h: Removed.
+2009-10-06 Priit Laes <plaes@plaes.org>
-2008-11-11 Mark Rowe <mrowe@apple.com>
+ Reviewed by Gavin Barraclough.
- Fix broken dependencies building JavaScriptCore on a freezing cold cat, caused
- by failure to update all instances of "kjs" to their new locations.
+ Linking fails with "relocation R_X86_64_PC32 against symbol
+ `cti_vm_throw'"
+ https://bugs.webkit.org/show_bug.cgi?id=28422
- * JavaScriptCore.xcodeproj/project.pbxproj:
+ * jit/JITStubs.cpp:
+ Mark cti_vm_throw symbol as PLT-indirect symbol, so it doesn't end up
+ in text segment causing relocation errors on amd64 architecture.
+ Introduced new define SYMBOL_STRING_RELOCATION for such symbols.
-2008-11-11 Alexey Proskuryakov <ap@webkit.org>
+2009-10-06 Oliver Hunt <oliver@apple.com>
- Rubber-stamped by Adam Roben.
+ Windows linking fix
- * wtf/AVLTree.h: (WTF::AVLTree::Iterator::start_iter):
- Fix indentation a little more.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
-2008-11-11 Cameron Zwarich <zwarich@apple.com>
+2009-10-06 Oliver Hunt <oliver@apple.com>
- Rubber-stamped by Sam Weinig.
+ Reviewed by NOBODY (build fix).
- Clean up EvalCodeCache to match our coding style a bit more.
+ Windows build fix.
- * VM/EvalCodeCache.h:
- (JSC::EvalCodeCache::get):
+ * runtime/DateInstance.cpp:
-2008-11-11 Cameron Zwarich <zwarich@apple.com>
+2009-10-05 Oliver Hunt <oliver@apple.com>
- Rubber-stamped by Sam Weinig.
+ Reviewed by Gavin Barraclough.
- Bug 22179: Move EvalCodeCache from CodeBlock.h into its own file
- <https://bugs.webkit.org/show_bug.cgi?id=22179>
+ It should be possible to post (clone) built-in JS objects to Workers
+ https://bugs.webkit.org/show_bug.cgi?id=22878
- * GNUmakefile.am:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ Expose helpers to throw correct exceptions during object graph walk
+ used for cloning and add a helper function to create Date instances
+ without going through the JS Date constructor function.
+
+ * JavaScriptCore.exp:
* JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CodeBlock.h:
- * VM/EvalCodeCache.h: Copied from VM/CodeBlock.h.
- * VM/Machine.cpp:
+ * runtime/DateInstance.cpp:
+ (JSC::DateInstance::DateInstance):
+ * runtime/DateInstance.h:
+ * runtime/ExceptionHelpers.cpp:
+ (JSC::createTypeError):
+ * runtime/ExceptionHelpers.h:
-2008-11-11 Cameron Zwarich <zwarich@apple.com>
+2009-10-06 David Levin <levin@chromium.org>
- Reviewed by Sam Weinig.
+ Reviewed by Oliver Hunt.
- Remove the 'm_' prefix from the fields of the SwitchRecord struct.
+ StringImpl needs a method to get an instance for another thread which doesn't copy the underlying buffer.
+ https://bugs.webkit.org/show_bug.cgi?id=30095
- * VM/CTI.cpp:
- (JSC::CTI::privateCompile):
- * VM/CTI.h:
- (JSC::SwitchRecord):
- (JSC::SwitchRecord::SwitchRecord):
+ * wtf/CrossThreadRefCounted.h:
+ Removed an unused function and assert improvement.
+ (WTF::CrossThreadRefCounted::isOwnedByCurrentThread): Moved out common code from asserts.
+ (WTF::CrossThreadRefCounted::ref): Changed assert to use the common method.
+ (WTF::CrossThreadRefCounted::deref): Changed assert to use the common method.
+ (WTF::CrossThreadRefCounted::crossThreadCopy): Since this includes a potentially
+ non-threadsafe operation, add an assert that the class is owned by the current thread.
-2008-11-11 Cameron Zwarich <zwarich@apple.com>
+2009-10-05 Kevin Ollivier <kevino@theolliviers.com>
- Rubber-stamped by Sam Weinig.
+ wx build fix. Add Symbian files to the list of excludes.
- Make asInteger() a static function so that it has internal linkage.
+ * wscript:
- * VM/CTI.cpp:
- (JSC::asInteger):
+2009-10-05 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-2008-11-11 Maciej Stachowiak <mjs@apple.com>
+ Reviewed by Simon Hausmann.
- Reviewed by Mark Rowe.
-
- - shrink CodeBlock and AST related Vectors to exact fit (5-10M savings on membuster test)
-
- No perf regression combined with the last patch (each seems like a small regression individually)
+ [Qt] Remove precompiled header from JavaScriptCore compilation to
+ prevent qmake warning during autonomous compilation.
+ https://bugs.webkit.org/show_bug.cgi?id=30069
- * bytecompiler/CodeGenerator.cpp:
- (JSC::CodeGenerator::generate):
- * parser/Nodes.h:
- (JSC::SourceElements::releaseContentsIntoVector):
- * wtf/Vector.h:
- (WTF::Vector::shrinkToFit):
+ * JavaScriptCore.pro:
-2008-11-11 Maciej Stachowiak <mjs@apple.com>
+2009-10-02 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Mark Rowe.
-
- - remove inline capacity from declaration stacks (15M savings on membuster test)
+ Reviewed by Sam Weinig.
- No perf regression on SunSpider or V8 test combined with other upcoming memory improvement patch.
+ Removed the concept of a "fast access cutoff" in arrays, because it
+ punished some patterns of array access too much, and made things too
+ complex for inlining in some cases.
- * JavaScriptCore.exp:
- * parser/Nodes.h:
+ 1.3% speedup on SunSpider.
-2008-11-11 Cameron Zwarich <zwarich@apple.com>
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emitSlow_op_get_by_val):
+ (JSC::JIT::emitSlow_op_put_by_val):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_get_by_val):
+ (JSC::JIT::emitSlow_op_get_by_val):
+ (JSC::JIT::emit_op_put_by_val):
+ (JSC::JIT::emitSlow_op_put_by_val):
+ * jit/JITStubs.cpp:
+ * jit/JITStubs.h:
+ (JSC::): Check m_vectorLength instead of m_fastAccessCutoff when
+ getting / putting from / to an array. Inline putting past the end of
+ the array.
- Reviewed by Oliver Hunt.
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::JSArray):
+ (JSC::JSArray::getOwnPropertySlot):
+ (JSC::JSArray::getOwnPropertyDescriptor):
+ (JSC::JSArray::put):
+ (JSC::JSArray::putSlowCase):
+ (JSC::JSArray::deleteProperty):
+ (JSC::JSArray::getOwnPropertyNames):
+ (JSC::JSArray::increaseVectorLength):
+ (JSC::JSArray::setLength):
+ (JSC::JSArray::pop):
+ (JSC::JSArray::push):
+ (JSC::JSArray::sort):
+ (JSC::JSArray::fillArgList):
+ (JSC::JSArray::copyToRegisters):
+ (JSC::JSArray::compactForSorting):
+ (JSC::JSArray::checkConsistency):
+ * runtime/JSArray.h:
+ (JSC::JSArray::canGetIndex):
+ (JSC::JSArray::canSetIndex):
+ (JSC::JSArray::setIndex):
+ (JSC::JSArray::markChildrenDirect): Removed m_fastAccessCutoff, and
+ replaced with checks for JSValue() to detect reads and writes from / to
+ uninitialized parts of the array.
- While r38286 removed the need for the m_callFrame member variable of
- CTI, it should be also be removed.
+2009-10-02 Jonni Rainisto <jonni.rainisto@nokia.com>
- * VM/CTI.h:
+ Reviewed by Darin Adler.
-2008-11-10 Cameron Zwarich <zwarich@apple.com>
+ Math.random() gives too low values on Win32 when _CRT_RAND_S is not defined
+ https://bugs.webkit.org/show_bug.cgi?id=29956
- Reviewed by Oliver Hunt.
+ * wtf/RandomNumber.cpp:
+ (WTF::randomNumber): Added PLATFORM(WIN_OS) to handle 15bit rand()
- Make CTI::asInteger() a non-member function, since it needs no access to
- any of CTI's member variables.
+2009-10-02 Geoffrey Garen <ggaren@apple.com>
- * VM/CTI.cpp:
- (JSC::asInteger):
- * VM/CTI.h:
+ Reviewed by Sam Weinig.
-2008-11-10 Cameron Zwarich <zwarich@apple.com>
+ Take one branch instead of two to test for JSValue().
+
+ 1.1% SunSpider speedup.
- Reviewed by Maciej Stachowiak.
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_to_jsnumber):
+ (JSC::JIT::emit_op_create_arguments):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emitSlow_op_get_by_val):
+ (JSC::JIT::emit_op_put_by_val): Test for the empty value tag, instead
+ of testing for the cell tag with a 0 payload.
- Use 'value' instead of 'js' in CTI as a name for JSValue* to match our
- usual convention elsewhere.
+ * runtime/JSValue.cpp:
+ (JSC::JSValue::description): Added support for dumping the new empty value,
+ and deleted values, in debug builds.
- * VM/CTI.cpp:
- (JSC::CTI::emitGetArg):
- (JSC::CTI::emitGetPutArg):
- (JSC::CTI::getConstantImmediateNumericArg):
- (JSC::CTI::printOpcodeOperandTypes):
+ * runtime/JSValue.h:
+ (JSC::JSValue::JSValue()): Construct JSValue() with the empty value tag.
-2008-11-10 Cameron Zwarich <zwarich@apple.com>
+ (JSC::JSValue::JSValue(JSCell*)): Convert null pointer to the empty value
+ tag, to avoid having two different c++ versions of null / empty.
- Reviewed by Maciej Stachowiak.
+ (JSC::JSValue::operator bool): Test for the empty value tag, instead
+ of testing for the cell tag with a 0 payload.
- Make CTI::getConstant() a member function of CodeBlock instead.
+2009-10-02 Steve Falkenburg <sfalken@apple.com>
- * VM/CTI.cpp:
- (JSC::CTI::emitGetArg):
- (JSC::CTI::emitGetPutArg):
- (JSC::CTI::getConstantImmediateNumericArg):
- (JSC::CTI::printOpcodeOperandTypes):
- (JSC::CTI::privateCompileMainPass):
- * VM/CTI.h:
- * VM/CodeBlock.h:
- (JSC::CodeBlock::getConstant):
+ Reviewed by Mark Rowe.
-2008-11-10 Cameron Zwarich <zwarich@apple.com>
+ <https://bugs.webkit.org/show_bug.cgi?id=29989>
+ Safari version number shouldn't be exposed in WebKit code
+
+ For a WebKit version of 532.3.4:
+ Product version is: 5.32.3.4 (was 4.0.3.0)
+ File version is: 5.32.3.4 (was 4.532.3.4)
- Reviewed by Sam Weinig.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc:
- Rename CodeBlock::isConstant() to isConstantRegisterIndex().
+2009-10-02 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
- * VM/CTI.cpp:
- (JSC::CTI::emitGetArg):
- (JSC::CTI::emitGetPutArg):
- (JSC::CTI::getConstantImmediateNumericArg):
- (JSC::CTI::printOpcodeOperandTypes):
- (JSC::CTI::privateCompileMainPass):
- * VM/CodeBlock.h:
- (JSC::CodeBlock::isConstantRegisterIndex):
- * bytecompiler/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitEqualityOp):
+ Rubber-stamped by Simon Hausmann.
-2008-11-10 Gavin Barraclough <barraclough@apple.com>
+ Fix the Qt on Mac OS X build.
- Build fix for non-CTI builds.
+ * wtf/FastMalloc.cpp:
- * VM/Machine.cpp:
- (JSC::Machine::initialize):
+2009-10-02 Jørgen Lind <jorgen.lind@nokia.com>
-2008-11-10 Cameron Zwarich <zwarich@apple.com>
+ Reviewed by Simon Hausmann.
- Reviewed by Sam Weinig.
+ Allow enabling and disabling of the JIT through a qmake variable.
- Remove the unused labels member variable of CodeBlock.
+ Qt's configure may set this variable through .qmake.cache if a
+ commandline option is given and/or the compile test for hwcap.h
+ failed/succeeded.
- * VM/CodeBlock.h:
- * VM/LabelID.h:
- (JSC::LabelID::setLocation):
+ * JavaScriptCore.pri:
-2008-11-10 Gavin Barraclough <barraclough@apple.com>
+2009-10-01 Mark Rowe <mrowe@apple.com>
- Reviewed by Cameron Zwarich.
+ Fix the Tiger build. Don't unconditionally enable 3D canvas as it is not supported on Tiger.
- Batch compile the set of static trampolines at the point Machine is constructed, using a single allocation.
- Refactor out m_callFrame from CTI, since this is only needed to access the global data (instead store a
- pointer to the global data directly, since this is available at the point the Machine is constructed).
- Add a method to align the code buffer, to allow JIT generation for multiple trampolines in one block.
-
- * VM/CTI.cpp:
- (JSC::CTI::getConstant):
- (JSC::CTI::emitGetArg):
- (JSC::CTI::emitGetPutArg):
- (JSC::CTI::getConstantImmediateNumericArg):
- (JSC::CTI::printOpcodeOperandTypes):
- (JSC::CTI::CTI):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::privateCompileCTIMachineTrampolines):
- (JSC::CTI::freeCTIMachineTrampolines):
- * VM/CTI.h:
- (JSC::CTI::compile):
- (JSC::CTI::compileGetByIdSelf):
- (JSC::CTI::compileGetByIdProto):
- (JSC::CTI::compileGetByIdChain):
- (JSC::CTI::compilePutByIdReplace):
- (JSC::CTI::compilePutByIdTransition):
- (JSC::CTI::compileCTIMachineTrampolines):
- (JSC::CTI::compilePatchGetArrayLength):
- * VM/Machine.cpp:
- (JSC::Machine::initialize):
- (JSC::Machine::~Machine):
- (JSC::Machine::execute):
- (JSC::Machine::tryCTICachePutByID):
- (JSC::Machine::tryCTICacheGetByID):
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_vm_lazyLinkCall):
- * VM/Machine.h:
- * masm/X86Assembler.h:
- (JSC::JITCodeBuffer::isAligned):
- (JSC::X86Assembler::):
- (JSC::X86Assembler::align):
- * runtime/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
+ * Configurations/FeatureDefines.xcconfig:
+
+2009-10-01 Yongjun Zhang <yongjun.zhang@nokia.com>
+
+ Reviewed by Darin Adler.
-2008-11-10 Maciej Stachowiak <mjs@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=29187
- Reviewed by Antti Koivisto.
-
- - Make Vector::clear() release the Vector's memory (1MB savings on membuster)
- https://bugs.webkit.org/show_bug.cgi?id=22170
+ Don't inline ~ListRefPtr() to work around winscw compiler forward declaration
+ bug regarding templated classes.
- * wtf/Vector.h:
- (WTF::VectorBufferBase::deallocateBuffer): Set capacity to 0 as
- well as size, otherwise shrinking capacity to 0 can fail to reset
- the capacity and thus cause a future crash.
- (WTF::Vector::~Vector): Shrink size not capacity; we only need
- to call destructors, the buffer will be freed anyway.
- (WTF::Vector::clear): Change this to shrinkCapacity(0), not just shrink(0).
- (WTF::::shrinkCapacity): Use shrink() instead of resize() for case where
- the size is greater than the new capacity, to work with types that have no
- default constructor.
-
-2008-11-10 Cameron Zwarich <zwarich@apple.com>
+ The compiler bug is reported at:
+ https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812
- Reviewed by Maciej Stachowiak.
+ The change will be reverted when the above bug is fixed in winscw compiler.
- Split multiple definitions into separate lines.
+ * wtf/ListRefPtr.h:
+ (WTF::::~ListRefPtr):
- * VM/CTI.cpp:
- (JSC::CTI::compileBinaryArithOp):
+2009-10-01 Zoltan Horvath <zoltan@webkit.org>
-2008-11-10 Cameron Zwarich <zwarich@apple.com>
+ Reviewed by Simon Hausmann.
- Reviewed by Geoff Garen.
+ [Qt] Allow custom memory allocation control for the whole JavaScriptCore
+ https://bugs.webkit.org/show_bug.cgi?id=27029
- Bug 22162: Remove cachedValueGetter from the JavaScriptCore API implementation
- <https://bugs.webkit.org/show_bug.cgi?id=22162>
+ Since in JavaScriptCore almost every class which has been instantiated by operator new is
+ inherited from FastAllocBase (bug #20422), we disable customizing global operator new for the Qt-port
+ when USE_SYSTEM_MALLOC=0.
- There is no more need for the cachedValueGetter hack now that we have
- PropertySlot::setValue(), so we should remove it.
+ Add #include <unistd.h> to FastMalloc.cpp because it's used by TCMalloc_PageHeap::scavengerThread().
+ (It's needed for the functionality of TCmalloc.)
- * API/JSCallbackObject.h:
- * API/JSCallbackObjectFunctions.h:
- (JSC::::getOwnPropertySlot):
+ Add TCSystemAlloc.cpp to JavaScriptCore.pri if USE_SYSTEM_MALLOC is disabled.
-2008-11-10 Cameron Zwarich <zwarich@apple.com>
+ * JavaScriptCore.pri:
+ * wtf/FastMalloc.cpp:
+ (WTF::sleep):
+ * wtf/FastMalloc.h:
- Reviewed by Darin Adler.
+2009-09-30 Gabor Loki <loki@inf.u-szeged.hu>
- Bug 22152: Remove asObject() call from JSCallbackObject::getOwnPropertySlot()
- <https://bugs.webkit.org/show_bug.cgi?id=22152>
+ Reviewed by George Staikos.
- With the recent change to adopt asType() style cast functions with
- assertions instead of static_casts in many places, the assertion for
- the asObject() call in JSCallbackObject::getOwnPropertySlot() has been
- failing when using any nontrivial client of the JavaScriptCore API.
- The cast isn't even necessary to call slot.setCustom(), so it should
- be removed.
+ Defines two pseudo-platforms for ARM and Thumb-2 instruction set.
+ https://bugs.webkit.org/show_bug.cgi?id=29122
- * API/JSCallbackObjectFunctions.h:
- (JSC::JSCallbackObject::getOwnPropertySlot):
+ Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2
+ macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used
+ when Thumb-2 instruction set is the required target. The
+ PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In
+ case where the code is common the PLATFORM(ARM) have to be used.
-2008-11-10 Alexey Proskuryakov <ap@webkit.org>
+ Modified by George Wright <gwright@rim.com> to correctly work
+ with the RVCT-defined __TARGET_ARCH_ARM and __TARGET_ARCH_THUMB
+ compiler macros, as well as adding readability changes.
- Reviewed by Adam Roben.
+ * wtf/Platform.h:
- A few coding style fixes for AVLTree.
+2009-09-30 Oliver Hunt <oliver@apple.com>
- * wtf/AVLTree.h: Moved to WTF namespace, Removed "KJS_" from include guards.
- (WTF::AVLTree::Iterator::start_iter): Fixed indentation
+ Reviewed by Geoff Garen.
- * runtime/JSArray.cpp: Added "using namepace WTF".
+ Devirtualise array toString conversion
-2008-11-09 Cameron Zwarich <zwarich@apple.com>
+ Tweak the implementation of Array.prototype.toString to have a fast path
+ when acting on a true JSArray.
- Not reviewed.
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncToString):
- Speculatively fix the non-AllInOne build.
+2009-09-30 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
- * runtime/NativeErrorConstructor.cpp:
+ Reviewed by Geoffrey Garen.
-2008-11-09 Darin Adler <darin@apple.com>
+ Buildfix for platforms using JSVALUE32.
+ https://bugs.webkit.org/show_bug.cgi?id=29915
- Reviewed by Tim Hatcher.
+ After http://trac.webkit.org/changeset/48905 the build broke in JSVALUE32 case.
+ Also removed unreachable code.
- - https://bugs.webkit.org/show_bug.cgi?id=22149
- remove unused code from the parser
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_add):
+ - Declaration of "OperandTypes types" moved before first use.
+ - Typos fixed: dst modified to result, regT2 added.
+ - Unreachable code removed.
+ (JSC::JIT::emitSlow_op_add):
+ - Missing declaration of "OperandTypes types" added.
- * AllInOneFile.cpp: Removed nodes2string.cpp.
- * GNUmakefile.am: Ditto.
- * JavaScriptCore.exp: Ditto.
- * JavaScriptCore.pri: Ditto.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Ditto.
- * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
- * JavaScriptCoreSources.bkl: Ditto.
+2009-09-30 Janne Koskinen <janne.p.koskinen@digia.com>
- * VM/CodeBlock.h: Added include.
+ Reviewed by Simon Hausmann.
- * VM/Machine.cpp: (JSC::Machine::execute): Use the types from
- DeclarationStacks as DeclarationStacks:: rather than Node:: since
- "Node" really has little to do with it.
- * bytecompiler/CodeGenerator.cpp:
- (JSC::CodeGenerator::CodeGenerator): Ditto.
+ Reduce heap size on Symbian from 64MB to 8MB.
- * jsc.cpp:
- (Options::Options): Removed prettyPrint option.
- (runWithScripts): Ditto.
- (printUsageStatement): Ditto.
- (parseArguments): Ditto.
- (jscmain): Ditto.
+ This is not a perfect fix, it requires more fine tuning.
+ But this makes it possible again to debug in the emulator,
+ which is more important in order to be able to fix other
+ run-time issues.
- * parser/Grammar.y: Removed use of obsolete ImmediateNumberNode.
+ * runtime/Collector.h:
- * parser/Nodes.cpp:
- (JSC::ThrowableExpressionData::emitThrowError): Use inline functions
- instead of direct member access for ThrowableExpressionData values.
- (JSC::BracketAccessorNode::emitCode): Ditto.
- (JSC::DotAccessorNode::emitCode): Ditto.
- (JSC::NewExprNode::emitCode): Ditto.
- (JSC::EvalFunctionCallNode::emitCode): Ditto.
- (JSC::FunctionCallValueNode::emitCode): Ditto.
- (JSC::FunctionCallResolveNode::emitCode): Ditto.
- (JSC::FunctionCallBracketNode::emitCode): Ditto.
- (JSC::FunctionCallDotNode::emitCode): Ditto.
- (JSC::PostfixResolveNode::emitCode): Ditto.
- (JSC::PostfixBracketNode::emitCode): Ditto.
- (JSC::PostfixDotNode::emitCode): Ditto.
- (JSC::DeleteResolveNode::emitCode): Ditto.
- (JSC::DeleteBracketNode::emitCode): Ditto.
- (JSC::DeleteDotNode::emitCode): Ditto.
- (JSC::PrefixResolveNode::emitCode): Ditto.
- (JSC::PrefixBracketNode::emitCode): Ditto.
- (JSC::PrefixDotNode::emitCode): Ditto.
- (JSC::ThrowableBinaryOpNode::emitCode): Ditto.
- (JSC::InstanceOfNode::emitCode): Ditto.
- (JSC::ReadModifyResolveNode::emitCode): Ditto.
- (JSC::AssignResolveNode::emitCode): Ditto.
- (JSC::AssignDotNode::emitCode): Ditto.
- (JSC::ReadModifyDotNode::emitCode): Ditto.
- (JSC::AssignBracketNode::emitCode): Ditto.
- (JSC::ReadModifyBracketNode::emitCode): Ditto.
- (JSC::statementListEmitCode): Take a const StatementVector instead
- of a non-const one. Also removed unused statementListPushFIFO.
- (JSC::ForInNode::emitCode): Inline functions instead of member access.
- (JSC::ThrowNode::emitCode): Ditto.
- (JSC::EvalNode::emitCode): Ditto.
- (JSC::FunctionBodyNode::emitCode): Ditto.
- (JSC::ProgramNode::emitCode): Ditto.
-
- * parser/Nodes.h: Removed unused includes and forward declarations.
- Removed Precedence enum. Made many more members private instead of
- protected or public. Removed unused NodeStack typedef. Moved the
- VarStack and FunctionStack typedefs from Node to ScopeNode. Made
- Node::emitCode pure virtual and changed classes that don't emit
- any code to inherit from ParserRefCounted rather than Node.
- Moved isReturnNode from Node to StatementNode. Removed the
- streamTo, precedence, and needsParensIfLeftmost functions from
- all classes. Removed the ImmediateNumberNode class and make
- NumberNode::setValue nonvirtual.
-
- * parser/nodes2string.cpp: Removed.
-
-2008-11-09 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig and Maciej Stachowiak.
- Includes some work done by Chris Brichford.
-
- - fix https://bugs.webkit.org/show_bug.cgi?id=14886
- Stack overflow due to deeply nested parse tree doing repeated string concatentation
-
- Test: fast/js/large-expressions.html
-
- 1) Code generation is recursive, so takes stack proportional to the complexity
- of the source code expression. Fixed by setting an arbitrary recursion limit
- of 10,000 nodes.
-
- 2) Destruction of the syntax tree was recursive. Fixed by introducing a
- non-recursive mechanism for destroying the tree.
-
- * bytecompiler/CodeGenerator.cpp:
- (JSC::CodeGenerator::CodeGenerator): Initialize depth to 0.
- (JSC::CodeGenerator::emitThrowExpressionTooDeepException): Added. Emits the code
- to throw a "too deep" exception.
- * bytecompiler/CodeGenerator.h:
- (JSC::CodeGenerator::emitNode): Check depth and emit an exception if we exceed
- the maximum depth.
+2009-09-30 Janne Koskinen <janne.p.koskinen@digia.com>
- * parser/Nodes.cpp:
- (JSC::NodeReleaser::releaseAllNodes): Added. To be called inside node destructors
- to avoid recursive calls to destructors for nodes inside this one.
- (JSC::NodeReleaser::release): Added. To be called inside releaseNodes functions.
- Also added releaseNodes functions and calls to releaseAllNodes inside destructors
- for each class derived from Node that has RefPtr to other nodes.
- (JSC::NodeReleaser::adopt): Added. Used by the release function.
- (JSC::NodeReleaser::adoptFunctionBodyNode): Added.
-
- * parser/Nodes.h: Added declarations of releaseNodes and destructors in all classes
- that needed it. Eliminated use of ListRefPtr and releaseNext, which are the two parts
- of an older solution to the non-recursive destruction problem that works only for
- lists, whereas the new solution works for other graphs. Changed ReverseBinaryOpNode
- to use BinaryOpNode as a base class to avoid some duplicated code.
-
-2008-11-08 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fixes after addition of JSCore parser and bycompiler dirs. Also cleanup
- the JSCore Bakefile's group names to be consistent.
+ Reviewed by Simon Hausmann.
- * JavaScriptCoreSources.bkl:
- * jscore.bkl:
+ Fix CRASH() macro for Symbian build.
-2008-11-07 Cameron Zwarich <zwarich@apple.com>
+ * wtf/Assertions.h: Added missing }
- Reviewed by Geoff Garen.
+2009-09-29 Geoffrey Garen <ggaren@apple.com>
- Bug 21801: REGRESSION (r37821): YUI date formatting JavaScript puts the letter 'd' in place of the day
- <https://bugs.webkit.org/show_bug.cgi?id=21801>
+ Reviewed by Gavin Barraclough.
- Fix the constant register check in the 'typeof' optimization in
- CodeGenerator, which was completely broken after r37821.
+ Inlined a few math operations.
+
+ ~1% SunSpider speedup.
- * bytecompiler/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitEqualityOp):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileBinaryArithOpSlowCase):
+ (JSC::JIT::emitSlow_op_add):
+ (JSC::JIT::emitSlow_op_mul):
+ (JSC::JIT::emit_op_sub):
+ (JSC::JIT::emitSlow_op_sub): Don't take a stub call when operating on
+ a constant int and a double.
-2008-11-07 Cameron Zwarich <zwarich@apple.com>
+2009-09-28 Oliver Hunt <oliver@apple.com>
- Reviewed by Geoff Garen.
+ Reviewed by Gavin Barraclough.
- Bug 22129: Move CTI::isConstant() to CodeBlock
- <https://bugs.webkit.org/show_bug.cgi?id=22129>
+ Tidy up codeblock sampler
+ https://bugs.webkit.org/show_bug.cgi?id=29836
- * VM/CTI.cpp:
- (JSC::CTI::emitGetArg):
- (JSC::CTI::emitGetPutArg):
- (JSC::CTI::getConstantImmediateNumericArg):
- (JSC::CTI::printOpcodeOperandTypes):
- (JSC::CTI::privateCompileMainPass):
- * VM/CTI.h:
- * VM/CodeBlock.h:
- (JSC::CodeBlock::isConstant):
+ Some rather simple refactoring of codeblock sampler so that
+ it's easier for us to use it to find problems in non-jsc
+ environments
-2008-11-07 Alp Toker <alp@nuanti.com>
+ * JavaScriptCore.exp:
+ * bytecode/SamplingTool.h:
+ * debugger/Debugger.cpp:
+ (JSC::evaluateInGlobalCallFrame):
+ * debugger/DebuggerCallFrame.cpp:
+ (JSC::DebuggerCallFrame::evaluate):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::Interpreter):
+ (JSC::Interpreter::execute):
+ (JSC::Interpreter::privateExecute):
+ (JSC::Interpreter::enableSampler):
+ (JSC::Interpreter::dumpSampleData):
+ (JSC::Interpreter::startSampling):
+ (JSC::Interpreter::stopSampling):
+ * interpreter/Interpreter.h:
+ (JSC::Interpreter::sampler):
+ * jit/JIT.h:
+ * jsc.cpp:
+ (runWithScripts):
+ * runtime/Completion.cpp:
+ (JSC::checkSyntax):
+ (JSC::evaluate):
+ * runtime/Executable.h:
+ (JSC::EvalExecutable::EvalExecutable):
+ (JSC::ProgramExecutable::create):
+ (JSC::ProgramExecutable::ProgramExecutable):
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::startSampling):
+ (JSC::JSGlobalData::stopSampling):
+ (JSC::JSGlobalData::dumpSampleData):
+ * runtime/JSGlobalData.h:
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncEval):
- autotools fix. Always use the configured perl binary (which may be
- different to the one in $PATH) when generating sources.
+2009-09-29 Jeremy Orlow <jorlow@chromium.org>
- * GNUmakefile.am:
+ Reviewed by Dimitri Glazkov.
-2008-11-07 Cameron Zwarich <zwarich@apple.com>
+ Add GYP generated files to svn:ignore
+ https://bugs.webkit.org/show_bug.cgi?id=29895
- Not reviewed.
+ The following files are generated by JavaScriptCore's GYP file and should be ignored:
- Change grammar.cpp to Grammar.cpp and grammar.h to Grammar.h in several
- build scripts.
+ pcre.mk
+ wtf.scons
+ wtf.mk
+ SConstruct
+ wtf_config.scons
+ wtf_config.mk
+ pcre.scons
- * DerivedSources.make:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCoreSources.bkl:
+ * JavaScriptCore.gyp: Changed property svn:ignore.
-2008-11-07 Alp Toker <alp@nuanti.com>
+2009-09-29 Geoffrey Garen <ggaren@apple.com>
- More grammar.cpp -> Grammar.cpp build fixes.
+ Reviewed by Sam Weinig.
- * AllInOneFile.cpp:
- * GNUmakefile.am:
+ Standardized an optimization for adding non-numbers.
+
+ SunSpider says maybe a tiny speedup.
-2008-11-07 Simon Hausmann <hausmann@webkit.org>
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_add):
+ (JSC::JIT::emitSlow_op_add):
- Fix the build on case-sensitive file systems. grammar.y was renamed to
- Grammar.y but Lexer.cpp includes grammar.h. The build bots didn't
- notice this change because of stale files.
+2009-09-29 Geoffrey Garen <ggaren@apple.com>
- * parser/Lexer.cpp:
+ Windows build fix: export a new symbol.
-2008-11-07 Cameron Zwarich <zwarich@apple.com>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Reviewed by Alexey Proskuryakov.
+2009-09-28 Geoffrey Garen <ggaren@apple.com>
- Rename the m_nextGlobal, m_nextParameter, and m_nextConstant member
- variables of CodeGenerator to m_nextGlobalIndex, m_nextParameterIndex,
- and m_nextConstantIndex respectively. This is to distinguish these from
- member variables like m_lastConstant, which are actually RefPtrs to
- Registers.
+ Reviewed by Sam Weinig.
- * bytecompiler/CodeGenerator.cpp:
- (JSC::CodeGenerator::addGlobalVar):
- (JSC::CodeGenerator::allocateConstants):
- (JSC::CodeGenerator::CodeGenerator):
- (JSC::CodeGenerator::addParameter):
- (JSC::CodeGenerator::addConstant):
- * bytecompiler/CodeGenerator.h:
+ Removed virtual destructor from JSGlobalObjectData to eliminate pointer
+ fix-ups when accessing JSGlobalObject::d.
+
+ Replaced with an explicit destructor function pointer.
+
+ 6% speedup on bench-alloc-nonretained.js.
-2008-11-06 Gavin Barraclough barraclough@apple.com
+ * JavaScriptCore.exp:
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::~JSGlobalObject):
+ (JSC::JSGlobalObject::destroyJSGlobalObjectData):
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
+ (JSC::JSGlobalObject::JSGlobalObject):
- Reviewed by Oliver Hunt.
+2009-09-29 Janne Koskinen <janne.p.koskinen@digia.com>
- Do not make a cti_* call to perform an op_call unless either:
- (1) The codeblock for the function body has not been generated.
- (2) The number of arguments passed does not match the callee arity.
+ Reviewed by David Kilzer.
- ~1% progression on sunspider --v8
+ [Qt] Assert messages prints visible in Symbian
+ https://bugs.webkit.org/show_bug.cgi?id=29808
- * VM/CTI.cpp:
- (JSC::CTI::compileOpCallInitializeCallFrame):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::privateCompileSlowCases):
- * VM/CTI.h:
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_op_call_arityCheck):
- (JSC::Machine::cti_op_construct_JSConstruct):
- * VM/Machine.h:
- * kjs/nodes.h:
+ Asserts use vprintf to print the messages to stderr.
+ In Symbian Open C it is not possible to see stderr so
+ I routed the messages to stdout instead.
-2008-11-06 Cameron Zwarich <zwarich@apple.com>
+ * wtf/Assertions.cpp:
- Reviewed by Geoff Garen.
+2009-09-29 Janne Koskinen <janne.p.koskinen@digia.com>
- Move the remaining files in the kjs subdirectory of JavaScriptCore to
- a new parser subdirectory, and remove the kjs subdirectory entirely.
+ Reviewed by Darin Adler.
- * AllInOneFile.cpp:
- * DerivedSources.make:
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.vcproj/jsc/jsc.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/CodeBlock.h:
- * VM/ExceptionHelpers.cpp:
- * VM/SamplingTool.h:
- * bytecompiler/CodeGenerator.h:
- * jsc.pro:
- * jscore.bkl:
- * kjs: Removed.
- * kjs/NodeInfo.h: Removed.
- * kjs/Parser.cpp: Removed.
- * kjs/Parser.h: Removed.
- * kjs/ResultType.h: Removed.
- * kjs/SourceCode.h: Removed.
- * kjs/SourceProvider.h: Removed.
- * kjs/grammar.y: Removed.
- * kjs/keywords.table: Removed.
- * kjs/lexer.cpp: Removed.
- * kjs/lexer.h: Removed.
- * kjs/nodes.cpp: Removed.
- * kjs/nodes.h: Removed.
- * kjs/nodes2string.cpp: Removed.
- * parser: Added.
- * parser/Grammar.y: Copied from kjs/grammar.y.
- * parser/Keywords.table: Copied from kjs/keywords.table.
- * parser/Lexer.cpp: Copied from kjs/lexer.cpp.
- * parser/Lexer.h: Copied from kjs/lexer.h.
- * parser/NodeInfo.h: Copied from kjs/NodeInfo.h.
- * parser/Nodes.cpp: Copied from kjs/nodes.cpp.
- * parser/Nodes.h: Copied from kjs/nodes.h.
- * parser/Parser.cpp: Copied from kjs/Parser.cpp.
- * parser/Parser.h: Copied from kjs/Parser.h.
- * parser/ResultType.h: Copied from kjs/ResultType.h.
- * parser/SourceCode.h: Copied from kjs/SourceCode.h.
- * parser/SourceProvider.h: Copied from kjs/SourceProvider.h.
- * parser/nodes2string.cpp: Copied from kjs/nodes2string.cpp.
- * pcre/pcre.pri:
- * pcre/pcre_exec.cpp:
- * runtime/FunctionConstructor.cpp:
- * runtime/JSActivation.h:
- * runtime/JSFunction.h:
- * runtime/JSGlobalData.cpp:
- * runtime/JSGlobalObjectFunctions.cpp:
- * runtime/JSObject.cpp:
- (JSC::JSObject::toNumber):
- * runtime/RegExp.cpp:
+ [Qt] Symbian CRASH macro implementation
-2008-11-06 Adam Roben <aroben@apple.com>
+ Added Symbian specific crash macro that
+ stops to crash line if JIT debugging is used.
+ Additional differentiation of access violation
+ (KERN-EXEC 3) and CRASH panic.
- Windows build fix after r38196
+ * wtf/Assertions.h:
- * JavaScriptCore.vcproj/jsc/jsc.vcproj: Added bytecompiler/ to the
- include path.
+2009-09-28 Mark Rowe <mrowe@apple.com>
-2008-11-06 Cameron Zwarich <zwarich@apple.com>
+ Fix the PowerPC build.
- Rubber-stamped by Sam Weinig.
+ * JavaScriptCore.exp:
- Create a new bytecompiler subdirectory of JavaScriptCore and move some
- relevant files to it.
+2009-09-28 Mark Rowe <mrowe@apple.com>
- * AllInOneFile.cpp:
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/CodeGenerator.cpp: Removed.
- * VM/CodeGenerator.h: Removed.
- * bytecompiler: Added.
- * bytecompiler/CodeGenerator.cpp: Copied from VM/CodeGenerator.cpp.
- * bytecompiler/CodeGenerator.h: Copied from VM/CodeGenerator.h.
- * bytecompiler/LabelScope.h: Copied from kjs/LabelScope.h.
- * jscore.bkl:
- * kjs/LabelScope.h: Removed.
+ Reviewed by Gavin Barraclough.
+
+ <rdar://problem/7195704> JavaScriptCore fails to mark registers when built for x86_64 using LLVM GCC.
-2008-11-06 Adam Roben <aroben@apple.com>
+ * runtime/Collector.cpp:
+ (JSC::Heap::markCurrentThreadConservatively): Force jmp_buf to use the appropriate alignment for a pointer
+ to ensure that we correctly interpret the contents of registers during marking.
- Windows clean build fix after r38155
+2009-09-28 Geoffrey Garen <ggaren@apple.com>
- Rubberstamped by Cameron Zwarich.
+ Windows build fix: added new exports.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Update
- the post-build event for the move of create_hash_table out of kjs/.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
-2008-11-06 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+2009-09-28 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Darin Adler.
+ Windows build fix: removed exports that no longer exist.
- https://bugs.webkit.org/show_bug.cgi?id=22107
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Bug uncovered during RVCT port in functions not used. get_lt() and
- get_gt() takes only one argument - remove second argument where
- applicable.
+2009-09-28 Geoffrey Garen <ggaren@apple.com>
- * wtf/AVLTree.h:
- (JSC::AVLTree::remove): Remove second argument of get_lt/get_gt().
- (JSC::AVLTree::subst): Ditto.
+ Reviewed by Darin Adler.
-2008-11-06 Alp Toker <alp@nuanti.com>
+ NotNullPassRefPtr: smart pointer optimized for passing references that are not null
+ https://bugs.webkit.org/show_bug.cgi?id=29822
+
+ Added NotNullPassRefPtr, and deployed it in all places that initialize
+ JavaScript objects.
+
+ 2.2% speedup on bench-allocate-nonretained.js.
- Reviewed by Cameron Zwarich.
+ * API/JSCallbackConstructor.cpp:
+ (JSC::JSCallbackConstructor::JSCallbackConstructor):
+ * API/JSCallbackConstructor.h:
+ * API/JSCallbackObject.h:
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::JSCallbackObject::JSCallbackObject):
+ * JavaScriptCore.exp:
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::addFunctionDecl):
+ (JSC::CodeBlock::addFunctionExpr):
+ * runtime/ArrayConstructor.cpp:
+ (JSC::ArrayConstructor::ArrayConstructor):
+ * runtime/ArrayConstructor.h:
+ * runtime/ArrayPrototype.cpp:
+ (JSC::ArrayPrototype::ArrayPrototype):
+ * runtime/ArrayPrototype.h:
+ * runtime/BooleanConstructor.cpp:
+ (JSC::BooleanConstructor::BooleanConstructor):
+ * runtime/BooleanConstructor.h:
+ * runtime/BooleanObject.cpp:
+ (JSC::BooleanObject::BooleanObject):
+ * runtime/BooleanObject.h:
+ * runtime/BooleanPrototype.cpp:
+ (JSC::BooleanPrototype::BooleanPrototype):
+ * runtime/BooleanPrototype.h:
+ * runtime/DateConstructor.cpp:
+ (JSC::DateConstructor::DateConstructor):
+ * runtime/DateConstructor.h:
+ * runtime/DateInstance.cpp:
+ (JSC::DateInstance::DateInstance):
+ * runtime/DateInstance.h:
+ * runtime/DatePrototype.cpp:
+ (JSC::DatePrototype::DatePrototype):
+ * runtime/DatePrototype.h:
+ * runtime/ErrorConstructor.cpp:
+ (JSC::ErrorConstructor::ErrorConstructor):
+ * runtime/ErrorConstructor.h:
+ * runtime/ErrorInstance.cpp:
+ (JSC::ErrorInstance::ErrorInstance):
+ * runtime/ErrorInstance.h:
+ * runtime/ErrorPrototype.cpp:
+ (JSC::ErrorPrototype::ErrorPrototype):
+ * runtime/ErrorPrototype.h:
+ * runtime/FunctionConstructor.cpp:
+ (JSC::FunctionConstructor::FunctionConstructor):
+ * runtime/FunctionConstructor.h:
+ * runtime/FunctionPrototype.cpp:
+ (JSC::FunctionPrototype::FunctionPrototype):
+ * runtime/FunctionPrototype.h:
+ * runtime/GlobalEvalFunction.cpp:
+ (JSC::GlobalEvalFunction::GlobalEvalFunction):
+ * runtime/GlobalEvalFunction.h:
+ * runtime/InternalFunction.cpp:
+ (JSC::InternalFunction::InternalFunction):
+ * runtime/InternalFunction.h:
+ (JSC::InternalFunction::InternalFunction):
+ * runtime/JSActivation.cpp:
+ (JSC::JSActivation::JSActivation):
+ * runtime/JSActivation.h:
+ (JSC::JSActivation::JSActivationData::JSActivationData):
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::JSArray):
+ * runtime/JSArray.h:
+ * runtime/JSByteArray.cpp:
+ (JSC::JSByteArray::JSByteArray):
+ * runtime/JSByteArray.h:
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::JSFunction):
+ * runtime/JSFunction.h:
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::JSGlobalObject):
+ * runtime/JSONObject.h:
+ (JSC::JSONObject::JSONObject):
+ * runtime/JSObject.h:
+ (JSC::JSObject::JSObject):
+ (JSC::JSObject::setStructure):
+ * runtime/JSVariableObject.h:
+ (JSC::JSVariableObject::JSVariableObject):
+ * runtime/JSWrapperObject.h:
+ (JSC::JSWrapperObject::JSWrapperObject):
+ * runtime/MathObject.cpp:
+ (JSC::MathObject::MathObject):
+ * runtime/MathObject.h:
+ * runtime/NativeErrorConstructor.cpp:
+ (JSC::NativeErrorConstructor::NativeErrorConstructor):
+ * runtime/NativeErrorConstructor.h:
+ * runtime/NativeErrorPrototype.cpp:
+ (JSC::NativeErrorPrototype::NativeErrorPrototype):
+ * runtime/NativeErrorPrototype.h:
+ * runtime/NumberConstructor.cpp:
+ (JSC::NumberConstructor::NumberConstructor):
+ * runtime/NumberConstructor.h:
+ * runtime/NumberObject.cpp:
+ (JSC::NumberObject::NumberObject):
+ * runtime/NumberObject.h:
+ * runtime/NumberPrototype.cpp:
+ (JSC::NumberPrototype::NumberPrototype):
+ * runtime/NumberPrototype.h:
+ * runtime/ObjectConstructor.cpp:
+ (JSC::ObjectConstructor::ObjectConstructor):
+ * runtime/ObjectConstructor.h:
+ * runtime/ObjectPrototype.cpp:
+ (JSC::ObjectPrototype::ObjectPrototype):
+ * runtime/ObjectPrototype.h:
+ * runtime/PropertyNameArray.h:
+ (JSC::PropertyNameArrayData::setCachedPrototypeChain):
+ * runtime/PrototypeFunction.cpp:
+ (JSC::PrototypeFunction::PrototypeFunction):
+ * runtime/PrototypeFunction.h:
+ * runtime/RegExpConstructor.cpp:
+ (JSC::RegExpConstructor::RegExpConstructor):
+ * runtime/RegExpConstructor.h:
+ * runtime/RegExpObject.cpp:
+ (JSC::RegExpObject::RegExpObject):
+ * runtime/RegExpObject.h:
+ (JSC::RegExpObject::RegExpObjectData::RegExpObjectData):
+ * runtime/RegExpPrototype.cpp:
+ (JSC::RegExpPrototype::RegExpPrototype):
+ * runtime/RegExpPrototype.h:
+ * runtime/StringConstructor.cpp:
+ (JSC::StringConstructor::StringConstructor):
+ * runtime/StringConstructor.h:
+ * runtime/StringObject.cpp:
+ (JSC::StringObject::StringObject):
+ * runtime/StringObject.h:
+ * runtime/StringObjectThatMasqueradesAsUndefined.h:
+ (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
+ * runtime/StringPrototype.cpp:
+ (JSC::StringPrototype::StringPrototype):
+ * runtime/StringPrototype.h:
+ * wtf/PassRefPtr.h:
+ (WTF::NotNullPassRefPtr::NotNullPassRefPtr):
+ (WTF::NotNullPassRefPtr::~NotNullPassRefPtr):
+ (WTF::NotNullPassRefPtr::get):
+ (WTF::NotNullPassRefPtr::clear):
+ (WTF::NotNullPassRefPtr::releaseRef):
+ (WTF::NotNullPassRefPtr::operator*):
+ (WTF::NotNullPassRefPtr::operator->):
+ (WTF::NotNullPassRefPtr::operator!):
+ (WTF::NotNullPassRefPtr::operator UnspecifiedBoolType):
+ * wtf/RefPtr.h:
+ (WTF::RefPtr::RefPtr):
+ (WTF::operator==):
- https://bugs.webkit.org/show_bug.cgi?id=22033
- [GTK] CTI/Linux r38064 crashes; JIT requires executable memory
+2009-09-28 Oliver Hunt <oliver@apple.com>
- Mark pages allocated by the FastMalloc mmap code path executable with
- PROT_EXEC. This fixes crashes seen on CPUs and kernels that enforce
- non-executable memory (like ExecShield on Fedora Linux) when the JIT
- is enabled.
+ Reviewed by Geoff Garen.
- This patch does not resolve the issue on debug builds so affected
- developers may still need to pass --disable-jit to configure.
+ Hard dependency on SSE2 instruction set with JIT
+ https://bugs.webkit.org/show_bug.cgi?id=29779
- * wtf/TCSystemAlloc.cpp:
- (TryMmap):
- (TryDevMem):
- (TCMalloc_SystemRelease):
+ Add floating point support checks to op_jfalse and op_jtrue, and
+ fix the logic for the slow case of op_add
-2008-11-06 Peter Gal <galpeter@inf.u-szeged.hu>
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitSlow_op_add):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_jfalse):
+ (JSC::JIT::emit_op_jtrue):
- Reviewed by Cameron Zwarich.
+2009-09-28 Yaar Schnitman <yaar@chromium.org>
- Bug 22099: Make the Qt port build the JSC shell in the correct place
- <https://bugs.webkit.org/show_bug.cgi?id=22099>
+ Reviewed by Dimitri Glazkov.
- Adjust include paths and build destination dir for the 'jsc' executable
- in the Qt build.
+ Chromium port - recognize we are being built independently
+ of chromium and look for dependencies under webkit/chromium rather
+ than chromium/src.
- * jsc.pro:
+ https://bugs.webkit.org/show_bug.cgi?id=29722
-2008-11-06 Kristian Amlie <kristian.amlie@nokia.com>
+ * JavaScriptCore.gyp/JavaScriptCore.gyp:
- Reviewed by Simon Hausmann.
+2009-09-28 Jakub Wieczorek <faw217@gmail.com>
- Implemented the block allocation on Symbian through heap allocation.
+ Reviewed by Simon Hausmann.
- Unfortunately there is no way to allocate virtual memory. The Posix
- layer provides mmap() but no anonymous mapping. So this is a very slow
- solution but it should work as a start.
+ [Qt] Implement XSLT support with QtXmlPatterns.
+ https://bugs.webkit.org/show_bug.cgi?id=28303
- * runtime/Collector.cpp:
- (JSC::allocateBlock):
- (JSC::freeBlock):
+ * wtf/Platform.h: Add a WTF_USE_QXMLQUERY #define.
-2008-11-06 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+2009-09-28 Gabor Loki <loki@inf.u-szeged.hu>
Reviewed by Simon Hausmann.
- Borrow some math functions from the MSVC port to the build with the
- RVCT compiler.
+ Remove __clear_cache which is an internal function of GCC
+ https://bugs.webkit.org/show_bug.cgi?id=28886
+
+ Although __clear_cache is exported from GCC, this is an internal
+ function. GCC makes no promises about it.
- * wtf/MathExtras.h:
- (isinf):
- (isnan):
- (signbit):
+ * jit/ExecutableAllocator.h:
+ (JSC::ExecutableAllocator::cacheFlush):
-2008-11-06 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+2009-09-28 Sam Weinig <sam@webkit.org>
- Reviewed by Simon Hausmann.
+ Reviewed by Oliver Hunt.
- Include strings.h for strncasecmp().
- This is needed for compilation inside Symbian and it is also
- confirmed by the man-page on Linux.
+ Fix an absolute path to somewhere in Oliver's machine to a relative path
+ for derived JSONObject.lut.h.
- * runtime/DateMath.cpp:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
-2008-11-06 Norbert Leser <norbert.leser@nokia.com>
+2009-09-28 Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed by Simon Hausmann.
- Implemented currentThreadStackBase for Symbian.
+ Add ARM version detection for Windows CE.
- * runtime/Collector.cpp:
- (JSC::currentThreadStackBase):
+ * wtf/Platform.h:
-2008-11-06 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+2009-09-26 Yongjun Zhang <yongjun.zhang@nokia.com>
Reviewed by Simon Hausmann.
- RVCT does not support tm_gmtoff field, so disable that code just like
- for MSVC.
+ Add MarkStackSymbian.cpp to build JavascriptCore for Symbian.
- * runtime/DateMath.h:
- (JSC::GregorianDateTime::GregorianDateTime):
- (JSC::GregorianDateTime::operator tm):
+ Re-use Windows shrinkAllocation implementation because Symbian doesn't
+ support releasing part of memory region.
+
+ Use fastMalloc and fastFree to implement allocateStack and releaseStack
+ for Symbian port.
-2008-11-06 Kristian Amlie <kristian.amlie@nokia.com>
+ * JavaScriptCore.pri:
+ * runtime/MarkStack.h:
+ (JSC::MarkStack::MarkStackArray::shrinkAllocation):
+ * runtime/MarkStackSymbian.cpp: Added.
+ (JSC::MarkStack::initializePagesize):
+ (JSC::MarkStack::allocateStack):
+ (JSC::MarkStack::releaseStack):
- Reviewed by Simon Hausmann.
+2009-09-25 Gabor Loki <loki@inf.u-szeged.hu>
- Define PLATFORM(UNIX) for S60. Effectively WebKit on S60 is compiled
- on top of the Posix layer.
+ Reviewed by Gavin Barraclough.
+ Fix unaligned data access in YARR_JIT on ARMv5 and below.
+ https://bugs.webkit.org/show_bug.cgi?id=29695
+
+ On ARMv5 and below all data access should be naturally aligned.
+ In the YARR_JIT there is a case when character pairs are
+ loaded from the input string, but this data access is not
+ naturally aligned. This fix introduces load32WithUnalignedHalfWords
+ and branch32WithUnalignedHalfWords functions which contain
+ naturally aligned memory loads - half word loads - on ARMv5 and below.
+
+ * assembler/MacroAssemblerARM.cpp:
+ (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords):
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords):
+ (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords):
+ * assembler/MacroAssemblerARMv7.h:
+ (JSC::MacroAssemblerARMv7::load32WithUnalignedHalfWords):
+ (JSC::MacroAssemblerARMv7::branch32):
+ (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords):
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::load32WithUnalignedHalfWords):
+ (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords):
* wtf/Platform.h:
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::generatePatternCharacterPair):
-2008-11-06 Norbert Leser <norbert.leser@nokia.com>
+2009-09-25 Jeremy Orlow <jorlow@chromium.org>
- Reviewed by Simon Hausmann.
+ This is breaking Chromium try bots, so I'm counting this as a build fix.
- Added __SYMBIAN32__ condition for defining PLATFORM(SYMBIAN).
+ Add more svn:ignore exceptions. On different platforms, these files are
+ generated with different case for JavaScriptCore. Also there are some
+ wtf project files that get built apparently.
- * wtf/Platform.h:
+ * JavaScriptCore.gyp: Changed property svn:ignore.
-2008-11-06 Ariya Hidayat <ariya.hidayat@trolltech.com>
+2009-09-25 Ada Chan <adachan@apple.com>
- Reviewed by Simon Hausmann.
+ Build fix.
- Added WINSCW compiler define for Symbian S60.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- * wtf/Platform.h:
+2009-09-25 Geoffrey Garen <ggaren@apple.com>
-2008-11-06 Kristian Amlie <kristian.amlie@nokia.com>
+ Reviewed by Darin Adler.
- Reviewed by Simon Hausmann.
+ Inlined some object creation code, including lexicalGlobalObject access
+ https://bugs.webkit.org/show_bug.cgi?id=29750
+
+ SunSpider says 0.5% faster.
+
+ 0.8% speedup on bench-alloc-nonretained.js.
+ 2.5% speedup on v8-splay.js.
- Use the GCC defines of the WTF_ALIGN* macros for the RVCT and the
- MINSCW compiler.
+ * interpreter/CachedCall.h:
+ (JSC::CachedCall::CachedCall):
+ * interpreter/CallFrame.h:
+ (JSC::ExecState::lexicalGlobalObject):
+ (JSC::ExecState::globalThisValue):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::dumpRegisters):
+ (JSC::Interpreter::execute):
+ (JSC::Interpreter::privateExecute):
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * runtime/FunctionConstructor.cpp:
+ (JSC::constructFunction):
+ * runtime/ScopeChain.cpp:
+ (JSC::ScopeChainNode::print):
+ * runtime/ScopeChain.h:
+ (JSC::ScopeChainNode::ScopeChainNode):
+ (JSC::ScopeChainNode::~ScopeChainNode):
+ (JSC::ScopeChainNode::push):
+ (JSC::ScopeChain::ScopeChain):
+ (JSC::ScopeChain::globalObject): Added a globalObject data member to ScopeChainNode.
+ Replaced accessor function for globalObject() with data member. Replaced
+ globalThisObject() accessor with direct access to globalThis, to match.
- * wtf/Vector.h:
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::init):
+ * runtime/JSGlobalObject.h: Inlined array and object construction.
-2008-11-06 Kristian Amlie <kristian.amlie@nokia.com>
+2009-09-25 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- Reviewed by Simon Hausmann.
+ Reviewed by Gavin Barraclough.
- Define capabilities of the SYMBIAN platform. Some of the system
- headers are actually dependent on RVCT.
+ Add ARM version detection rules for Symbian
+ https://bugs.webkit.org/show_bug.cgi?id=29715
* wtf/Platform.h:
-2008-11-06 Kristian Amlie <kristian.amlie@nokia.com>
-
- Reviewed by Simon Hausmann.
+2009-09-24 Xan Lopez <xlopez@igalia.com>
- Add missing stddef.h header needed for compilation in Symbian.
+ Reviewed by Mark "Do It!" Rowe.
- * runtime/Collector.h:
+ Some GCC versions don't like C++-style comments in preprocessor
+ directives, change to C-style to shut them up.
-2008-11-06 Kristian Amlie <kristian.amlie@nokia.com>
+ * wtf/Platform.h:
- Reviewed by Simon Hausmann.
+2009-09-24 Oliver Hunt <oliver@apple.com>
- Added COMPILER(RVCT) to detect the ARM RVCT compiler used in the Symbian environment.
+ Reviewed by Gavin Barraclough.
- * wtf/Platform.h:
+ Division is needlessly slow in 64-bit
+ https://bugs.webkit.org/show_bug.cgi?id=29723
-2008-11-06 Simon Hausmann <hausmann@webkit.org>
+ Add codegen for op_div on x86-64
- Fix the Qt build, adjust include paths after move of jsc.pro.
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::compileBinaryArithOpSlowCase):
+ (JSC::JIT::emit_op_div):
+ (JSC::JIT::emitSlow_op_div):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::isOperandConstantImmediateDouble):
+ (JSC::JIT::addressFor):
+ (JSC::JIT::emitLoadDouble):
+ (JSC::JIT::emitLoadInt32ToDouble):
+ (JSC::JIT::emitJumpSlowCaseIfNotImmediateNumber):
- * jsc.pro:
+2009-09-24 Jeremy Orlow <jorlow@chromium.org>
-2008-11-06 Cameron Zwarich <zwarich@apple.com>
+ Reviewed by Dimitri Glazkov.
- Rubber-stamped by Sam Weinig.
+ Add GYP generated files to svn:ignore
+ https://bugs.webkit.org/show_bug.cgi?id=29724
- Move kjs/Shell.cpp to the top level of the JavaScriptCore directory and
- rename it to jsc.cpp to reflect the name of the binary compiled from it.
+ Adding the following files to the svn:ignore list (all in the
+ JavaScriptCore/JavaScriptCore.gyp directory)
- * GNUmakefile.am:
- * JavaScriptCore.vcproj/jsc/jsc.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * jsc.cpp: Copied from kjs/Shell.cpp.
- * jsc.pro:
- * jscore.bkl:
- * kjs/Shell.cpp: Removed.
+ JavaScriptCore.xcodeproj
+ JavaScriptCore.sln
+ JavaScriptCore.vcproj
+ JavaScriptCore_Debug.rules
+ JavaScriptCore_Release.rules
+ JavaScriptCore_Release - no tcmalloc.rules
+ JavaScriptCore_Purify.rules
+ JavaScriptCore.mk
+ JavaScriptCore_Debug_rules.mk
+ JavaScriptCore_Release_rules.mk
+ JavaScriptCore_Release - no tcmalloc_rules.mk
+ JavaScriptCore_Purify_rules.mk
+ JavaScriptCore.scons
+ JavaScriptCore_main.scons
-2008-11-06 Cameron Zwarich <zwarich@apple.com>
+ * JavaScriptCore.gyp: Changed property svn:ignore.
- Rubber-stamped by Sam Weinig.
+2009-09-24 Yong Li <yong.li@torchmobile.com>
- Move create_hash_table and jsc.pro out of the kjs directory and into the
- root directory of JavaScriptCore.
+ Reviewed by Adam Barth.
- * DerivedSources.make:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * create_hash_table: Copied from kjs/create_hash_table.
- * jsc.pro: Copied from kjs/jsc.pro.
- * kjs/create_hash_table: Removed.
- * kjs/jsc.pro: Removed.
- * make-generated-sources.sh:
+ Replace platform-dependent code with WTF::currentTime()
+ https://bugs.webkit.org/show_bug.cgi?id=29148
-2008-11-05 Gavin Barraclough <barraclough@apple.com>
+ * jsc.cpp:
+ (StopWatch::start):
+ (StopWatch::stop):
+ (StopWatch::getElapsedMS):
+ * runtime/TimeoutChecker.cpp:
+ (JSC::getCPUTime):
- Reviewed by Maciej Stachowiak.
+2009-09-24 Mark Rowe <mrowe@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=22094
+ Reviewed by Sam Weinig.
- Fix for bug where the callee incorrectly recieves the caller's lexical
- global object as this, rather than its own. Implementation closely
- follows the spec, passing jsNull, checking in the callee and replacing
- with the global object where necessary.
+ <rdar://problem/7215058> FastMalloc scavenging thread should be named
- * VM/CTI.cpp:
- (JSC::CTI::compileOpCall):
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_call_NotJSFunction):
- (JSC::Machine::cti_op_call_eval):
- * runtime/JSCell.h:
- (JSC::JSValue::toThisObject):
- * runtime/JSImmediate.cpp:
- (JSC::JSImmediate::toThisObject):
- * runtime/JSImmediate.h:
+ * wtf/FastMalloc.cpp:
+ (WTF::TCMalloc_PageHeap::scavengerThread): Set the thread name.
+ * wtf/Platform.h: Move the knowledge of whether pthread_setname_np exists to here as HAVE(PTHREAD_SETNAME_NP).
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::setThreadNameInternal): Use HAVE(PTHREAD_SETNAME_NP).
-2008-11-05 Kevin Ollivier <kevino@theolliviers.com>
+2009-09-24 Geoffrey Garen <ggaren@apple.com>
- wx build fix after Operations.cpp move.
+ Reviewed by Sam Weinig.
- * JavaScriptCoreSources.bkl:
+ Renamed clear to removeAll, as suggested by Darin Adler.
-2008-11-05 Cameron Zwarich <zwarich@apple.com>
+ * wtf/HashCountedSet.h:
+ (WTF::::removeAll):
- Not reviewed.
+2009-09-24 Mark Rowe <mrowe@apple.com>
- Fix the build for case-sensitive build systems and wxWindows.
+ Reviewed by Gavin Barraclough.
- * JavaScriptCoreSources.bkl:
- * kjs/create_hash_table:
+ Fix FastMalloc to build with assertions enabled.
-2008-11-05 Cameron Zwarich <zwarich@apple.com>
+ * wtf/FastMalloc.cpp:
+ (WTF::TCMalloc_Central_FreeList::ReleaseToSpans):
+ * wtf/TCSpinLock.h:
+ (TCMalloc_SpinLock::IsHeld):
- Not reviewed.
+2009-09-24 Geoffrey Garen <ggaren@apple.com>
- Fix the build for case-sensitive build systems.
+ Suggested by Darin Adler.
- * JavaScriptCoreSources.bkl:
- * kjs/Shell.cpp:
- * runtime/Interpreter.cpp:
- * runtime/JSArray.cpp:
+ Removed some unnecessary parameter names.
-2008-11-05 Cameron Zwarich <zwarich@apple.com>
+ * wtf/HashCountedSet.h:
- Not reviewed.
+2009-09-24 Janne Koskinen <janne.p.koskinen@digia.com>
- Fix the build for case-sensitive build systems.
+ Reviewed by Simon Hausmann.
- * API/JSBase.cpp:
- * API/JSObjectRef.cpp:
- * runtime/CommonIdentifiers.h:
- * runtime/Identifier.cpp:
- * runtime/InitializeThreading.cpp:
- * runtime/InternalFunction.h:
- * runtime/JSString.h:
- * runtime/Lookup.h:
- * runtime/PropertyNameArray.h:
- * runtime/PropertySlot.h:
- * runtime/StructureID.cpp:
- * runtime/StructureID.h:
- * runtime/UString.cpp:
+ On Windows JSChar is typedef'ed to wchar_t.
-2008-11-05 Cameron Zwarich <zwarich@apple.com>
+ When building with WINSCW for Symbian we need to do the
+ same typedef.
- Rubber-stamped by Sam Weinig.
+ * API/JSStringRef.h:
- Move more files to the runtime subdirectory of JavaScriptCore.
+2009-09-23 Geoffrey Garen <ggaren@apple.com>
- * API/APICast.h:
- * API/JSBase.cpp:
- * API/JSCallbackObject.cpp:
- * API/JSClassRef.cpp:
- * API/JSClassRef.h:
- * API/JSStringRefCF.cpp:
- * API/JSValueRef.cpp:
- * API/OpaqueJSString.cpp:
- * API/OpaqueJSString.h:
- * AllInOneFile.cpp:
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/CodeBlock.h:
- * VM/CodeGenerator.cpp:
- * VM/Machine.cpp:
- * VM/RegisterFile.h:
- * debugger/Debugger.h:
- * kjs/SourceProvider.h:
- * kjs/TypeInfo.h: Removed.
- * kjs/collector.cpp: Removed.
- * kjs/collector.h: Removed.
- * kjs/completion.h: Removed.
- * kjs/create_hash_table:
- * kjs/identifier.cpp: Removed.
- * kjs/identifier.h: Removed.
- * kjs/interpreter.cpp: Removed.
- * kjs/interpreter.h: Removed.
- * kjs/lexer.cpp:
- * kjs/lexer.h:
- * kjs/lookup.cpp: Removed.
- * kjs/lookup.h: Removed.
- * kjs/nodes.cpp:
- * kjs/nodes.h:
- * kjs/operations.cpp: Removed.
- * kjs/operations.h: Removed.
- * kjs/protect.h: Removed.
- * kjs/regexp.cpp: Removed.
- * kjs/regexp.h: Removed.
- * kjs/ustring.cpp: Removed.
- * kjs/ustring.h: Removed.
- * pcre/pcre_exec.cpp:
- * profiler/CallIdentifier.h:
- * profiler/Profile.h:
- * runtime/ArrayConstructor.cpp:
- * runtime/ArrayPrototype.cpp:
- * runtime/ArrayPrototype.h:
- * runtime/Collector.cpp: Copied from kjs/collector.cpp.
- * runtime/Collector.h: Copied from kjs/collector.h.
- * runtime/CollectorHeapIterator.h:
- * runtime/Completion.h: Copied from kjs/completion.h.
- * runtime/ErrorPrototype.cpp:
- * runtime/Identifier.cpp: Copied from kjs/identifier.cpp.
- * runtime/Identifier.h: Copied from kjs/identifier.h.
- * runtime/InitializeThreading.cpp:
- * runtime/Interpreter.cpp: Copied from kjs/interpreter.cpp.
- * runtime/Interpreter.h: Copied from kjs/interpreter.h.
- * runtime/JSCell.h:
- * runtime/JSGlobalData.cpp:
- * runtime/JSGlobalData.h:
- * runtime/JSLock.cpp:
- * runtime/JSNumberCell.cpp:
- * runtime/JSNumberCell.h:
- * runtime/JSObject.cpp:
- * runtime/JSValue.h:
- * runtime/Lookup.cpp: Copied from kjs/lookup.cpp.
- * runtime/Lookup.h: Copied from kjs/lookup.h.
- * runtime/MathObject.cpp:
- * runtime/NativeErrorPrototype.cpp:
- * runtime/NumberPrototype.cpp:
- * runtime/Operations.cpp: Copied from kjs/operations.cpp.
- * runtime/Operations.h: Copied from kjs/operations.h.
- * runtime/PropertyMapHashTable.h:
- * runtime/Protect.h: Copied from kjs/protect.h.
- * runtime/RegExp.cpp: Copied from kjs/regexp.cpp.
- * runtime/RegExp.h: Copied from kjs/regexp.h.
- * runtime/RegExpConstructor.cpp:
- * runtime/RegExpObject.h:
- * runtime/RegExpPrototype.cpp:
- * runtime/SmallStrings.h:
- * runtime/StringObjectThatMasqueradesAsUndefined.h:
- * runtime/StructureID.cpp:
- * runtime/StructureID.h:
- * runtime/StructureIDTransitionTable.h:
- * runtime/SymbolTable.h:
- * runtime/TypeInfo.h: Copied from kjs/TypeInfo.h.
- * runtime/UString.cpp: Copied from kjs/ustring.cpp.
- * runtime/UString.h: Copied from kjs/ustring.h.
- * wrec/CharacterClassConstructor.h:
- * wrec/WREC.h:
+ A piece of my last patch that I forgot.
-2008-11-05 Geoffrey Garen <ggaren@apple.com>
+ * wtf/HashCountedSet.h:
+ (WTF::::clear): Added HashCountedSet::clear.
- Suggested by Darin Adler.
-
- Removed two copy constructors that the compiler can generate for us
- automatically.
+2009-09-24 Gabor Loki <loki@inf.u-szeged.hu>
- * VM/LabelID.h:
- (JSC::LabelID::setLocation):
- (JSC::LabelID::offsetFrom):
- (JSC::LabelID::ref):
- (JSC::LabelID::refCount):
- * kjs/LabelScope.h:
+ Reviewed by Gavin Barraclough.
-2008-11-05 Anders Carlsson <andersca@apple.com>
+ Avoid __clear_cache built-in function if DISABLE_BUILTIN_CLEAR_CACHE define is set
+ https://bugs.webkit.org/show_bug.cgi?id=28886
- Fix Snow Leopard build.
-
- * JavaScriptCore.xcodeproj/project.pbxproj:
+ There are some GCC packages (for example GCC-2006q3 from CodeSourcery)
+ which contain __clear_cache built-in function only for C while the C++
+ version of __clear_cache is missing on ARM architectures.
-2008-11-04 Cameron Zwarich <zwarich@apple.com>
+ Fixed a small bug in the inline assembly of cacheFlush function on
+ ARM_TRADITIONAL.
- Rubber-stamped by Steve Falkenburg.
+ * jit/ExecutableAllocator.h:
+ (JSC::ExecutableAllocator::cacheFlush):
- Move dtoa.cpp and dtoa.h to the WTF Visual Studio project to reflect
- their movement in the filesystem.
+2009-09-23 Geoffrey Garen <ggaren@apple.com>
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
+ Reviewed by Sam Weinig.
-2008-11-04 Cameron Zwarich <zwarich@apple.com>
+ Added the ability to swap vectors with inline capacities, so you can
+ store a vector with inline capacity in a hash table.
- Rubber-stamped by Sam Weinig.
+ * wtf/Vector.h:
+ (WTF::swap):
+ (WTF::VectorBuffer::swap):
- Move kjs/dtoa.h to the wtf subdirectory of JavaScriptCore.
+2009-09-23 David Kilzer <ddkilzer@apple.com>
- * AllInOneFile.cpp:
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * kjs/dtoa.cpp: Removed.
- * kjs/dtoa.h: Removed.
- * wtf/dtoa.cpp: Copied from kjs/dtoa.cpp.
- * wtf/dtoa.h: Copied from kjs/dtoa.h.
+ Move definition of USE(PLUGIN_HOST_PROCESS) from WebKitPrefix.h to Platform.h
-2008-11-04 Cameron Zwarich <zwarich@apple.com>
+ Reviewed by Mark Rowe.
- Rubber-stamped by Sam Weinig.
+ * wtf/Platform.h: Define WTF_USE_PLUGIN_HOST_PROCESS to 1 when
+ building on 64-bit SnowLeopard. Define to 0 elsewhere.
- Move kjs/config.h to the top level of JavaScriptCore.
+2009-09-22 Oliver Hunt <oliver@apple.com>
- * GNUmakefile.am:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * config.h: Copied from kjs/config.h.
- * kjs/config.h: Removed.
+ Reviewed by Geoff Garen.
-2008-11-04 Darin Adler <darin@apple.com>
+ Code sampling builds are broken.
+ https://bugs.webkit.org/show_bug.cgi?id=29662
- Reviewed by Tim Hatcher.
+ Fix build.
- * wtf/ThreadingNone.cpp: Tweak formatting.
+ * bytecode/EvalCodeCache.h:
+ (JSC::EvalCodeCache::get):
+ * bytecode/SamplingTool.cpp:
+ (JSC::ScriptSampleRecord::sample):
+ (JSC::SamplingTool::doRun):
+ (JSC::SamplingTool::notifyOfScope):
+ (JSC::compareScriptSampleRecords):
+ (JSC::SamplingTool::dump):
+ * bytecode/SamplingTool.h:
+ (JSC::ScriptSampleRecord::ScriptSampleRecord):
+ (JSC::ScriptSampleRecord::~ScriptSampleRecord):
+ (JSC::SamplingTool::SamplingTool):
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::BytecodeGenerator):
+ (JSC::BytecodeGenerator::emitNewFunction):
+ (JSC::BytecodeGenerator::emitNewFunctionExpression):
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::makeFunction):
+ * debugger/Debugger.cpp:
+ (JSC::evaluateInGlobalCallFrame):
+ * debugger/DebuggerCallFrame.cpp:
+ (JSC::DebuggerCallFrame::evaluate):
+ * parser/Nodes.cpp:
+ (JSC::ScopeNode::ScopeNode):
+ * runtime/Completion.cpp:
+ (JSC::checkSyntax):
+ (JSC::evaluate):
+ * runtime/Executable.cpp:
+ (JSC::FunctionExecutable::fromGlobalCode):
+ * runtime/Executable.h:
+ (JSC::ScriptExecutable::ScriptExecutable):
+ (JSC::EvalExecutable::EvalExecutable):
+ (JSC::EvalExecutable::create):
+ (JSC::ProgramExecutable::ProgramExecutable):
+ (JSC::FunctionExecutable::create):
+ (JSC::FunctionExecutable::FunctionExecutable):
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncEval):
-2008-11-03 Darin Adler <darin@apple.com>
+2009-09-22 Darin Adler <darin@apple.com>
- Reviewed by Tim Hatcher.
+ Reviewed by Sam Weinig.
- - https://bugs.webkit.org/show_bug.cgi?id=22061
- create script to check for exit-time destructors
+ * wtf/Forward.h: Added PassOwnPtr.
- * JavaScriptCore.exp: Changed to export functions rather than
- a global for the atomically initialized static mutex.
+2009-09-22 Yaar Schnitman <yaar@chromium.org>
- * JavaScriptCore.xcodeproj/project.pbxproj: Added a script
- phase that runs the check-for-exit-time-destructors script.
+ Reviewed by David Levin.
- * wtf/MainThread.cpp:
- (WTF::mainThreadFunctionQueueMutex): Changed to leak an object
- rather than using an exit time destructor.
- (WTF::functionQueue): Ditto.
- * wtf/unicode/icu/CollatorICU.cpp:
- (WTF::cachedCollatorMutex): Ditto.
+ Ported chromium.org's javascriptcore.gyp for the webkit chromium port.
- * wtf/Threading.h: Changed other platforms to share the Windows
- approach where the mutex is internal and the functions are exported.
- * wtf/ThreadingGtk.cpp:
- (WTF::lockAtomicallyInitializedStaticMutex): Ditto.
- (WTF::unlockAtomicallyInitializedStaticMutex): Ditto.
- * wtf/ThreadingNone.cpp:
- (WTF::lockAtomicallyInitializedStaticMutex): Ditto.
- (WTF::unlockAtomicallyInitializedStaticMutex): Ditto.
- * wtf/ThreadingPthreads.cpp:
- (WTF::threadMapMutex): Changed to leak an object rather than using
- an exit time destructor.
- (WTF::lockAtomicallyInitializedStaticMutex): Mutex change.
- (WTF::unlockAtomicallyInitializedStaticMutex): Ditto.
- (WTF::threadMap): Changed to leak an object rather than using
- an exit time destructor.
- * wtf/ThreadingQt.cpp:
- (WTF::lockAtomicallyInitializedStaticMutex): Mutex change.
- (WTF::unlockAtomicallyInitializedStaticMutex): Ditto.
- * wtf/ThreadingWin.cpp:
- (WTF::lockAtomicallyInitializedStaticMutex): Added an assertion.
+ https://bugs.webkit.org/show_bug.cgi?id=29617
-2008-11-04 Adam Roben <aroben@apple.com>
+ * JavaScriptCore.gyp/JavaScriptCore.gyp: Added.
- Windows build fix
+2009-09-22 Thiago Macieira <thiago.macieira@nokia.com>
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Update
- the location of JSStaticScopeObject.{cpp,h}.
+ Reviewed by Simon Hausmann.
-2008-11-04 Cameron Zwarich <zwarich@apple.com>
+ Fix compilation with WINSCW: no varargs macros
- Reviewed by Alexey Proskuryakov.
+ Disable variadic arguments for WINSCW just like we do
+ for MSVC7.
- Move AllInOneFile.cpp to the top level of JavaScriptCore.
+ * wtf/Assertions.h:
- * AllInOneFile.cpp: Copied from kjs/AllInOneFile.cpp.
- * GNUmakefile.am:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/AllInOneFile.cpp: Removed.
+2009-09-22 Kent Hansen <khansen@trolltech.com>
-2008-11-04 Cameron Zwarich <zwarich@apple.com>
+ Reviewed by Simon Hausmann.
- Rubber-stamped by Alexey Proskuryakov.
+ Disable variadic macros on MSVC7.
- Add NodeInfo.h to the JavaScriptCore Xcode project.
+ This was originally added in r26589 but not extended
+ when LOG_DISABLED/ASSERT_DISABLED was introduced.
- * JavaScriptCore.xcodeproj/project.pbxproj:
+ * wtf/Assertions.h:
-2008-11-03 Cameron Zwarich <zwarich@apple.com>
+2009-09-22 Simon Hausmann <simon.hausmann@nokia.com>
- Rubber-stamped by Maciej Stachowiak.
+ Unreviewed build fix for Windows CE < 5
- Move more files into the runtime subdirectory of JavaScriptCore.
+ Define WINCEBASIC to disable the IsDebuggerPresent() code in
+ wtf/Assertions.cpp.
- * API/JSBase.cpp:
- * API/JSCallbackConstructor.cpp:
- * API/JSCallbackFunction.cpp:
- * API/JSClassRef.cpp:
- * API/OpaqueJSString.cpp:
- * GNUmakefile.am:
* JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * kjs/AllInOneFile.cpp:
- * kjs/ArgList.cpp: Removed.
- * kjs/ArgList.h: Removed.
- * kjs/Arguments.cpp: Removed.
- * kjs/Arguments.h: Removed.
- * kjs/BatchedTransitionOptimizer.h: Removed.
- * kjs/CollectorHeapIterator.h: Removed.
- * kjs/CommonIdentifiers.cpp: Removed.
- * kjs/CommonIdentifiers.h: Removed.
- * kjs/ExecState.cpp: Removed.
- * kjs/ExecState.h: Removed.
- * kjs/GetterSetter.cpp: Removed.
- * kjs/GetterSetter.h: Removed.
- * kjs/InitializeThreading.cpp: Removed.
- * kjs/InitializeThreading.h: Removed.
- * kjs/JSActivation.cpp: Removed.
- * kjs/JSActivation.h: Removed.
- * kjs/JSGlobalData.cpp: Removed.
- * kjs/JSGlobalData.h: Removed.
- * kjs/JSLock.cpp: Removed.
- * kjs/JSLock.h: Removed.
- * kjs/JSStaticScopeObject.cpp: Removed.
- * kjs/JSStaticScopeObject.h: Removed.
- * kjs/JSType.h: Removed.
- * kjs/PropertyNameArray.cpp: Removed.
- * kjs/PropertyNameArray.h: Removed.
- * kjs/ScopeChain.cpp: Removed.
- * kjs/ScopeChain.h: Removed.
- * kjs/ScopeChainMark.h: Removed.
- * kjs/SymbolTable.h: Removed.
- * kjs/Tracing.d: Removed.
- * kjs/Tracing.h: Removed.
- * runtime/ArgList.cpp: Copied from kjs/ArgList.cpp.
- * runtime/ArgList.h: Copied from kjs/ArgList.h.
- * runtime/Arguments.cpp: Copied from kjs/Arguments.cpp.
- * runtime/Arguments.h: Copied from kjs/Arguments.h.
- * runtime/BatchedTransitionOptimizer.h: Copied from kjs/BatchedTransitionOptimizer.h.
- * runtime/CollectorHeapIterator.h: Copied from kjs/CollectorHeapIterator.h.
- * runtime/CommonIdentifiers.cpp: Copied from kjs/CommonIdentifiers.cpp.
- * runtime/CommonIdentifiers.h: Copied from kjs/CommonIdentifiers.h.
- * runtime/ExecState.cpp: Copied from kjs/ExecState.cpp.
- * runtime/ExecState.h: Copied from kjs/ExecState.h.
- * runtime/GetterSetter.cpp: Copied from kjs/GetterSetter.cpp.
- * runtime/GetterSetter.h: Copied from kjs/GetterSetter.h.
- * runtime/InitializeThreading.cpp: Copied from kjs/InitializeThreading.cpp.
- * runtime/InitializeThreading.h: Copied from kjs/InitializeThreading.h.
- * runtime/JSActivation.cpp: Copied from kjs/JSActivation.cpp.
- * runtime/JSActivation.h: Copied from kjs/JSActivation.h.
- * runtime/JSGlobalData.cpp: Copied from kjs/JSGlobalData.cpp.
- * runtime/JSGlobalData.h: Copied from kjs/JSGlobalData.h.
- * runtime/JSLock.cpp: Copied from kjs/JSLock.cpp.
- * runtime/JSLock.h: Copied from kjs/JSLock.h.
- * runtime/JSStaticScopeObject.cpp: Copied from kjs/JSStaticScopeObject.cpp.
- * runtime/JSStaticScopeObject.h: Copied from kjs/JSStaticScopeObject.h.
- * runtime/JSType.h: Copied from kjs/JSType.h.
- * runtime/PropertyNameArray.cpp: Copied from kjs/PropertyNameArray.cpp.
- * runtime/PropertyNameArray.h: Copied from kjs/PropertyNameArray.h.
- * runtime/ScopeChain.cpp: Copied from kjs/ScopeChain.cpp.
- * runtime/ScopeChain.h: Copied from kjs/ScopeChain.h.
- * runtime/ScopeChainMark.h: Copied from kjs/ScopeChainMark.h.
- * runtime/SymbolTable.h: Copied from kjs/SymbolTable.h.
- * runtime/Tracing.d: Copied from kjs/Tracing.d.
- * runtime/Tracing.h: Copied from kjs/Tracing.h.
-
-2008-11-03 Sam Weinig <sam@webkit.org>
- Reviewed by Mark Rowe.
+2009-09-22 Joerg Bornemann <joerg.bornemann@nokia.com>
- Move #define to turn on dumping StructureID statistics to StructureID.cpp so that
- turning it on does not require a full rebuild.
+ Reviewed by Simon Hausmann.
- * runtime/StructureID.cpp:
- (JSC::StructureID::dumpStatistics):
- * runtime/StructureID.h:
+ Fix major memory leak in JavaScriptCore RegisterFile on Windows CE
-2008-11-03 Alp Toker <alp@nuanti.com>
+ https://bugs.webkit.org/show_bug.cgi?id=29367
- Reviewed by Geoffrey Garen.
+ On Widows CE we must decommit all committed pages before we release
+ them. See VirtualFree documentation.
+ Desktop Windows behaves much smoother in this situation.
- Fix warning when building on Darwin without JSC_MULTIPLE_THREADS
- enabled.
+ * interpreter/RegisterFile.cpp:
+ (JSC::RegisterFile::~RegisterFile):
- * kjs/InitializeThreading.cpp:
+2009-09-21 Greg Bolsinga <bolsinga@apple.com>
-2008-11-02 Matt Lilek <webkit@mattlilek.com>
+ Reviewed by Simon Fraser & Sam Weinig.
- Reviewed by Cameron Zwarich.
+ Add ENABLE(ORIENTATION_EVENTS)
+ https://bugs.webkit.org/show_bug.cgi?id=29508
- Bug 22042: REGRESSION(r38066): ASSERTION FAILED: source in CodeBlock
- <https://bugs.webkit.org/show_bug.cgi?id=22042>
+ * wtf/Platform.h: Also sort PLATFORM(IPHONE) #defines.
- Rename parameter name to avoid ASSERT.
+2009-09-21 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
- * VM/CodeBlock.h:
- (JSC::CodeBlock::CodeBlock):
- (JSC::ProgramCodeBlock::ProgramCodeBlock):
- (JSC::EvalCodeBlock::EvalCodeBlock):
+ Reviewed by Eric Seidel.
+
+ [Fix] SourceCode's uninitialized member
+
+ Potential source of crashes and bugs was fixed. Default constructor
+ didn't initialized m_provider member.
-2008-11-02 Cameron Zwarich <zwarich@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=29364
- Reviewed by Oliver Hunt.
+ * parser/SourceCode.h:
+ (JSC::SourceCode::SourceCode):
- Bug 22035: Remove the '_' suffix on constructor parameter names for structs
- <https://bugs.webkit.org/show_bug.cgi?id=22035>
+2009-09-21 Oliver Hunt <oliver@apple.com>
- * API/JSCallbackObject.h:
- (JSC::JSCallbackObject::JSCallbackObjectData::JSCallbackObjectData):
- * VM/CodeBlock.h:
- (JSC::CodeBlock::CodeBlock):
- (JSC::ProgramCodeBlock::ProgramCodeBlock):
- (JSC::EvalCodeBlock::EvalCodeBlock):
- * wrec/WREC.h:
- (JSC::Quantifier::Quantifier):
+ Reviewed by Geoff Garen.
-2008-10-31 Cameron Zwarich <zwarich@apple.com>
+ REGRESSION (r48582): Crash in StructureStubInfo::initPutByIdTransition when reloading trac.webkit.org
+ https://bugs.webkit.org/show_bug.cgi?id=29599
- Rubber-stamped by Geoff Garen.
+ It is unsafe to attempt to cache new property transitions on
+ dictionaries of any type.
- Rename SourceRange.h to SourceCode.h.
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::tryCachePutByID):
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::tryCachePutByID):
- * API/JSBase.cpp:
- * GNUmakefile.am:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CodeBlock.h:
- * kjs/SourceCode.h: Copied from kjs/SourceRange.h.
- * kjs/SourceRange.h: Removed.
- * kjs/grammar.y:
- * kjs/lexer.h:
- * kjs/nodes.cpp:
- (JSC::ForInNode::ForInNode):
- * kjs/nodes.h:
- (JSC::ThrowableExpressionData::setExceptionSourceCode):
+2009-09-21 Oliver Hunt <oliver@apple.com>
+
+ RS=Maciej Stachowiak.
+
+ Re-land SNES fix with corrected assertion.
-2008-10-31 Cameron Zwarich <zwarich@apple.com>
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::resolveGlobal):
+ (JSC::Interpreter::tryCachePutByID):
+ (JSC::Interpreter::tryCacheGetByID):
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::tryCachePutByID):
+ (JSC::JITThunks::tryCacheGetByID):
+ (JSC::DEFINE_STUB_FUNCTION):
+ * runtime/BatchedTransitionOptimizer.h:
+ (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::removeDirect):
+ * runtime/Structure.cpp:
+ (JSC::Structure::Structure):
+ (JSC::Structure::getEnumerablePropertyNames):
+ (JSC::Structure::despecifyDictionaryFunction):
+ (JSC::Structure::addPropertyTransitionToExistingStructure):
+ (JSC::Structure::addPropertyTransition):
+ (JSC::Structure::removePropertyTransition):
+ (JSC::Structure::toDictionaryTransition):
+ (JSC::Structure::toCacheableDictionaryTransition):
+ (JSC::Structure::toUncacheableDictionaryTransition):
+ (JSC::Structure::fromDictionaryTransition):
+ (JSC::Structure::removePropertyWithoutTransition):
+ * runtime/Structure.h:
+ (JSC::Structure::isDictionary):
+ (JSC::Structure::isUncacheableDictionary):
+ (JSC::Structure::):
+ * runtime/StructureChain.cpp:
+ (JSC::StructureChain::isCacheable):
- Reviewed by Darin Adler.
+2009-09-21 Adam Roben <aroben@apple.com>
- Bug 22019: Move JSC::Interpreter::shouldPrintExceptions() to WebCore::Console
- <https://bugs.webkit.org/show_bug.cgi?id=22019>
+ Revert r48573, as it caused many assertion failures
- The JSC::Interpreter::shouldPrintExceptions() function is not used at
- all in JavaScriptCore, so it should be moved to WebCore::Console, its
- only user.
+ * interpreter/Interpreter.cpp:
+ * jit/JITStubs.cpp:
+ * runtime/BatchedTransitionOptimizer.h:
+ * runtime/JSObject.cpp:
+ * runtime/Structure.cpp:
+ * runtime/Structure.h:
+ * runtime/StructureChain.cpp:
- * JavaScriptCore.exp:
- * kjs/interpreter.cpp:
- * kjs/interpreter.h:
+2009-09-21 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-2008-10-31 Cameron Zwarich <zwarich@apple.com>
+ Unreviewed make dist build fix. Missing files.
- Not reviewed.
+ * GNUmakefile.am:
- Windows build fix.
+2009-09-19 Gavin Barraclough <barraclough@apple.com>
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ Reviewed by Sam 'Cabin Boy' Weinig.
-2008-10-31 Cameron Zwarich <zwarich@apple.com>
+ Fix stack alignment with ARM THUMB2 JIT.
+ https://bugs.webkit.org/show_bug.cgi?id=29526
+
+ Stack is currently being decremented by 0x3c, bump this to 0x40 to make this a
+ multiple of 16 bytes.
- Rubber-stamped by Sam Weinig.
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::JITThunks):
+ * jit/JITStubs.h:
- Remove the call to Interpreter::setShouldPrintExceptions() from the
- GlobalObject constructor in the shell. The shouldPrintExceptions()
- information is not used anywhere in JavaScriptCore, only in WebCore.
+2009-09-20 Oliver Hunt <oliver@apple.com>
- * kjs/Shell.cpp:
- (GlobalObject::GlobalObject):
+ Reviewed by Maciej Stachowiak.
-2008-10-31 Kevin Ollivier <kevino@theolliviers.com>
+ SNES is too slow
+ https://bugs.webkit.org/show_bug.cgi?id=29534
- wxMSW build fix.
+ The problem was that the emulator used multiple classes with
+ more properties than our dictionary cutoff allowed, this resulted
+ in more or less all critical logic inside the emulator requiring
+ uncached property access.
- * wtf/Threading.h:
+ Rather than simply bumping the dictionary cutoff, this patch
+ recognises that there are two ways to create a "dictionary"
+ structure. Either by adding a large number of properties, or
+ by removing a property. In the case of adding properties we
+ know all the existing properties will maintain their existing
+ offsets, so we could cache access to those properties, if we
+ know they won't be removed.
-2008-10-31 Cameron Zwarich <zwarich@apple.com>
+ To make this possible, this patch adds the logic required to
+ distinguish a dictionary created by addition from one created
+ by removal. With this logic in place we can now cache access
+ to objects with large numbers of properties.
- Rubber-stamped by Sam Weinig.
+ SNES performance improved by more than 6x.
- Move more files from the kjs subdirectory of JavaScriptCore to the
- runtime subdirectory.
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::resolveGlobal):
+ (JSC::Interpreter::tryCachePutByID):
+ (JSC::Interpreter::tryCacheGetByID):
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::tryCachePutByID):
+ (JSC::JITThunks::tryCacheGetByID):
+ (JSC::DEFINE_STUB_FUNCTION):
+ * runtime/BatchedTransitionOptimizer.h:
+ (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::removeDirect):
+ * runtime/Structure.cpp:
+ (JSC::Structure::Structure):
+ (JSC::Structure::getEnumerablePropertyNames):
+ (JSC::Structure::despecifyDictionaryFunction):
+ (JSC::Structure::addPropertyTransitionToExistingStructure):
+ (JSC::Structure::addPropertyTransition):
+ (JSC::Structure::removePropertyTransition):
+ (JSC::Structure::toDictionaryTransition):
+ (JSC::Structure::toCacheableDictionaryTransition):
+ (JSC::Structure::toUncacheableDictionaryTransition):
+ (JSC::Structure::fromDictionaryTransition):
+ (JSC::Structure::removePropertyWithoutTransition):
+ * runtime/Structure.h:
+ (JSC::Structure::isDictionary):
+ (JSC::Structure::isUncacheableDictionary):
+ (JSC::Structure::):
+ * runtime/StructureChain.cpp:
+ (JSC::StructureChain::isCacheable):
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * kjs/AllInOneFile.cpp:
- * kjs/RegExpConstructor.cpp: Removed.
- * kjs/RegExpConstructor.h: Removed.
- * kjs/RegExpMatchesArray.h: Removed.
- * kjs/RegExpObject.cpp: Removed.
- * kjs/RegExpObject.h: Removed.
- * kjs/RegExpPrototype.cpp: Removed.
- * kjs/RegExpPrototype.h: Removed.
- * runtime/RegExpConstructor.cpp: Copied from kjs/RegExpConstructor.cpp.
- * runtime/RegExpConstructor.h: Copied from kjs/RegExpConstructor.h.
- * runtime/RegExpMatchesArray.h: Copied from kjs/RegExpMatchesArray.h.
- * runtime/RegExpObject.cpp: Copied from kjs/RegExpObject.cpp.
- * runtime/RegExpObject.h: Copied from kjs/RegExpObject.h.
- * runtime/RegExpPrototype.cpp: Copied from kjs/RegExpPrototype.cpp.
- * runtime/RegExpPrototype.h: Copied from kjs/RegExpPrototype.h.
+2009-09-19 Oliver Hunt <oliver@apple.com>
-2008-10-31 Mark Rowe <mrowe@apple.com>
+ Reviewed by Maciej Stachowiak.
- Revert an incorrect portion of r38034.
+ Implement ES5 Object.create function
+ https://bugs.webkit.org/show_bug.cgi?id=29524
- * profiler/ProfilerServer.mm:
+ Implement Object.create. Very simple patch, effectively Object.defineProperties
+ only creating the target object itself.
-2008-10-31 Mark Rowe <mrowe@apple.com>
+ * runtime/CommonIdentifiers.h:
+ * runtime/ObjectConstructor.cpp:
+ (JSC::ObjectConstructor::ObjectConstructor):
+ (JSC::objectConstructorCreate):
- Fix the 64-bit build.
+2009-09-19 Dan Bernstein <mitz@apple.com>
- Disable strict aliasing in ProfilerServer.mm as it leads to the compiler being unhappy
- with the common Obj-C idiom self = [super init];
+ Fix clean debug builds.
- * JavaScriptCore.xcodeproj/project.pbxproj:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
-2008-10-31 Cameron Zwarich <zwarich@apple.com>
+2009-09-19 Joerg Bornemann <joerg.bornemann@nokia.com>
- Reviewed by Alexey Proskuryakov.
+ Reviewed by George Staikos.
- Change a header guard to match our coding style.
+ QtWebKit Windows CE compile fix
- * kjs/InitializeThreading.h:
+ https://bugs.webkit.org/show_bug.cgi?id=29379
-2008-10-30 Geoffrey Garen <ggaren@apple.com>
+ There is no _aligned_alloc or _aligned_free on Windows CE.
+ We just use the Windows code that was there before and use VirtualAlloc.
+ But that also means that the BLOCK_SIZE must be 64K as this function
+ allocates on 64K boundaries.
- Reviewed by Oliver Hunt.
-
- Fixed a small bit of https://bugs.webkit.org/show_bug.cgi?id=21962
- AST uses way too much memory
-
- Removed a word from StatementNode by nixing LabelStack and turning it
- into a compile-time data structure managed by CodeGenerator.
-
- v8 tests and SunSpider, run by Gavin, report no change.
+ * runtime/Collector.cpp:
+ (JSC::Heap::allocateBlock):
+ (JSC::Heap::freeBlock):
+ * runtime/Collector.h:
- * GNUmakefile.am:
- * JavaScriptCore.order:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/AllInOneFile.cpp:
- * JavaScriptCoreSources.bkl: I sure hope this builds!
-
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::CodeGenerator):
- (JSC::CodeGenerator::newLabelScope):
- (JSC::CodeGenerator::breakTarget):
- (JSC::CodeGenerator::continueTarget):
- * VM/CodeGenerator.h: Nixed the JumpContext system because it depended
- on a LabelStack in the AST, and it was a little cumbersome on the client
- side. Replaced with LabelScope, which tracks all break / continue
- information in the CodeGenerator, just like we track LabelIDs and other
- stacks of compile-time data.
-
- * kjs/LabelScope.h: Added.
- (JSC::LabelScope::):
- (JSC::LabelScope::LabelScope):
- (JSC::LabelScope::ref):
- (JSC::LabelScope::deref):
- (JSC::LabelScope::refCount):
- (JSC::LabelScope::breakTarget):
- (JSC::LabelScope::continueTarget):
- (JSC::LabelScope::type):
- (JSC::LabelScope::name):
- (JSC::LabelScope::scopeDepth): Simple abstraction for holding everything
- you might want to know about a break-able / continue-able scope.
-
- * kjs/LabelStack.cpp: Removed.
- * kjs/LabelStack.h: Removed.
-
- * kjs/grammar.y: No need to push labels at parse time -- we don't store
- LabelStacks in the AST anymore.
-
- * kjs/nodes.cpp:
- (JSC::DoWhileNode::emitCode):
- (JSC::WhileNode::emitCode):
- (JSC::ForNode::emitCode):
- (JSC::ForInNode::emitCode):
- (JSC::ContinueNode::emitCode):
- (JSC::BreakNode::emitCode):
- (JSC::SwitchNode::emitCode):
- (JSC::LabelNode::emitCode):
- * kjs/nodes.h:
- (JSC::StatementNode::):
- (JSC::LabelNode::): Use LabelScope where we used to use JumpContext.
- Simplified a bunch of code. Touched up label-related error messages a
- bit.
-
- * kjs/nodes2string.cpp:
- (JSC::LabelNode::streamTo): Updated for rename.
-
-2008-10-31 Cameron Zwarich <zwarich@apple.com>
+2009-09-19 Oliver Hunt <oliver@apple.com>
- Reviewed by Darin Adler.
+ Reviewed by Sam Weinig.
- Bug 22005: Move StructureIDChain into its own file
- <https://bugs.webkit.org/show_bug.cgi?id=22005>
+ Implement ES5 Object.defineProperties function
+ https://bugs.webkit.org/show_bug.cgi?id=29522
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * runtime/StructureID.cpp:
- * runtime/StructureID.h:
- * runtime/StructureIDChain.cpp: Copied from runtime/StructureID.cpp.
- * runtime/StructureIDChain.h: Copied from runtime/StructureID.h.
+ Implement Object.defineProperties. Fairly simple patch, simply makes use of
+ existing functionality used for defineProperty.
-2008-10-31 Steve Falkenburg <sfalken@apple.com>
+ * runtime/CommonIdentifiers.h:
+ * runtime/ObjectConstructor.cpp:
+ (JSC::ObjectConstructor::ObjectConstructor):
+ (JSC::defineProperties):
+ (JSC::objectConstructorDefineProperties):
- Build fix.
+2009-09-19 Oliver Hunt <oliver@apple.com>
- * JavaScriptCore.vcproj/jsc/jsc.vcproj:
+ Reviewed by NOBODY (Build fix).
-2008-10-31 Steve Falkenburg <sfalken@apple.com>
+ Windows build fix part2
- Build fix.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+2009-09-19 Oliver Hunt <oliver@apple.com>
-2008-10-31 Darin Adler <darin@apple.com>
+ Reviewed by NOBODY (Buildfix).
- Reviewed by Dan Bernstein.
+ Windows build fix part 1.
- - fix storage leak seen on buildbot
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Some other cleanup too. The storage leak was caused by the fact
- that HashTraits<CallIdentifier>::needsDestruction was false, so
- the call identifier objects didn't get deleted.
+2009-09-18 Oliver Hunt <oliver@apple.com>
- * profiler/CallIdentifier.h:
-
- Added a default constructor to create empty call identifiers.
+ Reviewed by Geoff Garen.
- Changed the normal constructor to use const UString&
- to avoid extra copying and reference count thrash.
-
- Removed the explicit copy constructor definition, since it's what
- the compiler will automatically generate. (Rule of thumb: Either
- you need both a custom copy constructor and a custom assignment
- operator, or neither.)
+ Implement ES5 Object.defineProperty function
+ https://bugs.webkit.org/show_bug.cgi?id=29503
- Moved the CallIdentifier hash function out of the WTF namespace;
- there's no reason to put it there.
+ Implement Object.defineProperty. This requires adding the API to
+ ObjectConstructor, along with a helper function that implements the
+ ES5 internal [[ToPropertyDescriptor]] function. It then adds
+ JSObject::defineOwnProperty that implements the appropriate ES5 semantics.
+ Currently defineOwnProperty uses a delete followed by a put to redefine
+ attributes of a property, clearly this is less efficient than it could be
+ but we can improve this if it needs to be possible in future.
- Changed the CallIdentifier hash function to be a struct rather than
- a specialization of the IntHash struct template. Having it be
- a specialization made no sense, since CallIdentifier is not an integer,
- and did no good.
+ * JavaScriptCore.exp:
+ * debugger/DebuggerActivation.cpp:
+ (JSC::DebuggerActivation::defineGetter):
+ (JSC::DebuggerActivation::defineSetter):
+ * debugger/DebuggerActivation.h:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ * jit/JITStubs.cpp:
+ Update defineGetter/Setter calls
+ * runtime/CommonIdentifiers.h:
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::getOwnPropertySlot):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::defineGetter):
+ (JSC::JSGlobalObject::defineSetter):
+ * runtime/JSGlobalObject.h:
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::defineGetter):
+ (JSC::JSObject::defineSetter):
+ (JSC::putDescriptor):
+ (JSC::JSObject::defineOwnProperty):
+ * runtime/JSObject.h:
+ * runtime/ObjectConstructor.cpp:
+ (JSC::ObjectConstructor::ObjectConstructor):
+ (JSC::objectConstructorGetOwnPropertyDescriptor):
+ (JSC::toPropertyDescriptor):
+ (JSC::objectConstructorDefineProperty):
+ * runtime/ObjectPrototype.cpp:
+ (JSC::objectProtoFuncDefineGetter):
+ (JSC::objectProtoFuncDefineSetter):
+ * runtime/PropertyDescriptor.cpp:
+ (JSC::PropertyDescriptor::writable):
+ (JSC::PropertyDescriptor::enumerable):
+ (JSC::PropertyDescriptor::configurable):
+ (JSC::PropertyDescriptor::isDataDescriptor):
+ (JSC::PropertyDescriptor::isGenericDescriptor):
+ (JSC::PropertyDescriptor::isAccessorDescriptor):
+ (JSC::PropertyDescriptor::getter):
+ (JSC::PropertyDescriptor::setter):
+ (JSC::PropertyDescriptor::setDescriptor):
+ (JSC::PropertyDescriptor::setAccessorDescriptor):
+ (JSC::PropertyDescriptor::setWritable):
+ (JSC::PropertyDescriptor::setEnumerable):
+ (JSC::PropertyDescriptor::setConfigurable):
+ (JSC::PropertyDescriptor::setSetter):
+ (JSC::PropertyDescriptor::setGetter):
+ (JSC::PropertyDescriptor::equalTo):
+ (JSC::PropertyDescriptor::attributesEqual):
+ (JSC::PropertyDescriptor::attributesWithOverride):
+ * runtime/PropertyDescriptor.h:
+ (JSC::PropertyDescriptor::PropertyDescriptor):
+ (JSC::PropertyDescriptor::value):
+ (JSC::PropertyDescriptor::setValue):
+ (JSC::PropertyDescriptor::isEmpty):
+ (JSC::PropertyDescriptor::writablePresent):
+ (JSC::PropertyDescriptor::enumerablePresent):
+ (JSC::PropertyDescriptor::configurablePresent):
+ (JSC::PropertyDescriptor::setterPresent):
+ (JSC::PropertyDescriptor::getterPresent):
+ (JSC::PropertyDescriptor::operator==):
+ (JSC::PropertyDescriptor::):
+
+2009-09-18 Gabor Loki <loki@inf.u-szeged.hu>
- Removed explicit definition of emptyValueIsZero in the hash traits,
- since inheriting from GenericHashTraits already makes that false.
+ Reviewed by Gavin Barraclough.
- Removed explicit definition of emptyValue, instead relying on the
- default constructor and GenericHashTraits.
+ Build fix to enable ARM_THUMB2 on Linux
+ https://bugs.webkit.org/show_bug.cgi?id=
- Removed explicit definition of needsDestruction, because we want it
- to have its default value: true, not false. This fixes the leak!
+ * jit/ExecutableAllocator.h:
+ (JSC::ExecutableAllocator::cacheFlush):
+ * jit/JITStubs.cpp:
+ * wtf/Platform.h:
- Changed constructDeletedValue and isDeletedValue to use a line number
- of numeric_limits<unsigned>::max() to indicate a value is deleted.
- Previously this used empty strings for the empty value and null strings
- for the deleted value, but it's more efficient to use null for both.
+2009-09-18 Gabor Loki <loki@inf.u-szeged.hu>
-2008-10-31 Timothy Hatcher <timothy@apple.com>
+ Reviewed by Gavin Barraclough.
- Emit the WillExecuteStatement debugger hook before the for loop body
- when the statement node for the body isn't a block. This allows
- breakpoints on those statements in the Web Inspector.
+ Defines two pseudo-platforms for ARM and Thumb-2 instruction set.
+ https://bugs.webkit.org/show_bug.cgi?id=29122
- https://bugs.webkit.org/show_bug.cgi?id=22004
+ Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2
+ macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used
+ when Thumb-2 instruction set is the required target. The
+ PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In
+ case where the code is common the PLATFORM(ARM) have to be used.
- Reviewed by Darin Adler.
+ * assembler/ARMAssembler.cpp:
+ * assembler/ARMAssembler.h:
+ * assembler/ARMv7Assembler.h:
+ * assembler/MacroAssembler.h:
+ * assembler/MacroAssemblerARM.cpp:
+ * assembler/MacroAssemblerARM.h:
+ * assembler/MacroAssemblerCodeRef.h:
+ (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
+ * jit/ExecutableAllocator.h:
+ * jit/JIT.h:
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::beginUninterruptedSequence):
+ (JSC::JIT::preserveReturnAddressAfterCall):
+ (JSC::JIT::restoreReturnAddressBeforeReturn):
+ (JSC::JIT::restoreArgumentReference):
+ (JSC::JIT::restoreArgumentReferenceForTrampoline):
+ * jit/JITOpcodes.cpp:
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::JITThunks):
+ * jit/JITStubs.h:
+ * wtf/Platform.h:
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::generateEnter):
- * kjs/nodes.cpp:
- (JSC::ForNode::emitCode): Emit the WillExecuteStatement
- debugger hook before the statement node if isn't a block.
- Also emit the WillExecuteStatement debugger hook for the
- loop as the first op-code.
- (JSC::ForInNode::emitCode): Ditto.
+2009-09-18 Joerg Bornemann <joerg.bornemann@nokia.com>
-2008-10-31 Timothy Hatcher <timothy@apple.com>
+ Reviewed by Simon Hausmann.
- Fixes console warnings about not having an autorelease pool.
- Also fixes the build for Snow Leopard, by including individual
- Foundation headers instead of Foundation.h.
+ Fix the Qt/Windows CE build.
- https://bugs.webkit.org/show_bug.cgi?id=21995
+ * JavaScriptCore.pri: Build the ce_time.cpp functions from
+ within Qt externally.
+ * wtf/DateMath.cpp: Removed unnecessary Qt #ifdef, for the
+ Qt build these functions are no external, too.
- Reviewed by Oliver Hunt.
+2009-09-17 Janne Koskinen <janne.p.koskinen@digia.com>
- * profiler/ProfilerServer.mm:
- (-[ProfilerServer init]): Create a NSAutoreleasePool and drain it.
+ Reviewed by Simon Hausmann.
-2008-10-31 Cameron Zwarich <zwarich@apple.com>
+ Symbian/WINSCW build fox.
- Not reviewed.
+ Repeat Q_OS_WIN wchar_t hack for WINSCW, similar to
+ revision 24774.
- Speculative wxWindows build fix.
+ WINSCW defines wchar_t, thus UChar has to be wchar_t
- * JavaScriptCoreSources.bkl:
- * jscore.bkl:
+ * wtf/unicode/qt4/UnicodeQt4.h:
-2008-10-31 Cameron Zwarich <zwarich@apple.com>
+2009-09-17 Janne Koskinen <janne.p.koskinen@digia.com>
- Rubber-stamped by Maciej Stachowiak.
+ Reviewed by Simon Hausmann.
- Move VM/JSPropertyNameIterator.cpp and VM/JSPropertyNameIterator.h to
- the runtime directory.
+ Symbian/WINSCW build fix.
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * VM/JSPropertyNameIterator.cpp: Removed.
- * VM/JSPropertyNameIterator.h: Removed.
- * runtime/JSPropertyNameIterator.cpp: Copied from VM/JSPropertyNameIterator.cpp.
- * runtime/JSPropertyNameIterator.h: Copied from VM/JSPropertyNameIterator.h.
+ https://bugs.webkit.org/show_bug.cgi?id=29186
-2008-10-31 Cameron Zwarich <zwarich@apple.com>
+ WINSCW Template specialisation name in declaration must the be the same as in implementation.
- Not reviewed.
+ * runtime/LiteralParser.h:
- Speculative wxWindows build fix.
+2009-09-15 Norbert Leser <norbert.leser@nokia.com>
- * jscore.bkl:
+ Reviewed by Darin Adler.
-2008-10-30 Mark Rowe <mrowe@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=27060
- Reviewed by Jon Homeycutt.
+ Symbian compiler for emulator target (WINSCW) fails with
+ "illegal operand" for m_attributesInPrevious in structure.ccp
+ (when calling make_pair functions).
+ This error is apparently due to the compiler not properly
+ resolving the unsigned type of the declared bitfield.
- Explicitly default to building for only the native architecture in debug and release builds.
+ Initial patch explicitly casted m_attributesInPrevious
+ to unsigned, but since bitfield optimization is not critical for
+ the emulator target, this conditional change in header file
+ appears to be least intrusive.
- * Configurations/DebugRelease.xcconfig:
+ * runtime/Structure.h:
-2008-10-30 Cameron Zwarich <zwarich@apple.com>
+2009-09-16 Gabor Loki <loki@inf.u-szeged.hu>
- Rubber-stamped by Sam Weinig.
+ Reviewed by Darin Adler.
- Create a debugger directory in JavaScriptCore and move the relevant
- files to it.
+ Fix GCC warnings on ARM_THUMB2 platform
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CodeBlock.cpp:
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- * debugger: Added.
- * debugger/Debugger.cpp: Copied from kjs/debugger.cpp.
- * debugger/Debugger.h: Copied from kjs/debugger.h.
- * debugger/DebuggerCallFrame.cpp: Copied from kjs/DebuggerCallFrame.cpp.
- * debugger/DebuggerCallFrame.h: Copied from kjs/DebuggerCallFrame.h.
- * kjs/AllInOneFile.cpp:
- * kjs/DebuggerCallFrame.cpp: Removed.
- * kjs/DebuggerCallFrame.h: Removed.
- * kjs/Parser.cpp:
- * kjs/Parser.h:
- * kjs/debugger.cpp: Removed.
- * kjs/debugger.h: Removed.
- * kjs/interpreter.cpp:
- * kjs/nodes.cpp:
- * runtime/FunctionConstructor.cpp:
- * runtime/JSGlobalObject.cpp:
+ * assembler/ARMv7Assembler.h:
+ (JSC::ARMThumbImmediate::countLeadingZerosPartial):
+ * assembler/MacroAssemblerARMv7.h:
+ (JSC::MacroAssemblerARMv7::branchTruncateDoubleToInt32):
+ (JSC::MacroAssemblerARMv7::moveFixedWidthEncoding):
-2008-10-30 Benjamin K. Stuhl <bks24@cornell.edu>
+2009-09-16 Greg Bolsinga <bolsinga@apple.com>
- gcc 4.3.3/linux-x86 generates "suggest parentheses around && within ||"
- warnings; add some parentheses to disambiguate things. No functional
- changes, so no tests.
+ Add ENABLE(INSPECTOR)
+ https://bugs.webkit.org/show_bug.cgi?id=29260
- https://bugs.webkit.org/show_bug.cgi?id=21973
- Add parentheses to clean up some gcc warnings
+ Reviewed by David Kilzer.
- Reviewed by Dan Bernstein.
+ * wtf/Platform.h:
- * wtf/ASCIICType.h:
- (WTF::isASCIIAlphanumeric):
- (WTF::isASCIIHexDigit):
+2009-09-16 Greg Bolsinga <bolsinga@apple.com>
-2008-10-30 Kevin Lindeman <klindeman@apple.com>
+ Add ENABLE(CONTEXT_MENUS)
+ https://bugs.webkit.org/show_bug.cgi?id=29225
- Adds ProfilerServer, which is a distributed notification listener
- that allows starting and stopping the profiler remotely for use
- in conjunction with the profiler's DTace probes.
+ Reviewed by David Kilzer.
- https://bugs.webkit.org/show_bug.cgi?id=21719
+ * wtf/Platform.h:
- Reviewed by Timothy Hatcher.
+2009-09-16 Benjamin C Meyer <benjamin.meyer@torchmobile.com>
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData): Calls startProfilerServerIfNeeded.
- * profiler/ProfilerServer.h: Added.
- * profiler/ProfilerServer.mm: Added.
- (+[ProfilerServer sharedProfileServer]):
- (-[ProfilerServer init]):
- (-[ProfilerServer startProfiling]):
- (-[ProfilerServer stopProfiling]):
- (JSC::startProfilerServerIfNeeded):
+ Reviewed by Eric Seidel.
-2008-10-30 Kevin Ollivier <kevino@theolliviers.com>
+ The webkit stdint and stdbool headers exists because
+ the compiler MSVC doesn't include them. The check
+ should not check for PLATFORM(WIN_OS) but for MSVC.
- wx build fix after PropertyMap and StructureID merge.
+ * os-win32/stdbool.h:
+ * os-win32/stdint.h:
- * JavaScriptCoreSources.bkl:
+2009-09-16 Greg Bolsinga <bolsinga@apple.com>
-2008-10-30 Cameron Zwarich <zwarich@apple.com>
+ Add ENABLE(DRAG_SUPPORT)
+ https://bugs.webkit.org/show_bug.cgi?id=29233
- Reviewed by Mark Rowe.
+ Reviewed by David Kilzer.
- Change the JavaScriptCore Xcode project to use relative paths for the
- PCRE source files.
+ * wtf/Platform.h:
- * JavaScriptCore.xcodeproj/project.pbxproj:
+2009-09-16 Kevin Ollivier <kevino@theolliviers.com>
-2008-10-30 Sam Weinig <sam@webkit.org>
+ waf build fix after flag was moved to correct place.
- Reviewed by Cameron Zwarich and Geoffrey Garen.
+ * wscript:
- Fix for https://bugs.webkit.org/show_bug.cgi?id=21989
- Merge PropertyMap and StructureID
+2009-09-16 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
- - Move PropertyMap code into StructureID in preparation for lazily
- creating the map on gets.
- - Make remove with transition explicit by adding removePropertyTransition.
- - Make the put/remove without transition explicit.
- - Make cache invalidation part of put/remove without transition.
+ Reviewed by Simon Hausmann.
- 1% speedup on SunSpider; 0.5% speedup on v8 suite.
+ [Qt] Build fix for 64-bit Qt on Mac OS X
- * GNUmakefile.am:
- * JavaScriptCore.exp:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * kjs/AllInOneFile.cpp:
- * kjs/identifier.h:
- * runtime/JSObject.cpp:
- (JSC::JSObject::removeDirect):
- * runtime/JSObject.h:
- (JSC::JSObject::putDirect):
- * runtime/PropertyMap.cpp: Removed.
- * runtime/PropertyMap.h: Removed.
- * runtime/PropertyMapHashTable.h: Copied from runtime/PropertyMap.h.
- * runtime/StructureID.cpp:
- (JSC::StructureID::dumpStatistics):
- (JSC::StructureID::StructureID):
- (JSC::StructureID::~StructureID):
- (JSC::StructureID::getEnumerablePropertyNames):
- (JSC::StructureID::addPropertyTransition):
- (JSC::StructureID::removePropertyTransition):
- (JSC::StructureID::toDictionaryTransition):
- (JSC::StructureID::changePrototypeTransition):
- (JSC::StructureID::getterSetterTransition):
- (JSC::StructureID::addPropertyWithoutTransition):
- (JSC::StructureID::removePropertyWithoutTransition):
- (JSC::PropertyMapStatisticsExitLogger::~PropertyMapStatisticsExitLogger):
- (JSC::StructureID::checkConsistency):
- (JSC::StructureID::copyPropertyTable):
- (JSC::StructureID::get):
- (JSC::StructureID::put):
- (JSC::StructureID::remove):
- (JSC::StructureID::insertIntoPropertyMapHashTable):
- (JSC::StructureID::expandPropertyMapHashTable):
- (JSC::StructureID::createPropertyMapHashTable):
- (JSC::StructureID::rehashPropertyMapHashTable):
- (JSC::comparePropertyMapEntryIndices):
- (JSC::StructureID::getEnumerablePropertyNamesInternal):
- * runtime/StructureID.h:
- (JSC::StructureID::propertyStorageSize):
- (JSC::StructureID::isEmpty):
- (JSC::StructureID::get):
+ * wtf/Platform.h: Use JSVALUE64 on DARWIN, not only on MAC
-2008-10-30 Cameron Zwarich <zwarich@apple.com>
+2009-09-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
- Reviewed by Oliver Hunt.
+ Reviewed by Simon Hausmann.
- Bug 21987: CTI::putDoubleResultToJSNumberCellOrJSImmediate() hardcodes its result register
- <https://bugs.webkit.org/show_bug.cgi?id=21987>
+ [Qt] Fix wtf/ThreadSpecific.h under Qt to free thread local objects.
+ https://bugs.webkit.org/show_bug.cgi?id=29295
+
+ This is an important fix when JavaScript workers are in use, since
+ unfreed ThreadGlobalDatas leak a big amount of memory (50-100k each).
+ QThreadStorage calls the destructor of a given object, which is the
+ ThreadSpecific::Data. Unlike pthread, Qt is object oriented, and does
+ not support the calling of a static utility function when the thread
+ is about to close. In this patch we call the ThreadSpecific::destroy()
+ utility function from the destructor of ThreadSpecific::Data. Moreover,
+ since Qt resets all thread local values to 0 before the calling of the
+ appropriate destructors, we set back the pointer to its original value.
+ This is necessary because the get() method of the ThreadSpecific
+ object may be called during the exuction of the destructor.
- CTI::putDoubleResultToJSNumberCellOrJSImmediate() hardcodes its result
- register as ecx, but it should be tempReg1, which is ecx at all of its
- callsites.
+ * wtf/ThreadSpecific.h:
+ (WTF::ThreadSpecific::Data::~Data):
+ (WTF::::~ThreadSpecific):
+ (WTF::::set):
+ (WTF::::destroy):
- * VM/CTI.cpp:
- (JSC::CTI::putDoubleResultToJSNumberCellOrJSImmediate):
+2009-09-10 Oliver Hunt <oliver@apple.com>
-2008-10-30 Cameron Zwarich <zwarich@apple.com>
+ Reviewed by Geoff Garen.
- Reviewed by Sam Weinig.
+ Allow anonymous storage inside JSObject
+ https://bugs.webkit.org/show_bug.cgi?id=29168
- Bug 21985: Opcodes should use eax as their destination register whenever possible
- <https://bugs.webkit.org/show_bug.cgi?id=21985>
+ Add the concept of anonymous slots to Structures so that it is
+ possible to store references to values that need marking in the
+ standard JSObject storage buffer. This allows us to reduce the
+ malloc overhead of some objects (by allowing them to store JS
+ values in the inline storage of the object) and reduce the
+ dependence of custom mark functions (if all an objects children
+ are in the standard object property storage there's no need to
+ mark them manually).
- Change more opcodes to use eax as the register for their final result,
- and change calls to emitPutResult() that pass eax to rely on the default
- value of eax.
+ * JavaScriptCore.exp:
+ * runtime/JSObject.h:
+ (JSC::JSObject::putAnonymousValue):
+ (JSC::JSObject::getAnonymousValue):
+ (JSC::JSObject::addAnonymousSlots):
+ * runtime/JSWrapperObject.h:
+ (JSC::JSWrapperObject::createStructure):
+ (JSC::JSWrapperObject::JSWrapperObject):
+ (JSC::JSWrapperObject::setInternalValue):
+ * runtime/PropertyMapHashTable.h:
+ * runtime/Structure.cpp:
+ (JSC::Structure::~Structure):
+ (JSC::Structure::materializePropertyMap):
+ (JSC::Structure::addAnonymousSlotsTransition):
+ (JSC::Structure::copyPropertyTable):
+ (JSC::Structure::put):
+ (JSC::Structure::rehashPropertyMapHashTable):
+ * runtime/Structure.h:
+ (JSC::Structure::propertyStorageSize):
+ (JSC::StructureTransitionTable::reifySingleTransition):
+ * runtime/StructureTransitionTable.h:
+ (JSC::StructureTransitionTable::TransitionTable::addSlotTransition):
+ (JSC::StructureTransitionTable::TransitionTable::removeSlotTransition):
+ (JSC::StructureTransitionTable::TransitionTable::getSlotTransition):
+ (JSC::StructureTransitionTable::getAnonymousSlotTransition):
+ (JSC::StructureTransitionTable::addAnonymousSlotTransition):
+ (JSC::StructureTransitionTable::removeAnonymousSlotTransition):
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
+2009-09-15 Alex Milowski <alex@milowski.com>
-2008-10-30 Alp Toker <alp@nuanti.com>
+ Reviewed by Tor Arne Vestbø.
- Build fix attempt for older gcc on the trunk-mac-intel build bot
- (error: initializer for scalar variable requires one element).
+ Added the ENABLE_MATHML define to the features
- Modify the initializer syntax slightly with an additional comma.
+ * Configurations/FeatureDefines.xcconfig:
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_op_construct_JSConstruct):
- (JSC::Machine::cti_op_resolve_func):
- (JSC::Machine::cti_op_post_inc):
- (JSC::Machine::cti_op_resolve_with_base):
- (JSC::Machine::cti_op_post_dec):
+2009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
-2008-10-30 Alp Toker <alp@nuanti.com>
+ Reviewed by Tor Arne Vestbø.
- Reviewed by Alexey Proskuryakov.
+ [Qt] Build fix for windows.
- https://bugs.webkit.org/show_bug.cgi?id=21571
- VoidPtrPair breaks CTI on Linux
+ After http://trac.webkit.org/changeset/47795 the MinGW build broke,
+ because MinGW has __mingw_aligned_malloc instead of _aligned_malloc.
- The VoidPtrPair return change made in r37457 does not work on Linux
- since POD structs aren't passed in registers.
+ * runtime/Collector.cpp:
+ (JSC::Heap::allocateBlock): MinGW case added.
+ (JSC::Heap::freeBlock): MinGW case added.
- This patch uses a union to vectorize VoidPtrPair to a uint64_t and
- matches Darwin/MSVC fixing CTI/WREC on Linux.
+2009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
- Alexey reports no measurable change in Mac performance with this fix.
+ Reviewed by Tor Arne Vestbø.
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_op_construct_JSConstruct):
- (JSC::Machine::cti_op_resolve_func):
- (JSC::Machine::cti_op_post_inc):
- (JSC::Machine::cti_op_resolve_with_base):
- (JSC::Machine::cti_op_post_dec):
- * VM/Machine.h:
- (JSC::):
+ [Qt] Build fix for Windows/MinGW
-2008-10-29 Oliver Hunt <oliver@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=29268
- Reviewed by Geoff Garen.
+ * wtf/Platform.h: JSVALUE32_64 temporarily disabled on PLATFORM(WIN_OS) with COMPILER(MINGW)
- Initial work to reduce cost of JSNumberCell allocation
+2009-09-14 Gabor Loki <loki@inf.u-szeged.hu>
- This does the initial work needed to bring more of number
- allocation into CTI code directly, rather than just falling
- back onto the slow paths if we can't guarantee that a number
- cell can be reused.
+ Reviewed by Gavin Barraclough.
- Initial implementation only used by op_negate to make sure
- it all works. In a negate heavy (though not dominated) test
- it results in a 10% win in the non-reusable cell case.
+ Detect VFP at runtime in generic ARM port on Linux platform.
+ https://bugs.webkit.org/show_bug.cgi?id=29076
- * VM/CTI.cpp:
- (JSC::):
- (JSC::CTI::emitAllocateNumber):
- (JSC::CTI::emitNakedFastCall):
- (JSC::CTI::emitArithIntToImmWithJump):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitUnaryOp):
- * VM/CodeGenerator.h:
- (JSC::CodeGenerator::emitToJSNumber):
- (JSC::CodeGenerator::emitTypeOf):
- (JSC::CodeGenerator::emitGetPropertyNames):
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
- * VM/Machine.h:
- * kjs/ResultType.h:
- (JSC::ResultType::isReusableNumber):
- (JSC::ResultType::toInt):
- * kjs/nodes.cpp:
- (JSC::UnaryOpNode::emitCode):
- (JSC::BinaryOpNode::emitCode):
- (JSC::EqualNode::emitCode):
- * masm/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::negl_r):
- (JSC::X86Assembler::xorpd_mr):
- * runtime/JSNumberCell.h:
- (JSC::JSNumberCell::JSNumberCell):
+ * JavaScriptCore.pri:
+ * assembler/MacroAssemblerARM.cpp: Added.
+ (JSC::isVFPPresent):
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::supportsFloatingPoint):
-2008-10-29 Steve Falkenburg <sfalken@apple.com>
+2009-09-14 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
- <rdar://problem/6326563> Crash on launch
+ Reviewed by Tor Arne Vestbø.
- For Windows, export explicit functions rather than exporting data for atomicallyInitializedStaticMutex.
-
- Exporting data from a DLL on Windows requires specifying __declspec(dllimport) in the header used by
- callers, but __declspec(dllexport) when defined in the DLL implementation. By instead exporting
- the explicit lock/unlock functions, we can avoid this.
-
- Fixes a crash on launch, since we were previously erroneously exporting atomicallyInitializedStaticMutex as a function.
-
- Reviewed by Darin Adler.
+ [Qt] Build fix for windows build.
- * wtf/Threading.h:
- (WTF::lockAtomicallyInitializedStaticMutex):
- (WTF::unlockAtomicallyInitializedStaticMutex):
- * wtf/ThreadingWin.cpp:
- (WTF::lockAtomicallyInitializedStaticMutex):
- (WTF::unlockAtomicallyInitializedStaticMutex):
+ * JavaScriptCore.pri: Correct a logic error.
+ * pcre/dftables: Add missing paranthesis for tmpdir function.
-2008-10-29 Sam Weinig <sam@webkit.org>
+2009-09-12 Oliver Hunt <oliver@apple.com>
- Reviewed by Oliver Hunt.
+ Reviewed by NOBODY (Build fix).
- Remove direct use of PropertyMap.
+ Build fix for windows exports (again).
- * JavaScriptCore.exp:
- * runtime/JSObject.cpp:
- (JSC::JSObject::mark):
- (JSC::JSObject::put):
- (JSC::JSObject::deleteProperty):
- (JSC::JSObject::getPropertyAttributes):
- (JSC::JSObject::removeDirect):
- * runtime/JSObject.h:
- (JSC::JSObject::getDirect):
- (JSC::JSObject::getDirectLocation):
- (JSC::JSObject::hasCustomProperties):
- (JSC::JSObject::JSObject):
- (JSC::JSObject::putDirect):
- * runtime/PropertyMap.cpp:
- (JSC::PropertyMap::get):
- * runtime/PropertyMap.h:
- (JSC::PropertyMap::isEmpty):
- (JSC::PropertyMap::get):
- * runtime/StructureID.cpp:
- (JSC::StructureID::dumpStatistics):
- * runtime/StructureID.h:
- (JSC::StructureID::propertyStorageSize):
- (JSC::StructureID::get):
- (JSC::StructureID::put):
- (JSC::StructureID::remove):
- (JSC::StructureID::isEmpty):
-
-2008-10-29 Sam Weinig <sam@webkit.org>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Reviewed by Geoffrey Garen.
+2009-09-12 Oliver Hunt <oliver@apple.com>
- Rename and move the StructureID transition table to its own file.
+ Reviewed by NOBODY (Build fix).
- * GNUmakefile.am:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * runtime/StructureID.cpp:
- (JSC::StructureID::addPropertyTransition):
- * runtime/StructureID.h:
- (JSC::StructureID::):
- * runtime/StructureIDTransitionTable.h: Copied from runtime/StructureID.h.
- (JSC::StructureIDTransitionTableHash::hash):
- (JSC::StructureIDTransitionTableHash::equal):
+ Build fix for windows exports.
-2008-10-29 Sam Weinig <sam@webkit.org>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Reviewed by Cameron Zwarich.
+2009-09-12 Oliver Hunt <oliver@apple.com>
- Fix for https://bugs.webkit.org/show_bug.cgi?id=21958
- Pack bits in StructureID to reduce the size of each StructureID by 2 words.
+ Reviewed by NOBODY (Build fix).
- * runtime/PropertyMap.h:
- (JSC::PropertyMap::propertyMapSize):
- * runtime/StructureID.cpp:
- (JSC::StructureID::dumpStatistics): Add additional size statistics when dumping.
- (JSC::StructureID::StructureID):
- * runtime/StructureID.h:
+ Correct fix for non-allinonefile builds
-2008-10-29 Kevin Ollivier <kevino@theolliviers.com>
+ * runtime/ObjectConstructor.cpp:
- wx build fixes after addition of runtime and ImageBuffer changes.
+2009-09-12 Oliver Hunt <oliver@apple.com>
- * JavaScriptCoreSources.bkl:
- * jscore.bkl:
+ Reviewed by NOBODY (Build fix).
-2008-10-29 Timothy Hatcher <timothy@apple.com>
+ Fix non-allinonefile builds
- Emit the WillExecuteStatement debugger hook before the "else" body
- when there is no block for the "else" body. This allows breakpoints
- on those statements in the Web Inspector.
+ * runtime/ObjectConstructor.cpp:
- https://bugs.webkit.org/show_bug.cgi?id=21944
+2009-09-12 Oliver Hunt <oliver@apple.com>
Reviewed by Maciej Stachowiak.
- * kjs/nodes.cpp:
- (JSC::IfElseNode::emitCode): Emit the WillExecuteStatement
- debugger hook before the else node if isn't a block.
-
-2008-10-29 Alexey Proskuryakov <ap@webkit.org>
-
- Build fix.
+ [ES5] Implement Object.keys
+ https://bugs.webkit.org/show_bug.cgi?id=29170
- * JavaScriptCore.exp: Export HashTable::deleteTable().
+ This patch basically requires two separate steps, the first is to split getPropertyNames
+ into two functions -- getOwnPropertyNames and getPropertyNames, basically making them behave
+ in the same way as getOwnPropertySlot and getPropertySlot. In essence getOwnPropertyNames
+ produces the list of properties on an object excluding its prototype chain and getPropertyNames
+ just iterates the the object and its prototype chain calling getOwnPropertyNames at each level.
-2008-10-28 Alp Toker <alp@nuanti.com>
+ * API/JSCallbackObject.h:
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::getOwnPropertyNames):
+ * JavaScriptCore.exp:
+ * debugger/DebuggerActivation.cpp:
+ (JSC::DebuggerActivation::getOwnPropertyNames):
+ * debugger/DebuggerActivation.h:
+ * runtime/CommonIdentifiers.h:
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::getOwnPropertyNames):
+ * runtime/JSArray.h:
+ * runtime/JSByteArray.cpp:
+ (JSC::JSByteArray::getOwnPropertyNames):
+ * runtime/JSByteArray.h:
+ * runtime/JSNotAnObject.cpp:
+ (JSC::JSNotAnObject::getOwnPropertyNames):
+ * runtime/JSNotAnObject.h:
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::getOwnPropertyNames):
+ * runtime/JSObject.h:
+ * runtime/JSVariableObject.cpp:
+ (JSC::JSVariableObject::getOwnPropertyNames):
+ * runtime/JSVariableObject.h:
+ * runtime/ObjectConstructor.cpp:
+ (JSC::ObjectConstructor::ObjectConstructor):
+ (JSC::objectConstructorKeys):
+ * runtime/RegExpMatchesArray.h:
+ (JSC::RegExpMatchesArray::getOwnPropertyNames):
+ * runtime/StringObject.cpp:
+ (JSC::StringObject::getOwnPropertyNames):
+ * runtime/StringObject.h:
+ * runtime/Structure.cpp:
+ (JSC::Structure::getOwnEnumerablePropertyNames):
+ (JSC::Structure::getEnumerablePropertyNames):
+ * runtime/Structure.h:
- Fix builddir != srcdir builds after kjs -> runtime breakage. Sources
- may now be generated in both kjs/ and runtime/.
+2009-09-11 Oliver Hunt <oliver@apple.com>
- Also sort the sources list for readability.
+ Reviewed by Sam Weinig.
- * GNUmakefile.am:
+ getPropertyNames caching is invalid when the prototype chain contains objects with custom getPropertyNames
+ https://bugs.webkit.org/show_bug.cgi?id=29214
-2008-10-28 Alp Toker <alp@nuanti.com>
+ Add a flag to TypeInfo to indicate whether a type overrides getPropertyNames.
+ This flag is used to make sure that caching of the property name data is safe.
- Reviewed by Cameron Zwarich.
+ * API/JSCallbackConstructor.h:
+ (JSC::JSCallbackConstructor::createStructure):
+ * debugger/DebuggerActivation.h:
+ (JSC::DebuggerActivation::createStructure):
+ * runtime/BooleanObject.h:
+ (JSC::BooleanObject::createStructure):
+ * runtime/DatePrototype.h:
+ (JSC::DatePrototype::createStructure):
+ * runtime/FunctionPrototype.h:
+ (JSC::FunctionPrototype::createStructure):
+ * runtime/JSONObject.h:
+ (JSC::JSONObject::createStructure):
+ * runtime/JSObject.h:
+ (JSC::JSObject::createStructure):
+ * runtime/JSTypeInfo.h:
+ (JSC::TypeInfo::hasDefaultGetPropertyNames):
+ * runtime/JSVariableObject.h:
+ (JSC::JSVariableObject::createStructure):
+ * runtime/JSWrapperObject.h:
+ (JSC::JSWrapperObject::createStructure):
+ * runtime/MathObject.h:
+ (JSC::MathObject::createStructure):
+ * runtime/NumberConstructor.h:
+ (JSC::NumberConstructor::createStructure):
+ * runtime/NumberObject.h:
+ (JSC::NumberObject::createStructure):
+ * runtime/RegExpConstructor.h:
+ (JSC::RegExpConstructor::createStructure):
+ * runtime/RegExpObject.h:
+ (JSC::RegExpObject::createStructure):
+ * runtime/StructureChain.cpp:
+ (JSC::StructureChain::isCacheable):
- Build fix attempt after kjs -> runtime rename.
+2009-09-11 Alexey Proskuryakov <ap@webkit.org>
- * GNUmakefile.am:
+ Reviewed by Geoff Garen.
-2008-10-28 Cameron Zwarich <zwarich@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=29207
+ Add checks for using WebCore JS context on secondary threads
- Not reviewed.
+ * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData):
+ * runtime/JSGlobalData.h:
+ Added a new mainThreadOnly flag that WebCore would set.
- Remove a duplicate includes directory.
+ * runtime/Collector.cpp: (JSC::Heap::registerThread): JSC API methods always call this,
+ so this is a good place to check that the API isn't used form a wrong thread.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+2009-09-11 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-2008-10-28 Cameron Zwarich <zwarich@apple.com>
+ Reviewed by Simon Hausmann.
- Not reviewed.
+ Compiling JavaScriptCore on sparc 64 with gcc fails.
- Attempt to fix the Windows build.
+ ThreadSafeShared uses the atomic __gnu_cxx::__exchange_and_add with an int,
+ however on sparc 64 the _Atomic_word argument is typedefed to long (8 bytes).
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.vcproj/jsc/jsc.vcproj:
+ The patch disables WTF_USE_LOCKFREE_THREADSAFESHARED in ThreadSafeShared to use
+ a mutex instead when compiling for sparc 64 with gcc.
-2008-10-28 Dan Bernstein <mitz@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=29175
- Reviewed by Mark Rowe.
+ * wtf/Platform.h:
+ __sparc64__ is not defined on all OS.
+ Uses instead: __sparc__ && __arch64__ || __sparcv9
+ * wtf/Threading.h:
- - export WTF::atomicallyInitializedStaticMutex
+2009-09-11 Prasanth Ullattil <prasanth.ullattil@nokia.com>
- * JavaScriptCore.exp:
+ Reviewed by Simon Hausmann.
-2008-10-28 Geoffrey Garen <ggaren@apple.com>
+ Fix compile error on Windows7(64Bit) with latest SDK.
- Reviewed by Cameron Zwarich.
-
- Fixed CodeBlock dumping to accurately report constant register indices.
+ Added the missing include file.
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
+ * runtime/UString.cpp:
-2008-10-28 Cameron Zwarich <zwarich@apple.com>
+2009-09-11 Joerg Bornemann <joerg.bornemann@trolltech.com>
- Not reviewed.
+ Reviewed by Simon Hausmann.
- More Qt build fixes.
+ Qt/Windows CE compile fix, include the executable allocator and
+ markstack implementation in the windows build.
* JavaScriptCore.pri:
-2008-10-28 Cameron Zwarich <zwarich@apple.com>
-
- Not reviewed.
-
- Fix the Qt build, hopefully for real this time.
+2009-09-08 John Abd-El-Malek <jam@chromium.org>
- * JavaScriptCore.pri:
+ Reviewed by Dimitri Glazkov.
-2008-10-28 Cameron Zwarich <zwarich@apple.com>
+ Remove unneeded define for ActiveX.
+ https://bugs.webkit.org/show_bug.cgi?id=29054
- Not reviewed.
+ * wtf/Platform.h:
- Fix the Qt build.
+2009-09-10 Mark Rowe <mrowe@apple.com>
- * JavaScriptCore.pri:
+ Rubber-stamped by Sam Weinig.
-2008-10-28 Cameron Zwarich <zwarich@apple.com>
+ Update JavaScriptCore and WebKit's FeatureDefines.xcconfig so that they are in sync with WebCore as they need to be.
- Not reviewed.
+ * Configurations/FeatureDefines.xcconfig:
- Fix the Windows build.
+2009-09-10 Fumitoshi Ukai <ukai@chromium.org>
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ Reviewed by Alexey Proskuryakov.
-2008-10-28 Cameron Zwarich <zwarich@apple.com>
+ Export WTF::tryFastMalloc used in WebSocketChannel.
+ https://bugs.webkit.org/show_bug.cgi?id=28038
- Rubber-stamped by Sam Weinig.
+ * JavaScriptCore.exp:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Create a runtime directory in JavaScriptCore and begin moving files to
- it. This is the first step towards removing the kjs directory and
- placing files in more meaningful subdirectories of JavaScriptCore.
+2009-09-10 Oliver Hunt <oliver@apple.com>
- * API/JSBase.cpp:
- * API/JSCallbackConstructor.cpp:
- * API/JSCallbackConstructor.h:
- * API/JSCallbackFunction.cpp:
- * API/JSClassRef.cpp:
- * API/JSClassRef.h:
- * API/JSStringRefCF.cpp:
- * API/JSValueRef.cpp:
- * API/OpaqueJSString.cpp:
- * DerivedSources.make:
- * GNUmakefile.am:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/AllInOneFile.cpp:
- * kjs/ArrayConstructor.cpp: Removed.
- * kjs/ArrayConstructor.h: Removed.
- * kjs/ArrayPrototype.cpp: Removed.
- * kjs/ArrayPrototype.h: Removed.
- * kjs/BooleanConstructor.cpp: Removed.
- * kjs/BooleanConstructor.h: Removed.
- * kjs/BooleanObject.cpp: Removed.
- * kjs/BooleanObject.h: Removed.
- * kjs/BooleanPrototype.cpp: Removed.
- * kjs/BooleanPrototype.h: Removed.
- * kjs/CallData.cpp: Removed.
- * kjs/CallData.h: Removed.
- * kjs/ClassInfo.h: Removed.
- * kjs/ConstructData.cpp: Removed.
- * kjs/ConstructData.h: Removed.
- * kjs/DateConstructor.cpp: Removed.
- * kjs/DateConstructor.h: Removed.
- * kjs/DateInstance.cpp: Removed.
- * kjs/DateInstance.h: Removed.
- * kjs/DateMath.cpp: Removed.
- * kjs/DateMath.h: Removed.
- * kjs/DatePrototype.cpp: Removed.
- * kjs/DatePrototype.h: Removed.
- * kjs/Error.cpp: Removed.
- * kjs/Error.h: Removed.
- * kjs/ErrorConstructor.cpp: Removed.
- * kjs/ErrorConstructor.h: Removed.
- * kjs/ErrorInstance.cpp: Removed.
- * kjs/ErrorInstance.h: Removed.
- * kjs/ErrorPrototype.cpp: Removed.
- * kjs/ErrorPrototype.h: Removed.
- * kjs/FunctionConstructor.cpp: Removed.
- * kjs/FunctionConstructor.h: Removed.
- * kjs/FunctionPrototype.cpp: Removed.
- * kjs/FunctionPrototype.h: Removed.
- * kjs/GlobalEvalFunction.cpp: Removed.
- * kjs/GlobalEvalFunction.h: Removed.
- * kjs/InternalFunction.cpp: Removed.
- * kjs/InternalFunction.h: Removed.
- * kjs/JSArray.cpp: Removed.
- * kjs/JSArray.h: Removed.
- * kjs/JSCell.cpp: Removed.
- * kjs/JSCell.h: Removed.
- * kjs/JSFunction.cpp: Removed.
- * kjs/JSFunction.h: Removed.
- * kjs/JSGlobalObject.cpp: Removed.
- * kjs/JSGlobalObject.h: Removed.
- * kjs/JSGlobalObjectFunctions.cpp: Removed.
- * kjs/JSGlobalObjectFunctions.h: Removed.
- * kjs/JSImmediate.cpp: Removed.
- * kjs/JSImmediate.h: Removed.
- * kjs/JSNotAnObject.cpp: Removed.
- * kjs/JSNotAnObject.h: Removed.
- * kjs/JSNumberCell.cpp: Removed.
- * kjs/JSNumberCell.h: Removed.
- * kjs/JSObject.cpp: Removed.
- * kjs/JSObject.h: Removed.
- * kjs/JSString.cpp: Removed.
- * kjs/JSString.h: Removed.
- * kjs/JSValue.cpp: Removed.
- * kjs/JSValue.h: Removed.
- * kjs/JSVariableObject.cpp: Removed.
- * kjs/JSVariableObject.h: Removed.
- * kjs/JSWrapperObject.cpp: Removed.
- * kjs/JSWrapperObject.h: Removed.
- * kjs/MathObject.cpp: Removed.
- * kjs/MathObject.h: Removed.
- * kjs/NativeErrorConstructor.cpp: Removed.
- * kjs/NativeErrorConstructor.h: Removed.
- * kjs/NativeErrorPrototype.cpp: Removed.
- * kjs/NativeErrorPrototype.h: Removed.
- * kjs/NumberConstructor.cpp: Removed.
- * kjs/NumberConstructor.h: Removed.
- * kjs/NumberObject.cpp: Removed.
- * kjs/NumberObject.h: Removed.
- * kjs/NumberPrototype.cpp: Removed.
- * kjs/NumberPrototype.h: Removed.
- * kjs/ObjectConstructor.cpp: Removed.
- * kjs/ObjectConstructor.h: Removed.
- * kjs/ObjectPrototype.cpp: Removed.
- * kjs/ObjectPrototype.h: Removed.
- * kjs/PropertyMap.cpp: Removed.
- * kjs/PropertyMap.h: Removed.
- * kjs/PropertySlot.cpp: Removed.
- * kjs/PropertySlot.h: Removed.
- * kjs/PrototypeFunction.cpp: Removed.
- * kjs/PrototypeFunction.h: Removed.
- * kjs/PutPropertySlot.h: Removed.
- * kjs/SmallStrings.cpp: Removed.
- * kjs/SmallStrings.h: Removed.
- * kjs/StringConstructor.cpp: Removed.
- * kjs/StringConstructor.h: Removed.
- * kjs/StringObject.cpp: Removed.
- * kjs/StringObject.h: Removed.
- * kjs/StringObjectThatMasqueradesAsUndefined.h: Removed.
- * kjs/StringPrototype.cpp: Removed.
- * kjs/StringPrototype.h: Removed.
- * kjs/StructureID.cpp: Removed.
- * kjs/StructureID.h: Removed.
- * kjs/completion.h:
- * kjs/interpreter.h:
- * runtime: Added.
- * runtime/ArrayConstructor.cpp: Copied from kjs/ArrayConstructor.cpp.
- * runtime/ArrayConstructor.h: Copied from kjs/ArrayConstructor.h.
- * runtime/ArrayPrototype.cpp: Copied from kjs/ArrayPrototype.cpp.
- * runtime/ArrayPrototype.h: Copied from kjs/ArrayPrototype.h.
- * runtime/BooleanConstructor.cpp: Copied from kjs/BooleanConstructor.cpp.
- * runtime/BooleanConstructor.h: Copied from kjs/BooleanConstructor.h.
- * runtime/BooleanObject.cpp: Copied from kjs/BooleanObject.cpp.
- * runtime/BooleanObject.h: Copied from kjs/BooleanObject.h.
- * runtime/BooleanPrototype.cpp: Copied from kjs/BooleanPrototype.cpp.
- * runtime/BooleanPrototype.h: Copied from kjs/BooleanPrototype.h.
- * runtime/CallData.cpp: Copied from kjs/CallData.cpp.
- * runtime/CallData.h: Copied from kjs/CallData.h.
- * runtime/ClassInfo.h: Copied from kjs/ClassInfo.h.
- * runtime/ConstructData.cpp: Copied from kjs/ConstructData.cpp.
- * runtime/ConstructData.h: Copied from kjs/ConstructData.h.
- * runtime/DateConstructor.cpp: Copied from kjs/DateConstructor.cpp.
- * runtime/DateConstructor.h: Copied from kjs/DateConstructor.h.
- * runtime/DateInstance.cpp: Copied from kjs/DateInstance.cpp.
- * runtime/DateInstance.h: Copied from kjs/DateInstance.h.
- * runtime/DateMath.cpp: Copied from kjs/DateMath.cpp.
- * runtime/DateMath.h: Copied from kjs/DateMath.h.
- * runtime/DatePrototype.cpp: Copied from kjs/DatePrototype.cpp.
- * runtime/DatePrototype.h: Copied from kjs/DatePrototype.h.
- * runtime/Error.cpp: Copied from kjs/Error.cpp.
- * runtime/Error.h: Copied from kjs/Error.h.
- * runtime/ErrorConstructor.cpp: Copied from kjs/ErrorConstructor.cpp.
- * runtime/ErrorConstructor.h: Copied from kjs/ErrorConstructor.h.
- * runtime/ErrorInstance.cpp: Copied from kjs/ErrorInstance.cpp.
- * runtime/ErrorInstance.h: Copied from kjs/ErrorInstance.h.
- * runtime/ErrorPrototype.cpp: Copied from kjs/ErrorPrototype.cpp.
- * runtime/ErrorPrototype.h: Copied from kjs/ErrorPrototype.h.
- * runtime/FunctionConstructor.cpp: Copied from kjs/FunctionConstructor.cpp.
- * runtime/FunctionConstructor.h: Copied from kjs/FunctionConstructor.h.
- * runtime/FunctionPrototype.cpp: Copied from kjs/FunctionPrototype.cpp.
- * runtime/FunctionPrototype.h: Copied from kjs/FunctionPrototype.h.
- * runtime/GlobalEvalFunction.cpp: Copied from kjs/GlobalEvalFunction.cpp.
- * runtime/GlobalEvalFunction.h: Copied from kjs/GlobalEvalFunction.h.
- * runtime/InternalFunction.cpp: Copied from kjs/InternalFunction.cpp.
- * runtime/InternalFunction.h: Copied from kjs/InternalFunction.h.
- * runtime/JSArray.cpp: Copied from kjs/JSArray.cpp.
- * runtime/JSArray.h: Copied from kjs/JSArray.h.
- * runtime/JSCell.cpp: Copied from kjs/JSCell.cpp.
- * runtime/JSCell.h: Copied from kjs/JSCell.h.
- * runtime/JSFunction.cpp: Copied from kjs/JSFunction.cpp.
- * runtime/JSFunction.h: Copied from kjs/JSFunction.h.
- * runtime/JSGlobalObject.cpp: Copied from kjs/JSGlobalObject.cpp.
- * runtime/JSGlobalObject.h: Copied from kjs/JSGlobalObject.h.
- * runtime/JSGlobalObjectFunctions.cpp: Copied from kjs/JSGlobalObjectFunctions.cpp.
- * runtime/JSGlobalObjectFunctions.h: Copied from kjs/JSGlobalObjectFunctions.h.
- * runtime/JSImmediate.cpp: Copied from kjs/JSImmediate.cpp.
- * runtime/JSImmediate.h: Copied from kjs/JSImmediate.h.
- * runtime/JSNotAnObject.cpp: Copied from kjs/JSNotAnObject.cpp.
- * runtime/JSNotAnObject.h: Copied from kjs/JSNotAnObject.h.
- * runtime/JSNumberCell.cpp: Copied from kjs/JSNumberCell.cpp.
- * runtime/JSNumberCell.h: Copied from kjs/JSNumberCell.h.
- * runtime/JSObject.cpp: Copied from kjs/JSObject.cpp.
- * runtime/JSObject.h: Copied from kjs/JSObject.h.
- * runtime/JSString.cpp: Copied from kjs/JSString.cpp.
- * runtime/JSString.h: Copied from kjs/JSString.h.
- * runtime/JSValue.cpp: Copied from kjs/JSValue.cpp.
- * runtime/JSValue.h: Copied from kjs/JSValue.h.
- * runtime/JSVariableObject.cpp: Copied from kjs/JSVariableObject.cpp.
- * runtime/JSVariableObject.h: Copied from kjs/JSVariableObject.h.
- * runtime/JSWrapperObject.cpp: Copied from kjs/JSWrapperObject.cpp.
- * runtime/JSWrapperObject.h: Copied from kjs/JSWrapperObject.h.
- * runtime/MathObject.cpp: Copied from kjs/MathObject.cpp.
- * runtime/MathObject.h: Copied from kjs/MathObject.h.
- * runtime/NativeErrorConstructor.cpp: Copied from kjs/NativeErrorConstructor.cpp.
- * runtime/NativeErrorConstructor.h: Copied from kjs/NativeErrorConstructor.h.
- * runtime/NativeErrorPrototype.cpp: Copied from kjs/NativeErrorPrototype.cpp.
- * runtime/NativeErrorPrototype.h: Copied from kjs/NativeErrorPrototype.h.
- * runtime/NumberConstructor.cpp: Copied from kjs/NumberConstructor.cpp.
- * runtime/NumberConstructor.h: Copied from kjs/NumberConstructor.h.
- * runtime/NumberObject.cpp: Copied from kjs/NumberObject.cpp.
- * runtime/NumberObject.h: Copied from kjs/NumberObject.h.
- * runtime/NumberPrototype.cpp: Copied from kjs/NumberPrototype.cpp.
- * runtime/NumberPrototype.h: Copied from kjs/NumberPrototype.h.
- * runtime/ObjectConstructor.cpp: Copied from kjs/ObjectConstructor.cpp.
- * runtime/ObjectConstructor.h: Copied from kjs/ObjectConstructor.h.
- * runtime/ObjectPrototype.cpp: Copied from kjs/ObjectPrototype.cpp.
- * runtime/ObjectPrototype.h: Copied from kjs/ObjectPrototype.h.
- * runtime/PropertyMap.cpp: Copied from kjs/PropertyMap.cpp.
- * runtime/PropertyMap.h: Copied from kjs/PropertyMap.h.
- * runtime/PropertySlot.cpp: Copied from kjs/PropertySlot.cpp.
- * runtime/PropertySlot.h: Copied from kjs/PropertySlot.h.
- * runtime/PrototypeFunction.cpp: Copied from kjs/PrototypeFunction.cpp.
- * runtime/PrototypeFunction.h: Copied from kjs/PrototypeFunction.h.
- * runtime/PutPropertySlot.h: Copied from kjs/PutPropertySlot.h.
- * runtime/SmallStrings.cpp: Copied from kjs/SmallStrings.cpp.
- * runtime/SmallStrings.h: Copied from kjs/SmallStrings.h.
- * runtime/StringConstructor.cpp: Copied from kjs/StringConstructor.cpp.
- * runtime/StringConstructor.h: Copied from kjs/StringConstructor.h.
- * runtime/StringObject.cpp: Copied from kjs/StringObject.cpp.
- * runtime/StringObject.h: Copied from kjs/StringObject.h.
- * runtime/StringObjectThatMasqueradesAsUndefined.h: Copied from kjs/StringObjectThatMasqueradesAsUndefined.h.
- * runtime/StringPrototype.cpp: Copied from kjs/StringPrototype.cpp.
- * runtime/StringPrototype.h: Copied from kjs/StringPrototype.h.
- * runtime/StructureID.cpp: Copied from kjs/StructureID.cpp.
- * runtime/StructureID.h: Copied from kjs/StructureID.h.
-
-2008-10-28 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by NOBODY (Build fix).
- Reviewed by Sam Weinig.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=21919
- Sampler reports bogus time in op_enter during 3d-raytrace.js
-
- Fixed a bug where we would pass the incorrect Instruction* during some
- parts of CTI codegen.
-
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/SamplingTool.cpp:
- (JSC::SamplingTool::run):
- * wtf/Platform.h:
+ Make StructureTransitionTable use an enum for the PtrAndFlags member
+ used for the single transition slot optimisation.
-2008-10-28 Kevin McCullough <kmccullough@apple.com>
+ * runtime/StructureTransitionTable.h:
+ (JSC::StructureTransitionTable::StructureTransitionTable):
+ (JSC::StructureTransitionTable::usingSingleTransitionSlot):
+ (JSC::StructureTransitionTable::):
- Reviewed by Dan Bernstein.
+2009-09-10 Oliver Hunt <oliver@apple.com>
- -Removed unused includes.
- Apparent .4% speedup in Sunspider
+ Reviewed by Geoff Garen.
- * kjs/JSObject.cpp:
- * kjs/interpreter.cpp:
+ Refactor StructureTransitionTable and Structure to unify handling of the single slot optimization
+ https://bugs.webkit.org/show_bug.cgi?id=29141
-2008-10-28 Alp Toker <alp@nuanti.com>
+ Make StructureTransitionTable encapsulate the single transition slot optimization.
- Include copyright license files in the autotools dist target.
+ * runtime/Structure.cpp:
+ (JSC::Structure::Structure):
+ (JSC::Structure::~Structure):
+ (JSC::Structure::addPropertyTransitionToExistingStructure):
+ (JSC::Structure::addPropertyTransition):
+ (JSC::Structure::addPropertyWithoutTransition):
+ (JSC::Structure::removePropertyWithoutTransition):
+ (JSC::Structure::hasTransition):
+ * runtime/Structure.h:
+ (JSC::StructureTransitionTable::contains):
+ (JSC::StructureTransitionTable::get):
+ (JSC::StructureTransitionTable::hasTransition):
+ (JSC::StructureTransitionTable::reifySingleTransition):
+ * runtime/StructureTransitionTable.h:
+ (JSC::StructureTransitionTable::StructureTransitionTable):
+ (JSC::StructureTransitionTable::~StructureTransitionTable):
+ (JSC::StructureTransitionTable::remove):
+ (JSC::StructureTransitionTable::add):
+ (JSC::StructureTransitionTable::table):
+ (JSC::StructureTransitionTable::singleTransition):
+ (JSC::StructureTransitionTable::usingSingleTransitionSlot):
+ (JSC::StructureTransitionTable::setSingleTransition):
+ (JSC::StructureTransitionTable::setTransitionTable):
+ (JSC::StructureTransitionTable::):
+ * wtf/PtrAndFlags.h:
+ (WTF::PtrAndFlags::PtrAndFlags):
- Change suggested by Mike Hommey.
+2009-09-10 Zoltan Horvath <zoltan@webkit.org>
- * GNUmakefile.am:
+ Reviewed by Darin Adler.
-2008-10-27 Geoffrey Garen <ggaren@apple.com>
+ Implement fastDeleteSkippingDestructor for FastAllocBase and fastDeleteAllValues for HashSet
+ https://bugs.webkit.org/show_bug.cgi?id=25930
- Reviewed by Maciej Stachowiak.
-
- Stop discarding CodeBlock samples that can't be charged to a specific
- opcode. Instead, charge the relevant CodeBlock, and provide a footnote
- explaining the situation.
-
- This will help us tell which CodeBlocks are hot, even if we can't
- identify specific lines of code within the CodeBlocks.
+ FastAllocBase has been extended with fastDeleteSkippingDestructor function which
+ releases memory without destructor call. fastDeleteAllValues has been implemented
+ similar as deleteAllValues but it uses fastDelete function to release memory.
- * VM/SamplingTool.cpp:
- (JSC::ScopeSampleRecord::sample):
- (JSC::compareScopeSampleRecords):
- (JSC::SamplingTool::dump):
+ * wtf/FastAllocBase.h:
+ (WTF::fastDeleteSkippingDestructor):
+ * wtf/HashSet.h:
+ (WTF::fastDeleteAllValues):
- * VM/SamplingTool.h:
- (JSC::ScopeSampleRecord::ScopeSampleRecord):
- (JSC::ScopeSampleRecord::~ScopeSampleRecord):
+2009-09-10 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-2008-10-27 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Darin Adler.
- Reviewed by Sam Weinig.
-
- Added a mutex around the SamplingTool's ScopeNode* map, to solve a crash
- when sampling the v8 tests.
+ ARM compiler does not understand GCC visibility attribute
+ https://bugs.webkit.org/show_bug.cgi?id=29079
- * VM/SamplingTool.cpp:
- (JSC::SamplingTool::run):
- (JSC::SamplingTool::notifyOfScope):
- * VM/SamplingTool.h: Since new ScopeNodes can be created after
- the SamplingTools has begun sampling, reads and writes to / from the
- map need to be synchronized. Shark says this doesn't measurably increase
- sampling overhead.
+ * API/JSBase.h: Make the test more specific to hit only
+ the GCC compiler
-2008-10-25 Geoffrey Garen <ggaren@apple.com>
+2009-09-10 Adam Barth <abarth@webkit.org>
- Not reviewed.
-
- Try to fix Windows build.
+ Unreviewed revert of the previous change. It broke the tests.
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute): Provide a dummy value to the
- HostCallRecord in CTI non-sampling builds, to silence compiler warning.
+ * wtf/dtoa.cpp:
+ (WTF::dtoa):
-2008-10-25 Geoffrey Garen <ggaren@apple.com>
+2009-09-10 Ben Laurie <benl@google.com>
- Not reviewed.
-
- Try to fix Windows build.
+ Reviewed by Adam Barth.
- * VM/SamplingTool.h:
- (JSC::SamplingTool::encodeSample): Explicitly cast bool to int, to
- silence compiler warning.
+ <https://bugs.webkit.org/show_bug.cgi?id=26836>
-2008-10-25 Geoffrey Garen <ggaren@apple.com>
+ If dtoa was given a small buffer and the number was either infinite or
+ NaN, then the buffer would be overflowed.
- Reviewed by Sam Weinig, with Gavin Barraclough's help.
-
- Fixed Sampling Tool:
- - Made CodeBlock sampling work with CTI
- - Improved accuracy by unifying most sampling data into a single
- 32bit word, which can be written / read atomically.
- - Split out three different #ifdefs for modularity: OPCODE_SAMPLING;
- CODEBLOCK_SAMPLING; OPCODE_STATS.
- - Improved reporting clarity
- - Refactored for code clarity
-
- * JavaScriptCore.exp: Exported another symbol.
-
- * VM/CTI.cpp:
- (JSC::CTI::emitCTICall):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::emitSlowScriptCheck):
- (JSC::CTI::compileBinaryArithOpSlowCase):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- * VM/CTI.h: Updated CTI codegen to use the unified SamplingTool interface
- for encoding samples. (This required passing the current vPC to a lot
- more functions, since the unified interface samples the current vPC.)
- Added hooks for writing the current CodeBlock* on function entry and
- after a function call, for the sake of the CodeBlock sampler. Removed
- obsolete hook for clearing the current sample inside op_end. Also removed
- the custom enum used to differentiate flavors of op_call, since the
- OpcodeID enum works just as well. (This was important in an earlier
- version of the patch, but now it's just cleanup.)
-
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::lineNumberForVPC):
- * VM/CodeBlock.h: Upated for refactored #ifdefs. Changed lineNumberForVPC
- to be robust against vPCs not recorded for exception handling, since
- the Sampler may ask for an arbitrary vPC.
-
- * VM/Machine.cpp:
- (JSC::Machine::execute):
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_call_NotJSFunction):
- (JSC::Machine::cti_op_construct_NotJSConstruct):
- * VM/Machine.h:
- (JSC::Machine::setSampler):
- (JSC::Machine::sampler):
- (JSC::Machine::jitCodeBuffer): Upated for refactored #ifdefs. Changed
- Machine to use SamplingTool helper objects to record movement in and
- out of host code. This makes samples a bit more precise.
-
- * VM/Opcode.cpp:
- (JSC::OpcodeStats::~OpcodeStats):
- * VM/Opcode.h: Upated for refactored #ifdefs. Added a little more padding,
- to accomodate our more verbose opcode names.
-
- * VM/SamplingTool.cpp:
- (JSC::ScopeSampleRecord::sample): Only count a sample toward our total
- if we actually record it. This solves cases where a CodeBlock will
- claim to have been sampled many times, with reported samples that don't
- match.
-
- (JSC::SamplingTool::run): Read the current sample into a Sample helper
- object, to ensure that the data doesn't change while we're analyzing it,
- and to help decode the data. Only access the CodeBlock sampling hash
- table if CodeBlock sampling has been enabled, so non-CodeBlock sampling
- runs can operate with even less overhead.
-
- (JSC::SamplingTool::dump): I reorganized this code a lot to print the
- most important info at the top, print as a table, annotate and document
- the stuff I didn't understand when I started, etc.
-
- * VM/SamplingTool.h: New helper classes, described above.
-
- * kjs/Parser.h:
- * kjs/Shell.cpp:
- (runWithScripts):
- * kjs/nodes.cpp:
- (JSC::ScopeNode::ScopeNode): Updated for new sampling APIs.
+ * wtf/dtoa.cpp:
- * wtf/Platform.h: Moved sampling #defines here, since our custom is to
- put ENABLE #defines into Platform.h. Made explicit the fact that
- CODEBLOCK_SAMPLING depends on OPCODE_SAMPLING.
+2009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-2008-10-25 Jan Michael Alonzo <jmalonzo@webkit.org>
+ Reviewed by Darin Adler.
- JSC Build fix, not reviewed.
+ Change reinterpret_cast to static_cast in r48212.
- * VM/CTI.cpp: add missing include stdio.h for debug builds
+ * jit/ExecutableAllocator.h:
+ (JSC::ExecutableAllocator::cacheFlush):
-2008-10-24 Eric Seidel <eric@webkit.org>
+2009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
Reviewed by Darin Adler.
-
- Get rid of a bonus ASSERT when using a null string as a regexp.
- Specifically calling: RegularExpression::match() with String::empty()
- will hit this ASSERT.
- Chromium hits this, but I don't know of any way to make a layout test.
-
- * pcre/pcre_exec.cpp:
- (jsRegExpExecute):
-
-2008-10-24 Alexey Proskuryakov <ap@webkit.org>
- Suggested and rubber-stamped by Geoff Garen.
+ Remove WTF_PLATFORM_FORCE_PACK as it is no longer used
+ https://bugs.webkit.org/show_bug.cgi?id=29066
- Fix a crash when opening Font Picker.
-
- The change also hopefully fixes this bug, which I could never reproduce:
- https://bugs.webkit.org/show_bug.cgi?id=20241
- <rdar://problem/6290576> Safari crashes at JSValueUnprotect() when fontpicker view close
+ * wtf/Platform.h:
- * API/JSContextRef.cpp: (JSContextGetGlobalObject): Use lexical global object instead of
- dynamic one.
+2009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-2008-10-24 Cameron Zwarich <zwarich@apple.com>
+ Reviewed by Ariya Hidayat.
- Reviewed by Geoff Garen.
+ Implement flushing the instruction cache for Symbian
+ https://bugs.webkit.org/show_bug.cgi?id=29075
- Remove ScopeChainNode::bottom() and inline it into its only caller,
- ScopeChainnode::globalObject().
+ * jit/ExecutableAllocator.h:
+ (JSC::ExecutableAllocator::cacheFlush): Call IMB_Range to flush
+ the instruction cache on Symbian
- * kjs/JSGlobalObject.h:
- (JSC::ScopeChainNode::globalObject):
- * kjs/ScopeChain.h:
- (JSC::ScopeChain::bottom):
+2009-09-09 Kent Hansen <khansen@trolltech.com>
-2008-10-24 Cameron Zwarich <zwarich@apple.com>
+ Reviewed by Darin Adler.
- Reviewed by Maciej Stachowiak.
+ https://bugs.webkit.org/show_bug.cgi?id=29024
+ Make JavaScriptCore compile on platforms with case-insensitive file systems and typeinfo.h in STL
- Bug 21862: Create JSFunction prototype property lazily
- <https://bugs.webkit.org/show_bug.cgi?id=21862>
+ These platforms include Microsoft Visual Studio 2003, and Symbian with Metrowerks compiler.
- This is a 1.5% speedup on SunSpider and a 1.4% speedup on the V8
- benchmark suite, including a 3.8% speedup on Earley-Boyer.
+ * JavaScriptCore.gypi:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * runtime/JSTypeInfo.h: Copied from JavaScriptCore/runtime/TypeInfo.h.
+ * runtime/Structure.h:
+ * runtime/TypeInfo.h: Removed.
- * kjs/JSFunction.cpp:
- (JSC::JSFunction::getOwnPropertySlot):
- * kjs/nodes.cpp:
- (JSC::FuncDeclNode::makeFunction):
- (JSC::FuncExprNode::makeFunction):
+2009-09-08 Oliver Hunt <oliver@apple.com>
-2008-10-24 Greg Bolsinga <bolsinga@apple.com>
+ Reviewed by Maciej Stachowiak.
- Reviewed by Sam Weinig.
+ JSON.stringify(Date) loses the milliseconds information
+ https://bugs.webkit.org/show_bug.cgi?id=29063
- https://bugs.webkit.org/show_bug.cgi?id=21475
-
- Provide support for the Geolocation API
-
- http://dev.w3.org/geo/api/spec-source.html
+ Make sure we include milliseconds in the output of toISOString.
- * wtf/Platform.h: ENABLE_GEOLOCATION defaults to 0
+ * runtime/DatePrototype.cpp:
+ (JSC::dateProtoFuncToISOString):
-2008-10-24 Darin Adler <darin@apple.com>
+2009-09-08 Kevin Ollivier <kevino@theolliviers.com>
- - finish rolling out https://bugs.webkit.org/show_bug.cgi?id=21732
+ wx build fix, generate derived sources earlier in order to make sure
+ they're found by the build system when generating the list of sources to build.
- * API/APICast.h:
- * API/JSCallbackConstructor.h:
- * API/JSCallbackFunction.cpp:
- * API/JSCallbackFunction.h:
- * API/JSCallbackObject.h:
- * API/JSCallbackObjectFunctions.h:
- * API/JSContextRef.cpp:
- * API/JSObjectRef.cpp:
- * API/JSValueRef.cpp:
- * VM/CTI.cpp:
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- * VM/CodeBlock.h:
- * VM/CodeGenerator.cpp:
- * VM/CodeGenerator.h:
- * VM/ExceptionHelpers.cpp:
- * VM/ExceptionHelpers.h:
- * VM/JSPropertyNameIterator.cpp:
- * VM/JSPropertyNameIterator.h:
- * VM/Machine.cpp:
- * VM/Machine.h:
- * VM/Register.h:
- * kjs/ArgList.cpp:
- * kjs/ArgList.h:
- * kjs/Arguments.cpp:
- * kjs/Arguments.h:
- * kjs/ArrayConstructor.cpp:
- * kjs/ArrayPrototype.cpp:
- * kjs/BooleanConstructor.cpp:
- * kjs/BooleanConstructor.h:
- * kjs/BooleanObject.h:
- * kjs/BooleanPrototype.cpp:
- * kjs/CallData.cpp:
- * kjs/CallData.h:
- * kjs/ConstructData.cpp:
- * kjs/ConstructData.h:
- * kjs/DateConstructor.cpp:
- * kjs/DateInstance.h:
- * kjs/DatePrototype.cpp:
- * kjs/DatePrototype.h:
- * kjs/DebuggerCallFrame.cpp:
- * kjs/DebuggerCallFrame.h:
- * kjs/ErrorConstructor.cpp:
- * kjs/ErrorPrototype.cpp:
- * kjs/ExecState.cpp:
- * kjs/ExecState.h:
- * kjs/FunctionConstructor.cpp:
- * kjs/FunctionPrototype.cpp:
- * kjs/FunctionPrototype.h:
- * kjs/GetterSetter.cpp:
- * kjs/GetterSetter.h:
- * kjs/InternalFunction.h:
- * kjs/JSActivation.cpp:
- * kjs/JSActivation.h:
- * kjs/JSArray.cpp:
- * kjs/JSArray.h:
- * kjs/JSCell.cpp:
- * kjs/JSCell.h:
- * kjs/JSFunction.cpp:
- * kjs/JSFunction.h:
- * kjs/JSGlobalData.h:
- * kjs/JSGlobalObject.cpp:
- * kjs/JSGlobalObject.h:
- * kjs/JSGlobalObjectFunctions.cpp:
- * kjs/JSGlobalObjectFunctions.h:
- * kjs/JSImmediate.cpp:
- * kjs/JSImmediate.h:
- * kjs/JSNotAnObject.cpp:
- * kjs/JSNotAnObject.h:
- * kjs/JSNumberCell.cpp:
- * kjs/JSNumberCell.h:
- * kjs/JSObject.cpp:
- * kjs/JSObject.h:
- * kjs/JSStaticScopeObject.cpp:
- * kjs/JSStaticScopeObject.h:
- * kjs/JSString.cpp:
- * kjs/JSString.h:
- * kjs/JSValue.h:
- * kjs/JSVariableObject.h:
- * kjs/JSWrapperObject.h:
- * kjs/MathObject.cpp:
- * kjs/MathObject.h:
- * kjs/NativeErrorConstructor.cpp:
- * kjs/NumberConstructor.cpp:
- * kjs/NumberConstructor.h:
- * kjs/NumberObject.cpp:
- * kjs/NumberObject.h:
- * kjs/NumberPrototype.cpp:
- * kjs/ObjectConstructor.cpp:
- * kjs/ObjectPrototype.cpp:
- * kjs/ObjectPrototype.h:
- * kjs/PropertyMap.h:
- * kjs/PropertySlot.cpp:
- * kjs/PropertySlot.h:
- * kjs/RegExpConstructor.cpp:
- * kjs/RegExpConstructor.h:
- * kjs/RegExpMatchesArray.h:
- * kjs/RegExpObject.cpp:
- * kjs/RegExpObject.h:
- * kjs/RegExpPrototype.cpp:
- * kjs/Shell.cpp:
- * kjs/StringConstructor.cpp:
- * kjs/StringObject.cpp:
- * kjs/StringObject.h:
- * kjs/StringObjectThatMasqueradesAsUndefined.h:
- * kjs/StringPrototype.cpp:
- * kjs/StructureID.cpp:
- * kjs/StructureID.h:
- * kjs/collector.cpp:
- * kjs/collector.h:
- * kjs/completion.h:
- * kjs/grammar.y:
- * kjs/interpreter.cpp:
- * kjs/interpreter.h:
- * kjs/lookup.cpp:
- * kjs/lookup.h:
- * kjs/nodes.h:
- * kjs/operations.cpp:
- * kjs/operations.h:
- * kjs/protect.h:
- * profiler/ProfileGenerator.cpp:
- * profiler/Profiler.cpp:
- * profiler/Profiler.h:
- Use JSValue* instead of JSValuePtr.
+ * wscript:
-2008-10-24 David Kilzer <ddkilzer@apple.com>
+2009-09-08 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- Rolled out r37840.
+ Reviewed by Simon Hausmann.
- * wtf/Platform.h:
+ Build fix when USE(LOCKFREE_THREADSAFESHARED) is not defined
+ https://bugs.webkit.org/show_bug.cgi?id=29011
-2008-10-23 Greg Bolsinga <bolsinga@apple.com>
+ * wtf/Threading.h: Use LOCKFREE_THREADSAFESHARED guard for
+ atomicIncrement and atomicDecrement
- Reviewed by Sam Weinig.
+2009-09-07 Zoltan Horvath <zoltan@webkit.org>
- https://bugs.webkit.org/show_bug.cgi?id=21475
-
- Provide support for the Geolocation API
-
- http://dev.w3.org/geo/api/spec-source.html
+ Reviewed by Darin Adler.
- * wtf/Platform.h: ENABLE_GEOLOCATION defaults to 0
+ Allow custom memory allocation control in Yarr's RegexInterpreter
+ https://bugs.webkit.org/show_bug.cgi?id=29025
-2008-10-23 David Kilzer <ddkilzer@apple.com>
+ Inherits RegexInterpreter classes from FastAllocBase (bug #20422), which has
+ been instantiated by 'new':
- Bug 21832: Fix scripts using 'new File::Temp' for Perl 5.10
+ class ByteDisjunction
+ -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1462
- <https://bugs.webkit.org/show_bug.cgi?id=21832>
+ struct BytecodePattern
+ -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1279
- Reviewed by Sam Weinig.
+ * yarr/RegexInterpreter.h:
- * pcre/dftables: Use imported tempfile() from File::Temp instead of
- 'new File::Temp' to make the script work with Perl 5.10.
+2009-09-07 Drew Wilson <atwilson@google.com>
-2008-10-23 Gavin Barraclough <barraclough@apple.com>
+ Reverting r48121 to fix Windows build errors.
- Reviewed by Oliver Hunt.
+ * JavaScriptCore.exp:
- Fix hideous pathological case performance when looking up repatch info, bug #21727.
-
- When repatching JIT code to optimize we look up records providing information about
- the generated code (also used to track recsources used in linking to be later released).
- The lookup was being performed using a linear scan of all such records.
-
- (1) Split up the different types of reptach information. This means we can search them
- separately, and in some cases should reduce their size.
- (2) In the case of property accesses, search with a binary chop over the data.
- (3) In the case of calls, pass a pointer to the repatch info into the relink function.
-
- * VM/CTI.cpp:
- (JSC::CTI::CTI):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- (JSC::CTI::unlinkCall):
- (JSC::CTI::linkCall):
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- (JSC::CodeBlock::~CodeBlock):
- (JSC::CodeBlock::unlinkCallers):
- (JSC::CodeBlock::derefStructureIDs):
- * VM/CodeBlock.h:
- (JSC::StructureStubInfo::StructureStubInfo):
- (JSC::CallLinkInfo::CallLinkInfo):
- (JSC::CallLinkInfo::setUnlinked):
- (JSC::CallLinkInfo::isLinked):
- (JSC::getStructureStubInfoReturnLocation):
- (JSC::binaryChop):
- (JSC::CodeBlock::addCaller):
- (JSC::CodeBlock::getStubInfo):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitResolve):
- (JSC::CodeGenerator::emitGetById):
- (JSC::CodeGenerator::emitPutById):
- (JSC::CodeGenerator::emitCall):
- (JSC::CodeGenerator::emitConstruct):
- * VM/Machine.cpp:
- (JSC::Machine::cti_vm_lazyLinkCall):
-
-2008-10-23 Peter Kasting <pkasting@google.com>
+2009-09-07 Drew Wilson <atwilson@google.com>
- Reviewed by Adam Roben.
+ Reviewed by David Levin.
- https://bugs.webkit.org/show_bug.cgi?id=21833
- Place JavaScript Debugger hooks under #if ENABLE(JAVASCRIPT_DEBUGGER).
+ Enable SHARED_WORKERS by default
+ https://bugs.webkit.org/show_bug.cgi?id=28959
- * wtf/Platform.h:
+ * Configurations/FeatureDefines.xcconfig:
-2008-10-23 David Kilzer <ddkilzer@apple.com>
+2009-09-07 Fumitoshi Ukai <ukai@chromium.org>
- Bug 21831: Fix create_hash_table for Perl 5.10
+ Reviewed by Alexey Proskuryakov.
- <https://bugs.webkit.org/show_bug.cgi?id=21831>
+ Export WTF::tryFastMalloc used in WebSocketChannel.
+ https://bugs.webkit.org/show_bug.cgi?id=28038
- Reviewed by Sam Weinig.
+ * JavaScriptCore.exp:
- * kjs/create_hash_table: Escaped square brackets so that Perl 5.10
- doesn't try to use @nameEntries.
+2009-09-04 Oliver Hunt <oliver@apple.com>
-2008-10-23 Darin Adler <darin@apple.com>
+ Reviewed by NOBODY (Build fix).
- - roll out https://bugs.webkit.org/show_bug.cgi?id=21732
- to remove the JSValuePtr class, to fix two problems
+ Fix windows export files
- 1) slowness under MSVC, since it doesn't handle a
- class with a single pointer in it as efficiently
- as a pointer
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- 2) uninitialized pointers in Vector
+2009-09-04 Oliver Hunt <oliver@apple.com>
- * JavaScriptCore.exp: Updated.
+ Reviewed by Gavin Barraclough.
- * API/APICast.h:
- (toRef):
- * VM/CTI.cpp:
- (JSC::CTI::asInteger):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::addConstant):
- * VM/CodeGenerator.h:
- (JSC::CodeGenerator::JSValueHashTraits::constructDeletedValue):
- (JSC::CodeGenerator::JSValueHashTraits::isDeletedValue):
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_add):
- (JSC::Machine::cti_op_pre_inc):
- (JSC::Machine::cti_op_get_by_id):
- (JSC::Machine::cti_op_get_by_id_second):
- (JSC::Machine::cti_op_get_by_id_generic):
- (JSC::Machine::cti_op_get_by_id_fail):
- (JSC::Machine::cti_op_instanceof):
- (JSC::Machine::cti_op_del_by_id):
- (JSC::Machine::cti_op_mul):
- (JSC::Machine::cti_op_call_NotJSFunction):
- (JSC::Machine::cti_op_resolve):
- (JSC::Machine::cti_op_construct_NotJSConstruct):
- (JSC::Machine::cti_op_get_by_val):
- (JSC::Machine::cti_op_sub):
- (JSC::Machine::cti_op_lesseq):
- (JSC::Machine::cti_op_negate):
- (JSC::Machine::cti_op_resolve_base):
- (JSC::Machine::cti_op_resolve_skip):
- (JSC::Machine::cti_op_resolve_global):
- (JSC::Machine::cti_op_div):
- (JSC::Machine::cti_op_pre_dec):
- (JSC::Machine::cti_op_not):
- (JSC::Machine::cti_op_eq):
- (JSC::Machine::cti_op_lshift):
- (JSC::Machine::cti_op_bitand):
- (JSC::Machine::cti_op_rshift):
- (JSC::Machine::cti_op_bitnot):
- (JSC::Machine::cti_op_mod):
- (JSC::Machine::cti_op_less):
- (JSC::Machine::cti_op_neq):
- (JSC::Machine::cti_op_urshift):
- (JSC::Machine::cti_op_bitxor):
- (JSC::Machine::cti_op_bitor):
- (JSC::Machine::cti_op_call_eval):
- (JSC::Machine::cti_op_throw):
- (JSC::Machine::cti_op_next_pname):
- (JSC::Machine::cti_op_typeof):
- (JSC::Machine::cti_op_is_undefined):
- (JSC::Machine::cti_op_is_boolean):
- (JSC::Machine::cti_op_is_number):
- (JSC::Machine::cti_op_is_string):
- (JSC::Machine::cti_op_is_object):
- (JSC::Machine::cti_op_is_function):
- (JSC::Machine::cti_op_stricteq):
- (JSC::Machine::cti_op_nstricteq):
- (JSC::Machine::cti_op_to_jsnumber):
- (JSC::Machine::cti_op_in):
- (JSC::Machine::cti_op_del_by_val):
- (JSC::Machine::cti_vm_throw):
- Removed calls to payload functions.
-
- * VM/Register.h:
- (JSC::Register::Register): Removed overload for JSCell and call
- to payload function.
-
- * kjs/JSCell.h: Changed JSCell to derive from JSValue again.
- Removed JSValuePtr constructor.
- (JSC::asCell): Changed cast from reinterpret_cast to static_cast.
-
- * kjs/JSImmediate.h: Removed JSValuePtr class. Added typedef back.
-
- * kjs/JSValue.h:
- (JSC::JSValue::JSValue): Added empty protected inline constructor back.
- (JSC::JSValue::~JSValue): Same for destructor.
- Removed == and != operator for JSValuePtr.
-
- * kjs/PropertySlot.h:
- (JSC::PropertySlot::PropertySlot): Chnaged argument to const JSValue*
- and added a const_cast.
-
- * kjs/protect.h: Removed overloads and specialization for JSValuePtr.
-
-2008-10-22 Oliver Hunt <oliver@apple.com>
+ [[ToString]] conversion should use the actual toString function for String objects.
- Reviewed by Maciej Stachowiak.
+ Remove incorrect specialisations of toString conversions on StringObject.
- Really "fix" CTI mode on windows 2k3.
+ * JavaScriptCore.exp:
+ * runtime/StringObject.cpp:
+ * runtime/StringObject.h:
- This adds new methods fastMallocExecutable and fastFreeExecutable
- to wrap allocation for cti code. This still just makes fastMalloc
- return executable memory all the time, which will be fixed in a
- later patch.
+2009-09-04 Steve Falkenburg <sfalken@apple.com>
- However in windows debug builds all executable allocations will be
- allocated on separate executable pages, which should resolve any
- remaining 2k3 issues. Conveniently the 2k3 bot will now also fail
- if there are any fastFree vs. fastFreeExecutable errors.
+ Windows build fix.
- * ChangeLog:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::~CodeBlock):
- * kjs/regexp.cpp:
- (JSC::RegExp::~RegExp):
- * masm/X86Assembler.h:
- (JSC::JITCodeBuffer::copy):
- * wtf/FastMalloc.cpp:
- (WTF::fastMallocExecutable):
- (WTF::fastFreeExecutable):
- (WTF::TCMallocStats::fastMallocExecutable):
- (WTF::TCMallocStats::fastFreeExecutable):
- * wtf/FastMalloc.h:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Add new export.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Add new export.
-2008-10-22 Darin Adler <darin@apple.com>
+2009-09-04 Steve Falkenburg <sfalken@apple.com>
- Reviewed by Sam Weinig.
+ Windows build fix.
- - fix https://bugs.webkit.org/show_bug.cgi?id=21294
- Bug 21294: Devirtualize getOwnPropertySlot()
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove unneeded export.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Remove unneeded export.
- A bit over 3% faster on V8 tests.
+2009-09-04 Darin Adler <darin@apple.com>
- * JavascriptCore.exp: Export leak-related functions..
+ Reviewed by Geoff Garen.
- * API/JSCallbackConstructor.h:
- (JSC::JSCallbackConstructor::createStructureID): Set HasStandardGetOwnPropertySlot
- since this class doesn't override getPropertySlot.
- * API/JSCallbackFunction.h:
- (JSC::JSCallbackFunction::createStructureID): Ditto.
+ DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32)
+ https://bugs.webkit.org/show_bug.cgi?id=28909
- * VM/ExceptionHelpers.cpp:
- (JSC::InterruptedExecutionError::InterruptedExecutionError): Use a structure
- that's created just for this class instead of trying to share a single "null
- prototype" structure.
+ Part two.
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_create_arguments_no_params): Rename
- Arguments::ArgumentsNoParameters to Arguments::NoParameters.
-
- * kjs/Arguments.h: Rename the enum from Arguments::ArgumentsParameters to
- Arguments::NoParametersType and the value from Arguments::ArgumentsNoParameters
- to Arguments::NoParameters.
- (JSC::Arguments::createStructureID): Added. Returns a structure without
- HasStandardGetOwnPropertySlot since this class overrides getOwnPropertySlot.
- (JSC::Arguments::Arguments): Added an assertion that there are no parameters.
-
- * kjs/DatePrototype.h:
- (JSC::DatePrototype::createStructureID): Added. Returns a structure without
- HasStandardGetOwnPropertySlot since this class overrides getOwnPropertySlot.
-
- * kjs/FunctionPrototype.h:
- (JSC::FunctionPrototype::createStructureID): Set HasStandardGetOwnPropertySlot
- since this class doesn't override getPropertySlot.
- * kjs/InternalFunction.h:
- (JSC::InternalFunction::createStructureID): Ditto.
-
- * kjs/JSArray.h:
- (JSC::JSArray::createStructureID): Added. Returns a structure without
- HasStandardGetOwnPropertySlot since this class overrides getOwnPropertySlot.
-
- * kjs/JSCell.h: Added declaration of fastGetOwnPropertySlot; a non-virtual
- version that uses the structure bit to decide whether to call the virtual
- version.
-
- * kjs/JSFunction.h:
- (JSC::JSFunction::createStructureID): Added. Returns a structure without
- HasStandardGetOwnPropertySlot since this class overrides getOwnPropertySlot.
-
- * kjs/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData): Initialize new structures; removed
- nullProtoStructureID.
- * kjs/JSGlobalData.h: Added new structures. Removed nullProtoStructureID.
-
- * kjs/JSGlobalObject.h:
- (JSC::JSGlobalObject::createStructureID): Added. Returns a structure without
- HasStandardGetOwnPropertySlot since this class overrides getOwnPropertySlot.
-
- * kjs/JSNotAnObject.h:
- (JSC::JSNotAnObjectErrorStub::JSNotAnObjectErrorStub): Use a structure
- that's created just for this class instead of trying to share a single "null
- prototype" structure.
- (JSC::JSNotAnObjectErrorStub::isNotAnObjectErrorStub): Marked this function
- virtual for clarity and made it private since no one should call it if they
- already have a pointer to this specific type.
- (JSC::JSNotAnObject::JSNotAnObject): Use a structure that's created just
- for this class instead of trying to share a single "null prototype" structure.
- (JSC::JSNotAnObject::createStructureID): Added. Returns a structure without
- HasStandardGetOwnPropertySlot since this class overrides getOwnPropertySlot.
-
- * kjs/JSObject.h:
- (JSC::JSObject::createStructureID): Added HasStandardGetOwnPropertySlot.
- (JSC::JSObject::inlineGetOwnPropertySlot): Added. Used so we can share code
- between getOwnPropertySlot and fastGetOwnPropertySlot.
- (JSC::JSObject::getOwnPropertySlot): Moved so that functions are above the
- functions that call them. Moved the guts of this function into
- inlineGetOwnPropertySlot.
- (JSC::JSCell::fastGetOwnPropertySlot): Added. Checks the
- HasStandardGetOwnPropertySlot bit and if it's set, calls
- inlineGetOwnPropertySlot, otherwise calls getOwnPropertySlot.
- (JSC::JSObject::getPropertySlot): Changed to call fastGetOwnPropertySlot.
- (JSC::JSValue::get): Changed to call fastGetOwnPropertySlot.
-
- * kjs/JSWrapperObject.h: Made constructor protected to emphasize that
- this class is only a base class and never instantiated.
-
- * kjs/MathObject.h:
- (JSC::MathObject::createStructureID): Added. Returns a structure without
- HasStandardGetOwnPropertySlot since this class overrides getOwnPropertySlot.
- * kjs/NumberConstructor.h:
- (JSC::NumberConstructor::createStructureID): Ditto.
- * kjs/RegExpConstructor.h:
- (JSC::RegExpConstructor::createStructureID): Ditto.
- * kjs/RegExpObject.h:
- (JSC::RegExpObject::createStructureID): Ditto.
- * kjs/StringObject.h:
- (JSC::StringObject::createStructureID): Ditto.
-
- * kjs/TypeInfo.h: Added HasStandardGetOwnPropertySlot flag and
- hasStandardGetOwnPropertySlot accessor function.
-
-2008-10-22 Cameron Zwarich <zwarich@apple.com>
+ Make some improvements to garbage collection code:
- Reviewed by Geoff Garen.
+ 1) Create a runtime assertion that catches any classes that
+ override markChildren but have the HasDefaultMark bit set.
+ 2) Remove checks of the mark bit outside the MarkStack::append
+ function; they are redundant.
+ 3) Improve the efficiency of the asObject and asArray functions
+ when called on JSCell* to avoid a round trip to JSValue.
+ 4) Make more callers use the checked asCell and asObject
+ casting functions rather than unchecked casts.
+ 5) Removed the JSCell::marked function and other GC-related
+ functions because these operations are no longer things that
+ code other than the core GC code needs to do directly. Fixed
+ callers that were calling them.
- Bug 21803: Fuse op_jfalse with op_eq_null and op_neq_null
- <https://bugs.webkit.org/show_bug.cgi?id=21803>
+ * runtime/Collector.cpp:
+ (JSC::Heap::markConservatively): Removed unneeded call to MarkStack::drain.
+ (JSC::Heap::markProtectedObjects): Removed unneeded check of the mark
+ bit and call to MarkStack::drain.
+ (JSC::Heap::collect): Removed unneeded checks of the mark bit and also
+ changed call to SmallStrings::mark to call markChildren instead to match
+ the rest of the objects.
+ (JSC::typeName): Removed unneeded cast to JSObject*.
- Fuse op_jfalse with op_eq_null and op_neq_null to make the new opcodes
- op_jeq_null and op_jneq_null.
+ * runtime/JSArray.h:
+ (JSC::asArray): Added an overload for JSCell* and changed the JSValue
+ version to call it. Removed some unneeded casts.
+ (JSC::JSArray::markChildrenDirect): Marked this function inline. It's in
+ a header, and if not marked inline this could lead to linking problems.
+ (JSC::MarkStack::markChildren): Added. This helper function is used by
+ the drain function to avoid repating code. Also added the code here to
+ check fro default mark violations in debug code. If a markChildren
+ function adds something to the mark stack, but the type info claimed
+ hasDefaultMark was true, then we will get an assertion now. Also fixed
+ the assertion about the mark bit to use the Heap function directly
+ because we don't have a JSCell::marked function any more.
+ (JSC::MarkStack::drain): Changed a local variable from "v" to "value",
+ and from "currentCell" to "cell". Changed to call markChildren in two
+ places instead of repeating a chain of if statements twice. Changed
+ code that reads and writes the mark bit to use Heap::isCellMarked and
+ Heap::markCell so we can eliminate the JSCell::marked and
+ JSCell::markCellDirect functions.
+
+ * runtime/JSCell.h: Removed JSCell's markCellDirect and marked member
+ functions. Added a comment explaining that asCell should be deprecated
+ in favor of the JSValue asCell member function.
+ (JSC::MarkStack::append): Added the assertion that catches callers
+ that have set the HasDefaultMark bit incorrectly. Changed
+ code that reads and writes the mark bit to use Heap::isCellMarked and
+ Heap::markCell so we can eliminate the JSCell::marked and
+ JSCell::markCellDirect functions. Moved the overload of
+ MarkStack::append for JSValue here so it can call through to the cell
+ version. The old version had a copy of all the code instead, but that
+ repeated the conversion from JSValue to JSCell* and the check for
+ whether a value is a cell multiple times.
+ (JSC::Structure::markAggregate): Moved this function here to avoid
+ dependencies for Structure.h, since this calls MarkStack::append.
- This is a 2.6% speedup on the V8 Raytrace benchmark, and strangely also
- a 4.7% speedup on the V8 Arguments benchmark, even though it uses
- neither of the two new opcodes.
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::markChildren): Added code to clear
+ m_isCheckingForDefaultMarkViolation so the marking done by JSObject
+ doesn't trigger the assertion.
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitJumpIfTrue):
- (JSC::CodeGenerator::emitJumpIfFalse):
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
- * VM/Opcode.h:
+ * runtime/JSValue.h: Moved some stray includes that were outside the
+ header guard inside it. Not sure how that happened! Removed the
+ GC-related member functions markChildren, hasChildren, marked, and
+ markDirect.
-2008-10-22 Darin Fisher <darin@chromium.org>
+ * runtime/JSWrapperObject.h: Made markChildren private.
+ (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the
+ HasDefaultMark bit was set.
- Reviewed by Eric Seidel.
+ * runtime/MarkStack.h: Added m_isCheckingForDefaultMarkViolation and
+ initialized it to false. Moved the append function body from here to
+ JSCell.h. Added a declaration of a private markChildren function used
+ inside the drain function.
- Should not define PLATFORM(WIN,MAC,GTK) when PLATFORM(CHROMIUM) is defined
- https://bugs.webkit.org/show_bug.cgi?id=21757
+ * runtime/SmallStrings.cpp:
+ (JSC::SmallStrings::markChildren): Changed the name and style of this
+ function to match other functions. This allows us to share the normal
+ mark stack code path.
- PLATFORM(CHROMIUM) implies HAVE_ACCESSIBILITY
+ * runtime/SmallStrings.h: Changed the name and interface of mark to
+ the more-normal markChildren style.
- * wtf/Platform.h:
+ * runtime/Structure.h: Moved the body of markAggregate into the
+ JSCell.h to avoid a circular dependency with JSCell.h.
-2008-10-22 Cameron Zwarich <zwarich@apple.com>
+2009-09-04 Darin Adler <darin@apple.com>
- Reviewed by Alexey Proskuryakov.
+ Reviewed by Geoff Garen.
- Correct opcode names in documentation.
+ DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32)
+ https://bugs.webkit.org/show_bug.cgi?id=28909
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
+ Part one.
-2008-10-21 Oliver Hunt <oliver@apple.com>
+ Make some improvements to garbage collection code:
- RS=Maciej Stachowiak.
+ 1) Fix the two classes that had the default mark bit set but
+ should not.
+ 2) Remove checks of the mark bit outside the MarkStack::append
+ function; they are redundant.
+ 3) Make more callers use the checked asCell and asObject
+ casting functions rather than unchecked casts.
+ 4) Removed some GC-related functions because these operations are
+ no longer things that code other than the core GC code needs
+ to do directly. Fixed callers that were calling them.
- Force FastMalloc to make all allocated pages executable in
- a vague hope this will allow the Win2k3 bot to be able to
- run tests.
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::markAggregate): Removed unneeded check of the mark
+ bit before calling MarkStack::append.
- Filed Bug 21783: Need more granular control over allocation of executable memory
- to cover a more granular version of this patch.
+ * interpreter/Register.h: Removed unneeded marked and markChildren
+ functions.
- * wtf/TCSystemAlloc.cpp:
- (TryVirtualAlloc):
+ * jit/JITStubs.cpp:
+ (op_eq): Removed unneeded assertions, instead using checked casting
+ functions such as asObject.
-2008-10-21 Alexey Proskuryakov <ap@webkit.org>
+ * runtime/ArgList.h: Added now-needed forward declaration of MarkStack.
- Reviewed by Darin Adler.
+ * runtime/GetterSetter.cpp:
+ (JSC::GetterSetter::markChildren): Remmoved unneeded check of the mark bit.
- https://bugs.webkit.org/show_bug.cgi?id=21769
- MessagePort should be GC protected if there are messages to be delivered
+ * runtime/GlobalEvalFunction.h:
+ (JSC::GlobalEvalFunction::createStructure): Added. Fixes a bug where the
+ HasDefaultMark bit was set.
- * wtf/MessageQueue.h:
- (WTF::::isEmpty): Added. Also added a warning for methods that return a snapshot of queue
- state, thus likely to cause race conditions.
+ * runtime/JSCell.cpp:
+ (JSC::JSCell::getObject): Use asObject to avoid a direct static_cast.
-2008-10-21 Darin Adler <darin@apple.com>
+ * runtime/JSObject.h:
+ (JSC::asObject): Added an overload for JSCell* and changed the JSValue
+ version to call it.
+ (JSC::JSValue::get): Use asObject to avoid a direct static_cast.
- Reviewed by Maciej Stachowiak.
+ * runtime/JSWrapperObject.h: Made markChildren private.
+ (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the
+ HasDefaultMark bit was set. Later we may want to optimize this for
+ wrapper types that never have cells in their internal values, but there
+ is no measured performance regression in SunSpider or V8 doing this
+ all the time.
- - convert post-increment to pre-increment in a couple more places for speed
+ * runtime/MarkStack.cpp: Tweaked formatting.
- Speeds up V8 benchmarks a little on most computers. (But, strangely, slows
- them down a little on my computer.)
+2009-09-04 Kevin Ollivier <kevino@theolliviers.com>
- * kjs/nodes.cpp:
- (JSC::statementListEmitCode): Removed default argument, since we always want
- to specify this explicitly.
- (JSC::ForNode::emitCode): Tolerate ignoredResult() as the dst -- means the
- same thing as 0.
- (JSC::ReturnNode::emitCode): Ditto.
- (JSC::ThrowNode::emitCode): Ditto.
- (JSC::FunctionBodyNode::emitCode): Pass ignoredResult() so that we know we
- don't have to compute the result of function statements.
+ wx build fix. Switch USE_ defines over to the compiler so that they can be
+ checked by files not including config.h (like WebCorePrefix.h).
-2008-10-21 Peter Kasting <pkasting@google.com>
+ * wtf/Platform.h:
- Reviewed by Maciej Stachowiak.
+2009-09-03 Yong Li <yong.li@torchmobile.com>
- Fix an include of a non-public header to use "" instead of <>.
+ Reviewed by David Levin.
- * API/JSProfilerPrivate.cpp:
+ Remove unnecessary dependency on unistd.h
+ https://bugs.webkit.org/show_bug.cgi?id=28962
-2008-10-20 Sam Weinig <sam@webkit.org>
+ * runtime/Completion.cpp:
- Reviewed by Cameron Zwarich.
+2009-09-03 Fumitoshi Ukai <ukai@chromium.org>
- Fix for https://bugs.webkit.org/show_bug.cgi?id=21766
- REGRESSION: 12 JSC tests fail
+ Reviewed by Eric Seidel.
- The JSGlobalObject was mutating the shared nullProtoStructureID when
- used in jsc. Instead of using nullProtoStructureID, use a new StructureID.
+ Add strnstr for Linux and Windows in StringExtras.h
+ https://bugs.webkit.org/show_bug.cgi?id=28901
- * API/JSCallbackObject.h:
- * API/JSCallbackObjectFunctions.h:
- (JSC::::JSCallbackObject):
- * API/JSContextRef.cpp:
- (JSGlobalContextCreateInGroup):
- * kjs/JSGlobalObject.h:
- (JSC::JSGlobalObject::JSGlobalObject):
- * kjs/Shell.cpp:
- (GlobalObject::GlobalObject):
- (jscmain):
+ * wtf/StringExtras.h:
+ (strnstr):
-2008-10-20 Cameron Zwarich <zwarich@apple.com>
+2009-09-03 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- Reviewed by Maciej Stachowiak.
+ Reviewed by Darin Adler.
- Remove an untaken branch in CodeGenerator::emitJumpIfFalse(). This
- function is never called with a backwards target LabelID, and there is
- even an assertion to this effect at the top of the function body.
+ Allow custom memory allocation control for JavaScriptCore's HashEntry class
+ https://bugs.webkit.org/show_bug.cgi?id=27830
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitJumpIfFalse):
+ Inherits HashEntry class from FastAllocBase because it has been
+ instantiated by 'new' JavaScriptCore/runtime/Lookup.cpp:32.
-2008-10-20 Cameron Zwarich <zwarich@apple.com>
+ * runtime/Lookup.h:
- Rubber-stamped by Sam Weinig.
+2009-09-02 Gavin Barraclough <barraclough@apple.com>
- Add opcode documentation for undocumented opcodes.
+ Should crash if JIT code buffer allocation fails.
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
+ https://bugs.webkit.org/show_bug.cgi?id=28926
+ <rdar://problem/7031922>
-2008-10-16 Sam Weinig <sam@webkit.org>
+ * jit/ExecutableAllocatorPosix.cpp:
+ (JSC::ExecutablePool::systemAlloc):
+ * jit/ExecutableAllocatorWin.cpp:
+ (JSC::ExecutablePool::systemAlloc):
- Reviewed by Cameron Zwarich.
+2009-09-02 Kevin Ollivier <kevino@theolliviers.com>
- Fix for https://bugs.webkit.org/show_bug.cgi?id=21683
- Don't create intermediate StructureIDs for builtin objects
+ waf build fixes for Windows/MSVC.
- Second stage in reduce number of StructureIDs created when initializing the
- JSGlobalObject.
+ * wscript:
- - Use putDirectWithoutTransition for the remaining singleton objects to reduce
- the number of StructureIDs create for about:blank from 132 to 73.
+2009-09-02 Kevin Ollivier <kevino@theolliviers.com>
- * kjs/ArrayConstructor.cpp:
- (JSC::ArrayConstructor::ArrayConstructor):
- * kjs/BooleanConstructor.cpp:
- (JSC::BooleanConstructor::BooleanConstructor):
- * kjs/BooleanPrototype.cpp:
- (JSC::BooleanPrototype::BooleanPrototype):
- * kjs/DateConstructor.cpp:
- (JSC::DateConstructor::DateConstructor):
- * kjs/ErrorConstructor.cpp:
- (JSC::ErrorConstructor::ErrorConstructor):
- * kjs/ErrorPrototype.cpp:
- (JSC::ErrorPrototype::ErrorPrototype):
- * kjs/FunctionConstructor.cpp:
- (JSC::FunctionConstructor::FunctionConstructor):
- * kjs/FunctionPrototype.cpp:
- (JSC::FunctionPrototype::FunctionPrototype):
- (JSC::FunctionPrototype::addFunctionProperties):
- * kjs/FunctionPrototype.h:
- (JSC::FunctionPrototype::createStructureID):
- * kjs/InternalFunction.cpp:
- * kjs/InternalFunction.h:
- (JSC::InternalFunction::InternalFunction):
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::reset):
- * kjs/JSObject.h:
- * kjs/MathObject.cpp:
- (JSC::MathObject::MathObject):
- * kjs/NumberConstructor.cpp:
- (JSC::NumberConstructor::NumberConstructor):
- * kjs/NumberPrototype.cpp:
- (JSC::NumberPrototype::NumberPrototype):
- * kjs/ObjectConstructor.cpp:
- (JSC::ObjectConstructor::ObjectConstructor):
- * kjs/RegExpConstructor.cpp:
- (JSC::RegExpConstructor::RegExpConstructor):
- * kjs/RegExpPrototype.cpp:
- (JSC::RegExpPrototype::RegExpPrototype):
- * kjs/StringConstructor.cpp:
- (JSC::StringConstructor::StringConstructor):
- * kjs/StringPrototype.cpp:
- (JSC::StringPrototype::StringPrototype):
- * kjs/StructureID.cpp:
- (JSC::StructureID::dumpStatistics):
- * kjs/StructureID.h:
- (JSC::StructureID::setPrototypeWithoutTransition):
+ Build fix for building on Windows.
-2008-10-20 Alp Toker <alp@nuanti.com>
+ * wtf/ThreadingPthreads.cpp:
- Fix autotools dist build target by listing recently added header
- files only. Not reviewed.
+2009-09-02 Norbert Leser <norbert.leser@nokia.com>
- * GNUmakefile.am:
+ Reviewed by Eric Seidel.
-2008-10-20 Geoffrey Garen <ggaren@apple.com>
+ Use fastMalloc when neither MMAP nor VIRTUALALLOC are enabled
+
+ RegisterFile constructor currently throws #error when both
+ MMAP and VIRTUALALLOC conditions fail.
+ On any platform that does not provide these features
+ (for instance, Symbian),
+ the fallback should be regular malloc (or fastMalloc).
+ It is functionally equivalent in this case, even though it may
+ have certain drawbacks such as lack of dynamic pre-allocation.
- Reviewed by Anders Carlsson.
+ * interpreter/RegisterFile.cpp:
+ (JSC::RegisterFile::~RegisterFile):
+ * interpreter/RegisterFile.h:
+ (JSC::RegisterFile::RegisterFile):
- * VM/Machine.cpp:
- (JSC::Machine::tryCacheGetByID): Removed a redundant and sometimes
- incorrect cast, which started ASSERTing after Darin's last checkin.
+2009-08-31 Robert Agoston <Agoston.Robert@stud.u-szeged.hu>
-2008-10-20 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Gavin Barraclough.
- Not reviewed.
-
- Re-enable CTI, which I accidentally disabled while checking in fixes
- to bytecode.
+ Fixed typo.
+ https://bugs.webkit.org/show_bug.cgi?id=28691
- * wtf/Platform.h:
+ * parser/Parser.h:
+ (JSC::Parser::parse):
-2008-10-20 Alp Toker <alp@nuanti.com>
+2009-08-27 Oliver Hunt <oliver@apple.com>
- Rubber-stamped by Mark Rowe.
+ Reviewed by Maciej Stachowiak.
- Typo fix in function name: mimimum -> minimum.
+ JSON Stringifier does not follow ES5 spec for handling of Number, String and Boolean objects
+ https://bugs.webkit.org/show_bug.cgi?id=28797
- * kjs/DateMath.cpp:
- (JSC::minimumYearForDST):
- (JSC::equivalentYearForDST):
+ Fixed unwrapBoxedPrimitive to do the right thing, which necessitated a couple of new exception
+ checks, and corrected the logic in gap to correctly convert Number and String objects.
-2008-10-20 Alp Toker <alp@nuanti.com>
+ * runtime/JSONObject.cpp:
+ (JSC::unwrapBoxedPrimitive):
+ (JSC::gap):
+ (JSC::Stringifier::Stringifier):
+ (JSC::Stringifier::appendStringifiedValue):
- Reviewed by Mark Rowe.
+2009-08-27 Oliver Hunt <oliver@apple.com>
- Use pthread instead of GThread where possible in the GTK+ port. This
- fixes issues with global initialisation, particularly on GTK+/Win32
- where a late g_thread_init() will cause hangs.
+ Reviewed by Adam Roben.
- * GNUmakefile.am:
- * wtf/Platform.h:
- * wtf/Threading.h:
- * wtf/ThreadingGtk.cpp:
- * wtf/ThreadingPthreads.cpp:
+ JSON.stringify replacer array does not accept values that are not string primitives.
+ https://bugs.webkit.org/show_bug.cgi?id=28788
-2008-10-20 Geoffrey Garen <ggaren@apple.com>
+ Update the JSON stringifier to initialise its replacer array according to the most
+ recent version of the spec.
- Reviewed by Darin Adler.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=21735
- Emit profiling instrumentation only if the Web Inspector's profiling
- feature is enabled
+ * runtime/Identifier.h:
+ (JSC::Identifier::from):
+ * runtime/JSONObject.cpp:
+ (JSC::Stringifier::Stringifier):
- 22.2% speedup on empty function call benchmark.
- 2.9% speedup on v8 benchmark.
- 0.7% speedup on SunSpider.
-
- Lesser but similar speedups in bytecode.
-
- * VM/CTI.cpp:
- (JSC::CTI::compileOpCall):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases): Nixed JITed profiler hooks. Profiler
- hooks now have their own opcodes. Added support for compiling profiler
- hook opcodes.
-
- (JSC::CodeBlock::dump): Dump support for the new profiling opcodes.
-
- * VM/CodeGenerator.h:
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::CodeGenerator):
- (JSC::CodeGenerator::emitCall):
- (JSC::CodeGenerator::emitConstruct): Conditionally emit profiling hooks
- around call and construct, at the call site. (It's easier to get things
- right this way, if you have profiled code calling non-profiled code.
- Also, you get a slightly more accurate profile, since you charge the full
- cost of the call / construct operation to the callee.)
-
- Also, fixed a bug where construct would fetch the ".prototype" property
- from the constructor before evaluating the arguments to the constructor,
- incorrectly allowing an "invalid constructor" exception to short-circuit
- argument evaluation. I encountered this bug when trying to make
- constructor exceptions work with profiling.
-
- * VM/Machine.cpp:
- (JSC::Machine::callEval): Removed obsolete profiler hooks.
-
- (JSC::Machine::throwException): Added a check for an exception thrown
- within a call instruction. We didn't need this before because the call
- instruction would check for a valid call before involing the profiler.
- (JSC::Machine::execute): Added a didExecute hook at the end of top-level
- function invocation, since op_ret no longer does this for us.
-
- (JSC::Machine::privateExecute): Removed obsolete profiler hooks. Added
- profiler opcodes. Changed some ++vPC to vPC[x] notation, since the
- latter is better for performance, and it makes reasoning about the
- current opcode in exception handling much simpler.
-
- (JSC::Machine::cti_op_call_NotJSFunction): Removed obsolete profiler
- hooks.
-
- (JSC::Machine::cti_op_create_arguments_no_params): Added missing
- CTI_STACK_HACK that I noticed when adding CTI_STACK_HACK to the new
- profiler opcode functions.
-
- (JSC::Machine::cti_op_profile_will_call):
- (JSC::Machine::cti_op_profile_did_call): The new profiler opcode
- functions.
+2009-08-27 Alexey Proskuryakov <ap@apple.com>
- (JSC::Machine::cti_op_construct_NotJSConstruct): Removed obsolete profiler
- hooks.
+ Reviewed by Oliver Hunt.
- * VM/Machine.h:
- (JSC::Machine::isCallOpcode): Helper for exception handling.
+ https://bugs.webkit.org/show_bug.cgi?id=28753
+ <rdar://problem/7173448> Excessive number of threads (and a crash)
- * VM/Opcode.h: Declare new opcodes.
+ * wtf/Threading.h: (WTF::atomicIncrement): Changed atomicIncrement to match decrement
+ and return the new value. Also added using directives for these functions, to match
+ te rest of WTF.
- * kjs/JSGlobalObject.h:
- (JSC::JSGlobalObject::supportsProfiling): Added virtual interface that
- allows WebCore to specify whether the target global object has the Web
- Inspector's profiling feature enabled.
+2009-08-27 Brent Fulgham <bfulgham@webkit.org>
- * profiler/Profiler.cpp:
- (JSC::Profiler::willExecute):
- (JSC::Profiler::didExecute):
- (JSC::Profiler::createCallIdentifier):
- * profiler/Profiler.h: Added support for invoking the profiler with
- an arbitrary JSValue*, and not a known object. We didn't need this
- before because the call instruction would check for a valid call before
- involing the profiler.
+ Reviewed by Adam Roben.
-2008-10-20 Darin Adler <darin@apple.com>
+ Link the testapi against CFLite when building the WinCairo port.
- Reviewed by Geoff Garen.
+ * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add new Release_CFLite
+ target. Update all targets to inherit from either the
+ JavaScriptCF.vsprops (Apple target) or the JavaScriptCFLite.vsprops
+ file (WinCairo target).
+ * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Remove
+ input file CoreFoundation.lib. This is provided by either the
+ JavaScriptCF.vsprops or JavaScriptCFLite.vsprops file.
- - get CTI working on Windows again
-
- * VM/CTI.cpp:
- (JSC::CTI::emitCTICall): Add an overload for functions that
- return JSObject*.
- * VM/CTI.h: Use JSValue* and JSObject* as return types for
- cti_op functions. Apparently, MSVC doesn't handle returning
- the JSValuePtr struct in a register. We'll have to look into
- this more.
-
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_convert_this):
- (JSC::Machine::cti_op_add):
- (JSC::Machine::cti_op_pre_inc):
- (JSC::Machine::cti_op_new_object):
- (JSC::Machine::cti_op_get_by_id):
- (JSC::Machine::cti_op_get_by_id_second):
- (JSC::Machine::cti_op_get_by_id_generic):
- (JSC::Machine::cti_op_get_by_id_fail):
- (JSC::Machine::cti_op_instanceof):
- (JSC::Machine::cti_op_del_by_id):
- (JSC::Machine::cti_op_mul):
- (JSC::Machine::cti_op_new_func):
- (JSC::Machine::cti_op_push_activation):
- (JSC::Machine::cti_op_call_NotJSFunction):
- (JSC::Machine::cti_op_new_array):
- (JSC::Machine::cti_op_resolve):
- (JSC::Machine::cti_op_construct_JSConstructFast):
- (JSC::Machine::cti_op_construct_NotJSConstruct):
- (JSC::Machine::cti_op_get_by_val):
- (JSC::Machine::cti_op_sub):
- (JSC::Machine::cti_op_lesseq):
- (JSC::Machine::cti_op_negate):
- (JSC::Machine::cti_op_resolve_base):
- (JSC::Machine::cti_op_resolve_skip):
- (JSC::Machine::cti_op_resolve_global):
- (JSC::Machine::cti_op_div):
- (JSC::Machine::cti_op_pre_dec):
- (JSC::Machine::cti_op_not):
- (JSC::Machine::cti_op_eq):
- (JSC::Machine::cti_op_lshift):
- (JSC::Machine::cti_op_bitand):
- (JSC::Machine::cti_op_rshift):
- (JSC::Machine::cti_op_bitnot):
- (JSC::Machine::cti_op_new_func_exp):
- (JSC::Machine::cti_op_mod):
- (JSC::Machine::cti_op_less):
- (JSC::Machine::cti_op_neq):
- (JSC::Machine::cti_op_urshift):
- (JSC::Machine::cti_op_bitxor):
- (JSC::Machine::cti_op_new_regexp):
- (JSC::Machine::cti_op_bitor):
- (JSC::Machine::cti_op_call_eval):
- (JSC::Machine::cti_op_throw):
- (JSC::Machine::cti_op_next_pname):
- (JSC::Machine::cti_op_typeof):
- (JSC::Machine::cti_op_is_undefined):
- (JSC::Machine::cti_op_is_boolean):
- (JSC::Machine::cti_op_is_number):
- (JSC::Machine::cti_op_is_string):
- (JSC::Machine::cti_op_is_object):
- (JSC::Machine::cti_op_is_function):
- (JSC::Machine::cti_op_stricteq):
- (JSC::Machine::cti_op_nstricteq):
- (JSC::Machine::cti_op_to_jsnumber):
- (JSC::Machine::cti_op_in):
- (JSC::Machine::cti_op_push_new_scope):
- (JSC::Machine::cti_op_del_by_val):
- (JSC::Machine::cti_op_new_error):
- (JSC::Machine::cti_vm_throw):
- Change these functions to return pointer types, and never
- JSValuePtr.
- * VM/Machine.h: Ditto.
-
-2008-10-20 Geoffrey Garen <ggaren@apple.com>
+2009-08-27 Steve Falkenburg <sfalken@apple.com>
- Reviewed by Darin Adler.
+ Reviewed by Geoff Garen.
+
+ Fix Windows-specific crash due to missing memory clearing call.
- Fixed some recent break-age in bytecode mode.
+ * runtime/Collector.cpp:
+ (JSC::Heap::allocateBlock):
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::printStructureIDs): Fixed up an ASSERT caused by
- Gavin's last checkin. This is a temporary fix so I can keep on moving.
- I'll send email about what I think is an underlying problem soon.
+2009-08-27 Brent Fulgham <bfulgham@webkit.org>
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute): Removed a redundant and sometimes
- incorrect cast, which started ASSERTing after Darin's last checkin.
+ Build fix: JavaScriptCore_debug.def missing some exports. Apple
+ Windows build does not use this file, so it was not noticed previously.
-2008-10-20 Darin Adler <darin@apple.com>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- - another similar Windows build fix
+2009-08-27 Gavin Barraclough <barraclough@apple.com>
- * VM/CTI.cpp: Changed return type to JSObject* instead of JSValuePtr.
+ Reviewed by Oliver Hunt.
-2008-10-20 Darin Adler <darin@apple.com>
+ x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates.
+ https://bugs.webkit.org/show_bug.cgi?id=28317
- - try to fix Windows build
+ Missed one, fix part II.
- * VM/CTI.cpp: Use JSValue* instead of JSValuePtr for ctiTrampoline.
- * VM/CTI.h: Ditto.
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::move):
+ * assembler/X86Assembler.h:
+ (JSC::CAN_SIGN_EXTEND_8_32):
-2008-10-19 Darin Adler <darin@apple.com>
+2009-08-27 Oliver Hunt <oliver@apple.com>
- Reviewed by Cameron Zwarich.
+ Reviewed by Adam Roben.
- - finish https://bugs.webkit.org/show_bug.cgi?id=21732
- improve performance by eliminating JSValue as a base class for JSCell
+ JSON.stringify replacer array does not accept values that are not string primitives.
+ https://bugs.webkit.org/show_bug.cgi?id=28788
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_call_profiler): Use asFunction.
- (JSC::Machine::cti_vm_lazyLinkCall): Ditto.
- (JSC::Machine::cti_op_construct_JSConstructFast): Use asObject.
+ Update the JSON stringifier to initialise its replacer array according to the most
+ recent version of the spec.
- * kjs/JSCell.h: Re-sort friend classes. Eliminate inheritance from
- JSValue. Changed cast in asCell from static_cast to reinterpret_cast.
- Removed JSValue::getNumber(double&) and one of JSValue::getObject
- overloads.
+ * runtime/Identifier.h:
+ (JSC::Identifier::from):
+ * runtime/JSONObject.cpp:
+ (JSC::Stringifier::Stringifier):
- * kjs/JSValue.h: Made the private constructor and destructor both
- non-virtual and also remove the definitions. This class can never
- be instantiated or derived.
+2009-08-27 Oliver Hunt <oliver@apple.com>
-2008-10-19 Darin Adler <darin@apple.com>
+ Reviewed by Alexey Proskuryakov.
- Reviewed by Cameron Zwarich.
+ JSON parser accepts trailing comma in array literals
+ https://bugs.webkit.org/show_bug.cgi?id=28779
- - next step of https://bugs.webkit.org/show_bug.cgi?id=21732
- improve performance by eliminating JSValue as a base class for JSCell
+ Update parser to correctly fail if there's a trailing comma.
- Change JSValuePtr from a typedef into a class. This allows us to support
- conversion from JSCell* to JSValuePtr even if JSCell isn't derived from
- JSValue.
+ * runtime/LiteralParser.cpp:
+ (JSC::LiteralParser::parse):
- * JavaScriptCore.exp: Updated symbols that involve JSValuePtr, since
- it's now a distinct type.
+2009-08-26 Oliver Hunt <oliver@apple.com>
- * API/APICast.h:
- (toRef): Extract the JSValuePtr payload explicitly since we can't just
- cast any more.
- * VM/CTI.cpp:
- (JSC::CTI::asInteger): Ditto.
+ Reviewed by Gavin Barraclough.
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::addConstant): Get at the payload directly.
- (JSC::CodeGenerator::emitLoad): Added an overload of JSCell* because
- otherwise classes derived from JSValue end up calling the bool
- overload instead of JSValuePtr.
- * VM/CodeGenerator.h: Ditto. Also update traits to use JSValue*
- and the payload functions.
+ 'this' in JSON.parse reviver is the global object
+ https://bugs.webkit.org/show_bug.cgi?id=28752
- * VM/Register.h: Added a JSCell* overload and use of payload functions.
+ This is a technically simple change, we merely update the code for calling
+ the reviver function to pass the correct this object. Doing so however
+ exposes the holder to arbitrary mutation by the reviver function so it is
+ necessary for us to now guard all property accesses against the possibility
+ of failure.
- * kjs/JSCell.h:
- (JSC::asCell): Use payload function.
- (JSC::JSValue::asCell): Use JSValue* instead of JSValuePtr.
- (JSC::JSValuePtr::JSValuePtr): Added. Constructor that takes JSCell*
- and creates a JSValuePtr.
+ * runtime/JSArray.h:
+ JSON needs to delete a property from the array, so we friend its
+ Walker class so that we can make a non-virtual call to the arrays
+ delete and getOwnPropertySlot methods.
+ * runtime/JSONObject.cpp:
+ (JSC::Walker::callReviver):
+ We need to pass the correct this object
+ (JSC::Walker::walk):
+ Update calls to callReviver, and update property logic logic
+ to correctly handle the holder being mutated by the reviver
+ function.
- * kjs/JSImmediate.h: Added JSValuePtr class. Also updated makeValue
- and makeInt to work with JSValue* and the payload function.
+2009-08-26 Alice Liu <alice.liu@apple.com>
- * kjs/JSValue.h: Added == and != operators for JSValuePtr. Put them
- here because eventually all the JSValue functions should go here
- except what's needed by JSImmediate. Also fix asValue to use
- JSValue* instead of JSValuePtr.
+ Windows build fix: added some exported symbols
- * kjs/PropertySlot.h: Change constructor to take JSValuePtr.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- * kjs/protect.h: Update gcProtect functions to work with JSCell*
- as well as JSValuePtr. Also updated the ProtectedPtr<JSValuePtr>
- specialization to work more directly. Also changed all the call
- sites to use gcProtectNullTolerant.
+2009-08-26 Geoffrey Garen <ggaren@apple.com>
-2008-10-19 Darin Adler <darin@apple.com>
+ Windows build fix: Removed some exported symbols that no longer exist.
- Reviewed by Oliver Hunt.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- - next step of https://bugs.webkit.org/show_bug.cgi?id=21732
- improve performance by eliminating JSValue as a base class for JSCell
+2009-08-26 Gavin Barraclough <barraclough@apple.com>
- Remove most uses of JSValue, which will be removed in a future patch.
+ Reviewed by Olliejver Hunt.
- * VM/Machine.cpp:
- (JSC::fastToUInt32): Call toUInt32SlowCase function; no longer a member
- of JSValue.
- * kjs/JSNumberCell.h:
- (JSC::JSNumberCell::toInt32): Ditto.
- (JSC::JSNumberCell::toUInt32): Ditto.
+ x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates.
+ https://bugs.webkit.org/show_bug.cgi?id=28317
- * kjs/JSValue.cpp:
- (JSC::toInt32SlowCase): Made a non-member function.
- (JSC::JSValue::toInt32SlowCase): Changed to call non-member function.
- (JSC::toUInt32SlowCase): More of the same.
- (JSC::JSValue::toUInt32SlowCase): Ditto.
+ We rely on a slightly OS X specific behaviour, that x86-64 applications have a 4Gb zero page,
+ so pointers are never representable as a 32-bit integer, and always have to be represented by
+ a separate immediate load instruction, rather than within the immediate field of an arithmetic
+ or memory operation.
- * kjs/JSValue.h: Moved static member function so they are no longer
- member functions at all.
+ We explicitly check for a couple of cases where a value might be representable in 32-bit, but
+ these probably never kick in on Mac OS, and only kick in to hose GTK. Deleting these does not
+ show a performance degradation on SunSpider. Remove.
- * VM/CTI.h: Removed forward declaration of JSValue.
- * VM/ExceptionHelpers.h: Ditto.
- * kjs/CallData.h: Ditto.
- * kjs/ConstructData.h: Ditto.
- * kjs/JSGlobalObjectFunctions.h: Ditto.
- * kjs/PropertyMap.h: Ditto.
- * kjs/StructureID.h: Ditto.
- * kjs/collector.h: Ditto.
- * kjs/completion.h: Ditto.
+ * assembler/MacroAssemblerX86_64.h:
+ (JSC::MacroAssemblerX86_64::storePtr):
+ (JSC::MacroAssemblerX86_64::branchPtr):
+
+2009-08-26 Geoffrey Garen <ggaren@apple.com>
- * kjs/grammar.y:
- (JSC::makeBitwiseNotNode): Call new non-member toInt32 function.
- (JSC::makeLeftShiftNode): More of the same.
- (JSC::makeRightShiftNode): Ditto.
+ Reviewed by Oliver Hunt.
- * kjs/protect.h: Added a specialization for ProtectedPtr<JSValuePtr>
- so this can be used with JSValuePtr.
+ A bit of Collector refatoring.
+
+ SunSpider says no change. v8 says 1.003x faster (1.02x faster on splay).
-2008-10-18 Darin Adler <darin@apple.com>
+ * JavaScriptCore.exp:
- Reviewed by Oliver Hunt.
+ * runtime/JSCell.cpp:
+ (JSC::JSCell::toPrimitive):
+ (JSC::JSCell::getPrimitiveNumber):
+ (JSC::JSCell::toBoolean):
+ (JSC::JSCell::toNumber):
+ (JSC::JSCell::toString):
+ (JSC::JSCell::toObject): Removed pure virtual functions from
+ JSCell, so the collector can construct one. This allowed
+ me to remove a bunch of ASSERT_NOT_REACHED throughout the
+ code, too.
- - next step of https://bugs.webkit.org/show_bug.cgi?id=21732
- improve performance by eliminating JSValue as a base class for JSCell
+ * runtime/JSCell.h:
+ (JSC::JSCell::JSCell): ditto
+ (JSC::Heap::heap): Inlined this function because it's trivial.
- Tweak a little more to get closer to where we can make JSValuePtr a class.
+ * JavaScriptCore.exp:
- * API/APICast.h:
- (toJS): Change back to JSValue* here, since we're converting the
- pointer type.
- * VM/CTI.cpp:
- (JSC::CTI::unlinkCall): Call asPointer.
- * VM/CTI.h: Cast to JSValue* here, since it's a pointer cast.
- * kjs/DebuggerCallFrame.h:
- (JSC::DebuggerCallFrame::DebuggerCallFrame): Call noValue.
- * kjs/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData): Call noValue.
- * kjs/JSImmediate.cpp:
- (JSC::JSImmediate::toObject): Remove unneeded const_cast.
- * kjs/JSWrapperObject.h:
- (JSC::JSWrapperObject::JSWrapperObject): Call noValue.
+ * runtime/Collector.cpp:
+ (JSC::Heap::destroy):
+ (JSC::Heap::allocateBlock):
+ (JSC::Heap::freeBlock):
+ (JSC::Heap::freeBlocks): Renamed freeHeap to freeBlocks, since
+ it doesn't actually free the Heap object.
+ (JSC::Heap::heapAllocate):
+ (JSC::Heap::sweep):
+ * runtime/Collector.h: Refactored block allocation and destruction
+ into helper functions.
+
+ * runtime/GetterSetter.cpp:
+ * runtime/JSAPIValueWrapper.cpp:
+ * runtime/JSPropertyNameIterator.cpp: Removed dummy implementations
+ of pure virtual functions. (See above.)
+
+=== End re-roll-in of r47738:47740 with Windows crash fixed ===
-2008-10-18 Darin Adler <darin@apple.com>
+2009-08-26 Geoffrey Garen <ggaren@apple.com>
- - fix non-all-in-one build
+ Build fix: start out with a 32-bit value to avoid a shortening warning.
- * kjs/completion.h:
- (JSC::Completion::Completion): Add include of JSValue.h.
+ * runtime/Collector.cpp:
+ (JSC::Heap::sweep):
-2008-10-18 Darin Adler <darin@apple.com>
+2009-08-24 Geoffrey Garen <ggaren@apple.com>
Reviewed by Oliver Hunt.
- - fix assertions I introduced with my casting changes
+ Substantially reduced VM thrash in the GC heap.
+
+ 1.08x faster on v8 (1.60x faster on v8-splay).
+
+ 1.40x faster on bench-alloc-nonretained.
+
+ 1.90x faster on bench-alloc-retained.
+
+ SunSpider says no change.
+
+ * runtime/Collector.cpp:
+ (JSC::Heap::heapAllocate): Fixed a long-standing bug: update a few local
+ variables unconditionally after calling collect(), since they may be used
+ even if we don't "goto scan". (In the bug I saw, usedBlocks got out of
+ sync with heap.usedBlocks).
+ (JSC::Heap::sweep): Keep enough free heap space to accomodate
+ the number of objects we'll allocate before the next GC, plus 25%, for
+ good measure.
+ * runtime/Collector.h: Bumped the block size to 256k. This seems to give
+ the best cache performance, and it prevents us from initiating lots of
+ VM traffic to recover very small chunks of memory.
- These were showing up as failures in the JavaScriptCore tests.
+=== Begin re-roll-in of r47738:47740 with Windows crash fixed ===
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_instanceof): Remove the bogus asCell casting that
- was at the top of the function, and instead cast at the point of use.
- (JSC::Machine::cti_op_construct_NotJSConstruct): Moved the cast to
- object after checking the construct type.
+2009-08-25 Drew Wilson <atwilson@google.com>
-2008-10-18 Darin Adler <darin@apple.com>
+ Reviewed by David Levin.
- - fix non-all-in-one build
+ postMessage() spec now supports sending arrays of ports
+ https://bugs.webkit.org/show_bug.cgi?id=26902
- * kjs/JSGlobalObjectFunctions.h: Add include of JSImmedate.h (for now).
+ Added OwnPtr to VectorTraits so we can store OwnPtrs in Vectors.
-2008-10-18 Darin Adler <darin@apple.com>
+ * wtf/VectorTraits.h:
- - fix build
+2009-08-26 Xan Lopez <xlopez@igalia.com>
- * kjs/interpreter.h: Include JSValue.h instead of JSImmediate.h.
+ Rubber-stamped by Gustavo Noronha.
-2008-10-18 Darin Adler <darin@apple.com>
+ Remove duplicated files from file list.
- * kjs/interpreter.h: Fix include of JSImmediate.h.
+ * GNUmakefile.am:
-2008-10-18 Darin Adler <darin@apple.com>
+2009-08-26 Oliver Hunt <oliver@apple.com>
- - fix non-all-in-one build
+ Reviewed by NOBODY (Build fix).
- * kjs/interpreter.h: Add include of JSImmediate.h.
+ More export fixes.
-2008-10-18 Darin Adler <darin@apple.com>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- - fix non-all-in-one build
+2009-08-26 Oliver Hunt <oliver@apple.com>
- * kjs/ConstructData.h: Add include of JSImmedate.h (for now).
+ Reviewed by NOBODY (Build fix).
-2008-10-18 Darin Adler <darin@apple.com>
+ Hopefully fix all the exports from JSC on windows
- - try to fix Windows build
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- * VM/Machine.cpp:
- (JSC::Machine::Machine): Use JSCell* type since MSVC seems to only allow
- calling ~JSCell directly if it's a JSCell*.
+2009-08-26 Oliver Hunt <oliver@apple.com>
-2008-10-18 Darin Adler <darin@apple.com>
+ Reviewed by NOBODY (Build fixes).
- Reviewed by Cameron Zwarich.
+ Forgot I added files to JavaScriptCore.
- - next step on https://bugs.webkit.org/show_bug.cgi?id=21732
- improve performance by eliminating JSValue as a base class for JSCell
+ * GNUmakefile.am:
+ * JavaScriptCore.gypi:
+ * JavaScriptCore.pri:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCoreSources.bkl:
- Use JSValuePtr everywhere instead of JSValue*. In the future, we'll be
- changing JSValuePtr to be a class, and then eventually renaming it
- to JSValue once that's done.
+2009-08-25 Oliver Hunt <oliver@apple.com>
- * JavaScriptCore.exp: Update entry points, since some now take JSValue*
- instead of const JSValue*.
+ Reviewed by Gavin Barraclough.
- * API/APICast.h:
- * API/JSCallbackConstructor.h:
- * API/JSCallbackFunction.cpp:
- * API/JSCallbackFunction.h:
- * API/JSCallbackObject.h:
- * API/JSCallbackObjectFunctions.h:
- * API/JSContextRef.cpp:
- * API/JSObjectRef.cpp:
- * API/JSValueRef.cpp:
- * VM/CTI.cpp:
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- * VM/CodeBlock.h:
- * VM/CodeGenerator.cpp:
- * VM/CodeGenerator.h:
- * VM/ExceptionHelpers.cpp:
- * VM/ExceptionHelpers.h:
- * VM/JSPropertyNameIterator.cpp:
- * VM/JSPropertyNameIterator.h:
- * VM/Machine.cpp:
- * VM/Machine.h:
- * VM/Register.h:
- * kjs/ArgList.cpp:
- * kjs/ArgList.h:
- * kjs/Arguments.cpp:
- * kjs/Arguments.h:
- * kjs/ArrayConstructor.cpp:
- * kjs/ArrayPrototype.cpp:
- * kjs/BooleanConstructor.cpp:
- * kjs/BooleanConstructor.h:
- * kjs/BooleanObject.h:
- * kjs/BooleanPrototype.cpp:
- * kjs/CallData.cpp:
- * kjs/CallData.h:
- * kjs/ConstructData.cpp:
- * kjs/ConstructData.h:
- * kjs/DateConstructor.cpp:
- * kjs/DateInstance.h:
- * kjs/DatePrototype.cpp:
- * kjs/DebuggerCallFrame.cpp:
- * kjs/DebuggerCallFrame.h:
- * kjs/ErrorConstructor.cpp:
- * kjs/ErrorPrototype.cpp:
- * kjs/ExecState.cpp:
- * kjs/ExecState.h:
- * kjs/FunctionConstructor.cpp:
- * kjs/FunctionPrototype.cpp:
- * kjs/GetterSetter.cpp:
- * kjs/GetterSetter.h:
- * kjs/InternalFunction.h:
- * kjs/JSActivation.cpp:
- * kjs/JSActivation.h:
- * kjs/JSArray.cpp:
- * kjs/JSArray.h:
- * kjs/JSCell.cpp:
- * kjs/JSCell.h:
- * kjs/JSFunction.cpp:
- * kjs/JSFunction.h:
- * kjs/JSGlobalData.h:
- * kjs/JSGlobalObject.cpp:
- * kjs/JSGlobalObject.h:
- * kjs/JSGlobalObjectFunctions.cpp:
- * kjs/JSGlobalObjectFunctions.h:
- * kjs/JSImmediate.cpp:
- * kjs/JSImmediate.h:
- * kjs/JSNotAnObject.cpp:
- * kjs/JSNotAnObject.h:
- * kjs/JSNumberCell.cpp:
- * kjs/JSNumberCell.h:
- * kjs/JSObject.cpp:
- * kjs/JSObject.h:
- * kjs/JSStaticScopeObject.cpp:
- * kjs/JSStaticScopeObject.h:
- * kjs/JSString.cpp:
- * kjs/JSString.h:
- * kjs/JSValue.h:
- * kjs/JSVariableObject.h:
- * kjs/JSWrapperObject.h:
- * kjs/MathObject.cpp:
- * kjs/NativeErrorConstructor.cpp:
- * kjs/NumberConstructor.cpp:
- * kjs/NumberConstructor.h:
- * kjs/NumberObject.cpp:
- * kjs/NumberObject.h:
- * kjs/NumberPrototype.cpp:
- * kjs/ObjectConstructor.cpp:
- * kjs/ObjectPrototype.cpp:
- * kjs/ObjectPrototype.h:
- * kjs/PropertyMap.h:
- * kjs/PropertySlot.cpp:
- * kjs/PropertySlot.h:
- * kjs/RegExpConstructor.cpp:
- * kjs/RegExpConstructor.h:
- * kjs/RegExpMatchesArray.h:
- * kjs/RegExpObject.cpp:
- * kjs/RegExpObject.h:
- * kjs/RegExpPrototype.cpp:
- * kjs/Shell.cpp:
- * kjs/StringConstructor.cpp:
- * kjs/StringObject.cpp:
- * kjs/StringObject.h:
- * kjs/StringObjectThatMasqueradesAsUndefined.h:
- * kjs/StringPrototype.cpp:
- * kjs/StructureID.cpp:
- * kjs/StructureID.h:
- * kjs/collector.cpp:
- * kjs/collector.h:
- * kjs/completion.h:
- * kjs/grammar.y:
- * kjs/interpreter.cpp:
- * kjs/interpreter.h:
- * kjs/lookup.cpp:
- * kjs/lookup.h:
- * kjs/nodes.h:
- * kjs/operations.cpp:
- * kjs/operations.h:
- * kjs/protect.h:
- * profiler/ProfileGenerator.cpp:
- Replace JSValue* with JSValuePtr.
+ [ES5] Implement getOwnPropertyDescriptor
+ https://bugs.webkit.org/show_bug.cgi?id=28724
-2008-10-18 Darin Adler <darin@apple.com>
+ Implement the core runtime support for getOwnPropertyDescriptor.
+ This adds a virtual getOwnPropertyDescriptor method to every class
+ that implements getOwnPropertySlot that shadows the behaviour of
+ getOwnPropertySlot. The alternative would be to make getOwnPropertySlot
+ (or PropertySlots in general) provide property attribute information,
+ but quick testing showed this to be a regression.
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_call_eval): Removed stray parentheses from my
- last check-in.
+ * JavaScriptCore.exp:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * runtime/Arguments.cpp:
+ (JSC::Arguments::getOwnPropertyDescriptor):
+ * runtime/Arguments.h:
+ * runtime/ArrayPrototype.cpp:
+ (JSC::ArrayPrototype::getOwnPropertyDescriptor):
+ * runtime/ArrayPrototype.h:
+ * runtime/CommonIdentifiers.h:
+ * runtime/DatePrototype.cpp:
+ (JSC::DatePrototype::getOwnPropertyDescriptor):
+ * runtime/DatePrototype.h:
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::getOwnPropertyDescriptor):
+ * runtime/JSArray.h:
+ * runtime/JSByteArray.cpp:
+ (JSC::JSByteArray::getOwnPropertyDescriptor):
+ * runtime/JSByteArray.h:
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::getOwnPropertyDescriptor):
+ * runtime/JSFunction.h:
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::getOwnPropertyDescriptor):
+ * runtime/JSNotAnObject.cpp:
+ (JSC::JSNotAnObject::getOwnPropertyDescriptor):
+ * runtime/JSNotAnObject.h:
+ * runtime/JSONObject.cpp:
+ (JSC::JSONObject::getOwnPropertySlot):
+ (JSC::JSONObject::getOwnPropertyDescriptor):
+ * runtime/JSONObject.h:
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::getOwnPropertyDescriptor):
+ (JSC::JSObject::getPropertyDescriptor):
+ * runtime/JSObject.h:
+ * runtime/JSString.cpp:
+ (JSC::JSString::getStringPropertyDescriptor):
+ (JSC::JSString::getOwnPropertyDescriptor):
+ * runtime/JSString.h:
+ * runtime/JSVariableObject.cpp:
+ (JSC::JSVariableObject::symbolTableGet):
+ * runtime/JSVariableObject.h:
+ * runtime/Lookup.h:
+ (JSC::getStaticPropertyDescriptor):
+ (JSC::getStaticFunctionDescriptor):
+ (JSC::getStaticValueDescriptor):
+ Add property descriptor equivalents of the lookup
+ table access functions
-2008-10-18 Darin Adler <darin@apple.com>
+ * runtime/MathObject.cpp:
+ (JSC::MathObject::getOwnPropertySlot):
+ (JSC::MathObject::getOwnPropertyDescriptor):
+ * runtime/MathObject.h:
+ * runtime/NumberConstructor.cpp:
+ (JSC::NumberConstructor::getOwnPropertyDescriptor):
+ * runtime/NumberConstructor.h:
+ * runtime/ObjectConstructor.cpp:
+ (JSC::ObjectConstructor::ObjectConstructor):
+ (JSC::objectConstructorGetOwnPropertyDescriptor):
+ * runtime/PropertyDescriptor.cpp: Added.
+ (JSC::PropertyDescriptor::writable):
+ (JSC::PropertyDescriptor::enumerable):
+ (JSC::PropertyDescriptor::configurable):
+ (JSC::PropertyDescriptor::hasAccessors):
+ (JSC::PropertyDescriptor::setUndefined):
+ (JSC::PropertyDescriptor::getter):
+ (JSC::PropertyDescriptor::setter):
+ (JSC::PropertyDescriptor::setDescriptor):
+ (JSC::PropertyDescriptor::setAccessorDescriptor):
+ * runtime/PropertyDescriptor.h: Added.
+ (JSC::PropertyDescriptor::PropertyDescriptor):
+ (JSC::PropertyDescriptor::attributes):
+ (JSC::PropertyDescriptor::isValid):
+ (JSC::PropertyDescriptor::value):
+ * runtime/RegExpConstructor.cpp:
+ (JSC::RegExpConstructor::getOwnPropertyDescriptor):
+ * runtime/RegExpConstructor.h:
+ * runtime/RegExpMatchesArray.h:
+ (JSC::RegExpMatchesArray::getOwnPropertyDescriptor):
+ * runtime/RegExpObject.cpp:
+ (JSC::RegExpObject::getOwnPropertyDescriptor):
+ * runtime/RegExpObject.h:
+ * runtime/StringObject.cpp:
+ (JSC::StringObject::getOwnPropertyDescriptor):
+ * runtime/StringObject.h:
+ * runtime/StringPrototype.cpp:
+ (JSC::StringPrototype::getOwnPropertyDescriptor):
+ * runtime/StringPrototype.h:
- Reviewed by Oliver Hunt.
+2009-08-24 Gavin Barraclough <barraclough@apple.com>
- - first step of https://bugs.webkit.org/show_bug.cgi?id=21732
- improve performance by eliminating JSValue as a base class for JSCell
+ Reviewed by Darin Adler.
- Remove casts from JSValue* to derived classes, replacing them with
- calls to inline casting functions. These functions are also a bit
- better than aidrect cast because they also do a runtime assertion.
+ How many copies of the parameters do you need?
+ https://bugs.webkit.org/show_bug.cgi?id=28701
- Removed use of 0 as for JSValue*, changing call sites to use a
- noValue() function instead.
+ The function parameters in JSC get copied a lot - and unnecessarily so.
- Move things needed by classes derived from JSValue out of the class,
- since the classes won't be deriving from JSValue any more soon.
+ Originally this happened due to duplicating FunctionBodyNodes on recompilation,
+ though the problem has been exacerbated by copying the parameters from the
+ original function body onto the executable, then back onto the real body that
+ will be generated (this happens on every function). And this is all made worse
+ since the data structures in question are a little ugly - C style arrays of C++
+ objects containing ref counts, so they need a full copy-construct (rather than
+ a simple memcpy).
- I did most of these changes by changing JSValue to not be JSValue* any
- more, then fixing a lot of the compilation problems, then rolling out
- the JSValue change.
+ This can all be greatly simplified by just punting the parameters off into
+ their own ref-counted object, and forgoing all the copying.
- 1.011x as fast on SunSpider (presumably due to some of the Machine.cpp changes)
+ ~no performance change, possible slight progression.
- * API/APICast.h: Removed unneeded forward declarations.
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::BytecodeGenerator):
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::makeFunction):
+ * parser/Nodes.cpp:
+ (JSC::FunctionParameters::FunctionParameters):
+ (JSC::FunctionBodyNode::FunctionBodyNode):
+ (JSC::FunctionBodyNode::finishParsing):
+ * parser/Nodes.h:
+ (JSC::FunctionBodyNode::parameters):
+ (JSC::FunctionBodyNode::parameterCount):
+ * runtime/Executable.cpp:
+ (JSC::FunctionExecutable::~FunctionExecutable):
+ (JSC::FunctionExecutable::compile):
+ (JSC::FunctionExecutable::reparseExceptionInfo):
+ (JSC::FunctionExecutable::fromGlobalCode):
+ (JSC::FunctionExecutable::paramString):
+ * runtime/Executable.h:
+ (JSC::FunctionExecutable::FunctionExecutable):
+ (JSC::FunctionExecutable::parameterCount):
+
+2009-08-25 Brent Fulgham <bfulgham@webkit.org>
- * API/JSCallbackObject.h: Added an asCallbackObject function for casting.
- * API/JSCallbackObjectFunctions.h:
- (JSC::JSCallbackObject::asCallbackObject): Added.
- (JSC::JSCallbackObject::getOwnPropertySlot): Use asObject.
- (JSC::JSCallbackObject::call): Use noValue.
- (JSC::JSCallbackObject::staticValueGetter): Use asCallbackObject.
- (JSC::JSCallbackObject::staticFunctionGetter): Ditto.
- (JSC::JSCallbackObject::callbackGetter): Ditto.
-
- * JavaScriptCore.exp: Updated.
-
- * JavaScriptCore.xcodeproj/project.pbxproj: Added RegExpMatchesArray.h.
-
- * VM/CTI.cpp:
- (JSC::CTI::asInteger): Added. For use casting a JSValue to an integer.
- (JSC::CTI::emitGetArg): Use asInteger.
- (JSC::CTI::emitGetPutArg): Ditto.
- (JSC::CTI::getConstantImmediateNumericArg): Ditto. Also use noValue.
- (JSC::CTI::emitInitRegister): Use asInteger.
- (JSC::CTI::getDeTaggedConstantImmediate): Ditto.
- (JSC::CTI::compileOpCallInitializeCallFrame): Ditto.
- (JSC::CTI::compileOpCall): Ditto.
- (JSC::CTI::compileOpStrictEq): Ditto.
- (JSC::CTI::privateCompileMainPass): Ditto.
- (JSC::CTI::privateCompileGetByIdProto): Ditto.
- (JSC::CTI::privateCompileGetByIdChain): Ditto.
- (JSC::CTI::privateCompilePutByIdTransition): Ditto.
- * VM/CTI.h: Rewrite the ARG-related macros to use C++ casts instead of
- C casts and get rid of some extra parentheses. Addd declaration of
- asInteger.
-
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitEqualityOp): Use asString.
- (JSC::CodeGenerator::emitLoad): Use noValue.
- (JSC::CodeGenerator::findScopedProperty): Change globalObject argument
- to JSObject* instead of JSValue*.
- (JSC::CodeGenerator::emitResolve): Remove unneeded cast.
- (JSC::CodeGenerator::emitGetScopedVar): Use asCell.
- (JSC::CodeGenerator::emitPutScopedVar): Ditto.
- * VM/CodeGenerator.h: Changed out argument of findScopedProperty.
- Also change the JSValueMap to use PtrHash explicitly instead of
- getting it from DefaultHash.
-
- * VM/JSPropertyNameIterator.cpp:
- (JSC::JSPropertyNameIterator::toPrimitive): Use noValue.
- * VM/JSPropertyNameIterator.h:
- (JSC::JSPropertyNameIterator::next): Ditto.
-
- * VM/Machine.cpp:
- (JSC::fastIsNumber): Moved isImmediate check here instead of
- checking for 0 inside Heap::isNumber. Use asCell and asNumberCell.
- (JSC::fastToInt32): Ditto.
- (JSC::fastToUInt32): Ditto.
- (JSC::jsLess): Use asString.
- (JSC::jsLessEq): Ditto.
- (JSC::jsAdd): Ditto.
- (JSC::jsTypeStringForValue): Use asObject.
- (JSC::jsIsObjectType): Ditto.
- (JSC::jsIsFunctionType): Ditto.
- (JSC::inlineResolveBase): Use noValue.
- (JSC::Machine::callEval): Use asString. Initialize result to
- undefined, not 0.
- (JSC::Machine::Machine): Remove unneeded casts to JSCell*.
- (JSC::Machine::throwException): Use asObject.
- (JSC::Machine::debug): Remove explicit calls to the DebuggerCallFrame
- constructor.
- (JSC::Machine::checkTimeout): Use noValue.
- (JSC::cachePrototypeChain): Use asObject.
- (JSC::Machine::tryCachePutByID): Use asCell.
- (JSC::Machine::tryCacheGetByID): Use aCell and asObject.
- (JSC::Machine::privateExecute): Use noValue, asCell, asObject, asString,
- asArray, asActivation, asFunction. Changed code that creates call frames
- for host functions to pass 0 for the function pointer -- the call frame
- needs a JSFunction* and a host function object is not one. This was
- caught by the assertions in the casting functions. Also remove some
- unneeded casts in cases where two values are compared.
- (JSC::Machine::retrieveLastCaller): Use noValue.
- (JSC::Machine::tryCTICachePutByID): Use asCell.
- (JSC::Machine::tryCTICacheGetByID): Use aCell and asObject.
- (JSC::setUpThrowTrampolineReturnAddress): Added this function to restore
- the PIC-branch-avoidance that was recently lost.
- (JSC::Machine::cti_op_add): Use asString.
- (JSC::Machine::cti_op_instanceof): Use asCell and asObject.
- (JSC::Machine::cti_op_call_JSFunction): Use asFunction.
- (JSC::Machine::cti_op_call_NotJSFunction): Changed code to pass 0 for
- the function pointer, since we don't have a JSFunction. Use asObject.
- (JSC::Machine::cti_op_tear_off_activation): Use asActivation.
- (JSC::Machine::cti_op_construct_JSConstruct): Use asFunction and asObject.
- (JSC::Machine::cti_op_construct_NotJSConstruct): use asObject.
- (JSC::Machine::cti_op_get_by_val): Use asArray and asString.
- (JSC::Machine::cti_op_resolve_func): Use asPointer; this helps prepare
- us for a situation where JSValue is not a pointer.
- (JSC::Machine::cti_op_put_by_val): Use asArray.
- (JSC::Machine::cti_op_put_by_val_array): Ditto.
- (JSC::Machine::cti_op_resolve_global): Use asGlobalObject.
- (JSC::Machine::cti_op_post_inc): Change VM_CHECK_EXCEPTION_2 to
- VM_CHECK_EXCEPTION_AT_END, since there's no observable work done after
- that point. Also use asPointer.
- (JSC::Machine::cti_op_resolve_with_base): Use asPointer.
- (JSC::Machine::cti_op_post_dec): Change VM_CHECK_EXCEPTION_2 to
- VM_CHECK_EXCEPTION_AT_END, since there's no observable work done after
- that point. Also use asPointer.
- (JSC::Machine::cti_op_call_eval): Use asObject, noValue, and change
- VM_CHECK_EXCEPTION_ARG to VM_THROW_EXCEPTION_AT_END.
- (JSC::Machine::cti_op_throw): Change return value to a JSValue*.
- (JSC::Machine::cti_op_in): Use asObject.
- (JSC::Machine::cti_op_switch_char): Use asString.
- (JSC::Machine::cti_op_switch_string): Ditto.
- (JSC::Machine::cti_op_put_getter): Use asObject.
- (JSC::Machine::cti_op_put_setter): Ditto.
- (JSC::Machine::cti_vm_throw): Change return value to a JSValue*.
- Use noValue.
- * VM/Machine.h: Change return values of both cti_op_throw and
- cti_vm_throw to JSValue*.
-
- * VM/Register.h: Remove nullJSValue, which is the same thing
- as noValue(). Also removed unneeded definition of JSValue.
-
- * kjs/ArgList.h: Removed unneeded definition of JSValue.
-
- * kjs/Arguments.h:
- (JSC::asArguments): Added.
-
- * kjs/ArrayPrototype.cpp:
- (JSC::getProperty): Use noValue.
- (JSC::arrayProtoFuncToString): Use asArray.
- (JSC::arrayProtoFuncToLocaleString): Ditto.
- (JSC::arrayProtoFuncConcat): Ditto.
- (JSC::arrayProtoFuncPop): Ditto. Also removed unneeded initialization
- of the result, which is set in both sides of the branch.
- (JSC::arrayProtoFuncPush): Ditto.
- (JSC::arrayProtoFuncShift): Removed unneeded initialization
- of the result, which is set in both sides of the branch.
- (JSC::arrayProtoFuncSort): Use asArray.
-
- * kjs/BooleanObject.h:
- (JSC::asBooleanObject): Added.
-
- * kjs/BooleanPrototype.cpp:
- (JSC::booleanProtoFuncToString): Use asBooleanObject.
- (JSC::booleanProtoFuncValueOf): Ditto.
-
- * kjs/CallData.cpp:
- (JSC::call): Use asObject and asFunction.
- * kjs/ConstructData.cpp:
- (JSC::construct): Ditto.
-
- * kjs/DateConstructor.cpp:
- (JSC::constructDate): Use asDateInstance.
-
- * kjs/DateInstance.h:
- (JSC::asDateInstance): Added.
-
- * kjs/DatePrototype.cpp:
- (JSC::dateProtoFuncToString): Use asDateInstance.
- (JSC::dateProtoFuncToUTCString): Ditto.
- (JSC::dateProtoFuncToDateString): Ditto.
- (JSC::dateProtoFuncToTimeString): Ditto.
- (JSC::dateProtoFuncToLocaleString): Ditto.
- (JSC::dateProtoFuncToLocaleDateString): Ditto.
- (JSC::dateProtoFuncToLocaleTimeString): Ditto.
- (JSC::dateProtoFuncValueOf): Ditto.
- (JSC::dateProtoFuncGetTime): Ditto.
- (JSC::dateProtoFuncGetFullYear): Ditto.
- (JSC::dateProtoFuncGetUTCFullYear): Ditto.
- (JSC::dateProtoFuncToGMTString): Ditto.
- (JSC::dateProtoFuncGetMonth): Ditto.
- (JSC::dateProtoFuncGetUTCMonth): Ditto.
- (JSC::dateProtoFuncGetDate): Ditto.
- (JSC::dateProtoFuncGetUTCDate): Ditto.
- (JSC::dateProtoFuncGetDay): Ditto.
- (JSC::dateProtoFuncGetUTCDay): Ditto.
- (JSC::dateProtoFuncGetHours): Ditto.
- (JSC::dateProtoFuncGetUTCHours): Ditto.
- (JSC::dateProtoFuncGetMinutes): Ditto.
- (JSC::dateProtoFuncGetUTCMinutes): Ditto.
- (JSC::dateProtoFuncGetSeconds): Ditto.
- (JSC::dateProtoFuncGetUTCSeconds): Ditto.
- (JSC::dateProtoFuncGetMilliSeconds): Ditto.
- (JSC::dateProtoFuncGetUTCMilliseconds): Ditto.
- (JSC::dateProtoFuncGetTimezoneOffset): Ditto.
- (JSC::dateProtoFuncSetTime): Ditto.
- (JSC::setNewValueFromTimeArgs): Ditto.
- (JSC::setNewValueFromDateArgs): Ditto.
- (JSC::dateProtoFuncSetYear): Ditto.
- (JSC::dateProtoFuncGetYear): Ditto.
-
- * kjs/DebuggerCallFrame.cpp:
- (JSC::DebuggerCallFrame::thisObject): Use asObject.
- (JSC::DebuggerCallFrame::evaluate): Use noValue.
- * kjs/DebuggerCallFrame.h: Added a constructor that
- takes only a callFrame.
-
- * kjs/ExecState.h:
- (JSC::ExecState::clearException): Use noValue.
-
- * kjs/FunctionPrototype.cpp:
- (JSC::functionProtoFuncToString): Use asFunction.
- (JSC::functionProtoFuncApply): Use asArguments and asArray.
-
- * kjs/GetterSetter.cpp:
- (JSC::GetterSetter::getPrimitiveNumber): Use noValue.
-
- * kjs/GetterSetter.h:
- (JSC::asGetterSetter): Added.
-
- * kjs/InternalFunction.cpp:
- (JSC::InternalFunction::name): Use asString.
-
- * kjs/InternalFunction.h:
- (JSC::asInternalFunction): Added.
-
- * kjs/JSActivation.cpp:
- (JSC::JSActivation::argumentsGetter): Use asActivation.
-
- * kjs/JSActivation.h:
- (JSC::asActivation): Added.
-
- * kjs/JSArray.cpp:
- (JSC::JSArray::putSlowCase): Use noValue.
- (JSC::JSArray::deleteProperty): Ditto.
- (JSC::JSArray::increaseVectorLength): Ditto.
- (JSC::JSArray::setLength): Ditto.
- (JSC::JSArray::pop): Ditto.
- (JSC::JSArray::sort): Ditto.
- (JSC::JSArray::compactForSorting): Ditto.
- * kjs/JSArray.h:
- (JSC::asArray): Added.
-
- * kjs/JSCell.cpp:
- (JSC::JSCell::getJSNumber): Use noValue.
-
- * kjs/JSCell.h:
- (JSC::asCell): Added.
- (JSC::JSValue::asCell): Changed to not preserve const.
- Given the wide use of JSValue* and JSCell*, it's not
- really useful to use const.
- (JSC::JSValue::isNumber): Use asValue.
- (JSC::JSValue::isString): Ditto.
- (JSC::JSValue::isGetterSetter): Ditto.
- (JSC::JSValue::isObject): Ditto.
- (JSC::JSValue::getNumber): Ditto.
- (JSC::JSValue::getString): Ditto.
- (JSC::JSValue::getObject): Ditto.
- (JSC::JSValue::getCallData): Ditto.
- (JSC::JSValue::getConstructData): Ditto.
- (JSC::JSValue::getUInt32): Ditto.
- (JSC::JSValue::getTruncatedInt32): Ditto.
- (JSC::JSValue::getTruncatedUInt32): Ditto.
- (JSC::JSValue::mark): Ditto.
- (JSC::JSValue::marked): Ditto.
- (JSC::JSValue::toPrimitive): Ditto.
- (JSC::JSValue::getPrimitiveNumber): Ditto.
- (JSC::JSValue::toBoolean): Ditto.
- (JSC::JSValue::toNumber): Ditto.
- (JSC::JSValue::toString): Ditto.
- (JSC::JSValue::toObject): Ditto.
- (JSC::JSValue::toThisObject): Ditto.
- (JSC::JSValue::needsThisConversion): Ditto.
- (JSC::JSValue::toThisString): Ditto.
- (JSC::JSValue::getJSNumber): Ditto.
-
- * kjs/JSFunction.cpp:
- (JSC::JSFunction::argumentsGetter): Use asFunction.
- (JSC::JSFunction::callerGetter): Ditto.
- (JSC::JSFunction::lengthGetter): Ditto.
- (JSC::JSFunction::construct): Use asObject.
-
- * kjs/JSFunction.h:
- (JSC::asFunction): Added.
-
- * kjs/JSGlobalObject.cpp:
- (JSC::lastInPrototypeChain): Use asObject.
-
- * kjs/JSGlobalObject.h:
- (JSC::asGlobalObject): Added.
- (JSC::ScopeChainNode::globalObject): Use asGlobalObject.
-
- * kjs/JSImmediate.h: Added noValue, asPointer, and makeValue
- functions. Use rawValue, makeValue, and noValue consistently
- instead of doing reinterpret_cast in various functions.
-
- * kjs/JSNumberCell.h:
- (JSC::asNumberCell): Added.
- (JSC::JSValue::uncheckedGetNumber): Use asValue and asNumberCell.
- (JSC::JSValue::toJSNumber): Use asValue.
-
- * kjs/JSObject.cpp:
- (JSC::JSObject::put): Use asObject and asGetterSetter.
- (JSC::callDefaultValueFunction): Use noValue.
- (JSC::JSObject::defineGetter): Use asGetterSetter.
- (JSC::JSObject::defineSetter): Ditto.
- (JSC::JSObject::lookupGetter): Ditto. Also use asObject.
- (JSC::JSObject::lookupSetter): Ditto.
- (JSC::JSObject::hasInstance): Use asObject.
- (JSC::JSObject::fillGetterPropertySlot): Use asGetterSetter.
-
- * kjs/JSObject.h:
- (JSC::JSObject::getDirect): Use noValue.
- (JSC::asObject): Added.
- (JSC::JSValue::isObject): Use asValue.
- (JSC::JSObject::get): Removed unneeded const_cast.
- (JSC::JSObject::getPropertySlot): Use asObject.
- (JSC::JSValue::get): Removed unneeded const_cast.
- Use asValue, asCell, and asObject.
- (JSC::JSValue::put): Ditto.
- (JSC::JSObject::allocatePropertyStorageInline): Fixed spelling
- of "oldPropertStorage".
-
- * kjs/JSString.cpp:
- (JSC::JSString::getOwnPropertySlot): Use asObject.
-
- * kjs/JSString.h:
- (JSC::asString): Added.
- (JSC::JSValue::toThisJSString): Use asValue.
-
- * kjs/JSValue.h: Make PreferredPrimitiveType a top level enum
- instead of a member of JSValue. Added an asValue function that
- returns this. Removed overload of asCell for const. Use asValue
- instead of getting right at this.
-
- * kjs/ObjectPrototype.cpp:
- (JSC::objectProtoFuncIsPrototypeOf): Use asObject.
- (JSC::objectProtoFuncDefineGetter): Ditto.
- (JSC::objectProtoFuncDefineSetter): Ditto.
-
- * kjs/PropertySlot.h:
- (JSC::PropertySlot::PropertySlot): Take a const JSValue* so the
- callers don't have to worry about const.
- (JSC::PropertySlot::clearBase): Use noValue.
- (JSC::PropertySlot::clearValue): Ditto.
-
- * kjs/RegExpConstructor.cpp:
- (JSC::regExpConstructorDollar1): Use asRegExpConstructor.
- (JSC::regExpConstructorDollar2): Ditto.
- (JSC::regExpConstructorDollar3): Ditto.
- (JSC::regExpConstructorDollar4): Ditto.
- (JSC::regExpConstructorDollar5): Ditto.
- (JSC::regExpConstructorDollar6): Ditto.
- (JSC::regExpConstructorDollar7): Ditto.
- (JSC::regExpConstructorDollar8): Ditto.
- (JSC::regExpConstructorDollar9): Ditto.
- (JSC::regExpConstructorInput): Ditto.
- (JSC::regExpConstructorMultiline): Ditto.
- (JSC::regExpConstructorLastMatch): Ditto.
- (JSC::regExpConstructorLastParen): Ditto.
- (JSC::regExpConstructorLeftContext): Ditto.
- (JSC::regExpConstructorRightContext): Ditto.
- (JSC::setRegExpConstructorInput): Ditto.
- (JSC::setRegExpConstructorMultiline): Ditto.
- (JSC::constructRegExp): Use asObject.
-
- * kjs/RegExpConstructor.h:
- (JSC::asRegExpConstructor): Added.
-
- * kjs/RegExpObject.cpp:
- (JSC::regExpObjectGlobal): Use asRegExpObject.
- (JSC::regExpObjectIgnoreCase): Ditto.
- (JSC::regExpObjectMultiline): Ditto.
- (JSC::regExpObjectSource): Ditto.
- (JSC::regExpObjectLastIndex): Ditto.
- (JSC::setRegExpObjectLastIndex): Ditto.
- (JSC::callRegExpObject): Ditto.
-
- * kjs/RegExpObject.h:
- (JSC::asRegExpObject): Added.
-
- * kjs/RegExpPrototype.cpp:
- (JSC::regExpProtoFuncTest): Use asRegExpObject.
- (JSC::regExpProtoFuncExec): Ditto.
- (JSC::regExpProtoFuncCompile): Ditto.
- (JSC::regExpProtoFuncToString): Ditto.
-
- * kjs/StringObject.h:
- (JSC::StringObject::internalValue): Use asString.
- (JSC::asStringObject): Added.
-
- * kjs/StringPrototype.cpp:
- (JSC::stringProtoFuncReplace): Use asRegExpObject.
- (JSC::stringProtoFuncToString): Ue asStringObject.
- (JSC::stringProtoFuncMatch): Use asRegExpObject.
- (JSC::stringProtoFuncSearch): Ditto.
- (JSC::stringProtoFuncSplit): Ditto.
-
- * kjs/StructureID.cpp:
- (JSC::StructureID::getEnumerablePropertyNames): Use asObject.
- (JSC::StructureID::createCachedPrototypeChain): Ditto.
- (JSC::StructureIDChain::StructureIDChain): Use asCell and asObject.
-
- * kjs/collector.h:
- (JSC::Heap::isNumber): Removed null handling. This can only be called
- on valid cells.
- (JSC::Heap::cellBlock): Removed overload for const and non-const.
- Whether the JSCell* is const or not really should have no effect on
- whether you can modify the collector block it's in.
-
- * kjs/interpreter.cpp:
- (JSC::Interpreter::evaluate): Use noValue and noObject.
-
- * kjs/nodes.cpp:
- (JSC::FunctionCallResolveNode::emitCode): Use JSObject for the global
- object rather than JSValue.
- (JSC::PostfixResolveNode::emitCode): Ditto.
- (JSC::PrefixResolveNode::emitCode): Ditto.
- (JSC::ReadModifyResolveNode::emitCode): Ditto.
- (JSC::AssignResolveNode::emitCode): Ditto.
-
- * kjs/operations.h:
- (JSC::equalSlowCaseInline): Use asString, asCell, asNumberCell,
- (JSC::strictEqualSlowCaseInline): Ditto.
-
-2008-10-18 Cameron Zwarich <zwarich@apple.com>
+ Reviewed by NOBODY (Buildfix).
- Reviewed by Oliver Hunt.
+ * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_CFLite target
+ that inherits from the debug_wincairo property sheet and therefore
+ links to the proper debug library.
+ * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_CFLite target
+ that inherits from the debug_wincairo property sheet and therefore
+ links to the proper debug library.
- Bug 21702: Special op_create_activation for the case where there are no named parameters
- <https://bugs.webkit.org/show_bug.cgi?id=21702>
+2009-08-25 Chris Marrin <cmarrin@apple.com>
- This is a 2.5% speedup on the V8 Raytrace benchmark and a 1.1% speedup
- on the V8 Earley-Boyer benchmark.
+ Reviewed by Simon Fraser.
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_create_arguments_no_params):
- * VM/Machine.h:
- * kjs/Arguments.h:
- (JSC::Arguments::):
- (JSC::Arguments::Arguments):
+ Export tryFastMalloc for Canvas3D work
+ https://bugs.webkit.org/show_bug.cgi?id=28018
-2008-10-17 Maciej Stachowiak <mjs@apple.com>
+ * JavaScriptCore.exp:
- Reviewed by Cameron Zwarich.
-
- - in debug builds, alter the stack to avoid blowing out MallocStackLogging
-
- (In essence, while executing a CTI function we alter the return
- address to jscGeneratedNativeCode so that a single consistent
- function is on the stack instead of many random functions without
- symbols.)
-
- * VM/CTI.h:
- * VM/Machine.cpp:
- (JSC::doSetReturnAddress):
- (JSC::):
- (JSC::StackHack::StackHack):
- (JSC::StackHack::~StackHack):
- (JSC::Machine::cti_op_convert_this):
- (JSC::Machine::cti_op_end):
- (JSC::Machine::cti_op_add):
- (JSC::Machine::cti_op_pre_inc):
- (JSC::Machine::cti_timeout_check):
- (JSC::Machine::cti_register_file_check):
- (JSC::Machine::cti_op_loop_if_less):
- (JSC::Machine::cti_op_loop_if_lesseq):
- (JSC::Machine::cti_op_new_object):
- (JSC::Machine::cti_op_put_by_id):
- (JSC::Machine::cti_op_put_by_id_second):
- (JSC::Machine::cti_op_put_by_id_generic):
- (JSC::Machine::cti_op_put_by_id_fail):
- (JSC::Machine::cti_op_get_by_id):
- (JSC::Machine::cti_op_get_by_id_second):
- (JSC::Machine::cti_op_get_by_id_generic):
- (JSC::Machine::cti_op_get_by_id_fail):
- (JSC::Machine::cti_op_instanceof):
- (JSC::Machine::cti_op_del_by_id):
- (JSC::Machine::cti_op_mul):
- (JSC::Machine::cti_op_new_func):
- (JSC::Machine::cti_op_call_profiler):
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_vm_lazyLinkCall):
- (JSC::Machine::cti_vm_compile):
- (JSC::Machine::cti_op_push_activation):
- (JSC::Machine::cti_op_call_NotJSFunction):
- (JSC::Machine::cti_op_create_arguments):
- (JSC::Machine::cti_op_tear_off_activation):
- (JSC::Machine::cti_op_tear_off_arguments):
- (JSC::Machine::cti_op_ret_profiler):
- (JSC::Machine::cti_op_ret_scopeChain):
- (JSC::Machine::cti_op_new_array):
- (JSC::Machine::cti_op_resolve):
- (JSC::Machine::cti_op_construct_JSConstructFast):
- (JSC::Machine::cti_op_construct_JSConstruct):
- (JSC::Machine::cti_op_construct_NotJSConstruct):
- (JSC::Machine::cti_op_get_by_val):
- (JSC::Machine::cti_op_resolve_func):
- (JSC::Machine::cti_op_sub):
- (JSC::Machine::cti_op_put_by_val):
- (JSC::Machine::cti_op_put_by_val_array):
- (JSC::Machine::cti_op_lesseq):
- (JSC::Machine::cti_op_loop_if_true):
- (JSC::Machine::cti_op_negate):
- (JSC::Machine::cti_op_resolve_base):
- (JSC::Machine::cti_op_resolve_skip):
- (JSC::Machine::cti_op_resolve_global):
- (JSC::Machine::cti_op_div):
- (JSC::Machine::cti_op_pre_dec):
- (JSC::Machine::cti_op_jless):
- (JSC::Machine::cti_op_not):
- (JSC::Machine::cti_op_jtrue):
- (JSC::Machine::cti_op_post_inc):
- (JSC::Machine::cti_op_eq):
- (JSC::Machine::cti_op_lshift):
- (JSC::Machine::cti_op_bitand):
- (JSC::Machine::cti_op_rshift):
- (JSC::Machine::cti_op_bitnot):
- (JSC::Machine::cti_op_resolve_with_base):
- (JSC::Machine::cti_op_new_func_exp):
- (JSC::Machine::cti_op_mod):
- (JSC::Machine::cti_op_less):
- (JSC::Machine::cti_op_neq):
- (JSC::Machine::cti_op_post_dec):
- (JSC::Machine::cti_op_urshift):
- (JSC::Machine::cti_op_bitxor):
- (JSC::Machine::cti_op_new_regexp):
- (JSC::Machine::cti_op_bitor):
- (JSC::Machine::cti_op_call_eval):
- (JSC::Machine::cti_op_throw):
- (JSC::Machine::cti_op_get_pnames):
- (JSC::Machine::cti_op_next_pname):
- (JSC::Machine::cti_op_push_scope):
- (JSC::Machine::cti_op_pop_scope):
- (JSC::Machine::cti_op_typeof):
- (JSC::Machine::cti_op_is_undefined):
- (JSC::Machine::cti_op_is_boolean):
- (JSC::Machine::cti_op_is_number):
- (JSC::Machine::cti_op_is_string):
- (JSC::Machine::cti_op_is_object):
- (JSC::Machine::cti_op_is_function):
- (JSC::Machine::cti_op_stricteq):
- (JSC::Machine::cti_op_nstricteq):
- (JSC::Machine::cti_op_to_jsnumber):
- (JSC::Machine::cti_op_in):
- (JSC::Machine::cti_op_push_new_scope):
- (JSC::Machine::cti_op_jmp_scopes):
- (JSC::Machine::cti_op_put_by_index):
- (JSC::Machine::cti_op_switch_imm):
- (JSC::Machine::cti_op_switch_char):
- (JSC::Machine::cti_op_switch_string):
- (JSC::Machine::cti_op_del_by_val):
- (JSC::Machine::cti_op_put_getter):
- (JSC::Machine::cti_op_put_setter):
- (JSC::Machine::cti_op_new_error):
- (JSC::Machine::cti_op_debug):
- (JSC::Machine::cti_vm_throw):
-
-2008-10-17 Gavin Barraclough <barraclough@apple.com>
-
- Optimize op_call by allowing call sites to be directly linked to callees.
-
- For the hot path of op_call, CTI now generates a check (initially for an impossible
- value), and the first time the call is executed we attempt to link the call directly
- to the callee. We can currently only do so if the arity of the caller and callee
- match. The (optimized) setup for the call on the hot path is linked directly to
- the ctiCode for the callee, without indirection.
-
- Two forms of the slow case of the call are generated, the first will be executed the
- first time the call is reached. As well as this path attempting to link the call to
- a callee, it also relinks the slow case to a second slow case, which will not continue
- to attempt relinking the call. (This policy could be changed in future, but for not
- this is intended to prevent thrashing).
+2009-08-25 David Levin <levin@chromium.org>
- If a callee that the caller has been linked to is garbage collected, then the link
- in the caller's JIt code will be reset back to a value that cannot match - to prevent
- any false positive matches.
+ Reviewed by Adam Roben.
- ~20% progression on deltablue & richards, >12% overall reduction in v8-tests
- runtime, one or two percent progression on sunspider.
+ PLATFORM(CFNETWORK) should be USE(CFNETWORK).
+ https://bugs.webkit.org/show_bug.cgi?id=28713
- Reviewed by Oliver Hunt.
+ * wtf/Platform.h: Added a #define to catch this issue in the
+ future. The define would generate an error on gcc without the
+ space in the expansion, but Visual C++ needs the space to cause an error.
- * VM/CTI.cpp:
- (JSC::):
- (JSC::CTI::emitNakedCall):
- (JSC::unreachable):
- (JSC::CTI::compileOpCallInitializeCallFrame):
- (JSC::CTI::compileOpCallSetupArgs):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- (JSC::CTI::unlinkCall):
- (JSC::CTI::linkCall):
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::~CodeBlock):
- (JSC::CodeBlock::unlinkCallers):
- (JSC::CodeBlock::derefStructureIDs):
- * VM/CodeBlock.h:
- (JSC::StructureStubInfo::StructureStubInfo):
- (JSC::CallLinkInfo::CallLinkInfo):
- (JSC::CodeBlock::addCaller):
- (JSC::CodeBlock::removeCaller):
- (JSC::CodeBlock::getStubInfo):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitCall):
- (JSC::CodeGenerator::emitConstruct):
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_call_profiler):
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_vm_lazyLinkCall):
- (JSC::Machine::cti_op_construct_JSConstructFast):
- (JSC::Machine::cti_op_construct_JSConstruct):
- (JSC::Machine::cti_op_construct_NotJSConstruct):
- * VM/Machine.h:
- * kjs/JSFunction.cpp:
- (JSC::JSFunction::~JSFunction):
- * kjs/JSFunction.h:
- * kjs/nodes.h:
- (JSC::FunctionBodyNode::):
- * masm/X86Assembler.h:
- (JSC::X86Assembler::getDifferenceBetweenLabels):
+2009-08-24 Brent Fulgham <bfulgham@webkit.org>
-2008-10-17 Maciej Stachowiak <mjs@apple.com>
+ Reviewed by Steve Falkenburg.
- Reviewed by Geoff Garen.
-
- - remove ASSERT that makes the leaks buildbot cry
+ Revise CFLite Debug build to emit DLL's with _debug label.
+ https://bugs.webkit.org/show_bug.cgi?id=28695.
- * kjs/JSFunction.cpp:
- (JSC::JSFunction::JSFunction):
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modify
+ Cairo debug build to inherit from new debug_cairo property sheet.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops:
+ Modify to look for debug CFLite when in debug build.
-2008-10-17 Maciej Stachowiak <mjs@apple.com>
+2009-08-24 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Cameron Zwarich
-
- - don't bother to do arguments tearoff when it will have no effect
+ Reviewed by Oliver Adler & Darin Hunt.
- ~1% on v8 raytrace
+ https://bugs.webkit.org/show_bug.cgi?id=28691
+ Do not retain ScopeNodes outside of parsing
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitReturn):
+ There is now no need for these to exist outside of parsing - their use in the runtime is replaced by Executable types.
-2008-10-17 Marco Barisione <marco.barisione@collabora.co.uk>
+ * bytecode/EvalCodeCache.h:
+ (JSC::EvalCodeCache::get):
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::BytecodeGenerator):
+ (JSC::BytecodeGenerator::emitNewFunction):
+ (JSC::BytecodeGenerator::emitNewFunctionExpression):
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::makeFunction):
+ * debugger/Debugger.cpp:
+ (JSC::Debugger::recompileAllJSFunctions):
+ (JSC::evaluateInGlobalCallFrame):
+ * debugger/DebuggerCallFrame.cpp:
+ (JSC::DebuggerCallFrame::evaluate):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::execute):
+ (JSC::Interpreter::prepareForRepeatCall):
+ (JSC::Interpreter::privateExecute):
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * parser/Nodes.cpp:
+ (JSC::ScopeNodeData::ScopeNodeData):
+ (JSC::ProgramNode::create):
+ (JSC::EvalNode::create):
+ (JSC::FunctionBodyNode::create):
+ * parser/Nodes.h:
+ (JSC::ScopeNode::adoptData):
+ (JSC::FunctionBodyNode::parameterCount):
+ * parser/Parser.cpp:
+ * parser/Parser.h:
+ (JSC::Parser::arena):
+ (JSC::Parser::Parser):
+ (JSC::Parser::parse):
+ * runtime/ArrayPrototype.cpp:
+ (JSC::isNumericCompareFunction):
+ (JSC::arrayProtoFuncSort):
+ * runtime/Completion.cpp:
+ (JSC::checkSyntax):
+ (JSC::evaluate):
+ * runtime/Executable.cpp:
+ (JSC::FunctionExecutable::~FunctionExecutable):
+ (JSC::EvalExecutable::compile):
+ (JSC::ProgramExecutable::checkSyntax):
+ (JSC::ProgramExecutable::compile):
+ (JSC::FunctionExecutable::compile):
+ (JSC::EvalExecutable::generateJITCode):
+ (JSC::ProgramExecutable::generateJITCode):
+ (JSC::FunctionExecutable::generateJITCode):
+ (JSC::FunctionExecutable::reparseExceptionInfo):
+ (JSC::EvalExecutable::reparseExceptionInfo):
+ (JSC::FunctionExecutable::recompile):
+ (JSC::FunctionExecutable::fromGlobalCode):
+ (JSC::FunctionExecutable::copyParameters):
+ (JSC::FunctionExecutable::paramString):
+ * runtime/Executable.h:
+ (JSC::ScriptExecutable::ScriptExecutable):
+ (JSC::ScriptExecutable::sourceID):
+ (JSC::ScriptExecutable::sourceURL):
+ (JSC::ScriptExecutable::lineNo):
+ (JSC::ScriptExecutable::lastLine):
+ (JSC::ScriptExecutable::usesEval):
+ (JSC::ScriptExecutable::usesArguments):
+ (JSC::ScriptExecutable::needsActivation):
+ (JSC::ScriptExecutable::recordParse):
+ (JSC::EvalExecutable::bytecode):
+ (JSC::EvalExecutable::jitCode):
+ (JSC::ProgramExecutable::bytecode):
+ (JSC::ProgramExecutable::reparseExceptionInfo):
+ (JSC::ProgramExecutable::jitCode):
+ (JSC::FunctionExecutable::FunctionExecutable):
+ (JSC::FunctionExecutable::make):
+ (JSC::FunctionExecutable::bytecode):
+ (JSC::FunctionExecutable::isGenerated):
+ (JSC::FunctionExecutable::name):
+ (JSC::FunctionExecutable::parameterCount):
+ (JSC::FunctionExecutable::jitCode):
+ * runtime/FunctionConstructor.cpp:
+ (JSC::constructFunction):
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::numericCompareFunction):
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncEval):
- Reviewed by Sam Weinig. Landed by Jan Alonzo.
+2009-08-24 Darin Adler <darin@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=21603
- [GTK] Minor fixes to GOwnPtr
+ * runtime/ObjectPrototype.cpp:
+ (JSC::ObjectPrototype::put): Landed revised version I had tested but forgot
+ to land. Leave out the branch, since we don't need one.
- * wtf/GOwnPtr.cpp:
- (WTF::GError):
- (WTF::GList):
- (WTF::GCond):
- (WTF::GMutex):
- (WTF::GPatternSpec):
- (WTF::GDir):
- * wtf/GOwnPtr.h:
- (WTF::freeOwnedGPtr):
- (WTF::GOwnPtr::~GOwnPtr):
- (WTF::GOwnPtr::outPtr):
- (WTF::GOwnPtr::set):
- (WTF::GOwnPtr::clear):
- * wtf/Threading.h:
+2009-08-24 Darin Adler <darin@apple.com>
-2008-10-17 Maciej Stachowiak <mjs@apple.com>
+ Reviewed by Geoff Garen.
- Reviewed by Cameron Zwarich.
-
- - speed up transitions that resize the property storage a fair bit
-
- ~3% speedup on v8 RayTrace benchmark, ~1% on DeltaBlue
-
- * VM/CTI.cpp:
- (JSC::resizePropertyStorage): renamed from transitionObject, and reduced to just resize
- the object's property storage with one inline call.
- (JSC::CTI::privateCompilePutByIdTransition): Use a separate function for property storage
- resize, but still do all the rest of the work in assembly in that case, and pass the known
- compile-time constants of old and new size rather than structureIDs, saving a bunch of
- redundant memory access.
- * kjs/JSObject.cpp:
- (JSC::JSObject::allocatePropertyStorage): Just call the inline version.
- * kjs/JSObject.h:
- (JSC::JSObject::allocatePropertyStorageInline): Inline version of allocatePropertyStorage
- * masm/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::pushl_i32): Add code to assmeble push of a constant; code originally by Cameron Zwarich.
+ Array index miss case creates a string every time
+ https://bugs.webkit.org/show_bug.cgi?id=28664
-2008-10-17 Cameron Zwarich <zwarich@apple.com>
+ SunSpider test results I saw:
- Reviewed by Maciej Stachowiak.
+ 0.5% faster overall
+ 1% faster on crypto-aes
+ 20% faster on crypto-md5
+ 13% faster on crypto-sha1
- Remove some C style casts.
+ * runtime/ObjectPrototype.cpp:
+ (JSC::ObjectPrototype::ObjectPrototype): Initialize m_hasNoPropertiesWithUInt32Names
+ to true.
+ (JSC::ObjectPrototype::put): Clearly m_hasNoPropertiesWithUInt32Names if the new
+ property has a name that is the string form of a UInt32.
+ (JSC::ObjectPrototype::getOwnPropertySlot): Don't call JSObject::getOwnPropertySlot
+ if m_hasNoPropertiesWithUInt32Names is true, and it is highly likely to be true.
- * masm/X86Assembler.h:
- (JSC::JITCodeBuffer::putIntUnchecked):
- (JSC::X86Assembler::link):
- (JSC::X86Assembler::linkAbsoluteAddress):
- (JSC::X86Assembler::getRelocatedAddress):
+ * runtime/ObjectPrototype.h: Added declarations for the above.
-2008-10-17 Cameron Zwarich <zwarich@apple.com>
+2009-08-24 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
- Rubber-stamped by Maciej Stachowiak.
+ Unreviewed. Fix a typo in my distcheck build fix.
- Remove some C style casts.
+ * GNUmakefile.am:
- * VM/CTI.cpp:
- (JSC::CTI::patchGetByIdSelf):
- (JSC::CTI::patchPutByIdReplace):
- * VM/Machine.cpp:
- (JSC::Machine::tryCTICachePutByID):
- (JSC::Machine::tryCTICacheGetByID):
- (JSC::Machine::cti_op_put_by_id):
- (JSC::Machine::cti_op_put_by_id_fail):
- (JSC::Machine::cti_op_get_by_id):
- (JSC::Machine::cti_op_get_by_id_fail):
+2009-08-23 Gustavo Noronha Silva <gns@gnome.org>
-2008-10-17 Maciej Stachowiak <mjs@apple.com>
+ Unreviewed build fix for make distcheck.
- Reviewed by Cameron Zwarich.
-
- - Avoid restoring the caller's 'r' value in op_ret
- https://bugs.webkit.org/show_bug.cgi?id=21319
+ * GNUmakefile.am: Added files required for the build.
- This patch stops writing the call frame at call and return points;
- instead it does so immediately before any CTI call.
-
- 0.5% speedup or so on the v8 benchmark
-
- * VM/CTI.cpp:
- (JSC::CTI::emitCTICall):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::emitSlowScriptCheck):
- (JSC::CTI::compileBinaryArithOpSlowCase):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- * VM/CTI.h:
-
-2008-10-17 Cameron Zwarich <zwarich@apple.com>
+2009-08-22 Maciej Stachowiak <mjs@apple.com>
- Reviewed by Sam Weinig.
+ Reviewed by Mark Rowe.
- Make WREC require CTI because it won't actually compile otherwise.
+ REGRESSION(r47639-r47660): Webkit crashes on launch on PowerPC
+ https://bugs.webkit.org/show_bug.cgi?id=28655
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::JSFunction): Initialize properly with a VPtrHackExecutable.
* wtf/Platform.h:
-2008-10-16 Maciej Stachowiak <mjs@apple.com>
+2009-08-22 Darin Adler <darin@apple.com>
- Reviewed by Geoff Garen.
+ Fix storage leak from syntax tree arena allocation patch.
- - fixed <rdar://problem/5806316> JavaScriptCore should not force building with gcc 4.0
- - use gcc 4.2 when building with Xcode 3.1 or newer on Leopard, even though this is not the default
+ * parser/Nodes.h: CommaNode needs to inherit from ParserArenaDeletable
+ because it has a vector.
- This time there is no performance regression; we can avoid having
- to use the fastcall calling convention for CTI functions by using
- varargs to prevent the compiler from moving things around on the
- stack.
-
- * Configurations/DebugRelease.xcconfig:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CTI.cpp:
- * VM/Machine.h:
- * wtf/Platform.h:
+2009-08-21 Darin Adler <darin@apple.com>
-2008-10-16 Maciej Stachowiak <mjs@apple.com>
+ Fix Qt build.
- Reviewed by Oliver Hunt.
+ * parser/Nodes.cpp:
+ (JSC::ScopeNodeData::ScopeNodeData): Made non-inline again.
+ This is used outside Nodes.cpp so can't be inline unless
+ it is in the header.
- - fix for REGRESSION: r37631 causing crashes on buildbot
- https://bugs.webkit.org/show_bug.cgi?id=21682
-
- * kjs/collector.cpp:
- (JSC::Heap::collect): Avoid crashing when a GC occurs while no global objects are live.
+2009-08-21 Darin Adler <darin@apple.com>
-2008-10-16 Sam Weinig <sam@webkit.org>
+ Two loose ends from the last commit.
- Reviewed by Maciej Stachowiak.
+ * JavaScriptCore.xcodeproj/project.pbxproj: Made ParserArena.h
+ and create_hash_table project-internal instead of "private".
+ * runtime/Executable.h: Removed accidentally-added constructor.
- Fix for https://bugs.webkit.org/show_bug.cgi?id=21683
- Don't create intermediate StructureIDs for builtin objects
+2009-08-21 Darin Adler <darin@apple.com>
- First step in reduce number of StructureIDs created when initializing the
- JSGlobalObject.
+ Reviewed by Gavin Barraclough.
- - In order to avoid creating the intermediate StructureIDs use the new putDirectWithoutTransition
- and putDirectFunctionWithoutTransition to add properties to JSObjects without transitioning
- the StructureID. This patch just implements this strategy for ObjectPrototype but alone
- reduces the number of StructureIDs create for about:blank by 10, from 142 to 132.
+ Syntax tree nodes should use arena allocation
+ https://bugs.webkit.org/show_bug.cgi?id=25674
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::reset):
- * kjs/JSObject.cpp:
- (JSC::JSObject::putDirectFunctionWithoutTransition):
- * kjs/JSObject.h:
- (JSC::JSObject::putDirectWithoutTransition):
- * kjs/ObjectPrototype.cpp:
- (JSC::ObjectPrototype::ObjectPrototype):
- * kjs/ObjectPrototype.h:
- * kjs/StructureID.cpp:
- (JSC::StructureID::addPropertyWithoutTransition):
- * kjs/StructureID.h:
+ Use an actual arena now. 0.6% speedup on SunSpider.
-2008-10-16 Maciej Stachowiak <mjs@apple.com>
+ New and improved with 100% less leaking of the universe.
- Reviewed by Cameron Zwarich.
-
- - fix for: REGRESSION: over 100 StructureIDs leak loading about:blank (result of fix for bug 21633)
-
- Apparent slight progression (< 0.5%) on v8 benchmarks and SunSpider.
+ * JavaScriptCore.exp:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+ Removed all exports involving the class FunctionBodyNode, which no
+ longer needs to be used outside JavaScriptCore.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj: Made Nodes.h and
+ Executable.h project-internal instead of "private".
- * kjs/StructureID.cpp:
- (JSC::StructureID::~StructureID): Don't deref this object's parent's pointer to
- itself from the destructor; that doesn't even make sense.
- (JSC::StructureID::addPropertyTransition): Don't refer the single transition;
- the rule is that parent StructureIDs are ref'd but child ones are not. Refing
- the child creates a cycle.
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::BytecodeGenerator): Updated since VarStack
+ contains const Identifier* now.
-2008-10-15 Alexey Proskuryakov <ap@webkit.org>
+ * parser/Grammar.y: Made identifiers from the lexer be const
+ Identifier* and updated since VarStack contains const Identifier* now.
- Reviewed by Darin Adler.
+ * parser/Lexer.cpp:
+ (JSC::Lexer::setCode): Pass in ParserArena, used for identifiers.
+ (JSC::Lexer::makeIdentifier): Changed return type to const Identifier*
+ and changed to call ParserArena.
+ (JSC::Lexer::clear): Removed the code to manage m_identifiers and
+ added code to set m_arena to 0.
+ * parser/Lexer.h: Updated for changes above.
+
+ * parser/NodeConstructors.h:
+ (JSC::ParserArenaFreeable::operator new): Added. Calls allocateFreeable
+ on the arena.
+ (JSC::ParserArenaDeletable::operator new): Changed to call the
+ allocateDeletable function on the arena instead of deleteWithArena.
+ (JSC::PropertyNode::PropertyNode): Added new constructor that makes
+ numeric identifiers. Some day we might want to optimize this for
+ integers so it doesn't create a string for each one.
+ (JSC::ContinueNode::ContinueNode): Initialize m_ident to nullIdentifier
+ since it's now a const Identifier& so it can't be left uninitialized.
+ (JSC::BreakNode::BreakNode): Ditto.
+ (JSC::CaseClauseNode::CaseClauseNode): Updated to use SourceElements*
+ to keep track of the statements rather than a separate statement vector.
+ (JSC::BlockNode::BlockNode): Ditto.
+ (JSC::ForInNode::ForInNode): Initialize m_ident to nullIdentifier.
+
+ * parser/Nodes.cpp: Moved the comment explaining emitBytecode in here.
+ It seemed strangely out of place in the header.
+ (JSC::ThrowableExpressionData::emitThrowError): Added an overload for
+ UString as well as Identifier.
+ (JSC::SourceElements::singleStatement): Added.
+ (JSC::SourceElements::lastStatement): Added.
+ (JSC::RegExpNode::emitBytecode): Changed the throwError code to use
+ the substitution mechanism instead of doing a string append.
+ (JSC::SourceElements::emitBytecode): Added. Replaces the old
+ statementListEmitCode function, since we now keep the SourceElements
+ objects around.
+ (JSC::BlockNode::lastStatement): Added.
+ (JSC::BlockNode::emitBytecode): Changed to use emitBytecode instead of
+ statementListEmitCode.
+ (JSC::CaseClauseNode::emitBytecode): Added.
+ (JSC::CaseBlockNode::emitBytecodeForBlock): Changed to use emitBytecode
+ instead of statementListEmitCode.
+ (JSC::ScopeNodeData::ScopeNodeData): Changed to store the
+ SourceElements* instead of using releaseContentsIntoVector.
+ (JSC::ScopeNode::emitStatementsBytecode): Added.
+ (JSC::ScopeNode::singleStatement): Added.
+ (JSC::ProgramNode::emitBytecode): Call emitStatementsBytecode instead
+ of statementListEmitCode.
+ (JSC::EvalNode::emitBytecode): Ditto.
+ (JSC::FunctionBodyNode::emitBytecode): Call emitStatementsBytecode
+ insetad of statementListEmitCode and check for the return node using
+ the new functions.
+
+ * parser/Nodes.h: Changed VarStack to store const Identifier* instead
+ of Identifier and rely on the arena to control lifetime. Added a new
+ ParserArenaFreeable class. Made ParserArenaDeletable inherit from
+ FastAllocBase instead of having its own operator new. Base the Node
+ class on ParserArenaFreeable. Changed the various Node classes
+ to use const Identifier& instead of Identifier to avoid the need to
+ call their destructors and allow them to function as "freeable" in the
+ arena. Removed extraneous JSC_FAST_CALL on definitions of inline functions.
+ Changed ElementNode, PropertyNode, ArgumentsNode, ParameterNode,
+ CaseClauseNode, ClauseListNode, and CaseBlockNode to use ParserArenaFreeable
+ as a base class since they do not descend from Node. Eliminated the
+ StatementVector type and instead have various classes use SourceElements*
+ instead of StatementVector. This prevents those classes from having to
+ use ParserArenaDeletable to make sure the vector destructor is called.
- https://bugs.webkit.org/show_bug.cgi?id=21609
- Make MessagePorts protect their peers across heaps
+ * parser/Parser.cpp:
+ (JSC::Parser::parse): Pass the arena to the lexer.
+
+ * parser/Parser.h: Added an include of ParserArena.h, which is no longer
+ included by Nodes.h.
+ (JSC::Parser::parseFunctionFromGlobalCode): Changed to use the
+ singleStatement function, since there is no longer any children function.
+ Removed some unneeded use of RefPtr.
+
+ * parser/ParserArena.cpp:
+ (JSC::ParserArena::ParserArena): Added. Initializes the new members,
+ m_freeableMemory, m_freeablePoolEnd, and m_identifiers.
+ (JSC::ParserArena::freeablePool): Added. Computes the pool pointer,
+ since we store only the current pointer and the end of pool pointer.
+ (JSC::ParserArena::deallocateObjects): Added. Contains the common
+ memory-deallocation logic used by both the destructor and the
+ reset function.
+ (JSC::ParserArena::~ParserArena): Changed to call deallocateObjects.
+ (JSC::ParserArena::reset): Ditto. Also added code to zero out the
+ new structures, and switched to use clear() instead of shrink(0) since
+ we don't really reuse arenas.
+ (JSC::ParserArena::makeNumericIdentifier): Added.
+ (JSC::ParserArena::allocateFreeablePool): Added. Used when the pool
+ is empty.
+ (JSC::ParserArena::isEmpty): Added. No longer inline, which is fine
+ since this is used only for assertions at the moment.
+ (JSC::ParserArena::derefWithArena): Make non-inline.
+
+ * parser/ParserArena.h: Added an actual arena of "freeable" objects,
+ ones that don't need destructors to be called. Also added a separate
+ IdentifierArena object, a segmented vector of identifiers that used
+ to be in the Lexer.
+
+ * runtime/Executable.h: Moved the definition of the
+ FunctionExecutable::make function here. It can't go in JSFunction.h
+ since that header has to be used outside JavaScriptCore and so can't
+ include this, which includes Nodes.h. The function could be moved
+ elswhere if we don't want to include JSFunction.h in this header, but
+ for now this seems to be the best place.
+
+ * runtime/JSFunction.h: Removed the include of Executable.h and
+ definition of the FunctionExecutable::make function.
+
+ * wtf/FastMalloc.cpp: Fixed an incorrect comment.
+
+2009-08-21 Mark Rowe <mrowe@apple.com>
+
+ Fix the non-JIT build.
+
+ * runtime/Executable.cpp:
+ * runtime/Executable.h:
+
+2009-08-21 Gavin Barraclough <barraclough@apple.com>
+
+ Speculative QuickTime build fix.
- * JavaScriptCore.exp:
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::markCrossHeapDependentObjects):
- * kjs/JSGlobalObject.h:
- * kjs/collector.cpp:
- (JSC::Heap::collect):
- Before GC sweep phase, a function supplied by global object is now called for all global
- objects in the heap, making it possible to implement cross-heap dependencies.
+ * runtime/JSArray.cpp:
-2008-10-15 Alexey Proskuryakov <ap@webkit.org>
+2009-08-21 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Darin Adler.
+ Speculative QT build fix.
+
+ * runtime/StringPrototype.cpp:
- https://bugs.webkit.org/show_bug.cgi?id=21610
- run-webkit-threads --threaded crashes in StructureID destructor
+2009-08-21 Gavin Barraclough <barraclough@apple.com>
- * kjs/StructureID.cpp:
- (JSC::StructureID::StructureID):
- (JSC::StructureID::~StructureID):
- Protect access to a static (debug-only) HashSet with a lock.
+ Reviewed by Oliver Hunt.
+
+ Restructure Executable types so that host functions do not hold a FunctionExecutable.
+ https://bugs.webkit.org/show_bug.cgi?id=28621
+
+ All JSFunction objects have a pointer to an Executable*. This is currently always a
+ FunctionExecutable, however this has a couple of drawbacks. Host functions do not
+ store a range of information that the FunctionExecutable provides (source, name,
+ CodeBlock & information presently held on the FunctionBodyNode).
+
+ [ * nearly all... see below! ]
+
+ Instead, make JSFunctions hold a pointer to an ExecutableBase, move fields specific
+ to JS sourced executable types (source, node) into a new subclass (ScriptExecutable),
+ and create a new NativeExecutable type. We now provide a new method in JSFunction
+ to access & downcast to FunctionExecutable, but in doing so we can make an early
+ check (with an ASSERT) to ensure that the Executable read from a function will only
+ be treated as a FunctionExecutable (and thus the JS sepcific fields will only be
+ accessed) if the JSFunction is not a host function.
+
+ There is one JSFunction that currently does not have an Executable, which is the
+ object created to allow us to read out the vtable pointer. By making this change
+ we can also add a new Executable type fror this object (VPtrHackExecutable).
+ Since this means that really all JSFunctions have an Executable we no longer have
+ to null-check m_executable before us it - particularly in isHostFunction().
+
+ This patch removes CacheableEvalExecutable, since all subclasses of ExecutableBase
+ can now be ref-counted - since both JSFunction holds (and ref-counts) an ExecutableBase
+ that might be a FunctionExecutable or a NativeExecutable. This does now mean that all
+ ProgramExecutables and EvalExecutables (unnecessarily) provide an interface to be
+ ref-counted, however this seems less-bad than host functions unnecessarily providing
+ interface to access non-host specific information.
+
+ The class hierarcy has changed from this:
+
+ - ExecutableBase
+ - ProgramExecutable
+ - EvalExecutable
+ - CacheableEvalExecutable (also RefCounted by multiple-inheritance)
+ - FunctionExecutable (also RefCounted by multiple-inheritance, 'special' FunctionExecutable also used for host functions)
+
+ To this:
+
+ - RefCounted
+ - ExecutableBase
+ - NativeExecutable
+ - VPtrHackExecutable
+ - ScriptExecutable
+ - ProgramExecutable
+ - EvalExecutable
+ - FunctionExecutable
+
+ This patch speeds up sunspidey by a couple of ms (presumably due to the changes to isHostFunction()).
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::CodeBlock):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::ownerExecutable):
+ (JSC::GlobalCodeBlock::GlobalCodeBlock):
+ * bytecode/EvalCodeCache.h:
+ (JSC::EvalCodeCache::get):
+ * debugger/Debugger.cpp:
+ (JSC::Debugger::recompileAllJSFunctions):
+ * interpreter/CachedCall.h:
+ (JSC::CachedCall::CachedCall):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::callEval):
+ (JSC::Interpreter::privateExecute):
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * profiler/Profiler.cpp:
+ (JSC::createCallIdentifierFromFunctionImp):
+ * runtime/Arguments.h:
+ (JSC::Arguments::getArgumentsData):
+ (JSC::Arguments::Arguments):
+ * runtime/Executable.cpp:
+ (JSC::NativeExecutable::~NativeExecutable):
+ (JSC::VPtrHackExecutable::~VPtrHackExecutable):
+ * runtime/Executable.h:
+ (JSC::ExecutableBase::ExecutableBase):
+ (JSC::ExecutableBase::~ExecutableBase):
+ (JSC::ExecutableBase::isHostFunction):
+ (JSC::NativeExecutable::NativeExecutable):
+ (JSC::VPtrHackExecutable::VPtrHackExecutable):
+ (JSC::ScriptExecutable::ScriptExecutable):
+ (JSC::ScriptExecutable::source):
+ (JSC::ScriptExecutable::sourceID):
+ (JSC::ScriptExecutable::sourceURL):
+ (JSC::ScriptExecutable::lineNo):
+ (JSC::ScriptExecutable::lastLine):
+ (JSC::ScriptExecutable::usesEval):
+ (JSC::ScriptExecutable::usesArguments):
+ (JSC::ScriptExecutable::needsActivation):
+ (JSC::EvalExecutable::EvalExecutable):
+ (JSC::EvalExecutable::create):
+ (JSC::ProgramExecutable::ProgramExecutable):
+ (JSC::FunctionExecutable::FunctionExecutable):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::functionProtoFuncToString):
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::JSFunction):
+ (JSC::JSFunction::~JSFunction):
+ (JSC::JSFunction::markChildren):
+ (JSC::JSFunction::getCallData):
+ (JSC::JSFunction::call):
+ (JSC::JSFunction::lengthGetter):
+ (JSC::JSFunction::getConstructData):
+ (JSC::JSFunction::construct):
+ * runtime/JSFunction.h:
+ (JSC::JSFunction::executable):
+ (JSC::JSFunction::jsExecutable):
+ (JSC::JSFunction::isHostFunction):
-2008-10-15 Sam Weinig <sam@webkit.org>
+2009-08-20 Oliver Hunt <oliver@apple.com>
- Reviewed by Goeffrey Garen.
+ Reviewed by Maciej Stachowiak.
- Add function to dump statistics for StructureIDs.
+ Browser hangs on opening Web Inspector.
+ https://bugs.webkit.org/show_bug.cgi?id=28438
- * kjs/StructureID.cpp:
- (JSC::StructureID::dumpStatistics):
- (JSC::StructureID::StructureID):
- (JSC::StructureID::~StructureID):
- * kjs/StructureID.h:
+ Code generation needs to be able to walk the entire scopechain in some
+ cases, however the symbol table used by activations was a member of the
+ codeblock. Following recompilation this may no longer exist, leading
+ to a crash or hang on lookup.
-2008-10-15 Cameron Zwarich <zwarich@apple.com>
+ We fix this by introducing a refcounted SymbolTable subclass, SharedSymbolTable,
+ for the CodeBlocks used by function code. This allows activations to
+ maintain ownership of a copy of the symbol table even after recompilation so
+ they can continue to work.
- Reviewed by Maciej Stachowiak.
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::CodeBlock):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::symbolTable):
+ (JSC::CodeBlock::sharedSymbolTable):
+ (JSC::GlobalCodeBlock::GlobalCodeBlock):
+ (JSC::FunctionCodeBlock::FunctionCodeBlock):
+ (JSC::FunctionCodeBlock::~FunctionCodeBlock):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::retrieveArguments):
+ * runtime/Executable.cpp:
+ (JSC::EvalExecutable::generateBytecode):
+ (JSC::FunctionExecutable::generateBytecode):
+ (JSC::FunctionExecutable::reparseExceptionInfo):
+ (JSC::EvalExecutable::reparseExceptionInfo):
+ * runtime/JSActivation.h:
+ (JSC::JSActivation::JSActivationData::JSActivationData):
+ (JSC::JSActivation::JSActivationData::~JSActivationData):
+ * runtime/SymbolTable.h:
- Bug 21633: Avoid using a HashMap when there is only a single transition
- <https://bugs.webkit.org/show_bug.cgi?id=21633>
+2009-08-20 Xan Lopez <xlopez@igalia.com>
- This is a 0.8% speedup on SunSpider and between a 0.5% and 1.0% speedup
- on the V8 benchmark suite, depending on which harness we use. It will
- also slightly reduce the memory footprint of a StructureID.
+ Add new file to GTK+ build.
- * kjs/StructureID.cpp:
- (JSC::StructureID::StructureID):
- (JSC::StructureID::~StructureID):
- (JSC::StructureID::addPropertyTransition):
- * kjs/StructureID.h:
- (JSC::StructureID::):
+ * GNUmakefile.am:
-2008-10-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
+2009-08-20 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Geoffrey Garen.
+ Reviewed by Maciej Stachowiak.
- 1.40% speedup on SunSpider, 1.44% speedup on V8. (Linux)
+ Added a number => string cache.
- No change on Mac.
-
- * VM/Machine.cpp:
- (JSC::fastIsNumber): ALWAYS_INLINE modifier added.
+ 1.07x faster on v8 (1.7x faster on v8-splay).
+ 1.004x faster on SunSpider.
-2008-10-15 Geoffrey Garen <ggaren@apple.com>
+ * runtime/JSCell.h: Moved JSValue::toString to JSString.h.
+ * runtime/JSGlobalData.h: Holds the cache.
+ * runtime/JSNumberCell.cpp:
+ (JSC::JSNumberCell::toString):
+ (JSC::JSNumberCell::toThisString): Removed -0 special case.
+ UString handles this now, since too many clients were
+ special-casing it.
- Reviewed by Cameron Zwarich.
+ * runtime/JSString.h:
+ (JSC::JSValue::toString): Use the cache when converting
+ an int or double to string.
- Fixed https://bugs.webkit.org/show_bug.cgi?id=21345
- Start the debugger without reloading the inspected page
+ * runtime/Operations.h:
+ (JSC::concatenateStrings): Call toString to take advantage
+ of the cache.
- * JavaScriptCore.exp: New symbols.
- * JavaScriptCore.xcodeproj/project.pbxproj: New files.
+ * runtime/SmallStrings.h:
+ (JSC::NumericStrings::add):
+ (JSC::NumericStrings::lookup): The cache.
- * VM/CodeBlock.h:
- (JSC::EvalCodeCache::get): Updated for tweak to parsing API.
+ * runtime/UString.cpp:
+ (JSC::UString::from): Added -0 special case mentioned above.
+ Removed appendNumeric because it's mutually exclusive with the
+ cache.
- * kjs/CollectorHeapIterator.h: Added. An iterator for the object heap,
- which we use to find all the live functions and recompile them.
+2009-08-20 Oliver Hunt <oliver@apple.com>
- * kjs/DebuggerCallFrame.cpp:
- (JSC::DebuggerCallFrame::evaluate): Updated for tweak to parsing API.
+ Reviewed by Gavin Barraclough.
- * kjs/FunctionConstructor.cpp:
- (JSC::constructFunction): Updated for tweak to parsing API.
+ REGRESSION: fast/profiler/call.html is crashing occasionally
+ https://bugs.webkit.org/show_bug.cgi?id=28476
- * kjs/JSFunction.cpp:
- (JSC::JSFunction::JSFunction): Try to validate our SourceCode in debug
- builds by ASSERTing that it's syntactically valid. This doesn't catch
- all SourceCode bugs, but it catches a lot of them.
+ Using the codeblock for information about how many parameters and
+ locals a function has is unsafe in certain circumstances. The
+ basic scenario is all function code being cleared in response to
+ the debugger or profiler being enabled, and then an activation is
+ marked before its associated function is re-executed.
- * kjs/JSGlobalObjectFunctions.cpp:
- (JSC::globalFuncEval): Updated for tweak to parsing API.
+ To deal with this scenario we store the variable count of a function
+ directly in the FunctionExecutable, and then use that information.
- * kjs/Parser.cpp:
- (JSC::Parser::parse):
- * kjs/Parser.h:
- (JSC::Parser::parse): Tweaked the parser to make it possible to parse
- without an ExecState, and to allow the client to specify a debugger to
- notify (or not) about the source we parse. This allows the inspector
- to recompile even though no JavaScript is executing, then notify the
- debugger about all source code when it's done.
+ * runtime/Arguments.h:
+ (JSC::Arguments::getArgumentsData):
+ * runtime/Executable.cpp:
+ (JSC::FunctionExecutable::generateBytecode):
+ * runtime/Executable.h:
+ (JSC::FunctionExecutable::FunctionExecutable):
+ (JSC::FunctionExecutable::variableCount):
+ * runtime/JSActivation.cpp:
+ (JSC::JSActivation::markChildren):
- * kjs/Shell.cpp:
- (prettyPrintScript): Updated for tweak to parsing API.
+2009-08-20 Gavin Barraclough <barraclough@apple.com>
- * kjs/SourceRange.h:
- (JSC::SourceCode::isNull): Added to help with ASSERTs.
+ Reviewed by Oliver Hunt.
- * kjs/collector.cpp:
- (JSC::Heap::heapAllocate):
- (JSC::Heap::sweep):
- (JSC::Heap::primaryHeapBegin):
- (JSC::Heap::primaryHeapEnd):
- * kjs/collector.h:
- (JSC::): Moved a bunch of declarations around to enable compilation of
- CollectorHeapIterator.
+ Numbering of arguments to emitGetJITStubArg/emitPutJITStubArg incorrect
+ <bug lost in the great bug disasteroony of 08/20/09!>
- * kjs/interpreter.cpp:
- (JSC::Interpreter::checkSyntax):
- (JSC::Interpreter::evaluate): Updated for tweak to parsing API.
+ The argumentNumber argument to emitGetJITStubArg/emitPutJITStubArg should match
+ the argument number used within the stub functions in JITStubs.cpp, but it doesn't.
- * kjs/lexer.h:
- (JSC::Lexer::sourceCode): BUG FIX: Calculate SourceCode ranges relative
- to the SourceCode range in which we're lexing, otherwise nested functions
- that are compiled individually get SourceCode ranges that don't reflect
- their nesting.
+ Firstly, all the numbers changed when we added a void* 'reserved' as the first slot
+ (rather than leaving argument 0 unused), and secondly in 32_64 builds the index to
+ peek/poke needs to be multiplies by 2 (since the argument to peek/poke is a number
+ of machine words, and on 32_64 build the argument slots to stub functions are two
+ words wide).
- * kjs/nodes.cpp:
- (JSC::FunctionBodyNode::FunctionBodyNode):
- (JSC::FunctionBodyNode::finishParsing):
- (JSC::FunctionBodyNode::create):
- (JSC::FunctionBodyNode::copyParameters):
- * kjs/nodes.h:
- (JSC::ScopeNode::setSource):
- (JSC::FunctionBodyNode::parameterCount): Added some helper functions for
- copying one FunctionBodyNode's parameters to another. The recompiler uses
- these when calling "finishParsing".
+ * jit/JIT.h:
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallSetupArgs):
+ (JSC::JIT::compileOpConstructSetupArgs):
+ (JSC::JIT::compileOpCallVarargsSetupArgs):
+ (JSC::JIT::compileOpCall):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitPutJITStubArg):
+ (JSC::JIT::emitPutJITStubArgConstant):
+ (JSC::JIT::emitGetJITStubArg):
+ (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::privateCompilePutByIdTransition):
-2008-10-15 Joerg Bornemann <joerg.bornemann@trolltech.com>
+2009-08-20 Oliver Hunt <oliver@apple.com>
- Reviewed by Darin Adler.
+ Reviewed by Geoff Garen.
- - part of https://bugs.webkit.org/show_bug.cgi?id=20746
- Fix compilation on Windows CE.
+ REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest
+ https://bugs.webkit.org/show_bug.cgi?id=28332
- str(n)icmp, strdup and vsnprintf are not available on Windows CE,
- they are called _str(n)icmp, etc. instead
+ Follow up style fixes that were missed in review.
- * wtf/StringExtras.h: Added inline function implementations.
+ * runtime/Structure.cpp:
+ (JSC::Structure::hasTransition):
+ * runtime/Structure.h:
+ (JSC::Structure::get):
+ (JSC::StructureTransitionTable::contains):
+ * runtime/StructureTransitionTable.h:
+ (JSC::StructureTransitionTable::add):
-2008-10-15 Gabor Loki <loki@inf.u-szeged.hu>
+2009-08-20 Oliver Hunt <oliver@apple.com>
- Reviewed by Cameron Zwarich.
+ Add new exports to windows jsc build
- <https://bugs.webkit.org/show_bug.cgi?id=20912>
- Use simple uint32_t multiplication on op_mul if both operands are
- immediate number and they are between zero and 0x7FFF.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
+2009-08-20 Oliver Hunt <oliver@apple.com>
-2008-10-09 Darin Fisher <darin@chromium.org>
+ Reviewed by Gavin Barraclough.
- Reviewed by Sam Weinig.
+ REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest
+ https://bugs.webkit.org/show_bug.cgi?id=28332
- Make pan scrolling a platform configurable option.
- https://bugs.webkit.org/show_bug.cgi?id=21515
+ The method check optimisation made transitions aware of the value being
+ assigned when a transition was assigning a function. This had the side
+ effect of making every assignment of a function expression result in a
+ new transition, and thus a new Structure. The net result of this is that
+ the common JS idiom of
- * wtf/Platform.h: Add ENABLE_PAN_SCROLLING
+ function MyObject() {
+ this.myFunction = function(...){...};
+ }
+ new MyObject();
-2008-10-14 Maciej Stachowiak <mjs@apple.com>
+ Will produce a unique structure on every iteration, meaning that all
+ caching is defeated and there is a significant amount of structure churn.
- Rubber stamped by Sam Weinig.
-
- - revert r37572 and r37581 for now
-
- Turns out GCC 4.2 is still a (small) regression, we'll have to do
- more work to turn it on.
+ The fix is to return the transition to its original form where it is
+ keyed off a property name + attributes tuple, but have each transition
+ support an optional transition on a specific value.
- * Configurations/DebugRelease.xcconfig:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CTI.cpp:
- * VM/CTI.h:
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_convert_this):
- (JSC::Machine::cti_op_end):
- (JSC::Machine::cti_op_add):
- (JSC::Machine::cti_op_pre_inc):
- (JSC::Machine::cti_timeout_check):
- (JSC::Machine::cti_register_file_check):
- (JSC::Machine::cti_op_loop_if_less):
- (JSC::Machine::cti_op_loop_if_lesseq):
- (JSC::Machine::cti_op_new_object):
- (JSC::Machine::cti_op_put_by_id):
- (JSC::Machine::cti_op_put_by_id_second):
- (JSC::Machine::cti_op_put_by_id_generic):
- (JSC::Machine::cti_op_put_by_id_fail):
- (JSC::Machine::cti_op_get_by_id):
- (JSC::Machine::cti_op_get_by_id_second):
- (JSC::Machine::cti_op_get_by_id_generic):
- (JSC::Machine::cti_op_get_by_id_fail):
- (JSC::Machine::cti_op_instanceof):
- (JSC::Machine::cti_op_del_by_id):
- (JSC::Machine::cti_op_mul):
- (JSC::Machine::cti_op_new_func):
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_vm_compile):
- (JSC::Machine::cti_op_push_activation):
- (JSC::Machine::cti_op_call_NotJSFunction):
- (JSC::Machine::cti_op_create_arguments):
- (JSC::Machine::cti_op_tear_off_activation):
- (JSC::Machine::cti_op_tear_off_arguments):
- (JSC::Machine::cti_op_ret_profiler):
- (JSC::Machine::cti_op_ret_scopeChain):
- (JSC::Machine::cti_op_new_array):
- (JSC::Machine::cti_op_resolve):
- (JSC::Machine::cti_op_construct_JSConstruct):
- (JSC::Machine::cti_op_construct_NotJSConstruct):
- (JSC::Machine::cti_op_get_by_val):
- (JSC::Machine::cti_op_resolve_func):
- (JSC::Machine::cti_op_sub):
- (JSC::Machine::cti_op_put_by_val):
- (JSC::Machine::cti_op_put_by_val_array):
- (JSC::Machine::cti_op_lesseq):
- (JSC::Machine::cti_op_loop_if_true):
- (JSC::Machine::cti_op_negate):
- (JSC::Machine::cti_op_resolve_base):
- (JSC::Machine::cti_op_resolve_skip):
- (JSC::Machine::cti_op_resolve_global):
- (JSC::Machine::cti_op_div):
- (JSC::Machine::cti_op_pre_dec):
- (JSC::Machine::cti_op_jless):
- (JSC::Machine::cti_op_not):
- (JSC::Machine::cti_op_jtrue):
- (JSC::Machine::cti_op_post_inc):
- (JSC::Machine::cti_op_eq):
- (JSC::Machine::cti_op_lshift):
- (JSC::Machine::cti_op_bitand):
- (JSC::Machine::cti_op_rshift):
- (JSC::Machine::cti_op_bitnot):
- (JSC::Machine::cti_op_resolve_with_base):
- (JSC::Machine::cti_op_new_func_exp):
- (JSC::Machine::cti_op_mod):
- (JSC::Machine::cti_op_less):
- (JSC::Machine::cti_op_neq):
- (JSC::Machine::cti_op_post_dec):
- (JSC::Machine::cti_op_urshift):
- (JSC::Machine::cti_op_bitxor):
- (JSC::Machine::cti_op_new_regexp):
- (JSC::Machine::cti_op_bitor):
- (JSC::Machine::cti_op_call_eval):
- (JSC::Machine::cti_op_throw):
- (JSC::Machine::cti_op_get_pnames):
- (JSC::Machine::cti_op_next_pname):
- (JSC::Machine::cti_op_push_scope):
- (JSC::Machine::cti_op_pop_scope):
- (JSC::Machine::cti_op_typeof):
- (JSC::Machine::cti_op_is_undefined):
- (JSC::Machine::cti_op_is_boolean):
- (JSC::Machine::cti_op_is_number):
- (JSC::Machine::cti_op_is_string):
- (JSC::Machine::cti_op_is_object):
- (JSC::Machine::cti_op_is_function):
- (JSC::Machine::cti_op_stricteq):
- (JSC::Machine::cti_op_nstricteq):
- (JSC::Machine::cti_op_to_jsnumber):
- (JSC::Machine::cti_op_in):
- (JSC::Machine::cti_op_push_new_scope):
- (JSC::Machine::cti_op_jmp_scopes):
- (JSC::Machine::cti_op_put_by_index):
- (JSC::Machine::cti_op_switch_imm):
- (JSC::Machine::cti_op_switch_char):
- (JSC::Machine::cti_op_switch_string):
- (JSC::Machine::cti_op_del_by_val):
- (JSC::Machine::cti_op_put_getter):
- (JSC::Machine::cti_op_put_setter):
- (JSC::Machine::cti_op_new_error):
- (JSC::Machine::cti_op_debug):
- (JSC::Machine::cti_vm_throw):
- * VM/Machine.h:
- * masm/X86Assembler.h:
- (JSC::X86Assembler::emitRestoreArgumentReference):
- (JSC::X86Assembler::emitRestoreArgumentReferenceForTrampoline):
- * wtf/Platform.h:
+ * JavaScriptCore.exp:
+ * runtime/JSObject.h:
+ (JSC::JSObject::putDirectInternal):
+ * runtime/Structure.cpp:
+ (JSC::Structure::~Structure):
+ (JSC::Structure::addPropertyTransitionToExistingStructure):
+ (JSC::Structure::addPropertyTransition):
+ (JSC::Structure::hasTransition):
+ * runtime/Structure.h:
+ (JSC::Structure::transitionedFor):
+ (JSC::Structure::hasTransition):
+ (JSC::Structure::):
+ (JSC::StructureTransitionTable::contains):
+ (JSC::StructureTransitionTable::get):
+ * runtime/StructureTransitionTable.h:
+ (JSC::StructureTransitionTableHashTraits::emptyValue):
+ (JSC::StructureTransitionTable::hasTransition):
+ (JSC::StructureTransitionTable::remove):
+ (JSC::StructureTransitionTable::add):
-2008-10-14 Alexey Proskuryakov <ap@webkit.org>
+2009-08-20 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Darin Adler.
+ Reviewed by Oliver Hunt.
- https://bugs.webkit.org/show_bug.cgi?id=20256
- Array.push and other standard methods disappear
+ Remove FunctionCodeBlock.
+ https://bugs.webkit.org/show_bug.cgi?id=28502
- * kjs/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- (JSC::JSGlobalData::~JSGlobalData):
- Don't use static hash tables even on platforms that don't enable JSC_MULTIPLE_THREADS -
- these tables reference IdentifierTable, which is always per-GlobalData.
+ These only exist to allow JIT code to dereference properties off the
+ CodeBlock for any callee, regardless of whether it is a host function.
-2008-10-14 Maciej Stachowiak <mjs@apple.com>
+ Instead just use the FunctionExecutable. Copy the m_parameters field
+ from the CodeBlock into the Executable, and use this to distinguish
+ between host functions, functions that have been bytecompiled, and
+ functions that have not.
- Reviewed by Cameron Zwarich.
-
- - always use CTI_ARGUMENTS and CTI_ARGUMENTS_FASTCALL
-
- This is a small regression for GCC 4.0, but simplifies the code
- for future improvements and lets us focus on GCC 4.2+ and MSVC.
-
- * VM/CTI.cpp:
- * VM/CTI.h:
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_convert_this):
- (JSC::Machine::cti_op_end):
- (JSC::Machine::cti_op_add):
- (JSC::Machine::cti_op_pre_inc):
- (JSC::Machine::cti_timeout_check):
- (JSC::Machine::cti_register_file_check):
- (JSC::Machine::cti_op_loop_if_less):
- (JSC::Machine::cti_op_loop_if_lesseq):
- (JSC::Machine::cti_op_new_object):
- (JSC::Machine::cti_op_put_by_id):
- (JSC::Machine::cti_op_put_by_id_second):
- (JSC::Machine::cti_op_put_by_id_generic):
- (JSC::Machine::cti_op_put_by_id_fail):
- (JSC::Machine::cti_op_get_by_id):
- (JSC::Machine::cti_op_get_by_id_second):
- (JSC::Machine::cti_op_get_by_id_generic):
- (JSC::Machine::cti_op_get_by_id_fail):
- (JSC::Machine::cti_op_instanceof):
- (JSC::Machine::cti_op_del_by_id):
- (JSC::Machine::cti_op_mul):
- (JSC::Machine::cti_op_new_func):
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_vm_compile):
- (JSC::Machine::cti_op_push_activation):
- (JSC::Machine::cti_op_call_NotJSFunction):
- (JSC::Machine::cti_op_create_arguments):
- (JSC::Machine::cti_op_tear_off_activation):
- (JSC::Machine::cti_op_tear_off_arguments):
- (JSC::Machine::cti_op_ret_profiler):
- (JSC::Machine::cti_op_ret_scopeChain):
- (JSC::Machine::cti_op_new_array):
- (JSC::Machine::cti_op_resolve):
- (JSC::Machine::cti_op_construct_JSConstruct):
- (JSC::Machine::cti_op_construct_NotJSConstruct):
- (JSC::Machine::cti_op_get_by_val):
- (JSC::Machine::cti_op_resolve_func):
- (JSC::Machine::cti_op_sub):
- (JSC::Machine::cti_op_put_by_val):
- (JSC::Machine::cti_op_put_by_val_array):
- (JSC::Machine::cti_op_lesseq):
- (JSC::Machine::cti_op_loop_if_true):
- (JSC::Machine::cti_op_negate):
- (JSC::Machine::cti_op_resolve_base):
- (JSC::Machine::cti_op_resolve_skip):
- (JSC::Machine::cti_op_resolve_global):
- (JSC::Machine::cti_op_div):
- (JSC::Machine::cti_op_pre_dec):
- (JSC::Machine::cti_op_jless):
- (JSC::Machine::cti_op_not):
- (JSC::Machine::cti_op_jtrue):
- (JSC::Machine::cti_op_post_inc):
- (JSC::Machine::cti_op_eq):
- (JSC::Machine::cti_op_lshift):
- (JSC::Machine::cti_op_bitand):
- (JSC::Machine::cti_op_rshift):
- (JSC::Machine::cti_op_bitnot):
- (JSC::Machine::cti_op_resolve_with_base):
- (JSC::Machine::cti_op_new_func_exp):
- (JSC::Machine::cti_op_mod):
- (JSC::Machine::cti_op_less):
- (JSC::Machine::cti_op_neq):
- (JSC::Machine::cti_op_post_dec):
- (JSC::Machine::cti_op_urshift):
- (JSC::Machine::cti_op_bitxor):
- (JSC::Machine::cti_op_new_regexp):
- (JSC::Machine::cti_op_bitor):
- (JSC::Machine::cti_op_call_eval):
- (JSC::Machine::cti_op_throw):
- (JSC::Machine::cti_op_get_pnames):
- (JSC::Machine::cti_op_next_pname):
- (JSC::Machine::cti_op_push_scope):
- (JSC::Machine::cti_op_pop_scope):
- (JSC::Machine::cti_op_typeof):
- (JSC::Machine::cti_op_is_undefined):
- (JSC::Machine::cti_op_is_boolean):
- (JSC::Machine::cti_op_is_number):
- (JSC::Machine::cti_op_is_string):
- (JSC::Machine::cti_op_is_object):
- (JSC::Machine::cti_op_is_function):
- (JSC::Machine::cti_op_stricteq):
- (JSC::Machine::cti_op_nstricteq):
- (JSC::Machine::cti_op_to_jsnumber):
- (JSC::Machine::cti_op_in):
- (JSC::Machine::cti_op_push_new_scope):
- (JSC::Machine::cti_op_jmp_scopes):
- (JSC::Machine::cti_op_put_by_index):
- (JSC::Machine::cti_op_switch_imm):
- (JSC::Machine::cti_op_switch_char):
- (JSC::Machine::cti_op_switch_string):
- (JSC::Machine::cti_op_del_by_val):
- (JSC::Machine::cti_op_put_getter):
- (JSC::Machine::cti_op_put_setter):
- (JSC::Machine::cti_op_new_error):
- (JSC::Machine::cti_op_debug):
- (JSC::Machine::cti_vm_throw):
- * VM/Machine.h:
- * masm/X86Assembler.h:
- (JSC::X86Assembler::emitRestoreArgumentReference):
- (JSC::X86Assembler::emitRestoreArgumentReferenceForTrampoline):
- * wtf/Platform.h:
+ m_parameters is moved to ExecutableBase rather than FunctionExecutable
+ so that (as a separate change) we can move make a separate class of
+ executable for host code, which is not devived from FunctionExecutable
+ (host code does not feature any of the properties that normal executable
+ do and will provide, such as source, attributes, and a parsed name).
-2008-10-13 Maciej Stachowiak <mjs@apple.com>
+ 1% win on v8 tests, 0.5% on sunspider.
- Reviewed by Cameron Zwarich.
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::derefStructures):
+ (JSC::CodeBlock::refStructures):
+ (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
+ (JSC::CodeBlock::handlerForBytecodeOffset):
+ (JSC::CodeBlock::lineNumberForBytecodeOffset):
+ (JSC::CodeBlock::expressionRangeForBytecodeOffset):
+ (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
+ (JSC::CodeBlock::functionRegisterForBytecodeOffset):
+ (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset):
+ (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset):
+ * bytecode/CodeBlock.h:
+ (JSC::):
+ (JSC::CodeBlock::source):
+ (JSC::CodeBlock::sourceOffset):
+ (JSC::CodeBlock::evalCodeCache):
+ (JSC::CodeBlock::createRareDataIfNecessary):
- - make Machine::getArgumentsData an Arguments method and inline it
+ remove NativeCodeBlocks and the NativeCode code type.
- ~2% on v8 raytrace
+ * jit/JIT.cpp:
+ (JSC::JIT::linkCall):
- * VM/Machine.cpp:
- * kjs/Arguments.h:
- (JSC::Machine::getArgumentsData):
+ Revert to previous behaviour (as currently still commented!) that Hhost functions have a null codeblock.
-2008-10-13 Alp Toker <alp@nuanti.com>
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallInitializeCallFrame):
+ (JSC::JIT::compileOpCallSetupArgs):
+ (JSC::JIT::compileOpCallVarargsSetupArgs):
+ (JSC::JIT::compileOpConstructSetupArgs):
+ (JSC::JIT::compileOpCallVarargs):
+ (JSC::JIT::compileOpCall):
+ (JSC::JIT::compileOpCallSlowCase):
- Fix autotools dist build target by listing recently added header
- files only. Not reviewed.
+ Bring the 32_64 & non-32_64 JITs into line with each other, callee in regT0.
- * GNUmakefile.am:
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
-2008-10-13 Maciej Stachowiak <mjs@apple.com>
+ Rewrite call trampolines to not use the CodeBlock.
- Rubber stamped by Mark Rowe.
-
- - fixed <rdar://problem/5806316> JavaScriptCore should not force building with gcc 4.0
- - use gcc 4.2 when building with Xcode 3.1 or newer on Leopard, even though this is not the default
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
- * Configurations/DebugRelease.xcconfig:
- * JavaScriptCore.xcodeproj/project.pbxproj:
+ Make call_JSFunction & call_arityCheck return the callee, don't expect to be passed the CodeBlock.
-2008-10-13 Cameron Zwarich <zwarich@apple.com>
+ * runtime/Executable.cpp:
+ (JSC::FunctionExecutable::generateBytecode):
+ (JSC::FunctionExecutable::recompile):
+ (JSC::FunctionExecutable::FunctionExecutable):
+ * runtime/Executable.h:
+ (JSC::ExecutableBase::):
+ (JSC::ExecutableBase::ExecutableBase):
+ (JSC::FunctionExecutable::isHostFunction):
- Reviewed by Geoff Garen.
+ Add m_numParameters.
- Bug 21541: Move RegisterFile growth check to callee
- <https://bugs.webkit.org/show_bug.cgi?id=21541>
-
- Move the RegisterFile growth check to the callee in the common case,
- where some of the information is known statically at JIT time. There is
- still a check in the caller in the case where the caller provides too
- few arguments.
-
- This is a 2.1% speedup on the V8 benchmark, including a 5.1% speedup on
- the Richards benchmark, a 4.1% speedup on the DeltaBlue benchmark, and a
- 1.4% speedup on the Earley-Boyer benchmark. It is also a 0.5% speedup on
- SunSpider.
-
- * VM/CTI.cpp:
- (JSC::CTI::privateCompile):
- * VM/Machine.cpp:
- (JSC::Machine::cti_register_file_check):
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_op_construct_JSConstruct):
- * VM/Machine.h:
- * VM/RegisterFile.h:
- * masm/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::cmpl_mr):
- (JSC::X86Assembler::emitUnlinkedJg):
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::~JSFunction):
-2008-10-13 Sam Weinig <sam@webkit.org>
+ Only call generatedBytecode() on JSFunctions non-host FunctionExecutables.
- Reviewed by Dan Bernstein.
+2009-08-20 Yongjun Zhang <yongjun.zhang@nokia.com>
- Fix for https://bugs.webkit.org/show_bug.cgi?id=21577
- 5 false positive StructureID leaks
+ Reviewed by Eric Seidel.
- - Add leak ignore set to StructureID to selectively ignore leaking some StructureIDs.
- - Add create method to JSGlolalData to be used when the data will be intentionally
- leaked and ignore all leaks caused the StructureIDs stored in it.
+ https://bugs.webkit.org/show_bug.cgi?id=28054
+
+ Use a helper function to work around winscw compiler forward declaration bug
+ regarding templated classes.
- * JavaScriptCore.exp:
- * kjs/JSGlobalData.cpp:
- (JSC::JSGlobalData::createLeaked):
- * kjs/JSGlobalData.h:
- * kjs/StructureID.cpp:
- (JSC::StructureID::StructureID):
- (JSC::StructureID::~StructureID):
- (JSC::StructureID::startIgnoringLeaks):
- (JSC::StructureID::stopIgnoringLeaks):
- * kjs/StructureID.h:
+ Add parenthesis around (PassRefPtr::*UnspecifiedBoolType) to make winscw compiler
+ work with the default UnSpecifiedBoolType() operator, which removes the winscw
+ specific bool cast hack.
-2008-10-13 Marco Barisione <marco.barisione@collabora.co.uk>
+ * wtf/PassRefPtr.h:
+ (WTF::derefIfNotNull):
+ (WTF::PassRefPtr::~PassRefPtr):
- Reviewed by Darin Adler. Landed by Jan Alonzo.
+2009-08-19 Yong Li <yong.li@torchmobile.com>
- WebKit GTK Port needs a smartpointer to handle g_free (GFreePtr?)
- http://bugs.webkit.org/show_bug.cgi?id=20483
+ Reviewed by Gavin Barraclough.
- Add a GOwnPtr smart pointer (similar to OwnPtr) to handle memory
- allocated by GLib and start the conversion to use it.
+ Change namespace ARM to ARMRegisters
+ X86 to X86Registers to avoid conflict with macros
+ https://bugs.webkit.org/show_bug.cgi?id=28428
- * GNUmakefile.am:
- * wtf/GOwnPtr.cpp: Added.
- (WTF::GError):
- (WTF::GList):
- (WTF::GCond):
- (WTF::GMutex):
- (WTF::GPatternSpec):
- (WTF::GDir):
- * wtf/GOwnPtr.h: Added.
- (WTF::freeOwnedPtr):
- (WTF::GOwnPtr::GOwnPtr):
- (WTF::GOwnPtr::~GOwnPtr):
- (WTF::GOwnPtr::get):
- (WTF::GOwnPtr::release):
- (WTF::GOwnPtr::rawPtr):
- (WTF::GOwnPtr::set):
- (WTF::GOwnPtr::clear):
- (WTF::GOwnPtr::operator*):
- (WTF::GOwnPtr::operator->):
- (WTF::GOwnPtr::operator!):
- (WTF::GOwnPtr::operator UnspecifiedBoolType):
- (WTF::GOwnPtr::swap):
- (WTF::swap):
- (WTF::operator==):
- (WTF::operator!=):
- (WTF::getPtr):
- * wtf/Threading.h:
- * wtf/ThreadingGtk.cpp:
- (WTF::Mutex::~Mutex):
- (WTF::Mutex::lock):
- (WTF::Mutex::tryLock):
- (WTF::Mutex::unlock):
- (WTF::ThreadCondition::~ThreadCondition):
- (WTF::ThreadCondition::wait):
- (WTF::ThreadCondition::timedWait):
- (WTF::ThreadCondition::signal):
- (WTF::ThreadCondition::broadcast):
-
-2008-10-12 Gabriella Toth <gtoth@inf.u-szeged.hu>
+ * assembler/ARMAssembler.cpp:
+ * assembler/ARMAssembler.h:
+ * assembler/ARMv7Assembler.h:
+ * assembler/MacroAssemblerARM.h:
+ * assembler/MacroAssemblerARMv7.h:
+ * assembler/MacroAssemblerX86Common.h:
+ * assembler/MacroAssemblerX86_64.h:
+ * assembler/X86Assembler.h:
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ * jit/JITInlineMethods.h:
+ * jit/JITOpcodes.cpp:
+ * wrec/WRECGenerator.cpp:
+ * wrec/WRECGenerator.h:
+ * yarr/RegexJIT.cpp:
- Reviewed by Darin Adler.
+2009-08-19 Oliver Hunt <oliver@apple.com>
- - part of https://bugs.webkit.org/show_bug.cgi?id=21055
- Bug 21055: not invoked functions
+ Reviewed by Gavin Barraclough.
- * kjs/nodes.cpp: Deleted a function that is not invoked:
- statementListInitializeVariableAccessStack.
+ Devirtualise marking
+ https://bugs.webkit.org/show_bug.cgi?id=28294
-2008-10-12 Darin Adler <darin@apple.com>
+ We actually need to mark the value in a number object if we're using the
+ 32bit number representation.
- Reviewed by Sam Weinig.
+ * runtime/NumberObject.h:
+ (JSC::NumberObject::createStructure):
- * wtf/unicode/icu/UnicodeIcu.h: Fixed indentation to match WebKit coding style.
- * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
+2009-08-19 Gavin Barraclough <barraclough@apple.com>
-2008-10-12 Darin Adler <darin@apple.com>
+ Reviewed by Darin Adler.
- Reviewed by Sam Weinig.
+ We probably shouldn't be keeping the AST for eval nodes around forevar.
+ https://bugs.webkit.org/show_bug.cgi?id=28469
- - https://bugs.webkit.org/show_bug.cgi?id=21556
- Bug 21556: non-ASCII digits are allowed in places where only ASCII should be
+ EvalNodes don't destroyData() (delete their parser data) since they need to hold onto
+ their varStack. Copy a list of variable onto EvalCodeBlock, and this can go away.
- * wtf/unicode/icu/UnicodeIcu.h: Removed isDigit, digitValue, and isFormatChar.
- * wtf/unicode/qt4/UnicodeQt4.h: Ditto.
+ * bytecode/CodeBlock.h:
+ (JSC::EvalCodeBlock::variable):
+ (JSC::EvalCodeBlock::numVariables):
+ (JSC::EvalCodeBlock::adoptVariables):
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::BytecodeGenerator):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::execute):
+ * parser/Nodes.h:
+ * runtime/Executable.cpp:
+ (JSC::EvalExecutable::generateBytecode):
+ * runtime/Executable.h:
-2008-10-12 Anders Carlsson <andersca@apple.com>
+2009-08-19 Jungshik Shin <jshin@chromium.org>
Reviewed by Darin Adler.
- Make the append method that takes a Vector more strict - it now requires the elements
- of the vector to be appended same type as the elements of the Vector they're being appended to.
-
- This would cause problems when dealing with Vectors containing other Vectors.
-
- * wtf/Vector.h:
- (WTF::::append):
-
-2008-10-11 Cameron Zwarich <zwarich@apple.com>
-
- Reviewed by Sam Weinig.
-
- Clean up RegExpMatchesArray.h to match our coding style.
+ http://bugs.webkit.org/show_bug.cgi?id=28441
- * kjs/RegExpMatchesArray.h:
- (JSC::RegExpMatchesArray::getOwnPropertySlot):
- (JSC::RegExpMatchesArray::put):
- (JSC::RegExpMatchesArray::deleteProperty):
- (JSC::RegExpMatchesArray::getPropertyNames):
+ Fix a build issue with ICU 4.2 or later on Windows with Visual C++.
+ Instead of defining all isXXX and toupper/tolower as
+ WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h,
+ #define them to be different by prepending 'WTF_...ASCIIType_h' with
+ the originial names like 'toupper_WTF_...ASCIIType_h'.
-2008-10-11 Cameron Zwarich <zwarich@apple.com>
+ * wtf/DisallowCType.h:
- Reviewed by Sam Weinig.
+2009-08-18 Oliver Hunt <oliver@apple.com>
- Bug 21525: 55 StructureID leaks on Wikitravel's main page
- <https://bugs.webkit.org/show_bug.cgi?id=21525>
+ Reviewed by Gavin Barraclough.
- Bug 21533: Simple JavaScript code leaks StructureIDs
- <https://bugs.webkit.org/show_bug.cgi?id=21533>
+ Assigning a function to an object should always use the existing transition, even if the transition is not specialized
+ https://bugs.webkit.org/show_bug.cgi?id=28442
- StructureID::getEnumerablePropertyNames() ends up calling back to itself
- via JSObject::getPropertyNames(), which causes the PropertyNameArray to
- be cached twice. This leads to a memory leak in almost every use of
- JSObject::getPropertyNames() on an object. The fix here is based on a
- suggestion of Sam Weinig.
+ Check for an unspecialized transition as an alternative to always failing if specialisation does not match.
- This patch also fixes every StructureID leaks that occurs while running
- the Mozilla MemBuster test.
+ * runtime/Structure.cpp:
+ (JSC::Structure::addPropertyTransitionToExistingStructure):
- * kjs/PropertyNameArray.h:
- (JSC::PropertyNameArray::PropertyNameArray):
- (JSC::PropertyNameArray::setCacheable):
- (JSC::PropertyNameArray::cacheable):
- * kjs/StructureID.cpp:
- (JSC::StructureID::getEnumerablePropertyNames):
+2009-08-18 Dirk Schulze <krit@webkit.org>
-2008-10-10 Oliver Hunt <oliver@apple.com>
+ Reviewed by Oliver Hunt.
- Reviewed by Cameron Zwarich.
+ Added additional getter to ByteArray with an unsigned char as return.
+ ByteArray can take unsigned char directly now.
- Use fastcall calling convention on GCC > 4.0
+ * wtf/ByteArray.h:
+ (WTF::ByteArray::set):
+ (WTF::ByteArray::get):
- Results in a 2-3% improvement in GCC 4.2 performance, so
- that it is no longer a regression vs. GCC 4.0
+2009-08-18 Peter Kasting <pkasting@google.com>
- * VM/CTI.cpp:
- * VM/Machine.h:
- * wtf/Platform.h:
+ Reviewed by Eric Seidel.
-2008-10-10 Sam Weinig <sam@webkit.org>
+ https://bugs.webkit.org/show_bug.cgi?id=28415
+ Set svn:eol-style CRLF on all .sln and .vcproj files that don't already
+ have it.
- Reviewed by Darin Adler.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
+ * JavaScriptCore.vcproj/testapi/testapi.vcproj:
+
+2009-08-18 Xan Lopez <xlopez@igalia.com>
- - Add a workaround for a bug in ceil in Darwin libc.
- - Remove old workarounds for JS math functions that are not needed
- anymore.
+ Try to fix the GTK+ build.
- The math functions are heavily tested by fast/js/math.html.
+ * GNUmakefile.am:
- * kjs/MathObject.cpp:
- (JSC::mathProtoFuncAbs): Remove workaround.
- (JSC::mathProtoFuncCeil): Ditto.
- (JSC::mathProtoFuncFloor): Ditto.
- * wtf/MathExtras.h:
- (wtf_ceil): Add ceil workaround for darwin.
+2009-08-17 Gavin Barraclough <barraclough@apple.com>
-2008-10-10 Sam Weinig <sam@webkit.org>
+ Reviewed by Sam Weinig.
- Reviewed by Darin Adler
+ No, silly runtime, AST nodes are not for you.
- Add Assertions to JSObject constructor.
+ We still use AST nodes (ScopeNodes, particularly FunctionBodyNodes) within
+ the runtime, which means that these nodes must be persisted outside of the
+ arena, contain both parser & runtime data, etc. This is all a bit of a mess.
- * kjs/JSObject.h:
- (JSC::JSObject::JSObject):
+ Move functionality into a new FunctionExecutable class.
-2008-10-10 Sam Weinig <sam@webkit.org>
+ * API/JSCallbackFunction.cpp:
+ * API/JSObjectRef.cpp:
+ * JavaScriptCore.exp:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::CodeBlock):
+ (JSC::CodeBlock::markAggregate):
+ (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
+ (JSC::CodeBlock::lineNumberForBytecodeOffset):
+ (JSC::CodeBlock::shrinkToFit):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::getBytecodeIndex):
+ (JSC::CodeBlock::discardBytecode):
+ (JSC::CodeBlock::instructionCount):
+ (JSC::CodeBlock::getJITCode):
+ (JSC::CodeBlock::executablePool):
+ (JSC::CodeBlock::ownerExecutable):
+ (JSC::CodeBlock::extractExceptionInfo):
+ (JSC::CodeBlock::addFunctionDecl):
+ (JSC::CodeBlock::functionDecl):
+ (JSC::CodeBlock::numberOfFunctionDecls):
+ (JSC::CodeBlock::addFunctionExpr):
+ (JSC::CodeBlock::functionExpr):
+ (JSC::GlobalCodeBlock::GlobalCodeBlock):
+ (JSC::ProgramCodeBlock::ProgramCodeBlock):
+ (JSC::EvalCodeBlock::EvalCodeBlock):
+ (JSC::FunctionCodeBlock::FunctionCodeBlock):
+ (JSC::NativeCodeBlock::NativeCodeBlock):
+ * bytecode/EvalCodeCache.h:
+ * bytecode/SamplingTool.cpp:
+ (JSC::SamplingTool::doRun):
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::BytecodeGenerator):
+ (JSC::BytecodeGenerator::emitNewFunction):
+ (JSC::BytecodeGenerator::emitNewFunctionExpression):
+ * bytecompiler/BytecodeGenerator.h:
+ * debugger/Debugger.cpp:
+ (JSC::Debugger::recompileAllJSFunctions):
+ * interpreter/CachedCall.h:
+ (JSC::CachedCall::CachedCall):
+ * interpreter/CallFrameClosure.h:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::unwindCallFrame):
+ (JSC::Interpreter::throwException):
+ (JSC::Interpreter::execute):
+ (JSC::Interpreter::prepareForRepeatCall):
+ (JSC::Interpreter::debug):
+ (JSC::Interpreter::privateExecute):
+ (JSC::Interpreter::retrieveLastCaller):
+ * interpreter/Interpreter.h:
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompile):
+ * jit/JIT.h:
+ (JSC::JIT::compile):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ (JSC::JIT::emit_op_new_func):
+ (JSC::JIT::emit_op_new_func_exp):
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * jit/JITStubs.h:
+ (JSC::):
+ * parser/Nodes.cpp:
+ (JSC::FunctionBodyNode::reparseDataIfNecessary):
+ * parser/Nodes.h:
+ (JSC::EvalNode::partialDestroyData):
+ * parser/Parser.h:
+ * profiler/ProfileGenerator.cpp:
+ * profiler/Profiler.cpp:
+ (JSC::Profiler::createCallIdentifier):
+ (JSC::createCallIdentifierFromFunctionImp):
+ * runtime/Arguments.h:
+ (JSC::Arguments::getArgumentsData):
+ (JSC::Arguments::Arguments):
+ (JSC::JSActivation::copyRegisters):
+ * runtime/ArrayPrototype.cpp:
+ (JSC::isNumericCompareFunction):
+ * runtime/CallData.h:
+ (JSC::):
+ * runtime/Collector.cpp:
+ (JSC::Heap::collect):
+ * runtime/ConstructData.h:
+ (JSC::):
+ * runtime/ExceptionHelpers.cpp:
+ (JSC::createUndefinedVariableError):
+ (JSC::createInvalidParamError):
+ (JSC::createNotAConstructorError):
+ (JSC::createNotAFunctionError):
+ (JSC::createNotAnObjectError):
+ * runtime/Executable.cpp: Added.
+ (JSC::EvalExecutable::generateBytecode):
+ (JSC::ProgramExecutable::generateBytecode):
+ (JSC::FunctionExecutable::generateBytecode):
+ (JSC::EvalExecutable::generateJITCode):
+ (JSC::ProgramExecutable::generateJITCode):
+ (JSC::FunctionExecutable::generateJITCode):
+ (JSC::FunctionExecutable::isHostFunction):
+ (JSC::FunctionExecutable::markAggregate):
+ (JSC::FunctionExecutable::reparseExceptionInfo):
+ (JSC::EvalExecutable::reparseExceptionInfo):
+ (JSC::FunctionExecutable::recompile):
+ (JSC::FunctionExecutable::FunctionExecutable):
+ * runtime/Executable.h:
+ (JSC::ExecutableBase::~ExecutableBase):
+ (JSC::ExecutableBase::ExecutableBase):
+ (JSC::ExecutableBase::source):
+ (JSC::ExecutableBase::sourceID):
+ (JSC::ExecutableBase::lastLine):
+ (JSC::ExecutableBase::usesEval):
+ (JSC::ExecutableBase::usesArguments):
+ (JSC::ExecutableBase::needsActivation):
+ (JSC::ExecutableBase::astNode):
+ (JSC::ExecutableBase::generatedJITCode):
+ (JSC::ExecutableBase::getExecutablePool):
+ (JSC::EvalExecutable::EvalExecutable):
+ (JSC::EvalExecutable::bytecode):
+ (JSC::EvalExecutable::varStack):
+ (JSC::EvalExecutable::evalNode):
+ (JSC::EvalExecutable::jitCode):
+ (JSC::ProgramExecutable::ProgramExecutable):
+ (JSC::ProgramExecutable::reparseExceptionInfo):
+ (JSC::ProgramExecutable::bytecode):
+ (JSC::ProgramExecutable::programNode):
+ (JSC::ProgramExecutable::jitCode):
+ (JSC::FunctionExecutable::FunctionExecutable):
+ (JSC::FunctionExecutable::name):
+ (JSC::FunctionExecutable::bytecode):
+ (JSC::FunctionExecutable::generatedBytecode):
+ (JSC::FunctionExecutable::usesEval):
+ (JSC::FunctionExecutable::usesArguments):
+ (JSC::FunctionExecutable::parameterCount):
+ (JSC::FunctionExecutable::paramString):
+ (JSC::FunctionExecutable::isGenerated):
+ (JSC::FunctionExecutable::body):
+ (JSC::FunctionExecutable::jitCode):
+ (JSC::FunctionExecutable::createNativeThunk):
+ * runtime/FunctionConstructor.cpp:
+ (JSC::constructFunction):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::functionProtoFuncToString):
+ * runtime/JSActivation.cpp:
+ (JSC::JSActivation::JSActivation):
+ (JSC::JSActivation::markChildren):
+ (JSC::JSActivation::isDynamicScope):
+ (JSC::JSActivation::argumentsGetter):
+ * runtime/JSActivation.h:
+ (JSC::JSActivation::JSActivationData::JSActivationData):
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::isHostFunction):
+ (JSC::JSFunction::JSFunction):
+ (JSC::JSFunction::~JSFunction):
+ (JSC::JSFunction::markChildren):
+ (JSC::JSFunction::getCallData):
+ (JSC::JSFunction::call):
+ (JSC::JSFunction::lengthGetter):
+ (JSC::JSFunction::getConstructData):
+ (JSC::JSFunction::construct):
+ * runtime/JSFunction.h:
+ (JSC::JSFunction::executable):
+ (JSC::FunctionExecutable::make):
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData):
+ (JSC::JSGlobalData::numericCompareFunction):
+ * runtime/JSGlobalData.h:
- Reviewed by Cameron Zwarich.
+2009-08-17 Mark Rowe <mrowe@apple.com>
- Remove now unused m_getterSetterFlag variable from PropertyMap.
+ Reviewed by Darin Adler.
- * kjs/PropertyMap.cpp:
- (JSC::PropertyMap::operator=):
- * kjs/PropertyMap.h:
- (JSC::PropertyMap::PropertyMap):
+ Fix 300,000+ leaks seen during the regression tests.
-2008-10-09 Sam Weinig <sam@webkit.org>
+ EvalCodeCache::get was heap-allocating an EvalExecutable instance without adopting the initial reference.
+ While fixing this we noticed that EvalExecutable was a RefCounted type that was sometimes stack allocated.
+ To make this cleaner and to prevent clients from attempting to ref a stack-allocated instance, we move the
+ refcounting down to a new CacheableEvalExecutable class that derives from EvalExecutable. EvalCodeCache::get
+ now uses CacheableEvalExecutable::create and avoids the leak.
- Reviewed by Maciej Stachowiak.
+ * bytecode/EvalCodeCache.h:
+ (JSC::EvalCodeCache::get):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::callEval):
+ * runtime/Executable.h:
+ (JSC::CacheableEvalExecutable::create):
+ (JSC::CacheableEvalExecutable::CacheableEvalExecutable):
- Add leaks checking to StructureID.
+2009-08-17 Oliver Hunt <oliver@apple.com>
- * kjs/StructureID.cpp:
- (JSC::StructureID::StructureID):
- (JSC::StructureID::~StructureID):
+ RS=Mark Rowe.
-2008-10-09 Alp Toker <alp@nuanti.com>
+ REGRESSION (r47292): Prototype.js is broken by ES5 Arguments changes
+ https://bugs.webkit.org/show_bug.cgi?id=28341
+ <rdar://problem/7145615>
- Reviewed by Mark Rowe.
+ Reverting r47292. Alas Prototype.js breaks with Arguments inheriting
+ from Array as ES5 attempted. Prototype.js defines $A in terms of a
+ function it places on (among other global objects) the Array prototype,
+ thus breaking $A for arrays.
- https://bugs.webkit.org/show_bug.cgi?id=20760
- Implement support for x86 Linux in CTI
+ * runtime/Arguments.h:
+ (JSC::Arguments::Arguments):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::reset):
+ (JSC::JSGlobalObject::markChildren):
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
+ * runtime/ObjectPrototype.cpp:
+ (JSC::ObjectPrototype::ObjectPrototype):
+ * runtime/ObjectPrototype.h:
+ * tests/mozilla/ecma_3/Function/arguments-001.js:
- Prepare to enable CTI/WREC on supported architectures.
+2009-08-17 Peter Kasting <pkasting@google.com>
- Make it possible to use the CTI_ARGUMENT workaround with GCC as well
- as MSVC by fixing some preprocessor conditionals.
+ Reviewed by Steve Falkenburg.
- Note that CTI/WREC no longer requires CTI_ARGUMENT on Linux so we
- don't actually enable it except when building with MSVC. GCC on Win32
- remains untested.
+ https://bugs.webkit.org/show_bug.cgi?id=27323
+ Only add Cygwin to the path when it isn't already there. This avoids
+ causing problems for people who purposefully have non-Cygwin versions of
+ executables like svn in front of the Cygwin ones in their paths.
- Adapt inline ASM code to use the global symbol underscore prefix only
- on Darwin and to call the properly mangled Machine::cti_vm_throw
- symbol name depending on CTI_ARGUMENT.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
+ * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
+ * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
+ * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
- Also avoid global inclusion of the JIT infrastructure headers
- throughout WebCore and WebKit causing recompilation of about ~1500
- source files after modification to X86Assembler.h, CTI.h, WREC.h,
- which are only used deep inside JavaScriptCore.
+2009-08-17 Xan Lopez <xlopez@igalia.com>
- * GNUmakefile.am:
- * VM/CTI.cpp:
- * VM/CTI.h:
- * VM/Machine.cpp:
- * VM/Machine.h:
- * kjs/regexp.cpp:
- (JSC::RegExp::RegExp):
- (JSC::RegExp::~RegExp):
- (JSC::RegExp::match):
- * kjs/regexp.h:
- * masm/X86Assembler.h:
- (JSC::X86Assembler::emitConvertToFastCall):
- (JSC::X86Assembler::emitRestoreArgumentReferenceForTrampoline):
- (JSC::X86Assembler::emitRestoreArgumentReference):
+ Reviewed by Mark Rowe.
-2008-10-09 Gavin Barraclough <barraclough@apple.com>
+ Fix build with FAST_MALLOC_MATCH_VALIDATION enabled.
- Reviewed by Cameron Zwarich.
+ * wtf/FastMalloc.cpp:
+ (WTF::fastMalloc):
+ (WTF::fastCalloc):
+ (WTF::fastRealloc):
- Fix for bug #21160, x=0;1/(x*-1) == -Infinity
-
- * ChangeLog:
- * VM/CTI.cpp:
- (JSC::CTI::emitFastArithDeTagImmediate):
- (JSC::CTI::emitFastArithDeTagImmediateJumpIfZero):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::compileBinaryArithOpSlowCase):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/CTI.h:
- * masm/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::emitUnlinkedJs):
+2009-08-16 Holger Hans Peter Freyther <zecke@selfish.org>
-2008-10-09 Cameron Zwarich <zwarich@apple.com>
+ Reviewed by Mark Rowe.
- Reviewed by Oliver Hunt.
+ Fix crash on ./ecma_2/RegExp/exec-002.js.
+ https://bugs.webkit.org/show_bug.cgi?id=28353
- Bug 21459: REGRESSION (r37324): Safari crashes inside JavaScriptCore while browsing hulu.com
- <https://bugs.webkit.org/show_bug.cgi?id=21459>
+ Change the order of freeParenthesesDisjunctionContext and
+ popParenthesesDisjunctionContext on all call sites as the pop
+ method is accessing backTrack->lastContext which is the context
+ that is about to be freed.
- After r37324, an Arguments object does not mark an associated activation
- object. This change was made because Arguments no longer directly used
- the activation object in any way. However, if an activation is torn off,
- then the backing store of Arguments becomes the register array of the
- activation object. Arguments directly marks all of the arguments, but
- the activation object is being collected, which causes its register
- array to be freed and new memory to be allocated in its place.
+ * yarr/RegexInterpreter.cpp:
+ (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
+ (JSC::Yarr::Interpreter::backtrackParentheses):
- Unfortunately, it does not seem possible to reproduce this issue in a
- layout test.
+2009-08-16 Holger Hans Peter Freyther <zecke@selfish.org>
- * kjs/Arguments.cpp:
- (JSC::Arguments::mark):
- * kjs/Arguments.h:
- (JSC::Arguments::setActivation):
- (JSC::Arguments::Arguments):
- (JSC::JSActivation::copyRegisters):
+ Reviewed by Mark Rowe.
-2008-10-09 Ariya Hidayat <ariya.hidayat@trolltech.com>
+ https://bugs.webkit.org/show_bug.cgi?id=28352
+
+ Fix coding style violations. Use m_ for C++ class members. Remove
+ trailing whitespace on empty lines.
+
+ * yarr/RegexInterpreter.cpp:
+ (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext):
+ (JSC::Yarr::Interpreter::tryConsumeCharacter):
+ (JSC::Yarr::Interpreter::tryConsumeBackReference):
+ (JSC::Yarr::Interpreter::parenthesesDoBacktrack):
+ (JSC::Yarr::Interpreter::backtrackParentheses):
+ (JSC::Yarr::ByteCompiler::ByteCompiler):
+ (JSC::Yarr::ByteCompiler::compile):
+ (JSC::Yarr::ByteCompiler::checkInput):
+ (JSC::Yarr::ByteCompiler::assertionBOL):
+ (JSC::Yarr::ByteCompiler::assertionEOL):
+ (JSC::Yarr::ByteCompiler::assertionWordBoundary):
+ (JSC::Yarr::ByteCompiler::atomPatternCharacter):
+ (JSC::Yarr::ByteCompiler::atomCharacterClass):
+ (JSC::Yarr::ByteCompiler::atomBackReference):
+ (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin):
+ (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin):
+ (JSC::Yarr::ByteCompiler::popParenthesesStack):
+ (JSC::Yarr::ByteCompiler::closeAlternative):
+ (JSC::Yarr::ByteCompiler::closeBodyAlternative):
+ (JSC::Yarr::ByteCompiler::atomParenthesesEnd):
+ (JSC::Yarr::ByteCompiler::regexBegin):
+ (JSC::Yarr::ByteCompiler::alterantiveBodyDisjunction):
+ (JSC::Yarr::ByteCompiler::alterantiveDisjunction):
+ (JSC::Yarr::ByteCompiler::emitDisjunction):
+
+2009-08-15 Mark Rowe <mrowe@apple.com>
+
+ Fix the build with JIT disabled.
+
+ * runtime/Arguments.h: Only compile the jitCode method when the JIT is enabled.
+ * runtime/Executable.h: Include PrototypeFunction.h so the compiler knows what
+ NativeFunctionWrapper is when the JIT is disabled.
+
+2009-08-15 Adam Bergkvist <adam.bergkvist@ericsson.com>
- Reviewed by Simon.
+ Reviewed by Sam Weinig.
- Build fix for MinGW.
+ Added ENABLE_EVENTSOURCE flag.
+ https://bugs.webkit.org/show_bug.cgi?id=14997
- * wtf/AlwaysInline.h:
+ * Configurations/FeatureDefines.xcconfig:
-2008-10-08 Cameron Zwarich <zwarich@apple.com>
+2009-08-14 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Maciej Stachowiak.
+ * parser/Parser.h:
+ (JSC::EvalExecutable::parse):
+ (JSC::ProgramExecutable::parse):
+ * runtime/Executable.h:
- Bug 21497: REGRESSION (r37433): Bytecode JSC tests are severely broken
- <https://bugs.webkit.org/show_bug.cgi?id=21497>
+2009-08-14 Gavin Barraclough <barraclough@apple.com>
- Fix a typo in r37433 that causes the failure of a large number of JSC
- tests with the bytecode interpreter enabled.
+ Reviewed by Oliver Hunt.
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
+ Remove AST nodes from use within the Runtime (outside of parsing), stage 1
+ https://bugs.webkit.org/show_bug.cgi?id=28330
-2008-10-08 Mark Rowe <mrowe@apple.com>
+ Remove the EvalNode and ProgramNode from use in the runtime. They still exist
+ after this patch, but are hidden behind EvalExecutable and FunctionExecutable,
+ and are also still reachable behind CodeBlock::m_ownerNode.
- Windows build fix.
+ The next step will be to beat back FunctionBodyNode in the same fashion.
+ Then remove the usage via CodeBlock, then only construct these nodes only on
+ demand during bytecode generation.
- * VM/CTI.cpp:
- (JSC::): Update type of argument to ctiTrampoline.
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * bytecode/CodeBlock.h:
+ (JSC::GlobalCodeBlock::GlobalCodeBlock):
+ (JSC::GlobalCodeBlock::~GlobalCodeBlock):
+ (JSC::ProgramCodeBlock::ProgramCodeBlock):
+ (JSC::EvalCodeBlock::EvalCodeBlock):
+ (JSC::FunctionCodeBlock::FunctionCodeBlock):
+ (JSC::NativeCodeBlock::NativeCodeBlock):
+ * bytecode/EvalCodeCache.h:
+ (JSC::EvalCodeCache::get):
+ * debugger/Debugger.cpp:
+ (JSC::evaluateInGlobalCallFrame):
+ * debugger/DebuggerCallFrame.cpp:
+ (JSC::DebuggerCallFrame::evaluate):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::callEval):
+ (JSC::Interpreter::execute):
+ * interpreter/Interpreter.h:
+ * parser/Nodes.cpp:
+ (JSC::FunctionBodyNode::createNativeThunk):
+ (JSC::FunctionBodyNode::generateBytecode):
+ (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse):
+ * parser/Parser.h:
+ (JSC::Parser::parse):
+ (JSC::Parser::reparse):
+ (JSC::Parser::parseFunctionFromGlobalCode):
+ (JSC::::parse):
+ * runtime/Completion.cpp:
+ (JSC::checkSyntax):
+ (JSC::evaluate):
+ * runtime/Error.cpp:
+ (JSC::throwError):
+ * runtime/Error.h:
+ * runtime/Executable.h: Added.
+ (JSC::TemplateExecutable::TemplateExecutable):
+ (JSC::TemplateExecutable::markAggregate):
+ (JSC::TemplateExecutable::sourceURL):
+ (JSC::TemplateExecutable::lineNo):
+ (JSC::TemplateExecutable::bytecode):
+ (JSC::TemplateExecutable::jitCode):
+ (JSC::EvalExecutable::EvalExecutable):
+ (JSC::ProgramExecutable::ProgramExecutable):
+ * runtime/FunctionConstructor.cpp:
+ (JSC::constructFunction):
+ * runtime/FunctionConstructor.h:
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::numericCompareFunction):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::~JSGlobalObject):
+ (JSC::JSGlobalObject::markChildren):
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::codeBlocks):
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncEval):
-2008-10-08 Darin Adler <darin@apple.com>
+2009-08-14 Darin Adler <darin@apple.com>
- Reviewed by Cameron Zwarich.
+ Reviewed by Sam Weinig.
- - https://bugs.webkit.org/show_bug.cgi?id=21403
- Bug 21403: use new CallFrame class rather than Register* for call frame manipulation
+ Rename the confusing isObject(<class>) to inherits(<class>).
+ It still works on non-objects, returning false.
- Add CallFrame as a synonym for ExecState. Arguably, some day we should switch every
- client over to the new name.
+ * runtime/ArrayConstructor.cpp:
+ (JSC::arrayConstructorIsArray): Removed unneeded isObject call
+ and updated remaining isObject call to new name, inherits.
- Use CallFrame* consistently rather than Register* or ExecState* in low-level code such
- as Machine.cpp and CTI.cpp. Similarly, use callFrame rather than r as its name and use
- accessor functions to get at things in the frame.
+ * runtime/JSCell.h: Renamed isObject(<class>) to inherits(<class>)
+ but more importantly, made it non-virtual (it was already inline)
+ so it is now as fast as JSObject::inherits was.
- Eliminate other uses of ExecState* that aren't needed, replacing in some cases with
- JSGlobalData* and in other cases eliminating them entirely.
+ * runtime/JSObject.h: Removed inherits function since the one
+ in the base class is fine as-is. Also made various JSCell functions
+ that should not be called on JSObject uncallable by making them
+ both private and not implemented.
+ (JSC::JSCell::inherits): Updated name.
+ (JSC::JSValue::inherits): Ditto.
- * API/JSObjectRef.cpp:
- (JSObjectMakeFunctionWithCallback):
- (JSObjectMakeFunction):
- (JSObjectHasProperty):
- (JSObjectGetProperty):
- (JSObjectSetProperty):
- (JSObjectDeleteProperty):
- * API/OpaqueJSString.cpp:
- * API/OpaqueJSString.h:
- * VM/CTI.cpp:
- (JSC::CTI::getConstant):
- (JSC::CTI::emitGetArg):
- (JSC::CTI::emitGetPutArg):
- (JSC::CTI::getConstantImmediateNumericArg):
- (JSC::CTI::printOpcodeOperandTypes):
- (JSC::CTI::CTI):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompile):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::compileRegExp):
- * VM/CTI.h:
- * VM/CodeBlock.h:
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitEqualityOp):
- (JSC::CodeGenerator::emitLoad):
- (JSC::CodeGenerator::emitUnexpectedLoad):
- (JSC::CodeGenerator::emitConstruct):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (JSC::jsLess):
- (JSC::jsLessEq):
- (JSC::jsAddSlowCase):
- (JSC::jsAdd):
- (JSC::jsTypeStringForValue):
- (JSC::Machine::resolve):
- (JSC::Machine::resolveSkip):
- (JSC::Machine::resolveGlobal):
- (JSC::inlineResolveBase):
- (JSC::Machine::resolveBase):
- (JSC::Machine::resolveBaseAndProperty):
- (JSC::Machine::resolveBaseAndFunc):
- (JSC::Machine::slideRegisterWindowForCall):
- (JSC::isNotObject):
- (JSC::Machine::callEval):
- (JSC::Machine::dumpCallFrame):
- (JSC::Machine::dumpRegisters):
- (JSC::Machine::unwindCallFrame):
- (JSC::Machine::throwException):
- (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope):
- (JSC::DynamicGlobalObjectScope::~DynamicGlobalObjectScope):
- (JSC::Machine::execute):
- (JSC::Machine::debug):
- (JSC::Machine::createExceptionScope):
- (JSC::cachePrototypeChain):
- (JSC::Machine::tryCachePutByID):
- (JSC::Machine::tryCacheGetByID):
- (JSC::Machine::privateExecute):
- (JSC::Machine::retrieveArguments):
- (JSC::Machine::retrieveCaller):
- (JSC::Machine::retrieveLastCaller):
- (JSC::Machine::findFunctionCallFrame):
- (JSC::Machine::getArgumentsData):
- (JSC::Machine::tryCTICachePutByID):
- (JSC::Machine::getCTIArrayLengthTrampoline):
- (JSC::Machine::getCTIStringLengthTrampoline):
- (JSC::Machine::tryCTICacheGetByID):
- (JSC::Machine::cti_op_convert_this):
- (JSC::Machine::cti_op_end):
- (JSC::Machine::cti_op_add):
- (JSC::Machine::cti_op_pre_inc):
- (JSC::Machine::cti_timeout_check):
- (JSC::Machine::cti_op_loop_if_less):
- (JSC::Machine::cti_op_loop_if_lesseq):
- (JSC::Machine::cti_op_new_object):
- (JSC::Machine::cti_op_put_by_id):
- (JSC::Machine::cti_op_put_by_id_second):
- (JSC::Machine::cti_op_put_by_id_generic):
- (JSC::Machine::cti_op_put_by_id_fail):
- (JSC::Machine::cti_op_get_by_id):
- (JSC::Machine::cti_op_get_by_id_second):
- (JSC::Machine::cti_op_get_by_id_generic):
- (JSC::Machine::cti_op_get_by_id_fail):
- (JSC::Machine::cti_op_instanceof):
- (JSC::Machine::cti_op_del_by_id):
- (JSC::Machine::cti_op_mul):
- (JSC::Machine::cti_op_new_func):
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_vm_compile):
- (JSC::Machine::cti_op_push_activation):
- (JSC::Machine::cti_op_call_NotJSFunction):
- (JSC::Machine::cti_op_create_arguments):
- (JSC::Machine::cti_op_tear_off_activation):
- (JSC::Machine::cti_op_tear_off_arguments):
- (JSC::Machine::cti_op_ret_profiler):
- (JSC::Machine::cti_op_ret_scopeChain):
- (JSC::Machine::cti_op_new_array):
- (JSC::Machine::cti_op_resolve):
- (JSC::Machine::cti_op_construct_JSConstruct):
- (JSC::Machine::cti_op_construct_NotJSConstruct):
- (JSC::Machine::cti_op_get_by_val):
- (JSC::Machine::cti_op_resolve_func):
- (JSC::Machine::cti_op_sub):
- (JSC::Machine::cti_op_put_by_val):
- (JSC::Machine::cti_op_put_by_val_array):
- (JSC::Machine::cti_op_lesseq):
- (JSC::Machine::cti_op_loop_if_true):
- (JSC::Machine::cti_op_negate):
- (JSC::Machine::cti_op_resolve_base):
- (JSC::Machine::cti_op_resolve_skip):
- (JSC::Machine::cti_op_resolve_global):
- (JSC::Machine::cti_op_div):
- (JSC::Machine::cti_op_pre_dec):
- (JSC::Machine::cti_op_jless):
- (JSC::Machine::cti_op_not):
- (JSC::Machine::cti_op_jtrue):
- (JSC::Machine::cti_op_post_inc):
- (JSC::Machine::cti_op_eq):
- (JSC::Machine::cti_op_lshift):
- (JSC::Machine::cti_op_bitand):
- (JSC::Machine::cti_op_rshift):
- (JSC::Machine::cti_op_bitnot):
- (JSC::Machine::cti_op_resolve_with_base):
- (JSC::Machine::cti_op_new_func_exp):
- (JSC::Machine::cti_op_mod):
- (JSC::Machine::cti_op_less):
- (JSC::Machine::cti_op_neq):
- (JSC::Machine::cti_op_post_dec):
- (JSC::Machine::cti_op_urshift):
- (JSC::Machine::cti_op_bitxor):
- (JSC::Machine::cti_op_new_regexp):
- (JSC::Machine::cti_op_bitor):
- (JSC::Machine::cti_op_call_eval):
- (JSC::Machine::cti_op_throw):
- (JSC::Machine::cti_op_get_pnames):
- (JSC::Machine::cti_op_next_pname):
- (JSC::Machine::cti_op_push_scope):
- (JSC::Machine::cti_op_pop_scope):
- (JSC::Machine::cti_op_typeof):
- (JSC::Machine::cti_op_to_jsnumber):
- (JSC::Machine::cti_op_in):
- (JSC::Machine::cti_op_push_new_scope):
- (JSC::Machine::cti_op_jmp_scopes):
- (JSC::Machine::cti_op_put_by_index):
- (JSC::Machine::cti_op_switch_imm):
- (JSC::Machine::cti_op_switch_char):
- (JSC::Machine::cti_op_switch_string):
- (JSC::Machine::cti_op_del_by_val):
- (JSC::Machine::cti_op_put_getter):
- (JSC::Machine::cti_op_put_setter):
- (JSC::Machine::cti_op_new_error):
- (JSC::Machine::cti_op_debug):
- (JSC::Machine::cti_vm_throw):
- * VM/Machine.h:
- * VM/Register.h:
- * VM/RegisterFile.h:
- * kjs/Arguments.h:
- * kjs/DebuggerCallFrame.cpp:
- (JSC::DebuggerCallFrame::functionName):
- (JSC::DebuggerCallFrame::type):
- (JSC::DebuggerCallFrame::thisObject):
- (JSC::DebuggerCallFrame::evaluate):
- * kjs/DebuggerCallFrame.h:
- * kjs/ExecState.cpp:
- (JSC::CallFrame::thisValue):
- * kjs/ExecState.h:
- * kjs/FunctionConstructor.cpp:
- (JSC::constructFunction):
- * kjs/JSActivation.cpp:
- (JSC::JSActivation::JSActivation):
+ * debugger/Debugger.cpp:
+ (JSC::Debugger::recompileAllJSFunctions):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::unwindCallFrame):
+ * runtime/ArrayPrototype.cpp:
+ (JSC::arrayProtoFuncToString):
+ (JSC::arrayProtoFuncToLocaleString):
+ (JSC::arrayProtoFuncConcat):
+ * runtime/BooleanPrototype.cpp:
+ (JSC::booleanProtoFuncToString):
+ (JSC::booleanProtoFuncValueOf):
+ * runtime/DateConstructor.cpp:
+ (JSC::constructDate):
+ * runtime/DatePrototype.cpp:
+ (JSC::dateProtoFuncToString):
+ (JSC::dateProtoFuncToUTCString):
+ (JSC::dateProtoFuncToISOString):
+ (JSC::dateProtoFuncToDateString):
+ (JSC::dateProtoFuncToTimeString):
+ (JSC::dateProtoFuncToLocaleString):
+ (JSC::dateProtoFuncToLocaleDateString):
+ (JSC::dateProtoFuncToLocaleTimeString):
+ (JSC::dateProtoFuncGetTime):
+ (JSC::dateProtoFuncGetFullYear):
+ (JSC::dateProtoFuncGetUTCFullYear):
+ (JSC::dateProtoFuncToGMTString):
+ (JSC::dateProtoFuncGetMonth):
+ (JSC::dateProtoFuncGetUTCMonth):
+ (JSC::dateProtoFuncGetDate):
+ (JSC::dateProtoFuncGetUTCDate):
+ (JSC::dateProtoFuncGetDay):
+ (JSC::dateProtoFuncGetUTCDay):
+ (JSC::dateProtoFuncGetHours):
+ (JSC::dateProtoFuncGetUTCHours):
+ (JSC::dateProtoFuncGetMinutes):
+ (JSC::dateProtoFuncGetUTCMinutes):
+ (JSC::dateProtoFuncGetSeconds):
+ (JSC::dateProtoFuncGetUTCSeconds):
+ (JSC::dateProtoFuncGetMilliSeconds):
+ (JSC::dateProtoFuncGetUTCMilliseconds):
+ (JSC::dateProtoFuncGetTimezoneOffset):
+ (JSC::dateProtoFuncSetTime):
+ (JSC::setNewValueFromTimeArgs):
+ (JSC::setNewValueFromDateArgs):
+ (JSC::dateProtoFuncSetYear):
+ (JSC::dateProtoFuncGetYear):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::functionProtoFuncToString):
+ * runtime/JSActivation.cpp:
(JSC::JSActivation::argumentsGetter):
- * kjs/JSActivation.h:
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::init):
- * kjs/JSGlobalObjectFunctions.cpp:
- (JSC::globalFuncEval):
- * kjs/JSVariableObject.h:
- * kjs/Parser.cpp:
- (JSC::Parser::parse):
- * kjs/RegExpConstructor.cpp:
+ * runtime/JSValue.h:
+ * runtime/RegExpConstructor.cpp:
(JSC::constructRegExp):
- * kjs/RegExpPrototype.cpp:
+ * runtime/RegExpPrototype.cpp:
+ (JSC::regExpProtoFuncTest):
+ (JSC::regExpProtoFuncExec):
(JSC::regExpProtoFuncCompile):
- * kjs/Shell.cpp:
- (prettyPrintScript):
- * kjs/StringPrototype.cpp:
+ (JSC::regExpProtoFuncToString):
+ * runtime/ScopeChain.cpp:
+ (JSC::ScopeChain::localDepth):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncReplace):
+ (JSC::stringProtoFuncToString):
(JSC::stringProtoFuncMatch):
(JSC::stringProtoFuncSearch):
- * kjs/identifier.cpp:
- (JSC::Identifier::checkSameIdentifierTable):
- * kjs/interpreter.cpp:
- (JSC::Interpreter::checkSyntax):
- (JSC::Interpreter::evaluate):
- * kjs/nodes.cpp:
- (JSC::ThrowableExpressionData::emitThrowError):
- (JSC::RegExpNode::emitCode):
- (JSC::ArrayNode::emitCode):
- (JSC::InstanceOfNode::emitCode):
- * kjs/nodes.h:
- * kjs/regexp.cpp:
- (JSC::RegExp::RegExp):
- (JSC::RegExp::create):
- * kjs/regexp.h:
- * profiler/HeavyProfile.h:
- * profiler/Profile.h:
- * wrec/WREC.cpp:
- * wrec/WREC.h:
+ (JSC::stringProtoFuncSplit):
+ Updated to new name, inherits, from old name, isObject.
-2008-10-08 Mark Rowe <mrowe@apple.com>
+2009-07-31 Harald Fernengel <harald.fernengel@nokia.com>
- Typed by Maciej Stachowiak, reviewed by Mark Rowe.
+ Reviewed by Simon Hausmann.
- Fix crash in fast/js/constant-folding.html with CTI disabled.
+ Adding QNX as a platform. Currently only tested with Qt.
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
+ https://bugs.webkit.org/show_bug.cgi?id=27885
-2008-10-08 Timothy Hatcher <timothy@apple.com>
+ * JavaScriptCore/runtime/Collector.cpp: Added retrieving of stack base
+ since QNX doesn't have the pthread _nt functions
+ * JavaScriptCore/wtf/Platform.h: Added WTF_PLATFORM_QNX and corresponding
+ defines
+ * WebCore/bridge/npapi.h: Build fix for missing typedefs on QNX
- Roll out r37427 because it causes an infinite recursion loading about:blank.
+2009-08-14 Gabor Loki <loki@inf.u-szeged.hu>
- https://bugs.webkit.org/show_bug.cgi?id=21476
+ Reviewed by Simon Hausmann.
-2008-10-08 Darin Adler <darin@apple.com>
+ Currently generic ARM and ARMv7 platforms work only with JSVALUE32
+ https://bugs.webkit.org/show_bug.cgi?id=28300
- Reviewed by Cameron Zwarich.
+ * wtf/Platform.h:
- - https://bugs.webkit.org/show_bug.cgi?id=21403
- Bug 21403: use new CallFrame class rather than Register* for call frame manipulation
+2009-08-14 Gabor Loki <loki@inf.u-szeged.hu>
- Add CallFrame as a synonym for ExecState. Arguably, some day we should switch every
- client over to the new name.
+ Reviewed by Simon Hausmann.
- Use CallFrame* consistently rather than Register* or ExecState* in low-level code such
- as Machine.cpp and CTI.cpp. Similarly, use callFrame rather than r as its name and use
- accessor functions to get at things in the frame.
+ Enable JIT on ARM for QT by default
+ https://bugs.webkit.org/show_bug.cgi?id=28259
- Eliminate other uses of ExecState* that aren't needed, replacing in some cases with
- JSGlobalData* and in other cases eliminating them entirely.
+ * wtf/Platform.h:
- * API/JSObjectRef.cpp:
- (JSObjectMakeFunctionWithCallback):
- (JSObjectMakeFunction):
- (JSObjectHasProperty):
- (JSObjectGetProperty):
- (JSObjectSetProperty):
- (JSObjectDeleteProperty):
- * API/OpaqueJSString.cpp:
- * API/OpaqueJSString.h:
- * VM/CTI.cpp:
- (JSC::CTI::getConstant):
- (JSC::CTI::emitGetArg):
- (JSC::CTI::emitGetPutArg):
- (JSC::CTI::getConstantImmediateNumericArg):
- (JSC::CTI::printOpcodeOperandTypes):
- (JSC::CTI::CTI):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompile):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::compileRegExp):
- * VM/CTI.h:
- * VM/CodeBlock.h:
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitEqualityOp):
- (JSC::CodeGenerator::emitLoad):
- (JSC::CodeGenerator::emitUnexpectedLoad):
- (JSC::CodeGenerator::emitConstruct):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (JSC::jsLess):
- (JSC::jsLessEq):
- (JSC::jsAddSlowCase):
- (JSC::jsAdd):
- (JSC::jsTypeStringForValue):
- (JSC::Machine::resolve):
- (JSC::Machine::resolveSkip):
- (JSC::Machine::resolveGlobal):
- (JSC::inlineResolveBase):
- (JSC::Machine::resolveBase):
- (JSC::Machine::resolveBaseAndProperty):
- (JSC::Machine::resolveBaseAndFunc):
- (JSC::Machine::slideRegisterWindowForCall):
- (JSC::isNotObject):
- (JSC::Machine::callEval):
- (JSC::Machine::dumpCallFrame):
- (JSC::Machine::dumpRegisters):
- (JSC::Machine::unwindCallFrame):
- (JSC::Machine::throwException):
- (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope):
- (JSC::DynamicGlobalObjectScope::~DynamicGlobalObjectScope):
- (JSC::Machine::execute):
- (JSC::Machine::debug):
- (JSC::Machine::createExceptionScope):
- (JSC::cachePrototypeChain):
- (JSC::Machine::tryCachePutByID):
- (JSC::Machine::tryCacheGetByID):
- (JSC::Machine::privateExecute):
- (JSC::Machine::retrieveArguments):
- (JSC::Machine::retrieveCaller):
- (JSC::Machine::retrieveLastCaller):
- (JSC::Machine::findFunctionCallFrame):
- (JSC::Machine::getArgumentsData):
- (JSC::Machine::tryCTICachePutByID):
- (JSC::Machine::getCTIArrayLengthTrampoline):
- (JSC::Machine::getCTIStringLengthTrampoline):
- (JSC::Machine::tryCTICacheGetByID):
- (JSC::Machine::cti_op_convert_this):
- (JSC::Machine::cti_op_end):
- (JSC::Machine::cti_op_add):
- (JSC::Machine::cti_op_pre_inc):
- (JSC::Machine::cti_timeout_check):
- (JSC::Machine::cti_op_loop_if_less):
- (JSC::Machine::cti_op_loop_if_lesseq):
- (JSC::Machine::cti_op_new_object):
- (JSC::Machine::cti_op_put_by_id):
- (JSC::Machine::cti_op_put_by_id_second):
- (JSC::Machine::cti_op_put_by_id_generic):
- (JSC::Machine::cti_op_put_by_id_fail):
- (JSC::Machine::cti_op_get_by_id):
- (JSC::Machine::cti_op_get_by_id_second):
- (JSC::Machine::cti_op_get_by_id_generic):
- (JSC::Machine::cti_op_get_by_id_fail):
- (JSC::Machine::cti_op_instanceof):
- (JSC::Machine::cti_op_del_by_id):
- (JSC::Machine::cti_op_mul):
- (JSC::Machine::cti_op_new_func):
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_vm_compile):
- (JSC::Machine::cti_op_push_activation):
- (JSC::Machine::cti_op_call_NotJSFunction):
- (JSC::Machine::cti_op_create_arguments):
- (JSC::Machine::cti_op_tear_off_activation):
- (JSC::Machine::cti_op_tear_off_arguments):
- (JSC::Machine::cti_op_ret_profiler):
- (JSC::Machine::cti_op_ret_scopeChain):
- (JSC::Machine::cti_op_new_array):
- (JSC::Machine::cti_op_resolve):
- (JSC::Machine::cti_op_construct_JSConstruct):
- (JSC::Machine::cti_op_construct_NotJSConstruct):
- (JSC::Machine::cti_op_get_by_val):
- (JSC::Machine::cti_op_resolve_func):
- (JSC::Machine::cti_op_sub):
- (JSC::Machine::cti_op_put_by_val):
- (JSC::Machine::cti_op_put_by_val_array):
- (JSC::Machine::cti_op_lesseq):
- (JSC::Machine::cti_op_loop_if_true):
- (JSC::Machine::cti_op_negate):
- (JSC::Machine::cti_op_resolve_base):
- (JSC::Machine::cti_op_resolve_skip):
- (JSC::Machine::cti_op_resolve_global):
- (JSC::Machine::cti_op_div):
- (JSC::Machine::cti_op_pre_dec):
- (JSC::Machine::cti_op_jless):
- (JSC::Machine::cti_op_not):
- (JSC::Machine::cti_op_jtrue):
- (JSC::Machine::cti_op_post_inc):
- (JSC::Machine::cti_op_eq):
- (JSC::Machine::cti_op_lshift):
- (JSC::Machine::cti_op_bitand):
- (JSC::Machine::cti_op_rshift):
- (JSC::Machine::cti_op_bitnot):
- (JSC::Machine::cti_op_resolve_with_base):
- (JSC::Machine::cti_op_new_func_exp):
- (JSC::Machine::cti_op_mod):
- (JSC::Machine::cti_op_less):
- (JSC::Machine::cti_op_neq):
- (JSC::Machine::cti_op_post_dec):
- (JSC::Machine::cti_op_urshift):
- (JSC::Machine::cti_op_bitxor):
- (JSC::Machine::cti_op_new_regexp):
- (JSC::Machine::cti_op_bitor):
- (JSC::Machine::cti_op_call_eval):
- (JSC::Machine::cti_op_throw):
- (JSC::Machine::cti_op_get_pnames):
- (JSC::Machine::cti_op_next_pname):
- (JSC::Machine::cti_op_push_scope):
- (JSC::Machine::cti_op_pop_scope):
- (JSC::Machine::cti_op_typeof):
- (JSC::Machine::cti_op_to_jsnumber):
- (JSC::Machine::cti_op_in):
- (JSC::Machine::cti_op_push_new_scope):
- (JSC::Machine::cti_op_jmp_scopes):
- (JSC::Machine::cti_op_put_by_index):
- (JSC::Machine::cti_op_switch_imm):
- (JSC::Machine::cti_op_switch_char):
- (JSC::Machine::cti_op_switch_string):
- (JSC::Machine::cti_op_del_by_val):
- (JSC::Machine::cti_op_put_getter):
- (JSC::Machine::cti_op_put_setter):
- (JSC::Machine::cti_op_new_error):
- (JSC::Machine::cti_op_debug):
- (JSC::Machine::cti_vm_throw):
- * VM/Machine.h:
- * VM/Register.h:
- * VM/RegisterFile.h:
- * kjs/Arguments.h:
- * kjs/DebuggerCallFrame.cpp:
- (JSC::DebuggerCallFrame::functionName):
- (JSC::DebuggerCallFrame::type):
- (JSC::DebuggerCallFrame::thisObject):
- (JSC::DebuggerCallFrame::evaluate):
- * kjs/DebuggerCallFrame.h:
- * kjs/ExecState.cpp:
- (JSC::CallFrame::thisValue):
- * kjs/ExecState.h:
- * kjs/FunctionConstructor.cpp:
- (JSC::constructFunction):
- * kjs/JSActivation.cpp:
- (JSC::JSActivation::JSActivation):
- (JSC::JSActivation::argumentsGetter):
- * kjs/JSActivation.h:
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::init):
- * kjs/JSGlobalObjectFunctions.cpp:
- (JSC::globalFuncEval):
- * kjs/JSVariableObject.h:
- * kjs/Parser.cpp:
- (JSC::Parser::parse):
- * kjs/RegExpConstructor.cpp:
- (JSC::constructRegExp):
- * kjs/RegExpPrototype.cpp:
- (JSC::regExpProtoFuncCompile):
- * kjs/Shell.cpp:
- (prettyPrintScript):
- * kjs/StringPrototype.cpp:
- (JSC::stringProtoFuncMatch):
- (JSC::stringProtoFuncSearch):
- * kjs/identifier.cpp:
- (JSC::Identifier::checkSameIdentifierTable):
- * kjs/interpreter.cpp:
- (JSC::Interpreter::checkSyntax):
- (JSC::Interpreter::evaluate):
- * kjs/nodes.cpp:
- (JSC::ThrowableExpressionData::emitThrowError):
- (JSC::RegExpNode::emitCode):
- (JSC::ArrayNode::emitCode):
- (JSC::InstanceOfNode::emitCode):
- * kjs/nodes.h:
- * kjs/regexp.cpp:
- (JSC::RegExp::RegExp):
- (JSC::RegExp::create):
- * kjs/regexp.h:
- * profiler/HeavyProfile.h:
- * profiler/Profile.h:
- * wrec/WREC.cpp:
- * wrec/WREC.h:
+2009-08-14 Gabor Loki <loki@inf.u-szeged.hu>
-2008-10-08 Prasanth Ullattil <pullatti@trolltech.com>
+ Reviewed by Simon Hausmann.
- Reviewed by Oliver Hunt.
+ Enable YARR_JIT on ARM for QT by default
+ https://bugs.webkit.org/show_bug.cgi?id=28259
- Avoid endless loops when compiling without the computed goto
- optimization.
+ * wtf/Platform.h:
- NEXT_OPCODE expands to "continue", which will not work inside
- loops.
+2009-08-14 Oliver Hunt <oliver@apple.com>
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
+ Reviewed by Gavin Barraclough.
-2008-10-08 Maciej Stachowiak <mjs@apple.com>
+ [ES5] Arguments object should inherit from Array
+ https://bugs.webkit.org/show_bug.cgi?id=28298
- Reviewed by Oliver Hunt.
+ Make the Arguments object conform to the behaviour specified in ES5.
+ The simple portion of this is to make Arguments use Array.prototype
+ as its prototype rather than Object.prototype.
- Re-landing the following fix with the crashing bug in it fixed (r37405):
-
- - optimize away multiplication by constant 1.0
-
- 2.3% speedup on v8 RayTrace benchmark
-
- Apparently it's not uncommon for JavaScript code to multiply by
- constant 1.0 in the mistaken belief that this converts integer to
- floating point and that there is any operational difference.
-
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass): Optimize to_jsnumber for
- case where parameter is already number.
- (JSC::CTI::privateCompileSlowCases): ditto
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute): ditto
- * kjs/grammar.y:
- (makeMultNode): Transform as follows:
- +FOO * BAR ==> FOO * BAR
- FOO * +BAR ==> FOO * BAR
- FOO * 1 ==> +FOO
- 1 * FOO ==> +FOO
- (makeDivNode): Transform as follows:
- +FOO / BAR ==> FOO / BAR
- FOO / +BAR ==> FOO / BAR
- (makeSubNode): Transform as follows:
- +FOO - BAR ==> FOO - BAR
- FOO - +BAR ==> FOO - BAR
- * kjs/nodes.h:
- (JSC::ExpressionNode::stripUnaryPlus): Helper for above
- grammar.y changes
- (JSC::UnaryPlusNode::stripUnaryPlus): ditto
-
-2008-10-08 Maciej Stachowiak <mjs@apple.com>
+ The spec then requires us to set instance.constructor to the pristine
+ Object constructor, and instance.toString and instance.toLocaleString
+ to the pristine versions from Object.prototype. To do this we now
+ make the ObjectPrototype constructor return its toString and
+ toLocaleString functions (similar to the call and apply functions
+ from FunctionPrototype).
- Reviewed by Oliver Hunt.
-
- - correctly handle appending -0 to a string, it should stringify as just 0
+ Oddly enough this reports itself as a slight win, but given the code
+ isn't hit in the tests that claim to have improved I put this down to
+ code motion.
- * kjs/ustring.cpp:
- (JSC::concatenate):
+ * runtime/Arguments.h:
+ (JSC::Arguments::Arguments):
+ (JSC::Arguments::initializeStandardProperties):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::reset):
+ (JSC::JSGlobalObject::markChildren):
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
+ (JSC::JSGlobalObject::objectConstructor):
+ (JSC::JSGlobalObject::objectToStringFunction):
+ (JSC::JSGlobalObject::objectToLocaleStringFunction):
+ * runtime/ObjectPrototype.cpp:
+ (JSC::ObjectPrototype::ObjectPrototype):
+ * runtime/ObjectPrototype.h:
+ * tests/mozilla/ecma_3/Function/arguments-001.js:
+ Update test to new es5 behaviour
-2008-10-08 Prasanth Ullattil <pullatti@trolltech.com>
+2009-08-14 Oliver Hunt <oliver@apple.com>
- Reviewed by Simon.
+ Remove MarkStack::drain from the JSC exports file
- Fix WebKit compilation with VC2008SP1
+ MarkStack::drain is now marked inline, the including it in the exports file
+ produces an ld warning
- Apply the TR1 workaround for JavaScriptCore, too.
+ * JavaScriptCore.exp:
- * JavaScriptCore.pro:
+2009-08-13 Sam Weinig <sam@webkit.org>
-2008-10-08 Prasanth Ullattil <pullatti@trolltech.com>
+ Reviewed by Oliver Hunt.
- Reviewed by Simon.
+ Remove accidentally left in debugging statement.
- Fix compilation errors on VS2008 64Bit
+ * runtime/JSArray.h:
+ (JSC::MarkStack::drain):
- * kjs/collector.cpp:
- (JSC::currentThreadStackBase):
+2009-08-13 Oliver Hunt <oliver@apple.com>
-2008-10-08 André Pönitz <apoenitz@trolltech.com>
+ Reviewed by Maciej Stachowiak.
- Reviewed by Simon.
+ [ES5] Implement Array.isArray
+ https://bugs.webkit.org/show_bug.cgi?id=28296
- Fix compilation with Qt namespaces.
+ Add support for Array.isArray to the Array constructor
- * wtf/Threading.h:
+ * runtime/ArrayConstructor.cpp:
+ (JSC::ArrayConstructor::ArrayConstructor):
+ (JSC::arrayConstructorIsArray):
+ * runtime/ArrayConstructor.h:
+ * runtime/CommonIdentifiers.h:
+ * runtime/JSArray.h:
+ (JSC::MarkStack::drain):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::reset):
-2008-10-07 Sam Weinig <sam@webkit.org>
+2009-08-13 Oliver Hunt <oliver@apple.com>
- Roll out r37405.
+ Reviewed by NOBODY (Buildfix).
-2008-10-07 Oliver Hunt <oliver@apple.com>
+ Attempt to fix windows build
- Reviewed by Cameron Zwarich.
+ * runtime/Collector.cpp:
- Switch CTI runtime calls to the fastcall calling convention
+2009-08-13 Oliver Hunt <oliver@apple.com>
- Basically this means that we get to store the argument for CTI
- calls in the ECX register, which saves a register->memory write
- and subsequent memory->register read.
-
- This is a 1.7% progression in SunSpider and 2.4% on commandline
- v8 tests on Windows
+ Reviewed by Maciej Stachowiak.
+
+ Devirtualise marking
+ https://bugs.webkit.org/show_bug.cgi?id=28294
+
+ Add a bit to TypeInfo to indicate that an object uses the standard
+ JSObject::markChildren method. This allows us to devirtualise marking
+ of most objects (though a branch is still needed). We also add a branch
+ to identify arrays thus devirtualising marking in that case as well.
+
+ In order to make the best use of this devirtualisation I've also reworked
+ the MarkStack::drain() logic to make the iteration more efficient.
- * VM/CTI.cpp:
+ * API/JSCallbackConstructor.h:
+ (JSC::JSCallbackConstructor::createStructure):
+ * API/JSCallbackFunction.h:
+ (JSC::JSCallbackFunction::createStructure):
+ * JavaScriptCore.exp:
+ * runtime/BooleanObject.h:
+ (JSC::BooleanObject::createStructure):
+ * runtime/FunctionPrototype.h:
+ (JSC::FunctionPrototype::createStructure):
+ * runtime/InternalFunction.h:
+ (JSC::InternalFunction::createStructure):
+ * runtime/JSAPIValueWrapper.h:
+ (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::markChildren):
+ * runtime/JSArray.h:
+ (JSC::JSArray::markChildrenDirect):
+ (JSC::MarkStack::drain):
+ * runtime/JSByteArray.cpp:
+ (JSC::JSByteArray::createStructure):
+ * runtime/JSCell.h:
+ (JSC::MarkStack::append):
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData):
+ * runtime/JSNumberCell.h:
+ (JSC::JSNumberCell::createStructure):
+ * runtime/JSONObject.h:
+ (JSC::JSONObject::createStructure):
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::markChildren):
+ * runtime/JSObject.h:
+ (JSC::JSObject::markChildrenDirect):
+ (JSC::JSObject::createStructure):
+ * runtime/JSString.h:
+ (JSC::JSString::createStructure):
+ * runtime/JSType.h:
(JSC::):
- (JSC::CTI::privateCompilePutByIdTransition):
- (JSC::CTI::privateCompilePatchGetArrayLength):
- * VM/CTI.h:
- * VM/Machine.h:
- * masm/X86Assembler.h:
- (JSC::X86Assembler::emitRestoreArgumentReference):
- (JSC::X86Assembler::emitRestoreArgumentReferenceForTrampoline):
- We need this to correctly reload ecx from inside certain property access
- trampolines.
- * wtf/Platform.h:
+ * runtime/MarkStack.h:
+ (JSC::MarkStack::MarkStack):
+ (JSC::MarkStack::MarkSet::MarkSet):
+ (JSC::MarkStack::MarkStackArray::last):
+ * runtime/MathObject.h:
+ (JSC::MathObject::createStructure):
+ * runtime/NumberConstructor.h:
+ (JSC::NumberConstructor::createStructure):
+ * runtime/NumberObject.h:
+ (JSC::NumberObject::createStructure):
+ * runtime/RegExpConstructor.h:
+ (JSC::RegExpConstructor::createStructure):
+ * runtime/RegExpObject.h:
+ (JSC::RegExpObject::createStructure):
+ * runtime/StringObjectThatMasqueradesAsUndefined.h:
+ (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
+ * runtime/TypeInfo.h:
+ (JSC::TypeInfo::hasDefaultMark):
-2008-10-07 Maciej Stachowiak <mjs@apple.com>
+2009-08-13 Darin Adler <darin@apple.com>
Reviewed by Mark Rowe.
-
- - optimize away multiplication by constant 1.0
-
- 2.3% speedup on v8 RayTrace benchmark
-
- Apparently it's not uncommon for JavaScript code to multiply by
- constant 1.0 in the mistaken belief that this converts integer to
- floating point and that there is any operational difference.
-
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass): Optimize to_jsnumber for
- case where parameter is already number.
- (JSC::CTI::privateCompileSlowCases): ditto
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute): ditto
- * kjs/grammar.y:
- (makeMultNode): Transform as follows:
- +FOO * BAR ==> FOO * BAR
- FOO * +BAR ==> FOO * BAR
- FOO * 1 ==> +FOO
- 1 * FOO ==> +FOO
- (makeDivNode): Transform as follows:
- +FOO / BAR ==> FOO / BAR
- FOO / +BAR ==> FOO / BAR
- (makeSubNode): Transform as follows:
- +FOO - BAR ==> FOO - BAR
- FOO - +BAR ==> FOO - BAR
- * kjs/nodes.h:
- (JSC::ExpressionNode::stripUnaryPlus): Helper for above
- grammar.y changes
- (JSC::UnaryPlusNode::stripUnaryPlus): ditto
-
-2008-10-07 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver Hunt.
-
- - make constant folding code more consistent
-
- Added a makeSubNode to match add, mult and div; use the makeFooNode functions always,
- instead of allocating nodes directly in other places in the grammar.
-
- * kjs/grammar.y:
-
-2008-10-07 Sam Weinig <sam@webkit.org>
-
- Reviewed by Cameron Zwarich.
-
- Move hasGetterSetterProperties flag from PropertyMap to StructureID.
- * kjs/JSObject.cpp:
- (JSC::JSObject::put):
- (JSC::JSObject::defineGetter):
- (JSC::JSObject::defineSetter):
- * kjs/JSObject.h:
- (JSC::JSObject::hasGetterSetterProperties):
- (JSC::JSObject::getOwnPropertySlotForWrite):
- (JSC::JSObject::getOwnPropertySlot):
- * kjs/PropertyMap.h:
- * kjs/StructureID.cpp:
- (JSC::StructureID::StructureID):
- (JSC::StructureID::addPropertyTransition):
- (JSC::StructureID::toDictionaryTransition):
- (JSC::StructureID::changePrototypeTransition):
- (JSC::StructureID::getterSetterTransition):
- * kjs/StructureID.h:
- (JSC::StructureID::hasGetterSetterProperties):
- (JSC::StructureID::setHasGetterSetterProperties):
-
-2008-10-07 Sam Weinig <sam@webkit.org>
+ Some small bits of housekeeping.
- Reviewed by Cameron Zwarich.
+ * JavaScriptCore.xcodeproj/project.pbxproj: Make Parser.h
+ project instead of private. Remove JSONObject.lut.h.
- Roll r37370 back in with bug fixes.
+ * assembler/ARMAssembler.h: Remove unneeded WTF prefix.
+ * assembler/AssemblerBufferWithConstantPool.h: Ditto.
+ * bytecompiler/BytecodeGenerator.h: Ditto.
- - PropertyMap::storageSize() should reflect the number of keys + deletedOffsets
- and has nothing to do with the internal deletedSentinel count anymore.
+ * wtf/SegmentedVector.h: Add a "using" statement as we do
+ with the other WTF headers.
-2008-10-07 Gavin Barraclough <barraclough@apple.com>
+2009-08-13 Darin Adler <darin@apple.com>
- Reviewed by Oliver Hunt.
+ Fix Tiger build.
- Move callframe initialization into JIT code, again.
-
- As a part of the restructuring the second result from functions is now
- returned in edx, allowing the new value of 'r' to be returned via a
- register, and stored to the stack from JIT code, too.
+ * parser/Grammar.y: Use a template function so we can compile
+ setStatementLocation even if it comes before YYLTYPE is defined.
- 4.5% progression on v8-tests. (3% in their harness)
+2009-08-13 Darin Adler <darin@apple.com>
- * VM/CTI.cpp:
- (JSC::):
- (JSC::CTI::emitCall):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- * VM/CTI.h:
- (JSC::CallRecord::CallRecord):
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_op_construct_JSConstruct):
- (JSC::Machine::cti_op_resolve_func):
- (JSC::Machine::cti_op_post_inc):
- (JSC::Machine::cti_op_resolve_with_base):
- (JSC::Machine::cti_op_post_dec):
- * VM/Machine.h:
- * kjs/JSFunction.h:
- * kjs/ScopeChain.h:
-
-2008-10-07 Mark Rowe <mrowe@apple.com>
-
- Fix typo in method name.
-
- * wrec/WREC.cpp:
- * wrec/WREC.h:
+ Reviewed by George Staikos.
-2008-10-07 Cameron Zwarich <zwarich@apple.com>
+ Too much use of void* in Grammar.y
+ https://bugs.webkit.org/show_bug.cgi?id=28287
- Rubber-stamped by Mark Rowe.
+ * parser/Grammar.y: Changed all the helper functions to
+ take a JSGlobalData* instead of a void*. A couple formatting
+ tweaks that I missed when breaking this into pieces.
- Roll out r37370.
+2009-08-13 Darin Adler <darin@apple.com>
-2008-10-06 Sam Weinig <sam@webkit.org>
+ Reviewed by George Staikos.
- Reviewed by Cameron Zwarich.
+ Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
- Fix for https://bugs.webkit.org/show_bug.cgi?id=21415
- Improve the division between PropertyStorageArray and PropertyMap
+ * parser/Grammar.y: Reduced and sorted includes. Tweaked comment
+ format. Marked a few more functions inline.
- - Rework ProperyMap to store offsets in the value so that they don't
- change when rehashing. This allows us not to have to keep the
- PropertyStorageArray in sync and thus not have to pass it in.
- - Rename PropertyMap::getOffset -> PropertyMap::get since put/remove
- now also return offsets.
- - A Vector of deleted offsets is now needed since the storage is out of
- band.
+2009-08-13 Darin Adler <darin@apple.com>
- 1% win on SunSpider. Wash on V8 suite.
+ Reviewed by George Staikos.
- * JavaScriptCore.exp:
- * VM/CTI.cpp:
- (JSC::transitionWillNeedStorageRealloc):
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
- Transition logic can be greatly simplified by the fact that
- the storage capacity is always known, and is correct for the
- inline case.
- * kjs/JSObject.cpp:
- (JSC::JSObject::put): Rename getOffset -> get.
- (JSC::JSObject::deleteProperty): Ditto.
- (JSC::JSObject::getPropertyAttributes): Ditto.
- (JSC::JSObject::removeDirect): Use returned offset to
- clear the value in the PropertyNameArray.
- (JSC::JSObject::allocatePropertyStorage): Add assert.
- * kjs/JSObject.h:
- (JSC::JSObject::getDirect): Rename getOffset -> get
- (JSC::JSObject::getDirectLocation): Rename getOffset -> get
- (JSC::JSObject::putDirect): Use propertyStorageCapacity to determine whether
- or not to resize. Also, since put now returns an offset (and thus
- addPropertyTransition does also) setting of the PropertyStorageArray is
- now done here.
- (JSC::JSObject::transitionTo):
- * kjs/PropertyMap.cpp:
- (JSC::PropertyMap::checkConsistency): PropertyStorageArray is no longer
- passed in.
- (JSC::PropertyMap::operator=): Copy the delete offsets vector.
- (JSC::PropertyMap::put): Instead of setting the PropertyNameArray
- explicitly, return the offset where the value should go.
- (JSC::PropertyMap::remove): Instead of removing from the PropertyNameArray
- explicitly, return the offset where the value should be removed.
- (JSC::PropertyMap::get): Switch to using the stored offset, instead
- of the implicit one.
- (JSC::PropertyMap::insert):
- (JSC::PropertyMap::expand): This is never called when m_table is null,
- so remove that branch and add it as an assertion.
- (JSC::PropertyMap::createTable): Consistency checks no longer take
- a PropertyNameArray.
- (JSC::PropertyMap::rehash): No need to rehash the PropertyNameArray
- now that it is completely out of band.
- * kjs/PropertyMap.h:
- (JSC::PropertyMapEntry::PropertyMapEntry): Store offset into PropertyNameArray.
- (JSC::PropertyMap::get): Switch to using the stored offset, instead
- of the implicit one.
- * kjs/StructureID.cpp:
- (JSC::StructureID::StructureID): Initialize the propertyStorageCapacity to
- JSObject::inlineStorageCapacity.
- (JSC::StructureID::growPropertyStorageCapacity): Grow the storage capacity as
- described below.
- (JSC::StructureID::addPropertyTransition): Copy the storage capacity.
- (JSC::StructureID::toDictionaryTransition): Ditto.
- (JSC::StructureID::changePrototypeTransition): Ditto.
- (JSC::StructureID::getterSetterTransition): Ditto.
- * kjs/StructureID.h:
- (JSC::StructureID::propertyStorageCapacity): Add propertyStorageCapacity
- which is the current capacity for the JSObjects PropertyStorageArray.
- It starts at the JSObject::inlineStorageCapacity (currently 2), then
- when it first needs to be resized moves to the JSObject::nonInlineBaseStorageCapacity
- (currently 16), and after that doubles each time.
-
-2008-10-06 Cameron Zwarich <zwarich@apple.com>
+ Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
- Reviewed by Oliver Hunt.
+ * parser/Grammar.y: Pass the number to the PropertyNode instead of
+ first turning it into an Identifier.
- Bug 21396: Remove the OptionalCalleeActivation call frame slot
- <https://bugs.webkit.org/show_bug.cgi?id=21396>
+ * parser/NodeConstructors.h:
+ (JSC::PropertyNode::PropertyNode): Add an overload that takes a double
+ so the code to convert to a string can be here instead of Grammar.y.
+ * parser/Nodes.h: Ditto.
- Remove the OptionalCalleeActivation call frame slot. We have to be
- careful to store the activation object in a register, because objects
- in the scope chain do not get marked.
+2009-08-13 Darin Adler <darin@apple.com>
- This is a 0.3% speedup on both SunSpider and the V8 benchmark.
+ Reviewed by George Staikos.
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::CodeGenerator):
- (JSC::CodeGenerator::emitReturn):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (JSC::Machine::dumpRegisters):
- (JSC::Machine::unwindCallFrame):
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_op_push_activation):
- (JSC::Machine::cti_op_tear_off_activation):
- (JSC::Machine::cti_op_construct_JSConstruct):
- * VM/Machine.h:
- (JSC::Machine::initializeCallFrame):
- * VM/RegisterFile.h:
- (JSC::RegisterFile::):
-
-2008-10-06 Tony Chang <tony@chromium.org>
+ Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
- Reviewed by Alexey Proskuryakov.
+ * parser/Grammar.y: Eliminate the DBG macro.
- Chromium doesn't use pthreads on windows, so make its use conditional.
-
- Also convert a WORD to a DWORD to avoid a compiler warning. This
- matches the other methods around it.
+2009-08-13 Darin Adler <darin@apple.com>
- * wtf/ThreadingWin.cpp:
- (WTF::wtfThreadEntryPoint):
- (WTF::ThreadCondition::broadcast):
+ Reviewed by George Staikos.
-2008-10-06 Mark Mentovai <mark@moxienet.com>
+ Another part of https://bugs.webkit.org/show_bug.cgi?id=28287
- Reviewed by Tim Hatcher.
+ * parser/Grammar.y: Eliminate the SET_EXCEPTION_LOCATION macro.
- Allow ENABLE_DASHBOARD_SUPPORT and ENABLE_MAC_JAVA_BRIDGE to be
- disabled on the Mac.
+2009-08-13 Darin Adler <darin@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=21333
+ Reviewed by George Staikos.
- * wtf/Platform.h:
+ George asked me to break the patch from
+ https://bugs.webkit.org/show_bug.cgi?id=28287
+ into smaller pieces and land it in stages.
-2008-10-06 Steve Falkenburg <sfalken@apple.com>
+ * parser/Grammar.y: Eliminate the LEXER macro.
- https://bugs.webkit.org/show_bug.cgi?id=21416
- Pass 0 for size to VirtualAlloc, as documented by MSDN.
- Identified by Application Verifier.
-
- Reviewed by Darin Adler.
+2009-08-13 Mark Rowe <mrowe@apple.com>
- * kjs/collector.cpp:
- (KJS::freeBlock):
+ Try some more to fix the Windows build.
-2008-10-06 Kevin McCullough <kmccullough@apple.com>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto.
- Reviewed by Tim Hatcheri and Oliver Hunt.
+2009-08-13 Mark Rowe <mrowe@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=21412
- Bug 21412: Refactor user initiated profile count to be more stable
- - Export UString::from for use with creating the profile title.
+ Try and fix the Windows build.
- * JavaScriptCore.exp:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto.
-2008-10-06 Maciej Stachowiak <mjs@apple.com>
+2009-08-13 Darin Adler <darin@apple.com>
- Not reviewed. Build fix.
-
- - revert toBoolean changes (r37333 and r37335); need to make WebCore work with these
+ Reviewed by David Levin.
- * API/JSValueRef.cpp:
- (JSValueToBoolean):
- * ChangeLog:
- * JavaScriptCore.exp:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_loop_if_true):
- (JSC::Machine::cti_op_not):
- (JSC::Machine::cti_op_jtrue):
- * kjs/ArrayPrototype.cpp:
- (JSC::arrayProtoFuncFilter):
- (JSC::arrayProtoFuncEvery):
- (JSC::arrayProtoFuncSome):
- * kjs/BooleanConstructor.cpp:
- (JSC::constructBoolean):
- (JSC::callBooleanConstructor):
- * kjs/GetterSetter.h:
- * kjs/JSCell.h:
- (JSC::JSValue::toBoolean):
- * kjs/JSNumberCell.cpp:
- (JSC::JSNumberCell::toBoolean):
- * kjs/JSNumberCell.h:
- * kjs/JSObject.cpp:
- (JSC::JSObject::toBoolean):
- * kjs/JSObject.h:
- * kjs/JSString.cpp:
- (JSC::JSString::toBoolean):
- * kjs/JSString.h:
- * kjs/JSValue.h:
- * kjs/RegExpConstructor.cpp:
- (JSC::setRegExpConstructorMultiline):
- * kjs/RegExpObject.cpp:
- (JSC::RegExpObject::match):
- * kjs/RegExpPrototype.cpp:
- (JSC::regExpProtoFuncToString):
+ JavaScriptCore tweaks to get ready for the parser arena
+ https://bugs.webkit.org/show_bug.cgi?id=28243
-2008-10-06 Maciej Stachowiak <mjs@apple.com>
+ Eliminate dependencies on Nodes.h outside JavaScriptCore,
+ and cut down on them inside JavaScriptCore.
- Reviewed by Sam Weinig.
-
- - optimize op_jtrue, op_loop_if_true and op_not in various ways
- https://bugs.webkit.org/show_bug.cgi?id=21404
-
- 1) Make JSValue::toBoolean nonvirtual and completely inline by
- making use of the StructureID type field.
-
- 2) Make JSValue::toBoolean not take an ExecState; doesn't need it.
-
- 3) Make op_not, op_loop_if_true and op_jtrue not read the
- ExecState (toBoolean doesn't need it any more) and not check
- exceptions (toBoolean can't throw).
+ Change regular expression parsing to use identifiers as
+ with other strings we parse.
- * API/JSValueRef.cpp:
- (JSValueToBoolean):
- * JavaScriptCore.exp:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_loop_if_true):
- (JSC::Machine::cti_op_not):
- (JSC::Machine::cti_op_jtrue):
- * kjs/ArrayPrototype.cpp:
- (JSC::arrayProtoFuncFilter):
- (JSC::arrayProtoFuncEvery):
- (JSC::arrayProtoFuncSome):
- * kjs/BooleanConstructor.cpp:
- (JSC::constructBoolean):
- (JSC::callBooleanConstructor):
- * kjs/GetterSetter.h:
- * kjs/JSCell.h:
- (JSC::JSValue::toBoolean):
- * kjs/JSNumberCell.cpp:
- * kjs/JSNumberCell.h:
- (JSC::JSNumberCell::toBoolean):
- * kjs/JSObject.cpp:
- * kjs/JSObject.h:
- (JSC::JSObject::toBoolean):
- (JSC::JSCell::toBoolean):
- * kjs/JSString.cpp:
- * kjs/JSString.h:
- (JSC::JSString::toBoolean):
- * kjs/JSValue.h:
- * kjs/RegExpConstructor.cpp:
- (JSC::setRegExpConstructorMultiline):
- * kjs/RegExpObject.cpp:
- (JSC::RegExpObject::match):
- * kjs/RegExpPrototype.cpp:
- (JSC::regExpProtoFuncToString):
+ Fix a couple things that are needed to use const Identifier
+ more, which will be part of the parser arena work.
-2008-10-06 Ariya Hidayat <ariya.hidayat@trolltech.com>
+ * JavaScriptCore.exp: Resorted and updated.
- Reviewed by Simon.
+ * JavaScriptCore.xcodeproj/project.pbxproj: Changed
+ CollectorHeapIterator.h to be project-internal.
- Build fix for MinGW.
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitPushNewScope): Added const.
+ * bytecompiler/BytecodeGenerator.h: Ditto.
- * JavaScriptCore.pri:
- * kjs/DateMath.cpp:
- (JSC::highResUpTime):
+ * debugger/Debugger.cpp:
+ (JSC::Debugger::recompileAllJSFunctions): Moved this function
+ here from WebCore. Here is better since it uses so many internals.
+ Removed unimportant optimization for the no listener case.
+ * debugger/Debugger.h: Ditto. Also removed unneeded include
+ and tweaked formatting and comments.
-2008-10-05 Cameron Zwarich <zwarich@apple.com>
+ * debugger/DebuggerCallFrame.cpp:
+ (JSC::DebuggerCallFrame::functionName): Call asFunction instead
+ of doing the unchecked static_cast.
+ (JSC::DebuggerCallFrame::calculatedFunctionName): Ditto.
- Reviewed by Oliver Hunt.
+ * jit/JITStubs.cpp:
+ (JSC::op_call_JSFunction): Call isHostFunction on the body rather
+ than on the JSFunction.
+ (JSC::vm_lazyLinkCall): Ditto.
+ (JSC::op_construct_JSConstruct): Ditto.
- Remove ScopeNode::containsClosures() now that it is unused.
+ * parser/Grammar.y: Changed callers to use new scanRegExp with
+ out arguments instead of relying on state in the Lexer. And
+ callers that just want to skip a regular expression to use
+ skipRegExp.
- * kjs/nodes.h:
- (JSC::ScopeNode::containsClosures):
+ * parser/Lexer.cpp:
+ (JSC::Lexer::scanRegExp): Changed to use out arguments, and to
+ add a prefix argument so we can add in the "=" character as needed.
+ Also rewrote to streamline the logic a bit inspired by suggestions
+ by David Levin.
+ (JSC::Lexer::skipRegExp): Added. Version of the function above that
+ does not actually put the regular expression into a string.
+ (JSC::Lexer::clear): Removed code to clear m_pattern and m_flags.
+ * parser/Lexer.h: Changed scanRegExp to have out arguments. Added
+ skipRegExp. Eliminated pattern, flags, m_pattern, and m_flags.
+
+ * parser/NodeConstructors.h:
+ (JSC::RegExpNode::RegExpNode): Changed to take const Identifier&.
+ * parser/Nodes.cpp:
+ (JSC::RegExpNode::emitBytecode): Changed since m_pattern and
+ m_flags are now Identifier instead of UString.
+ (JSC::FunctionBodyNode::make): Moved this function here instead
+ of putting it in the JSFunction.h header.
+ * parser/Nodes.h: Changed RegExpNode to use Identifier.
-2008-10-05 Maciej Stachowiak <mjs@apple.com>
+ * profiler/Profiler.cpp:
+ (JSC::Profiler::createCallIdentifier): Changed to use isHostFunction
+ on the body instead of on the JSFunction object.
+ * runtime/FunctionPrototype.cpp:
+ (JSC::functionProtoFuncToString): Ditto.
- Reviewed by Cameron Zwarich.
-
- - fix releas-only test failures caused by the fix to bug 21375
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::isHostFunction): Moved here from header.
+ (JSC::JSFunction::isHostFunctionNonInline): Added.
+ (JSC::JSFunction::JSFunction): Removed unneeded initialization of
+ m_body to 0.
+ (JSC::JSFunction::setBody): Moved here from header.
+
+ * runtime/JSFunction.h: Removed unneeded includes. Moved private
+ constructor down to the private section. Made virtual functions
+ private. Removed unneeded overload of setBody and moved the body
+ of the function into the .cpp file. Changed assertions to use
+ the non-inline version of isHostFunction.
- * VM/Machine.cpp:
- (JSC::Machine::unwindCallFrame): Update ExecState while unwinding call frames;
- it now matters more to have a still-valid ExecState, since dynamicGlobalObject
- will make use of the ExecState's scope chain.
- * VM/Machine.h:
+ * runtime/PropertySlot.cpp:
+ (JSC::PropertySlot::functionGetter): Use asFunction instead
+ of doing the unchecked static_cast.
-2008-10-05 Cameron Zwarich <zwarich@apple.com>
+ * wtf/SegmentedVector.h:
+ (WTF::SegmentedVector::isEmpty): Added.
- Reviewed by Oliver Hunt.
+2009-08-13 Mark Rowe <mrowe@apple.com>
- Bug 21364: Remove the branch in op_ret for OptionalCalleeActivation and OptionalCalleeArguments
- <https://bugs.webkit.org/show_bug.cgi?id=21364>
+ Rubber-stamped by Darin Adler.
- Use information from the parser to detect whether an activation is
- needed or 'arguments' is used, and emit explicit instructions to tear
- them off before op_ret. This allows a branch to be removed from op_ret
- and simplifies some other code. This does cause a small change in the
- behaviour of 'f.arguments'; it is no longer live when 'arguments' is not
- mentioned in the lexical scope of the function.
+ Use the version of operator new that takes a JSGlobalData when allocating FuncDeclNode and FuncExprNode
+ from within the grammar to prevent these nodes from being leaked.
- It should now be easy to remove the OptionaCalleeActivation slot in the
- call frame, but this will be done in a later patch.
+ * parser/Grammar.y:
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitReturn):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (JSC::Machine::unwindCallFrame):
- (JSC::Machine::privateExecute):
- (JSC::Machine::retrieveArguments):
- (JSC::Machine::cti_op_create_arguments):
- (JSC::Machine::cti_op_tear_off_activation):
- (JSC::Machine::cti_op_tear_off_arguments):
- * VM/Machine.h:
- * VM/Opcode.h:
- * kjs/Arguments.cpp:
- (JSC::Arguments::mark):
- * kjs/Arguments.h:
- (JSC::Arguments::isTornOff):
- (JSC::Arguments::Arguments):
- (JSC::Arguments::copyRegisters):
- (JSC::JSActivation::copyRegisters):
- * kjs/JSActivation.cpp:
- (JSC::JSActivation::argumentsGetter):
- * kjs/JSActivation.h:
+2009-08-13 Simon Hausmann <simon.hausmann@nokia.com>
-2008-10-05 Maciej Stachowiak <mjs@apple.com>
+ Reviewed by Ariya Hidayat.
- Reviewed by Oliver Hunt.
-
- - fixed "REGRESSION (r37297): fast/js/deep-recursion-test takes too long and times out"
- https://bugs.webkit.org/show_bug.cgi?id=21375
-
- The problem is that dynamicGlobalObject had become O(N) in number
- of call frames, but unwinding the stack for an exception called it
- for every call frame, resulting in O(N^2) behavior for an
- exception thrown from inside deep recursion.
+ Remove the special-case for Qt wrt JSVALUE_32 introduced in
+ r46709. It must've been a dependency issue on the bot, as
+ after a manual build all the tests pass on amd64 and ia32.
- Instead of doing it that way, stash the dynamic global object in JSGlobalData.
-
- * JavaScriptCore.exp:
- * VM/Machine.cpp:
- (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Helper class to temporarily
- store and later restore a dynamicGlobalObject in JSGlobalData.
- (JSC::DynamicGlobalObjectScope::~DynamicGlobalObjectScope):
- (JSC::Machine::execute): In each version, establish a DynamicGlobalObjectScope.
- For ProgramNode, always establish set new dynamicGlobalObject, for FunctionBody and Eval,
- only if none is currently set.
- * VM/Machine.h:
- * kjs/ExecState.h:
- * kjs/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData): Ininitalize new dynamicGlobalObject field to 0.
- * kjs/JSGlobalData.h:
- * kjs/JSGlobalObject.h:
- (JSC::ExecState::dynamicGlobalObject): Moved here from ExecState for benefit of inlining.
- Return lexical global object if this is a globalExec(), otherwise look in JSGlobalData
- for the one stashed there.
-
-2008-10-05 Sam Weinig <sam@webkit.org>
+ * wtf/Platform.h:
- Reviewed by Maciej Stachowiak.
+2009-08-12 Gabor Loki <loki@inf.u-szeged.hu>
- Avoid an extra lookup when transitioning to an existing StructureID
- by caching the offset of property that caused the transition.
+ Reviewed by Gavin Barraclough.
- 1% win on V8 suite. Wash on SunSpider.
+ Add optimize call and property access support for ARM JIT.
+ https://bugs.webkit.org/show_bug.cgi?id=24986
+
+ For tightly coupled sequences the BEGIN_UNINTERRUPTED_SEQUENCE and
+ END_UNINTERRUPTED_SEQUENCE macros have been introduced which ensure
+ space for instructions and constants of the named sequence. This
+ method is vital for those architecture which are using constant pool.
+
+ The 'latePatch' method - which was linked to JmpSrc - is replaced with
+ a port specific solution (each calls are marked to place their address
+ on the constant pool).
+
+ * assembler/ARMAssembler.cpp:
+ (JSC::ARMAssembler::linkBranch):
+ (JSC::ARMAssembler::executableCopy): Add extra align for constant pool.
+ * assembler/ARMAssembler.h:
+ (JSC::ARMAssembler::JmpSrc::JmpSrc):
+ (JSC::ARMAssembler::sizeOfConstantPool):
+ (JSC::ARMAssembler::jmp):
+ (JSC::ARMAssembler::linkCall):
+ * assembler/ARMv7Assembler.h:
+ * assembler/AbstractMacroAssembler.h:
+ * assembler/AssemblerBufferWithConstantPool.h:
+ (JSC::AssemblerBufferWithConstantPool::flushIfNoSpaceFor): Fix the
+ computation of the remaining space.
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::branch32):
+ (JSC::MacroAssemblerARM::nearCall):
+ (JSC::MacroAssemblerARM::call):
+ (JSC::MacroAssemblerARM::branchPtrWithPatch):
+ (JSC::MacroAssemblerARM::ensureSpace):
+ (JSC::MacroAssemblerARM::sizeOfConstantPool):
+ (JSC::MacroAssemblerARM::prepareCall):
+ * assembler/X86Assembler.h:
+ * jit/JIT.h:
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::beginUninterruptedSequence):
+ (JSC::JIT::endUninterruptedSequence):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_method_check):
+ (JSC::JIT::compileGetByIdHotPath):
+ (JSC::JIT::compileGetByIdSlowCase):
+ (JSC::JIT::emit_op_put_by_id):
- * kjs/PropertyMap.cpp:
- (JSC::PropertyMap::put):
- * kjs/PropertyMap.h:
- * kjs/StructureID.cpp:
- (JSC::StructureID::StructureID):
- (JSC::StructureID::addPropertyTransition):
- * kjs/StructureID.h:
- (JSC::StructureID::setCachedTransistionOffset):
- (JSC::StructureID::cachedTransistionOffset):
+2009-08-12 Gavin Barraclough <barraclough@apple.com>
-2008-10-05 Cameron Zwarich <zwarich@apple.com>
+ Rubber Stamped by Dave Kilzer.
- Reviewed by Maciej Stachowiak.
+ Disable WTF_USE_JSVALUE32_64 on iPhone for now (support not yet added for ARMv7).
- Bug 21364: Remove the branch in op_ret for OptionalCalleeActivation and OptionalCalleeArguments
- <https://bugs.webkit.org/show_bug.cgi?id=21364>
+ * wtf/Platform.h:
- This patch does not yet remove the branch, but it does a bit of refactoring
- so that a CodeGenerator now knows whether the associated CodeBlock will need
- a full scope before doing any code generation. This makes it possible to emit
- explicit tear-off instructions before every op_ret.
+2009-08-12 Gavin Barraclough <barraclough@apple.com>
- * VM/CodeBlock.h:
- (JSC::CodeBlock::CodeBlock):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::generate):
- (JSC::CodeGenerator::CodeGenerator):
- (JSC::CodeGenerator::emitPushScope):
- (JSC::CodeGenerator::emitPushNewScope):
- * kjs/nodes.h:
- (JSC::ScopeNode::needsActivation):
+ Reviewed by Maciej Stachoviak.
-2008-10-05 Gavin Barraclough <barraclough@apple.com>
+ Ooops - moved code that had been accidentally added to op_new_func instead of
+ op_new_func_exp, to where it shoulds be.
- Reviewed by Cameron Zwarich.
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ * wtf/Platform.h:
- Fix for bug #21387 - using SamplingTool with CTI.
+2009-08-12 Ada Chan <adachan@apple.com>
- (1) A repatch offset offset changes due to an additional instruction to update SamplingTool state.
- (2) Fix an incusion order problem due to ExecState changes.
- (3) Change to a MACHINE_SAMPLING macro, use of exec should now be accessing global data.
+ Added workaround for the limitation that VirtualFree with MEM_RELEASE
+ can only accept the base address returned by VirtualAlloc when the region
+ was reserved and it can only free the entire region, and not a part of it.
- * VM/CTI.h:
- (JSC::CTI::execute):
- * VM/SamplingTool.h:
- (JSC::SamplingTool::privateExecuteReturned):
- * kjs/Shell.cpp:
+ Reviewed by Oliver Hunt.
-2008-10-04 Mark Rowe <mrowe@apple.com>
+ * runtime/MarkStack.h:
+ (JSC::MarkStack::MarkStackArray::shrinkAllocation):
+ * runtime/MarkStackWin.cpp:
+ (JSC::MarkStack::releaseStack):
- Reviewed by Tim Hatcher.
+2009-08-12 Balazs Kelemen <kelemen.balazs.3@stud.u-szeged.hu>
- Add a 'Check For Weak VTables' build phase to catch weak vtables as early as possible.
+ Reviewed by Ariya Hidayat.
- * JavaScriptCore.xcodeproj/project.pbxproj:
+ Build fix: use std::numeric_limits<long long>::min() instead of LLONG_MIN
+ since LLONG_MIN is not defined in standard c++.
-2008-10-04 Sam Weinig <sam@webkit.org>
+ * runtime/UString.cpp:
+ (JSC::UString::from):
- Reviewed by Oliver Hunt.
+2009-08-12 Benjamin Otte <otte@gnome.org>
- Fix https://bugs.webkit.org/show_bug.cgi?id=21320
- leaks of PropertyNameArrayData seen on buildbot
+ Reviewed by Jan Alonzo.
- - Fix RefPtr cycle by making PropertyNameArrayData's pointer back
- to the StructureID a weak pointer.
+ Buildfix for Gtk platforms debug builds.
- * kjs/PropertyNameArray.h:
- (JSC::PropertyNameArrayData::setCachedStructureID):
- (JSC::PropertyNameArrayData::cachedStructureID):
- * kjs/StructureID.cpp:
- (JSC::StructureID::getEnumerablePropertyNames):
- (JSC::StructureID::clearEnumerationCache):
- (JSC::StructureID::~StructureID):
+ * GNUmakefile.am: Choose MarkStackPosix.cpp or MarkStackWin.cpp
+ depending on platform.
-2008-10-04 Darin Adler <darin@apple.com>
+2009-08-12 Simon Hausmann <simon.hausmann@nokia.com>
- Reviewed by Cameron Zwarich.
+ Prospective build fix for Mac and 32-bit Windows.
- - https://bugs.webkit.org/show_bug.cgi?id=21295
- Bug 21295: Replace ExecState with a call frame Register pointer
-
- 10% faster on Richards; other v8 benchmarks faster too.
- A wash on SunSpider.
-
- This does the minimum necessary to get the speedup. Next step in
- cleaning this up is to replace ExecState with a CallFrame class,
- and be more judicious about when to pass a call frame and when
- to pass a global data pointer, global object pointer, or perhaps
- something else entirely.
-
- * VM/CTI.cpp: Remove the debug-only check of the exception in
- ctiVMThrowTrampoline -- already checked in the code the trampoline
- jumps to, so not all that useful. Removed the exec argument from
- ctiTrampoline. Removed emitDebugExceptionCheck -- no longer needed.
- (JSC::CTI::emitCall): Removed code to set ExecState::m_callFrame.
- (JSC::CTI::privateCompileMainPass): Removed code in catch to extract
- the exception from ExecState::m_exception; instead, the code that
- jumps into catch will make sure the exception is already in eax.
- * VM/CTI.h: Removed exec from the ctiTrampoline. Also removed the
- non-helpful "volatile". Temporarily left ARG_exec in as a synonym
- for ARG_r; I'll change that on a future cleanup pass when introducing
- more use of the CallFrame type.
- (JSC::CTI::execute): Removed the ExecState* argument.
-
- * VM/ExceptionHelpers.cpp:
- (JSC::InterruptedExecutionError::InterruptedExecutionError): Take
- JSGlobalData* instead of ExecState*.
- (JSC::createInterruptedExecutionException): Ditto.
- * VM/ExceptionHelpers.h: Ditto. Also removed an unneeded include.
-
- * VM/Machine.cpp:
- (JSC::slideRegisterWindowForCall): Removed the exec and
- exceptionValue arguments. Changed to return 0 when there's a stack
- overflow rather than using a separate exception argument to cut
- down on memory accesses in the calling convention.
- (JSC::Machine::unwindCallFrame): Removed the exec argument when
- constructing a DebuggerCallFrame. Also removed code to set
- ExecState::m_callFrame.
- (JSC::Machine::throwException): Removed the exec argument when
- construction a DebuggerCallFrame.
- (JSC::Machine::execute): Updated to use the register instead of
- ExecState and also removed various uses of ExecState.
- (JSC::Machine::debug):
- (JSC::Machine::privateExecute): Put globalData into a local
- variable so it can be used throughout the interpreter. Changed
- the VM_CHECK_EXCEPTION to get the exception in globalData instead
- of through ExecState.
- (JSC::Machine::retrieveLastCaller): Turn exec into a registers
- pointer by calling registers() instead of by getting m_callFrame.
- (JSC::Machine::callFrame): Ditto.
- Tweaked exception macros. Made new versions for when you know
- you have an exception. Get at global exception with ARG_globalData.
- Got rid of the need to pass in the return value type.
- (JSC::Machine::cti_op_add): Update to use new version of exception
- macros.
- (JSC::Machine::cti_op_pre_inc): Ditto.
- (JSC::Machine::cti_timeout_check): Ditto.
- (JSC::Machine::cti_op_instanceof): Ditto.
- (JSC::Machine::cti_op_new_func): Ditto.
- (JSC::Machine::cti_op_call_JSFunction): Optimized by using the
- ARG values directly instead of through local variables -- this gets
- rid of code that just shuffles things around in the stack frame.
- Also get rid of ExecState and update for the new way exceptions are
- handled in slideRegisterWindowForCall.
- (JSC::Machine::cti_vm_compile): Update to make exec out of r since
- they are both the same thing now.
- (JSC::Machine::cti_op_call_NotJSFunction): Ditto.
- (JSC::Machine::cti_op_init_arguments): Ditto.
- (JSC::Machine::cti_op_resolve): Ditto.
- (JSC::Machine::cti_op_construct_JSConstruct): Ditto.
- (JSC::Machine::cti_op_construct_NotJSConstruct): Ditto.
- (JSC::Machine::cti_op_resolve_func): Ditto.
- (JSC::Machine::cti_op_put_by_val): Ditto.
- (JSC::Machine::cti_op_put_by_val_array): Ditto.
- (JSC::Machine::cti_op_resolve_skip): Ditto.
- (JSC::Machine::cti_op_resolve_global): Ditto.
- (JSC::Machine::cti_op_post_inc): Ditto.
- (JSC::Machine::cti_op_resolve_with_base): Ditto.
- (JSC::Machine::cti_op_post_dec): Ditto.
- (JSC::Machine::cti_op_call_eval): Ditto.
- (JSC::Machine::cti_op_throw): Ditto. Also rearranged to return
- the exception value as the return value so it can be used by
- op_catch.
- (JSC::Machine::cti_op_push_scope): Ditto.
- (JSC::Machine::cti_op_in): Ditto.
- (JSC::Machine::cti_op_del_by_val): Ditto.
- (JSC::Machine::cti_vm_throw): Ditto. Also rearranged to return
- the exception value as the return value so it can be used by
- op_catch.
-
- * kjs/DebuggerCallFrame.cpp:
- (JSC::DebuggerCallFrame::functionName): Pass globalData.
- (JSC::DebuggerCallFrame::evaluate): Eliminated code to make a
- new ExecState.
- * kjs/DebuggerCallFrame.h: Removed ExecState argument from
- constructor.
-
- * kjs/ExecState.h: Eliminated all data members and made ExecState
- inherit privately from Register instead. Also added a typedef to
- the future name for this class, which is CallFrame. It's just a
- Register* that knows it's a pointer at a call frame. The new class
- can't be constructed or copied. Changed all functions to use
- the this pointer instead of m_callFrame. Changed exception-related
- functions to access an exception in JSGlobalData. Removed functions
- used by CTI to pass the return address to the throw machinery --
- this is now done directly with a global in the global data.
-
- * kjs/FunctionPrototype.cpp:
- (JSC::functionProtoFuncToString): Pass globalData instead of exec.
-
- * kjs/InternalFunction.cpp:
- (JSC::InternalFunction::name): Take globalData instead of exec.
- * kjs/InternalFunction.h: Ditto.
-
- * kjs/JSGlobalData.cpp: Initialize the new exception global to 0.
- * kjs/JSGlobalData.h: Declare two new globals. One for the current
- exception and another for the return address used by CTI to
- implement the throw operation.
-
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::init): Removed code to set up globalExec,
- which is now the same thing as globalCallFrame.
- (JSC::JSGlobalObject::reset): Get globalExec from our globalExec
- function so we don't have to repeat the logic twice.
- (JSC::JSGlobalObject::mark): Removed code to mark the exception;
- the exception is now stored in JSGlobalData and marked there.
- (JSC::JSGlobalObject::globalExec): Return a pointer to the end
- of the global call frame.
- * kjs/JSGlobalObject.h: Removed the globalExec data member.
-
- * kjs/JSObject.cpp:
- (JSC::JSObject::putDirectFunction): Pass globalData instead of exec.
-
- * kjs/collector.cpp:
- (JSC::Heap::collect): Mark the global exception.
+ * runtime/UString.cpp: Include wtf/StringExtras.h for snprintf.
+ (JSC::UString::from): Use %lld instead of %I64d for snprintf
+ on non-windows platforms.
- * profiler/ProfileGenerator.cpp:
- (JSC::ProfileGenerator::addParentForConsoleStart): Pass globalData
- instead of exec to createCallIdentifier.
+2009-08-12 Prasanth Ullattil <prasanth.ullattil@nokia.com>
- * profiler/Profiler.cpp:
- (JSC::Profiler::willExecute): Pass globalData instead of exec to
- createCallIdentifier.
- (JSC::Profiler::didExecute): Ditto.
- (JSC::Profiler::createCallIdentifier): Take globalData instead of
- exec.
- (JSC::createCallIdentifierFromFunctionImp): Ditto.
- * profiler/Profiler.h: Change interface to take a JSGlobalData
- instead of an ExecState.
+ Reviewed by Simon Hausmann.
-2008-10-04 Cameron Zwarich <zwarich@apple.com>
+ Fix compile error on 64Bit Windows, when UString::from
+ is called with an intptr_t.
- Reviewed by Darin Adler.
+ Added new UString::From overload with long long parameter.
- Bug 21369: Add opcode documentation for all undocumented opcodes
- <https://bugs.webkit.org/show_bug.cgi?id=21369>
+ Thanks to Holger for the long long idea.
- This patch adds opcode documentation for all undocumented opcodes, and
- it also renames op_init_arguments to op_create_arguments.
+ * runtime/UString.cpp:
+ (JSC::UString::from):
+ * runtime/UString.h:
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::CodeGenerator):
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_create_arguments):
- * VM/Machine.h:
- * VM/Opcode.h:
+2009-08-11 Oliver Hunt <oliver@apple.com>
-2008-10-03 Maciej Stachowiak <mjs@apple.com>
+ Reviewed by Mark Rowe.
- Reviewed by Cameron Zwarich.
-
- - "this" object in methods called on primitives should be wrapper object
- https://bugs.webkit.org/show_bug.cgi?id=21362
-
- I changed things so that functions which use "this" do a fast
- version of toThisObject conversion if needed. Currently we miss
- the conversion entirely, at least for primitive types. Using
- TypeInfo and the primitive check, I made the fast case bail out
- pretty fast.
-
- This is inexplicably an 1.007x SunSpider speedup (and a wash on V8 benchmarks).
-
- Also renamed some opcodes for clarity:
-
- init ==> enter
- init_activation ==> enter_with_activation
-
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::generate):
- (JSC::CodeGenerator::CodeGenerator):
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_convert_this):
- * VM/Machine.h:
- * VM/Opcode.h:
- * kjs/JSActivation.cpp:
- (JSC::JSActivation::JSActivation):
- * kjs/JSActivation.h:
- (JSC::JSActivation::createStructureID):
- * kjs/JSCell.h:
- (JSC::JSValue::needsThisConversion):
- * kjs/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- * kjs/JSGlobalData.h:
- * kjs/JSNumberCell.h:
- (JSC::JSNumberCell::createStructureID):
- * kjs/JSStaticScopeObject.h:
- (JSC::JSStaticScopeObject::JSStaticScopeObject):
- (JSC::JSStaticScopeObject::createStructureID):
- * kjs/JSString.h:
- (JSC::JSString::createStructureID):
- * kjs/JSValue.h:
- * kjs/TypeInfo.h:
- (JSC::TypeInfo::needsThisConversion):
- * kjs/nodes.h:
- (JSC::ScopeNode::usesThis):
-
-2008-10-03 Cameron Zwarich <zwarich@apple.com>
+ Minor style fixes.
- Reviewed by Maciej Stachowiak.
+ * runtime/UString.h:
+ (JSC::UString::Rep::createEmptyBuffer):
+ * wtf/FastMalloc.h:
+ (WTF::TryMallocReturnValue::getValue):
- Bug 21356: The size of the RegisterFile differs depending on 32-bit / 64-bit and Debug / Release
- <https://bugs.webkit.org/show_bug.cgi?id=21356>
+2009-08-11 Oliver Hunt <oliver@apple.com>
- The RegisterFile decreases in size (measured in terms of numbers of
- Registers) as the size of a Register increases. This causes
+ Reviewed by Gavin Barraclough.
- js1_5/Regress/regress-159334.js
+ Make it harder to misuse try* allocation routines
+ https://bugs.webkit.org/show_bug.cgi?id=27469
- to fail in 64-bit debug builds. This fix makes the RegisterFile on all
- platforms the same size that it is in 32-bit Release builds.
+ Jump through a few hoops to make it much harder to accidentally
+ miss null-checking of values returned by the try-* allocation
+ routines.
- * VM/RegisterFile.h:
- (JSC::RegisterFile::RegisterFile):
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::putSlowCase):
+ (JSC::JSArray::increaseVectorLength):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncFontsize):
+ (JSC::stringProtoFuncLink):
+ * runtime/UString.cpp:
+ (JSC::allocChars):
+ (JSC::reallocChars):
+ (JSC::expandCapacity):
+ (JSC::UString::Rep::reserveCapacity):
+ (JSC::UString::expandPreCapacity):
+ (JSC::createRep):
+ (JSC::concatenate):
+ (JSC::UString::spliceSubstringsWithSeparators):
+ (JSC::UString::replaceRange):
+ (JSC::UString::append):
+ (JSC::UString::operator=):
+ * runtime/UString.h:
+ (JSC::UString::Rep::createEmptyBuffer):
+ * wtf/FastMalloc.cpp:
+ (WTF::tryFastZeroedMalloc):
+ (WTF::tryFastMalloc):
+ (WTF::tryFastCalloc):
+ (WTF::tryFastRealloc):
+ (WTF::TCMallocStats::tryFastMalloc):
+ (WTF::TCMallocStats::tryFastCalloc):
+ (WTF::TCMallocStats::tryFastRealloc):
+ * wtf/FastMalloc.h:
+ (WTF::TryMallocReturnValue::TryMallocReturnValue):
+ (WTF::TryMallocReturnValue::~TryMallocReturnValue):
+ (WTF::TryMallocReturnValue::operator PossiblyNull<T>):
+ (WTF::TryMallocReturnValue::getValue):
+ * wtf/Platform.h:
+ * wtf/PossiblyNull.h: Added.
+ (WTF::PossiblyNull::PossiblyNull):
+ (WTF::PossiblyNull::~PossiblyNull):
+ (WTF::::getValue):
-2008-10-03 Maciej Stachowiak <mjs@apple.com>
+2009-08-11 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Cameron Zwarich.
-
- - Some code cleanup to how we handle code features.
-
- 1) Rename FeatureInfo typedef to CodeFeatures.
- 2) Rename NodeFeatureInfo template to NodeInfo.
- 3) Keep CodeFeature bitmask in ScopeNode instead of trying to break it out into individual bools.
- 4) Rename misleadingly named "needsClosure" method to "containsClosures", which better describes the meaning
- of ClosureFeature.
- 5) Make setUsersArguments() not take an argument since it only goes one way.
+ Reviewed by NOBODY (build fix part deux).
- * JavaScriptCore.exp:
- * VM/CodeBlock.h:
- (JSC::CodeBlock::CodeBlock):
- * kjs/NodeInfo.h:
- * kjs/Parser.cpp:
- (JSC::Parser::didFinishParsing):
- * kjs/Parser.h:
- (JSC::Parser::parse):
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (JSC::ScopeNode::ScopeNode):
- (JSC::ProgramNode::ProgramNode):
- (JSC::ProgramNode::create):
- (JSC::EvalNode::EvalNode):
- (JSC::EvalNode::create):
- (JSC::FunctionBodyNode::FunctionBodyNode):
- (JSC::FunctionBodyNode::create):
- * kjs/nodes.h:
- (JSC::ScopeNode::usesEval):
- (JSC::ScopeNode::containsClosures):
- (JSC::ScopeNode::usesArguments):
- (JSC::ScopeNode::setUsesArguments):
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
-2008-10-03 Cameron Zwarich <zwarich@apple.com>
+2009-08-11 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Maciej Stachowiak.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Bug 21343: REGRESSSION (r37160): ecma_3/ExecutionContexts/10.1.3-1.js and js1_4/Functions/function-001.js fail on 64-bit
- <https://bugs.webkit.org/show_bug.cgi?id=21343>
+2009-08-11 Gavin Barraclough <barraclough@apple.com>
- A fix was landed for this issue in r37253, and the ChangeLog assumes
- that it is a compiler bug, but it turns out that it is a subtle issue
- with mixing signed and unsigned 32-bit values in a 64-bit environment.
- In order to properly fix this bug, we should convert our signed offsets
- into the register file to use ptrdiff_t.
+ Reviewed by Oliver Hunt.
- This may not be the only instance of this issue, but I will land this
- fix first and look for more later.
+ Restrict use of FuncDeclNode & FuncExprNode to the parser.
+ https://bugs.webkit.org/show_bug.cgi?id=28209
- * VM/Machine.cpp:
- (JSC::Machine::getArgumentsData):
- * VM/Machine.h:
- * kjs/Arguments.cpp:
- (JSC::Arguments::getOwnPropertySlot):
- * kjs/Arguments.h:
- (JSC::Arguments::init):
+ These objects were also being referenced from the CodeBlock. By changing this
+ to just retain pointers to FunctionBodyNodes these classes can be restricted to
+ use during parsing.
-2008-10-03 Darin Adler <darin@apple.com>
+ No performance impact (or sub-percent progression).
- * VM/CTI.cpp: Another Windows build fix. Change the args of ctiTrampoline.
+ * JavaScriptCore.exp:
+ Update symbols.
- * kjs/JSNumberCell.h: A build fix for newer versions of gcc. Added
- declarations of JSGlobalData overloads of jsNumberCell.
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::mark):
+ (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
+ (JSC::CodeBlock::shrinkToFit):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::addFunction):
+ (JSC::CodeBlock::function):
+ Unify m_functions & m_functionExpressions into a single Vector<RefPtr<FuncExprNode> >.
-2008-10-03 Darin Adler <darin@apple.com>
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::BytecodeGenerator):
+ (JSC::BytecodeGenerator::addConstant):
+ (JSC::BytecodeGenerator::emitNewFunction):
+ (JSC::BytecodeGenerator::emitNewFunctionExpression):
+ * bytecompiler/BytecodeGenerator.h:
+ FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes.
- - try to fix Windows build
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::execute):
+ (JSC::Interpreter::privateExecute):
+ Update to reflect chnages in CodeBlock.
- * kjs/ScopeChain.h: Add forward declaration of JSGlobalData.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_new_func_exp):
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * jit/JITStubs.h:
+ (JSC::):
+ Update to reflect chnages in CodeBlock.
-2008-10-03 Darin Adler <darin@apple.com>
+ * parser/Grammar.y:
+ FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes.
- Reviewed by Geoff Garen.
+ * parser/NodeConstructors.h:
+ (JSC::FuncExprNode::FuncExprNode):
+ (JSC::FuncDeclNode::FuncDeclNode):
+ * parser/Nodes.cpp:
+ (JSC::ScopeNodeData::mark):
+ (JSC::FunctionBodyNode::finishParsing):
+ * parser/Nodes.h:
+ (JSC::FunctionBodyNode::ident):
+ Move m_ident & make methods from FuncDeclNode & FuncExprNode to FunctionBodyNode.
- - next step of https://bugs.webkit.org/show_bug.cgi?id=21295
- Turn ExecState into a call frame pointer.
+ * runtime/JSFunction.h:
+ (JSC::FunctionBodyNode::make):
+ Make this method inline (was FuncDeclNode::makeFunction).
- Remove m_globalObject and m_globalData from ExecState.
+2009-08-11 Oliver Hunt <oliver@apple.com>
- SunSpider says this is a wash (slightly faster but not statistically
- significant); which is good enough since it's a preparation step and
- not supposed to be a spedup.
+ Reviewed by Gavin Barraclough.
- * API/JSCallbackFunction.cpp:
- (JSC::JSCallbackFunction::JSCallbackFunction):
- * kjs/ArrayConstructor.cpp:
- (JSC::ArrayConstructor::ArrayConstructor):
- * kjs/BooleanConstructor.cpp:
- (JSC::BooleanConstructor::BooleanConstructor):
- * kjs/DateConstructor.cpp:
- (JSC::DateConstructor::DateConstructor):
- * kjs/ErrorConstructor.cpp:
- (JSC::ErrorConstructor::ErrorConstructor):
- * kjs/FunctionPrototype.cpp:
- (JSC::FunctionPrototype::FunctionPrototype):
- * kjs/JSFunction.cpp:
- (JSC::JSFunction::JSFunction):
- * kjs/NativeErrorConstructor.cpp:
- (JSC::NativeErrorConstructor::NativeErrorConstructor):
- * kjs/NumberConstructor.cpp:
- (JSC::NumberConstructor::NumberConstructor):
- * kjs/ObjectConstructor.cpp:
- (JSC::ObjectConstructor::ObjectConstructor):
- * kjs/PrototypeFunction.cpp:
- (JSC::PrototypeFunction::PrototypeFunction):
- * kjs/RegExpConstructor.cpp:
- (JSC::RegExpConstructor::RegExpConstructor):
- * kjs/StringConstructor.cpp:
- (JSC::StringConstructor::StringConstructor):
- Pass JSGlobalData* instead of ExecState* to the InternalFunction
- constructor.
-
- * API/OpaqueJSString.cpp: Added now-needed include.
-
- * JavaScriptCore.exp: Updated.
-
- * VM/CTI.cpp:
- (JSC::CTI::emitSlowScriptCheck): Changed to use ARGS_globalData
- instead of ARGS_exec.
-
- * VM/CTI.h: Added a new argument to the CTI, the global data pointer.
- While it's possible to get to the global data pointer using the
- ExecState pointer, it's slow enough that it's better to just keep
- it around in the CTI arguments.
-
- * VM/CodeBlock.h: Moved the CodeType enum here from ExecState.h.
-
- * VM/Machine.cpp:
- (JSC::Machine::execute): Pass fewer arguments when constructing
- ExecState, and pass the global data pointer when invoking CTI.
- (JSC::Machine::firstCallFrame): Added. Used to get the dynamic global
- object, which is in the scope chain of the first call frame.
- (JSC::Machine::cti_op_add): Use globalData instead of exec when
- possible, to keep fast cases fast, since it's now more expensive to
- get to it through the exec pointer.
- (JSC::Machine::cti_timeout_check): Ditto.
- (JSC::Machine::cti_op_put_by_id_second): Ditto.
- (JSC::Machine::cti_op_get_by_id_second): Ditto.
- (JSC::Machine::cti_op_mul): Ditto.
- (JSC::Machine::cti_vm_compile): Ditto.
- (JSC::Machine::cti_op_get_by_val): Ditto.
- (JSC::Machine::cti_op_sub): Ditto.
- (JSC::Machine::cti_op_put_by_val): Ditto.
- (JSC::Machine::cti_op_put_by_val_array): Ditto.
- (JSC::Machine::cti_op_negate): Ditto.
- (JSC::Machine::cti_op_div): Ditto.
- (JSC::Machine::cti_op_pre_dec): Ditto.
- (JSC::Machine::cti_op_post_inc): Ditto.
- (JSC::Machine::cti_op_lshift): Ditto.
- (JSC::Machine::cti_op_bitand): Ditto.
- (JSC::Machine::cti_op_rshift): Ditto.
- (JSC::Machine::cti_op_bitnot): Ditto.
- (JSC::Machine::cti_op_mod): Ditto.
- (JSC::Machine::cti_op_post_dec): Ditto.
- (JSC::Machine::cti_op_urshift): Ditto.
- (JSC::Machine::cti_op_bitxor): Ditto.
- (JSC::Machine::cti_op_bitor): Ditto.
- (JSC::Machine::cti_op_call_eval): Ditto.
- (JSC::Machine::cti_op_throw): Ditto.
- (JSC::Machine::cti_op_is_string): Ditto.
- (JSC::Machine::cti_op_debug): Ditto.
- (JSC::Machine::cti_vm_throw): Ditto.
-
- * VM/Machine.h: Added firstCallFrame.
-
- * kjs/DebuggerCallFrame.cpp:
- (JSC::DebuggerCallFrame::evaluate): Pass fewer arguments when
- constructing ExecState.
-
- * kjs/ExecState.cpp: Deleted contents. Later we'll remove the
- file altogether.
-
- * kjs/ExecState.h: Removed m_globalObject and m_globalData.
- Moved CodeType into another header.
- (JSC::ExecState::ExecState): Take only a single argument, a
- call frame pointer.
- (JSC::ExecState::dynamicGlobalObject): Get the object from
- the first call frame since it's no longer stored.
- (JSC::ExecState::globalData): Get the global data from the
- scope chain, since we no longer store a pointer to it here.
- (JSC::ExecState::identifierTable): Ditto.
- (JSC::ExecState::propertyNames): Ditto.
- (JSC::ExecState::emptyList): Ditto.
- (JSC::ExecState::lexer): Ditto.
- (JSC::ExecState::parser): Ditto.
- (JSC::ExecState::machine): Ditto.
- (JSC::ExecState::arrayTable): Ditto.
- (JSC::ExecState::dateTable): Ditto.
- (JSC::ExecState::mathTable): Ditto.
- (JSC::ExecState::numberTable): Ditto.
- (JSC::ExecState::regExpTable): Ditto.
- (JSC::ExecState::regExpConstructorTable): Ditto.
- (JSC::ExecState::stringTable): Ditto.
- (JSC::ExecState::heap): Ditto.
-
- * kjs/FunctionConstructor.cpp:
- (JSC::FunctionConstructor::FunctionConstructor): Pass
- JSGlobalData* instead of ExecState* to the InternalFunction
- constructor.
- (JSC::constructFunction): Pass the global data pointer when
- constructing a new scope chain.
-
- * kjs/InternalFunction.cpp:
- (JSC::InternalFunction::InternalFunction): Take a JSGlobalData*
- instead of an ExecState*. Later we can change more places to
- work this way -- it's more efficient to take the type you need
- since the caller might already have it.
- * kjs/InternalFunction.h: Ditto.
-
- * kjs/JSCell.h:
- (JSC::JSCell::operator new): Added an overload that takes a
- JSGlobalData* so you can construct without an ExecState*.
-
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::init): Moved creation of the global scope
- chain in here, since it now requires a pointer to the global data.
- Moved the initialization of the call frame in here since it requires
- the global scope chain node. Removed the extra argument to ExecState
- when creating the global ExecState*.
- * kjs/JSGlobalObject.h: Removed initialization of globalScopeChain
- and the call frame from the JSGlobalObjectData constructor. Added
- a thisValue argument to the init function.
-
- * kjs/JSNumberCell.cpp: Added versions of jsNumberCell that take
- JSGlobalData* rather than ExecState*.
- * kjs/JSNumberCell.h:
- (JSC::JSNumberCell::operator new): Added a version that takes
- JSGlobalData*.
- (JSC::JSNumberCell::JSNumberCell): Ditto.
- (JSC::jsNumber): Ditto.
- * kjs/JSString.cpp:
- (JSC::jsString): Ditto.
- (JSC::jsSubstring): Ditto.
- (JSC::jsOwnedString): Ditto.
- * kjs/JSString.h:
- (JSC::JSString::JSString): Changed to take JSGlobalData*.
- (JSC::jsEmptyString): Added a version that takes JSGlobalData*.
- (JSC::jsSingleCharacterString): Ditto.
- (JSC::jsSingleCharacterSubstring): Ditto.
- (JSC::jsNontrivialString): Ditto.
- (JSC::JSString::getIndex): Ditto.
- (JSC::jsString): Ditto.
- (JSC::jsSubstring): Ditto.
- (JSC::jsOwnedString): Ditto.
+ Native JSON.stringify does not omit functions
+ https://bugs.webkit.org/show_bug.cgi?id=28117
- * kjs/ScopeChain.h: Added a globalData pointer to each node.
- (JSC::ScopeChainNode::ScopeChainNode): Initialize the globalData
- pointer.
- (JSC::ScopeChainNode::push): Set the global data pointer in the
- new node.
- (JSC::ScopeChain::ScopeChain): Take a globalData argument.
+ Objects that are callable should be treated as undefined when
+ serialising to JSON.
- * kjs/SmallStrings.cpp:
- (JSC::SmallStrings::createEmptyString): Take JSGlobalData* instead of
- ExecState*.
- (JSC::SmallStrings::createSingleCharacterString): Ditto.
- * kjs/SmallStrings.h:
- (JSC::SmallStrings::emptyString): Ditto.
- (JSC::SmallStrings::singleCharacterString): Ditto.
+ * runtime/JSONObject.cpp:
+ (JSC::Stringifier::appendStringifiedValue):
-2008-10-03 Cameron Zwarich <zwarich@apple.com>
+2009-08-11 Oliver Hunt <oliver@apple.com>
Reviewed by Geoff Garen.
- Bug 21343: REGRESSSION (r37160): ecma_3/ExecutionContexts/10.1.3-1.js and js1_4/Functions/function-001.js fail on 64-bit
- <https://bugs.webkit.org/show_bug.cgi?id=21343>
-
- Add a workaround for a bug in GCC, which affects GCC 4.0, GCC 4.2, and
- llvm-gcc 4.2. I put it in an #ifdef because it was a slight regression
- on SunSpider in 32-bit, although that might be entirely random.
-
- * kjs/Arguments.cpp:
- (JSC::Arguments::getOwnPropertySlot):
+ REGRESSION: Hang/crash in BytecodeGenerator::constRegisterFor loading simple page
+ https://bugs.webkit.org/show_bug.cgi?id=28169
-2008-10-03 Darin Adler <darin@apple.com>
+ Handle the case where someone has attempted to shadow a property
+ on the global object with a constant.
- Rubber stamped by Alexey Proskuryakov.
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::constRegisterFor):
+ * parser/Nodes.cpp:
+ (JSC::ConstDeclNode::emitCodeSingle):
- * kjs/Shell.cpp: (main): Don't delete JSGlobalData. Later, we need to change
- this tool to use public JavaScriptCore API instead.
+2009-08-11 John Gregg <johnnyg@google.com>
-2008-10-03 Darin Adler <darin@apple.com>
+ Reviewed by Maciej Stachowiak.
- Suggested by Alexey Proskuryakov.
+ Desktop Notifications API
+ https://bugs.webkit.org/show_bug.cgi?id=25463
- * kjs/JSGlobalData.cpp:
- (JSC::JSGlobalData::~JSGlobalData): Remove call to heap.destroy() because
- it's too late to ref the JSGlobalData object once it's already being
- destroyed. In practice this is not a problem because WebCore's JSGlobalData
- is never destroyed and JSGlobalContextRelease takes care of calling
- heap.destroy() in advance.
+ Adds ENABLE_NOTIFICATION flag.
-2008-10-02 Oliver Hunt <oliver@apple.com>
+ * Configurations/FeatureDefines.xcconfig:
+ * wtf/Platform.h:
- Reviewed by Maciej Stachowiak.
+2009-08-11 Maxime Simon <simon.maxime@gmail.com>
- Replace SSE3 check with an SSE2 check, and implement SSE2 check on windows.
+ Reviewed by Eric Seidel.
- 5.6% win on SunSpider on windows.
+ Modifications on JavaScriptCore to allow Haiku port.
+ https://bugs.webkit.org/show_bug.cgi?id=28121
- * VM/CTI.cpp:
- (JSC::isSSE2Present):
- (JSC::CTI::compileBinaryArithOp):
- (JSC::CTI::compileBinaryArithOpSlowCase):
+ * runtime/Collector.cpp: Haiku doesn't have sys/mman.h, using OS.h instead.
+ (JSC::currentThreadStackBase): Haiku uses its own threading system.
+ * wtf/Platform.h: Defining all Haiku platform values.
+ * wtf/haiku/MainThreadHaiku.cpp: Adding a missing header (NotImplemented.h).
-2008-10-03 Maciej Stachowiak <mjs@apple.com>
+2009-08-11 Jessie Berlin <jberlin@apple.com>
- Rubber stamped by Cameron Zwarich.
-
- - fix mistaken change of | to || which caused a big perf regression on EarleyBoyer
+ Reviewed by Adam Roben.
- * kjs/grammar.y:
+ Fix windows build.
-2008-10-02 Darin Adler <darin@apple.com>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Reviewed by Geoff Garen.
+2009-08-11 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
- - https://bugs.webkit.org/show_bug.cgi?id=21321
- Bug 21321: speed up JavaScriptCore by inlining Heap in JSGlobalData
+ Reviewed by Tor Arne Vestbø.
- 1.019x as fast on SunSpider.
+ Buildfix for Qt-win platforms.
- * API/JSBase.cpp:
- (JSEvaluateScript): Use heap. instead of heap-> to work with the heap.
- (JSCheckScriptSyntax): Ditto.
- (JSGarbageCollect): Ditto.
- (JSReportExtraMemoryCost): Ditto.
- * API/JSContextRef.cpp:
- (JSGlobalContextRetain): Ditto.
- (JSGlobalContextRelease): Destroy the heap with the destroy function instead
- of the delete operator.
- (JSContextGetGlobalObject): Use heap. instead of heap-> to work with the heap.
- * API/JSObjectRef.cpp:
- (JSObjectMake): Use heap. instead of heap-> to work with the heap.
- (JSObjectMakeFunctionWithCallback): Ditto.
- (JSObjectMakeConstructor): Ditto.
- (JSObjectMakeFunction): Ditto.
- (JSObjectMakeArray): Ditto.
- (JSObjectMakeDate): Ditto.
- (JSObjectMakeError): Ditto.
- (JSObjectMakeRegExp): Ditto.
- (JSObjectHasProperty): Ditto.
- (JSObjectGetProperty): Ditto.
- (JSObjectSetProperty): Ditto.
- (JSObjectGetPropertyAtIndex): Ditto.
- (JSObjectSetPropertyAtIndex): Ditto.
- (JSObjectDeleteProperty): Ditto.
- (JSObjectCallAsFunction): Ditto.
- (JSObjectCallAsConstructor): Ditto.
- (JSObjectCopyPropertyNames): Ditto.
- (JSPropertyNameAccumulatorAddName): Ditto.
- * API/JSValueRef.cpp:
- (JSValueIsEqual): Ditto.
- (JSValueIsInstanceOfConstructor): Ditto.
- (JSValueMakeNumber): Ditto.
- (JSValueMakeString): Ditto.
- (JSValueToNumber): Ditto.
- (JSValueToStringCopy): Ditto.
- (JSValueToObject): Ditto.
- (JSValueProtect): Ditto.
- (JSValueUnprotect): Ditto.
-
- * kjs/ExecState.h:
- (JSC::ExecState::heap): Update to use the & operator.
-
- * kjs/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData): Update to initialize a heap member
- instead of calling new to make a heap.
- (JSC::JSGlobalData::~JSGlobalData): Destroy the heap with the destroy
- function instead of the delete operator.
- * kjs/JSGlobalData.h: Change from Heap* to a Heap.
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::mark): Use the & operator here.
- (JSC::JSGlobalObject::operator new): Use heap. instead of heap-> to work
- with the heap.
-
-2008-10-02 Cameron Zwarich <zwarich@apple.com>
+ * JavaScriptCore.pri: Choose MarkStackPosix.cpp or MarkStackWin.cpp depend on platform.
- Reviewed by Geoff Garen.
+2009-08-10 Oliver Hunt <oliver@apple.com>
- Bug 21317: Replace RegisterFile size and capacity information with Register pointers
- <https://bugs.webkit.org/show_bug.cgi?id=21317>
+ Reviewed by NOBODY (And another build fix).
- This is a 2.3% speedup on the V8 DeltaBlue benchmark, a 3.3% speedup on
- the V8 Raytrace benchmark, and a 1.0% speedup on SunSpider.
+ Add new exports for MSVC
- * VM/Machine.cpp:
- (JSC::slideRegisterWindowForCall):
- (JSC::Machine::callEval):
- (JSC::Machine::execute):
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_op_construct_JSConstruct):
- * VM/RegisterFile.cpp:
- (JSC::RegisterFile::~RegisterFile):
- * VM/RegisterFile.h:
- (JSC::RegisterFile::RegisterFile):
- (JSC::RegisterFile::start):
- (JSC::RegisterFile::end):
- (JSC::RegisterFile::size):
- (JSC::RegisterFile::shrink):
- (JSC::RegisterFile::grow):
- (JSC::RegisterFile::lastGlobal):
- (JSC::RegisterFile::markGlobals):
- (JSC::RegisterFile::markCallFrames):
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::copyGlobalsTo):
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
-2008-10-02 Cameron Zwarich <zwarich@apple.com>
+2009-08-10 Oliver Hunt <oliver@apple.com>
- Rubber-stamped by Darin Adler.
+ Reviewed by NOBODY (yet another build fix).
- Change bitwise operations introduced in r37166 to boolean operations. We
- only use bitwise operations over boolean operations for increasing
- performance in extremely hot code, but that does not apply to anything
- in the parser.
+ Remove obsolete entries from MSVC exports file
- * kjs/grammar.y:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
-2008-10-02 Gavin Barraclough <barraclough@apple.com>
+2009-08-10 Oliver Hunt <oliver@apple.com>
- Reviewed by Darin Adler.
+ Add includes needed for non-allinonefile builds
- Fix for bug #21232 - should reset m_isPendingDash on flush,
- and should allow '\-' as beginning or end of a range (though
- not to specifiy a range itself).
-
- * ChangeLog:
- * wrec/CharacterClassConstructor.cpp:
- (JSC::CharacterClassConstructor::put):
- (JSC::CharacterClassConstructor::flush):
- * wrec/CharacterClassConstructor.h:
- (JSC::CharacterClassConstructor::flushBeforeEscapedHyphen):
- * wrec/WREC.cpp:
- (JSC::WRECGenerator::generateDisjunction):
- (JSC::WRECParser::parseCharacterClass):
- (JSC::WRECParser::parseDisjunction):
- * wrec/WREC.h:
+ * runtime/GetterSetter.h:
+ * runtime/ScopeChain.h:
-2008-10-02 Darin Adler <darin@apple.com>
+2009-08-10 Oliver Hunt <oliver@apple.com>
- Reviewed by Sam Weinig.
+ Fix export file for last build fix
- - remove the "static" from declarations in a header file, since we
- don't want them to have internal linkage
+ * JavaScriptCore.exp:
- * VM/Machine.h: Remove the static keyword from the constant and the
- three inline functions that Geoff just moved here.
+2009-08-10 Oliver Hunt <oliver@apple.com>
-2008-10-02 Geoffrey Garen <ggaren@apple.com>
+ Hoist page size initialization into platform specific code.
- Reviewed by Sam Weinig.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=21283.
- Profiler Crashes When Started
+ * jit/ExecutableAllocatorPosix.cpp:
+ * jit/ExecutableAllocatorWin.cpp:
+ * runtime/MarkStack.h:
+ (JSC::MarkStack::pageSize):
+ * runtime/MarkStackPosix.cpp:
+ (JSC::MarkStack::initializePagesize):
+ * runtime/MarkStackWin.cpp:
+ (JSC::MarkStack::initializePagesize):
- * VM/Machine.cpp:
- * VM/Machine.h:
- (JSC::makeHostCallFramePointer):
- (JSC::isHostCallFrame):
- (JSC::stripHostCallFrameBit): Moved some things to the header so
- JSGlobalObject could use them.
+2009-08-07 Oliver Hunt <oliver@apple.com>
- * kjs/JSGlobalObject.h:
- (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): Call the
- new makeHostCallFramePointer API, since 0 no longer indicates a host
- call frame.
+ Reviewed by Gavin Barraclough.
-2008-10-02 Alexey Proskuryakov <ap@webkit.org>
+ Stack overflow crash in JavaScript garbage collector mark pass
+ https://bugs.webkit.org/show_bug.cgi?id=12216
- Reviewed by Darin Adler.
+ Make the GC mark phase iterative by using an explicit mark stack.
+ To do this marking any single object is performed in multiple stages
+ * The object is appended to the MarkStack, this sets the marked
+ bit for the object using the new markDirect() function, and then
+ returns
+ * When the MarkStack is drain()ed the object is popped off the stack
+ and markChildren(MarkStack&) is called on the object to collect
+ all of its children. drain() then repeats until the stack is empty.
- https://bugs.webkit.org/show_bug.cgi?id=21304
- Stop using a static wrapper map for WebCore JS bindings
+ Additionally I renamed a number of methods from 'mark' to 'markAggregate'
+ in order to make it more clear that marking of those object was not
+ going to result in an actual recursive mark.
- * kjs/JSGlobalData.cpp:
+ * GNUmakefile.am
+ * JavaScriptCore.exp:
+ * JavaScriptCore.gypi:
+ * JavaScriptCore.pri:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::markAggregate):
+ * bytecode/CodeBlock.h:
+ * bytecode/EvalCodeCache.h:
+ (JSC::EvalCodeCache::markAggregate):
+ * debugger/DebuggerActivation.cpp:
+ (JSC::DebuggerActivation::markChildren):
+ * debugger/DebuggerActivation.h:
+ * interpreter/Register.h:
+ * interpreter/RegisterFile.h:
+ (JSC::RegisterFile::markGlobals):
+ (JSC::RegisterFile::markCallFrames):
+ * parser/Nodes.cpp:
+ (JSC::ScopeNodeData::markAggregate):
+ (JSC::EvalNode::markAggregate):
+ (JSC::FunctionBodyNode::markAggregate):
+ * parser/Nodes.h:
+ (JSC::ScopeNode::markAggregate):
+ * runtime/ArgList.cpp:
+ (JSC::MarkedArgumentBuffer::markLists):
+ * runtime/ArgList.h:
+ * runtime/Arguments.cpp:
+ (JSC::Arguments::markChildren):
+ * runtime/Arguments.h:
+ * runtime/Collector.cpp:
+ (JSC::Heap::markConservatively):
+ (JSC::Heap::markCurrentThreadConservativelyInternal):
+ (JSC::Heap::markCurrentThreadConservatively):
+ (JSC::Heap::markOtherThreadConservatively):
+ (JSC::Heap::markStackObjectsConservatively):
+ (JSC::Heap::markProtectedObjects):
+ (JSC::Heap::collect):
+ * runtime/Collector.h:
+ * runtime/GetterSetter.cpp:
+ (JSC::GetterSetter::markChildren):
+ * runtime/GetterSetter.h:
+ (JSC::GetterSetter::GetterSetter):
+ (JSC::GetterSetter::createStructure):
+ * runtime/GlobalEvalFunction.cpp:
+ (JSC::GlobalEvalFunction::markChildren):
+ * runtime/GlobalEvalFunction.h:
+ * runtime/JSActivation.cpp:
+ (JSC::JSActivation::markChildren):
+ * runtime/JSActivation.h:
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::markChildren):
+ * runtime/JSArray.h:
+ * runtime/JSCell.h:
+ (JSC::JSCell::markCellDirect):
+ (JSC::JSCell::markChildren):
+ (JSC::JSValue::markDirect):
+ (JSC::JSValue::markChildren):
+ (JSC::JSValue::hasChildren):
+ (JSC::MarkStack::append):
+ (JSC::MarkStack::drain):
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::markChildren):
+ * runtime/JSFunction.h:
+ * runtime/JSGlobalData.cpp:
(JSC::JSGlobalData::JSGlobalData):
- (JSC::JSGlobalData::~JSGlobalData):
- (JSC::JSGlobalData::ClientData::~ClientData):
- * kjs/JSGlobalData.h:
- Added a client data member to JSGlobalData. WebCore will use it to store bindings-related
- global data.
-
- * JavaScriptCore.exp: Export virtual ClientData destructor.
+ * runtime/JSGlobalData.h:
+ * runtime/JSGlobalObject.cpp:
+ (JSC::markIfNeeded):
+ (JSC::JSGlobalObject::markChildren):
+ * runtime/JSGlobalObject.h:
+ * runtime/JSNotAnObject.cpp:
+ (JSC::JSNotAnObject::markChildren):
+ * runtime/JSNotAnObject.h:
+ * runtime/JSONObject.cpp:
+ (JSC::Stringifier::markAggregate):
+ (JSC::JSONObject::markStringifiers):
+ * runtime/JSONObject.h:
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::markChildren):
+ (JSC::JSObject::defineGetter):
+ (JSC::JSObject::defineSetter):
+ * runtime/JSObject.h:
+ * runtime/JSPropertyNameIterator.cpp:
+ (JSC::JSPropertyNameIterator::markChildren):
+ * runtime/JSPropertyNameIterator.h:
+ (JSC::JSPropertyNameIterator::createStructure):
+ (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
+ (JSC::JSPropertyNameIterator::create):
+ * runtime/JSStaticScopeObject.cpp:
+ (JSC::JSStaticScopeObject::markChildren):
+ * runtime/JSStaticScopeObject.h:
+ * runtime/JSType.h:
+ (JSC::):
+ * runtime/JSValue.h:
+ * runtime/JSWrapperObject.cpp:
+ (JSC::JSWrapperObject::markChildren):
+ * runtime/JSWrapperObject.h:
+ * runtime/MarkStack.cpp: Added.
+ (JSC::MarkStack::compact):
+ * runtime/MarkStack.h: Added.
+ (JSC::):
+ (JSC::MarkStack::MarkStack):
+ (JSC::MarkStack::append):
+ (JSC::MarkStack::appendValues):
+ (JSC::MarkStack::~MarkStack):
+ (JSC::MarkStack::MarkSet::MarkSet):
+ (JSC::MarkStack::pageSize):
+
+ MarkStackArray is a non-shrinking, mmap-based vector type
+ used for storing objects to be marked.
+ (JSC::MarkStack::MarkStackArray::MarkStackArray):
+ (JSC::MarkStack::MarkStackArray::~MarkStackArray):
+ (JSC::MarkStack::MarkStackArray::expand):
+ (JSC::MarkStack::MarkStackArray::append):
+ (JSC::MarkStack::MarkStackArray::removeLast):
+ (JSC::MarkStack::MarkStackArray::isEmpty):
+ (JSC::MarkStack::MarkStackArray::size):
+ (JSC::MarkStack::MarkStackArray::shrinkAllocation):
+ * runtime/MarkStackPosix.cpp: Added.
+ (JSC::MarkStack::allocateStack):
+ (JSC::MarkStack::releaseStack):
+ * runtime/MarkStackWin.cpp: Added.
+ (JSC::MarkStack::allocateStack):
+ (JSC::MarkStack::releaseStack):
-2008-10-02 Geoffrey Garen <ggaren@apple.com>
+ * runtime/ScopeChain.h:
+ * runtime/ScopeChainMark.h:
+ (JSC::ScopeChain::markAggregate):
+ * runtime/SmallStrings.cpp:
+ (JSC::SmallStrings::mark):
+ * runtime/Structure.h:
+ (JSC::Structure::markAggregate):
- Not reviewed.
+2009-08-10 Mark Rowe <mrowe@apple.com>
- Try to fix Qt build.
+ Reviewed by Darin Adler.
- * kjs/Error.h:
+ Fix hundreds of "pointer being freed was not allocated" errors seen on the build bot.
-2008-10-01 Geoffrey Garen <ggaren@apple.com>
+ * wtf/FastMalloc.h: Implement nothrow variants of the delete and delete[] operators since
+ we implement the nothrow variants of new and new[]. The nothrow variant of delete is called
+ explicitly in the implementation of std::sort which was resulting in FastMalloc-allocated
+ memory being passed to the system allocator to free.
- Reviewed by Darin Adler and Cameron Zwarich.
+2009-08-10 Jan Michael Alonzo <jmalonzo@webkit.org>
- Preliminary step toward dynamic recompilation: Standardized and
- simplified the parsing interface.
-
- The main goal in this patch is to make it easy to ask for a duplicate
- compilation, and get back a duplicate result -- same source URL, same
- debugger / profiler ID, same toString behavior, etc.
-
- The basic unit of compilation and evaluation is now SourceCode, which
- encompasses a SourceProvider, a range in that provider, and a starting
- line number.
+ [Gtk] Unreviewed build fix. Move JSAPIValueWrapper.cpp/.h in the debug
+ section. This file is already part of AllInOneFile in Release builds.
- A SourceProvider now encompasses a source URL, and *is* a source ID,
- since a pointer is a unique identifier.
+ * GNUmakefile.am:
- * API/JSBase.cpp:
- (JSEvaluateScript):
- (JSCheckScriptSyntax): Provide a SourceCode to the Interpreter, since
- other APIs are no longer supported.
-
- * VM/CodeBlock.h:
- (JSC::EvalCodeCache::get): Provide a SourceCode to the Interpreter, since
- other APIs are no longer supported.
- (JSC::CodeBlock::CodeBlock): ASSERT something that used to be ASSERTed
- by our caller -- this is a better bottleneck.
+2009-08-10 Darin Adler <darin@apple.com>
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::CodeGenerator): Updated for the fact that
- FunctionBodyNode's parameters are no longer a WTF::Vector.
+ * wtf/FastMalloc.h: Fix build.
- * kjs/Arguments.cpp:
- (JSC::Arguments::Arguments): ditto
+2009-08-10 Darin Adler <darin@apple.com>
- * kjs/DebuggerCallFrame.cpp:
- (JSC::DebuggerCallFrame::evaluate): Provide a SourceCode to the Parser,
- since other APIs are no longer supported.
+ Reviewed by Mark Rowe.
- * kjs/FunctionConstructor.cpp:
- (JSC::constructFunction): Provide a SourceCode to the Parser, since
- other APIs are no longer supported. Adopt FunctionBodyNode's new
- "finishParsing" API.
+ FastMalloc.h has cross-platform code but marked as WinCE-only
+ https://bugs.webkit.org/show_bug.cgi?id=28160
- * kjs/JSFunction.cpp:
- (JSC::JSFunction::lengthGetter):
- (JSC::JSFunction::getParameterName): Updated for the fact that
- FunctionBodyNode's parameters are no longer a wtf::Vector.
+ 1) The support for nothrow was inside #if PLATFORM(WINCE) even though it is
+ not platform-specific.
+ 2) The code tried to override operator delete nothrow, which does not exist.
+ 3) The code in the header checks the value of USE_SYSTEM_MALLOC, but the code
+ in FastMalloc.cpp checks only if the macro is defined.
- * kjs/JSFunction.h: Nixed some cruft.
+ * wtf/FastMalloc.h: See above.
+ * wtf/FastMalloc.cpp: Ditto.
- * kjs/JSGlobalObjectFunctions.cpp:
- (JSC::globalFuncEval): Provide a SourceCode to the Parser, since
- other APIs are no longer supported.
+2009-08-10 Sam Weinig <sam@webkit.org>
- * kjs/Parser.cpp:
- (JSC::Parser::parse): Require a SourceCode argument, instead of a bunch
- of broken out parameters. Stop tracking sourceId as an integer, since we
- use the SourceProvider pointer for this now. Don't clamp the
- startingLineNumber, since SourceCode does that now.
+ Reviewed by Anders Carlsson.
- * kjs/Parser.h:
- (JSC::Parser::parse): Standardized the parsing interface to require a
- SourceCode.
+ Fix an annoying indentation issue.
- * kjs/Shell.cpp:
- (functionRun):
- (functionLoad):
- (prettyPrintScript):
- (runWithScripts):
- (runInteractive): Provide a SourceCode to the Interpreter, since
- other APIs are no longer supported.
-
- * kjs/SourceProvider.h:
- (JSC::SourceProvider::SourceProvider):
- (JSC::SourceProvider::url):
- (JSC::SourceProvider::asId):
- (JSC::UStringSourceProvider::create):
- (JSC::UStringSourceProvider::UStringSourceProvider): Added new
- responsibilities described above.
-
- * kjs/SourceRange.h:
- (JSC::SourceCode::SourceCode):
- (JSC::SourceCode::toString):
- (JSC::SourceCode::provider):
- (JSC::SourceCode::firstLine):
- (JSC::SourceCode::data):
- (JSC::SourceCode::length): Added new responsibilities described above.
- Renamed SourceRange to SourceCode, based on review feedback. Added
- a makeSource function for convenience.
-
- * kjs/debugger.h: Provide a SourceCode to the client, since other APIs
- are no longer supported.
-
- * kjs/grammar.y: Provide startingLineNumber when creating a SourceCode.
-
- * kjs/debugger.h: Treat sourceId as intptr_t to avoid loss of precision
- on 64bit platforms.
-
- * kjs/interpreter.cpp:
- (JSC::Interpreter::checkSyntax):
- (JSC::Interpreter::evaluate):
- * kjs/interpreter.h: Require a SourceCode instead of broken out arguments.
-
- * kjs/lexer.cpp:
- (JSC::Lexer::setCode):
- * kjs/lexer.h:
- (JSC::Lexer::sourceRange): Fold together the SourceProvider and line number
- into a SourceCode. Fixed a bug where the Lexer would accidentally keep
- alive the last SourceProvider forever.
-
- * kjs/nodes.cpp:
- (JSC::ScopeNode::ScopeNode):
- (JSC::ProgramNode::ProgramNode):
- (JSC::ProgramNode::create):
- (JSC::EvalNode::EvalNode):
- (JSC::EvalNode::generateCode):
- (JSC::EvalNode::create):
- (JSC::FunctionBodyNode::FunctionBodyNode):
- (JSC::FunctionBodyNode::finishParsing):
- (JSC::FunctionBodyNode::create):
- (JSC::FunctionBodyNode::generateCode):
- (JSC::ProgramNode::generateCode):
- (JSC::FunctionBodyNode::paramString):
- * kjs/nodes.h:
- (JSC::ScopeNode::):
- (JSC::ScopeNode::sourceId):
- (JSC::FunctionBodyNode::):
- (JSC::FunctionBodyNode::parameterCount):
- (JSC::FuncExprNode::):
- (JSC::FuncDeclNode::): Store a SourceCode in all ScopeNodes, since
- SourceCode is now responsible for tracking URL, ID, etc. Streamlined
- some ad hoc FunctionBodyNode fixups into a "finishParsing" function, to
- help make clear what you need to do in order to finish parsing a
- FunctionBodyNode.
+ * runtime/DateConstructor.cpp:
+ (JSC::constructDate):
- * wtf/Vector.h:
- (WTF::::releaseBuffer): Don't ASSERT that releaseBuffer() is only called
- when buffer is not 0, since FunctionBodyNode is more than happy
- to get back a 0 buffer, and other functions like RefPtr::release() allow
- for 0, too.
+2009-08-10 Xan Lopez <xlopez@igalia.com>
-2008-10-01 Cameron Zwarich <zwarich@apple.com>
+ Unreviewed build fix.
- Reviewed by Maciej Stachowiak.
+ Add new files to makefile.
- Bug 21289: REGRESSION (r37160): Inspector crashes on load
- <https://bugs.webkit.org/show_bug.cgi?id=21289>
+ * GNUmakefile.am:
- The code in Arguments::mark() in r37160 was wrong. It marks indices in
- d->registers, but that makes no sense (they are local variables, not
- arguments). It should mark those indices in d->registerArray instead.
+2009-08-10 Simon Hausmann <simon.hausmann@nokia.com>
- This patch also changes Arguments::copyRegisters() to use d->numParameters
- instead of recomputing it.
+ Fix compilation with the interpreter instead of the JIT by including
+ PrototypeFunction.h as forward-declared through NativeFunctionWrapper.h.
- * kjs/Arguments.cpp:
- (JSC::Arguments::mark):
- * kjs/Arguments.h:
- (JSC::Arguments::copyRegisters):
+ * runtime/ObjectConstructor.cpp:
-2008-09-30 Darin Adler <darin@apple.com>
+2009-08-09 Oliver Hunt <oliver@apple.com>
- Reviewed by Eric Seidel.
+ Reviewed by George Staikos.
- - https://bugs.webkit.org/show_bug.cgi?id=21214
- work on getting rid of ExecState
+ JSON.stringify replacer returning undefined does not omit object properties
+ https://bugs.webkit.org/show_bug.cgi?id=28118
- Eliminate some unneeded uses of dynamicGlobalObject.
+ Correct behaviour of stringify when using a replacer function that returns
+ undefined. This is a simple change to move the undefined value check to
+ after the replacer function is called. This means that the replacer function
+ is now called for properties with the value undefined, however i've confirmed
+ that this behaviour is correct.
+
+ In addition I've made the cyclic object exception have a more useful error
+ message.
- * API/JSClassRef.cpp:
- (OpaqueJSClass::contextData): Changed to use a map in the global data instead
- of on the global object. Also fixed to use only a single hash table lookup.
+ * runtime/JSONObject.cpp:
+ (JSC::Stringifier::appendStringifiedValue):
- * API/JSObjectRef.cpp:
- (JSObjectMakeConstructor): Use lexicalGlobalObject rather than dynamicGlobalObject
- to get the object prototype.
+2009-08-08 Oliver Hunt <oliver@apple.com>
- * kjs/ArrayPrototype.cpp:
- (JSC::arrayProtoFuncToString): Use arrayVisitedElements set in global data rather
- than in the global object.
- (JSC::arrayProtoFuncToLocaleString): Ditto.
- (JSC::arrayProtoFuncJoin): Ditto.
+ Reviewed by Eric Seidel and Sam Weinig.
- * kjs/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData): Don't initialize opaqueJSClassData, since
- it's no longer a pointer.
- (JSC::JSGlobalData::~JSGlobalData): We still need to delete all the values, but
- we don't need to delete the map since it's no longer a pointer.
+ [ES5] Implement Object.getPrototypeOf
+ https://bugs.webkit.org/show_bug.cgi?id=28114
- * kjs/JSGlobalData.h: Made opaqueJSClassData a map instead of a pointer to a map.
- Also added arrayVisitedElements.
+ Implement getPrototypeOf
- * kjs/JSGlobalObject.h: Removed arrayVisitedElements.
+ * runtime/CommonIdentifiers.h:
+ * runtime/JSGlobalObject.cpp:
+ (JSC::JSGlobalObject::reset):
+ * runtime/ObjectConstructor.cpp:
+ (JSC::ObjectConstructor::ObjectConstructor):
+ (JSC::objectConsGetPrototypeOf):
+ * runtime/ObjectConstructor.h:
- * kjs/Shell.cpp:
- (functionRun): Use lexicalGlobalObject instead of dynamicGlobalObject.
- (functionLoad): Ditto.
+2009-08-07 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
-2008-10-01 Cameron Zwarich <zwarich@apple.com>
+ Reviewed by Eric Seidel.
- Not reviewed.
+ Allow custom memory allocation control for Noncopyable class
+ https://bugs.webkit.org/show_bug.cgi?id=27879
- Speculative Windows build fix.
+ Several classes which are inherited from Noncopyable are instantiated by
+ operator new, so Noncopyable class has been inherited from FastAllocBase.
- * kjs/grammar.y:
+ * wtf/Noncopyable.h:
-2008-10-01 Cameron Zwarich <zwarich@apple.com>
+2009-08-07 George Staikos <george.staikos@torchmobile.com>
- Reviewed by Darin Adler.
+ Reviewed by Eric Seidel.
- Bug 21123: using "arguments" in a function should not force creation of an activation object
- <https://bugs.webkit.org/show_bug.cgi?id=21123>
-
- Make the 'arguments' object not require a JSActivation. We store the
- 'arguments' object in the OptionalCalleeArguments call frame slot. We
- need to be able to get the original 'arguments' object to tear it off
- when returning from a function, but 'arguments' may be assigned to in a
- number of ways.
-
- Therefore, we use the OptionalCalleeArguments slot when we want to get
- the original activation or we know that 'arguments' was not assigned a
- different value. When 'arguments' may have been assigned a new value,
- we use a new local variable that is initialized with 'arguments'. Since
- a function parameter named 'arguments' may overwrite the value of
- 'arguments', we also need to be careful to look up 'arguments' in the
- symbol table, so we get the parameter named 'arguments' instead of the
- local variable that we have added for holding the 'arguments' object.
-
- This is a 19.1% win on the V8 Raytrace benchmark using the SunSpider
- harness, and a 20.7% win using the V8 harness. This amounts to a 6.5%
- total speedup on the V8 benchmark suite using the V8 harness.
-
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- * VM/CodeBlock.h:
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::CodeGenerator):
- * VM/Machine.cpp:
- (JSC::Machine::unwindCallFrame):
- (JSC::Machine::privateExecute):
- (JSC::Machine::retrieveArguments):
- (JSC::Machine::cti_op_init_arguments):
- (JSC::Machine::cti_op_ret_activation_arguments):
- * VM/Machine.h:
- * VM/RegisterFile.h:
- (JSC::RegisterFile::):
- * kjs/Arguments.cpp:
- (JSC::Arguments::mark):
- (JSC::Arguments::fillArgList):
- (JSC::Arguments::getOwnPropertySlot):
- (JSC::Arguments::put):
- * kjs/Arguments.h:
- (JSC::Arguments::setRegisters):
- (JSC::Arguments::init):
- (JSC::Arguments::Arguments):
- (JSC::Arguments::copyRegisters):
- (JSC::JSActivation::copyRegisters):
- * kjs/JSActivation.cpp:
- (JSC::JSActivation::argumentsGetter):
- * kjs/JSActivation.h:
- (JSC::JSActivation::JSActivationData::JSActivationData):
- * kjs/grammar.y:
- * kjs/nodes.h:
- (JSC::ScopeNode::setUsesArguments):
- * masm/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::orl_mr):
+ https://bugs.webkit.org/show_bug.cgi?id=27305
+ Implement WinCE-specific unicode layer.
+ Written by George Staikos <george.staikos@torchmobile.com>
+ with bug fixes by Yong Li <yong.li@torchmobile.com>
+ refactored by Joe Mason <joe.mason@torchmobile.com>
-2008-10-01 Kevin McCullough <kmccullough@apple.com>
+ * wtf/Platform.h:
+ * wtf/unicode/Unicode.h:
+ * wtf/unicode/wince/UnicodeWince.cpp: Added.
+ (WTF::Unicode::toLower):
+ (WTF::Unicode::toUpper):
+ (WTF::Unicode::foldCase):
+ (WTF::Unicode::isPrintableChar):
+ (WTF::Unicode::isSpace):
+ (WTF::Unicode::isLetter):
+ (WTF::Unicode::isUpper):
+ (WTF::Unicode::isLower):
+ (WTF::Unicode::isDigit):
+ (WTF::Unicode::isPunct):
+ (WTF::Unicode::toTitleCase):
+ (WTF::Unicode::direction):
+ (WTF::Unicode::category):
+ (WTF::Unicode::decompositionType):
+ (WTF::Unicode::combiningClass):
+ (WTF::Unicode::mirroredChar):
+ (WTF::Unicode::digitValue):
+ * wtf/unicode/wince/UnicodeWince.h: Added.
+ (WTF::Unicode::):
+ (WTF::Unicode::isSeparatorSpace):
+ (WTF::Unicode::isHighSurrogate):
+ (WTF::Unicode::isLowSurrogate):
+ (WTF::Unicode::isArabicChar):
+ (WTF::Unicode::hasLineBreakingPropertyComplexContext):
+ (WTF::Unicode::umemcasecmp):
+ (WTF::Unicode::surrogateToUcs4):
- Rubberstamped by Geoff Garen.
+2009-08-07 Yongjun Zhang <yongjun.zhang@nokia.com>
- Remove BreakpointCheckStatement because it's not used anymore.
- No effect on sunspider or the jsc tests.
+ Reviewed by Eric Seidel.
- * kjs/nodes.cpp:
- * kjs/nodes.h:
+ https://bugs.webkit.org/show_bug.cgi?id=28069
-2008-09-30 Oliver Hunt <oliver@apple.com>
+ Add inline to help winscw compiler resolve specialized argument in
+ templated functions.
- Reviewed by Geoff Garen.
+ * runtime/LiteralParser.cpp:
+ (JSC::LiteralParser::Lexer::lexString):
- Improve performance of CTI on windows.
-
- Currently on platforms where the compiler doesn't allow us to safely
- index relative to the address of a parameter we need to actually
- provide a pointer to CTI runtime call arguments. This patch improves
- performance in this case by making the CTI logic for restoring this
- parameter much less conservative by only resetting it before we actually
- make a call, rather than between each and every SF bytecode we generate
- code for.
-
- This results in a 3.6% progression on the v8 benchmark when compiled with MSVC.
-
- * VM/CTI.cpp:
- (JSC::CTI::emitCall):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompilePutByIdTransition):
- * VM/CTI.h:
- * masm/X86Assembler.h:
- * wtf/Platform.h:
+2009-08-07 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
-2008-09-30 Maciej Stachowiak <mjs@apple.com>
+ Reviewed by Eric Seidel.
- Reviewed by Oliver Hunt.
+ Allow custom memory allocation control for RegExpObjectData struct
+ http://bugs.webkit.org/show_bug.cgi?id=26750
- - track uses of "this", "with" and "catch" in the parser
-
- Knowing this up front will be useful for future optimizations.
-
- Perf and correctness remain the same.
-
- * kjs/NodeInfo.h:
- * kjs/grammar.y:
+ Inherits RegExpObjectData struct from FastAllocBase because
+ it has been instantiated by 'new' in JavaScriptCore/runtime/RegExpObject.cpp:62
-2008-09-30 Sam Weinig <sam@webkit.org>
+ * runtime/RegExpObject.h:
- Reviewed by Mark Rowe.
+2009-08-06 Norbert Leser <norbert.leser@nokia.com>
- Add WebKitAvailability macros for JSObjectMakeArray, JSObjectMakeDate, JSObjectMakeError,
- and JSObjectMakeRegExp
+ Reviewed by Darin Adler.
- * API/JSObjectRef.h:
+ Updated patch for bug #27059:
+ Symbian platform always uses little endian encoding,
+ regardless of compiler.
+ We need to make sure that we correctly detect EABI architecture
+ for armv5 targets on Symbian,
+ where __EABI__ is set but not __ARM_EABI__
-2008-09-30 Darin Adler <darin@apple.com>
+ * wtf/Platform.h:
- Reviewed by Geoff Garen.
+2009-08-06 Adam Barth <abarth@webkit.org>
- - https://bugs.webkit.org/show_bug.cgi?id=21214
- work on getting rid of ExecState
-
- Replaced the m_prev field of ExecState with a bit in the
- call frame pointer to indicate "host" call frames.
-
- * VM/Machine.cpp:
- (JSC::makeHostCallFramePointer): Added. Sets low bit.
- (JSC::isHostCallFrame): Added. Checks low bit.
- (JSC::stripHostCallFrameBit): Added. Clears low bit.
- (JSC::Machine::unwindCallFrame): Replaced null check that was
- formerly used to detect host call frames with an isHostCallFrame check.
- (JSC::Machine::execute): Pass in a host call frame pointer rather than
- always passing 0 when starting execution from the host. This allows us
- to follow the entire call frame pointer chain when desired, or to stop
- at the host calls when that's desired.
- (JSC::Machine::privateExecute): Replaced null check that was
- formerly used to detect host call frames with an isHostCallFrame check.
- (JSC::Machine::retrieveCaller): Ditto.
- (JSC::Machine::retrieveLastCaller): Ditto.
- (JSC::Machine::callFrame): Removed the code to walk up m_prev pointers
- and replaced it with code that uses the caller pointer and uses the
- stripHostCallFrameBit function.
-
- * kjs/ExecState.cpp: Removed m_prev.
- * kjs/ExecState.h: Ditto.
-
-2008-09-30 Cameron Zwarich <zwarich@apple.com>
+ Unreviewed revert.
- Reviewed by Geoff Garen.
+ http://bugs.webkit.org/show_bug.cgi?id=27879
- Move all detection of 'arguments' in a lexical scope to the parser, in
- preparation for fixing
+ Revert 46877 because it broke GTK.
- Bug 21123: using "arguments" in a function should not force creation of an activation object
- <https://bugs.webkit.org/show_bug.cgi?id=21123>
+ * wtf/Noncopyable.h:
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::CodeGenerator):
- * kjs/NodeInfo.h:
- * kjs/grammar.y:
+2009-08-06 Gavin Barraclough <barraclough@apple.com>
-2008-09-30 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Oliver Hunt.
- Not reviewed.
+ Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification.
+ ( https://bugs.webkit.org/show_bug.cgi?id=27635 )
- * kjs/Shell.cpp:
- (runWithScripts): Fixed indentation.
+ This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%.
+ (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled).
-2008-09-30 Mark Rowe <mrowe@apple.com>
+ * bytecode/CodeBlock.cpp:
+ (JSC::printStructureStubInfo):
+ - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
- Rubber-stamped by Sam Weinig.
+ * bytecode/CodeBlock.h:
+ (JSC::):
+ (JSC::CallLinkInfo::seenOnce):
+ (JSC::CallLinkInfo::setSeen):
+ (JSC::MethodCallLinkInfo::seenOnce):
+ (JSC::MethodCallLinkInfo::setSeen):
+ - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once.
- Build fix. Move InternalFunction::classInfo implementation into the .cpp
- file to prevent the vtable for InternalFunction being generated as a weak symbol.
- Has no effect on SunSpider.
+ * bytecode/StructureStubInfo.cpp:
+ (JSC::StructureStubInfo::deref):
+ - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
- * kjs/InternalFunction.cpp:
- (JSC::InternalFunction::classInfo):
- * kjs/InternalFunction.h:
+ * bytecode/StructureStubInfo.h:
+ (JSC::StructureStubInfo::StructureStubInfo):
+ (JSC::StructureStubInfo::initGetByIdSelf):
+ (JSC::StructureStubInfo::initGetByIdProto):
+ (JSC::StructureStubInfo::initGetByIdChain):
+ (JSC::StructureStubInfo::initGetByIdSelfList):
+ (JSC::StructureStubInfo::initGetByIdProtoList):
+ (JSC::StructureStubInfo::initPutByIdTransition):
+ (JSC::StructureStubInfo::initPutByIdReplace):
+ (JSC::StructureStubInfo::seenOnce):
+ (JSC::StructureStubInfo::setSeen):
+ - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once.
-2008-09-29 Maciej Stachowiak <mjs@apple.com>
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitGetById):
+ (JSC::BytecodeGenerator::emitPutById):
+ - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
- Reviewed by Darin Adler.
-
- - optimize appending a number to a string
- https://bugs.webkit.org/show_bug.cgi?id=21203
-
- It's pretty common in real-world code (and on some of the v8
- benchmarks) to append a number to a string, so I made this one of
- the fast cases, and also added support to UString to do it
- directly without allocating a temporary UString.
-
- ~1% speedup on v8 benchmark.
-
- * VM/Machine.cpp:
- (JSC::jsAddSlowCase): Make this NEVER_INLINE because somehow otherwise
- the change is a regression.
- (JSC::jsAdd): Handle number + string special case.
- (JSC::Machine::cti_op_add): Integrate much of the logic of jsAdd to
- avoid exception check in the str + str, num + num and str + num cases.
- * kjs/ustring.cpp:
- (JSC::expandedSize): Make this a non-member function, since it needs to be
- called in non-member functions but not outside this file.
- (JSC::expandCapacity): Ditto.
- (JSC::UString::expandCapacity): Call the non-member version.
- (JSC::createRep): Helper to make a rep from a char*.
- (JSC::UString::UString): Use above helper.
- (JSC::concatenate): Guts of concatenating constructor for cases where first
- item is a UString::Rep, and second is a UChar* and length, or a char*.
- (JSC::UString::append): Implement for cases where first item is a UString::Rep,
- and second is an int or double. Sadly duplicates logic of UString::from(int)
- and UString::from(double).
- * kjs/ustring.h:
-
-2008-09-29 Darin Adler <darin@apple.com>
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ (JSC::JIT::unlinkCall):
+ - Remove the "don't lazy link" stage of calls.
- Reviewed by Sam Weinig.
+ * jit/JIT.h:
+ (JSC::JIT::compileCTIMachineTrampolines):
+ - Remove the "don't lazy link" stage of calls.
- - https://bugs.webkit.org/show_bug.cgi?id=21214
- work on getting rid of ExecState
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallSlowCase):
+ - Remove the "don't lazy link" stage of calls.
- * JavaScriptCore.exp: Updated since JSGlobalObject::init
- no longer takes a parameter.
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::JITThunks):
+ (JSC::JITThunks::tryCachePutByID):
+ (JSC::JITThunks::tryCacheGetByID):
+ (JSC::JITStubs::DEFINE_STUB_FUNCTION):
+ (JSC::JITStubs::getPolymorphicAccessStructureListSlot):
+ - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
- * VM/Machine.cpp:
- (JSC::Machine::execute): Removed m_registerFile argument
- for ExecState constructors.
+ * jit/JITStubs.h:
+ (JSC::JITThunks::ctiStringLengthTrampoline):
+ (JSC::JITStubs::):
+ - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
- * kjs/DebuggerCallFrame.cpp:
- (JSC::DebuggerCallFrame::evaluate): Removed globalThisValue
- argument for ExecState constructor.
+ * wtf/PtrAndFlags.h:
+ (WTF::PtrAndFlags::PtrAndFlags):
+ (WTF::PtrAndFlags::operator!):
+ (WTF::PtrAndFlags::operator->):
+ - Add ! and -> operators, add constuctor with pointer argument.
- * kjs/ExecState.cpp:
- (JSC::ExecState::ExecState): Removed globalThisValue and
- registerFile arguments to constructors.
+2009-08-06 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- * kjs/ExecState.h: Removed m_globalThisValue and
- m_registerFile data members.
+ Reviewed by Adam Barth.
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::init): Removed globalThisValue
- argument for ExecState constructor.
+ Allow custom memory allocation control for Noncopyable class
+ https://bugs.webkit.org/show_bug.cgi?id=27879
- * kjs/JSGlobalObject.h:
- (JSC::JSGlobalObject::JSGlobalObject): Got rid of parameter
- for the init function.
+ Several classes which inherited from Noncopyable are instantiated by
+ operator new, so Noncopyable class has been inherited from FastAllocBase.
-2008-09-29 Geoffrey Garen <ggaren@apple.com>
+ * wtf/Noncopyable.h:
- Rubber-stamped by Cameron Zwarich.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=21225
- Machine::retrieveLastCaller should check for a NULL codeBlock
-
- In order to crash, you would need to call retrieveCaller in a situation
- where you had two host call frames in a row in the register file. I
- don't know how to make that happen, or if it's even possible, so I don't
- have a test case -- but better safe than sorry!
+2009-08-06 Mark Rowe <mrowe@apple.com>
- * VM/Machine.cpp:
- (JSC::Machine::retrieveLastCaller):
+ Rubber-stamped by Sam Weinig.
-2008-09-29 Geoffrey Garen <ggaren@apple.com>
+ Add explicit dependencies for our build verification scripts to ensure that they always run after linking has completed.
- Reviewed by Cameron Zwarich.
-
- Store the callee ScopeChain, not the caller ScopeChain, in the call frame
- header. Nix the "scopeChain" local variable and ExecState::m_scopeChain, and
- access the callee ScopeChain through the call frame header instead.
+ * JavaScriptCore.xcodeproj/project.pbxproj:
- Profit: call + return are simpler, because they don't have to update the
- "scopeChain" local variable, or ExecState::m_scopeChain.
-
- Because CTI keeps "r" in a register, reading the callee ScopeChain relative
- to "r" can be very fast, in any cases we care to optimize.
+2009-08-06 Mark Rowe <mrowe@apple.com>
- 0% speedup on empty function call benchmark. (5.5% speedup in bytecode.)
- 0% speedup on SunSpider. (7.5% speedup on controlflow-recursive.)
- 2% speedup on SunSpider --v8.
- 2% speedup on v8 benchmark.
+ Bring a little order to our otherwise out of control lives.
- * VM/CTI.cpp: Changed scope chain access to read the scope chain from
- the call frame header. Sped up op_ret by changing it not to fuss with
- the "scopeChain" local variable or ExecState::m_scopeChain.
+ * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CTI.h: Updated CTI trampolines not to take a ScopeChainNode*
- argument, since that's stored in the call frame header now.
+2009-08-06 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- * VM/Machine.cpp: Access "scopeChain" and "codeBlock" through new helper
- functions that read from the call frame header. Updated functions operating
- on ExecState::m_callFrame to account for / take advantage of the fact that
- Exec:m_callFrame is now never NULL.
-
- Fixed a bug in op_construct, where it would use the caller's default
- object prototype, rather than the callee's, when constructing a new object.
+ Reviewed by Darin Adler.
- * VM/Machine.h: Made some helper functions available. Removed
- ScopeChainNode* arguments to a lot of functions, since the ScopeChainNode*
- is now stored in the call frame header.
+ Allow custom memory allocation control for JavaScriptCore's PolymorphicAccessStructureList struct
+ https://bugs.webkit.org/show_bug.cgi?id=27877
- * VM/RegisterFile.h: Renamed "CallerScopeChain" to "ScopeChain", since
- that's what it is now.
+ Inherits PolymorphicAccessStructureList struct from FastAllocBase because it has been instantiated by
+ 'new' in JavaScriptCore/jit/JITStubs.cpp:1229.
- * kjs/DebuggerCallFrame.cpp: Updated for change to ExecState signature.
+ * bytecode/Instruction.h:
- * kjs/ExecState.cpp:
- * kjs/ExecState.h: Nixed ExecState::m_callFrame, along with the unused
- isGlobalObject function.
+2009-08-05 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- * kjs/JSGlobalObject.cpp:
- * kjs/JSGlobalObject.h: Gave the global object a fake call frame in
- which to store the global scope chain, since our code now assumes that
- it can always read the scope chain out of the ExecState's call frame.
+ Reviewed by Darin Adler.
-2008-09-29 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Allow custom memory allocation control for JavaScriptCore's ScopeNodeData struct
+ https://bugs.webkit.org/show_bug.cgi?id=27875
- Reviewed by Sam Weinig.
+ Inherits ScopeNodeData struct from FastAllocBase because it has been instantiated by
+ 'new' in JavaScriptCore/parser/Nodes.cpp:1848.
- Remove the isActivationObject() virtual method on JSObject and use
- StructureID information instead. This should be slightly faster, but
- isActivationObject() is only used in assertions and unwinding the stack
- for exceptions.
+ * parser/Nodes.h:
- * VM/Machine.cpp:
- (JSC::depth):
- (JSC::Machine::unwindCallFrame):
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_ret_activation):
- * kjs/JSActivation.cpp:
- * kjs/JSActivation.h:
- * kjs/JSObject.h:
+2009-08-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
-2008-09-29 Peter Gal <galpeter@inf.u-szeged.hu>
+ Reviewed by Gavin Barraclough.
- Reviewed and tweaked by Darin Adler.
+ Add floating point support for generic ARM port.
+ https://bugs.webkit.org/show_bug.cgi?id=24986
+
+ * assembler/ARMAssembler.cpp:
+ (JSC::ARMAssembler::doubleTransfer):
+ * assembler/ARMAssembler.h:
+ (JSC::ARM::):
+ (JSC::ARMAssembler::):
+ (JSC::ARMAssembler::faddd_r):
+ (JSC::ARMAssembler::fsubd_r):
+ (JSC::ARMAssembler::fmuld_r):
+ (JSC::ARMAssembler::fcmpd_r):
+ (JSC::ARMAssembler::fdtr_u):
+ (JSC::ARMAssembler::fdtr_d):
+ (JSC::ARMAssembler::fmsr_r):
+ (JSC::ARMAssembler::fsitod_r):
+ (JSC::ARMAssembler::fmstat):
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::):
+ (JSC::MacroAssemblerARM::supportsFloatingPoint):
+ (JSC::MacroAssemblerARM::loadDouble):
+ (JSC::MacroAssemblerARM::storeDouble):
+ (JSC::MacroAssemblerARM::addDouble):
+ (JSC::MacroAssemblerARM::subDouble):
+ (JSC::MacroAssemblerARM::mulDouble):
+ (JSC::MacroAssemblerARM::convertInt32ToDouble):
+ (JSC::MacroAssemblerARM::branchDouble):
+ * jit/JIT.h:
- Fix build for non-all-in-one platforms.
+2009-08-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
- * kjs/StringPrototype.cpp: Added missing ASCIICType.h include.
+ Reviewed by Gavin Barraclough.
-2008-09-29 Bradley T. Hughes <bradley.hughes@nokia.com>
+ Add JIT support for generic ARM port without optimizations.
+ https://bugs.webkit.org/show_bug.cgi?id=24986
- Reviewed by Simon Hausmann.
+ All JIT optimizations are disabled.
- Fix compilation with icpc
+ Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
+ Signed off by Gabor Loki <loki@inf.u-szeged.hu>
- * wtf/HashSet.h:
- (WTF::::find):
- (WTF::::contains):
+ * assembler/ARMAssembler.cpp:
+ (JSC::ARMAssembler::baseIndexTransfer32):
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::Imm32::Imm32):
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::store32):
+ (JSC::MacroAssemblerARM::move):
+ (JSC::MacroAssemblerARM::branch32):
+ (JSC::MacroAssemblerARM::add32):
+ (JSC::MacroAssemblerARM::sub32):
+ (JSC::MacroAssemblerARM::load32):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::getBytecodeIndex):
+ * jit/JIT.h:
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::restoreArgumentReference):
+ * jit/JITOpcodes.cpp:
+ * jit/JITStubs.cpp:
+ * jit/JITStubs.h:
+ (JSC::JITStackFrame::returnAddressSlot):
+ * wtf/Platform.h:
-2008-09-29 Thiago Macieira <thiago.macieira@nokia.com>
+2009-08-04 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Simon Hausmann.
+ Rubber Stamped by Oiver Hunt.
- Changed copyright from Trolltech ASA to Nokia.
-
- Nokia acquired Trolltech ASA, assets were transferred on September 26th 2008.
-
+ Revert r46643 since this breaks the Yarr::Interpreter running the v8 tests.
+ https://bugs.webkit.org/show_bug.cgi?id=27874
- * wtf/qt/MainThreadQt.cpp:
+ * yarr/RegexInterpreter.cpp:
+ (JSC::Yarr::Interpreter::allocDisjunctionContext):
+ (JSC::Yarr::Interpreter::freeDisjunctionContext):
+ (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
+ (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
-2008-09-29 Simon Hausmann <hausmann@webkit.org>
+2009-08-04 Oliver Hunt <oliver@apple.com>
- Reviewed by Lars Knoll.
+ PPC64 Build fix
- Don't accidentially install libJavaScriptCore.a for the build inside
- Qt.
+ * wtf/Platform.h:
- * JavaScriptCore.pro:
+2009-08-04 Benjamin C Meyer <benjamin.meyer@torchmobile.com>
-2008-09-28 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Reviewed by Adam Treat
- Reviewed by Maciej Stachowiak.
+ Explicitly include limits.h header when using INT_MAX and INT_MIN
- Bug 21200: Allow direct access to 'arguments' without using op_resolve
- <https://bugs.webkit.org/show_bug.cgi?id=21200>
+ * interpreter/Interpreter.cpp
- Allow fast access to the 'arguments' object by adding an extra slot to
- the callframe to store it.
+2009-08-03 Harald Fernengel <harald.fernengel@nokia.com>
- This is a 3.0% speedup on the V8 Raytrace benchmark.
+ Reviewed by Darin Adler.
- * JavaScriptCore.exp:
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::CodeGenerator):
- (JSC::CodeGenerator::registerFor):
- * VM/CodeGenerator.h:
- (JSC::CodeGenerator::registerFor):
- * VM/Machine.cpp:
- (JSC::Machine::initializeCallFrame):
- (JSC::Machine::dumpRegisters):
- (JSC::Machine::privateExecute):
- (JSC::Machine::retrieveArguments):
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_op_create_arguments):
- (JSC::Machine::cti_op_construct_JSConstruct):
- * VM/Machine.h:
- * VM/Opcode.h:
- * VM/RegisterFile.h:
- (JSC::RegisterFile::):
- * kjs/JSActivation.cpp:
- (JSC::JSActivation::mark):
- (JSC::JSActivation::argumentsGetter):
- * kjs/JSActivation.h:
- (JSC::JSActivation::JSActivationData::JSActivationData):
- * kjs/NodeInfo.h:
- * kjs/Parser.cpp:
- (JSC::Parser::didFinishParsing):
- * kjs/Parser.h:
- (JSC::Parser::parse):
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (JSC::ScopeNode::ScopeNode):
- (JSC::ProgramNode::ProgramNode):
- (JSC::ProgramNode::create):
- (JSC::EvalNode::EvalNode):
- (JSC::EvalNode::create):
- (JSC::FunctionBodyNode::FunctionBodyNode):
- (JSC::FunctionBodyNode::create):
- * kjs/nodes.h:
- (JSC::ScopeNode::usesArguments):
+ Fix compile error for ambigous call to abs()
+ https://bugs.webkit.org/show_bug.cgi?id=27873
-2008-09-28 Mark Rowe <mrowe@apple.com>
+ Fix ambiguity in abs(long int) call by calling labs() instead
- Reviewed by Sam Weinig.
+ * wtf/DateMath.cpp: replace call to abs() with labs()
- Add an ASCII fast-path to toLowerCase and toUpperCase.
+2009-08-03 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- The fast path speeds up the common case of an ASCII-only string by up to 60% while adding a less than 5% penalty
- to the less common non-ASCII case.
+ Reviewed by Eric Seidel.
- This also removes stringProtoFuncToLocaleLowerCase and stringProtoFuncToLocaleUpperCase, which were identical
- to the non-locale variants of the functions. toLocaleLowerCase and toLocaleUpperCase now use the non-locale
- variants of the functions directly.
+ [Qt] Consolidate common gcc flags to WebKit.pri
+ https://bugs.webkit.org/show_bug.cgi?id=27934
- * kjs/StringPrototype.cpp:
- (JSC::stringProtoFuncToLowerCase):
- (JSC::stringProtoFuncToUpperCase):
+ * JavaScriptCore.pro:
-2008-09-28 Mark Rowe <mrowe@apple.com>
+2009-08-03 Ada Chan <adachan@apple.com>
- Reviewed by Cameron Zwarich.
+ Fixed the Tiger build.
- Speed up parseInt and parseFloat.
+ * wtf/FastMalloc.cpp:
- Repeatedly indexing into a UString is slow, so retrieve a pointer into the underlying buffer once up front
- and use that instead. This is a 7% win on a parseInt/parseFloat micro-benchmark.
+2009-08-03 Ada Chan <adachan@apple.com>
- * kjs/JSGlobalObjectFunctions.cpp:
- (JSC::parseInt):
- (JSC::parseFloat):
+ Reviewed by Darin Adler.
-2008-09-28 Simon Hausmann <hausmann@webkit.org>
+ Don't use background thread to scavenge memory on Tiger until we figure out why it causes a crash.
+ https://bugs.webkit.org/show_bug.cgi?id=27900
- Reviewed by David Hyatt.
+ * wtf/FastMalloc.cpp:
- In Qt's initializeThreading re-use an existing thread identifier for the main
- thread if it exists.
+2009-08-03 Fumitoshi Ukai <ukai@chromium.org>
- currentThread() implicitly creates new identifiers and it could be that
- it is called before initializeThreading().
+ Reviewed by Jan Alonzo.
- * wtf/ThreadingQt.cpp:
- (WTF::initializeThreading):
+ Fix build break on Gtk/x86_64.
+ https://bugs.webkit.org/show_bug.cgi?id=27936
-2008-09-27 Keishi Hattori <casey.hattori@gmail.com>
+ Use JSVALUE64 for X86_64 LINUX, except Qt.
- Added Machine::retrieveCaller to the export list.
+ * wtf/Platform.h:
- Reviewed by Kevin McCullough and Tim Hatcher.
+2009-08-02 Xan Lopez <xlopez@igalia.com>
- * JavaScriptCore.exp: Added Machine::retrieveCaller.
+ Fix the GTK+ build.
-2008-09-27 Anders Carlsson <andersca@apple.com>
+ * wtf/Platform.h:
- Fix build.
+2009-08-02 Geoffrey Garen <ggaren@apple.com>
- * VM/CTI.cpp:
- (JSC::):
+ Reviewed by Sam Weinig.
-2008-09-27 Geoffrey Garen <ggaren@apple.com>
+ Disabled JSVALUE32_64 on Qt builds, since all layout tests mysteriously
+ crash with it enabled.
- Reviewed by Cameron Zwarich.
-
- https://bugs.webkit.org/show_bug.cgi?id=21175
+ * wtf/Platform.h:
- Store the callee CodeBlock, not the caller CodeBlock, in the call frame
- header. Nix the "codeBlock" local variable, and access the callee
- CodeBlock through the call frame header instead.
-
- Profit: call + return are simpler, because they don't have to update the
- "codeBlock" local variable.
-
- Because CTI keeps "r" in a register, reading the callee CodeBlock relative
- to "r" can be very fast, in any cases we care to optimize. Presently,
- no such cases seem important.
-
- Also, stop writing "dst" to the call frame header. CTI doesn't use it.
-
- 21.6% speedup on empty function call benchmark.
- 3.8% speedup on SunSpider --v8.
- 2.1% speedup on v8 benchmark.
- 0.7% speedup on SunSpider (6% speedup on controlflow-recursive).
-
- Small regression in bytecode, because currently every op_ret reads the
- callee CodeBlock to check needsFullScopeChain, and bytecode does not
- keep "r" in a register. On-balance, this is probably OK, since CTI is
- our high-performance execution model. Also, this should go away once
- we make needsFullScopeChain statically determinable at parse time.
-
- * VM/CTI.cpp:
- (JSC::CTI::compileOpCall): The speedup!
- (JSC::CTI::privateCompileSlowCases): ditto
-
- * VM/CTI.h:
- (JSC::): Fixed up magic trampoline constants to account for the nixed
- "codeBlock" argument.
- (JSC::CTI::execute): Changed trampoline function not to take a "codeBlock"
- argument, since codeBlock is now stored in the call frame header.
-
- * VM/Machine.cpp: Read the callee CodeBlock from the register file. Use
- a NULL CallerRegisters in the call frame header to signal a built-in
- caller, since CodeBlock is now never NULL.
+2009-08-02 Geoffrey Garen <ggaren@apple.com>
+
+ Qt build fix.
+
+ Added JSAPIValueWrapper.cpp to the build.
- * VM/Machine.h: Made some stand-alone functions Machine member functions
- so they could call the private codeBlock() accessor in the Register
- class, of which Machine is a friend. Renamed "CallerCodeBlock" to
- "CodeBlock", since it's no longer the caller's CodeBlock.
+ * JavaScriptCore.pri:
- * VM/RegisterFile.h: Marked some methods const to accommodate a
- const RegisterFile* being passed around in Machine.cpp.
+2009-08-02 Geoffrey Garen <ggaren@apple.com>
-2008-09-26 Jan Michael Alonzo <jmalonzo@webkit.org>
+ Windows build fix.
- Gtk build fix. Not reviewed.
+ Exported symbols for JSAPIValueWrapper.
- Narrow-down the target of the JavaScriptCore .lut.h generator so
- it won't try to create the WebCore .lut.hs.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- * GNUmakefile.am:
+2009-08-02 Geoffrey Garen <ggaren@apple.com>
-2008-09-26 Matt Lilek <webkit@mattlilek.com>
+ GTK build fix.
- Reviewed by Tim Hatcher.
+ * jit/JITStubs.cpp: #include <stdarg.h>, for a definition of va_start.
- Update FEATURE_DEFINES after ENABLE_CROSS_DOCUMENT_MESSAGING was removed.
+2009-08-02 Geoffrey Garen <ggaren@apple.com>
- * Configurations/JavaScriptCore.xcconfig:
+ Qt build fix.
+
+ * runtime/Collector.cpp: #include <limits.h>, for a definition of ULONG_MAX.
+
+2009-08-02 Geoffrey Garen <ggaren@apple.com>
+
+ Windows build fix: Nixed JSImmediate::prototype, JSImmediate::toObject,
+ and JSImmediate::toThisObject, and removed their exported symbols.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+ * runtime/JSImmediate.cpp:
+ * runtime/JSImmediate.h:
-2008-09-26 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+2009-08-02 Geoffrey Garen <ggaren@apple.com>
- Rubber-stamped by Anders Carlson.
+ Reviewed by Mark Rowe.
- Change the name 'sc' to 'scopeChainNode' in a few places.
+ Enabled JSVALUE32_64 by default on all platforms other than x86_64 (which uses JSVALUE64).
- * kjs/nodes.cpp:
- (JSC::EvalNode::generateCode):
- (JSC::FunctionBodyNode::generateCode):
- (JSC::ProgramNode::generateCode):
+ * wtf/Platform.h:
-2008-09-26 Sam Weinig <sam@webkit.org>
+2009-08-02 Kevin Ollivier <kevino@theolliviers.com>
- Reviewed by Darin Adler.
+ Reviewed by Jan Alonzo.
- Patch for https://bugs.webkit.org/show_bug.cgi?id=21152
- Speedup static property get/put
+ Script for building the JavaScriptCore library for wx.
+ https://bugs.webkit.org/show_bug.cgi?id=27619
- Convert getting/setting static property values to use static functions
- instead of storing an integer and switching in getValueProperty/putValueProperty.
+ * wscript: Added.
- * kjs/JSObject.cpp:
- (JSC::JSObject::deleteProperty):
- (JSC::JSObject::getPropertyAttributes):
- * kjs/MathObject.cpp:
- (JSC::MathObject::getOwnPropertySlot):
- * kjs/NumberConstructor.cpp:
- (JSC::numberConstructorNaNValue):
- (JSC::numberConstructorNegInfinity):
- (JSC::numberConstructorPosInfinity):
- (JSC::numberConstructorMaxValue):
- (JSC::numberConstructorMinValue):
- * kjs/PropertySlot.h:
- (JSC::PropertySlot::):
- * kjs/RegExpConstructor.cpp:
- (JSC::regExpConstructorDollar1):
- (JSC::regExpConstructorDollar2):
- (JSC::regExpConstructorDollar3):
- (JSC::regExpConstructorDollar4):
- (JSC::regExpConstructorDollar5):
- (JSC::regExpConstructorDollar6):
- (JSC::regExpConstructorDollar7):
- (JSC::regExpConstructorDollar8):
- (JSC::regExpConstructorDollar9):
- (JSC::regExpConstructorInput):
- (JSC::regExpConstructorMultiline):
- (JSC::regExpConstructorLastMatch):
- (JSC::regExpConstructorLastParen):
- (JSC::regExpConstructorLeftContext):
- (JSC::regExpConstructorRightContext):
- (JSC::setRegExpConstructorInput):
- (JSC::setRegExpConstructorMultiline):
- (JSC::RegExpConstructor::setInput):
- (JSC::RegExpConstructor::setMultiline):
- (JSC::RegExpConstructor::multiline):
- * kjs/RegExpConstructor.h:
- * kjs/RegExpObject.cpp:
- (JSC::regExpObjectGlobal):
- (JSC::regExpObjectIgnoreCase):
- (JSC::regExpObjectMultiline):
- (JSC::regExpObjectSource):
- (JSC::regExpObjectLastIndex):
- (JSC::setRegExpObjectLastIndex):
- * kjs/RegExpObject.h:
- (JSC::RegExpObject::setLastIndex):
- (JSC::RegExpObject::lastIndex):
- (JSC::RegExpObject::RegExpObjectData::RegExpObjectData):
- * kjs/StructureID.cpp:
- (JSC::StructureID::getEnumerablePropertyNames):
- * kjs/create_hash_table:
- * kjs/lexer.cpp:
- (JSC::Lexer::lex):
- * kjs/lookup.cpp:
- (JSC::HashTable::createTable):
- (JSC::HashTable::deleteTable):
- (JSC::setUpStaticFunctionSlot):
- * kjs/lookup.h:
- (JSC::HashEntry::initialize):
- (JSC::HashEntry::setKey):
- (JSC::HashEntry::key):
- (JSC::HashEntry::attributes):
- (JSC::HashEntry::function):
- (JSC::HashEntry::functionLength):
- (JSC::HashEntry::propertyGetter):
- (JSC::HashEntry::propertyPutter):
- (JSC::HashEntry::lexerValue):
- (JSC::HashEntry::):
- (JSC::HashTable::entry):
- (JSC::getStaticPropertySlot):
- (JSC::getStaticValueSlot):
- (JSC::lookupPut):
-
-2008-09-26 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Maciej Stachowiak & Oliver Hunt.
-
- Add support for reusing temporary JSNumberCells. This change is based on the observation
- that if the result of certain operations is a JSNumberCell and is consumed by a subsequent
- operation that would produce a JSNumberCell, we can reuse the object rather than allocating
- a fresh one. E.g. given the expression ((a * b) * c), we can statically determine that
- (a * b) will have a numeric result (or else it will have thrown an exception), so the result
- will either be a JSNumberCell or a JSImmediate.
-
- This patch changes three areas of JSC:
- * The AST now tracks type information about the result of each node.
- * This information is consumed in bytecode compilation, and certain bytecode operations
- now carry the statically determined type information about their operands.
- * CTI uses the information in a number of fashions:
- * Where an operand to certain arithmetic operations is reusable, it will plant code
- to try to perform the operation in JIT code & reuse the cell, where appropriate.
- * Where it can be statically determined that an operand can only be numeric (typically
- the result of another arithmetic operation) the code will not redundantly check that
- the JSCell is a JSNumberCell.
- * Where either of the operands to an add are non-numeric do not plant an optimized
- arithmetic code path, just call straight out to the C function.
-
- +6% Sunspider (10% progression on 3D, 16% progression on math, 60% progression on access-nbody),
- +1% v8-tests (improvements in raytrace & crypto)
-
- * VM/CTI.cpp: Add optimized code generation with reuse of temporary JSNumberCells.
- * VM/CTI.h:
- * kjs/JSNumberCell.h:
- * masm/X86Assembler.h:
-
- * VM/CodeBlock.cpp: Add type information to specific bytecodes.
- * VM/CodeGenerator.cpp:
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
-
- * kjs/nodes.cpp: Track static type information for nodes.
- * kjs/nodes.h:
- * kjs/ResultDescriptor.h: (Added)
- * JavaScriptCore.xcodeproj/project.pbxproj:
+2009-08-02 Yong Li <yong.li@torchmobile.com>
-2008-09-26 Yichao Yin <yichao.yin@torchmobile.com.cn>
+ Reviewed by George Staikos.
- Reviewed by George Staikos, Maciej Stachowiak.
+ DateMath depends on strftime and localtime, which need to be imported manually on WinCE
+ https://bugs.webkit.org/show_bug.cgi?id=26558
- Add utility functions needed for upcoming WML code.
+ * wtf/DateMath.cpp:
- * wtf/ASCIICType.h:
- (WTF::isASCIIPrintable):
+2009-08-01 David Kilzer <ddkilzer@apple.com>
-2008-09-26 Geoffrey Garen <ggaren@apple.com>
+ wtf/Threading.h: added include of Platform.h
- Reviewed by Darin Adler.
-
- Reverted the part of r36614 that used static data because static data
- is not thread-safe.
+ Reviewed by Mark Rowe.
-2008-09-26 Geoffrey Garen <ggaren@apple.com>
+ * wtf/Threading.h: Added #include "Platform.h" since this header
+ uses PLATFORM() and other macros.
- Reviewed by Maciej Stachowiak.
-
- Removed dynamic check for whether the callee needs an activation object.
- Replaced with callee code to create the activation object.
+2009-08-01 Mark Rowe <mrowe@apple.com>
- 0.5% speedup on SunSpider.
- No change on v8 benchmark. (Might be a speedup, but it's in range of the
- variance.)
+ Rubber-stamped by Oliver Hunt.
- 0.7% speedup on v8 benchmark in bytecode.
- 1.3% speedup on empty call benchmark in bytecode.
+ Roll out r46668 as it was misinformed. ScopeChain is only used with placement new.
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass): Added support for op_init_activation,
- the new opcode that specifies that the callee's initialization should
- create an activation object.
- (JSC::CTI::privateCompile): Removed previous code that did a similar
- thing in an ad-hoc way.
+ * runtime/ScopeChain.h:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump): Added a case for dumping op_init_activation.
+2009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::generate): Added fixup code to change op_init to
- op_init_activation if necessary. (With a better parser, we would know
- which to use from the beginning.)
+ Allow custom memory allocation control for JavaScriptCore's HashMap class
+ http://bugs.webkit.org/show_bug.cgi?id=27871
- * VM/Instruction.h:
- (JSC::Instruction::Instruction):
- (WTF::): Faster traits for the instruction vector. An earlier version
- of this patch relied on inserting at the beginning of the vector, and
- depended on this change for speed.
+ Inherits HashMap class from FastAllocBase because it has been
+ instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:148.
- * VM/Machine.cpp:
- (JSC::Machine::execute): Removed clients of setScopeChain, the old
- abstraction for dynamically checking for whether an activation object
- needed to be created.
- (JSC::Machine::privateExecute): ditto
+ * wtf/RefPtrHashMap.h:
+ (WTF::):
- (JSC::Machine::cti_op_push_activation): Renamed this function from
- cti_vm_updateScopeChain, and made it faster by removing the call to
- setScopeChain.
- * VM/Machine.h:
+2009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- * VM/Opcode.h: Declared op_init_activation.
+ Allow custom memory allocation control for JavaScriptCore's ScopeChain class
+ https://bugs.webkit.org/show_bug.cgi?id=27834
-2008-09-24 Geoffrey Garen <ggaren@apple.com>
+ Inherits ScopeChain class from FastAllocBase because it has been
+ instantiated by 'new' in JavaScriptCore/runtime/JSFunction.h:109.
- Reviewed by Maciej Stachowiak.
-
- Move most of the return code back into the callee, now that the callee
- doesn't have to calculate anything dynamically.
-
- 11.5% speedup on empty function call benchmark.
-
- SunSpider says 0.3% faster. SunSpider --v8 says no change.
+ * runtime/ScopeChain.h:
- * VM/CTI.cpp:
- (JSC::CTI::compileOpCall):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
+2009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
-2008-09-24 Sam Weinig <sam@webkit.org>
+ Reviewed by Darin Adler.
- Reviewed by Maciej Stachowiak.
+ Allow custom memory allocation control for JavaScriptCore's RegExpConstructorPrivate struct
+ https://bugs.webkit.org/show_bug.cgi?id=27833
- Remove staticFunctionGetter. There is only one remaining user of
- staticFunctionGetter and it can be converted to use setUpStaticFunctionSlot.
+ Inherits RegExpConstructorPrivate class from FastAllocBase because it has been
+ instantiated by 'new' in JavaScriptCore/runtime/RegExpConstructor.cpp:152.
- * JavaScriptCore.exp:
- * kjs/lookup.cpp:
- * kjs/lookup.h:
+ * runtime/RegExpConstructor.cpp:
-2008-09-24 Maciej Stachowiak <mjs@apple.com>
+2009-07-31 Yong Li <yong.li@torchmobile.com>
- Reviewed by Oliver Hunt.
-
- - inline JIT fast case of op_neq
- - remove extra level of function call indirection from slow cases of eq and neq
-
- 1% speedup on Richards
-
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_eq):
- (JSC::Machine::cti_op_neq):
- * kjs/operations.cpp:
- (JSC::equal):
- (JSC::equalSlowCase):
- * kjs/operations.h:
- (JSC::equalSlowCaseInline):
+ Reviewed by George Staikos.
-2008-09-24 Sam Weinig <sam@webkit.org>
+ Resurrect the old GetTickCount implementation of currentTime, controlled by WTF_USE_QUERY_PERFORMANCE_COUNTER
+ currentSystemTime taken from older WebKit; currentTime written by Yong Li <yong.li@torchmobile.com>; cleanup by Joe Mason <joe.mason@torchmobile.com>
+ https://bugs.webkit.org/show_bug.cgi?id=27848
- Reviewed by Darin Adler.
+ * wtf/CurrentTime.cpp:
+ (WTF::currentSystemTime): get current time with GetCurrentFT
+ (WTF::currentTime): track msec elapsed since first currentSystemTime call using GetTickCount
+ * wtf/Platform.h:
- Fix for https://bugs.webkit.org/show_bug.cgi?id=21080
- <rdar://problem/6243534>
- Crash below Function.apply when using a runtime array as the argument list
+2009-07-31 Ada Chan <adachan@apple.com>
- Test: plugins/bindings-array-apply-crash.html
+ Fixes the Windows release-PGO build.
- * kjs/FunctionPrototype.cpp:
- (JSC::functionProtoFuncApply): Revert to the slow case if the object inherits from
- JSArray (via ClassInfo) but is not a JSArray.
+ Reviewed by Jon Honeycutt.
-2008-09-24 Kevin McCullough <kmccullough@apple.com>
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj: Suppresses the warning about unreachable code that we get by adding "return 0" to WTF::TCMalloc_PageHeap::runScavengerThread().
+ * wtf/FastMalloc.cpp:
+ (WTF::TCMalloc_PageHeap::runScavengerThread): Fixes the error about the method not returning a value in the release-PGO build.
- Style change.
+2009-07-31 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- * kjs/nodes.cpp:
- (JSC::statementListEmitCode):
+ Change malloc to fastMalloc and free to fastFree in Yarr's RegexInterpreter.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=27874
-2008-09-24 Kevin McCullough <kmccullough@apple.com>
+ Use fastMalloc and fastFree instead of malloc and free in RegexInterpreter.cpp's methods.
- Reviewed by Geoff.
+ * yarr/RegexInterpreter.cpp:
+ (JSC::Yarr::Interpreter::allocDisjunctionContext):
+ (JSC::Yarr::Interpreter::freeDisjunctionContext):
+ (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext):
+ (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext):
- Bug 21031: Breakpoints in the condition of loops only breaks the first
- time
- - Now when setting breakpoints in the condition of a loop (for, while,
- for in, and do while) will successfully break each time throught the
- loop.
- - For 'for' loops we need a little more complicated behavior that cannot
- be accomplished without some more significant changes:
- https://bugs.webkit.org/show_bug.cgi?id=21073
+2009-07-30 Xan Lopez <xlopez@igalia.com>
- * kjs/nodes.cpp:
- (JSC::statementListEmitCode): We don't want to blindly emit a debug hook
- at the first line of loops, instead let the loop emit the debug hooks.
- (JSC::DoWhileNode::emitCode):
- (JSC::WhileNode::emitCode):
- (JSC::ForNode::emitCode):
- (JSC::ForInNode::emitCode):
- * kjs/nodes.h:
- (JSC::StatementNode::):
- (JSC::DoWhileNode::):
- (JSC::WhileNode::):
- (JSC::ForInNode::):
+ Reviewed by Jan Alonzo.
-2008-09-24 Geoffrey Garen <ggaren@apple.com>
+ Fix compiler warning.
- Reviewed by Darin Adler.
-
- Fixed <rdar://problem/5605532> Need a SPI for telling JS the size of
- the objects it retains
+ GCC does not like C++-style comments in preprocessor directives.
- * API/tests/testapi.c: Test the new SPI a little.
+ * wtf/Platform.h:
- * API/JSSPI.cpp: Add the new SPI.
- * API/JSSPI.h: Add the new SPI.
- * JavaScriptCore.exp: Add the new SPI.
- * JavaScriptCore.xcodeproj/project.pbxproj: Add the new SPI.
+2009-07-30 John McCall <rjmccall@apple.com>
-2008-09-24 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Gavin Barraclough.
- Reviewed by Darin Adler.
+ Optimize the X86_64 trampolines: avoid the need for filler arguments
+ and move the stub-args area closer to the stack pointer.
- * API/JSBase.h: Filled in some missing function names.
+ * jit/JIT.h: adjust patch offsets because of slight code-size change
+ * jit/JITCode.h:
+ (JSC::JITCode::execute): don't pass filler args
+ * jit/JITStubs.cpp:
+ (ctiTrampoline): (X86_64): push args onto stack, use args directly
+ (ctiVMThrowTrampoline): (X86_64): adjust %rsp by correct displacement
+ (ctiOpThrowNotCaught): (X86_64): adjust %rsp by correct displacement
+ * jit/JITStubs.h:
+ (JITStackFrame): (X86_64): move args area earlier
+ (ctiTrampoline): remove filler args from prototype
-2008-09-24 Geoffrey Garen <ggaren@apple.com>
+2009-07-30 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Cameron Zwarich.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=21057
- Crash in RegisterID::deref() running fast/canvas/canvas-putImageData.html
+ Temporarily revert r46618 since this is b0rking on Linux.
- * VM/CodeGenerator.h: Changed declaration order to ensure the
- m_lastConstant, which is a RefPtr that points into m_calleeRegisters,
- has its destructor called before the destructor for m_calleeRegisters.
+2009-07-23 Gavin Barraclough <barraclough@apple.com>
-2008-09-24 Darin Adler <darin@apple.com>
+ Reviewed by Oliver Hunt.
- Reviewed by Sam Weinig.
+ Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification.
+ ( https://bugs.webkit.org/show_bug.cgi?id=27635 )
- - https://bugs.webkit.org/show_bug.cgi?id=21047
- speed up ret_activation with inlining
+ This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%.
+ (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled).
- About 1% on v8-raytrace.
+ * bytecode/CodeBlock.cpp:
+ (JSC::printStructureStubInfo):
+ - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
- * JavaScriptCore.exp: Removed JSVariableObject::setRegisters.
+ * bytecode/CodeBlock.h:
+ (JSC::):
+ (JSC::CallLinkInfo::seenOnce):
+ (JSC::CallLinkInfo::setSeen):
+ (JSC::MethodCallLinkInfo::seenOnce):
+ (JSC::MethodCallLinkInfo::setSeen):
+ - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once.
- * kjs/JSActivation.cpp: Moved copyRegisters to the header to make it inline.
- * kjs/JSActivation.h:
- (JSC::JSActivation::copyRegisters): Moved here. Also removed the registerArraySize
- argument to setRegisters, since the object doesn't need to store the number of
- registers.
+ * bytecode/StructureStubInfo.cpp:
+ (JSC::StructureStubInfo::deref):
+ - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::reset): Removed unnecessary clearing left over from when we
- used this on objects that weren't brand new. These days, this function is really
- just part of the constructor.
+ * bytecode/StructureStubInfo.h:
+ (JSC::StructureStubInfo::StructureStubInfo):
+ (JSC::StructureStubInfo::initGetByIdSelf):
+ (JSC::StructureStubInfo::initGetByIdProto):
+ (JSC::StructureStubInfo::initGetByIdChain):
+ (JSC::StructureStubInfo::initGetByIdSelfList):
+ (JSC::StructureStubInfo::initGetByIdProtoList):
+ (JSC::StructureStubInfo::initPutByIdTransition):
+ (JSC::StructureStubInfo::initPutByIdReplace):
+ (JSC::StructureStubInfo::seenOnce):
+ (JSC::StructureStubInfo::setSeen):
+ - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once.
- * kjs/JSGlobalObject.h: Added registerArraySize to JSGlobalObjectData, since
- JSVariableObjectData no longer needs it. Added a setRegisters override here
- that handles storing the size.
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitGetById):
+ (JSC::BytecodeGenerator::emitPutById):
+ - Make StructureStubInfo store the type as an integer, rather than an OpcodeID.
- * kjs/JSStaticScopeObject.h: Removed code to set registerArraySize, since it
- no longer exists.
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ (JSC::JIT::unlinkCall):
+ - Remove the "don't lazy link" stage of calls.
- * kjs/JSVariableObject.cpp: Moved copyRegisterArray and setRegisters to the
- header to make them inline.
- * kjs/JSVariableObject.h: Removed registerArraySize from JSVariableObjectData,
- since it was only used for the global object.
- (JSC::JSVariableObject::copyRegisterArray): Moved here ot make it inline.
- (JSC::JSVariableObject::setRegisters): Moved here to make it inline. Also
- removed the code to set registerArraySize and changed an if statement into
- an assert to save an unnnecessary branch.
+ * jit/JIT.h:
+ (JSC::JIT::compileCTIMachineTrampolines):
+ - Remove the "don't lazy link" stage of calls.
-2008-09-24 Maciej Stachowiak <mjs@apple.com>
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallSlowCase):
+ - Remove the "don't lazy link" stage of calls.
- Reviewed by Oliver Hunt.
-
- - inline PropertyMap::getOffset to speed up polymorphic lookups
-
- ~1.5% speedup on v8 benchmark
- no effect on SunSpider
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::JITThunks):
+ (JSC::JITThunks::tryCachePutByID):
+ (JSC::JITThunks::tryCacheGetByID):
+ (JSC::JITStubs::DEFINE_STUB_FUNCTION):
+ (JSC::JITStubs::getPolymorphicAccessStructureListSlot):
+ - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
- * JavaScriptCore.exp:
- * kjs/PropertyMap.cpp:
- * kjs/PropertyMap.h:
- (JSC::PropertyMap::getOffset):
+ * jit/JITStubs.h:
+ (JSC::JITThunks::ctiStringLengthTrampoline):
+ (JSC::JITStubs::):
+ - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check.
-2008-09-24 Jan Michael Alonzo <jmalonzo@webkit.org>
+ * wtf/PtrAndFlags.h:
+ (WTF::PtrAndFlags::PtrAndFlags):
+ (WTF::PtrAndFlags::operator!):
+ (WTF::PtrAndFlags::operator->):
+ - Add ! and -> operators, add constuctor with pointer argument.
- Reviewed by Alp Toker.
+2009-07-30 Geoffrey Garen <ggaren@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=20992
- Build fails on GTK+ Mac OS
+ Reviewed by Gavin Barraclough.
- * wtf/ThreadingGtk.cpp: Remove platform ifdef as suggested by
- Richard Hult.
- (WTF::initializeThreading):
+ Fixed failing tests seen on Windows buildbot.
-2008-09-23 Oliver Hunt <oliver@apple.com>
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * jit/JITStubs.h:
+ (JSC::): Use "int" instead of "bool" to guarantee a 32-bit result,
+ regardless of compiler. gcc on mac uses 32-bit values for bool,
+ but gcc on linux and MSVC on Windows use 8-bit values.
- Reviewed by Maciej Stachowiak.
+2009-07-30 Geoffrey Garen <ggaren@apple.com>
- Bug 19968: Slow Script at www.huffingtonpost.com
- <https://bugs.webkit.org/show_bug.cgi?id=19968>
-
- Finally found the cause of this accursed issue. It is triggered
- by synchronous creation of a new global object from JS. The new
- global object resets the timer state in this execution group's
- Machine, taking timerCheckCount to 0. Then when JS returns the
- timerCheckCount is decremented making it non-zero. The next time
- we execute JS we will start the timeout counter, however the non-zero
- timeoutCheckCount means we don't reset the timer information. This
- means that the timeout check is now checking the cumulative time
- since the creation of the global object rather than the time since
- JS was last entered. At this point the slow script dialog is guaranteed
- to eventually be displayed incorrectly unless a page is loaded
- asynchronously (which will reset everything into a sane state).
-
- The fix for this is rather trivial -- the JSGlobalObject constructor
- should not be resetting the machine timer state.
-
- * VM/Machine.cpp:
- (JSC::Machine::Machine):
- Now that we can't rely on the GlobalObject initialising the timeout
- state, we do it in the Machine constructor.
-
- * VM/Machine.h:
- (JSC::Machine::stopTimeoutCheck):
- Add assertions to guard against this happening.
-
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::init):
- Don't reset the timeout state.
+ Windows build fix: added missing symbols on Windows.
-2008-09-23 Geoffrey Garen <ggaren@apple.com>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Reviewed by Oliver Hunt.
-
- Fixed https://bugs.webkit.org/show_bug.cgi?id=21038 | <rdar://problem/6240812>
- Uncaught exceptions in regex replace callbacks crash webkit
-
- This was a combination of two problems:
-
- (1) the replace function would continue execution after an exception
- had been thrown.
-
- (2) In some cases, the Machine would return 0 in the case of an exception,
- despite the fact that a few clients dereference the Machine's return
- value without first checking for an exception.
-
- * VM/Machine.cpp:
- (JSC::Machine::execute):
-
- ^ Return jsNull() instead of 0 in the case of an exception, since some
- clients depend on using our return value.
-
- ^ ASSERT that execution does not continue after an exception has been
- thrown, to help catch problems like this in the future.
+2009-07-30 Geoffrey Garen <ggaren@apple.com>
- * kjs/StringPrototype.cpp:
- (JSC::stringProtoFuncReplace):
-
- ^ Stop execution if an exception has been thrown.
+ Windows build fix: removed stale symbols on Windows.
-2008-09-23 Geoffrey Garen <ggaren@apple.com>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Try to fix the windows build.
+=== End merge of nitro-extreme branch 2009-07-30 ===
- * VM/CTI.cpp:
- (JSC::CTI::compileOpCall):
- (JSC::CTI::privateCompileMainPass):
+2009-07-20 Geoffrey Garen <ggaren@apple.com>
-2008-09-23 Alp Toker <alp@nuanti.com>
+ Fixed a post-review typo in r46066 that caused tons of test failures.
+
+ SunSpider reports no change.
- Build fix.
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::JSArray): Initialize the full vector capacity, to avoid
+ uninitialized members at the end.
- * VM/CTI.h:
+2009-07-20 Geoffrey Garen <ggaren@apple.com>
-2008-09-23 Geoffrey Garen <ggaren@apple.com>
+ Windows WebKit build fix: Added some missing exports.
- Reviewed by Darin Adler.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- * wtf/Platform.h: Removed duplicate #if.
+2009-07-17 Geoffrey Garen <ggaren@apple.com>
-2008-09-23 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Sam Weinig.
- Reviewed by Darin Adler.
-
- Changed the layout of the call frame from
-
- { header, parameters, locals | constants, temporaries }
-
- to
-
- { parameters, header | locals, constants, temporaries }
+ Get the branch working on windows.
+ https://bugs.webkit.org/show_bug.cgi?id=27391
- This simplifies function entry+exit, and enables a number of future
- optimizations.
-
- 13.5% speedup on empty call benchmark for bytecode; 23.6% speedup on
- empty call benchmark for CTI.
-
- SunSpider says no change. SunSpider --v8 says 1% faster.
+ SunSpider says 0.3% faster.
- * VM/CTI.cpp:
-
- Added a bit of abstraction for calculating whether a register is a
- constant, since this patch changes that calculation:
- (JSC::CTI::isConstant):
- (JSC::CTI::getConstant):
- (JSC::CTI::emitGetArg):
- (JSC::CTI::emitGetPutArg):
- (JSC::CTI::getConstantImmediateNumericArg):
-
- Updated for changes to callframe header location:
- (JSC::CTI::emitPutToCallFrameHeader):
- (JSC::CTI::emitGetFromCallFrameHeader):
- (JSC::CTI::printOpcodeOperandTypes):
-
- Renamed to spite Oliver:
- (JSC::CTI::emitInitRegister):
-
- Added an abstraction for emitting a call through a register, so that
- calls through registers generate exception info, too:
- (JSC::CTI::emitCall):
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Updated
+ MSVC export lists to fix linker errors.
- Updated to match the new callframe header layout, and to support calls
- through registers, which have no destination address:
- (JSC::CTI::compileOpCall):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added / removed
+ new / old project files.
- * VM/CTI.h:
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines): Used #pragma pack to tell
+ MSVC that these structures represent actual memory layout, and should not be
+ automatically aligned. Changed the return value load to load a 64bit quantity
+ into the canonical registers.
- More of the above:
- (JSC::CallRecord::CallRecord):
+ * jit/JIT.h: Moved OBJECT_OFFSETOF definition to StdLibExtras.h because
+ it's needed by more than just the JIT, and it supplements a standard library
+ macro (offsetof).
- * VM/CodeBlock.cpp:
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallInitializeCallFrame): Fixed an incorrectly signed
+ cast to resolve an MSVC warning.
- Updated for new register layout:
- (JSC::registerName):
- (JSC::CodeBlock::dump):
+ * jit/JITStubs.h: Used #pragma pack to tell MSVC that these structures
+ represent actual memory layout, and should not be automatically aligned.
- * VM/CodeBlock.h:
-
- Updated CodeBlock to track slightly different information about the
- register frame, and tweaked the style of an ASSERT_NOT_REACHED.
- (JSC::CodeBlock::CodeBlock):
- (JSC::CodeBlock::getStubInfo):
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::JSArray): Replaced memset_pattern8 with a for loop, since
+ memset_pattern8 is not portable. (I verified that this version of the loop
+ gives the best performance / generated code in GCC.)
- * VM/CodeGenerator.cpp:
-
- Added some abstraction around constant register allocation, since this
- patch changes it, changed codegen to account for the new callframe
- layout, and added abstraction around register fetching code
- that used to assume that all local registers lived at negative indices,
- since vars now live at positive indices:
- (JSC::CodeGenerator::generate):
- (JSC::CodeGenerator::addVar):
- (JSC::CodeGenerator::addGlobalVar):
- (JSC::CodeGenerator::allocateConstants):
- (JSC::CodeGenerator::CodeGenerator):
- (JSC::CodeGenerator::addParameter):
- (JSC::CodeGenerator::registerFor):
- (JSC::CodeGenerator::constRegisterFor):
- (JSC::CodeGenerator::newRegister):
- (JSC::CodeGenerator::newTemporary):
- (JSC::CodeGenerator::highestUsedRegister):
- (JSC::CodeGenerator::addConstant):
-
- ASSERT that our caller referenced the registers it passed to us.
- Otherwise, we might overwrite them with parameters:
- (JSC::CodeGenerator::emitCall):
- (JSC::CodeGenerator::emitConstruct):
+ * runtime/JSObject.h:
+ (JSC::JSObject::JSObject): Removed accidental usage of FIELD_OFFSET --
+ OBJECT_OFFSETOF is our new macro name. (FIELD_OFFSET conflicts with a
+ definition in winnt.h.)
- * VM/CodeGenerator.h:
+ * runtime/JSValue.cpp: Added some headers needed by non-all-in-one builds.
- Added some abstraction for getting a RegisterID for a given index,
- since the rules are a little weird:
- (JSC::CodeGenerator::registerFor):
+ * runtime/JSValue.h:
+ (JSC::JSValue::): Made the tag signed, to match MSVC's signed enum values.
+ (GCC doesn't seem to care one way or the other.)
- * VM/Machine.cpp:
+ * wtf/MainThread.cpp: Moved the StdLibExtras.h #include -- I did this a
+ while ago to resolve a conflict with winnt.h. I can't remember if it's truly
+ still needed, but what the heck.
- Utility function to transform a machine return PC to a virtual machine
- return VPC, for the sake of stack unwinding, since both PCs are stored
- in the same location now:
- (JSC::vPCForPC):
+ * wtf/StdLibExtras.h: Moved OBJECT_OFFSETOF definition here.
- Tweaked to account for new call frame:
- (JSC::Machine::initializeCallFrame):
-
- Tweaked to account for registerOffset supplied by caller:
- (JSC::slideRegisterWindowForCall):
-
- Tweaked to account for new register layout:
- (JSC::scopeChainForCall):
- (JSC::Machine::callEval):
- (JSC::Machine::dumpRegisters):
- (JSC::Machine::unwindCallFrame):
- (JSC::Machine::execute):
-
- Changed op_call and op_construct to implement the new calling convention:
- (JSC::Machine::privateExecute):
-
- Tweaked to account for the new register layout:
- (JSC::Machine::retrieveArguments):
- (JSC::Machine::retrieveCaller):
- (JSC::Machine::retrieveLastCaller):
- (JSC::Machine::callFrame):
- (JSC::Machine::getArgumentsData):
-
- Changed CTI call helpers to implement the new calling convention:
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_op_call_NotJSFunction):
- (JSC::Machine::cti_op_ret_activation):
- (JSC::Machine::cti_op_ret_profiler):
- (JSC::Machine::cti_op_construct_JSConstruct):
- (JSC::Machine::cti_op_construct_NotJSConstruct):
- (JSC::Machine::cti_op_call_eval):
-
- * VM/Machine.h:
-
- * VM/Opcode.h:
-
- Renamed op_initialise_locals to op_init, because this opcode
- doesn't initialize all locals, and it doesn't initialize only locals.
- Also, to spite Oliver.
+2009-07-06 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig (?).
- * VM/RegisterFile.h:
+ Fixed an assertion seen during the stress test.
- New call frame enumeration values:
- (JSC::RegisterFile::):
-
- Simplified the calculation of whether a RegisterID is a temporary,
- since we can no longer assume that all positive non-constant registers
- are temporaries:
- * VM/RegisterID.h:
- (JSC::RegisterID::RegisterID):
- (JSC::RegisterID::setTemporary):
- (JSC::RegisterID::isTemporary):
-
- Renamed firstArgumentIndex to firstParameterIndex because the assumption
- that this variable pertained to the actual arguments supplied by the
- caller caused me to write some buggy code:
- * kjs/Arguments.cpp:
- (JSC::ArgumentsData::ArgumentsData):
- (JSC::Arguments::Arguments):
- (JSC::Arguments::fillArgList):
- (JSC::Arguments::getOwnPropertySlot):
- (JSC::Arguments::put):
+ Don't assume that, if op1 is constant, op2 is not, and vice versa. Sadly,
+ not all constants get folded.
- Updated for new call frame layout:
- * kjs/DebuggerCallFrame.cpp:
- (JSC::DebuggerCallFrame::functionName):
- (JSC::DebuggerCallFrame::type):
- * kjs/DebuggerCallFrame.h:
-
- Changed the activation object to account for the fact that a call frame
- header now sits between parameters and local variables. This change
- requires all variable objects to do their own marking, since they
- now use their register storage differently:
- * kjs/JSActivation.cpp:
- (JSC::JSActivation::mark):
- (JSC::JSActivation::copyRegisters):
- (JSC::JSActivation::createArgumentsObject):
- * kjs/JSActivation.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_jnless):
+ (JSC::JIT::emitSlow_op_jnless):
+ (JSC::JIT::emit_op_jnlesseq):
+ (JSC::JIT::emitSlow_op_jnlesseq):
- Updated global object to use the new interfaces required by the change
- to JSActivation above:
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::reset):
- (JSC::JSGlobalObject::mark):
- (JSC::JSGlobalObject::copyGlobalsFrom):
- (JSC::JSGlobalObject::copyGlobalsTo):
- * kjs/JSGlobalObject.h:
- (JSC::JSGlobalObject::addStaticGlobals):
-
- Updated static scope object to use the new interfaces required by the
- change to JSActivation above:
- * kjs/JSStaticScopeObject.cpp:
- (JSC::JSStaticScopeObject::mark):
- (JSC::JSStaticScopeObject::~JSStaticScopeObject):
- * kjs/JSStaticScopeObject.h:
- (JSC::JSStaticScopeObject::JSStaticScopeObject):
- (JSC::JSStaticScopeObject::d):
-
- Updated variable object to use the new interfaces required by the
- change to JSActivation above:
- * kjs/JSVariableObject.cpp:
- (JSC::JSVariableObject::copyRegisterArray):
- (JSC::JSVariableObject::setRegisters):
- * kjs/JSVariableObject.h:
-
- Changed the bit twiddling in symbol table not to assume that all indices
- are negative, since they can be positive now:
- * kjs/SymbolTable.h:
- (JSC::SymbolTableEntry::SymbolTableEntry):
- (JSC::SymbolTableEntry::isNull):
- (JSC::SymbolTableEntry::getIndex):
- (JSC::SymbolTableEntry::getAttributes):
- (JSC::SymbolTableEntry::setAttributes):
- (JSC::SymbolTableEntry::isReadOnly):
- (JSC::SymbolTableEntry::pack):
- (JSC::SymbolTableEntry::isValidIndex):
-
- Changed call and construct nodes to ref their functions and/or bases,
- so that emitCall/emitConstruct doesn't overwrite them with parameters.
- Also, updated for rename to registerFor:
- * kjs/nodes.cpp:
- (JSC::ResolveNode::emitCode):
- (JSC::NewExprNode::emitCode):
- (JSC::EvalFunctionCallNode::emitCode):
- (JSC::FunctionCallValueNode::emitCode):
- (JSC::FunctionCallResolveNode::emitCode):
- (JSC::FunctionCallBracketNode::emitCode):
- (JSC::FunctionCallDotNode::emitCode):
- (JSC::PostfixResolveNode::emitCode):
- (JSC::DeleteResolveNode::emitCode):
- (JSC::TypeOfResolveNode::emitCode):
- (JSC::PrefixResolveNode::emitCode):
- (JSC::ReadModifyResolveNode::emitCode):
- (JSC::AssignResolveNode::emitCode):
- (JSC::ConstDeclNode::emitCodeSingle):
- (JSC::ForInNode::emitCode):
+2009-07-06 Geoffrey Garen <ggaren@apple.com>
- Added abstraction for getting exception info out of a call through a
- register:
- * masm/X86Assembler.h:
- (JSC::X86Assembler::emitCall):
+ Reviewed by Sam Weinig.
- Removed duplicate #if:
- * wtf/Platform.h:
+ Include op_convert_this in result caching.
+
+ No change on SunSpider or v8.
-2008-09-23 Kevin McCullough <kmccullough@apple.com>
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_convert_this):
- Reviewed by Darin.
+ * jit/JITStubs.cpp:
+ (JSC::DEFINE_STUB_FUNCTION):
+ * jit/JITStubs.h:
+ (JSC::): Made the op_convert_this JIT stub return an EncodedJSValue, so
+ to maintain the result caching contract that { tag, payload } can be
+ found in { regT1, regT0 }.
- Bug 21030: The JS debugger breaks on the do of a do-while not the while
- (where the conditional statement is)
- https://bugs.webkit.org/show_bug.cgi?id=21030
- Now the statementListEmitCode detects if a do-while node is being
- emited and emits the debug hook on the last line instead of the first.
+2009-07-06 Geoffrey Garen <ggaren@apple.com>
- This change had no effect on sunspider.
+ Reviewed by Sam Weinig.
+
+ Implemented result chaining.
+
+ 1% faster on SunSpider. 4%-5% faster on v8.
- * kjs/nodes.cpp:
- (JSC::statementListEmitCode):
- * kjs/nodes.h:
- (JSC::StatementNode::isDoWhile):
- (JSC::DoWhileNode::isDoWhile):
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::move):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::movl_rr): Added an optimization to eliminate
+ no-op mov instructions, to simplify chaining.
-2008-09-23 Maciej Stachowiak <mjs@apple.com>
+ * jit/JIT.cpp:
+ (JSC::JIT::JIT):
+ * jit/JIT.h: Added data members and helper functions for recording
+ chained results. We record both a mapping from virtual to machine register
+ and the opcode for which the mapping is valid, to help ensure that the
+ mapping isn't used after the mapped register has been stomped by other
+ instructions.
- Reviewed by Cameron Zwarich.
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallVarargs):
+ (JSC::JIT::compileOpCallVarargsSlowCase):
+ (JSC::JIT::emit_op_ret):
+ (JSC::JIT::emit_op_construct_verify):
+ (JSC::JIT::compileOpCall):
+ (JSC::JIT::compileOpCallSlowCase): Chain function call results.
- - inline the fast case of instanceof
- https://bugs.webkit.org/show_bug.cgi?id=20818
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitLoadTag):
+ (JSC::JIT::emitLoadPayload):
+ (JSC::JIT::emitLoad):
+ (JSC::JIT::emitLoad2):
+ (JSC::JIT::isLabeled):
+ (JSC::JIT::map):
+ (JSC::JIT::unmap):
+ (JSC::JIT::isMapped):
+ (JSC::JIT::getMappedPayload):
+ (JSC::JIT::getMappedTag): Use helper functions when loading virtual
+ registers into machine registers, in case the loads can be eliminated
+ by chaining.
+
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_mov):
+ (JSC::JIT::emit_op_end):
+ (JSC::JIT::emit_op_instanceof):
+ (JSC::JIT::emit_op_get_global_var):
+ (JSC::JIT::emit_op_put_global_var):
+ (JSC::JIT::emit_op_get_scoped_var):
+ (JSC::JIT::emit_op_put_scoped_var):
+ (JSC::JIT::emit_op_to_primitive):
+ (JSC::JIT::emit_op_resolve_global):
+ (JSC::JIT::emit_op_jneq_ptr):
+ (JSC::JIT::emit_op_next_pname):
+ (JSC::JIT::emit_op_to_jsnumber):
+ (JSC::JIT::emit_op_catch): Chain results from these opcodes.
+
+ (JSC::JIT::emit_op_profile_will_call):
+ (JSC::JIT::emit_op_profile_did_call): Load the profiler into regT2 to
+ avoid stomping a chained result.
- ~2% speedup on EarleyBoyer test.
-
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_instanceof):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_method_check):
+ (JSC::JIT::emit_op_get_by_val):
+ (JSC::JIT::emit_op_get_by_id): Chain results from these opcodes.
-2008-09-23 Maciej Stachowiak <mjs@apple.com>
+ * jit/JITStubCall.h:
+ (JSC::JITStubCall::addArgument): Always use { regT1, regT0 }, to facilitate
+ chaining.
- Reviewed by Cameron Zwarich.
-
- - add forgotten slow case logic for !==
+ (JSC::JITStubCall::call): Unmap all mapped registers, since our callee
+ stub might stomp them.
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileSlowCases):
+2009-07-01 Sam Weinig <sam@webkit.org>
-2008-09-23 Maciej Stachowiak <mjs@apple.com>
+ Reviewed by Gavin Barraclough.
- Reviewed by Cameron Zwarich.
+ Don't reload values in emitBinaryDoubleOp.
- - inline the fast cases of !==, same as for ===
-
- 2.9% speedup on EarleyBoyer benchmark
+ SunSpider reports a 0.6% progression.
- * VM/CTI.cpp:
- (JSC::CTI::compileOpStrictEq): Factored stricteq codegen into this function,
- and parameterized so it can do the reverse version as well.
- (JSC::CTI::privateCompileMainPass): Use the above for stricteq and nstricteq.
- * VM/CTI.h:
- (JSC::CTI::): Declare above stuff.
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_nstricteq): Removed fast cases, now handled inline.
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_jnless):
+ (JSC::JIT::emit_op_jnlesseq):
+ (JSC::JIT::emitBinaryDoubleOp):
-2008-09-23 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+2009-07-01 Sam Weinig <sam@webkit.org>
- Reviewed by Oliver Hunt.
+ Reviewed by Geoffrey Garen.
- Bug 20989: Aguments constructor should put 'callee' and 'length' properties in a more efficient way
- <https://bugs.webkit.org/show_bug.cgi?id=20989>
+ Convert op_div to load op1 and op2 up front.
- Make special cases for the 'callee' and 'length' properties in the
- Arguments object.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_div):
- This is somewhere between a 7.8% speedup and a 10% speedup on the V8
- Raytrace benchmark, depending on whether it is run alone or with the
- other V8 benchmarks.
+2009-07-01 Sam Weinig <sam@webkit.org>
- * kjs/Arguments.cpp:
- (JSC::ArgumentsData::ArgumentsData):
- (JSC::Arguments::Arguments):
- (JSC::Arguments::mark):
- (JSC::Arguments::getOwnPropertySlot):
- (JSC::Arguments::put):
- (JSC::Arguments::deleteProperty):
+ Reviewed by Geoffrey Garen.
-2008-09-23 Maciej Stachowiak <mjs@apple.com>
+ Don't emit code in emitBinaryDoubleOp if code is unreachable, observable
+ via an empty (unlinked) jumplist passed in. This only effects op_jnless
+ and op_jnlesseq at present.
- Reviewed by Darin.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitSlow_op_jnless):
+ (JSC::JIT::emitSlow_op_jnlesseq):
+ (JSC::JIT::emitBinaryDoubleOp):
- - speed up instanceof some more
- https://bugs.webkit.org/show_bug.cgi?id=20818
-
- ~2% speedup on EarleyBoyer
+2009-07-01 Geoffrey Garen <ggaren@apple.com>
- The idea here is to record in the StructureID whether the class
- needs a special hasInstance or if it can use the normal logic from
- JSObject.
-
- Based on this I inlined the real work directly into
- cti_op_instanceof and put the fastest checks up front and the
- error handling at the end (so it should be fairly straightforward
- to split off the beginning to be inlined if desired).
+ Reviewed by Sam Weinig.
- I only did this for CTI, not the bytecode interpreter.
+ Converted op_mod to put { tag, payload } in { regT1, regT0 }, and
+ tidied up its constant case.
- * API/JSCallbackObject.h:
- (JSC::JSCallbackObject::createStructureID):
- * ChangeLog:
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_instanceof):
- * kjs/JSImmediate.h:
- (JSC::JSImmediate::isAnyImmediate):
- * kjs/TypeInfo.h:
- (JSC::TypeInfo::overridesHasInstance):
- (JSC::TypeInfo::flags):
-
-2008-09-22 Darin Adler <darin@apple.com>
+ SunSpider reports a 0.2% regression, but a micro-benchmark of op_mod
+ shows a 12% speedup, and the SunSpider test that uses op_mod most should
+ benefit a lot from result caching in the end, since it almost always
+ performs (expression) % constant.
- Reviewed by Sam Weinig.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_mod):
+ (JSC::JIT::emitSlow_op_mod):
- - https://bugs.webkit.org/show_bug.cgi?id=21019
- make FunctionBodyNode::ref/deref fast
+2009-06-30 Sam Weinig <sam@webkit.org>
- Speeds up v8-raytrace by 7.2%.
+ Reviewed by Geoffrey Garen.
- * kjs/nodes.cpp:
- (JSC::FunctionBodyNode::FunctionBodyNode): Initialize m_refCount to 0.
- * kjs/nodes.h:
- (JSC::FunctionBodyNode::ref): Call base class ref once, and thereafter use
- m_refCount.
- (JSC::FunctionBodyNode::deref): Ditto, but the deref side.
+ Converted some more arithmetic ops to put { tag, payload } in
+ { regT1, regT0 }.
-2008-09-22 Darin Adler <darin@apple.com>
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_mul):
+ (JSC::JIT::emitSlow_op_mul):
- Pointed out by Sam Weinig.
+2009-06-30 Geoffrey Garen <ggaren@apple.com>
- * kjs/Arguments.cpp:
- (JSC::Arguments::fillArgList): Fix bad copy and paste. Oops!
+ Reviewed by Sam Weinig.
-2008-09-22 Darin Adler <darin@apple.com>
+ Converted some more arithmetic ops to put { tag, payload } in
+ { regT1, regT0 }, and added a case for subtract constant.
+
+ SunSpider says no change. v8 says 0.3% slower.
- Reviewed by Cameron Zwarich.
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_add):
+ (JSC::JIT::emitAdd32Constant):
+ (JSC::JIT::emitSlow_op_add):
+ (JSC::JIT::emit_op_sub):
+ (JSC::JIT::emitSub32Constant):
+ (JSC::JIT::emitSlow_op_sub):
- - https://bugs.webkit.org/show_bug.cgi?id=20983
- ArgumentsData should have some room to allocate some extra arguments inline
+2009-06-30 Gavin Barraclough <barraclough@apple.com>
- Speeds up v8-raytrace by 5%.
+ Reviewed by Sam Weinig.
- * kjs/Arguments.cpp:
- (JSC::ArgumentsData::ArgumentsData): Use a fixed buffer if there are 4 or fewer
- extra arguments.
- (JSC::Arguments::Arguments): Use a fixed buffer if there are 4 or fewer
- extra arguments.
- (JSC::Arguments::~Arguments): Delete the buffer if necessary.
- (JSC::Arguments::mark): Update since extraArguments are now Register.
- (JSC::Arguments::fillArgList): Added special case for the only case that's
- actually used in the practice, when there are no parameters. There are some
- other special cases in there too, but that's the only one that matters.
- (JSC::Arguments::getOwnPropertySlot): Updated to use setValueSlot since there's
- no operation to get you at the JSValue* inside a Register as a "slot".
+ Remove more uses of addressFor(), load double constants directly from
+ the constantpool in the CodeBlock, rather than from the register file.
-2008-09-22 Sam Weinig <sam@webkit.org>
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitAdd32Constant):
+ (JSC::JIT::emitBinaryDoubleOp):
- Reviewed by Maciej Stachowiak.
+2009-06-30 Geoffrey Garen <ggaren@apple.com>
- Patch for https://bugs.webkit.org/show_bug.cgi?id=21014
- Speed up for..in by using StructureID to avoid calls to hasProperty
+ Reviewed by Sam Weinig.
+
+ Fixed a bug in postfix ops, where we would treat x = x++ and x = x--
+ as a no-op, even if x were not an int, and the ++/-- could have side-effects.
- Speeds up fasta by 8%.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_post_inc):
+ (JSC::JIT::emitSlow_op_post_inc):
+ (JSC::JIT::emit_op_post_dec):
+ (JSC::JIT::emitSlow_op_post_dec):
- * VM/JSPropertyNameIterator.cpp:
- (JSC::JSPropertyNameIterator::invalidate):
- * VM/JSPropertyNameIterator.h:
- (JSC::JSPropertyNameIterator::next):
- * kjs/PropertyNameArray.h:
- (JSC::PropertyNameArrayData::begin):
- (JSC::PropertyNameArrayData::end):
- (JSC::PropertyNameArrayData::setCachedStructureID):
- (JSC::PropertyNameArrayData::cachedStructureID):
- * kjs/StructureID.cpp:
- (JSC::StructureID::getEnumerablePropertyNames):
- (JSC::structureIDChainsAreEqual):
- * kjs/StructureID.h:
+2009-06-30 Geoffrey Garen <ggaren@apple.com>
-2008-09-22 Kelvin Sherlock <ksherlock@gmail.com>
+ Reviewed by Sam Weinig.
+
+ Converted some arithmetic ops to put { tag, payload } in
+ { regT1, regT0 }.
+
+ SunSpider says 0.7% faster. v8 says no change.
- Updated and tweaked by Sam Weinig.
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_jnless):
+ (JSC::JIT::emit_op_jnlesseq):
+ (JSC::JIT::emit_op_lshift):
+ (JSC::JIT::emit_op_rshift):
+ (JSC::JIT::emit_op_bitand):
+ (JSC::JIT::emit_op_bitor):
+ (JSC::JIT::emit_op_bitxor):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::isOperandConstantImmediateInt):
+ (JSC::JIT::getOperandConstantImmediateInt):
- Reviewed by Geoffrey Garen.
+2009-06-30 Gavin Barraclough <barraclough@apple.com>
- Bug 20020: Proposed enhancement to JavaScriptCore API
- <https://bugs.webkit.org/show_bug.cgi?id=20020>
+ Reviewed by Sam Weinig.
- Add JSObjectMakeArray, JSObjectMakeDate, JSObjectMakeError, and JSObjectMakeRegExp
- functions to create JavaScript Array, Date, Error, and RegExp objects, respectively.
+ Start removing cases of addressFor().
- * API/JSObjectRef.cpp: The functions
- * API/JSObjectRef.h: Function prototype and documentation
- * JavaScriptCore.exp: Added functions to exported function list
- * API/tests/testapi.c: Added basic functionality tests.
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitAdd32Constant):
+ (JSC::JIT::emitBinaryDoubleOp):
+ (JSC::JIT::emit_op_div):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitLoadDouble):
+ (JSC::JIT::emitLoadInt32ToDouble):
+ (JSC::JIT::emitStoreDouble):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_jfalse):
+ (JSC::JIT::emit_op_jtrue):
- * kjs/DateConstructor.cpp:
- Replaced static JSObject* constructDate(ExecState* exec, JSObject*, const ArgList& args)
- with JSObject* constructDate(ExecState* exec, const ArgList& args).
- Added static JSObject* constructWithDateConstructor(ExecState* exec, JSObject*, const ArgList& args) function
+2009-06-30 Geoffrey Garen <ggaren@apple.com>
- * kjs/DateConstructor.h:
- added prototype for JSObject* constructDate(ExecState* exec, const ArgList& args)
+ Rolled back in my last patch with regression fixed.
- * kjs/ErrorConstructor.cpp:
- removed static qualifier from ErrorInstance* constructError(ExecState* exec, const ArgList& args)
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileSlowCases):
+ * jit/JIT.h:
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_loop_if_less):
+ (JSC::JIT::emit_op_loop_if_lesseq):
+ (JSC::JIT::emit_op_resolve_global):
+ (JSC::JIT::emitSlow_op_resolve_global):
+ (JSC::JIT::emit_op_eq):
+ (JSC::JIT::emitSlow_op_eq):
+ (JSC::JIT::emit_op_neq):
+ (JSC::JIT::emitSlow_op_neq):
- * kjs/ErrorConstructor.h:
- added prototype for ErrorInstance* constructError(ExecState* exec, const ArgList& args)
+2009-06-30 Geoffrey Garen <ggaren@apple.com>
- * kjs/RegExpConstructor.cpp:
- removed static qualifier from JSObject* constructRegExp(ExecState* exec, const ArgList& args)
+ Rolled out my last patch because it was a 2% SunSpider regression.
- * kjs/RegExpConstructor.h:
- added prototype for JSObject* constructRegExp(ExecState* exec, const ArgList& args)
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileSlowCases):
+ * jit/JIT.h:
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_loop_if_less):
+ (JSC::JIT::emit_op_loop_if_lesseq):
+ (JSC::JIT::emit_op_resolve_global):
+ (JSC::JIT::emit_op_eq):
+ (JSC::JIT::emitSlow_op_eq):
+ (JSC::JIT::emit_op_neq):
+ (JSC::JIT::emitSlow_op_neq):
-2008-09-22 Matt Lilek <webkit@mattlilek.com>
+2009-06-30 Geoffrey Garen <ggaren@apple.com>
- Not reviewed, Windows build fix.
+ Reviewed by Gavin "Sam Weinig" Barraclough.
+
+ Standardized the rest of our opcodes to put { tag, payload } in
+ { regT1, regT0 } where possible.
- * kjs/Arguments.cpp:
- * kjs/FunctionPrototype.cpp:
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileSlowCases):
+ * jit/JIT.h:
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_loop_if_less):
+ (JSC::JIT::emit_op_loop_if_lesseq):
+ (JSC::JIT::emit_op_resolve_global):
+ (JSC::JIT::emitSlow_op_resolve_global):
+ (JSC::JIT::emit_op_eq):
+ (JSC::JIT::emitSlow_op_eq):
+ (JSC::JIT::emit_op_neq):
+ (JSC::JIT::emitSlow_op_neq):
+
+2009-06-30 Gavin Barraclough <barraclough@apple.com>
-2008-09-22 Sam Weinig <sam@webkit.org>
+ Reviewed by Geoffrey Garen.
- Reviewed by Darin Adler.
+ Replace calls to store32(tagFor()) and store32(payloadFor())
+ with emitStoreInt32(), emitStoreBool(), and emitStoreCell().
- Patch for https://bugs.webkit.org/show_bug.cgi?id=20982
- Speed up the apply method of functions by special-casing array and 'arguments' objects
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_negate):
+ (JSC::JIT::emit_op_lshift):
+ (JSC::JIT::emit_op_rshift):
+ (JSC::JIT::emit_op_bitand):
+ (JSC::JIT::emitBitAnd32Constant):
+ (JSC::JIT::emit_op_bitor):
+ (JSC::JIT::emitBitOr32Constant):
+ (JSC::JIT::emit_op_bitxor):
+ (JSC::JIT::emitBitXor32Constant):
+ (JSC::JIT::emit_op_bitnot):
+ (JSC::JIT::emit_op_post_inc):
+ (JSC::JIT::emit_op_post_dec):
+ (JSC::JIT::emit_op_pre_inc):
+ (JSC::JIT::emit_op_pre_dec):
+ (JSC::JIT::emit_op_add):
+ (JSC::JIT::emitAdd32Constant):
+ (JSC::JIT::emit_op_sub):
+ (JSC::JIT::emitSub32ConstantLeft):
+ (JSC::JIT::emitSub32ConstantRight):
+ (JSC::JIT::emit_op_mul):
+ (JSC::JIT::emitSlow_op_mul):
+ (JSC::JIT::emit_op_div):
+ (JSC::JIT::emit_op_mod):
+ * jit/JITCall.cpp:
+ (JSC::JIT::emit_op_load_varargs):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitStoreInt32):
+ (JSC::JIT::emitStoreCell):
+ (JSC::JIT::emitStoreBool):
+ (JSC::JIT::emitStore):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_instanceof):
+ (JSC::JIT::emit_op_not):
+ (JSC::JIT::emit_op_eq):
+ (JSC::JIT::emitSlow_op_eq):
+ (JSC::JIT::emit_op_neq):
+ (JSC::JIT::emitSlow_op_neq):
+ (JSC::JIT::compileOpStrictEq):
+ (JSC::JIT::emit_op_eq_null):
+ (JSC::JIT::emit_op_neq_null):
+ * jit/JITStubCall.h:
+ (JSC::JITStubCall::call):
- 1% speedup on v8-raytrace.
+2009-06-30 Geoffrey Garen <ggaren@apple.com>
- Test: fast/js/function-apply.html
+ Reviewed by Sam Weinig.
+
+ Standardized the rest of the property access instructions to put { tag,
+ payload } in { regT1, regT0 }.
- * kjs/Arguments.cpp:
- (JSC::Arguments::fillArgList):
- * kjs/Arguments.h:
- * kjs/FunctionPrototype.cpp:
- (JSC::functionProtoFuncApply):
- * kjs/JSArray.cpp:
- (JSC::JSArray::fillArgList):
- * kjs/JSArray.h:
+ Small v8 speedup, 0.2% SunSpider slowdown.
-2008-09-22 Darin Adler <darin@apple.com>
+ * jit/JIT.h:
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitLoad):
+ (JSC::JIT::emitLoad2):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_get_by_val):
+ (JSC::JIT::emitSlow_op_get_by_val):
+ (JSC::JIT::emit_op_put_by_val):
+ (JSC::JIT::emitSlow_op_put_by_val):
+ (JSC::JIT::emit_op_put_by_id):
+ (JSC::JIT::emitSlow_op_put_by_id):
+ (JSC::JIT::patchPutByIdReplace):
- Reviewed by Sam Weinig.
+2009-06-29 Sam Weinig <sam@webkit.org>
- - https://bugs.webkit.org/show_bug.cgi?id=20993
- Array.push/pop need optimized cases for JSArray
+ Reviewed by Gavin Barraclough.
- 3% or so speedup on DeltaBlue benchmark.
+ Various cleanups.
+ - Use fpRegT* instead of X86::xmm*.
+ - Use a switch statement in emitBinaryDoubleOp instead of a bunch of
+ if/elses.
- * kjs/ArrayPrototype.cpp:
- (JSC::arrayProtoFuncPop): Call JSArray::pop when appropriate.
- (JSC::arrayProtoFuncPush): Call JSArray::push when appropriate.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitAdd32Constant):
+ (JSC::JIT::emitBinaryDoubleOp):
+ (JSC::JIT::emit_op_div):
- * kjs/JSArray.cpp:
- (JSC::JSArray::putSlowCase): Set m_fastAccessCutoff when appropriate, getting
- us into the fast code path.
- (JSC::JSArray::pop): Added.
- (JSC::JSArray::push): Added.
- * kjs/JSArray.h: Added push and pop.
+2009-06-29 Sam Weinig <sam@webkit.org>
- * kjs/operations.cpp:
- (JSC::throwOutOfMemoryError): Don't inline this. Helps us avoid PIC branches.
+ Reviewed by Geoffrey Garen.
-2008-09-22 Maciej Stachowiak <mjs@apple.com>
+ Add inline code dealing with doubles for op_jfalse and op_jtrue.
- Reviewed by Cameron Zwarich.
-
- - speed up instanceof operator by replacing implementsHasInstance method with a TypeInfo flag
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::):
+ (JSC::MacroAssemblerX86Common::zeroDouble):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_jfalse):
+ (JSC::JIT::emit_op_jtrue):
- Partial work towards <https://bugs.webkit.org/show_bug.cgi?id=20818>
-
- 2.2% speedup on EarleyBoyer benchmark.
+2009-06-28 Geoffrey Garen <ggaren@apple.com>
- * API/JSCallbackConstructor.cpp:
- * API/JSCallbackConstructor.h:
- (JSC::JSCallbackConstructor::createStructureID):
- * API/JSCallbackFunction.cpp:
- * API/JSCallbackFunction.h:
- (JSC::JSCallbackFunction::createStructureID):
- * API/JSCallbackObject.h:
- (JSC::JSCallbackObject::createStructureID):
- * API/JSCallbackObjectFunctions.h:
- (JSC::::hasInstance):
- * API/JSValueRef.cpp:
- (JSValueIsInstanceOfConstructor):
- * JavaScriptCore.exp:
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_instanceof):
- * kjs/InternalFunction.cpp:
- * kjs/InternalFunction.h:
- (JSC::InternalFunction::createStructureID):
- * kjs/JSObject.cpp:
- * kjs/JSObject.h:
- * kjs/TypeInfo.h:
- (JSC::TypeInfo::implementsHasInstance):
-
-2008-09-22 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Dave Hyatt.
-
- Based on initial work by Darin Adler.
-
- - replace masqueradesAsUndefined virtual method with a flag in TypeInfo
- - use this to JIT inline code for eq_null and neq_null
- https://bugs.webkit.org/show_bug.cgi?id=20823
+ Reviewed by Sam Weinig.
- 0.5% speedup on SunSpider
- ~4% speedup on Richards benchmark
+ Standardized op_get_by_id to put { tag, payload } in { regT1, regT0 }.
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- * VM/Machine.cpp:
- (JSC::jsTypeStringForValue):
- (JSC::jsIsObjectType):
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_is_undefined):
- * VM/Machine.h:
- * kjs/JSCell.h:
- * kjs/JSValue.h:
- * kjs/StringObjectThatMasqueradesAsUndefined.h:
- (JSC::StringObjectThatMasqueradesAsUndefined::create):
- (JSC::StringObjectThatMasqueradesAsUndefined::createStructureID):
- * kjs/StructureID.h:
- (JSC::StructureID::mutableTypeInfo):
- * kjs/TypeInfo.h:
- (JSC::TypeInfo::TypeInfo):
- (JSC::TypeInfo::masqueradesAsUndefined):
- * kjs/operations.cpp:
- (JSC::equal):
- * masm/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::setne_r):
- (JSC::X86Assembler::setnz_r):
- (JSC::X86Assembler::testl_i32m):
+ SunSpider and v8 report maybe 0.2%-0.4% regressions, but the optimization
+ this enables will win much more than that back.
-2008-09-22 Tor Arne Vestbø <tavestbo@trolltech.com>
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JIT.h:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_method_check):
+ (JSC::JIT::emit_op_get_by_id):
+ (JSC::JIT::compileGetByIdHotPath):
+ (JSC::JIT::compileGetByIdSlowCase):
+ (JSC::JIT::patchGetByIdSelf):
+ (JSC::JIT::privateCompilePatchGetArrayLength):
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdSelfList):
+ (JSC::JIT::privateCompileGetByIdProtoList):
+ (JSC::JIT::privateCompileGetByIdChainList):
+ (JSC::JIT::privateCompileGetByIdChain):
- Reviewed by Simon.
+2009-06-26 Geoffrey Garen <ggaren@apple.com>
- Initialize QCoreApplication in kjs binary/Shell.cpp
+ Reviewed by Maciej Stachowiak.
- This allows us to use QCoreApplication::instance() to
- get the main thread in ThreadingQt.cpp
-
- * kjs/Shell.cpp:
- (main):
- * wtf/ThreadingQt.cpp:
- (WTF::initializeThreading):
-
-2008-09-21 Darin Adler <darin@apple.com>
+ Standardized op_call to put { tag, payload } in { regT1, regT0 }.
+
+ SunSpider and v8 report no change.
- - blind attempt to fix non-all-in-one builds
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallInitializeCallFrame):
+ (JSC::JIT::compileOpCallSetupArgs):
+ (JSC::JIT::compileOpConstructSetupArgs):
+ (JSC::JIT::compileOpCallVarargsSetupArgs):
+ (JSC::JIT::compileOpCallVarargs):
+ (JSC::JIT::compileOpCall):
+ (JSC::JIT::compileOpCallSlowCase):
- * kjs/JSGlobalObject.cpp: Added includes of Arguments.h and RegExpObject.h.
+2009-06-26 Sam Weinig <sam@webkit.org>
-2008-09-21 Darin Adler <darin@apple.com>
+ Reviewed by Geoffrey Garen.
- - fix debug build
+ Handle multiplying by zero a little better by
+ inlining the case that both operands are non-negative
+ into the slowpath.
- * kjs/StructureID.cpp:
- (JSC::StructureID::addPropertyTransition): Use typeInfo().type() instead of m_type.
- (JSC::StructureID::createCachedPrototypeChain): Ditto.
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::branchOr32):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_mul):
+ (JSC::JIT::emitSlow_op_mul):
-2008-09-21 Maciej Stachowiak <mjs@apple.com>
+2009-06-25 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Darin Adler.
+ Reviewed by Sam Weinig.
- - introduce a TypeInfo class, for holding per-type (in the C++ class sense) date in StructureID
- https://bugs.webkit.org/show_bug.cgi?id=20981
+ Optimize x++ to ++x inside for loops.
+
+ Sadly, no measurable speedup, but this should help with result chaining.
- * JavaScriptCore.exp:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompilePutByIdTransition):
- * VM/Machine.cpp:
- (JSC::jsIsObjectType):
- (JSC::Machine::Machine):
- * kjs/AllInOneFile.cpp:
- * kjs/JSCell.h:
- (JSC::JSCell::isObject):
- (JSC::JSCell::isString):
- * kjs/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::reset):
- * kjs/JSGlobalObject.h:
- (JSC::StructureID::prototypeForLookup):
- * kjs/JSNumberCell.h:
- (JSC::JSNumberCell::createStructureID):
- * kjs/JSObject.cpp:
- (JSC::JSObject::createInheritorID):
- * kjs/JSObject.h:
- (JSC::JSObject::createStructureID):
- * kjs/JSString.h:
- (JSC::JSString::createStructureID):
- * kjs/NativeErrorConstructor.cpp:
- (JSC::NativeErrorConstructor::NativeErrorConstructor):
- * kjs/RegExpConstructor.cpp:
- * kjs/RegExpMatchesArray.h: Added.
- (JSC::RegExpMatchesArray::getOwnPropertySlot):
- (JSC::RegExpMatchesArray::put):
- (JSC::RegExpMatchesArray::deleteProperty):
- (JSC::RegExpMatchesArray::getPropertyNames):
- * kjs/StructureID.cpp:
- (JSC::StructureID::StructureID):
- (JSC::StructureID::addPropertyTransition):
- (JSC::StructureID::toDictionaryTransition):
- (JSC::StructureID::changePrototypeTransition):
- (JSC::StructureID::getterSetterTransition):
- * kjs/StructureID.h:
- (JSC::StructureID::create):
- (JSC::StructureID::typeInfo):
- * kjs/TypeInfo.h: Added.
- (JSC::TypeInfo::TypeInfo):
- (JSC::TypeInfo::type):
-
-2008-09-21 Darin Adler <darin@apple.com>
+ * parser/Nodes.cpp:
+ (JSC::ForNode::emitBytecode):
- Reviewed by Cameron Zwarich.
+2009-06-25 Geoffrey Garen <ggaren@apple.com>
- - fix crash logging into Gmail due to recent Arguments change
+ Reviewed by Sam Weinig.
+
+ Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
- * kjs/Arguments.cpp:
- (JSC::Arguments::Arguments): Fix window where mark() function could
- see d->extraArguments with uninitialized contents.
- (JSC::Arguments::mark): Check d->extraArguments for 0 to handle two
- cases: 1) Inside the constructor before it's initialized.
- 2) numArguments <= numParameters.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitSlow_op_bitnot):
+ (JSC::JIT::emit_op_post_inc):
-2008-09-21 Darin Adler <darin@apple.com>
+2009-06-25 Geoffrey Garen <ggaren@apple.com>
- - fix loose end from the "duplicate constant values" patch
+ Reviewed by Sam Weinig.
+
+ Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitLoad): Add a special case for values the
- hash table can't handle.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_bitnot):
+ (JSC::JIT::emit_op_post_dec):
+ (JSC::JIT::emit_op_pre_inc):
+ (JSC::JIT::emitSlow_op_pre_inc):
+ (JSC::JIT::emit_op_pre_dec):
+ (JSC::JIT::emitSlow_op_pre_dec):
-2008-09-21 Mark Rowe <mrowe@apple.com>
+2009-06-25 Geoffrey Garen <ggaren@apple.com>
- Fix the non-AllInOneFile build.
+ Reviewed by Sam Weinig.
+
+ Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
- * kjs/Arguments.cpp: Add missing #include.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_negate):
+ (JSC::JIT::emitSlow_op_negate):
+ * jit/JITCall.cpp:
+ (JSC::JIT::emit_op_construct_verify):
+ (JSC::JIT::emitSlow_op_construct_verify):
-2008-09-21 Darin Adler <darin@apple.com>
+2009-06-25 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Cameron Zwarich and Mark Rowe.
+ Reviewed by Sam Weinig.
+
+ Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }.
- - fix test failure caused by my recent IndexToNameMap patch
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_loop_if_true):
+ (JSC::JIT::emit_op_jfalse):
+ (JSC::JIT::emit_op_jtrue):
+ (JSC::JIT::emit_op_jeq_null):
+ (JSC::JIT::emit_op_jneq_null):
+ (JSC::JIT::emit_op_eq_null):
+ (JSC::JIT::emit_op_neq_null):
- * kjs/Arguments.cpp:
- (JSC::Arguments::deleteProperty): Added the accidentally-omitted
- check of the boolean result from toArrayIndex.
+2009-06-25 Geoffrey Garen <ggaren@apple.com>
-2008-09-21 Darin Adler <darin@apple.com>
+ Reviewed by Sam Weinig (sort of, maybe).
+
+ Fixed some ASSERTs in http/tests/security.
+
+ These ASSERTs were introduced by http://trac.webkit.org/changeset/45057,
+ but the underlying problem was actually older. http://trac.webkit.org/changeset/45057
+ just exposed the problem by enabling optimization in more cases.
+
+ The ASSERTs fired because we tested PropertySlot::slotBase() for validity,
+ but slotBase() ASSERTs if it's invalid, so we would ASSERT before
+ the test could happen. Solution: Remove the ASSERT. Maybe it was valid
+ once, but it clearly goes against a pattern we've deployed of late.
+
+ The underlying problem was that WebCore would re-use a PropertySlot in
+ the case of a forwarding access, and the second use would not completely
+ overwrite the first use. Solution: Make sure to overwrite m_offset when
+ setting a value on a PropertySlot. (Other values already get implicitly
+ overwritten during reuse.)
- Reviewed by Maciej Stachowiak.
+ * runtime/PropertySlot.h:
+ (JSC::PropertySlot::PropertySlot):
+ (JSC::PropertySlot::setValueSlot):
+ (JSC::PropertySlot::setValue):
+ (JSC::PropertySlot::setRegisterSlot):
+ (JSC::PropertySlot::setUndefined):
+ (JSC::PropertySlot::slotBase):
+ (JSC::PropertySlot::clearOffset):
- - https://bugs.webkit.org/show_bug.cgi?id=20975
- inline immediate-number case of ==
+2009-06-24 Gavin Barraclough <barraclough@apple.com>
- * VM/CTI.h: Renamed emitJumpSlowCaseIfNotImm to
- emitJumpSlowCaseIfNotImmNum, since the old name was incorrect.
+ Reviewed by Geoff Garen.
- * VM/CTI.cpp: Updated for new name.
- (JSC::CTI::privateCompileMainPass): Added op_eq.
- (JSC::CTI::privateCompileSlowCases): Added op_eq.
+ Enable JIT_OPTIMIZE_METHOD_CALLS on the branch, implementation matches current implemenatation in ToT.
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_eq): Removed fast case, since it's now
- compiled.
+ * jit/JIT.h:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_method_check):
+ (JSC::JIT::emitSlow_op_method_check):
+ (JSC::JIT::emit_op_get_by_id):
+ (JSC::JIT::compileGetByIdHotPath):
+ (JSC::JIT::emitSlow_op_get_by_id):
+ (JSC::JIT::compileGetByIdSlowCase):
-2008-09-21 Peter Gal <galpter@inf.u-szeged.hu>
+2009-06-23 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Tim Hatcher and Eric Seidel.
+ Reviewed by Sam Weinig.
- Fix the QT/Linux JavaScriptCore segmentation fault.
- https://bugs.webkit.org/show_bug.cgi?id=20914
+ Bit off a tiny bit more of standardizing opcode behavior to help with result
+ caching.
+
+ SunSpider reports no change, v8 maybe a tiny speedup.
- * wtf/ThreadingQt.cpp:
- (WTF::initializeThreading): Use currentThread() if
- platform is not a MAC (like in pre 36541 revisions)
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_to_jsnumber):
+ (JSC::JIT::emitSlow_op_to_jsnumber):
+ (JSC::JIT::emit_op_convert_this):
+ (JSC::JIT::emitSlow_op_convert_this):
-2008-09-21 Darin Adler <darin@apple.com>
+2009-06-23 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
- * kjs/debugger.h: Removed some unneeded includes and declarations.
+ Bit off a tiny bit more of standardizing opcode behavior to help with result
+ caching -- including removing my old enemy, op_resolve_function, because
+ it was non-standard, and removing it felt better than helping it limp along.
+
+ SunSpider reports no change, v8 maybe a tiny speedup.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dump):
+ * bytecode/Opcode.h:
+ * bytecompiler/BytecodeGenerator.cpp:
+ * bytecompiler/BytecodeGenerator.h:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ * jit/JIT.h:
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_get_scoped_var):
+ (JSC::JIT::emit_op_put_scoped_var):
+ (JSC::JIT::emit_op_to_primitive):
+ (JSC::JIT::emitSlow_op_to_primitive):
+ * jit/JITStubs.cpp:
+ * jit/JITStubs.h:
+ * parser/Nodes.cpp:
+ (JSC::FunctionCallResolveNode::emitBytecode):
-2008-09-21 Darin Adler <darin@apple.com>
+2009-06-23 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
+
+ Bit off a tiny bit of standardizing opcode behavior to help with result
+ caching.
+
+ 0.6% SunSpider speedup. 0.3% v8 speedup.
- - https://bugs.webkit.org/show_bug.cgi?id=20972
- speed up Arguments further by eliminating the IndexToNameMap
-
- No change on SunSpider. 1.29x as fast on V8 Raytrace.
-
- * kjs/Arguments.cpp: Moved ArgumentsData in here. Eliminated the
- indexToNameMap and hadDeletes data members. Changed extraArguments into
- an OwnArrayPtr and added deletedArguments, another OwnArrayPtr.
- Replaced numExtraArguments with numParameters, since that's what's
- used more directly in hot code paths.
- (JSC::Arguments::Arguments): Pass in argument count instead of ArgList.
- Initialize ArgumentsData the new way.
- (JSC::Arguments::mark): Updated.
- (JSC::Arguments::getOwnPropertySlot): Overload for the integer form so
- we don't have to convert integers to identifiers just to get an argument.
- Integrated the deleted case with the fast case.
- (JSC::Arguments::put): Ditto.
- (JSC::Arguments::deleteProperty): Ditto.
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitLoad): Accomodate a base register that overlaps with payload
+ by loading tag before payload, to avoid stomping base/payload.
- * kjs/Arguments.h: Minimized includes. Made everything private. Added
- overloads for the integral property name case. Eliminated mappedIndexSetter.
- Moved ArgumentsData into the .cpp file.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_mov): Abide by the standard "tag in regT1, payload in
+ regT0" semantics.
- * kjs/IndexToNameMap.cpp: Emptied out and prepared for deletion.
- * kjs/IndexToNameMap.h: Ditto.
+ (JSC::JIT::emit_op_get_global_var):
+ (JSC::JIT::emit_op_put_global_var): Ditto. Also, removed some irrelevent
+ loads while I was at it. The global object's "d" pointer never changes
+ after construction.
- * kjs/JSActivation.cpp:
- (JSC::JSActivation::createArgumentsObject): Elminated ArgList.
+2009-06-23 Gavin Barraclough <barraclough@apple.com>
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * kjs/AllInOneFile.cpp:
- Removed IndexToNameMap.
+ Reviewed by Sam Weinig.
-2008-09-21 Darin Adler <darin@apple.com>
+ Remove 'arguments' field from Register union (again).
+ This time do so without breaking tests (radical, I know).
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitLoad): One more tweak: Wrote this in a slightly
- clearer style.
+ * interpreter/CallFrame.h:
+ (JSC::ExecState::optionalCalleeArguments):
+ (JSC::ExecState::setArgumentCount):
+ (JSC::ExecState::init):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::dumpRegisters):
+ (JSC::Interpreter::unwindCallFrame):
+ (JSC::Interpreter::privateExecute):
+ (JSC::Interpreter::retrieveArguments):
+ * interpreter/Register.h:
+ (JSC::Register::withInt):
+ (JSC::Register::):
+ (JSC::Register::Register):
+ (JSC::Register::i):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_tear_off_arguments):
+ * runtime/Arguments.h:
+ (JSC::JSActivation::copyRegisters):
+ (JSC::Register::arguments):
+ * runtime/JSActivation.cpp:
+ (JSC::JSActivation::argumentsGetter):
+ * runtime/JSActivation.h:
-2008-09-21 Judit Jasz <jasy@inf.u-szeged.hu>
+2009-06-23 Geoffrey Garen <ggaren@apple.com>
- Reviewed and tweaked by Darin Adler.
+ Reviewed by Sam Weinig.
+
+ Removed some result register tracking cruft in preparation for a new
+ result tracking mechanism.
+
+ SunSpider reports no change.
- - https://bugs.webkit.org/show_bug.cgi?id=20645
- Elminate duplicate constant values in CodeBlocks.
+ * assembler/AbstractMacroAssembler.h:
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::JmpDst::JmpDst): No need to track jump targets in
+ machine code; we already do this in bytecode.
- Seems to be a wash on SunSpider.
+ * jit/JIT.cpp:
+ (JSC::JIT::JIT):
+ (JSC::JIT::emitTimeoutCheck): Make sure to save and restore the result
+ registers, so an opcode with a timeout check can still benefit from result
+ register caching.
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitLoad): Use m_numberMap and m_stringMap to guarantee
- we emit the same JSValue* for identical numbers and strings.
- * VM/CodeGenerator.h: Added overload of emitLoad for const Identifier&.
- Add NumberMap and IdentifierStringMap types and m_numberMap and m_stringMap.
- * kjs/nodes.cpp:
- (JSC::StringNode::emitCode): Call the new emitLoad and let it do the
- JSString creation.
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases): Removed calls to killLastResultRegister()
+ in preparation for something new.
-2008-09-21 Paul Pedriana <webkit@pedriana.com>
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_jnless):
+ (JSC::JIT::emit_op_jnlesseq):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitGetFromCallFrameHeaderPtr):
+ (JSC::JIT::emitGetFromCallFrameHeader32):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_jmp):
+ (JSC::JIT::emit_op_jfalse):
+ (JSC::JIT::emit_op_jtrue):
+ (JSC::JIT::emit_op_jeq_null):
+ (JSC::JIT::emit_op_jneq_null):
+ (JSC::JIT::emit_op_jneq_ptr):
+ (JSC::JIT::emit_op_jsr):
+ (JSC::JIT::emit_op_sret):
+ (JSC::JIT::emit_op_jmp_scopes): ditto
+
+ * jit/JITStubCall.h:
+ (JSC::JITStubCall::JITStubCall):
+ (JSC::JITStubCall::getArgument): added a mechanism for reloading an argument
+ you passed to a JIT stub, for use in emitTimeoutCheck.
+
+2009-06-23 Sam Weinig <sam@webkit.org>
- Reviewed and tweaked by Darin Adler.
+ Reviewed by Geoffrey Garen.
- - https://bugs.webkit.org/show_bug.cgi?id=16925
- Fixed lack of Vector buffer alignment for both GCC and MSVC.
- Since there's no portable way to do this, for now we don't support
- other compilers.
+ Remove now-useless inplace variants of binary ops.
- * wtf/Vector.h: Added WTF_ALIGH_ON, WTF_ALIGNED, AlignedBufferChar, and AlignedBuffer.
- Use AlignedBuffer insteadof an array of char in VectorBuffer.
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_bitand):
+ (JSC::JIT::emit_op_bitor):
+ (JSC::JIT::emit_op_bitxor):
+ (JSC::JIT::emit_op_add):
+ (JSC::JIT::emit_op_sub):
+ (JSC::JIT::emit_op_mul):
-2008-09-21 Gabor Loki <loki@inf.u-szeged.hu>
+2009-06-23 Sam Weinig <sam@webkit.org>
- Reviewed by Darin Adler.
+ Reviewed by Geoffrey Garen.
- - https://bugs.webkit.org/show_bug.cgi?id=19408
- Add lightweight constant folding to the parser for *, /, + (only for numbers), <<, >>, ~ operators.
+ Move off memory operands to aid in re-enabling result caching.
- 1.008x as fast on SunSpider.
+ - No regression measured.
- * kjs/grammar.y:
- (makeNegateNode): Fold if expression is a number > 0.
- (makeBitwiseNotNode): Fold if expression is a number.
- (makeMultNode): Fold if expressions are both numbers.
- (makeDivNode): Fold if expressions are both numbers.
- (makeAddNode): Fold if expressions are both numbers.
- (makeLeftShiftNode): Fold if expressions are both numbers.
- (makeRightShiftNode): Fold if expressions are both numbers.
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_negate):
+ (JSC::JIT::emit_op_jnless):
+ (JSC::JIT::emit_op_jnlesseq):
+ (JSC::JIT::emit_op_lshift):
+ (JSC::JIT::emit_op_rshift):
+ (JSC::JIT::emit_op_bitand):
+ (JSC::JIT::emitBitAnd32Constant):
+ (JSC::JIT::emitBitAnd32InPlace):
+ (JSC::JIT::emit_op_bitor):
+ (JSC::JIT::emitBitOr32Constant):
+ (JSC::JIT::emitBitOr32InPlace):
+ (JSC::JIT::emit_op_bitxor):
+ (JSC::JIT::emitBitXor32Constant):
+ (JSC::JIT::emitBitXor32InPlace):
+ (JSC::JIT::emit_op_bitnot):
+ (JSC::JIT::emit_op_post_inc):
+ (JSC::JIT::emit_op_post_dec):
+ (JSC::JIT::emit_op_pre_inc):
+ (JSC::JIT::emitSlow_op_pre_inc):
+ (JSC::JIT::emit_op_pre_dec):
+ (JSC::JIT::emitSlow_op_pre_dec):
+ (JSC::JIT::emit_op_add):
+ (JSC::JIT::emitAdd32Constant):
+ (JSC::JIT::emitAdd32InPlace):
+ (JSC::JIT::emitSlow_op_add):
+ (JSC::JIT::emitSlowAdd32Constant):
+ (JSC::JIT::emit_op_sub):
+ (JSC::JIT::emitSlow_op_sub):
+ (JSC::JIT::emitSub32ConstantLeft):
+ (JSC::JIT::emitSub32ConstantRight):
+ (JSC::JIT::emitSub32InPlaceLeft):
+ (JSC::JIT::emitSub32InPlaceRight):
+ (JSC::JIT::emitBinaryDoubleOp):
+ (JSC::JIT::emit_op_mul):
+ (JSC::JIT::emitMul32InPlace):
+ (JSC::JIT::emit_op_div):
+ (JSC::JIT::emit_op_mod):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallVarargs):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_loop_if_less):
+ (JSC::JIT::emit_op_loop_if_lesseq):
+ (JSC::JIT::emit_op_instanceof):
+ (JSC::JIT::emit_op_to_primitive):
+ (JSC::JIT::emit_op_not):
+ (JSC::JIT::emit_op_jneq_ptr):
+ (JSC::JIT::emit_op_eq):
+ (JSC::JIT::emit_op_neq):
+ (JSC::JIT::emit_op_to_jsnumber):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_get_by_val):
+ (JSC::JIT::emit_op_put_by_val):
-2008-09-21 Maciej Stachowiak <mjs@apple.com>
+2009-06-23 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Oliver.
+ Reviewed by Sam Weinig.
- - speed up === operator by generating inline machine code for the fast paths
- https://bugs.webkit.org/show_bug.cgi?id=20820
-
- * VM/CTI.cpp:
- (JSC::CTI::emitJumpSlowCaseIfNotImmediateNumber):
- (JSC::CTI::emitJumpSlowCaseIfNotImmediateNumbers):
- (JSC::CTI::emitJumpSlowCaseIfNotImmediates):
- (JSC::CTI::emitTagAsBoolImmediate):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/CTI.h:
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_stricteq):
- * masm/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::sete_r):
- (JSC::X86Assembler::setz_r):
- (JSC::X86Assembler::movzbl_rr):
- (JSC::X86Assembler::emitUnlinkedJnz):
-
-2008-09-21 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Fixed some missing and/or misplaced labels in bytecode generation, so
+ we don't have to work around them in JIT code generation.
- Reviewed by Maciej Stachowiak.
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitJumpSubroutine):
+ * parser/Nodes.cpp:
+ (JSC::TryNode::emitBytecode):
- Free memory allocated for extra arguments in the destructor of the
- Arguments object.
+2009-06-22 Geoffrey Garen <ggaren@apple.com>
- * kjs/Arguments.cpp:
- (JSC::Arguments::~Arguments):
- * kjs/Arguments.h:
+ Reviewed by Sam Weinig.
+
+ For member function calls, emit "this" directly into the "this" slot
+ for the function call, instead of moving it there later. This reduces
+ time spent in op_mov during certain calls, like "a.b.c()".
+
+ 1%-2% speedup on v8, mostly richards and delta-blue.
-2008-09-21 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ * parser/Nodes.cpp:
+ (JSC::FunctionCallDotNode::emitBytecode):
- Reviewed by Maciej Stachowiak.
+2009-06-22 Gavin Barraclough <barraclough@apple.com>
- Bug 20815: 'arguments' object creation is non-optimal
- <https://bugs.webkit.org/show_bug.cgi?id=20815>
+ Reviewed by Sam Weinig.
- Fix our inefficient way of creating the arguments object by only
- creating named properties for each of the arguments after a use of the
- 'delete' statement. This patch also speeds up access to the 'arguments'
- object slightly, but it still does not use the array fast path for
- indexed access that exists for many opcodes.
+ Remove 'arguments' field from Register union. Having JSCell derived types in the union is
+ dangerous since it opens the possibility for the field to be written as a raw pointer but
+ then read as a JSValue. This will lead to statle data being read for the tag, which may
+ be dangerous. Having removed Arguments* types form Register, all arguments objects must
+ always explicitly be stored in the register file as JSValues.
- This is about a 20% improvement on the V8 Raytrace benchmark, and a 1.5%
- improvement on the Earley-Boyer benchmark, which gives a 4% improvement
- overall.
+ * interpreter/CallFrame.h:
+ (JSC::ExecState::optionalCalleeArguments):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::unwindCallFrame):
+ (JSC::Interpreter::privateExecute):
+ (JSC::Interpreter::retrieveArguments):
+ * interpreter/Register.h:
+ (JSC::Register::):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_tear_off_arguments):
+ * runtime/Arguments.h:
+ (JSC::JSActivation::copyRegisters):
+ * runtime/JSActivation.cpp:
+ (JSC::JSActivation::argumentsGetter):
+ * runtime/JSActivation.h:
- * kjs/Arguments.cpp:
- (JSC::Arguments::Arguments):
- (JSC::Arguments::mark):
- (JSC::Arguments::getOwnPropertySlot):
- (JSC::Arguments::put):
- (JSC::Arguments::deleteProperty):
- * kjs/Arguments.h:
- (JSC::Arguments::ArgumentsData::ArgumentsData):
- * kjs/IndexToNameMap.h:
- (JSC::IndexToNameMap::size):
- * kjs/JSActivation.cpp:
- (JSC::JSActivation::createArgumentsObject):
- * kjs/JSActivation.h:
- (JSC::JSActivation::uncheckedSymbolTableGet):
- (JSC::JSActivation::uncheckedSymbolTableGetValue):
- (JSC::JSActivation::uncheckedSymbolTablePut):
- * kjs/JSFunction.h:
- (JSC::JSFunction::numParameters):
-
-2008-09-20 Darin Adler <darin@apple.com>
+2009-06-03 Sam Weinig <sam@webkit.org>
- Reviewed by Mark Rowe.
+ Reviewed by Geoffrey Garen.
- - fix crash seen on buildbot
+ Add back known this value optimization by abstracting
+ slow case if not JSCell jumps.
- * kjs/JSGlobalObject.cpp:
- (JSC::JSGlobalObject::mark): Add back mark of arrayPrototype,
- deleted by accident in my recent check-in.
+ * jit/JIT.h:
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallVarargs):
+ (JSC::JIT::compileOpCallVarargsSlowCase):
+ (JSC::JIT::compileOpCall):
+ (JSC::JIT::compileOpCallSlowCase):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
+ (JSC::JIT::linkSlowCaseIfNotJSCell):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_instanceof):
+ (JSC::JIT::emitSlow_op_instanceof):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_get_by_val):
+ (JSC::JIT::emitSlow_op_get_by_val):
+ (JSC::JIT::emit_op_put_by_val):
+ (JSC::JIT::emitSlow_op_put_by_val):
+ (JSC::JIT::emit_op_get_by_id):
+ (JSC::JIT::emitSlow_op_get_by_id):
+ (JSC::JIT::emit_op_put_by_id):
+ (JSC::JIT::emitSlow_op_put_by_id):
-2008-09-20 Maciej Stachowiak <mjs@apple.com>
+2009-06-01 Geoffrey Garen <ggaren@apple.com>
- Not reviewed, build fix.
+ Reviewed by Sam Weinig.
- - speculative fix for non-AllInOne builds
-
- * kjs/operations.h:
-
-2008-09-20 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
+ Fixed some of the regression in crypto-aes.js. (8.5% speedup in
+ crypto-aes.js.)
- - assorted optimizations to === and !== operators
- (work towards <https://bugs.webkit.org/show_bug.cgi?id=20820>)
+ SunSpider reports no change overall.
- 2.5% speedup on earley-boyer test
-
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_stricteq): Use inline version of
- strictEqualSlowCase; remove unneeded exception check.
- (JSC::Machine::cti_op_nstricteq): ditto
- * kjs/operations.cpp:
- (JSC::strictEqual): Use strictEqualSlowCaseInline
- (JSC::strictEqualSlowCase): ditto
- * kjs/operations.h:
- (JSC::strictEqualSlowCaseInline): Version of strictEqualSlowCase that can be inlined,
- since the extra function call indirection is a lose for CTI.
-
-2008-09-20 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- - finish https://bugs.webkit.org/show_bug.cgi?id=20858
- make each distinct C++ class get a distinct JSC::Structure
-
- This also includes some optimizations that make the change an overall
- small speedup. Without those it was a bit of a slowdown.
-
- * API/JSCallbackConstructor.cpp:
- (JSC::JSCallbackConstructor::JSCallbackConstructor): Take a structure.
- * API/JSCallbackConstructor.h: Ditto.
- * API/JSCallbackFunction.cpp:
- (JSC::JSCallbackFunction::JSCallbackFunction): Pass a structure.
- * API/JSCallbackObject.h: Take a structure.
- * API/JSCallbackObjectFunctions.h:
- (JSC::JSCallbackObject::JSCallbackObject): Ditto.
-
- * API/JSClassRef.cpp:
- (OpaqueJSClass::prototype): Pass in a structure. Call setPrototype
- if there's a custom prototype involved.
- * API/JSObjectRef.cpp:
- (JSObjectMake): Ditto.
- (JSObjectMakeConstructor): Pass in a structure.
-
- * JavaScriptCore.exp: Updated.
-
- * VM/Machine.cpp:
- (JSC::jsLess): Added a special case for when both arguments are strings.
- This avoids converting both strings to with UString::toDouble.
- (JSC::jsLessEq): Ditto.
- (JSC::Machine::privateExecute): Pass in a structure.
- (JSC::Machine::cti_op_construct_JSConstruct): Ditto.
- (JSC::Machine::cti_op_new_regexp): Ditto.
- (JSC::Machine::cti_op_is_string): Ditto.
- * VM/Machine.h: Made isJSString public so it can be used in the CTI.
-
- * kjs/Arguments.cpp:
- (JSC::Arguments::Arguments): Pass in a structure.
-
- * kjs/JSCell.h: Mark constructor explicit.
-
- * kjs/JSGlobalObject.cpp:
- (JSC::markIfNeeded): Added an overload for marking structures.
- (JSC::JSGlobalObject::reset): Eliminate code to set data members to
- zero. We now do that in the constructor, and we no longer use this
- anywhere except in the constructor. Added code to create structures.
- Pass structures rather than prototypes when creating objects.
- (JSC::JSGlobalObject::mark): Mark the structures.
-
- * kjs/JSGlobalObject.h: Removed unneeded class declarations.
- Added initializers for raw pointers in JSGlobalObjectData so
- everything starts with a 0. Added structure data and accessor
- functions.
+ Division was producing double results, which took the slow path through
+ array access code.
+
+ Strangely, all my attempts at versions of this patch that modified array
+ access code to accept ints encoded as doubles along the fast or slow paths
+ were regressions. So I did this instead.
- * kjs/JSImmediate.cpp:
- (JSC::JSImmediate::nonInlineNaN): Added.
- * kjs/JSImmediate.h:
- (JSC::JSImmediate::toDouble): Rewrote to avoid PIC branches.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_div): When dividing an int by an int, go ahead and try
+ to turn the result into an int. Don't just do int division, though, because
+ testing shows it to be slower than SSE double division, and the corner
+ cases are pretty complicated / lengthy on top of that. Also, don't try
+ to canonicalize division of known tiny numerators into ints, since that's a
+ waste of time.
- * kjs/JSNumberCell.cpp:
- (JSC::jsNumberCell): Made non-inline to avoid PIC branches
- in functions that call this one.
- (JSC::jsNaN): Ditto.
- * kjs/JSNumberCell.h: Ditto.
+2009-05-26 Geoffrey Garen <ggaren@apple.com>
- * kjs/JSObject.h: Removed constructor that takes a prototype.
- All callers now pass structures.
+ Reviewed by Oliver Hunt.
+
+ Fixed a regression caused by my recent fix for NaN.
- * kjs/ArrayConstructor.cpp:
- (JSC::ArrayConstructor::ArrayConstructor):
- (JSC::constructArrayWithSizeQuirk):
- * kjs/ArrayConstructor.h:
- * kjs/ArrayPrototype.cpp:
- (JSC::ArrayPrototype::ArrayPrototype):
- * kjs/ArrayPrototype.h:
- * kjs/BooleanConstructor.cpp:
- (JSC::BooleanConstructor::BooleanConstructor):
- (JSC::constructBoolean):
- (JSC::constructBooleanFromImmediateBoolean):
- * kjs/BooleanConstructor.h:
- * kjs/BooleanObject.cpp:
- (JSC::BooleanObject::BooleanObject):
- * kjs/BooleanObject.h:
- * kjs/BooleanPrototype.cpp:
- (JSC::BooleanPrototype::BooleanPrototype):
- * kjs/BooleanPrototype.h:
- * kjs/DateConstructor.cpp:
- (JSC::DateConstructor::DateConstructor):
- (JSC::constructDate):
- * kjs/DateConstructor.h:
- * kjs/DateInstance.cpp:
- (JSC::DateInstance::DateInstance):
- * kjs/DateInstance.h:
- * kjs/DatePrototype.cpp:
- (JSC::DatePrototype::DatePrototype):
- * kjs/DatePrototype.h:
- * kjs/ErrorConstructor.cpp:
- (JSC::ErrorConstructor::ErrorConstructor):
- (JSC::constructError):
- * kjs/ErrorConstructor.h:
- * kjs/ErrorInstance.cpp:
- (JSC::ErrorInstance::ErrorInstance):
- * kjs/ErrorInstance.h:
- * kjs/ErrorPrototype.cpp:
- (JSC::ErrorPrototype::ErrorPrototype):
- * kjs/ErrorPrototype.h:
- * kjs/FunctionConstructor.cpp:
- (JSC::FunctionConstructor::FunctionConstructor):
- * kjs/FunctionConstructor.h:
- * kjs/FunctionPrototype.cpp:
- (JSC::FunctionPrototype::FunctionPrototype):
- (JSC::FunctionPrototype::addFunctionProperties):
- * kjs/FunctionPrototype.h:
- * kjs/GlobalEvalFunction.cpp:
- (JSC::GlobalEvalFunction::GlobalEvalFunction):
- * kjs/GlobalEvalFunction.h:
- * kjs/InternalFunction.cpp:
- (JSC::InternalFunction::InternalFunction):
- * kjs/InternalFunction.h:
- (JSC::InternalFunction::InternalFunction):
- * kjs/JSArray.cpp:
- (JSC::JSArray::JSArray):
- (JSC::constructEmptyArray):
- (JSC::constructArray):
- * kjs/JSArray.h:
- * kjs/JSFunction.cpp:
- (JSC::JSFunction::JSFunction):
- (JSC::JSFunction::construct):
- * kjs/JSObject.cpp:
- (JSC::constructEmptyObject):
- * kjs/JSString.cpp:
- (JSC::StringObject::create):
- * kjs/JSWrapperObject.h:
- * kjs/MathObject.cpp:
- (JSC::MathObject::MathObject):
- * kjs/MathObject.h:
- * kjs/NativeErrorConstructor.cpp:
- (JSC::NativeErrorConstructor::NativeErrorConstructor):
- (JSC::NativeErrorConstructor::construct):
- * kjs/NativeErrorConstructor.h:
- * kjs/NativeErrorPrototype.cpp:
- (JSC::NativeErrorPrototype::NativeErrorPrototype):
- * kjs/NativeErrorPrototype.h:
- * kjs/NumberConstructor.cpp:
- (JSC::NumberConstructor::NumberConstructor):
- (JSC::constructWithNumberConstructor):
- * kjs/NumberConstructor.h:
- * kjs/NumberObject.cpp:
- (JSC::NumberObject::NumberObject):
- (JSC::constructNumber):
- (JSC::constructNumberFromImmediateNumber):
- * kjs/NumberObject.h:
- * kjs/NumberPrototype.cpp:
- (JSC::NumberPrototype::NumberPrototype):
- * kjs/NumberPrototype.h:
- * kjs/ObjectConstructor.cpp:
- (JSC::ObjectConstructor::ObjectConstructor):
- (JSC::constructObject):
- * kjs/ObjectConstructor.h:
- * kjs/ObjectPrototype.cpp:
- (JSC::ObjectPrototype::ObjectPrototype):
- * kjs/ObjectPrototype.h:
- * kjs/PrototypeFunction.cpp:
- (JSC::PrototypeFunction::PrototypeFunction):
- * kjs/PrototypeFunction.h:
- * kjs/RegExpConstructor.cpp:
- (JSC::RegExpConstructor::RegExpConstructor):
- (JSC::RegExpMatchesArray::RegExpMatchesArray):
- (JSC::constructRegExp):
- * kjs/RegExpConstructor.h:
- * kjs/RegExpObject.cpp:
- (JSC::RegExpObject::RegExpObject):
- * kjs/RegExpObject.h:
- * kjs/RegExpPrototype.cpp:
- (JSC::RegExpPrototype::RegExpPrototype):
- * kjs/RegExpPrototype.h:
- * kjs/Shell.cpp:
- (GlobalObject::GlobalObject):
- * kjs/StringConstructor.cpp:
- (JSC::StringConstructor::StringConstructor):
- (JSC::constructWithStringConstructor):
- * kjs/StringConstructor.h:
- * kjs/StringObject.cpp:
- (JSC::StringObject::StringObject):
- * kjs/StringObject.h:
- * kjs/StringObjectThatMasqueradesAsUndefined.h:
- (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
- * kjs/StringPrototype.cpp:
- (JSC::StringPrototype::StringPrototype):
- * kjs/StringPrototype.h:
- Take and pass structures.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitBinaryDoubleOp): Actually do the comparison in reverse
+ order, like the ChangeLog said we would, bokay?
-2008-09-19 Alp Toker <alp@nuanti.com>
+2009-05-26 Geoffrey Garen <ggaren@apple.com>
- Build fix for the 'gold' linker and recent binutils. New behaviour
- requires that we link to used libraries explicitly.
+ Reviewed by Sam Weinig and Oliver Hunt.
+
+ Fixed two edge cases in %:
+
+ - Don't do -2147483648 % x as a fast case, since you might do -2147483648 % -1,
+ which will signal a hardware exception due to overflow.
- * GNUmakefile.am:
+ - In the case of a zero remainder, be sure to store negative zero if the
+ dividend was zero.
+
+ SunSpider reports no change.
-2008-09-19 Sam Weinig <sam@webkit.org>
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_mod):
+ (JSC::JIT::emitSlow_op_mod):
- Roll r36694 back in. It did not cause the crash.
+2009-05-25 Geoffrey Garen <ggaren@apple.com>
- * JavaScriptCore.exp:
- * VM/JSPropertyNameIterator.cpp:
- (JSC::JSPropertyNameIterator::~JSPropertyNameIterator):
- (JSC::JSPropertyNameIterator::invalidate):
- * VM/JSPropertyNameIterator.h:
- (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
- (JSC::JSPropertyNameIterator::create):
- * kjs/JSObject.cpp:
- (JSC::JSObject::getPropertyNames):
- * kjs/PropertyMap.cpp:
- (JSC::PropertyMap::getEnumerablePropertyNames):
- * kjs/PropertyMap.h:
- * kjs/PropertyNameArray.cpp:
- (JSC::PropertyNameArray::add):
- * kjs/PropertyNameArray.h:
- (JSC::PropertyNameArrayData::create):
- (JSC::PropertyNameArrayData::propertyNameVector):
- (JSC::PropertyNameArrayData::setCachedPrototypeChain):
- (JSC::PropertyNameArrayData::cachedPrototypeChain):
- (JSC::PropertyNameArrayData::begin):
- (JSC::PropertyNameArrayData::end):
- (JSC::PropertyNameArrayData::PropertyNameArrayData):
- (JSC::PropertyNameArray::PropertyNameArray):
- (JSC::PropertyNameArray::addKnownUnique):
- (JSC::PropertyNameArray::size):
- (JSC::PropertyNameArray::operator[]):
- (JSC::PropertyNameArray::begin):
- (JSC::PropertyNameArray::end):
- (JSC::PropertyNameArray::setData):
- (JSC::PropertyNameArray::data):
- (JSC::PropertyNameArray::releaseData):
- * kjs/StructureID.cpp:
- (JSC::structureIDChainsAreEqual):
- (JSC::StructureID::getEnumerablePropertyNames):
- (JSC::StructureID::clearEnumerationCache):
- (JSC::StructureID::createCachedPrototypeChain):
- * kjs/StructureID.h:
+ Reviewed by Maciej Stachowiak.
+
+ Fixed a regression when comparing to NaN.
-2008-09-19 Sam Weinig <sam@webkit.org>
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitBinaryDoubleOp): For op_jnless and op_jnless_eq, do the
+ comparison in reverse order, and jump if the result is below or
+ below-or-equal. This ensures that we do jump in the case of NaN.
- Roll out r36694.
+2009-05-25 Geoffrey Garen <ggaren@apple.com>
- * JavaScriptCore.exp:
- * VM/JSPropertyNameIterator.cpp:
- (JSC::JSPropertyNameIterator::~JSPropertyNameIterator):
- (JSC::JSPropertyNameIterator::invalidate):
- * VM/JSPropertyNameIterator.h:
- (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
- (JSC::JSPropertyNameIterator::create):
- * kjs/JSObject.cpp:
- (JSC::JSObject::getPropertyNames):
- * kjs/PropertyMap.cpp:
- (JSC::PropertyMap::getEnumerablePropertyNames):
- * kjs/PropertyMap.h:
- * kjs/PropertyNameArray.cpp:
- (JSC::PropertyNameArray::add):
- * kjs/PropertyNameArray.h:
- (JSC::PropertyNameArray::PropertyNameArray):
- (JSC::PropertyNameArray::addKnownUnique):
- (JSC::PropertyNameArray::begin):
- (JSC::PropertyNameArray::end):
- (JSC::PropertyNameArray::size):
- (JSC::PropertyNameArray::operator[]):
- (JSC::PropertyNameArray::releaseIdentifiers):
- * kjs/StructureID.cpp:
- (JSC::StructureID::getEnumerablePropertyNames):
- * kjs/StructureID.h:
- (JSC::StructureID::clearEnumerationCache):
+ Reviewed by Oliver Hunt.
+
+ SunSpider says no change.
+
+ Fixed regressions in fast/js/var-declarations-shadowing.html and
+ fast/js/equality.html, caused by recent == and != optimizations.
-2008-09-19 Oliver Hunt <oliver@apple.com>
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_eq): Don't treat "compare to string" as always
+ numeric or string comparison. If the second operand is an object, you
+ need to ToPrimitive it, and start all over again. Also, I wrote out each
+ of the possible cases explicitly, to cut down on redundant branching.
- Reviewed by Maciej Stachowiak.
+2009-05-25 Sam Weinig <sam@webkit.org>
- Improve peformance of local variable initialisation.
+ Reviewed by Mark Rowe.
- Pull local and constant initialisation out of slideRegisterWindowForCall
- and into its own opcode. This allows the JIT to generate the initialisation
- code for a function directly into the instruction stream and so avoids a few
- branches on function entry.
+ Fix bug in fast/js/constant-folding.html where we were not negating
+ -0 properly.
- Results a 1% progression in SunSpider, particularly in a number of the bitop
- tests where the called functions are very fast.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_negate):
- * VM/CTI.cpp:
- (JSC::CTI::emitInitialiseRegister):
- (JSC::CTI::privateCompileMainPass):
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::CodeGenerator):
- * VM/Machine.cpp:
- (JSC::slideRegisterWindowForCall):
- (JSC::Machine::privateExecute):
- * VM/Opcode.h:
+2009-05-23 Geoffrey Garen <ggaren@apple.com>
-2008-09-19 Sam Weinig <sam@webkit.org>
+ Reviewed by Oliver Hunt.
+
+ Refactored new slow case codegen for == and !=.
+
+ SunSpider reports no change, maybe a tiny speedup.
- Reviewed by Darin Adler.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emitSlow_op_eq):
+ (JSC::JIT::emitSlow_op_neq): Made a vptr comparison a *Ptr operation,
+ instead of *32, to make it portable to 64bit. Reorganized the string
+ and generic cases to make their control flow a little clearer.
- Patch for https://bugs.webkit.org/show_bug.cgi?id=20928
- Speed up JS property enumeration by caching entire PropertyNameArray
+2009-05-23 Geoffrey Garen <ggaren@apple.com>
- 1.3% speedup on Sunspider, 30% on string-fasta.
+ Reviewed by Maciej Stachowiak.
+
+ Optimized == and != for our new value representation -- especially for strings.
+
+ 14% speedup on date-format-tofte.
- * JavaScriptCore.exp:
- * VM/JSPropertyNameIterator.cpp:
- (JSC::JSPropertyNameIterator::~JSPropertyNameIterator):
- (JSC::JSPropertyNameIterator::invalidate):
- * VM/JSPropertyNameIterator.h:
- (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
- (JSC::JSPropertyNameIterator::create):
- * kjs/JSObject.cpp:
- (JSC::JSObject::getPropertyNames):
- * kjs/PropertyMap.cpp:
- (JSC::PropertyMap::getEnumerablePropertyNames):
- * kjs/PropertyMap.h:
- * kjs/PropertyNameArray.cpp:
- (JSC::PropertyNameArray::add):
- * kjs/PropertyNameArray.h:
- (JSC::PropertyNameArrayData::create):
- (JSC::PropertyNameArrayData::propertyNameVector):
- (JSC::PropertyNameArrayData::setCachedPrototypeChain):
- (JSC::PropertyNameArrayData::cachedPrototypeChain):
- (JSC::PropertyNameArrayData::begin):
- (JSC::PropertyNameArrayData::end):
- (JSC::PropertyNameArrayData::PropertyNameArrayData):
- (JSC::PropertyNameArray::PropertyNameArray):
- (JSC::PropertyNameArray::addKnownUnique):
- (JSC::PropertyNameArray::size):
- (JSC::PropertyNameArray::operator[]):
- (JSC::PropertyNameArray::begin):
- (JSC::PropertyNameArray::end):
- (JSC::PropertyNameArray::setData):
- (JSC::PropertyNameArray::data):
- (JSC::PropertyNameArray::releaseData):
- * kjs/ScopeChain.cpp:
- (JSC::ScopeChainNode::print):
- * kjs/StructureID.cpp:
- (JSC::structureIDChainsAreEqual):
- (JSC::StructureID::getEnumerablePropertyNames):
- (JSC::StructureID::clearEnumerationCache):
- (JSC::StructureID::createCachedPrototypeChain):
- * kjs/StructureID.h:
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_eq):
+ (JSC::JIT::emitSlow_op_eq):
+ (JSC::JIT::emit_op_neq):
+ (JSC::JIT::emitSlow_op_neq):
+ * jit/JITStubCall.h:
+ (JSC::JITStubCall::JITStubCall):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_eq):
+ (JSC::JITStubs::cti_op_eq_strings):
+ (JSC::JITStubs::cti_op_call_eval):
+ * jit/JITStubs.h:
+ (JSC::):
+ * runtime/JSValue.h:
-2008-09-19 Holger Hans Peter Freyther <zecke@selfish.org>
+2009-05-22 Sam Weinig <sam@webkit.org>
- Reviewed by Maciej Stachowiak.
+ Reviewed by Gavin Barraclough.
- Fix a mismatched new[]/delete in JSObject::allocatePropertyStorage
+ Fix non-SSE enabled builds.
- * kjs/JSObject.cpp:
- (JSC::JSObject::allocatePropertyStorage): Spotted by valgrind.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitSlow_op_add): Don't early return here, we still need to call the JIT stub.
+ (JSC::JIT::emitSlow_op_sub): Ditto.
-2008-09-19 Darin Adler <darin@apple.com>
+2009-05-22 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
+
+ Here's a thought: let's not take a jit stub call just to multiply by 1,
+ bokay?
+
+ imul doesn't set the zero flag, so to test for a zero result, we need
+ an explicit instruction. (Luckily, it does set the overflow flag, so
+ we can still use that.)
- - part 2 of https://bugs.webkit.org/show_bug.cgi?id=20858
- make each distinct C++ class get a distinct JSC::Structure
-
- * JavaScriptCore.exp: Exported constructEmptyObject for use in WebCore.
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_mul):
+ (JSC::JIT::emitSlow_op_mul):
+ (JSC::JIT::emitMul32InPlace):
- * kjs/JSGlobalObject.h: Changed the protected constructor to take a
- structure instead of a prototype.
+2009-05-22 Sam Weinig <sam@webkit.org>
- * kjs/JSVariableObject.h: Removed constructor that takes a prototype.
+ Reviewed by Geoffrey "Premature Commit" Garen.
-2008-09-19 Julien Chaffraix <jchaffraix@pleyo.com>
+ Add back constant integer cases for op_add.
- Reviewed by Alexey Proskuryakov.
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_add):
+ (JSC::JIT::emitAdd32Constant):
+ (JSC::JIT::emitSlow_op_add):
+ (JSC::JIT::emitSlowAdd32Constant):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::getConstantOperandImmediateDouble):
+ (JSC::JIT::isOperandConstantImmediateDouble):
- Use the template hoisting technique on the RefCounted class. This reduces the code bloat due to
- non-template methods' code been copied for each instance of the template.
- The patch splits RefCounted between a base class that holds non-template methods and attributes
- and the template RefCounted class that keeps the same functionnality.
+2009-05-22 Geoffrey Garen <ggaren@apple.com>
- On my Linux with gcc 4.3 for the Gtk port, this is:
- - a ~600KB save on libwebkit.so in release.
- - a ~1.6MB save on libwebkit.so in debug.
+ Reviewed by Sam Weinig.
+
+ Added fast double cases for op_jnless and op_jnlesseq.
- It is a wash on Sunspider and a small win on Dromaeo (not sure it is relevant).
- On the whole, it should be a small win as we reduce the compiled code size and the only
- new function call should be inlined by the compiler.
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::JumpList::jumps): New accesor, used by
+ addSlowCase.
- * wtf/RefCounted.h:
- (WTF::RefCountedBase::ref): Copied from RefCounted.
- (WTF::RefCountedBase::hasOneRef): Ditto.
- (WTF::RefCountedBase::refCount): Ditto.
- (WTF::RefCountedBase::RefCountedBase): Ditto.
- (WTF::RefCountedBase::~RefCountedBase): Ditto.
- (WTF::RefCountedBase::derefBase): Tweaked from the RefCounted version to remove
- template section.
- (WTF::RefCounted::RefCounted):
- (WTF::RefCounted::deref): Small wrapper around RefCountedBase::derefBase().
- (WTF::RefCounted::~RefCounted): Keep private destructor.
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::ucomisd_rm): New method for comparing register to
+ memory.
-2008-09-18 Darin Adler <darin@apple.com>
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_jnless):
+ (JSC::JIT::emitSlow_op_jnless):
+ (JSC::JIT::emit_op_jnlesseq):
+ (JSC::JIT::emitSlow_op_jnlesseq):
+ (JSC::JIT::emit_op_add):
+ (JSC::JIT::emit_op_sub):
+ (JSC::JIT::emitBinaryDoubleOp):
+ (JSC::JIT::emit_op_mul):
+ (JSC::JIT::emit_op_div): Modified emitBinaryDoubleOp to accept comparison/jump
+ operations in addition to operations with explicit result registers.
- Reviewed by Maciej Stachowiak.
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::addSlowCase): Added an "addSlowCase" for JumpLists, so clients
+ can track multiple jumps to the same slow case condition together.
- - part 1 of https://bugs.webkit.org/show_bug.cgi?id=20858
- make each distinct C++ class get a distinct JSC::Structure
+2009-05-21 Sam Weinig <sam@webkit.org>
- * kjs/lookup.h: Removed things here that were used only in WebCore:
- cacheGlobalObject, JSC_DEFINE_PROTOTYPE, JSC_DEFINE_PROTOTYPE_WITH_PROTOTYPE,
- and JSC_IMPLEMENT_PROTOTYPE.
+ Reviewed by Gavin Barraclough.
-2008-09-18 Darin Adler <darin@apple.com>
+ Implement op_negate inline fast cases.
- Reviewed by Maciej Stachowiak.
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::neg32):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::):
+ (JSC::X86Assembler::negl_m):
+ (JSC::X86Assembler::xorpd_rr):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_negate):
+ (JSC::JIT::emitSlow_op_negate):
- - https://bugs.webkit.org/show_bug.cgi?id=20927
- simplify/streamline the code to turn strings into identifiers while parsing
+2009-05-20 Sam Weinig <sam@webkit.org>
- * kjs/grammar.y: Get rid of string from the union, and use ident for STRING as
- well as for IDENT.
+ Reviewed by Gavin Barraclough.
- * kjs/lexer.cpp:
- (JSC::Lexer::lex): Use makeIdentifier instead of makeUString for String.
- * kjs/lexer.h: Remove makeUString.
+ Update the patchOffsetGetByIdSlowCaseCall constant for the
+ case that OPCODE_SAMPLING is enabled.
- * kjs/nodes.h: Changed StringNode to hold an Identifier instead of UString.
+ * jit/JIT.h:
- * VM/CodeGenerator.cpp:
- (JSC::keyForCharacterSwitch): Updated since StringNode now holds an Identifier.
- (JSC::prepareJumpTableForStringSwitch): Ditto.
- * kjs/nodes.cpp:
- (JSC::StringNode::emitCode): Ditto. The comment from here is now in the lexer.
- (JSC::processClauseList): Ditto.
- * kjs/nodes2string.cpp:
- (JSC::StringNode::streamTo): Ditto.
+2009-05-20 Geoffrey Garen <ggaren@apple.com>
-2008-09-18 Sam Weinig <sam@webkit.org>
+ Reviewed by Sam Weinig.
- Fix style.
+ Added support for inline subtraction of doubles.
- * VM/Instruction.h:
- (JSC::Instruction::Instruction):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_sub):
+ (JSC::JIT::emitSlow_op_sub):
+ (JSC::JIT::emitSlowSub32InPlaceLeft):
+ (JSC::JIT::emitBinaryDoubleOp):
-2008-09-18 Oliver Hunt <oliver@apple.com>
+2009-05-20 Sam Weinig <sam@webkit.org>
- Reviewed by Maciej Stachowiak.
+ Reviewed by Geoffrey Garen.
- Bug 20911: REGRESSION(r36480?): Reproducible assertion failure below derefStructureIDs 64-bit JavaScriptCore
- <https://bugs.webkit.org/show_bug.cgi?id=20911>
+ Added support for inline division.
- The problem was simply caused by the int constructor for Instruction
- failing to initialise the full struct in 64bit builds.
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::):
+ (JSC::X86Assembler::divsd_rr):
+ (JSC::X86Assembler::divsd_mr):
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dump):
+ * bytecode/Opcode.h:
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitBinaryOp):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ (JSC::JIT::privateCompileSlowCases):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitBinaryDoubleOp):
+ (JSC::JIT::emit_op_div):
+ (JSC::JIT::emitSlow_op_div):
- * VM/Instruction.h:
- (JSC::Instruction::Instruction):
+2009-05-20 Geoffrey Garen <ggaren@apple.com>
-2008-09-18 Darin Adler <darin@apple.com>
+ Reviewed by Sam Weinig.
- - fix release build
+ Added support for inline addition of doubles.
- * wtf/RefCountedLeakCounter.cpp: Removed stray "static".
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_add):
+ (JSC::JIT::emitSlow_op_add):
+ (JSC::JIT::emitSlowAdd32InPlace):
+ (JSC::JIT::emitBinaryDoubleOp):
+ (JSC::JIT::emit_op_mul):
+ (JSC::JIT::emitSlow_op_mul):
-2008-09-18 Darin Adler <darin@apple.com>
+2009-05-20 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
+
+ Factored inline double operations into a helper function, so that we
+ can reuse this code for other math operations.
- * kjs/JSGlobalObject.h: Tiny style guideline tweak.
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitBinaryDoubleOp):
+ (JSC::JIT::emit_op_mul):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallInitializeCallFrame):
-2008-09-18 Darin Adler <darin@apple.com>
+2009-05-20 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
+
+ Added support for inline multiplication of doubles.
- - fix https://bugs.webkit.org/show_bug.cgi?id=20925
- LEAK messages appear every time I quit
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::cvtsi2sd_mr): New function, useful for loading an
+ int32 into a double register.
- * JavaScriptCore.exp: Updated, and also added an export
- needed for future WebCore use of JSC::StructureID.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_mul):
+ (JSC::JIT::emitSlow_op_mul): Filled out these cases for double arithmetic.
- * wtf/RefCountedLeakCounter.cpp:
- (WTF::RefCountedLeakCounter::suppressMessages): Added.
- (WTF::RefCountedLeakCounter::cancelMessageSuppression): Added.
- (WTF::RefCountedLeakCounter::RefCountedLeakCounter): Tweaked a bit.
- (WTF::RefCountedLeakCounter::~RefCountedLeakCounter): Added code to
- log the reason there was no leak checking done.
- (WTF::RefCountedLeakCounter::increment): Tweaked a bit.
- (WTF::RefCountedLeakCounter::decrement): Ditto.
+ * jit/JIT.h:
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::addressFor): New function, useful for addressing a JSValue's
+ full 64bits as a double.
- * wtf/RefCountedLeakCounter.h: Replaced setLogLeakMessages with two
- new functions, suppressMessages and cancelMessageSuppression. Also
- added m_ prefixes to the data member names.
+2009-05-19 Sam Weinig <sam@webkit.org>
-2008-09-18 Holger Hans Peter Freyther <zecke@selfish.org>
+ Reviewed by Geoffrey Garen.
- Reviewed by Mark Rowe.
+ Implement and enable optimized calls.
- https://bugs.webkit.org/show_bug.cgi?id=20437
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines): Add ENABLE(JIT_OPTIMIZE_CALL) guards
+ around the the optimize call only trampolines (virtualCallPreLink and virtualCallLink).
+ Update the trampolines to account for the new JSValue representation.
+ (JSC::JIT::unlinkCall): Use NULL instead of JSValue noValue.
- Add a proper #define to define which XML Parser implementation to use. Client
- code can use #if USE(QXMLSTREAM) to decide if the Qt XML StreamReader
- implementation is going to be used.
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCall): Update to account for the new JSValue representation
+ (JSC::JIT::compileOpCallSlowCase): Ditto.
- * wtf/Platform.h:
+ * jit/JITStubs.h: Remove incorrect !ENABLE(JIT_OPTIMIZE_CALL) guard.
-2008-09-18 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_CALL.
- Reviewed by Maciej Stachowiak.
+2009-05-19 Sam Weinig <sam@webkit.org>
- Make a Unicode non-breaking space count as a whitespace character in
- PCRE. This change was already made in WREC, and it fixes one of the
- Mozilla JS tests. Since it is now fixed in PCRE as well, we can check
- in a new set of expected test results.
+ Reviewed by Geoffrey Garen.
- * pcre/pcre_internal.h:
- (isSpaceChar):
- * tests/mozilla/expected.html:
+ Implement and enable optimized property access.
-2008-09-18 Stephanie Lewis <slewis@apple.com>
+ * assembler/AbstractMacroAssembler.h: Fix comment.
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines): Remove array length trampoline
+ and implement the string length trampoline.
+ * jit/JIT.h: Add new constants for patch offsets.
+ * jit/JITInlineMethods.h: Remove FIELD_OFFSET which is now in StdLibExtras.h.
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_get_by_id):
+ (JSC::JIT::emitSlow_op_get_by_id):
+ (JSC::JIT::emit_op_put_by_id):
+ (JSC::JIT::emitSlow_op_put_by_id):
+ (JSC::JIT::compilePutDirectOffset):
+ (JSC::JIT::compileGetDirectOffset):
+ (JSC::JIT::privateCompilePutByIdTransition):
+ (JSC::JIT::patchGetByIdSelf):
+ (JSC::JIT::patchPutByIdReplace):
+ (JSC::JIT::privateCompilePatchGetArrayLength):
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdSelfList):
+ (JSC::JIT::privateCompileGetByIdProtoList):
+ (JSC::JIT::privateCompileGetByIdChainList):
+ (JSC::JIT::privateCompileGetByIdChain):
+ * jit/JITStubCall.h:
+ (JSC::JITStubCall::addArgument): Add version of addArgument that takes
+ two registers for the tag and payload.
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::JITStubs): Remove array length trampoline pointer.
+ (JSC::JITStubs::cti_op_get_by_id_self_fail):
+ * jit/JITStubs.h:
+ * runtime/JSObject.h:
+ (JSC::JSObject::JSObject): Move m_inheritorID below the property storage
+ to align it to a 16 byte boundary.
+ * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS
+ * wtf/StdLibExtras.h: Move FIELD_OFFSET here.
- Reviewed by Mark Rowe and Maciej Stachowiak.
+2009-05-17 Sam Weinig <sam@webkit.org>
- add an option use arch to specify which architecture to run.
+ Reviewed by Geoffrey Garen.
- * tests/mozilla/jsDriver.pl:
+ Remove unneeded ExecState parameter from the number JSValue constructors.
-2008-09-17 Oliver Hunt <oliver@apple.com>
+ * runtime/JSValue.h:
+ (JSC::jsNumber):
+ (JSC::jsNaN):
+ (JSC::JSValue::JSValue):
- Correctly restore argument reference prior to SFX runtime calls.
-
- Reviewed by Steve Falkenburg.
+2009-05-15 Sam Weinig <sam@webkit.org>
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
+ Reviewed by Geoffrey Garen.
-2008-09-17 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Implemented fast path for op_put_by_val when putting to arrays.
- Reviewed by Maciej Stachowiak.
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_put_by_val):
+ (JSC::JIT::emitSlow_op_put_by_val):
- Bug 20876: REGRESSION (r36417, r36427): fast/js/exception-expression-offset.html fails
- <https://bugs.webkit.org/show_bug.cgi?id=20876>
-
- r36417 and r36427 caused an get_by_id opcode to be emitted before the
- instanceof and construct opcodes, in order to enable inline caching of
- the prototype property. Unfortunately, this regressed some tests dealing
- with exceptions thrown by 'instanceof' and the 'new' operator. We fix
- these problems by detecting whether an "is not an object" exception is
- thrown before op_instanceof or op_construct, and emit the proper
- exception in those cases.
-
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitConstruct):
- * VM/CodeGenerator.h:
- * VM/ExceptionHelpers.cpp:
- (JSC::createInvalidParamError):
- (JSC::createNotAConstructorError):
- (JSC::createNotAnObjectError):
- * VM/ExceptionHelpers.h:
- * VM/Machine.cpp:
- (JSC::Machine::getOpcode):
- (JSC::Machine::privateExecute):
- * VM/Machine.h:
- * kjs/nodes.cpp:
- (JSC::NewExprNode::emitCode):
- (JSC::InstanceOfNode::emitCode):
+2009-05-15 Geoffrey Garen <ggaren@apple.com> (Mostly by Sam)
-2008-09-17 Gavin Barraclough <barraclough@apple.com>
+ Reviewed by Sam Weinig.
+
+ Implemented fast path for op_get_by_val when accessing array.
- Reviewed by Oliver Hunt.
+ * jit/JIT.cpp:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_get_by_val):
+ (JSC::JIT::emitSlow_op_get_by_val):
+
+2009-05-14 Geoffrey Garen <ggaren@apple.com>
- JIT generation cti_op_construct_verify.
+ Reviewed by Sam Weinig.
- Quarter to half percent progression on v8-tests.
- Roughly not change on SunSpider (possible minor progression).
+ Fixed a failure in fast/js/math-transforms.html caused by failing to
+ preserve -0 in multiplication.
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- * VM/Machine.cpp:
- * VM/Machine.h:
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::jz):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_mul):
+ (JSC::JIT::emitSlow_op_mul):
+ (JSC::JIT::emitMul32Constant):
+ (JSC::JIT::emitMul32InPlace): Check both for overflow and for zero when
+ doing multiplication. Use a slow case to get these right.
-2008-09-15 Steve Falkenburg <sfalken@apple.com>
+2009-05-14 Geoffrey Garen <ggaren@apple.com>
- Improve timer accuracy for JavaScript Date object on Windows.
-
- Use a combination of ftime and QueryPerformanceCounter.
- ftime returns the information we want, but doesn't have sufficient resolution.
- QueryPerformanceCounter has high resolution, but is only usable to measure time intervals.
- To combine them, we call ftime and QueryPerformanceCounter initially. Later calls will use
- QueryPerformanceCounter by itself, adding the delta to the saved ftime. We re-sync to
- correct for drift if the low-res and high-res elapsed time between calls differs by more
- than twice the low-resolution timer resolution.
-
- QueryPerformanceCounter may be inaccurate due to a problems with:
- - some PCI bridge chipsets (http://support.microsoft.com/kb/274323)
- - BIOS bugs (http://support.microsoft.com/kb/895980/)
- - BIOS/HAL bugs on multiprocessor/multicore systems (http://msdn.microsoft.com/en-us/library/ms644904.aspx)
+ Reviewed by Sam Weinig.
- Reviewed by Darin Adler.
-
- * kjs/DateMath.cpp:
- (JSC::highResUpTime):
- (JSC::lowResUTCTime):
- (JSC::qpcAvailable):
- (JSC::getCurrentUTCTimeWithMicroseconds):
+ Fixed a bug in the varargs calling convention.
-2008-09-17 Gavin Barraclough <barraclough@apple.com>
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallVarargs): Move the argument count into regT1,
+ since that's where ctiVirtualCall expects it to be.
- Reviewed by Geoff Garen.
+2009-05-14 Geoffrey Garen <ggaren@apple.com>
- Implement JIT generation of CallFrame initialization, for op_call.
+ Reviewed by Sam Weinig.
- 1% sunspider 2.5% v8-tests.
+ Fixed a small bug in instanceof's looping code.
- * VM/CTI.cpp:
- (JSC::CTI::compileOpCall):
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_op_call_NotJSFunction):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_instanceof): NULL means the object has no prototype,
+ so only loop when *not* equal to NULL.
-2008-09-17 Gavin Barraclough <barraclough@apple.com>
+2009-05-14 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Geoff Garen.
+ Reviewed by Sam Weinig.
+
+ Fixed a small bug in instanceof's result writing code.
- Optimizations for op_call in CTI. Move check for (ctiCode == 0) into JIT code,
- move copying of scopeChain for CodeBlocks that needFullScopeChain into head of
- functions, instead of checking prior to making the call.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_instanceof): Make sure to fill out the payload bits
+ in all cases.
- 3% on v8-tests (4% on richards, 6% in delta-blue)
+2009-05-14 Sam Weinig <sam@webkit.org>
- * VM/CTI.cpp:
- (JSC::CTI::compileOpCall):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- * VM/Machine.cpp:
- (JSC::Machine::execute):
- (JSC::Machine::cti_op_call_JSFunction):
- (JSC::Machine::cti_vm_compile):
- (JSC::Machine::cti_vm_updateScopeChain):
- (JSC::Machine::cti_op_construct_JSConstruct):
- * VM/Machine.h:
+ Reviewed by Geoffrey Garen.
-2008-09-17 Tor Arne Vestbø <tavestbo@trolltech.com>
+ Removed an invalid assertion in cti_op_urshift which
+ depended on a fast path for op_urshift which has
+ never existed.
- Fix the QtWebKit/Mac build
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_urshift):
- * wtf/ThreadingQt.cpp:
- (WTF::initializeThreading): use QCoreApplication to get the main thread
+2009-05-14 Geoffrey Garen <ggaren@apple.com>
-2008-09-16 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Reviewed by Sam Weinig.
+
+ Fixed loop_if_true, which had the same reversed test that jtrue had.
- Reviewed by Maciej Stachowiak.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_loop_if_true):
- Bug 20857: REGRESSION (r36427): ASSERTION FAILED: m_refCount >= 0 in RegisterID::deref()
- <https://bugs.webkit.org/show_bug.cgi?id=20857>
+2009-05-14 Sam Weinig <sam@webkit.org>
- Fix a problem stemming from the slightly unsafe behaviour of the
- CodeGenerator::finalDestination() method by putting the "func" argument
- of the emitConstruct() method in a RefPtr in its caller. Also, add an
- assertion guaranteeing that this is always the case.
+ Reviewed by Geoffrey Garen.
- CodeGenerator::finalDestination() is still incorrect and can cause
- problems with a different allocator; see bug 20340 for more details.
+ In op_neq, we apparently want to check that one value
+ does *not* equal another. Go figure.
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitConstruct):
- * kjs/nodes.cpp:
- (JSC::NewExprNode::emitCode):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_neq):
-2008-09-16 Alice Liu <alice.liu@apple.com>
+2009-05-14 Sam Weinig <sam@webkit.org>
- build fix.
+ Reviewed by Geoffrey Garen.
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
+ The slow case of op_mod should call op_mod's jit stub,
+ not op_mul. That would be dumb.
-2008-09-16 Gavin Barraclough <barraclough@apple.com>
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitSlow_op_mod):
- Reviewed by Geoff Garen.
+2009-05-14 Geoffrey Garen <ggaren@apple.com>
- CTI code generation for op_ret. The majority of the work
- (updating variables on the stack & on exec) can be performed
- directly in generated code.
+ Reviewed by Sam Weinig.
+
+ Fixed problems when using 'arguments' due to a half-initialized register.
- We still need to check, & to call out to C-code to handle
- activation records, profiling, and full scope chains.
+ * interpreter/CallFrame.h:
+ (JSC::ExecState::setCalleeArguments):
+ (JSC::ExecState::init): Require a full JSValue when setting up the
+ 'arguments' virtual register, since this register is accessible from JIT
+ code and bytecode, and needs to be a true JSValue.
- +1.5% Sunspider, +5/6% v8 tests.
+ * interpreter/CallFrameClosure.h:
+ (JSC::CallFrameClosure::resetCallFrame): ditto
- * VM/CTI.cpp:
- (JSC::CTI::emitPutCTIParam):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::privateCompileMainPass):
- * VM/CTI.h:
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_ret_activation):
- (JSC::Machine::cti_op_ret_profiler):
- (JSC::Machine::cti_op_ret_scopeChain):
- * VM/Machine.h:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute): ditto
-2008-09-16 Dimitri Glazkov <dglazkov@chromium.org>
+ * interpreter/Register.h: Removed the constructor that allowed assignment
+ of a JSArguments* to a register. That is not safe. See above.
- Fix the Windows build.
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_create_arguments):
+ (JSC::JITStubs::cti_op_create_arguments_no_params): ditto
- Add some extra parentheses to stop MSVC from complaining so much.
+2009-05-14 Sam Weinig <sam@webkit.org>
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_stricteq):
- (JSC::Machine::cti_op_nstricteq):
- * kjs/operations.cpp:
- (JSC::strictEqual):
+ Reviewed by Geoffrey Garen.
-2008-09-15 Maciej Stachowiak <mjs@apple.com>
+ We really want to go to the slow case in op_jfalse and
+ op_jtrue if the value is *not* boolean.
- Reviewed by Cameron Zwarich.
-
- - speed up the === and !== operators by choosing the fast cases better
-
- No effect on SunSpider but speeds up the V8 EarlyBoyer benchmark about 4%.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_jfalse):
+ (JSC::JIT::emit_op_jtrue):
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_stricteq):
- (JSC::Machine::cti_op_nstricteq):
- * kjs/JSImmediate.h:
- (JSC::JSImmediate::areBothImmediate):
- * kjs/operations.cpp:
- (JSC::strictEqual):
- (JSC::strictEqualSlowCase):
- * kjs/operations.h:
+2009-05-14 Sam Weinig <sam@webkit.org>
-2008-09-15 Oliver Hunt <oliver@apple.com>
+ Reviewed by Geoffrey Garen.
- RS=Sam Weinig.
+ Flipped the condition when emitting a an op_loop_if_less or op_loop_if_lesseq
+ if the first operand is a constant.
- Coding style cleanup.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_loop_if_less):
+ (JSC::JIT::emit_op_loop_if_lesseq):
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
+2009-05-14 Sam Weinig <sam@webkit.org>
-2008-09-15 Oliver Hunt <oliver@apple.com>
+ Reviewed by Geoffrey Garen.
- Reviewed by Cameron Zwarich.
+ Added missing return in op_jnless and op_jnlesseq.
- Bug 20874: op_resolve does not do any form of caching
- <https://bugs.webkit.org/show_bug.cgi?id=20874>
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_jnless):
+ (JSC::JIT::emit_op_jnlesseq):
- This patch adds an op_resolve_global opcode to handle (and cache)
- property lookup we can statically determine must occur on the global
- object (if at all).
+2009-05-14 Sam Weinig <sam@webkit.org>
- 3% progression on sunspider, 3.2x improvement to bitops-bitwise-and, and
- 10% in math-partial-sums
+ Reviewed by Geoffrey Garen.
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::findScopedProperty):
- (JSC::CodeGenerator::emitResolve):
- * VM/Machine.cpp:
- (JSC::resolveGlobal):
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_resolve_global):
- * VM/Machine.h:
- * VM/Opcode.h:
-
-2008-09-15 Sam Weinig <sam@webkit.org>
-
- Roll out r36462. It broke document.all.
-
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/CTI.h:
- * VM/Machine.cpp:
- (JSC::Machine::Machine):
- (JSC::Machine::cti_op_eq_null):
- (JSC::Machine::cti_op_neq_null):
- * VM/Machine.h:
- (JSC::Machine::isJSString):
- * kjs/JSCell.h:
- * kjs/JSWrapperObject.h:
- * kjs/StringObject.h:
- * kjs/StringObjectThatMasqueradesAsUndefined.h:
-
-2008-09-15 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Load constants into the the register file as a temporary measure to
+ aid bring up. This allows us to use to treat constants like any
+ other virtual register.
- Reviewed by Maciej Stachowiak.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_enter):
+ (JSC::JIT::emit_op_enter_with_activation):
- Bug 20863: ASSERTION FAILED: addressOffset < instructions.size() in CodeBlock::getHandlerForVPC
- <https://bugs.webkit.org/show_bug.cgi?id=20863>
+2009-05-14 Geoffrey Garen <ggaren@apple.com>
- r36427 changed the number of arguments to op_construct without changing
- the argument index for the vPC in the call to initializeCallFrame() in
- the CTI case. This caused a JSC test failure. Correcting the argument
- index fixes the test failure.
+ Reviewed by Sam Weinig.
+
+ Implemented op_strict_eq. Original patch by Snowy, by way of Sam and Gavin.
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_construct_JSConstruct):
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::set8): Added set8, since it's slightly
+ faster than set32, and the new value representation usually doesn't
+ need set32.
-2008-09-15 Mark Rowe <mrowe@apple.com>
+ * jit/JIT.cpp:
+ * jit/JIT.h:
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitLoadTag):
+ (JSC::JIT::emitLoadPayload): Added helper functions for dealing with
+ constants. Eventually, we should write special cases for all constants,
+ but these are helpful in the short term.
- Fix GCC 4.2 build.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::compileOpStrictEq):
+ (JSC::JIT::emitSlow_op_stricteq):
+ (JSC::JIT::emitSlow_op_nstricteq): teh opcodez.
- * VM/CTI.h:
+ * runtime/JSValue.h:
+ (JSC::JSValue::):
+ (JSC::JSValue::isDouble): Added a LowestTag for clarity.
-2008-09-15 Geoffrey Garen <ggaren@apple.com>
+2009-05-13 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Maciej Stachowiak.
+ Reviewed by Sam Weinig.
- Fixed a typo in op_get_by_id_chain that caused it to miss every time
- in the interpreter.
+ Fixed some bugs in host function calls.
- Also, a little cleanup.
+ testapi now passes!
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute): Set up baseObject before entering the
- loop, so we compare against the right values.
+ * jit/JIT.cpp: Changed some registers around to avoid overwriting edx:eax,
+ which is how JSValues are now returned. Also changed the code that
+ passes thisValue to pass the full 64bits of the value. Also added
+ an #error compiler directive to other platform builds, since the JSValue
+ return signature probably won't return in edx:eax on those platforms,
+ and we'll have to investigate a solution.
-2008-09-15 Geoffrey Garen <ggaren@apple.com>
+2009-05-13 Geoffrey Garen <ggaren@apple.com>
Reviewed by Sam Weinig.
- Removed the CalledAsConstructor flag from the call frame header. Now,
- we use an explicit opcode at the call site to fix up constructor results.
-
- SunSpider says 0.4% faster.
-
- cti_op_construct_verify is an out-of-line function call for now, but we
- can fix that once StructureID holds type information like isObject.
-
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass): Codegen for the new opcode.
+ Removed parameters from functions that are intended never to use their
+ parameters.
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emitSlow_op_get_by_val):
+ (JSC::JIT::emitSlow_op_put_by_val):
- * VM/CodeGenerator.cpp: Codegen for the new opcode. Also...
- (JSC::CodeGenerator::emitCall): ... don't test for known non-zero value.
- (JSC::CodeGenerator::emitConstruct): ... ditto.
+2009-05-13 Geoffrey Garen <ggaren@apple.com>
- * VM/Machine.cpp: No more CalledAsConstructor
- (JSC::Machine::privateExecute): Implementation for the new opcode.
- (JSC::Machine::cti_op_ret): The speedup: no need to check whether we were
- called as a constructor.
- (JSC::Machine::cti_op_construct_verify): Implementation for the new opcode.
- * VM/Machine.h:
+ Reviewed by Sam Weinig.
+
+ Ported op_instance_of from TOT. It's basically the same, but some register
+ stuff changed to memory stuff.
- * VM/Opcode.h: Declare new opcode.
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
+ (JSC::JIT::emitStore): Changed to use helper functions.
- * VM/RegisterFile.h:
- (JSC::RegisterFile::): No more CalledAsConstructor
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_instanceof):
+ (JSC::JIT::emitSlow_op_instanceof): Ported from TOT.
-2008-09-15 Gavin Barraclough <barraclough@apple.com>
+2009-05-13 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Geoff Garen.
+ Reviewed by Gavin Barraclough.
+
+ Added a comment to explain an exception-handling subtelty that we found
+ hard to remember when reviewing my last patch.
- Inline code generation of eq_null/neq_null for CTI. Uses vptr checking for
- StringObjectsThatAreMasqueradingAsBeingUndefined. In the long run, the
- masquerading may be handled differently (through the StructureIDs - see bug
- #20823).
-
- >1% on v8-tests.
-
- * VM/CTI.cpp:
- (JSC::CTI::emitJumpSlowCaseIfIsJSCell):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/CTI.h:
- * VM/Machine.cpp:
- (JSC::Machine::Machine):
- (JSC::Machine::cti_op_eq_null):
- (JSC::Machine::cti_op_neq_null):
- * VM/Machine.h:
- (JSC::Machine::doesMasqueradesAsUndefined):
- * kjs/JSWrapperObject.h:
- (JSC::JSWrapperObject::):
- (JSC::JSWrapperObject::JSWrapperObject):
- * kjs/StringObject.h:
- (JSC::StringObject::StringObject):
- * kjs/StringObjectThatMasqueradesAsUndefined.h:
- (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_catch):
-2008-09-15 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+2009-05-13 Geoffrey Garen <ggaren@apple.com>
- Rubber-stamped by Oliver Hunt.
+ Reviewed by Sam Weinig.
+
+ Implemented try/catch.
- r36427 broke CodeBlock::dump() by changing the number of arguments to
- op_construct without changing the code that prints it. This patch fixes
- it by printing the additional argument.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_throw): Updated to use JITStackFrame abstraction.
+ (JSC::JIT::emit_op_catch): Filled out.
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
+2009-05-13 Sam Weinig <sam@webkit.org>
-2008-09-15 Adam Roben <aroben@apple.com>
+ Reviewed by Geoffrey Garen.
- Build fix
+ Implemented op_loop_if_true, op_jfalse, op_jtrue, op_jeq_null and op_jneq_null
- * kjs/StructureID.cpp: Removed a stray semicolon.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emitSlow_op_instanceof): Moved from below to be next to its
+ fast brother.
-2008-09-15 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ (JSC::JIT::emit_op_loop_if_true): Similar to the old version
+ in that it tries to do the integer case first and reduce the
+ number of jumps you might need to take.
+ (JSC::JIT::emitSlow_op_loop_if_true):
- Reviewed by Maciej Stachowiak.
+ (JSC::JIT::emit_op_jfalse): Very similar to op_loop_if_true, only
+ the inverse and without a timeout check.
+ (JSC::JIT::emitSlow_op_jfalse):
- Fix a crash in fast/js/exception-expression-offset.html caused by not
- updating all mentions of the length of op_construct in r36427.
+ (JSC::JIT::emit_op_jtrue): Very similar to op_loop_if_true except
+ without the timeout check.
+ (JSC::JIT::emitSlow_op_jtrue):
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_construct_NotJSConstruct):
+ (JSC::JIT::emit_op_jeq_null): Very similar to the implementation
+ of op_eq, except it takes jumps instead of copying the condition
+ to a dst.
+ (JSC::JIT::emit_op_jneq_null): Ditto but for op_neq.
-2008-09-15 Maciej Stachowiak <mjs@apple.com>
+2009-05-13 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Cameron Zwarich.
-
- - fix layout test failure introduced by fix for 20849
+ Reviewed by Sam Weinig.
- (The failing test was fast/js/delete-then-put.html)
-
- * kjs/JSObject.cpp:
- (JSC::JSObject::removeDirect): Clear enumeration cache
- in the dictionary case.
- * kjs/JSObject.h:
- (JSC::JSObject::putDirect): Ditto.
- * kjs/StructureID.h:
- (JSC::StructureID::clearEnumerationCache): Inline to handle the
- clear.
+ Implemented op_call_varargs.
-2008-09-15 Maciej Stachowiak <mjs@apple.com>
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallVarargsSetupArgs):
+ (JSC::JIT::compileOpCallVarargs):
+ (JSC::JIT::emit_op_call):
+ (JSC::JIT::emit_op_call_eval):
+ (JSC::JIT::emit_op_load_varargs):
+ (JSC::JIT::emit_op_call_varargs):
+ (JSC::JIT::emit_op_construct):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_jneq_ptr):
+
+2009-05-13 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Cameron Zwarich.
+ Reviewed by Sam Weinig.
- - fix JSC test failures introduced by fix for 20849
+ Implemented op_call_eval.
- * kjs/PropertyMap.cpp:
- (JSC::PropertyMap::getEnumerablePropertyNames): Use the correct count.
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallVarargsSetupArgs):
+ (JSC::JIT::compileOpCall):
+ * jit/JITStubCall.h:
+ (JSC::CallEvalJITStub::CallEvalJITStub):
-2008-09-15 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+2009-05-13 Sam Weinig <sam@webkit.org>
- Reviewed by Maciej Stachowiak.
+ Reviewed by Gavin Barraclough.
- Bug 20851: REGRESSION (r36410): fast/js/kde/GlobalObject.html fails
- <https://bugs.webkit.org/show_bug.cgi?id=20851>
+ Implemented op_not. (Gavin did most of the work!)
- r36410 introduced an optimization for parseInt() that is incorrect when
- its argument is larger than the range of a 32-bit integer. If the
- argument is a number that is not an immediate integer, then the correct
- behaviour is to return the floor of its value, unless it is an infinite
- value, in which case the correct behaviour is to return 0.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_not):
+ (JSC::JIT::emitSlow_op_not):
- * kjs/JSGlobalObjectFunctions.cpp:
- (JSC::globalFuncParseInt):
+2009-05-13 Geoffrey Garen <ggaren@apple.com>
-2008-09-15 Sam Weinig <sam@webkit.org>
+ Reviewed by Sam Weinig.
+
+ Implemented op_global_resolve.
- Reviewed by Maciej Stachowiak.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_loop_if_less):
+ (JSC::JIT::emit_op_loop_if_lesseq): Added back accidentally removed
+ early returns.
- Patch for https://bugs.webkit.org/show_bug.cgi?id=20849
- Cache property names for getEnumerablePropertyNames in the StructureID.
+ (JSC::JIT::emit_op_resolve_global):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::cti_op_resolve_global): Pretty similar to the old code,
+ but we need two reads and a TimesEight step in order to account for the
+ 64bit value size.
- ~0.5% speedup on Sunspider overall (9.7% speedup on string-fasta). ~1% speedup
- on the v8 test suite.
+ * jit/JITStubs.h:
+ (JSC::): Slightly tweaked this code to specialize for a JSGlobalObject*,
+ to avoid having to pass an irrelevant tag pointer to the stub.
- * kjs/JSObject.cpp:
- (JSC::JSObject::getPropertyNames):
- * kjs/PropertyMap.cpp:
- (JSC::PropertyMap::getEnumerablePropertyNames):
- * kjs/PropertyMap.h:
- * kjs/StructureID.cpp:
- (JSC::StructureID::StructureID):
- (JSC::StructureID::getEnumerablePropertyNames):
- * kjs/StructureID.h:
+2009-05-13 Sam Weinig <sam@webkit.org>
-2008-09-14 Maciej Stachowiak <mjs@apple.com>
+ Reviewed by Geoffrey Garen.
- Reviewed by Cameron Zwarich.
-
- - speed up JS construction by extracting "prototype" lookup so PIC applies.
-
- ~0.5% speedup on SunSpider
- Speeds up some of the V8 tests as well, most notably earley-boyer.
+ Implemented op_to_jsnumber.
- * VM/CTI.cpp:
- (JSC::CTI::compileOpCall): Account for extra arg for prototype.
- (JSC::CTI::privateCompileMainPass): Account for increased size of op_construct.
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitConstruct): Emit separate lookup to get prototype property.
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute): Expect prototype arg in op_construct.
- (JSC::Machine::cti_op_construct_JSConstruct): ditto
- (JSC::Machine::cti_op_construct_NotJSConstruct): ditto
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_to_jsnumber):
+ (JSC::JIT::emitSlow_op_to_jsnumber):
-2008-09-10 Alexey Proskuryakov <ap@webkit.org>
+2009-05-13 Sam Weinig <sam@webkit.org>
- Reviewed by Eric Seidel.
+ Reviewed by Geoffrey Garen.
- Add a protected destructor for RefCounted.
+ Implemented op_convert_this.
- It is wrong to call its destructor directly, because (1) this should be taken care of by
- deref(), and (2) many classes that use RefCounted have non-virtual destructors.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_convert_this):
+ (JSC::JIT::emitSlow_op_convert_this):
- No change in behavior.
+2009-05-13 Geoffrey Garen <ggaren@apple.com>
- * wtf/RefCounted.h: (WTF::RefCounted::~RefCounted):
+ Reviewed by Sam Weinig.
+
+ Got basic JS function and constructor calls working.
+
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JIT.h:
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallSetupArgs):
+ (JSC::JIT::compileOpCallVarargsSetupArgs):
+ (JSC::JIT::compileOpConstructSetupArgs):
+ (JSC::JIT::emit_op_ret):
+ (JSC::JIT::emit_op_construct_verify):
+ (JSC::JIT::emitSlow_op_construct_verify):
+ (JSC::JIT::emitSlow_op_call):
+ (JSC::JIT::emitSlow_op_call_eval):
+ (JSC::JIT::emitSlow_op_call_varargs):
+ (JSC::JIT::emitSlow_op_construct):
+ (JSC::JIT::compileOpCall): Filled out these cases, with call_eval #if'd out.
-2008-09-14 Gavin Barraclough <barraclough@apple.com>
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitPutJITStubArgFromVirtualRegister):
+ (JSC::JIT::emitLoad): Restored some legacy "*CTIArg*" functions,
+ since I wanted to avoid the complexity of revamping the API here while
+ trying to bring it up. Eventually, we should re-remove all of these functions.
- Reviewed by Sam Weinig.
+ (JSC::JIT::recordJumpTarget): Removed unnecessary macro cruft. You will
+ not silence me, Sam Weinig! The world will know that you are a crufty,
+ crufty, crufty programmer!!!
- Accelerated property accesses.
+ * jit/JITOpcodes.cpp:
+ * jit/JITStubs.cpp:
+ (JSC::):
+ * jit/JITStubs.h: Changed up some offsets in the JITStackFrame class, since
+ and off-by-one error was causing stack misalignment.
- Inline more of the array access code into the JIT code for get/put_by_val.
- Accelerate get/put_by_id by speculatively inlining a disable direct access
- into the hot path of the code, and repatch this with the correct StructureID
- and property map offset once these are known. In the case of accesses to the
- prototype and reading the array-length a trampoline is genertaed, and the
- branch to the slow-case is relinked to jump to this.
+2009-05-13 Sam Weinig <sam@webkit.org>
- By repatching, we mean rewriting the x86 instruction stream. Instructions are
- only modified in a simple fasion - altering immediate operands, memory access
- deisplacements, and branch offsets.
-
- For regular get_by_id/put_by_id accesses to an object, a StructureID in an
- instruction's immediate operant is updateded, and a memory access operation's
- displacement is updated to access the correct field on the object. In the case
- of more complex accesses (array length and get_by_id_prototype) the offset on
- the branch to slow-case is updated, to now jump to a trampoline.
-
- +2.8% sunspider, +13% v8-tests
-
- * VM/CTI.cpp:
- (JSC::CTI::emitCall):
- (JSC::CTI::emitJumpSlowCaseIfNotJSCell):
- (JSC::CTI::CTI):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- (JSC::CTI::privateCompileGetByIdSelf):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::privateCompilePutByIdReplace):
- (JSC::CTI::privateCompilePutByIdTransition):
- (JSC::CTI::privateCompileArrayLengthTrampoline):
- (JSC::CTI::privateCompileStringLengthTrampoline):
- (JSC::CTI::patchGetByIdSelf):
- (JSC::CTI::patchPutByIdReplace):
- (JSC::CTI::privateCompilePatchGetArrayLength):
- (JSC::CTI::privateCompilePatchGetStringLength):
- * VM/CTI.h:
- (JSC::CTI::compileGetByIdSelf):
- (JSC::CTI::compileGetByIdProto):
- (JSC::CTI::compileGetByIdChain):
- (JSC::CTI::compilePutByIdReplace):
- (JSC::CTI::compilePutByIdTransition):
- (JSC::CTI::compileArrayLengthTrampoline):
- (JSC::CTI::compileStringLengthTrampoline):
- (JSC::CTI::compilePatchGetArrayLength):
- (JSC::CTI::compilePatchGetStringLength):
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- (JSC::CodeBlock::~CodeBlock):
- * VM/CodeBlock.h:
- (JSC::StructureStubInfo::StructureStubInfo):
- (JSC::CodeBlock::getStubInfo):
- * VM/Machine.cpp:
- (JSC::Machine::tryCTICachePutByID):
- (JSC::Machine::tryCTICacheGetByID):
- (JSC::Machine::cti_op_put_by_val_array):
- * VM/Machine.h:
- * masm/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::cmpl_i8m):
- (JSC::X86Assembler::emitUnlinkedJa):
- (JSC::X86Assembler::getRelocatedAddress):
- (JSC::X86Assembler::getDifferenceBetweenLabels):
- (JSC::X86Assembler::emitModRm_opmsib):
+ Reviewed by Geoffrey Garen.
-2008-09-14 Maciej Stachowiak <mjs@apple.com>
+ Implement op_eq_null and op_neq_null.
- Reviewed by Cameron Zwarich.
-
- - split the "prototype" lookup for hasInstance into opcode stream so it can be cached
-
- ~5% speedup on v8 earley-boyer test
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::set8):
+ (JSC::MacroAssemblerX86Common::setTest8):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_stricteq):
+ (JSC::JIT::emitSlow_op_stricteq):
+ (JSC::JIT::emit_op_nstricteq):
+ (JSC::JIT::emitSlow_op_nstricteq):
+ (JSC::JIT::emit_op_eq_null):
+ (JSC::JIT::emit_op_neq_null):
+ * jsc.cpp:
- * API/JSCallbackObject.h: Add a parameter for the pre-looked-up prototype.
- * API/JSCallbackObjectFunctions.h:
- (JSC::::hasInstance): Ditto.
- * API/JSValueRef.cpp:
- (JSValueIsInstanceOfConstructor): Look up and pass in prototype.
- * JavaScriptCore.exp:
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass): Pass along prototype.
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump): Print third arg.
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitInstanceOf): Implement this, now that there
- is a third argument.
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute): Pass along the prototype.
- (JSC::Machine::cti_op_instanceof): ditto
- * kjs/JSObject.cpp:
- (JSC::JSObject::hasInstance): Expect to get a pre-looked-up prototype.
- * kjs/JSObject.h:
- * kjs/nodes.cpp:
- (JSC::InstanceOfNode::emitCode): Emit a get_by_id of the prototype
- property and pass that register to instanceof.
- * kjs/nodes.h:
-
-2008-09-14 Gavin Barraclough <barraclough@apple.com>
+2009-05-12 Sam Weinig <sam@webkit.org>
- Reviewed by Sam Weinig.
+ Reviewed by Geoffrey Garen.
- Remove unnecessary virtual function call from cti_op_call_JSFunction -
- ~5% on richards, ~2.5% on v8-tests, ~0.5% on sunspider.
+ Implement op_new_error.
- * VM/Machine.cpp:
- (JSC::Machine::cti_op_call_JSFunction):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_new_error):
+ * jit/JITStubCall.h:
+ (JSC::JITStubCall::addArgument): Add a version of addArgument
+ that takes a constant JSValue.
-2008-09-14 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+2009-05-12 Sam Weinig <sam@webkit.org>
- Reviewed by Maciej Stachowiak.
+ Reviewed by Geoffrey Garen.
- Bug 20827: the 'typeof' operator is slow
- <https://bugs.webkit.org/show_bug.cgi?id=20827>
+ Remove now unused emitGetVariableObjectRegister and emitPutVariableObjectRegister.
- Optimize the 'typeof' operator when its result is compared to a constant
- string.
+ * jit/JIT.cpp:
+ * jit/JIT.h:
- This is a 5.5% speedup on the V8 Earley-Boyer test.
+2009-05-12 Sam Weinig <sam@webkit.org>
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitEqualityOp):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (JSC::jsIsObjectType):
- (JSC::jsIsFunctionType):
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_is_undefined):
- (JSC::Machine::cti_op_is_boolean):
- (JSC::Machine::cti_op_is_number):
- (JSC::Machine::cti_op_is_string):
- (JSC::Machine::cti_op_is_object):
- (JSC::Machine::cti_op_is_function):
- * VM/Machine.h:
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (JSC::BinaryOpNode::emitCode):
- (JSC::EqualNode::emitCode):
- (JSC::StrictEqualNode::emitCode):
- * kjs/nodes.h:
-
-2008-09-14 Sam Weinig <sam@webkit.org>
+ Reviewed by Geoffrey Garen.
- Reviewed by Cameron Zwarich.
+ Implement op_to_primitive and op_next_pname.
- Patch for https://bugs.webkit.org/show_bug.cgi?id=20844
- Speed up parseInt for numbers
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emitSlow_op_construct_verify):
+ (JSC::JIT::emit_op_to_primitive):
+ (JSC::JIT::emitSlow_op_to_primitive):
+ (JSC::JIT::emitSlow_op_loop_if_true):
+ (JSC::JIT::emit_op_jtrue):
+ (JSC::JIT::emit_op_next_pname):
- Sunspider reports this as 1.029x as fast overall and 1.37x as fast on string-unpack-code.
- No change on the v8 suite.
+2009-05-12 Sam Weinig <sam@webkit.org>
- * kjs/JSGlobalObjectFunctions.cpp:
- (JSC::globalFuncParseInt): Don't convert numbers to strings just to
- convert them back to numbers.
+ Reviewed by Geoffrey Garen.
-2008-09-14 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Add op_get_global_var, op_put_global_var, emit_op_get_scoped_var, emit_op_put_scoped_var and
+ op_unexpected_load.
- Reviewed by Oliver Hunt.
+ * jit/JIT.h:
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::tagFor):
+ (JSC::JIT::payloadFor):
+ (JSC::JIT::emitLoad):
+ (JSC::JIT::emitStore):
+ (JSC::JIT::emitLoadReturnValue):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_get_global_var):
+ (JSC::JIT::emit_op_put_global_var):
+ (JSC::JIT::emit_op_get_scoped_var):
+ (JSC::JIT::emit_op_put_scoped_var):
+ (JSC::JIT::emit_op_unexpected_load):
+
+2009-05-12 Geoffrey Garen <ggaren@apple.com>
- Bug 20816: op_lesseq should be optimized
- <https://bugs.webkit.org/show_bug.cgi?id=20816>
+ Reviewed by Sam Weinig.
- Add a loop_if_lesseq opcode that is similar to the loop_if_less opcode.
+ Added overflow handling to op_sub.
- This is a 9.4% speedup on the V8 Crypto benchmark.
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitSlow_op_sub):
+ (JSC::JIT::emitSlowSub32InPlaceLeft):
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitJumpIfTrue):
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_loop_if_lesseq):
- * VM/Machine.h:
- * VM/Opcode.h:
+2009-05-12 Sam Weinig <sam@webkit.org>
-2008-09-14 Sam Weinig <sam@webkit.org>
+ Reviewed by Geoffrey Garen.
- Reviewed by Cameron Zwarich.
+ Remove a function call by folding op_get_by_id and op_put_by_id into
+ their respective compile functions.
- Cleanup Sampling code.
+ * jit/JIT.h:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_get_by_id):
+ (JSC::JIT::emitSlow_op_get_by_id):
+ (JSC::JIT::emit_op_put_by_id):
+ (JSC::JIT::emitSlow_op_put_by_id):
- * VM/CTI.cpp:
- (JSC::CTI::emitCall):
- (JSC::CTI::privateCompileMainPass):
- * VM/CTI.h:
- (JSC::CTI::execute):
- * VM/SamplingTool.cpp:
- (JSC::):
- (JSC::SamplingTool::run):
- (JSC::SamplingTool::dump):
- * VM/SamplingTool.h:
- (JSC::SamplingTool::callingHostFunction):
+2009-05-12 Sam Weinig <sam@webkit.org>
-2008-09-13 Oliver Hunt <oliver@apple.com>
+ Reviewed by Geoffrey Garen.
- Reviewed by Cameron Zwarich.
+ Make JITStubCall work in 64bit by making the stack index
+ step dependent on the size of void*.
- Bug 20821: Cache property transitions to speed up object initialization
- https://bugs.webkit.org/show_bug.cgi?id=20821
+ * jit/JITStubCall.h:
+ (JSC::JITStubCall::JITStubCall):
+ (JSC::JITStubCall::addArgument):
- Implement a transition cache to improve the performance of new properties
- being added to objects. This is extremely beneficial in constructors and
- shows up as a 34% improvement on access-binary-trees in SunSpider (0.8%
- overall)
+2009-05-12 Sam Weinig <sam@webkit.org>
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- (JSC::):
- (JSC::transitionWillNeedStorageRealloc):
- (JSC::CTI::privateCompilePutByIdTransition):
- * VM/CTI.h:
- (JSC::CTI::compilePutByIdTransition):
- * VM/CodeBlock.cpp:
- (JSC::printPutByIdOp):
- (JSC::CodeBlock::printStructureIDs):
- (JSC::CodeBlock::dump):
- (JSC::CodeBlock::derefStructureIDs):
- (JSC::CodeBlock::refStructureIDs):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::emitPutById):
- * VM/Machine.cpp:
- (JSC::cachePrototypeChain):
- (JSC::Machine::tryCachePutByID):
- (JSC::Machine::tryCacheGetByID):
- (JSC::Machine::privateExecute):
- (JSC::Machine::tryCTICachePutByID):
- (JSC::Machine::tryCTICacheGetByID):
- * VM/Machine.h:
- * VM/Opcode.h:
- * kjs/JSObject.h:
- (JSC::JSObject::putDirect):
- (JSC::JSObject::transitionTo):
- * kjs/PutPropertySlot.h:
- (JSC::PutPropertySlot::PutPropertySlot):
- (JSC::PutPropertySlot::wasTransition):
- (JSC::PutPropertySlot::setWasTransition):
- * kjs/StructureID.cpp:
- (JSC::StructureID::transitionTo):
- (JSC::StructureIDChain::StructureIDChain):
- * kjs/StructureID.h:
- (JSC::StructureID::previousID):
- (JSC::StructureID::setCachedPrototypeChain):
- (JSC::StructureID::cachedPrototypeChain):
- (JSC::StructureID::propertyMap):
- * masm/X86Assembler.h:
- (JSC::X86Assembler::addl_i8m):
- (JSC::X86Assembler::subl_i8m):
-
-2008-09-12 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Reviewed by Geoffrey Garen.
- Reviewed by Maciej Stachowiak.
+ Implement simple version of property access opcodes
+ which just call a stub functions.
- Bug 20819: JSValue::isObject() is slow
- <https://bugs.webkit.org/show_bug.cgi?id=20819>
+ * jit/JITOpcodes.cpp:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emitSlow_op_put_by_id):
+ (JSC::JIT::emitSlow_op_get_by_id):
+ (JSC::JIT::emit_op_get_by_val):
+ (JSC::JIT::emitSlow_op_get_by_val):
+ (JSC::JIT::emit_op_put_by_val):
+ (JSC::JIT::emitSlow_op_put_by_val):
+ (JSC::JIT::emit_op_put_by_index):
+ (JSC::JIT::emit_op_put_getter):
+ (JSC::JIT::emit_op_put_setter):
+ (JSC::JIT::emit_op_del_by_id):
+ (JSC::JIT::compileGetByIdHotPath):
+ (JSC::JIT::compilePutByIdHotPath):
+ * jit/JITStubCall.h:
+ (JSC::JITStubCall::addArgument):
+ * jsc.cpp:
- Optimize JSCell::isObject() and JSCell::isString() by making them
- non-virtual calls that rely on the StructureID type information.
+2009-05-12 Geoffrey Garen <ggaren@apple.com>
- This is a 0.7% speedup on SunSpider and a 1.0% speedup on the V8
- benchmark suite.
+ Reviewed by Sam Weinig.
+
+ Added work-around for XCode debugging echo problem.
- * JavaScriptCore.exp:
- * kjs/JSCell.cpp:
- * kjs/JSCell.h:
- (JSC::JSCell::isObject):
- (JSC::JSCell::isString):
- * kjs/JSObject.cpp:
- * kjs/JSObject.h:
- * kjs/JSString.cpp:
- * kjs/JSString.h:
- (JSC::JSString::JSString):
- * kjs/StructureID.h:
- (JSC::StructureID::type):
+ * jsc.cpp:
+ (runInteractive):
-2008-09-11 Stephanie Lewis <slewis@apple.com>
+2009-05-12 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Oliver Hunt.
+ Reviewed by Sam Weinig.
+
+ Added overflow handling to op_add.
- Turn off PGO Optimization on CTI.cpp -> <rdar://problem/6207709>. Fixes
- crash on CNN and on Dromaeo.
- Fix Missing close tag in vcproj.
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitSlow_op_add):
+ (JSC::JIT::emitSlowAdd32InPlace):
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+2009-05-12 Sam Weinig <sam@webkit.org>
-2008-09-11 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Reviewed by Geoffrey Garen.
- Not reviewed.
+ Add slow cases for op_jnless or emit_op_jnlesseq.
- Correct an SVN problem with the last commit and actually add the new
- files.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitSlow_op_jnless):
+ (JSC::JIT::emitSlow_op_jnlesseq):
- * wrec/CharacterClassConstructor.cpp: Added.
- (JSC::):
- (JSC::getCharacterClassNewline):
- (JSC::getCharacterClassDigits):
- (JSC::getCharacterClassSpaces):
- (JSC::getCharacterClassWordchar):
- (JSC::getCharacterClassNondigits):
- (JSC::getCharacterClassNonspaces):
- (JSC::getCharacterClassNonwordchar):
- (JSC::CharacterClassConstructor::addSorted):
- (JSC::CharacterClassConstructor::addSortedRange):
- (JSC::CharacterClassConstructor::put):
- (JSC::CharacterClassConstructor::flush):
- (JSC::CharacterClassConstructor::append):
- * wrec/CharacterClassConstructor.h: Added.
- (JSC::CharacterClassConstructor::CharacterClassConstructor):
- (JSC::CharacterClassConstructor::isUpsideDown):
- (JSC::CharacterClassConstructor::charClass):
-
-2008-09-11 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+2009-05-12 Sam Weinig <sam@webkit.org>
- Reviewed by Maciej Stachowiak.
+ Reviewed by Geoffrey Garen.
- Bug 20788: Split CharacterClassConstructor into its own file
- <https://bugs.webkit.org/show_bug.cgi?id=20788>
+ Add implementations for op_jnless, emit_op_jnlesseq, op_loop_if_less and op_loop_if_lesseq.
+ No slow cases for op_jnless or emit_op_jnlesseq yet.
- Split CharacterClassConstructor into its own file and clean up some
- style issues.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_jnless):
+ (JSC::JIT::emitSlow_op_jnless):
+ (JSC::JIT::emit_op_jnlesseq):
+ (JSC::JIT::emitSlow_op_jnlesseq):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_loop_if_less):
+ (JSC::JIT::emitSlow_op_loop_if_less):
+ (JSC::JIT::emit_op_loop_if_lesseq):
+ (JSC::JIT::emitSlow_op_loop_if_lesseq):
+
+2009-05-12 Sam Weinig <sam@webkit.org>
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * wrec/CharacterClassConstructor.cpp: Added.
- (JSC::):
- (JSC::getCharacterClassNewline):
- (JSC::getCharacterClassDigits):
- (JSC::getCharacterClassSpaces):
- (JSC::getCharacterClassWordchar):
- (JSC::getCharacterClassNondigits):
- (JSC::getCharacterClassNonspaces):
- (JSC::getCharacterClassNonwordchar):
- (JSC::CharacterClassConstructor::addSorted):
- (JSC::CharacterClassConstructor::addSortedRange):
- (JSC::CharacterClassConstructor::put):
- (JSC::CharacterClassConstructor::flush):
- (JSC::CharacterClassConstructor::append):
- * wrec/CharacterClassConstructor.h: Added.
- (JSC::CharacterClassConstructor::CharacterClassConstructor):
- (JSC::CharacterClassConstructor::isUpsideDown):
- (JSC::CharacterClassConstructor::charClass):
- * wrec/WREC.cpp:
- (JSC::WRECParser::parseCharacterClass):
-
-2008-09-10 Simon Hausmann <hausmann@webkit.org>
-
- Not reviewed but trivial one-liner for yet unused macro.
-
- Changed PLATFORM(WINCE) to PLATFORM(WIN_CE) as requested by Mark.
-
- (part of https://bugs.webkit.org/show_bug.cgi?id=20746)
+ Reviewed by Geoffrey Garen.
- * wtf/Platform.h:
+ Turn the RECORD_JUMP_TARGET macro into an inline function.
-2008-09-10 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ * jit/JIT.h:
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::recordJumpTarget):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_jmp):
+ (JSC::JIT::emit_op_jsr):
+ (JSC::JIT::emit_op_jmp_scopes):
- Rubber-stamped by Oliver Hunt.
+2009-05-12 Sam Weinig <sam@webkit.org>
- Fix a typo by renaming the overloaded orl_rr that takes an immediate to
- orl_i32r.
+ Add MacroAssemblerX86Common::set8 to fix the build.
- * VM/CTI.cpp:
- (JSC::CTI::emitFastArithPotentiallyReTagImmediate):
- * masm/X86Assembler.h:
- (JSC::X86Assembler::orl_i32r):
- * wrec/WREC.cpp:
- (JSC::WRECGenerator::generatePatternCharacter):
- (JSC::WRECGenerator::generateCharacterClassInverted):
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::set8):
-2008-09-10 Sam Weinig <sam@webkit.org>
+2009-05-12 Geoffrey Garen <ggaren@apple.com>
- Reviewed by Geoff Garen.
+ Reviewed by Sam Weinig.
+
+ Added overflow recovery for pre_inc and pre_dec.
+
+ Turned some short-circuit code into early returns, as is the WebKit style.
- Add inline property storage for JSObject.
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_post_inc):
+ (JSC::JIT::emitSlow_op_post_inc):
+ (JSC::JIT::emit_op_post_dec):
+ (JSC::JIT::emitSlow_op_post_dec):
+ (JSC::JIT::emitSlow_op_pre_inc):
+ (JSC::JIT::emitSlow_op_pre_dec):
- 1.2% progression on Sunspider. .5% progression on the v8 test suite.
+2009-05-12 Sam Weinig <sam@webkit.org>
- * JavaScriptCore.exp:
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- * kjs/JSObject.cpp:
- (JSC::JSObject::mark): There is no reason to check storageSize now that
- we start from 0.
- (JSC::JSObject::allocatePropertyStorage): Allocates/reallocates heap storage.
- * kjs/JSObject.h:
- (JSC::JSObject::offsetForLocation): m_propertyStorage is not an OwnArrayPtr
- now so there is no reason to .get()
- (JSC::JSObject::usingInlineStorage):
- (JSC::JSObject::JSObject): Start with m_propertyStorage pointing to the
- inline storage.
- (JSC::JSObject::~JSObject): Free the heap storage if not using the inline
- storage.
- (JSC::JSObject::putDirect): Switch to the heap storage only when we know
- we know that we are about to add a property that will overflow the inline
- storage.
- * kjs/PropertyMap.cpp:
- (JSC::PropertyMap::createTable): Don't allocate the propertyStorage, that is
- now handled by JSObject.
- (JSC::PropertyMap::rehash): PropertyStorage is not a OwnArrayPtr anymore.
- * kjs/PropertyMap.h:
- (JSC::PropertyMap::storageSize): Rename from markingCount.
- * kjs/StructureID.cpp:
- (JSC::StructureID::addPropertyTransition): Don't resize the property storage
- if we are using inline storage.
- * kjs/StructureID.h:
-
-2008-09-10 Oliver Hunt <oliver@apple.com>
+ Reviewed by Geoffrey Garen.
- Reviewed by Geoff Garen.
+ Implement op_jmp, op_loop, op_eq and op_neq.
- Inline immediate number version of op_mul.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_jmp):
+ (JSC::JIT::emit_op_loop):
+ (JSC::JIT::emit_op_eq):
+ (JSC::JIT::emitSlow_op_eq):
+ (JSC::JIT::emit_op_neq):
+ (JSC::JIT::emitSlow_op_neq):
+ (JSC::JIT::emit_op_enter):
+ (JSC::JIT::emit_op_enter_with_activation):
- Renamed mull_rr to imull_rr as that's what it's
- actually doing, and added imull_i32r for the constant
- case immediate multiply.
+2009-05-12 Sam Weinig <sam@webkit.org>
- 1.1% improvement to SunSpider.
+ Reviewed by Geoffrey Garen.
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * masm/X86Assembler.h:
- (JSC::X86Assembler::):
- (JSC::X86Assembler::imull_rr):
- (JSC::X86Assembler::imull_i32r):
+ Implement the slow cases for arithmetic opcodes.
-2008-09-10 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emitSlow_op_lshift):
+ (JSC::JIT::emitSlow_op_rshift):
+ (JSC::JIT::emitSlow_op_bitand):
+ (JSC::JIT::emitSlow_op_bitor):
+ (JSC::JIT::emitSlow_op_bitxor):
+ (JSC::JIT::emitSlow_op_bitnot):
+ (JSC::JIT::emitSlow_op_sub):
+ (JSC::JIT::emitSlow_op_mul):
+ (JSC::JIT::emitSlow_op_mod):
+ (JSC::JIT::emit_op_mod):
+
+2009-05-12 Sam Weinig <sam@webkit.org>
- Not reviewed.
+ Reviewed by Geoffrey Garen.
- Mac build fix.
+ Implement op_bitnot.
- * JavaScriptCore.xcodeproj/project.pbxproj:
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::not32):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::notl_m):
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_bitnot):
-2008-09-09 Oliver Hunt <oliver@apple.com>
+2009-05-12 Sam Weinig <sam@webkit.org>
- Reviewed by Maciej Stachowiak.
+ Reviewed by Geoffrey Garen.
- Add optimised access to known properties on the global object.
+ Add arithmetic opcode implementations from the old nitro-extreme branch.
- Improve cross scope access to the global object by emitting
- code to access it directly rather than by walking the scope chain.
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_jnless):
+ (JSC::JIT::emitSlow_op_jnless):
+ (JSC::JIT::emit_op_jnlesseq):
+ (JSC::JIT::emitSlow_op_jnlesseq):
+ (JSC::JIT::emit_op_lshift):
+ (JSC::JIT::emitSlow_op_lshift):
+ (JSC::JIT::emit_op_rshift):
+ (JSC::JIT::emitSlow_op_rshift):
+ (JSC::JIT::emit_op_bitand):
+ (JSC::JIT::emitBitAnd32Constant):
+ (JSC::JIT::emitBitAnd32InPlace):
+ (JSC::JIT::emit_op_bitor):
+ (JSC::JIT::emitSlow_op_bitor):
+ (JSC::JIT::emitBitOr32Constant):
+ (JSC::JIT::emitBitOr32InPlace):
+ (JSC::JIT::emit_op_bitxor):
+ (JSC::JIT::emitSlow_op_bitxor):
+ (JSC::JIT::emitBitXor32Constant):
+ (JSC::JIT::emitBitXor32InPlace):
+ (JSC::JIT::emit_op_bitnot):
+ (JSC::JIT::emitSlow_op_bitnot):
+ (JSC::JIT::emit_op_post_inc):
+ (JSC::JIT::emitSlow_op_post_inc):
+ (JSC::JIT::emit_op_post_dec):
+ (JSC::JIT::emitSlow_op_post_dec):
+ (JSC::JIT::emit_op_pre_inc):
+ (JSC::JIT::emitSlow_op_pre_inc):
+ (JSC::JIT::emit_op_pre_dec):
+ (JSC::JIT::emitSlow_op_pre_dec):
+ (JSC::JIT::emit_op_add):
+ (JSC::JIT::emitAdd32Constant):
+ (JSC::JIT::emitAdd32InPlace):
+ (JSC::JIT::emitSlow_op_add):
+ (JSC::JIT::emit_op_sub):
+ (JSC::JIT::emitSlow_op_sub):
+ (JSC::JIT::emitSub32ConstantLeft):
+ (JSC::JIT::emitSub32ConstantRight):
+ (JSC::JIT::emitSub32InPlaceLeft):
+ (JSC::JIT::emitSub32InPlaceRight):
+ (JSC::JIT::emit_op_mul):
+ (JSC::JIT::emitSlow_op_mul):
+ (JSC::JIT::emitMul32Constant):
+ (JSC::JIT::emitMul32InPlace):
+ (JSC::JIT::emit_op_mod):
+ (JSC::JIT::emitSlow_op_mod):
+ * jit/JITOpcodes.cpp:
+
+2009-05-12 Geoffrey Garen <ggaren@apple.com>
+
+ Removed JIT_OPTIMIZE_ARITHMETIC setting, since it was all about 32bit
+ value representations.
+
+ Added JSAPIValueWrapper to the repository.
+
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ * runtime/JSAPIValueWrapper.cpp: Added.
+ (JSC::JSAPIValueWrapper::toPrimitive):
+ (JSC::JSAPIValueWrapper::getPrimitiveNumber):
+ (JSC::JSAPIValueWrapper::toBoolean):
+ (JSC::JSAPIValueWrapper::toNumber):
+ (JSC::JSAPIValueWrapper::toString):
+ (JSC::JSAPIValueWrapper::toObject):
+ * runtime/JSAPIValueWrapper.h: Added.
+ (JSC::JSAPIValueWrapper::value):
+ (JSC::JSAPIValueWrapper::isAPIValueWrapper):
+ (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
+ (JSC::jsAPIValueWrapper):
+ * wtf/Platform.h:
- This is a 0.8% win in SunSpider and a 1.7% win in the v8 benchmarks.
+2009-05-12 Geoffrey Garen <ggaren@apple.com>
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::emitGetVariableObjectRegister):
- (JSC::CTI::emitPutVariableObjectRegister):
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- (JSC::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (JSC::CodeGenerator::findScopedProperty):
- (JSC::CodeGenerator::emitResolve):
- (JSC::CodeGenerator::emitGetScopedVar):
- (JSC::CodeGenerator::emitPutScopedVar):
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (JSC::Machine::privateExecute):
- * VM/Opcode.h:
- * kjs/nodes.cpp:
- (JSC::FunctionCallResolveNode::emitCode):
- (JSC::PostfixResolveNode::emitCode):
- (JSC::PrefixResolveNode::emitCode):
- (JSC::ReadModifyResolveNode::emitCode):
- (JSC::AssignResolveNode::emitCode):
-
-2008-09-10 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver.
-
- - enable polymorphic inline caching of properties of primitives
+ Turned on the JIT and got it building and running the most trivial of
+ programs.
- 1.012x speedup on SunSpider.
-
- We create special structure IDs for JSString and
- JSNumberCell. Unlike normal structure IDs, these cannot hold the
- true prototype. Due to JS autoboxing semantics, the prototype used
- when looking up string or number properties depends on the lexical
- global object of the call site, not the creation site. Thus we
- enable StructureIDs to handle this quirk for primitives.
+ All configurable optimizations are turned off, and a few opcodes are ad
+ hoc #if'd out.
- Everything else should be straightforward.
+ So far, I've only merged op_mov and op_end, but some stub-reliant
+ opcodes work as-is from TOT.
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- * VM/CTI.h:
- (JSC::CTI::compileGetByIdProto):
- (JSC::CTI::compileGetByIdChain):
- * VM/JSPropertyNameIterator.h:
- (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
- * VM/Machine.cpp:
- (JSC::Machine::Machine):
- (JSC::cachePrototypeChain):
- (JSC::Machine::tryCachePutByID):
- (JSC::Machine::tryCacheGetByID):
- (JSC::Machine::privateExecute):
- (JSC::Machine::tryCTICachePutByID):
- (JSC::Machine::tryCTICacheGetByID):
- * kjs/GetterSetter.h:
- (JSC::GetterSetter::GetterSetter):
- * kjs/JSCell.h:
- * kjs/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- * kjs/JSGlobalData.h:
- * kjs/JSGlobalObject.h:
- (JSC::StructureID::prototypeForLookup):
- * kjs/JSNumberCell.h:
- (JSC::JSNumberCell::JSNumberCell):
- (JSC::jsNumberCell):
- * kjs/JSObject.h:
- (JSC::JSObject::prototype):
- * kjs/JSString.cpp:
- (JSC::jsString):
- (JSC::jsSubstring):
- (JSC::jsOwnedString):
- * kjs/JSString.h:
- (JSC::JSString::JSString):
- (JSC::JSString::):
- (JSC::jsSingleCharacterString):
- (JSC::jsSingleCharacterSubstring):
- (JSC::jsNontrivialString):
- * kjs/SmallStrings.cpp:
- (JSC::SmallStrings::createEmptyString):
- (JSC::SmallStrings::createSingleCharacterString):
- * kjs/StructureID.cpp:
- (JSC::StructureID::StructureID):
- (JSC::StructureID::addPropertyTransition):
- (JSC::StructureID::getterSetterTransition):
- (JSC::StructureIDChain::StructureIDChain):
- * kjs/StructureID.h:
- (JSC::StructureID::create):
- (JSC::StructureID::storedPrototype):
-
-2008-09-09 Joerg Bornemann <joerg.bornemann@trolltech.com>
-
- Reviewed by Sam Weinig.
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::~CodeBlock):
+ * bytecode/CodeBlock.h:
+ * jit/JIT.cpp:
+ (JSC::JIT::compileOpStrictEq):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_lshift):
+ (JSC::JIT::emitSlow_op_lshift):
+ (JSC::JIT::emit_op_rshift):
+ (JSC::JIT::emitSlow_op_rshift):
+ (JSC::JIT::emit_op_jnless):
+ (JSC::JIT::emitSlow_op_jnless):
+ (JSC::JIT::emit_op_jnlesseq):
+ (JSC::JIT::emitSlow_op_jnlesseq):
+ (JSC::JIT::emit_op_bitand):
+ (JSC::JIT::emitSlow_op_bitand):
+ (JSC::JIT::emit_op_post_inc):
+ (JSC::JIT::emitSlow_op_post_inc):
+ (JSC::JIT::emit_op_post_dec):
+ (JSC::JIT::emitSlow_op_post_dec):
+ (JSC::JIT::emit_op_pre_inc):
+ (JSC::JIT::emitSlow_op_pre_inc):
+ (JSC::JIT::emit_op_pre_dec):
+ (JSC::JIT::emitSlow_op_pre_dec):
+ (JSC::JIT::emit_op_mod):
+ (JSC::JIT::emitSlow_op_mod):
+ (JSC::JIT::emit_op_add):
+ (JSC::JIT::emit_op_mul):
+ (JSC::JIT::emit_op_sub):
+ (JSC::JIT::compileBinaryArithOpSlowCase):
+ (JSC::JIT::emitSlow_op_add):
+ (JSC::JIT::emitSlow_op_mul):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallInitializeCallFrame):
+ (JSC::JIT::compileOpConstructSetupArgs):
+ (JSC::JIT::compileOpCallVarargs):
+ (JSC::JIT::compileOpCall):
+ (JSC::JIT::compileOpCallSlowCase):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::getConstantOperandImmediateInt):
+ (JSC::JIT::isOperandConstantImmediateInt):
+ (JSC::JIT::emitInitRegister):
+ (JSC::JIT::addSlowCase):
+ (JSC::JIT::addJump):
+ (JSC::JIT::emitJumpSlowToHot):
+ (JSC::JIT::tagFor):
+ (JSC::JIT::payloadFor):
+ (JSC::JIT::emitLoad):
+ (JSC::JIT::emitLoadReturnValue):
+ (JSC::JIT::emitStore):
+ (JSC::JIT::emitStoreReturnValue):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_mov):
+ (JSC::JIT::emit_op_end):
+ (JSC::JIT::emit_op_jmp):
+ (JSC::JIT::emit_op_loop):
+ (JSC::JIT::emit_op_loop_if_less):
+ (JSC::JIT::emit_op_loop_if_lesseq):
+ (JSC::JIT::emit_op_instanceof):
+ (JSC::JIT::emit_op_get_global_var):
+ (JSC::JIT::emit_op_put_global_var):
+ (JSC::JIT::emit_op_get_scoped_var):
+ (JSC::JIT::emit_op_put_scoped_var):
+ (JSC::JIT::emit_op_tear_off_activation):
+ (JSC::JIT::emit_op_ret):
+ (JSC::JIT::emit_op_construct_verify):
+ (JSC::JIT::emit_op_to_primitive):
+ (JSC::JIT::emit_op_loop_if_true):
+ (JSC::JIT::emit_op_resolve_global):
+ (JSC::JIT::emit_op_not):
+ (JSC::JIT::emit_op_jfalse):
+ (JSC::JIT::emit_op_jeq_null):
+ (JSC::JIT::emit_op_jneq_null):
+ (JSC::JIT::emit_op_jneq_ptr):
+ (JSC::JIT::emit_op_unexpected_load):
+ (JSC::JIT::emit_op_eq):
+ (JSC::JIT::emit_op_bitnot):
+ (JSC::JIT::emit_op_jtrue):
+ (JSC::JIT::emit_op_neq):
+ (JSC::JIT::emit_op_bitxor):
+ (JSC::JIT::emit_op_bitor):
+ (JSC::JIT::emit_op_throw):
+ (JSC::JIT::emit_op_next_pname):
+ (JSC::JIT::emit_op_push_scope):
+ (JSC::JIT::emit_op_to_jsnumber):
+ (JSC::JIT::emit_op_push_new_scope):
+ (JSC::JIT::emit_op_catch):
+ (JSC::JIT::emit_op_switch_imm):
+ (JSC::JIT::emit_op_switch_char):
+ (JSC::JIT::emit_op_switch_string):
+ (JSC::JIT::emit_op_new_error):
+ (JSC::JIT::emit_op_eq_null):
+ (JSC::JIT::emit_op_neq_null):
+ (JSC::JIT::emit_op_convert_this):
+ (JSC::JIT::emit_op_profile_will_call):
+ (JSC::JIT::emit_op_profile_did_call):
+ (JSC::JIT::emitSlow_op_construct_verify):
+ (JSC::JIT::emitSlow_op_get_by_val):
+ (JSC::JIT::emitSlow_op_loop_if_less):
+ (JSC::JIT::emitSlow_op_loop_if_lesseq):
+ (JSC::JIT::emitSlow_op_put_by_val):
+ (JSC::JIT::emitSlow_op_not):
+ (JSC::JIT::emitSlow_op_instanceof):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_get_by_val):
+ (JSC::JIT::emit_op_put_by_val):
+ (JSC::JIT::emit_op_put_by_index):
+ (JSC::JIT::emit_op_put_getter):
+ (JSC::JIT::emit_op_put_setter):
+ (JSC::JIT::emit_op_del_by_id):
+ (JSC::JIT::compileGetByIdHotPath):
+ (JSC::JIT::compilePutByIdHotPath):
+ * jit/JITStubCall.h:
+ (JSC::JITStubCall::JITStubCall):
+ (JSC::JITStubCall::addArgument):
+ (JSC::JITStubCall::call):
+ (JSC::JITStubCall::):
+ (JSC::CallEvalJITStub::CallEvalJITStub):
+ * jit/JITStubs.cpp:
+ (JSC::):
+ (JSC::JITStubs::cti_op_add):
+ (JSC::JITStubs::cti_op_pre_inc):
+ (JSC::JITStubs::cti_op_mul):
+ (JSC::JITStubs::cti_op_get_by_val):
+ (JSC::JITStubs::cti_op_get_by_val_string):
+ (JSC::JITStubs::cti_op_get_by_val_byte_array):
+ (JSC::JITStubs::cti_op_sub):
+ (JSC::JITStubs::cti_op_put_by_val):
+ (JSC::JITStubs::cti_op_put_by_val_array):
+ (JSC::JITStubs::cti_op_put_by_val_byte_array):
+ (JSC::JITStubs::cti_op_negate):
+ (JSC::JITStubs::cti_op_div):
+ (JSC::JITStubs::cti_op_pre_dec):
+ (JSC::JITStubs::cti_op_post_inc):
+ (JSC::JITStubs::cti_op_eq):
+ (JSC::JITStubs::cti_op_lshift):
+ (JSC::JITStubs::cti_op_bitand):
+ (JSC::JITStubs::cti_op_rshift):
+ (JSC::JITStubs::cti_op_bitnot):
+ (JSC::JITStubs::cti_op_mod):
+ (JSC::JITStubs::cti_op_neq):
+ (JSC::JITStubs::cti_op_post_dec):
+ (JSC::JITStubs::cti_op_urshift):
+ (JSC::JITStubs::cti_op_bitxor):
+ (JSC::JITStubs::cti_op_bitor):
+ (JSC::JITStubs::cti_op_switch_imm):
+ * jit/JITStubs.h:
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::JSArray):
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::~JSFunction):
+ * runtime/JSValue.h:
+ (JSC::JSValue::payload):
+ * wtf/Platform.h:
- https://bugs.webkit.org/show_bug.cgi?id=20746
+2009-05-07 Sam Weinig <sam@webkit.org>
- Added WINCE platform macro.
+ Reviewed by Geoffrey Garen.
- * wtf/Platform.h:
+ Add some new MacroAssembler and assembler functions that will be needed shortly.
-2008-09-09 Sam Weinig <sam@webkit.org>
+ * assembler/MacroAssemblerX86Common.h:
+ (JSC::MacroAssemblerX86Common::add32):
+ (JSC::MacroAssemblerX86Common::and32):
+ (JSC::MacroAssemblerX86Common::mul32):
+ (JSC::MacroAssemblerX86Common::neg32):
+ (JSC::MacroAssemblerX86Common::or32):
+ (JSC::MacroAssemblerX86Common::sub32):
+ (JSC::MacroAssemblerX86Common::xor32):
+ (JSC::MacroAssemblerX86Common::branchAdd32):
+ (JSC::MacroAssemblerX86Common::branchMul32):
+ (JSC::MacroAssemblerX86Common::branchSub32):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::):
+ (JSC::X86Assembler::addl_rm):
+ (JSC::X86Assembler::andl_mr):
+ (JSC::X86Assembler::andl_rm):
+ (JSC::X86Assembler::andl_im):
+ (JSC::X86Assembler::negl_r):
+ (JSC::X86Assembler::notl_r):
+ (JSC::X86Assembler::orl_rm):
+ (JSC::X86Assembler::orl_im):
+ (JSC::X86Assembler::subl_rm):
+ (JSC::X86Assembler::xorl_mr):
+ (JSC::X86Assembler::xorl_rm):
+ (JSC::X86Assembler::xorl_im):
+ (JSC::X86Assembler::imull_mr):
- Reviewed by Mark Rowe.
+2009-05-11 Sam Weinig <sam@webkit.org>
- Remove unnecessary override of getOffset.
+ Reviewed by Cameron Zwarich.
- Sunspider reports this as a .6% progression.
+ Remove the NumberHeap.
* JavaScriptCore.exp:
- * kjs/JSObject.h:
- (JSC::JSObject::getDirectLocation):
- (JSC::JSObject::getOwnPropertySlotForWrite):
- (JSC::JSObject::putDirect):
- * kjs/PropertyMap.cpp:
- * kjs/PropertyMap.h:
-
-2008-09-09 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ * runtime/Collector.cpp:
+ (JSC::Heap::Heap):
+ (JSC::Heap::destroy):
+ (JSC::Heap::recordExtraCost):
+ (JSC::Heap::heapAllocate):
+ (JSC::Heap::markConservatively):
+ (JSC::Heap::sweep):
+ (JSC::Heap::collect):
+ (JSC::Heap::objectCount):
+ (JSC::Heap::statistics):
+ (JSC::typeName):
+ (JSC::Heap::isBusy):
+ * runtime/Collector.h:
+ (JSC::Heap::globalData):
+ * runtime/JSCell.h:
- Reviewed by Maciej Stachowiak.
+2009-05-11 Geoffrey Garen <ggaren@apple.com>
- Bug 20759: Remove MacroAssembler
- <https://bugs.webkit.org/show_bug.cgi?id=20759>
+ Reviewed by Sam Weinig.
- Remove MacroAssembler and move its functionality to X86Assembler.
+ Land initial commit of new number representation for 32 bit platforms,
+ with JIT disabled.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * API/APICast.h:
+ (toJS):
+ (toRef):
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::::hasInstance):
+ (JSC::::toNumber):
+ (JSC::::toString):
+ * API/tests/testapi.c:
+ (EvilExceptionObject_convertToType):
+ * AllInOneFile.cpp:
+ * JavaScriptCore.exp:
* JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CTI.cpp:
- (JSC::CTI::emitGetArg):
- (JSC::CTI::emitGetPutArg):
- (JSC::CTI::emitPutArg):
- (JSC::CTI::emitPutCTIParam):
- (JSC::CTI::emitGetCTIParam):
- (JSC::CTI::emitPutToCallFrameHeader):
- (JSC::CTI::emitGetFromCallFrameHeader):
- (JSC::CTI::emitPutResult):
- (JSC::CTI::emitDebugExceptionCheck):
- (JSC::CTI::emitJumpSlowCaseIfNotImm):
- (JSC::CTI::emitJumpSlowCaseIfNotImms):
- (JSC::CTI::emitFastArithDeTagImmediate):
- (JSC::CTI::emitFastArithReTagImmediate):
- (JSC::CTI::emitFastArithPotentiallyReTagImmediate):
- (JSC::CTI::emitFastArithImmToInt):
- (JSC::CTI::emitFastArithIntToImmOrSlowCase):
- (JSC::CTI::emitFastArithIntToImmNoCheck):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::emitSlowScriptCheck):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- (JSC::CTI::privateCompileGetByIdSelf):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::privateCompilePutByIdReplace):
- (JSC::CTI::privateArrayLengthTrampoline):
- (JSC::CTI::privateStringLengthTrampoline):
- (JSC::CTI::compileRegExp):
- * VM/CTI.h:
- (JSC::CallRecord::CallRecord):
- (JSC::JmpTable::JmpTable):
- (JSC::SlowCaseEntry::SlowCaseEntry):
- (JSC::CTI::JSRInfo::JSRInfo):
- * masm/MacroAssembler.h: Removed.
- * masm/MacroAssemblerWin.cpp: Removed.
- * masm/X86Assembler.h:
- (JSC::X86Assembler::emitConvertToFastCall):
- (JSC::X86Assembler::emitRestoreArgumentReference):
- * wrec/WREC.h:
- (JSC::WRECGenerator::WRECGenerator):
- (JSC::WRECParser::WRECParser):
-
-2008-09-09 Sam Weinig <sam@webkit.org>
-
- Reviewed by Cameron Zwarich.
-
- Don't waste the first item in the PropertyStorage.
+ * bytecode/CodeBlock.cpp:
+ (JSC::valueToSourceString):
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::emitLoad):
+ (JSC::BytecodeGenerator::emitUnexpectedLoad):
+ (JSC::keyForImmediateSwitch):
+ * bytecompiler/BytecodeGenerator.h:
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::dumpRegisters):
+ (JSC::Interpreter::privateExecute):
+ * parser/Nodes.cpp:
+ (JSC::ArrayNode::emitBytecode):
+ (JSC::processClauseList):
+ * runtime/ArgList.h:
+ * runtime/Collector.h:
+ (JSC::sizeof):
+ * runtime/DateMath.cpp:
+ * runtime/ExceptionHelpers.h:
+ * runtime/InitializeThreading.cpp:
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::JSArray):
+ * runtime/JSCell.cpp:
+ * runtime/JSCell.h:
+ (JSC::JSCell::isAPIValueWrapper):
+ (JSC::JSValue::isString):
+ (JSC::JSValue::isGetterSetter):
+ (JSC::JSValue::isObject):
+ (JSC::JSValue::getString):
+ (JSC::JSValue::getObject):
+ (JSC::JSValue::getCallData):
+ (JSC::JSValue::getConstructData):
+ (JSC::JSValue::getUInt32):
+ (JSC::JSValue::marked):
+ (JSC::JSValue::toPrimitive):
+ (JSC::JSValue::getPrimitiveNumber):
+ (JSC::JSValue::toBoolean):
+ (JSC::JSValue::toNumber):
+ (JSC::JSValue::toString):
+ (JSC::JSValue::needsThisConversion):
+ (JSC::JSValue::toThisString):
+ (JSC::JSValue::getJSNumber):
+ (JSC::JSValue::toObject):
+ (JSC::JSValue::toThisObject):
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData):
+ * runtime/JSGlobalData.h:
+ * runtime/JSGlobalObject.h:
+ (JSC::Structure::prototypeForLookup):
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncParseInt):
+ * runtime/JSImmediate.h:
+ * runtime/JSNumberCell.cpp: Removed.
+ * runtime/JSNumberCell.h: Removed.
+ * runtime/JSObject.h:
+ (JSC::JSValue::get):
+ (JSC::JSValue::put):
+ * runtime/JSString.h:
+ (JSC::JSValue::toThisJSString):
+ * runtime/JSValue.cpp:
+ (JSC::JSValue::toInteger):
+ (JSC::JSValue::toIntegerPreserveNaN):
+ (JSC::JSValue::toObjectSlowCase):
+ (JSC::JSValue::toThisObjectSlowCase):
+ (JSC::JSValue::synthesizeObject):
+ (JSC::JSValue::synthesizePrototype):
+ (JSC::JSValue::description):
+ (JSC::nonInlineNaN):
+ * runtime/JSValue.h:
+ (JSC::JSValue::):
+ (JSC::EncodedJSValueHashTraits::emptyValue):
+ (JSC::jsNaN):
+ (JSC::operator==):
+ (JSC::operator!=):
+ (JSC::toInt32):
+ (JSC::toUInt32):
+ (JSC::JSValue::encode):
+ (JSC::JSValue::decode):
+ (JSC::JSValue::JSValue):
+ (JSC::JSValue::operator bool):
+ (JSC::JSValue::operator==):
+ (JSC::JSValue::operator!=):
+ (JSC::JSValue::isUndefined):
+ (JSC::JSValue::isNull):
+ (JSC::JSValue::isUndefinedOrNull):
+ (JSC::JSValue::isCell):
+ (JSC::JSValue::isInt32):
+ (JSC::JSValue::isUInt32):
+ (JSC::JSValue::isDouble):
+ (JSC::JSValue::isTrue):
+ (JSC::JSValue::isFalse):
+ (JSC::JSValue::tag):
+ (JSC::JSValue::asInt32):
+ (JSC::JSValue::asUInt32):
+ (JSC::JSValue::asDouble):
+ (JSC::JSValue::asCell):
+ (JSC::JSValue::isNumber):
+ (JSC::JSValue::isBoolean):
+ (JSC::JSValue::getBoolean):
+ (JSC::JSValue::uncheckedGetNumber):
+ (JSC::JSValue::toJSNumber):
+ (JSC::JSValue::getNumber):
+ (JSC::JSValue::toInt32):
+ (JSC::JSValue::toUInt32):
+ * runtime/Operations.h:
+ (JSC::JSValue::equal):
+ (JSC::JSValue::equalSlowCaseInline):
+ (JSC::JSValue::strictEqual):
+ (JSC::JSValue::strictEqualSlowCaseInline):
+ (JSC::jsLess):
+ (JSC::jsLessEq):
+ (JSC::jsAdd):
+ * runtime/PropertySlot.h:
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncCharAt):
+ (JSC::stringProtoFuncCharCodeAt):
+ (JSC::stringProtoFuncIndexOf):
+ * wtf/Platform.h:
- - Fix typo (makingCount -> markingCount)
- - Remove undefined method declaration.
+=== Start merge of nitro-extreme branch 2009-07-30 ===
- No change on Sunspider.
+2009-07-29 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- * kjs/JSObject.cpp:
- (JSC::JSObject::mark):
- * kjs/PropertyMap.cpp:
- (JSC::PropertyMap::put):
- (JSC::PropertyMap::remove):
- (JSC::PropertyMap::getOffset):
- (JSC::PropertyMap::insert):
- (JSC::PropertyMap::rehash):
- (JSC::PropertyMap::resizePropertyStorage):
- (JSC::PropertyMap::checkConsistency):
- * kjs/PropertyMap.h:
- (JSC::PropertyMap::markingCount): Fix typo.
+ Reviewed by George Staikos.
-2008-09-09 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Resolve class/struct mixup in forward declarations
+ https://bugs.webkit.org/show_bug.cgi?id=27708
- Not reviewed.
+ * API/JSClassRef.h:
+ * bytecode/SamplingTool.h:
+ * interpreter/Interpreter.h:
+ * jit/JIT.h:
+ * profiler/ProfileGenerator.h:
+ * profiler/Profiler.h:
+ * runtime/ClassInfo.h:
+ * runtime/ExceptionHelpers.h:
+ * runtime/JSByteArray.h:
+ * runtime/JSCell.h:
+ * runtime/JSFunction.h:
+ * runtime/JSGlobalData.h:
+ * runtime/JSObject.h:
+ * runtime/JSString.h:
- Speculative Windows build fix.
+2009-07-28 Ada Chan <adachan@apple.com>
- * masm/MacroAssemblerWin.cpp:
- (JSC::MacroAssembler::emitConvertToFastCall):
- (JSC::MacroAssembler::emitRestoreArgumentReference):
+ Reviewed by Darin Adler.
-2008-09-09 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ https://bugs.webkit.org/show_bug.cgi?id=27236
+ - Implement TCMalloc_SystemRelease and TCMalloc_SystemCommit for Windows.
+ - Use a background thread to periodically scavenge memory to release back to the system.
- Reviewed by Maciej Stachowiak.
+ * wtf/FastMalloc.cpp:
+ (WTF::TCMalloc_PageHeap::init):
+ (WTF::TCMalloc_PageHeap::runScavengerThread):
+ (WTF::TCMalloc_PageHeap::scavenge):
+ (WTF::TCMalloc_PageHeap::shouldContinueScavenging):
+ (WTF::TCMalloc_PageHeap::New):
+ (WTF::TCMalloc_PageHeap::AllocLarge):
+ (WTF::TCMalloc_PageHeap::Delete):
+ (WTF::TCMalloc_PageHeap::GrowHeap):
+ (WTF::sleep):
+ (WTF::TCMalloc_PageHeap::scavengerThread):
+ * wtf/TCSystemAlloc.cpp:
+ (TCMalloc_SystemRelease):
+ (TCMalloc_SystemCommit):
+ * wtf/TCSystemAlloc.h:
- Bug 20755: Create an X86 namespace for register names and other things
- <https://bugs.webkit.org/show_bug.cgi?id=20755>
-
- Create an X86 namespace to put X86 register names. Perhaps I will move
- opcode names here later as well.
-
- * VM/CTI.cpp:
- (JSC::CTI::emitGetArg):
- (JSC::CTI::emitGetPutArg):
- (JSC::CTI::emitPutArg):
- (JSC::CTI::emitPutArgConstant):
- (JSC::CTI::emitPutCTIParam):
- (JSC::CTI::emitGetCTIParam):
- (JSC::CTI::emitPutToCallFrameHeader):
- (JSC::CTI::emitGetFromCallFrameHeader):
- (JSC::CTI::emitPutResult):
- (JSC::CTI::emitDebugExceptionCheck):
- (JSC::CTI::emitJumpSlowCaseIfNotImms):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::emitSlowScriptCheck):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- (JSC::CTI::privateCompileGetByIdSelf):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::privateCompilePutByIdReplace):
- (JSC::CTI::privateArrayLengthTrampoline):
- (JSC::CTI::privateStringLengthTrampoline):
- (JSC::CTI::compileRegExp):
- * VM/CTI.h:
- * masm/X86Assembler.h:
- (JSC::X86::):
- (JSC::X86Assembler::emitModRm_rm):
- (JSC::X86Assembler::emitModRm_rm_Unchecked):
- (JSC::X86Assembler::emitModRm_rmsib):
- * wrec/WREC.cpp:
- (JSC::WRECGenerator::generateNonGreedyQuantifier):
- (JSC::WRECGenerator::generateGreedyQuantifier):
- (JSC::WRECGenerator::generateParentheses):
- (JSC::WRECGenerator::generateBackreference):
- (JSC::WRECGenerator::gernerateDisjunction):
- * wrec/WREC.h:
+2009-07-28 Xan Lopez <xlopez@igalia.com>
-2008-09-09 Sam Weinig <sam@webkit.org>
+ Add new files, fixes distcheck.
- Reviewed by Geoffrey Garen.
+ * GNUmakefile.am:
- Remove unnecessary friend declaration.
+2009-07-28 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
- * kjs/PropertyMap.h:
+ Reviewed by Simon Hausmann.
-2008-09-09 Sam Weinig <sam@webkit.org>
+ [Qt] Determining whether to use JIT or interpreter
+ moved from JavaScriptCore.pri to Platform.h
- Reviewed by Geoffrey Garen.
+ * JavaScriptCore.pri:
+ * wtf/Platform.h:
- Replace uses of PropertyMap::get and PropertyMap::getLocation with
- PropertyMap::getOffset.
+2009-07-27 Brian Weinstein <bweinstein@apple.com>
- Sunspider reports this as a .6% improvement.
+ Fix of misuse of sort command.
- * JavaScriptCore.exp:
- * kjs/JSObject.cpp:
- (JSC::JSObject::put):
- (JSC::JSObject::deleteProperty):
- (JSC::JSObject::getPropertyAttributes):
- * kjs/JSObject.h:
- (JSC::JSObject::getDirect):
- (JSC::JSObject::getDirectLocation):
- (JSC::JSObject::locationForOffset):
- * kjs/PropertyMap.cpp:
- (JSC::PropertyMap::remove):
- (JSC::PropertyMap::getOffset):
- * kjs/PropertyMap.h:
-
-2008-09-09 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Reviewed by Sam Weinig.
+2009-07-27 Brian Weinstein <bweinstein@apple.com>
- Bug 20754: Remove emit prefix from assembler opcode methods
- <https://bugs.webkit.org/show_bug.cgi?id=20754>
-
- * VM/CTI.cpp:
- (JSC::CTI::emitGetArg):
- (JSC::CTI::emitGetPutArg):
- (JSC::CTI::emitPutArg):
- (JSC::CTI::emitPutArgConstant):
- (JSC::CTI::emitPutCTIParam):
- (JSC::CTI::emitGetCTIParam):
- (JSC::CTI::emitPutToCallFrameHeader):
- (JSC::CTI::emitGetFromCallFrameHeader):
- (JSC::CTI::emitPutResult):
- (JSC::CTI::emitDebugExceptionCheck):
- (JSC::CTI::emitCall):
- (JSC::CTI::emitJumpSlowCaseIfNotImm):
- (JSC::CTI::emitJumpSlowCaseIfNotImms):
- (JSC::CTI::emitFastArithDeTagImmediate):
- (JSC::CTI::emitFastArithReTagImmediate):
- (JSC::CTI::emitFastArithPotentiallyReTagImmediate):
- (JSC::CTI::emitFastArithImmToInt):
- (JSC::CTI::emitFastArithIntToImmOrSlowCase):
- (JSC::CTI::emitFastArithIntToImmNoCheck):
- (JSC::CTI::compileOpCall):
- (JSC::CTI::emitSlowScriptCheck):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- (JSC::CTI::privateCompile):
- (JSC::CTI::privateCompileGetByIdSelf):
- (JSC::CTI::privateCompileGetByIdProto):
- (JSC::CTI::privateCompileGetByIdChain):
- (JSC::CTI::privateCompilePutByIdReplace):
- (JSC::CTI::privateArrayLengthTrampoline):
- (JSC::CTI::privateStringLengthTrampoline):
- (JSC::CTI::compileRegExp):
- * masm/MacroAssemblerWin.cpp:
- (JSC::MacroAssembler::emitConvertToFastCall):
- (JSC::MacroAssembler::emitRestoreArgumentReference):
- * masm/X86Assembler.h:
- (JSC::X86Assembler::pushl_r):
- (JSC::X86Assembler::pushl_m):
- (JSC::X86Assembler::popl_r):
- (JSC::X86Assembler::popl_m):
- (JSC::X86Assembler::movl_rr):
- (JSC::X86Assembler::addl_rr):
- (JSC::X86Assembler::addl_i8r):
- (JSC::X86Assembler::addl_i32r):
- (JSC::X86Assembler::addl_mr):
- (JSC::X86Assembler::andl_rr):
- (JSC::X86Assembler::andl_i32r):
- (JSC::X86Assembler::cmpl_i8r):
- (JSC::X86Assembler::cmpl_rr):
- (JSC::X86Assembler::cmpl_rm):
- (JSC::X86Assembler::cmpl_i32r):
- (JSC::X86Assembler::cmpl_i32m):
- (JSC::X86Assembler::cmpw_rm):
- (JSC::X86Assembler::orl_rr):
- (JSC::X86Assembler::subl_rr):
- (JSC::X86Assembler::subl_i8r):
- (JSC::X86Assembler::subl_i32r):
- (JSC::X86Assembler::subl_mr):
- (JSC::X86Assembler::testl_i32r):
- (JSC::X86Assembler::testl_rr):
- (JSC::X86Assembler::xorl_i8r):
- (JSC::X86Assembler::xorl_rr):
- (JSC::X86Assembler::sarl_i8r):
- (JSC::X86Assembler::sarl_CLr):
- (JSC::X86Assembler::shl_i8r):
- (JSC::X86Assembler::shll_CLr):
- (JSC::X86Assembler::mull_rr):
- (JSC::X86Assembler::idivl_r):
- (JSC::X86Assembler::cdq):
- (JSC::X86Assembler::movl_mr):
- (JSC::X86Assembler::movzwl_mr):
- (JSC::X86Assembler::movl_rm):
- (JSC::X86Assembler::movl_i32r):
- (JSC::X86Assembler::movl_i32m):
- (JSC::X86Assembler::leal_mr):
- (JSC::X86Assembler::ret):
- (JSC::X86Assembler::jmp_r):
- (JSC::X86Assembler::jmp_m):
- (JSC::X86Assembler::call_r):
- * wrec/WREC.cpp:
- (JSC::WRECGenerator::generateBacktrack1):
- (JSC::WRECGenerator::generateBacktrackBackreference):
- (JSC::WRECGenerator::generateBackreferenceQuantifier):
- (JSC::WRECGenerator::generateNonGreedyQuantifier):
- (JSC::WRECGenerator::generateGreedyQuantifier):
- (JSC::WRECGenerator::generatePatternCharacter):
- (JSC::WRECGenerator::generateCharacterClassInvertedRange):
- (JSC::WRECGenerator::generateCharacterClassInverted):
- (JSC::WRECGenerator::generateCharacterClass):
- (JSC::WRECGenerator::generateParentheses):
- (JSC::WRECGenerator::gererateParenthesesResetTrampoline):
- (JSC::WRECGenerator::generateAssertionBOL):
- (JSC::WRECGenerator::generateAssertionEOL):
- (JSC::WRECGenerator::generateAssertionWordBoundary):
- (JSC::WRECGenerator::generateBackreference):
- (JSC::WRECGenerator::gernerateDisjunction):
-
-2008-09-09 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Build fix for Windows.
- Reviewed by Maciej Stachowiak.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Clean up the WREC code some more.
-
- * VM/CTI.cpp:
- (JSC::CTI::compileRegExp):
- * wrec/WREC.cpp:
- (JSC::getCharacterClassNewline):
- (JSC::getCharacterClassDigits):
- (JSC::getCharacterClassSpaces):
- (JSC::getCharacterClassWordchar):
- (JSC::getCharacterClassNondigits):
- (JSC::getCharacterClassNonspaces):
- (JSC::getCharacterClassNonwordchar):
- (JSC::WRECGenerator::generateBacktrack1):
- (JSC::WRECGenerator::generateBacktrackBackreference):
- (JSC::WRECGenerator::generateBackreferenceQuantifier):
- (JSC::WRECGenerator::generateNonGreedyQuantifier):
- (JSC::WRECGenerator::generateGreedyQuantifier):
- (JSC::WRECGenerator::generatePatternCharacter):
- (JSC::WRECGenerator::generateCharacterClassInvertedRange):
- (JSC::WRECGenerator::generateCharacterClassInverted):
- (JSC::WRECGenerator::generateCharacterClass):
- (JSC::WRECGenerator::generateParentheses):
- (JSC::WRECGenerator::gererateParenthesesResetTrampoline):
- (JSC::WRECGenerator::generateAssertionBOL):
- (JSC::WRECGenerator::generateAssertionEOL):
- (JSC::WRECGenerator::generateAssertionWordBoundary):
- (JSC::WRECGenerator::generateBackreference):
- (JSC::WRECGenerator::gernerateDisjunction):
- (JSC::WRECParser::parseCharacterClass):
- (JSC::WRECParser::parseEscape):
- (JSC::WRECParser::parseTerm):
- * wrec/WREC.h:
+2009-07-27 Gavin Barraclough <barraclough@apple.com>
-2008-09-09 Mark Rowe <mrowe@apple.com>
+ Rubber stamped by Oliver Hunt.
- Build fix, rubber-stamped by Anders Carlsson.
+ Fix tyop in JIT, renamed preverveReturnAddressAfterCall -> preserveReturnAddressAfterCall.
- Silence spurious build warnings about missing format attributes on functions in Assertions.cpp.
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompile):
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ * jit/JIT.h:
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::preserveReturnAddressAfterCall):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::privateCompilePutByIdTransition):
- * JavaScriptCore.xcodeproj/project.pbxproj:
+2009-07-27 Alexey Proskuryakov <ap@webkit.org>
-2008-09-09 Mark Rowe <mrowe@apple.com>
+ Gtk build fix.
- Rubber-stamped by Oliver Hunt.
+ * runtime/JSLock.cpp: (JSC::JSLock::JSLock): Fix "no threading" case.
- Fix builds using the "debug" variant.
+2009-07-27 Alexey Proskuryakov <ap@webkit.org>
- This reverts r36130 and tweaks Identifier to export the same symbols for Debug
- and Release configurations.
+ Release build fix.
- * Configurations/JavaScriptCore.xcconfig:
- * DerivedSources.make:
- * JavaScriptCore.Debug.exp: Removed.
- * JavaScriptCore.base.exp: Removed.
- * JavaScriptCore.exp: Added.
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/identifier.cpp:
- (JSC::Identifier::addSlowCase): #ifdef the call to checkSameIdentifierTable so that
- there is no overhead in Release builds.
- (JSC::Identifier::checkSameIdentifierTable): Add empty functions for Release builds.
- * kjs/identifier.h:
- (JSC::Identifier::add): #ifdef the calls to checkSameIdentifierTable so that there is
- no overhead in Release builds, and remove the inline definitions of checkSameIdentifierTable.
+ * runtime/JSLock.h: (JSC::JSLock::~JSLock):
-2008-09-09 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+2009-07-27 Alexey Proskuryakov <ap@webkit.org>
- Reviewed by Maciej Stachowiak.
+ Reviewed by Darin Adler.
- Clean up WREC a bit to bring it closer to our coding style guidelines.
+ https://bugs.webkit.org/show_bug.cgi?id=27735
+ Give a helpful name to JSLock constructor argument
- * wrec/WREC.cpp:
+ * API/JSBase.cpp:
+ (JSGarbageCollect):
+ * API/JSContextRef.cpp:
+ * API/JSObjectRef.cpp:
+ (JSPropertyNameArrayRelease):
+ (JSPropertyNameAccumulatorAddName):
+ * JavaScriptCore.exp:
+ * jsc.cpp:
+ (functionGC):
+ (cleanupGlobalData):
+ (jscmain):
+ * runtime/Collector.cpp:
+ (JSC::Heap::destroy):
+ * runtime/JSLock.cpp:
+ (JSC::JSLock::JSLock):
+ (JSC::JSLock::lock):
+ (JSC::JSLock::unlock):
+ (JSC::JSLock::DropAllLocks::DropAllLocks):
+ (JSC::JSLock::DropAllLocks::~DropAllLocks):
+ * runtime/JSLock.h:
(JSC::):
- (JSC::getCharacterClass_newline):
- (JSC::getCharacterClass_d):
- (JSC::getCharacterClass_s):
- (JSC::getCharacterClass_w):
- (JSC::getCharacterClass_D):
- (JSC::getCharacterClass_S):
- (JSC::getCharacterClass_W):
- (JSC::CharacterClassConstructor::append):
- (JSC::WRECGenerator::generateNonGreedyQuantifier):
- (JSC::WRECGenerator::generateGreedyQuantifier):
- (JSC::WRECGenerator::generateCharacterClassInverted):
- (JSC::WRECParser::parseQuantifier):
- (JSC::WRECParser::parsePatternCharacterQualifier):
- (JSC::WRECParser::parseCharacterClassQuantifier):
- (JSC::WRECParser::parseBackreferenceQuantifier):
- * wrec/WREC.h:
- (JSC::Quantifier::):
- (JSC::Quantifier::Quantifier):
-
-2008-09-09 Jungshik Shin <jungshik.shin@gmail.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Try MIME charset names before trying IANA names
- ( https://bugs.webkit.org/show_bug.cgi?id=17537 )
-
- * wtf/StringExtras.h: (strcasecmp): Added.
-
-2008-09-09 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ (JSC::JSLock::JSLock):
+ (JSC::JSLock::~JSLock):
- Reviewed by Mark Rowe.
+2009-07-25 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- Bug 20719: REGRESSION (r36135-36244): Hangs, then crashes after several seconds
- <https://bugs.webkit.org/show_bug.cgi?id=20719>
- <rdar://problem/6205787>
+ Reviewed by Eric Seidel.
- Fix a typo in the case-insensitive matching of character patterns.
+ Allow custom memory allocation control for OpaqueJSPropertyNameArray struct
+ https://bugs.webkit.org/show_bug.cgi?id=27342
- * wrec/WREC.cpp:
- (JSC::WRECGenerator::generatePatternCharacter):
+ Inherits OpaqueJSPropertyNameArray struct from FastAllocBase because it has been
+ instantiated by 'new' JavaScriptCore/API/JSObjectRef.cpp:473.
-2008-09-09 Maciej Stachowiak <mjs@apple.com>
+ * API/JSObjectRef.cpp:
- Reviewed by Sam Weinig.
-
- - allow polymorphic inline cache to handle Math object functions and possibly other similar things
-
- 1.012x speedup on SunSpider.
+2009-07-24 Ada Chan <adachan@apple.com>
- * kjs/MathObject.cpp:
- (JSC::MathObject::getOwnPropertySlot):
- * kjs/lookup.cpp:
- (JSC::setUpStaticFunctionSlot):
- * kjs/lookup.h:
- (JSC::getStaticPropertySlot):
-
-2008-09-08 Sam Weinig <sam@webkit.org>
-
- Reviewed by Maciej Stachowiak and Oliver Hunt.
-
- Split storage of properties out of the PropertyMap and into the JSObject
- to allow sharing PropertyMap on the StructureID. In order to get this
- function correctly, the StructureID's transition mappings were changed to
- transition based on property name and attribute pairs, instead of just
- property name.
-
- - Removes the single property optimization now that the PropertyMap is shared.
- This will be replaced by in-lining some values on the JSObject.
-
- This is a wash on Sunspider and a 6.7% win on the v8 test suite.
-
- * JavaScriptCore.base.exp:
- * VM/CTI.cpp:
- (JSC::CTI::privateCompileGetByIdSelf): Get the storage directly off the JSObject.
- (JSC::CTI::privateCompileGetByIdProto): Ditto.
- (JSC::CTI::privateCompileGetByIdChain): Ditto.
- (JSC::CTI::privateCompilePutByIdReplace): Ditto.
- * kjs/JSObject.cpp:
- (JSC::JSObject::mark): Mark the PropertyStorage.
- (JSC::JSObject::put): Update to get the propertyMap of the StructureID.
- (JSC::JSObject::deleteProperty): Ditto.
- (JSC::JSObject::defineGetter): Return early if the property is already a getter/setter.
- (JSC::JSObject::defineSetter): Ditto.
- (JSC::JSObject::getPropertyAttributes): Update to get the propertyMap of the StructureID
- (JSC::JSObject::getPropertyNames): Ditto.
- (JSC::JSObject::removeDirect): Ditto.
- * kjs/JSObject.h: Remove PropertyMap and add PropertyStorage.
- (JSC::JSObject::propertyStorage): return the PropertyStorage.
- (JSC::JSObject::getDirect): Update to get the propertyMap of the StructureID.
- (JSC::JSObject::getDirectLocation): Ditto.
- (JSC::JSObject::offsetForLocation): Compute location directly.
- (JSC::JSObject::hasCustomProperties): Update to get the propertyMap of the StructureID.
- (JSC::JSObject::hasGetterSetterProperties): Ditto.
- (JSC::JSObject::getDirectOffset): Get by indexing into PropertyStorage.
- (JSC::JSObject::putDirectOffset): Put by indexing into PropertyStorage.
- (JSC::JSObject::getOwnPropertySlotForWrite): Update to get the propertyMap of the StructureID.
- (JSC::JSObject::getOwnPropertySlot): Ditto.
- (JSC::JSObject::putDirect): Move putting into the StructureID unless the property already exists.
- * kjs/PropertyMap.cpp: Use the propertyStorage as the storage for the JSValues.
- (JSC::PropertyMap::checkConsistency):
- (JSC::PropertyMap::operator=):
- (JSC::PropertyMap::~PropertyMap):
- (JSC::PropertyMap::get):
- (JSC::PropertyMap::getLocation):
- (JSC::PropertyMap::put):
- (JSC::PropertyMap::getOffset):
- (JSC::PropertyMap::insert):
- (JSC::PropertyMap::expand):
- (JSC::PropertyMap::rehash):
- (JSC::PropertyMap::createTable):
- (JSC::PropertyMap::resizePropertyStorage): Resize the storage to match the size of the map
- (JSC::PropertyMap::remove):
- (JSC::PropertyMap::getEnumerablePropertyNames):
- * kjs/PropertyMap.h:
- (JSC::PropertyMapEntry::PropertyMapEntry):
- (JSC::PropertyMap::isEmpty):
- (JSC::PropertyMap::size):
- (JSC::PropertyMap::makingCount):
- (JSC::PropertyMap::PropertyMap):
-
- * kjs/StructureID.cpp:
- (JSC::StructureID::addPropertyTransition): Transitions now are based off the property name
- and attributes.
- (JSC::StructureID::toDictionaryTransition): Copy the map.
- (JSC::StructureID::changePrototypeTransition): Copy the map.
- (JSC::StructureID::getterSetterTransition): Copy the map.
- (JSC::StructureID::~StructureID):
- * kjs/StructureID.h:
- (JSC::TransitionTableHash::hash): Custom hash for transition map.
- (JSC::TransitionTableHash::equal): Ditto.
- (JSC::TransitionTableHashTraits::emptyValue): Custom traits for transition map
- (JSC::TransitionTableHashTraits::constructDeletedValue): Ditto.
- (JSC::TransitionTableHashTraits::isDeletedValue): Ditto.
- (JSC::StructureID::propertyMap): Added.
-
-2008-09-08 Oliver Hunt <oliver@apple.com>
+ In preparation for https://bugs.webkit.org/show_bug.cgi?id=27236:
+ Remove TCMALLOC_TRACK_DECOMMITED_SPANS. We'll always track decommitted spans.
+ We have tested this and show it has little impact on performance.
Reviewed by Mark Rowe.
- Bug 20694: Slow Script error pops up when running Dromaeo tests
-
- Correct error in timeout logic where execution tick count would
- be reset to incorrect value due to incorrect offset and indirection.
- Codegen for the slow script dialog was factored out into a separate
- method (emitSlowScriptCheck) rather than having multiple copies of
- the same code. Also added calls to generate slow script checks
- for loop_if_less and loop_if_true opcodes.
-
- * VM/CTI.cpp:
- (JSC::CTI::emitSlowScriptCheck):
- (JSC::CTI::privateCompileMainPass):
- (JSC::CTI::privateCompileSlowCases):
- * VM/CTI.h:
-
-2008-09-08 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Maciej Stachowiak.
-
- Remove references to the removed WRECompiler class.
-
- * VM/Machine.h:
- * wrec/WREC.h:
-
-2008-09-08 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Rubber-stamped by Mark Rowe.
+ * wtf/FastMalloc.cpp:
+ (WTF::TCMalloc_PageHeap::New):
+ (WTF::TCMalloc_PageHeap::AllocLarge):
+ (WTF::propagateDecommittedState):
+ (WTF::mergeDecommittedStates):
+ (WTF::TCMalloc_PageHeap::Delete):
+ (WTF::TCMalloc_PageHeap::IncrementalScavenge):
- Fix the build with CTI enabled but WREC disabled.
+2009-07-24 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
- * VM/CTI.cpp:
- * VM/CTI.h:
+ Reviewed by Darin Adler and Adam Barth.
-2008-09-08 Dan Bernstein <mitz@apple.com>
+ Build fix for x86 platforms.
+ https://bugs.webkit.org/show_bug.cgi?id=27602
- - build fix
+ * jit/JIT.cpp:
- * kjs/nodes.h:
- (JSC::StatementNode::):
- (JSC::BlockNode::):
+2009-07-23 Kevin Ollivier <kevino@theolliviers.com>
-2008-09-08 Kevin McCullough <kmccullough@apple.com>
+ wx build fix, adding missing header.
- Reviewed by Geoff.
+ * jit/JIT.cpp:
- <rdar://problem/6134407> Breakpoints in for loops, while loops or
- conditions without curly braces don't break. (19306)
- -Statement Lists already emit debug hooks but conditionals without
- brackets are not lists.
+2009-07-22 Yong Li <yong.li@torchmobile.com>
- * kjs/nodes.cpp:
- (KJS::IfNode::emitCode):
- (KJS::IfElseNode::emitCode):
- (KJS::DoWhileNode::emitCode):
- (KJS::WhileNode::emitCode):
- (KJS::ForNode::emitCode):
- (KJS::ForInNode::emitCode):
- * kjs/nodes.h:
- (KJS::StatementNode::):
- (KJS::BlockNode::):
+ Reviewed by George Staikos.
-2008-09-08 Maciej Stachowiak <mjs@apple.com>
+ Add wince specific memory files into wtf/wince
+ https://bugs.webkit.org/show_bug.cgi?id=27550
- Reviewed by Anders Carlsson.
-
- - Cache the code generated for eval to speed up SunSpider and web sites
- https://bugs.webkit.org/show_bug.cgi?id=20718
-
- 1.052x on SunSpider
- 2.29x on date-format-tofte
-
- Lots of real sites seem to get many hits on this cache as well,
- including GMail, Google Spreadsheets, Slate and Digg (the last of
- these gets over 100 hits on initial page load).
+ * wtf/wince/FastMallocWince.h: Added.
+ * wtf/wince/MemoryManager.cpp: Added.
+ * wtf/wince/MemoryManager.h: Added.
- * VM/CodeBlock.h:
- (JSC::EvalCodeCache::get):
- * VM/Machine.cpp:
- (JSC::Machine::callEval):
- (JSC::Machine::privateExecute):
- (JSC::Machine::cti_op_call_eval):
- * VM/Machine.h:
+2009-07-23 Norbert Leser <norbert.leser@nokia.com>
-2008-09-07 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Reviewed by Simon Hausmann.
- Reviewed by Oliver Hunt.
+ Fix for missing mmap features in Symbian
+ https://bugs.webkit.org/show_bug.cgi?id=24540
- Bug 20711: Change KJS prefix on preprocessor macros to JSC
- <https://bugs.webkit.org/show_bug.cgi?id=20711>
+ Fix, conditionally for PLATFORM(SYMBIAN), as an alternative
+ to missing support for the MAP_ANON property flag in mmap.
+ It utilizes Symbian specific memory allocation features.
- * kjs/CommonIdentifiers.cpp:
- (JSC::CommonIdentifiers::CommonIdentifiers):
- * kjs/CommonIdentifiers.h:
- * kjs/PropertySlot.h:
- (JSC::PropertySlot::getValue):
- (JSC::PropertySlot::putValue):
- (JSC::PropertySlot::setValueSlot):
- (JSC::PropertySlot::setValue):
- (JSC::PropertySlot::setRegisterSlot):
- * kjs/lookup.h:
- * kjs/nodes.cpp:
- * kjs/nodes.h:
- (JSC::Node::):
- (JSC::ExpressionNode::):
- (JSC::StatementNode::):
- (JSC::NullNode::):
- (JSC::BooleanNode::):
- (JSC::NumberNode::):
- (JSC::ImmediateNumberNode::):
- (JSC::StringNode::):
- (JSC::RegExpNode::):
- (JSC::ThisNode::):
- (JSC::ResolveNode::):
- (JSC::ElementNode::):
- (JSC::ArrayNode::):
- (JSC::PropertyNode::):
- (JSC::PropertyListNode::):
- (JSC::ObjectLiteralNode::):
- (JSC::BracketAccessorNode::):
- (JSC::DotAccessorNode::):
- (JSC::ArgumentListNode::):
- (JSC::ArgumentsNode::):
- (JSC::NewExprNode::):
- (JSC::EvalFunctionCallNode::):
- (JSC::FunctionCallValueNode::):
- (JSC::FunctionCallResolveNode::):
- (JSC::FunctionCallBracketNode::):
- (JSC::FunctionCallDotNode::):
- (JSC::PrePostResolveNode::):
- (JSC::PostfixResolveNode::):
- (JSC::PostfixBracketNode::):
- (JSC::PostfixDotNode::):
- (JSC::PostfixErrorNode::):
- (JSC::DeleteResolveNode::):
- (JSC::DeleteBracketNode::):
- (JSC::DeleteDotNode::):
- (JSC::DeleteValueNode::):
- (JSC::VoidNode::):
- (JSC::TypeOfResolveNode::):
- (JSC::TypeOfValueNode::):
- (JSC::PrefixResolveNode::):
- (JSC::PrefixBracketNode::):
- (JSC::PrefixDotNode::):
- (JSC::PrefixErrorNode::):
- (JSC::UnaryPlusNode::):
- (JSC::NegateNode::):
- (JSC::BitwiseNotNode::):
- (JSC::LogicalNotNode::):
- (JSC::MultNode::):
- (JSC::DivNode::):
- (JSC::ModNode::):
- (JSC::AddNode::):
- (JSC::SubNode::):
- (JSC::LeftShiftNode::):
- (JSC::RightShiftNode::):
- (JSC::UnsignedRightShiftNode::):
- (JSC::LessNode::):
- (JSC::GreaterNode::):
- (JSC::LessEqNode::):
- (JSC::GreaterEqNode::):
- (JSC::ThrowableBinaryOpNode::):
- (JSC::InstanceOfNode::):
- (JSC::InNode::):
- (JSC::EqualNode::):
- (JSC::NotEqualNode::):
- (JSC::StrictEqualNode::):
- (JSC::NotStrictEqualNode::):
- (JSC::BitAndNode::):
- (JSC::BitOrNode::):
- (JSC::BitXOrNode::):
- (JSC::LogicalOpNode::):
- (JSC::ConditionalNode::):
- (JSC::ReadModifyResolveNode::):
- (JSC::AssignResolveNode::):
- (JSC::ReadModifyBracketNode::):
- (JSC::AssignBracketNode::):
- (JSC::AssignDotNode::):
- (JSC::ReadModifyDotNode::):
- (JSC::AssignErrorNode::):
- (JSC::CommaNode::):
- (JSC::VarDeclCommaNode::):
- (JSC::ConstDeclNode::):
- (JSC::ConstStatementNode::):
- (JSC::EmptyStatementNode::):
- (JSC::DebuggerStatementNode::):
- (JSC::ExprStatementNode::):
- (JSC::VarStatementNode::):
- (JSC::IfNode::):
- (JSC::IfElseNode::):
- (JSC::DoWhileNode::):
- (JSC::WhileNode::):
- (JSC::ForNode::):
- (JSC::ContinueNode::):
- (JSC::BreakNode::):
- (JSC::ReturnNode::):
- (JSC::WithNode::):
- (JSC::LabelNode::):
- (JSC::ThrowNode::):
- (JSC::TryNode::):
- (JSC::ParameterNode::):
- (JSC::ScopeNode::):
- (JSC::ProgramNode::):
- (JSC::EvalNode::):
- (JSC::FunctionBodyNode::):
- (JSC::FuncExprNode::):
- (JSC::FuncDeclNode::):
- (JSC::CaseClauseNode::):
- (JSC::ClauseListNode::):
- (JSC::CaseBlockNode::):
- (JSC::SwitchNode::):
-
-2008-09-07 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ * runtime/Collector.cpp
- Reviewed by Maciej Stachowiak.
+2009-07-22 Gavin Barraclough <barraclough@apple.com>
- Bug 20704: Replace the KJS namespace
- <https://bugs.webkit.org/show_bug.cgi?id=20704>
+ Reviewed by Sam Weinig.
- Rename the KJS namespace to JSC. There are still some uses of KJS in
- preprocessor macros and comments, but these will also be changed some
- time in the near future.
+ With ENABLE(ASSEMBLER_WX_EXCLUSIVE), only change permissions once per repatch event.
+ ( https://bugs.webkit.org/show_bug.cgi?id=27564 )
- * API/APICast.h:
- (toJS):
- (toRef):
- (toGlobalRef):
- * API/JSBase.cpp:
- * API/JSCallbackConstructor.cpp:
- * API/JSCallbackConstructor.h:
- * API/JSCallbackFunction.cpp:
- * API/JSCallbackFunction.h:
- * API/JSCallbackObject.cpp:
- * API/JSCallbackObject.h:
- * API/JSCallbackObjectFunctions.h:
- * API/JSClassRef.cpp:
- (OpaqueJSClass::staticValues):
- (OpaqueJSClass::staticFunctions):
- * API/JSClassRef.h:
- * API/JSContextRef.cpp:
- * API/JSObjectRef.cpp:
- * API/JSProfilerPrivate.cpp:
- * API/JSStringRef.cpp:
- * API/JSValueRef.cpp:
- (JSValueGetType):
- * API/OpaqueJSString.cpp:
- * API/OpaqueJSString.h:
- * JavaScriptCore.Debug.exp:
- * JavaScriptCore.base.exp:
- * VM/CTI.cpp:
- (JSC::):
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- * VM/CodeBlock.h:
- * VM/CodeGenerator.cpp:
- * VM/CodeGenerator.h:
- * VM/ExceptionHelpers.cpp:
- * VM/ExceptionHelpers.h:
- * VM/Instruction.h:
- * VM/JSPropertyNameIterator.cpp:
- * VM/JSPropertyNameIterator.h:
- * VM/LabelID.h:
- * VM/Machine.cpp:
- * VM/Machine.h:
- * VM/Opcode.cpp:
- * VM/Opcode.h:
- * VM/Register.h:
- (WTF::):
- * VM/RegisterFile.cpp:
- * VM/RegisterFile.h:
- * VM/RegisterID.h:
- (WTF::):
- * VM/SamplingTool.cpp:
- * VM/SamplingTool.h:
- * VM/SegmentedVector.h:
- * kjs/ArgList.cpp:
- * kjs/ArgList.h:
- * kjs/Arguments.cpp:
- * kjs/Arguments.h:
- * kjs/ArrayConstructor.cpp:
- * kjs/ArrayConstructor.h:
- * kjs/ArrayPrototype.cpp:
- * kjs/ArrayPrototype.h:
- * kjs/BatchedTransitionOptimizer.h:
- * kjs/BooleanConstructor.cpp:
- * kjs/BooleanConstructor.h:
- * kjs/BooleanObject.cpp:
- * kjs/BooleanObject.h:
- * kjs/BooleanPrototype.cpp:
- * kjs/BooleanPrototype.h:
- * kjs/CallData.cpp:
- * kjs/CallData.h:
- * kjs/ClassInfo.h:
- * kjs/CommonIdentifiers.cpp:
- * kjs/CommonIdentifiers.h:
- * kjs/ConstructData.cpp:
- * kjs/ConstructData.h:
- * kjs/DateConstructor.cpp:
- * kjs/DateConstructor.h:
- * kjs/DateInstance.cpp:
- (JSC::DateInstance::msToGregorianDateTime):
- * kjs/DateInstance.h:
- * kjs/DateMath.cpp:
- * kjs/DateMath.h:
- * kjs/DatePrototype.cpp:
- * kjs/DatePrototype.h:
- * kjs/DebuggerCallFrame.cpp:
- * kjs/DebuggerCallFrame.h:
- * kjs/Error.cpp:
- * kjs/Error.h:
- * kjs/ErrorConstructor.cpp:
- * kjs/ErrorConstructor.h:
- * kjs/ErrorInstance.cpp:
- * kjs/ErrorInstance.h:
- * kjs/ErrorPrototype.cpp:
- * kjs/ErrorPrototype.h:
- * kjs/ExecState.cpp:
- * kjs/ExecState.h:
- * kjs/FunctionConstructor.cpp:
- * kjs/FunctionConstructor.h:
- * kjs/FunctionPrototype.cpp:
- * kjs/FunctionPrototype.h:
- * kjs/GetterSetter.cpp:
- * kjs/GetterSetter.h:
- * kjs/GlobalEvalFunction.cpp:
- * kjs/GlobalEvalFunction.h:
- * kjs/IndexToNameMap.cpp:
- * kjs/IndexToNameMap.h:
- * kjs/InitializeThreading.cpp:
- * kjs/InitializeThreading.h:
- * kjs/InternalFunction.cpp:
- * kjs/InternalFunction.h:
- (JSC::InternalFunction::InternalFunction):
- * kjs/JSActivation.cpp:
- * kjs/JSActivation.h:
- * kjs/JSArray.cpp:
- * kjs/JSArray.h:
- * kjs/JSCell.cpp:
- * kjs/JSCell.h:
- * kjs/JSFunction.cpp:
- * kjs/JSFunction.h:
- (JSC::JSFunction::JSFunction):
- * kjs/JSGlobalData.cpp:
- (JSC::JSGlobalData::JSGlobalData):
- * kjs/JSGlobalData.h:
- * kjs/JSGlobalObject.cpp:
- * kjs/JSGlobalObject.h:
- * kjs/JSGlobalObjectFunctions.cpp:
- * kjs/JSGlobalObjectFunctions.h:
- * kjs/JSImmediate.cpp:
- * kjs/JSImmediate.h:
- * kjs/JSLock.cpp:
- * kjs/JSLock.h:
- * kjs/JSNotAnObject.cpp:
- * kjs/JSNotAnObject.h:
- * kjs/JSNumberCell.cpp:
- * kjs/JSNumberCell.h:
- * kjs/JSObject.cpp:
- * kjs/JSObject.h:
- * kjs/JSStaticScopeObject.cpp:
- * kjs/JSStaticScopeObject.h:
- * kjs/JSString.cpp:
- * kjs/JSString.h:
- * kjs/JSType.h:
- * kjs/JSValue.cpp:
- * kjs/JSValue.h:
- * kjs/JSVariableObject.cpp:
- * kjs/JSVariableObject.h:
- * kjs/JSWrapperObject.cpp:
- * kjs/JSWrapperObject.h:
- * kjs/LabelStack.cpp:
- * kjs/LabelStack.h:
- * kjs/MathObject.cpp:
- * kjs/MathObject.h:
- * kjs/NativeErrorConstructor.cpp:
- * kjs/NativeErrorConstructor.h:
- * kjs/NativeErrorPrototype.cpp:
- * kjs/NativeErrorPrototype.h:
- * kjs/NodeInfo.h:
- * kjs/NumberConstructor.cpp:
- * kjs/NumberConstructor.h:
- * kjs/NumberObject.cpp:
- * kjs/NumberObject.h:
- * kjs/NumberPrototype.cpp:
- * kjs/NumberPrototype.h:
- * kjs/ObjectConstructor.cpp:
- * kjs/ObjectConstructor.h:
- * kjs/ObjectPrototype.cpp:
- * kjs/ObjectPrototype.h:
- * kjs/Parser.cpp:
- * kjs/Parser.h:
- * kjs/PropertyMap.cpp:
- (JSC::PropertyMapStatisticsExitLogger::~PropertyMapStatisticsExitLogger):
- * kjs/PropertyMap.h:
- * kjs/PropertyNameArray.cpp:
- * kjs/PropertyNameArray.h:
- * kjs/PropertySlot.cpp:
- * kjs/PropertySlot.h:
- * kjs/PrototypeFunction.cpp:
- * kjs/PrototypeFunction.h:
- * kjs/PutPropertySlot.h:
- * kjs/RegExpConstructor.cpp:
- * kjs/RegExpConstructor.h:
- * kjs/RegExpObject.cpp:
- * kjs/RegExpObject.h:
- * kjs/RegExpPrototype.cpp:
- * kjs/RegExpPrototype.h:
- * kjs/ScopeChain.cpp:
- * kjs/ScopeChain.h:
- * kjs/ScopeChainMark.h:
- * kjs/Shell.cpp:
- (jscmain):
- * kjs/SmallStrings.cpp:
- * kjs/SmallStrings.h:
- * kjs/SourceProvider.h:
- * kjs/SourceRange.h:
- * kjs/StringConstructor.cpp:
- * kjs/StringConstructor.h:
- * kjs/StringObject.cpp:
- * kjs/StringObject.h:
- * kjs/StringObjectThatMasqueradesAsUndefined.h:
- * kjs/StringPrototype.cpp:
- * kjs/StringPrototype.h:
- * kjs/StructureID.cpp:
- * kjs/StructureID.h:
- * kjs/SymbolTable.h:
- * kjs/collector.cpp:
- * kjs/collector.h:
- * kjs/completion.h:
- * kjs/create_hash_table:
- * kjs/debugger.cpp:
- * kjs/debugger.h:
- * kjs/dtoa.cpp:
- * kjs/dtoa.h:
- * kjs/grammar.y:
- * kjs/identifier.cpp:
- * kjs/identifier.h:
- (JSC::Identifier::equal):
- * kjs/interpreter.cpp:
- * kjs/interpreter.h:
- * kjs/lexer.cpp:
- (JSC::Lexer::Lexer):
- (JSC::Lexer::clear):
- (JSC::Lexer::makeIdentifier):
- * kjs/lexer.h:
- * kjs/lookup.cpp:
- * kjs/lookup.h:
- * kjs/nodes.cpp:
- * kjs/nodes.h:
- * kjs/nodes2string.cpp:
- * kjs/operations.cpp:
- * kjs/operations.h:
- * kjs/protect.h:
- * kjs/regexp.cpp:
- * kjs/regexp.h:
- * kjs/ustring.cpp:
- * kjs/ustring.h:
- (JSC::operator!=):
- (JSC::IdentifierRepHash::hash):
- (WTF::):
- * masm/MacroAssembler.h:
- * masm/MacroAssemblerWin.cpp:
- * masm/X86Assembler.h:
- * pcre/pcre_exec.cpp:
- * profiler/CallIdentifier.h:
- (WTF::):
- * profiler/HeavyProfile.cpp:
- * profiler/HeavyProfile.h:
- * profiler/Profile.cpp:
- * profiler/Profile.h:
- * profiler/ProfileGenerator.cpp:
- * profiler/ProfileGenerator.h:
- * profiler/ProfileNode.cpp:
- * profiler/ProfileNode.h:
- * profiler/Profiler.cpp:
- * profiler/Profiler.h:
- * profiler/TreeProfile.cpp:
- * profiler/TreeProfile.h:
- * wrec/WREC.cpp:
- * wrec/WREC.h:
- * wtf/AVLTree.h:
+ Currently we change permissions forwards and backwards for each instruction modified,
+ instead we should only change permissions once per complete repatching event.
-2008-09-07 Maciej Stachowiak <mjs@apple.com>
+ 2.5% progression running with ENABLE(ASSEMBLER_WX_EXCLUSIVE) enabled,
+ which recoups 1/3 of the penalty of running with this mode enabled.
- Reviewed by Dan Bernstein.
-
- - rename IA32MacroAssembler class to X86Assembler
+ * assembler/ARMAssembler.cpp:
+ (JSC::ARMAssembler::linkBranch):
+ - Replace usage of MakeWritable with cacheFlush.
- We otherwise call the platform X86, and also, I don't see any macros.
-
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * masm/IA32MacroAsm.h: Removed.
- * masm/MacroAssembler.h:
- (KJS::MacroAssembler::MacroAssembler):
- * masm/MacroAssemblerWin.cpp:
- (KJS::MacroAssembler::emitRestoreArgumentReference):
- * masm/X86Assembler.h: Copied from masm/IA32MacroAsm.h.
- (KJS::X86Assembler::X86Assembler):
- * wrec/WREC.cpp:
- (KJS::WRECGenerator::generateNonGreedyQuantifier):
- (KJS::WRECGenerator::generateGreedyQuantifier):
- (KJS::WRECGenerator::generateParentheses):
- (KJS::WRECGenerator::generateBackreference):
- (KJS::WRECGenerator::gernerateDisjunction):
- * wrec/WREC.h:
+ * assembler/ARMAssembler.h:
+ (JSC::ARMAssembler::patchPointerInternal):
+ (JSC::ARMAssembler::repatchLoadPtrToLEA):
+ - Replace usage of MakeWritable with cacheFlush.
-2008-09-07 Cameron Zwarich <cwzwarich@webkit.org>
+ * assembler/ARMv7Assembler.h:
+ (JSC::ARMv7Assembler::relinkJump):
+ (JSC::ARMv7Assembler::relinkCall):
+ (JSC::ARMv7Assembler::repatchInt32):
+ (JSC::ARMv7Assembler::repatchPointer):
+ (JSC::ARMv7Assembler::repatchLoadPtrToLEA):
+ (JSC::ARMv7Assembler::setInt32):
+ - Replace usage of MakeWritable with cacheFlush.
- Not reviewed.
+ * assembler/LinkBuffer.h:
+ (JSC::LinkBuffer::performFinalization):
+ - Make explicit call to cacheFlush.
- Visual C++ seems to have some odd casting rules, so just convert the
- offending cast back to a C-style cast for now.
+ * assembler/MacroAssemblerCodeRef.h:
+ (JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef):
+ - Make size always available.
- * kjs/collector.cpp:
- (KJS::otherThreadStackPointer):
+ * assembler/RepatchBuffer.h:
+ (JSC::RepatchBuffer::RepatchBuffer):
+ (JSC::RepatchBuffer::~RepatchBuffer):
+ - Add calls to MakeWritable & makeExecutable.
-2008-09-07 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Mark Rowe.
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::relinkJump):
+ (JSC::X86Assembler::relinkCall):
+ (JSC::X86Assembler::repatchInt32):
+ (JSC::X86Assembler::repatchPointer):
+ (JSC::X86Assembler::repatchLoadPtrToLEA):
+ - Remove usage of MakeWritable.
- Attempt to fix the Windows build by using a const_cast to cast regs.Esp
- to a uintptr_t instead of a reinterpret_cast.
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::getJITCode):
+ - Provide access to CodeBlock's JITCode.
- * kjs/collector.cpp:
- (KJS::otherThreadStackPointer):
+ * jit/ExecutableAllocator.h:
+ (JSC::ExecutableAllocator::makeExecutable):
+ (JSC::ExecutableAllocator::cacheFlush):
+ - Remove MakeWritable, make cacheFlush public.
-2008-09-07 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ * jit/JIT.cpp:
+ (JSC::ctiPatchNearCallByReturnAddress):
+ (JSC::ctiPatchCallByReturnAddress):
+ (JSC::JIT::privateCompile):
+ (JSC::JIT::unlinkCall):
+ (JSC::JIT::linkCall):
+ - Add CodeBlock argument to RepatchBuffer.
- Reviewed by Sam Weinig.
+ * jit/JIT.h:
+ - Pass CodeBlock argument for use by RepatchBuffer.
- Remove C-style casts from kjs/collector.cpp.
+ * jit/JITCode.h:
+ (JSC::JITCode::start):
+ (JSC::JITCode::size):
+ - Provide access to code start & size.
- * kjs/collector.cpp:
- (KJS::Heap::heapAllocate):
- (KJS::currentThreadStackBase):
- (KJS::Heap::markConservatively):
- (KJS::otherThreadStackPointer):
- (KJS::Heap::markOtherThreadConservatively):
- (KJS::Heap::sweep):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::privateCompilePutByIdTransition):
+ (JSC::JIT::patchGetByIdSelf):
+ (JSC::JIT::patchMethodCallProto):
+ (JSC::JIT::patchPutByIdReplace):
+ (JSC::JIT::privateCompilePatchGetArrayLength):
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdSelfList):
+ (JSC::JIT::privateCompileGetByIdProtoList):
+ (JSC::JIT::privateCompileGetByIdChainList):
+ (JSC::JIT::privateCompileGetByIdChain):
+ - Add CodeBlock argument to RepatchBuffer.
-2008-09-07 Mark Rowe <mrowe@apple.com>
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::tryCachePutByID):
+ (JSC::JITThunks::tryCacheGetByID):
+ (JSC::JITStubs::DEFINE_STUB_FUNCTION):
+ - Pass CodeBlock argument for use by RepatchBuffer.
- Build fix for the debug variant.
+2009-07-21 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
- * DerivedSources.make: Also use the .Debug.exp exports file when building the debug variant.
+ Reviewed by Gavin Barraclough.
-2008-09-07 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Cache not only the structure of the method, but the
+ structure of its prototype as well.
+ https://bugs.webkit.org/show_bug.cgi?id=27077
- Reviewed by Timothy Hatcher.
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::~CodeBlock):
+ * bytecode/CodeBlock.h:
+ (JSC::MethodCallLinkInfo::MethodCallLinkInfo):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::patchMethodCallProto):
- Remove C-style casts from the CTI code.
+2009-07-21 Gavin Barraclough <barraclough@apple.com>
- * VM/CTI.cpp:
- (KJS::CTI::emitGetArg):
- (KJS::CTI::emitGetPutArg):
- (KJS::ctiRepatchCallByReturnAddress):
- (KJS::CTI::compileOpCall):
- (KJS::CTI::privateCompileMainPass):
- (KJS::CTI::privateCompileGetByIdSelf):
- (KJS::CTI::privateCompileGetByIdProto):
- (KJS::CTI::privateCompileGetByIdChain):
- (KJS::CTI::privateCompilePutByIdReplace):
- (KJS::CTI::privateArrayLengthTrampoline):
- (KJS::CTI::privateStringLengthTrampoline):
+ Reviewed by Sam Weinig.
-=== End merge of squirrelfish-extreme ===
+ Move call linking / repatching down from AbstractMacroAssembler into MacroAssemblerARCH classes.
+ ( https://bugs.webkit.org/show_bug.cgi?id=27527 )
-2008-09-06 Gavin Barraclough <barraclough@apple.com>
+ This allows the implementation to be defined per architecture. Specifically this addresses the
+ fact that x86-64 MacroAssembler implements far calls as a load to register, followed by a call
+ to register. Patching the call actually requires the pointer load to be patched, rather than
+ the call to be patched. This is implementation detail specific to MacroAssemblerX86_64, and as
+ such is best handled there.
- Reviewed by Sam Weinig. Adapted somewhat by Maciej Stachowiak.
-
- - refactor WREC to share more of the JIT infrastructure with CTI
-
- * VM/CTI.cpp:
- (KJS::CTI::emitGetArg):
- (KJS::CTI::emitGetPutArg):
- (KJS::CTI::emitPutArg):
- (KJS::CTI::emitPutArgConstant):
- (KJS::CTI::emitPutCTIParam):
- (KJS::CTI::emitGetCTIParam):
- (KJS::CTI::emitPutToCallFrameHeader):
- (KJS::CTI::emitGetFromCallFrameHeader):
- (KJS::CTI::emitPutResult):
- (KJS::CTI::emitDebugExceptionCheck):
- (KJS::CTI::emitJumpSlowCaseIfNotImm):
- (KJS::CTI::emitJumpSlowCaseIfNotImms):
- (KJS::CTI::emitFastArithDeTagImmediate):
- (KJS::CTI::emitFastArithReTagImmediate):
- (KJS::CTI::emitFastArithPotentiallyReTagImmediate):
- (KJS::CTI::emitFastArithImmToInt):
- (KJS::CTI::emitFastArithIntToImmOrSlowCase):
- (KJS::CTI::emitFastArithIntToImmNoCheck):
- (KJS::CTI::CTI):
- (KJS::CTI::compileOpCall):
- (KJS::CTI::privateCompileMainPass):
- (KJS::CTI::privateCompileSlowCases):
- (KJS::CTI::privateCompile):
- (KJS::CTI::privateCompileGetByIdSelf):
- (KJS::CTI::privateCompileGetByIdProto):
- (KJS::CTI::privateCompileGetByIdChain):
- (KJS::CTI::privateCompilePutByIdReplace):
- (KJS::CTI::privateArrayLengthTrampoline):
- (KJS::CTI::privateStringLengthTrampoline):
- (KJS::CTI::compileRegExp):
- * VM/CTI.h:
- (KJS::CallRecord::CallRecord):
- (KJS::JmpTable::JmpTable):
- (KJS::SlowCaseEntry::SlowCaseEntry):
- (KJS::CTI::JSRInfo::JSRInfo):
- * kjs/regexp.cpp:
- (KJS::RegExp::RegExp):
- * wrec/WREC.cpp:
- (KJS::GenerateParenthesesNonGreedyFunctor::GenerateParenthesesNonGreedyFunctor):
- (KJS::GeneratePatternCharacterFunctor::generateAtom):
- (KJS::GeneratePatternCharacterFunctor::backtrack):
- (KJS::GenerateCharacterClassFunctor::generateAtom):
- (KJS::GenerateCharacterClassFunctor::backtrack):
- (KJS::GenerateBackreferenceFunctor::generateAtom):
- (KJS::GenerateBackreferenceFunctor::backtrack):
- (KJS::GenerateParenthesesNonGreedyFunctor::generateAtom):
- (KJS::GenerateParenthesesNonGreedyFunctor::backtrack):
- (KJS::WRECGenerate::generateBacktrack1):
- (KJS::WRECGenerate::generateBacktrackBackreference):
- (KJS::WRECGenerate::generateBackreferenceQuantifier):
- (KJS::WRECGenerate::generateNonGreedyQuantifier):
- (KJS::WRECGenerate::generateGreedyQuantifier):
- (KJS::WRECGenerate::generatePatternCharacter):
- (KJS::WRECGenerate::generateCharacterClassInvertedRange):
- (KJS::WRECGenerate::generateCharacterClassInverted):
- (KJS::WRECGenerate::generateCharacterClass):
- (KJS::WRECGenerate::generateParentheses):
- (KJS::WRECGenerate::generateParenthesesNonGreedy):
- (KJS::WRECGenerate::gererateParenthesesResetTrampoline):
- (KJS::WRECGenerate::generateAssertionBOL):
- (KJS::WRECGenerate::generateAssertionEOL):
- (KJS::WRECGenerate::generateAssertionWordBoundary):
- (KJS::WRECGenerate::generateBackreference):
- (KJS::WRECGenerate::gernerateDisjunction):
- (KJS::WRECGenerate::terminateDisjunction):
- (KJS::WRECParser::parseGreedyQuantifier):
- (KJS::WRECParser::parseQuantifier):
- (KJS::WRECParser::parsePatternCharacterQualifier):
- (KJS::WRECParser::parseCharacterClassQuantifier):
- (KJS::WRECParser::parseBackreferenceQuantifier):
- (KJS::WRECParser::parseParentheses):
- (KJS::WRECParser::parseCharacterClass):
- (KJS::WRECParser::parseOctalEscape):
- (KJS::WRECParser::parseEscape):
- (KJS::WRECParser::parseTerm):
- (KJS::WRECParser::parseDisjunction):
- * wrec/WREC.h:
- (KJS::WRECGenerate::WRECGenerate):
- (KJS::WRECParser::):
- (KJS::WRECParser::WRECParser):
- (KJS::WRECParser::parseAlternative):
- (KJS::WRECParser::isEndOfPattern):
+ * assembler/AbstractMacroAssembler.h:
+ * assembler/MacroAssemblerARM.h:
+ (JSC::MacroAssemblerARM::linkCall):
+ (JSC::MacroAssemblerARM::repatchCall):
+ * assembler/MacroAssemblerARMv7.h:
+ (JSC::MacroAssemblerARMv7::linkCall):
+ (JSC::MacroAssemblerARMv7::repatchCall):
+ * assembler/MacroAssemblerX86.h:
+ (JSC::MacroAssemblerX86::linkCall):
+ (JSC::MacroAssemblerX86::repatchCall):
+ * assembler/MacroAssemblerX86_64.h:
+ (JSC::MacroAssemblerX86_64::linkCall):
+ (JSC::MacroAssemblerX86_64::repatchCall):
-2008-09-06 Oliver Hunt <oliver@apple.com>
+2009-07-21 Adam Treat <adam.treat@torchmobile.com>
- Reviewed by NOBODY (Build fix).
+ Reviewed by George Staikos.
- Fix the sampler build.
+ Every wtf file includes other wtf files with <> style includes
+ except this one. Fix the exception.
- * VM/SamplingTool.h:
+ * wtf/ByteArray.h:
-2008-09-06 Oliver Hunt <oliver@apple.com>
+2009-07-21 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Maciej Stachowiak.
+ Reviewed by Oliver Hunt.
- Jump through the necessary hoops required to make MSVC cooperate with SFX
+ Move LinkBuffer/RepatchBuffer out of AbstractMacroAssembler.
+ ( https://bugs.webkit.org/show_bug.cgi?id=27485 )
- We now explicitly declare the calling convention on all cti_op_* cfunctions,
- and return int instead of bool where appropriate (despite the cdecl calling
- convention seems to state MSVC generates code that returns the result value
- through ecx). SFX behaves slightly differently under MSVC, specifically it
- stores the base argument address for the cti_op_* functions in the first
- argument, and then does the required stack manipulation through that pointer.
- This is necessary as MSVC's optimisations assume they have complete control
- of the stack, and periodically elide our stack manipulations, or move
- values in unexpected ways. MSVC also frequently produces tail calls which may
- clobber the first argument, so the MSVC path is slightly less efficient due
- to the need to restore it.
+ This change is the first step in a process to move code that should be in
+ the architecture-specific MacroAssembler classes up out of Assmbler and
+ AbstractMacroAssembler.
* JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CTI.cpp:
- (KJS::):
- (KJS::CTI::compileOpCall):
- (KJS::CTI::privateCompileMainPass):
- (KJS::CTI::privateCompileSlowCases):
- * VM/CTI.h:
- * VM/Machine.cpp:
- * VM/Machine.h:
- * masm/MacroAssembler.h:
- (KJS::MacroAssembler::emitConvertToFastCall):
- * masm/MacroAssemblerIA32GCC.cpp: Removed.
- For performance reasons we need these no-op functions to be inlined.
-
- * masm/MacroAssemblerWin.cpp:
- (KJS::MacroAssembler::emitRestoreArgumentReference):
- * wtf/Platform.h:
+ - added new files
+
+ * assembler/ARMAssembler.h:
+ (JSC::ARMAssembler::linkPointer):
+ - rename patchPointer to bring it in line with the current link/repatch naming scheme
+
+ * assembler/ARMv7Assembler.h:
+ (JSC::ARMv7Assembler::linkCall):
+ (JSC::ARMv7Assembler::linkPointer):
+ (JSC::ARMv7Assembler::relinkCall):
+ (JSC::ARMv7Assembler::repatchInt32):
+ (JSC::ARMv7Assembler::repatchPointer):
+ (JSC::ARMv7Assembler::setInt32):
+ (JSC::ARMv7Assembler::setPointer):
+ - rename patchPointer to bring it in line with the current link/repatch naming scheme
-2008-09-05 Geoffrey Garen <ggaren@apple.com>
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::linkJump):
+ (JSC::AbstractMacroAssembler::linkCall):
+ (JSC::AbstractMacroAssembler::linkPointer):
+ (JSC::AbstractMacroAssembler::getLinkerAddress):
+ (JSC::AbstractMacroAssembler::getLinkerCallReturnOffset):
+ (JSC::AbstractMacroAssembler::repatchJump):
+ (JSC::AbstractMacroAssembler::repatchCall):
+ (JSC::AbstractMacroAssembler::repatchNearCall):
+ (JSC::AbstractMacroAssembler::repatchInt32):
+ (JSC::AbstractMacroAssembler::repatchPointer):
+ (JSC::AbstractMacroAssembler::repatchLoadPtrToLEA):
+ - remove the LinkBuffer/RepatchBuffer classes, but leave a set of (private, friended) methods to interface to the Assembler
+
+ * assembler/LinkBuffer.h: Added.
+ (JSC::LinkBuffer::LinkBuffer):
+ (JSC::LinkBuffer::~LinkBuffer):
+ (JSC::LinkBuffer::link):
+ (JSC::LinkBuffer::patch):
+ (JSC::LinkBuffer::locationOf):
+ (JSC::LinkBuffer::locationOfNearCall):
+ (JSC::LinkBuffer::returnAddressOffset):
+ (JSC::LinkBuffer::finalizeCode):
+ (JSC::LinkBuffer::finalizeCodeAddendum):
+ (JSC::LinkBuffer::code):
+ (JSC::LinkBuffer::performFinalization):
+ - new file containing the LinkBuffer class, previously a member of AbstractMacroAssembler
+
+ * assembler/RepatchBuffer.h: Added.
+ (JSC::RepatchBuffer::RepatchBuffer):
+ (JSC::RepatchBuffer::relink):
+ (JSC::RepatchBuffer::repatch):
+ (JSC::RepatchBuffer::repatchLoadPtrToLEA):
+ (JSC::RepatchBuffer::relinkCallerToTrampoline):
+ (JSC::RepatchBuffer::relinkCallerToFunction):
+ (JSC::RepatchBuffer::relinkNearCallerToTrampoline):
+ - new file containing the RepatchBuffer class, previously a member of AbstractMacroAssembler
- Reviewed by Maciej Stachowiak, or maybe the other way around.
-
- Added the ability to coalesce JITCode buffer grow operations by first
- growing the buffer and then executing unchecked puts to it.
-
- About a 2% speedup on date-format-tofte.
-
- * VM/CTI.cpp:
- (KJS::CTI::compileOpCall):
- * masm/IA32MacroAsm.h:
- (KJS::JITCodeBuffer::ensureSpace):
- (KJS::JITCodeBuffer::putByteUnchecked):
- (KJS::JITCodeBuffer::putByte):
- (KJS::JITCodeBuffer::putShortUnchecked):
- (KJS::JITCodeBuffer::putShort):
- (KJS::JITCodeBuffer::putIntUnchecked):
- (KJS::JITCodeBuffer::putInt):
- (KJS::IA32MacroAssembler::emitTestl_i32r):
- (KJS::IA32MacroAssembler::emitMovl_mr):
- (KJS::IA32MacroAssembler::emitMovl_rm):
- (KJS::IA32MacroAssembler::emitMovl_i32m):
- (KJS::IA32MacroAssembler::emitUnlinkedJe):
- (KJS::IA32MacroAssembler::emitModRm_rr):
- (KJS::IA32MacroAssembler::emitModRm_rr_Unchecked):
- (KJS::IA32MacroAssembler::emitModRm_rm_Unchecked):
- (KJS::IA32MacroAssembler::emitModRm_rm):
- (KJS::IA32MacroAssembler::emitModRm_opr):
- (KJS::IA32MacroAssembler::emitModRm_opr_Unchecked):
- (KJS::IA32MacroAssembler::emitModRm_opm_Unchecked):
-
-2008-09-05 Mark Rowe <mrowe@apple.com>
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::linkJump):
+ (JSC::X86Assembler::linkCall):
+ (JSC::X86Assembler::linkPointerForCall):
+ (JSC::X86Assembler::linkPointer):
+ (JSC::X86Assembler::relinkJump):
+ (JSC::X86Assembler::relinkCall):
+ (JSC::X86Assembler::repatchInt32):
+ (JSC::X86Assembler::repatchPointer):
+ (JSC::X86Assembler::setPointer):
+ (JSC::X86Assembler::setInt32):
+ (JSC::X86Assembler::setRel32):
+ - rename patchPointer to bring it in line with the current link/repatch naming scheme
- Reviewed by Sam Weinig.
+ * jit/JIT.cpp:
+ (JSC::ctiPatchNearCallByReturnAddress):
+ (JSC::ctiPatchCallByReturnAddress):
+ - include new headers
+ - remove MacroAssembler:: specification from RepatchBuffer usage
- Disable WREC and CTI on platforms that we have not yet had a chance to test with.
+ * jit/JITPropertyAccess.cpp:
+ * yarr/RegexJIT.cpp:
+ - include new headers
- * wtf/Platform.h:
+2009-07-21 Robert Agoston <Agoston.Robert@stud.u-szeged.hu>
-2008-09-05 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by David Levin.
- Reviewed by Sam Weinig.
-
- Use jo instead of a mask compare when fetching array.length and
- string.length. 4% speedup on array.length / string.length torture
- test.
+ Fixed #undef typo.
+ https://bugs.webkit.org/show_bug.cgi?id=27506
- * VM/CTI.cpp:
- (KJS::CTI::privateArrayLengthTrampoline):
- (KJS::CTI::privateStringLengthTrampoline):
+ * bytecode/Opcode.h:
-2008-09-05 Geoffrey Garen <ggaren@apple.com>
+2009-07-21 Adam Roben <aroben@apple.com>
- Reviewed by Sam Weinig.
+ Roll out r46153, r46154, and r46155
- Removed a CTI compilation pass by recording labels during bytecode
- generation. This is more to reduce complexity than it is to improve
- performance.
+ These changes were causing build failures and assertion failures on
+ Windows.
- SunSpider reports no change.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * runtime/JSArray.cpp:
+ * runtime/StringPrototype.cpp:
+ * runtime/UString.cpp:
+ * runtime/UString.h:
+ * wtf/FastMalloc.cpp:
+ * wtf/FastMalloc.h:
+ * wtf/Platform.h:
+ * wtf/PossiblyNull.h: Removed.
- CodeBlock now keeps a "labels" set, which holds the offsets of all the
- instructions that can be jumped to.
-
- * VM/CTI.cpp: Nixed a pass.
-
- * VM/CodeBlock.h: Added a "labels" set.
-
- * VM/LabelID.h: No need for a special LableID for holding jump
- destinations, since the CodeBlock now knows all jump destinations.
-
- * wtf/HashTraits.h: New hash traits to accomodate putting offset 0 in
- the set.
-
- * kjs/nodes.cpp:
- (KJS::TryNode::emitCode): Emit a dummy label to record sret targets.
-
-2008-09-05 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt and Gavin Barraclough.
-
- Move the JITCodeBuffer onto Machine and remove the static variables.
-
- * VM/CTI.cpp: Initialize m_jit with the Machine's code buffer.
- * VM/Machine.cpp:
- (KJS::Machine::Machine): Allocate a JITCodeBuffer.
- * VM/Machine.h:
- * kjs/RegExpConstructor.cpp:
- (KJS::constructRegExp): Pass the ExecState through.
- * kjs/RegExpPrototype.cpp:
- (KJS::regExpProtoFuncCompile): Ditto.
- * kjs/StringPrototype.cpp:
- (KJS::stringProtoFuncMatch): Ditto.
- (KJS::stringProtoFuncSearch): Ditto.
- * kjs/nodes.cpp:
- (KJS::RegExpNode::emitCode): Compile the pattern at code generation time
- so that we have access to an ExecState.
- * kjs/nodes.h:
- (KJS::RegExpNode::):
- * kjs/nodes2string.cpp:
- * kjs/regexp.cpp:
- (KJS::RegExp::RegExp): Pass the ExecState through.
- (KJS::RegExp::create): Ditto.
- * kjs/regexp.h:
- * masm/IA32MacroAsm.h:
- (KJS::IA32MacroAssembler::IA32MacroAssembler): Reset the JITCodeBuffer when we are
- constructed.
- * wrec/WREC.cpp:
- (KJS::WRECompiler::compile): Retrieve the JITCodeBuffer from the Machine.
- * wrec/WREC.h:
+2009-07-21 Roland Steiner <rolandsteiner@google.com>
-2008-09-05 Mark Rowe <mrowe@apple.com>
+ Reviewed by David Levin.
- Reviewed by Oliver Hunt and Gavin Barraclough.
+ Add ENABLE_RUBY to list of build options
+ https://bugs.webkit.org/show_bug.cgi?id=27324
- Fix the build when CTI is disabled.
+ * Configurations/FeatureDefines.xcconfig: Added flag ENABLE_RUBY.
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::~CodeBlock):
- * VM/CodeGenerator.cpp:
- (KJS::prepareJumpTableForStringSwitch):
- * VM/Machine.cpp:
- (KJS::Machine::Machine):
- (KJS::Machine::~Machine):
+2009-07-20 Oliver Hunt <oliver@apple.com>
-2008-09-05 Gavin Barraclough <barraclough@apple.com>
+ Build fix attempt #2
- Reviewed by Mark Rowe.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Fix some windows abi issues.
+2009-07-20 Oliver Hunt <oliver@apple.com>
- * VM/CTI.cpp:
- (KJS::CTI::privateCompileMainPass):
- (KJS::CTI::privateCompileSlowCases):
- * VM/CTI.h:
- (KJS::CallRecord::CallRecord):
- (KJS::):
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_resolve_func):
- (KJS::Machine::cti_op_post_inc):
- (KJS::Machine::cti_op_resolve_with_base):
- (KJS::Machine::cti_op_post_dec):
- * VM/Machine.h:
+ Build fix attempt #1
-2008-09-05 Mark Rowe <mrowe@apple.com>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Reviewed by Sam Weinig.
+2009-07-20 Oliver Hunt <oliver@apple.com>
- Fix ecma/FunctionObjects/15.3.5.3.js after I broke it in r93.
+ Reviewed by Gavin Barraclough.
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_call_NotJSFunction): Restore m_callFrame to the correct value after making the native call.
- (KJS::Machine::cti_op_construct_NotJSConstruct): Ditto.
+ Make it harder to misuse try* allocation routines
+ https://bugs.webkit.org/show_bug.cgi?id=27469
-2008-09-04 Mark Rowe <mrowe@apple.com>
+ Jump through a few hoops to make it much harder to accidentally
+ miss null-checking of values returned by the try-* allocation
+ routines.
- Reviewed by Sam Weinig.
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * runtime/JSArray.cpp:
+ (JSC::JSArray::putSlowCase):
+ (JSC::JSArray::increaseVectorLength):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncFontsize):
+ (JSC::stringProtoFuncLink):
+ * runtime/UString.cpp:
+ (JSC::allocChars):
+ (JSC::reallocChars):
+ (JSC::expandCapacity):
+ (JSC::UString::Rep::reserveCapacity):
+ (JSC::UString::expandPreCapacity):
+ (JSC::createRep):
+ (JSC::concatenate):
+ (JSC::UString::spliceSubstringsWithSeparators):
+ (JSC::UString::replaceRange):
+ (JSC::UString::append):
+ (JSC::UString::operator=):
+ * runtime/UString.h:
+ (JSC::UString::Rep::createEmptyBuffer):
+ * wtf/FastMalloc.cpp:
+ (WTF::tryFastZeroedMalloc):
+ (WTF::tryFastMalloc):
+ (WTF::tryFastCalloc):
+ (WTF::tryFastRealloc):
+ (WTF::TCMallocStats::tryFastMalloc):
+ (WTF::TCMallocStats::tryFastCalloc):
+ (WTF::TCMallocStats::tryFastRealloc):
+ * wtf/FastMalloc.h:
+ (WTF::TryMallocReturnValue::TryMallocReturnValue):
+ (WTF::TryMallocReturnValue::~TryMallocReturnValue):
+ (WTF::TryMallocReturnValue::operator Maybe<T>):
+ (WTF::TryMallocReturnValue::getValue):
+ * wtf/PossiblyNull.h:
+ (WTF::PossiblyNull::PossiblyNull):
+ (WTF::PossiblyNull::~PossiblyNull):
+ (WTF::PossiblyNull::getValue):
+ * wtf/Platform.h:
- Fix fast/dom/Window/console-functions.html.
+2009-07-20 Gavin Barraclough <barraclough@apple.com>
- The call frame on the ExecState was not being updated on calls into native functions. This meant that functions
- such as console.log would use the line number of the last JS function on the call stack.
+ RS Oliver Hunt.
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_call_NotJSFunction): Update the ExecState's call frame before making a native function call,
- and restore it when the function is done.
- (KJS::Machine::cti_op_construct_NotJSConstruct): Ditto.
+ Add ARM assembler files to xcodeproj, for convenience editing.
-2008-09-05 Oliver Hunt <oliver@apple.com>
+ * JavaScriptCore.xcodeproj/project.pbxproj:
- Start bringing up SFX on windows.
+2009-07-20 Jessie Berlin <jberlin@apple.com>
- Reviewed by Mark Rowe and Sam Weinig
+ Reviewed by David Levin.
- Start doing the work to bring up SFX on windows. Initially
- just working on WREC, as it does not make any calls so reduces
- the amount of code that needs to be corrected.
+ Fix an incorrect assertion in Vector::remove.
- Start abstracting the CTI JIT codegen engine.
+ https://bugs.webkit.org/show_bug.cgi?id=27477
- * ChangeLog:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CTI.cpp:
- * masm/IA32MacroAsm.h:
- * masm/MacroAssembler.h: Added.
- (KJS::MacroAssembler::MacroAssembler):
- * masm/MacroAssemblerIA32GCC.cpp: Added.
- (KJS::MacroAssembler::emitConvertToFastCall):
- * masm/MacroAssemblerWin.cpp: Added.
- (KJS::MacroAssembler::emitConvertToFastCall):
- * wrec/WREC.cpp:
- (KJS::WRECompiler::parseGreedyQuantifier):
- (KJS::WRECompiler::parseCharacterClass):
- (KJS::WRECompiler::parseEscape):
- (KJS::WRECompiler::compilePattern):
- * wrec/WREC.h:
+ * wtf/Vector.h:
+ (WTF::::remove):
+ Assert that the position at which to start removing elements + the
+ length (the number of elements to remove) is less than or equal to the
+ size of the entire Vector.
-2008-09-04 Gavin Barraclough <barraclough@apple.com>
+2009-07-20 Peter Kasting <pkasting@google.com>
- Reviewed by Sam Weinig.
+ Reviewed by Mark Rowe.
- Support for slow scripts (timeout checking).
+ https://bugs.webkit.org/show_bug.cgi?id=27468
+ Back out r46060, which caused problems for some Apple developers.
- * VM/CTI.cpp:
- (KJS::CTI::privateCompileMainPass):
- (KJS::CTI::privateCompile):
- * VM/Machine.cpp:
- (KJS::slideRegisterWindowForCall):
- (KJS::Machine::cti_timeout_check):
- (KJS::Machine::cti_vm_throw):
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
+ * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
+ * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
+ * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
-2008-09-04 Sam Weinig <sam@webkit.org>
+2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- Reviewed by Mark Rowe.
+ Reviewed by Oliver Hunt.
- Third round of style cleanup.
+ Allow custom memory allocation control in NewThreadContext
+ https://bugs.webkit.org/show_bug.cgi?id=27338
- * VM/CTI.cpp:
- * VM/CTI.h:
- * VM/CodeBlock.h:
- * VM/Machine.cpp:
- * VM/Machine.h:
- * kjs/ExecState.h:
+ Inherits NewThreadContext struct from FastAllocBase because it
+ has been instantiated by 'new' JavaScriptCore/wtf/Threading.cpp:76.
-2008-09-04 Sam Weinig <sam@webkit.org>
+ * wtf/Threading.cpp:
- Reviewed by Jon Honeycutt.
+2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- Second round of style cleanup.
+ Reviewed by Oliver Hunt.
- * VM/CTI.cpp:
- * VM/CTI.h:
- * wrec/WREC.h:
+ Allow custom memory allocation control in JavaScriptCore's JSClassRef.h
+ https://bugs.webkit.org/show_bug.cgi?id=27340
-2008-09-04 Sam Weinig <sam@webkit.org>
+ Inherit StaticValueEntry and StaticFunctionEntry struct from FastAllocBase because these
+ have been instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:153
+ and in JavaScriptCore/API/JSClassRef.cpp:166.
- Reviewed by Mark Rowe.
+ * API/JSClassRef.h:
- First round of style cleanup.
+2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- * VM/CTI.cpp:
- * VM/CTI.h:
- * masm/IA32MacroAsm.h:
- * wrec/WREC.cpp:
- * wrec/WREC.h:
+ Reviewed by Darin Adler.
-2008-09-04 Geoffrey Garen <ggaren@apple.com>
+ Allow custom memory allocation control in JavaScriptCore's RegexPattern.h
+ https://bugs.webkit.org/show_bug.cgi?id=27343
- Reviewed by Mark Rowe.
-
- Merged http://trac.webkit.org/changeset/36081 to work with CTI.
+ Inherits RegexPattern.h's structs (which have been instantiated by operator new) from FastAllocBase:
- * VM/Machine.cpp:
- (KJS::Machine::tryCtiCacheGetByID):
+ CharacterClass (new call: JavaScriptCore/yarr/RegexCompiler.cpp:144)
+ PatternAlternative (new call: JavaScriptCore/yarr/RegexPattern.h:221)
+ PatternDisjunction (new call: JavaScriptCore/yarr/RegexCompiler.cpp:446)
-2008-09-04 Gavin Barraclough <barraclough@apple.com>
+ * yarr/RegexPattern.h:
- Reviewed by Sam Weinig.
+2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- Enable profiling in CTI.
+ Reviewed by Darin Adler.
- * VM/CTI.h:
- (KJS::):
- (KJS::CTI::execute):
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_call_JSFunction):
- (KJS::Machine::cti_op_call_NotJSFunction):
- (KJS::Machine::cti_op_ret):
- (KJS::Machine::cti_op_construct_JSConstruct):
- (KJS::Machine::cti_op_construct_NotJSConstruct):
+ Allow custom memory allocation control for JavaScriptCore's MatchFrame struct
+ https://bugs.webkit.org/show_bug.cgi?id=27344
-2008-09-04 Victor Hernandez <vhernandez@apple.com>
+ Inherits MatchFrame struct from FastAllocBase because it has
+ been instantiated by 'new' JavaScriptCore/pcre/pcre_exec.cpp:359.
- Reviewed by Geoffrey Garen.
-
- Fixed an #if to support using WREC without CTI.
+ * pcre/pcre_exec.cpp:
- * kjs/regexp.cpp:
- (KJS::RegExp::match):
+2009-07-20 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-2008-09-04 Gavin Barraclough <barraclough@apple.com>
+ Reviewed by Holger Freyther.
- Reviewed by Oliver Hunt.
+ Remove some outdated S60 platform specific code
+ https://bugs.webkit.org/show_bug.cgi?id=27423
- The array/string length trampolines are owned by the Machine, not the codeblock that compiled them.
+ * wtf/Platform.h:
- * VM/CTI.cpp:
- (KJS::CTI::privateArrayLengthTrampoline):
- (KJS::CTI::privateStringLengthTrampoline):
- * VM/Machine.cpp:
- (KJS::Machine::~Machine):
- * VM/Machine.h:
+2009-07-20 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
-2008-09-04 Mark Rowe <mrowe@apple.com>
+ Reviewed by Simon Hausmann.
- Reviewed by Gavin Barraclough and Sam Weinig.
+ Qt build fix with MSVC and MinGW.
- Fix a crash on launch of jsc when GuardMalloc is enabled.
+ * jsc.pro: Make sure jsc is a console application, and turn off
+ exceptions and stl support to fix the build.
- * kjs/ScopeChain.h:
- (KJS::ScopeChain::ScopeChain): Initialize m_node to 0 when we have no valid scope chain.
- (KJS::ScopeChain::~ScopeChain): Null-check m_node before calling deref.
+2009-07-20 Xan Lopez <xlopez@igalia.com>
-2008-09-03 Oliver Hunt <oliver@apple.com>
+ Reviewed by Gustavo Noronha.
- Reviewed by Gavin Barraclough and Geoff Garen.
+ Do not use C++-style comments in preprocessor directives.
- Fix inspector and fast array access so that it bounds
- checks correctly.
+ GCC does not like this in some configurations, using C-style
+ comments is safer.
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass2_Main):
- * masm/IA32MacroAsm.h:
- (KJS::IA32MacroAssembler::):
- (KJS::IA32MacroAssembler::emitUnlinkedJb):
- (KJS::IA32MacroAssembler::emitUnlinkedJbe):
+ * wtf/Platform.h:
-2008-09-03 Mark Rowe <mrowe@apple.com>
+2009-07-17 Peter Kasting <pkasting@google.com>
- Move the assertion after the InitializeAndReturn block, as
- that is used even when CTI is enabled.
+ Reviewed by Steve Falkenburg.
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
+ https://bugs.webkit.org/show_bug.cgi?id=27323
+ Only add Cygwin to the path when it isn't already there. This avoids
+ causing problems for people who purposefully have non-Cygwin versions of
+ executables like svn in front of the Cygwin ones in their paths.
-2008-09-03 Mark Rowe <mrowe@apple.com>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
+ * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops:
+ * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
+ * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
- Reviewed by Sam Weinig.
+2009-07-17 Gabor Loki <loki@inf.u-szeged.hu>
- Replace calls to exit with ASSERT_WITH_MESSAGE or ASSERT_NOT_REACHED.
+ Reviewed by Gavin Barraclough.
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile_pass4_SlowCases):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- (KJS::Machine::cti_vm_throw):
+ Add YARR support for generic ARM platforms (disabled by default).
+ https://bugs.webkit.org/show_bug.cgi?id=24986
-2008-09-03 Mark Rowe <mrowe@apple.com>
+ Add generic ARM port for MacroAssembler. It supports the whole
+ MacroAssembler functionality except floating point.
- Reviewed by Sam Weinig.
+ The class JmpSrc is extended with a flag which enables to patch
+ the jump destination offset during execution. This feature is
+ required for generic ARM port.
- Tweak JavaScriptCore to compile on non-x86 platforms. This is achieved
- by wrapping more code with ENABLE(CTI), ENABLE(WREC), and PLATFORM(X86)
- #if's.
-
- * VM/CTI.cpp:
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::printStructureIDs): Use %td as the format specifier for
- printing a ptrdiff_t.
- * VM/Machine.cpp:
- * VM/Machine.h:
- * kjs/regexp.cpp:
- (KJS::RegExp::RegExp):
- (KJS::RegExp::~RegExp):
- (KJS::RegExp::match):
- * kjs/regexp.h:
- * masm/IA32MacroAsm.h:
- * wrec/WREC.cpp:
- * wrec/WREC.h:
- * wtf/Platform.h: Only enable CTI and WREC on x86. Add an extra define to
- track whether any MASM-using features are enabled.
+ Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
+ Signed off by Gabor Loki <loki@inf.u-szeged.hu>
-2008-09-03 Gavin Barraclough <barraclough@apple.com>
+ * JavaScriptCore.pri:
+ * assembler/ARMAssembler.cpp: Added.
+ (JSC::ARMAssembler::getLdrImmAddress):
+ (JSC::ARMAssembler::linkBranch):
+ (JSC::ARMAssembler::patchConstantPoolLoad):
+ (JSC::ARMAssembler::getOp2):
+ (JSC::ARMAssembler::genInt):
+ (JSC::ARMAssembler::getImm):
+ (JSC::ARMAssembler::moveImm):
+ (JSC::ARMAssembler::dataTransfer32):
+ (JSC::ARMAssembler::baseIndexTransfer32):
+ (JSC::ARMAssembler::executableCopy):
+ * assembler/ARMAssembler.h: Added.
+ (JSC::ARM::):
+ (JSC::ARMAssembler::ARMAssembler):
+ (JSC::ARMAssembler::):
+ (JSC::ARMAssembler::JmpSrc::JmpSrc):
+ (JSC::ARMAssembler::JmpSrc::enableLatePatch):
+ (JSC::ARMAssembler::JmpDst::JmpDst):
+ (JSC::ARMAssembler::JmpDst::isUsed):
+ (JSC::ARMAssembler::JmpDst::used):
+ (JSC::ARMAssembler::emitInst):
+ (JSC::ARMAssembler::and_r):
+ (JSC::ARMAssembler::ands_r):
+ (JSC::ARMAssembler::eor_r):
+ (JSC::ARMAssembler::eors_r):
+ (JSC::ARMAssembler::sub_r):
+ (JSC::ARMAssembler::subs_r):
+ (JSC::ARMAssembler::rsb_r):
+ (JSC::ARMAssembler::rsbs_r):
+ (JSC::ARMAssembler::add_r):
+ (JSC::ARMAssembler::adds_r):
+ (JSC::ARMAssembler::adc_r):
+ (JSC::ARMAssembler::adcs_r):
+ (JSC::ARMAssembler::sbc_r):
+ (JSC::ARMAssembler::sbcs_r):
+ (JSC::ARMAssembler::rsc_r):
+ (JSC::ARMAssembler::rscs_r):
+ (JSC::ARMAssembler::tst_r):
+ (JSC::ARMAssembler::teq_r):
+ (JSC::ARMAssembler::cmp_r):
+ (JSC::ARMAssembler::orr_r):
+ (JSC::ARMAssembler::orrs_r):
+ (JSC::ARMAssembler::mov_r):
+ (JSC::ARMAssembler::movs_r):
+ (JSC::ARMAssembler::bic_r):
+ (JSC::ARMAssembler::bics_r):
+ (JSC::ARMAssembler::mvn_r):
+ (JSC::ARMAssembler::mvns_r):
+ (JSC::ARMAssembler::mul_r):
+ (JSC::ARMAssembler::muls_r):
+ (JSC::ARMAssembler::mull_r):
+ (JSC::ARMAssembler::ldr_imm):
+ (JSC::ARMAssembler::ldr_un_imm):
+ (JSC::ARMAssembler::dtr_u):
+ (JSC::ARMAssembler::dtr_ur):
+ (JSC::ARMAssembler::dtr_d):
+ (JSC::ARMAssembler::dtr_dr):
+ (JSC::ARMAssembler::ldrh_r):
+ (JSC::ARMAssembler::ldrh_d):
+ (JSC::ARMAssembler::ldrh_u):
+ (JSC::ARMAssembler::strh_r):
+ (JSC::ARMAssembler::push_r):
+ (JSC::ARMAssembler::pop_r):
+ (JSC::ARMAssembler::poke_r):
+ (JSC::ARMAssembler::peek_r):
+ (JSC::ARMAssembler::clz_r):
+ (JSC::ARMAssembler::bkpt):
+ (JSC::ARMAssembler::lsl):
+ (JSC::ARMAssembler::lsr):
+ (JSC::ARMAssembler::asr):
+ (JSC::ARMAssembler::lsl_r):
+ (JSC::ARMAssembler::lsr_r):
+ (JSC::ARMAssembler::asr_r):
+ (JSC::ARMAssembler::size):
+ (JSC::ARMAssembler::ensureSpace):
+ (JSC::ARMAssembler::label):
+ (JSC::ARMAssembler::align):
+ (JSC::ARMAssembler::jmp):
+ (JSC::ARMAssembler::patchPointerInternal):
+ (JSC::ARMAssembler::patchConstantPoolLoad):
+ (JSC::ARMAssembler::patchPointer):
+ (JSC::ARMAssembler::repatchInt32):
+ (JSC::ARMAssembler::repatchPointer):
+ (JSC::ARMAssembler::repatchLoadPtrToLEA):
+ (JSC::ARMAssembler::linkJump):
+ (JSC::ARMAssembler::relinkJump):
+ (JSC::ARMAssembler::linkCall):
+ (JSC::ARMAssembler::relinkCall):
+ (JSC::ARMAssembler::getRelocatedAddress):
+ (JSC::ARMAssembler::getDifferenceBetweenLabels):
+ (JSC::ARMAssembler::getCallReturnOffset):
+ (JSC::ARMAssembler::getOp2Byte):
+ (JSC::ARMAssembler::placeConstantPoolBarrier):
+ (JSC::ARMAssembler::RM):
+ (JSC::ARMAssembler::RS):
+ (JSC::ARMAssembler::RD):
+ (JSC::ARMAssembler::RN):
+ (JSC::ARMAssembler::getConditionalField):
+ * assembler/ARMv7Assembler.h:
+ (JSC::ARMv7Assembler::JmpSrc::enableLatePatch):
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::Call::enableLatePatch):
+ (JSC::AbstractMacroAssembler::Jump::enableLatePatch):
+ * assembler/MacroAssembler.h:
+ * assembler/MacroAssemblerARM.h: Added.
+ (JSC::MacroAssemblerARM::):
+ (JSC::MacroAssemblerARM::add32):
+ (JSC::MacroAssemblerARM::and32):
+ (JSC::MacroAssemblerARM::lshift32):
+ (JSC::MacroAssemblerARM::mul32):
+ (JSC::MacroAssemblerARM::not32):
+ (JSC::MacroAssemblerARM::or32):
+ (JSC::MacroAssemblerARM::rshift32):
+ (JSC::MacroAssemblerARM::sub32):
+ (JSC::MacroAssemblerARM::xor32):
+ (JSC::MacroAssemblerARM::load32):
+ (JSC::MacroAssemblerARM::load32WithAddressOffsetPatch):
+ (JSC::MacroAssemblerARM::loadPtrWithPatchToLEA):
+ (JSC::MacroAssemblerARM::load16):
+ (JSC::MacroAssemblerARM::store32WithAddressOffsetPatch):
+ (JSC::MacroAssemblerARM::store32):
+ (JSC::MacroAssemblerARM::pop):
+ (JSC::MacroAssemblerARM::push):
+ (JSC::MacroAssemblerARM::move):
+ (JSC::MacroAssemblerARM::swap):
+ (JSC::MacroAssemblerARM::signExtend32ToPtr):
+ (JSC::MacroAssemblerARM::zeroExtend32ToPtr):
+ (JSC::MacroAssemblerARM::branch32):
+ (JSC::MacroAssemblerARM::branch16):
+ (JSC::MacroAssemblerARM::branchTest32):
+ (JSC::MacroAssemblerARM::jump):
+ (JSC::MacroAssemblerARM::branchAdd32):
+ (JSC::MacroAssemblerARM::mull32):
+ (JSC::MacroAssemblerARM::branchMul32):
+ (JSC::MacroAssemblerARM::branchSub32):
+ (JSC::MacroAssemblerARM::breakpoint):
+ (JSC::MacroAssemblerARM::nearCall):
+ (JSC::MacroAssemblerARM::call):
+ (JSC::MacroAssemblerARM::ret):
+ (JSC::MacroAssemblerARM::set32):
+ (JSC::MacroAssemblerARM::setTest32):
+ (JSC::MacroAssemblerARM::tailRecursiveCall):
+ (JSC::MacroAssemblerARM::makeTailRecursiveCall):
+ (JSC::MacroAssemblerARM::moveWithPatch):
+ (JSC::MacroAssemblerARM::branchPtrWithPatch):
+ (JSC::MacroAssemblerARM::storePtrWithPatch):
+ (JSC::MacroAssemblerARM::supportsFloatingPoint):
+ (JSC::MacroAssemblerARM::supportsFloatingPointTruncate):
+ (JSC::MacroAssemblerARM::loadDouble):
+ (JSC::MacroAssemblerARM::storeDouble):
+ (JSC::MacroAssemblerARM::addDouble):
+ (JSC::MacroAssemblerARM::subDouble):
+ (JSC::MacroAssemblerARM::mulDouble):
+ (JSC::MacroAssemblerARM::convertInt32ToDouble):
+ (JSC::MacroAssemblerARM::branchDouble):
+ (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32):
+ (JSC::MacroAssemblerARM::ARMCondition):
+ (JSC::MacroAssemblerARM::prepareCall):
+ (JSC::MacroAssemblerARM::call32):
+ * assembler/X86Assembler.h:
+ (JSC::X86Assembler::JmpSrc::enableLatePatch):
+ * jit/ExecutableAllocator.h:
+ (JSC::ExecutableAllocator::cacheFlush):
+ * wtf/Platform.h:
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::generateEnter):
+ (JSC::Yarr::RegexGenerator::generateReturn):
- Reviewed by Oliver Hunt.
+2009-07-17 Gabor Loki <loki@inf.u-szeged.hu>
- Copy Geoff's array/string length optimization for CTI.
-
- * VM/CTI.cpp:
- (KJS::CTI::privateArrayLengthTrampoline):
- (KJS::CTI::privateStringLengthTrampoline):
- * VM/CTI.h:
- (KJS::CTI::compileArrayLengthTrampoline):
- (KJS::CTI::compileStringLengthTrampoline):
- * VM/Machine.cpp:
- (KJS::Machine::Machine):
- (KJS::Machine::getCtiArrayLengthTrampoline):
- (KJS::Machine::getCtiStringLengthTrampoline):
- (KJS::Machine::tryCtiCacheGetByID):
- (KJS::Machine::cti_op_get_by_id_second):
- * VM/Machine.h:
- * kjs/JSString.h:
- * kjs/ustring.h:
-
-2008-09-03 Gavin Barraclough <barraclough@apple.com>
+ Reviewed by Gavin Barraclough.
- Reviewed by Oliver Hunt.
+ Extend AssemblerBuffer with constant pool handling mechanism.
+ https://bugs.webkit.org/show_bug.cgi?id=24986
- Implement fast array accesses in CTI - 2-3% progression on sunspider.
+ Add a platform independed constant pool framework.
+ This pool can store 32 or 64 bits values which is enough to hold
+ any integer, pointer or double constant.
- * VM/CTI.cpp:
- (KJS::CTI::emitFastArithIntToImmNoCheck):
- (KJS::CTI::compileOpCall):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile_pass4_SlowCases):
- * VM/CTI.h:
- * kjs/JSArray.h:
+ * assembler/AssemblerBuffer.h:
+ (JSC::AssemblerBuffer::putIntUnchecked):
+ (JSC::AssemblerBuffer::putInt64Unchecked):
+ (JSC::AssemblerBuffer::append):
+ (JSC::AssemblerBuffer::grow):
+ * assembler/AssemblerBufferWithConstantPool.h: Added.
+ (JSC::):
-2008-09-02 Gavin Barraclough <barraclough@apple.com>
+2009-07-17 Eric Roman <eroman@chromium.org>
- Reviewed by Oliver Hunt.
+ Reviewed by Darin Adler.
- Enable fast property access support in CTI.
-
- * VM/CTI.cpp:
- (KJS::ctiSetReturnAddress):
- (KJS::ctiRepatchCallByReturnAddress):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile):
- (KJS::CTI::privateCompileGetByIdSelf):
- (KJS::CTI::privateCompileGetByIdProto):
- (KJS::CTI::privateCompileGetByIdChain):
- (KJS::CTI::privateCompilePutByIdReplace):
- * VM/CTI.h:
- (KJS::CTI::compileGetByIdSelf):
- (KJS::CTI::compileGetByIdProto):
- (KJS::CTI::compileGetByIdChain):
- (KJS::CTI::compilePutByIdReplace):
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::~CodeBlock):
- * VM/CodeBlock.h:
- * VM/Machine.cpp:
- (KJS::doSetReturnAddressVmThrowTrampoline):
- (KJS::Machine::tryCtiCachePutByID):
- (KJS::Machine::tryCtiCacheGetByID):
- (KJS::Machine::cti_op_put_by_id):
- (KJS::Machine::cti_op_put_by_id_second):
- (KJS::Machine::cti_op_put_by_id_generic):
- (KJS::Machine::cti_op_put_by_id_fail):
- (KJS::Machine::cti_op_get_by_id):
- (KJS::Machine::cti_op_get_by_id_second):
- (KJS::Machine::cti_op_get_by_id_generic):
- (KJS::Machine::cti_op_get_by_id_fail):
- (KJS::Machine::cti_op_throw):
- (KJS::Machine::cti_vm_throw):
- * VM/Machine.h:
- * kjs/JSCell.h:
- * kjs/JSObject.h:
- * kjs/PropertyMap.h:
- * kjs/StructureID.cpp:
- (KJS::StructureIDChain::StructureIDChain):
- * masm/IA32MacroAsm.h:
- (KJS::IA32MacroAssembler::emitCmpl_i32m):
- (KJS::IA32MacroAssembler::emitMovl_mr):
- (KJS::IA32MacroAssembler::emitMovl_rm):
-
-2008-09-02 Sam Weinig <sam@webkit.org>
-
- Reviewed by Gavin Barraclough and Mark Rowe.
-
- A backslash (\) at the of a RegEx should produce an error.
- Fixes fast/regex/test1.html.
-
- * wrec/WREC.cpp:
- (KJS::WRECompiler::parseEscape):
-
-2008-09-02 Sam Weinig <sam@webkit.org>
+ Build fix for non-Darwin.
+ Add a guard for inclusion of RetainPtr.h which includes CoreFoundation.h
- Reviewed by Geoff Garen.
+ https://bugs.webkit.org/show_bug.cgi?id=27382
- Link jumps for the slow case of op_loop_if_less. Fixes acid3.
+ * wtf/unicode/icu/CollatorICU.cpp:
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass4_SlowCases):
+2009-07-17 Alexey Proskuryakov <ap@webkit.org>
-2008-09-01 Sam Weinig <sam@webkit.org>
+ Reviewed by John Sullivan.
- Rubber-stamped by Maciej Stachowiak.
+ Get user default collation order via a CFLocale API when available.
- Switch WREC on by default.
+ * wtf/unicode/icu/CollatorICU.cpp: (WTF::Collator::userDefault):
- * wtf/Platform.h:
+2009-07-17 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-2008-09-01 Sam Weinig <sam@webkit.org>
+ Reviewed by Simon Hausmann.
- Reviewed by Mark Rowe.
+ [Qt] Fix the include path for the Symbian port
+ https://bugs.webkit.org/show_bug.cgi?id=27358
- Fix two failures in fast/regex/test1.html
- - \- in a character class should be treated as a literal -
- - A missing max quantifier needs to be treated differently than
- a null max quantifier.
+ * JavaScriptCore.pri:
- * wrec/WREC.cpp:
- (KJS::WRECompiler::generateNonGreedyQuantifier):
- (KJS::WRECompiler::generateGreedyQuantifier):
- (KJS::WRECompiler::parseCharacterClass):
- * wrec/WREC.h:
- (KJS::Quantifier::Quantifier):
+2009-07-17 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
-2008-09-01 Sam Weinig <sam@webkit.org>
+ Reviewed by David Levin.
- Reviewed by Mark Rowe.
+ Build fix on platforms don't have MMAP.
+ https://bugs.webkit.org/show_bug.cgi?id=27365
- Fix crash in fast/js/kde/evil-n.html
+ * interpreter/RegisterFile.h: Including stdio.h irrespectively of HAVE(MMAP)
- * kjs/regexp.cpp: Always pass a non-null offset vector to the wrec function.
+2009-07-16 Fumitoshi Ukai <ukai@chromium.org>
-2008-09-01 Sam Weinig <sam@webkit.org>
+ Reviewed by David Levin.
- Reviewed by Gavin Barraclough and Mark Rowe.
+ Add --web-sockets flag and ENABLE_WEB_SOCKETS define.
+ https://bugs.webkit.org/show_bug.cgi?id=27206
+
+ Add ENABLE_WEB_SOCKETS
- Add pattern length limit fixing one test in fast/js.
+ * Configurations/FeatureDefines.xcconfig: add ENABLE_WEB_SOCKETS
- * wrec/WREC.cpp:
- (KJS::WRECompiler::compile):
- * wrec/WREC.h:
- (KJS::WRECompiler::):
+2009-07-16 Maxime Simon <simon.maxime@gmail.com>
-2008-09-01 Sam Weinig <sam@webkit.org>
+ Reviewed by Eric Seidel.
- Reviewed by Gavin Barraclough and Mark Rowe.
+ Added Haiku-specific files for JavaScriptCore.
+ https://bugs.webkit.org/show_bug.cgi?id=26620
- Make octal escape parsing/back-reference parsing more closely match
- prior behavior fixing one test in fast/js.
+ * wtf/haiku/MainThreadHaiku.cpp: Added.
+ (WTF::initializeMainThreadPlatform):
+ (WTF::scheduleDispatchFunctionsOnMainThread):
- * wrec/WREC.cpp:
- (KJS::WRECompiler::parseCharacterClass): 8 and 9 should be IdentityEscaped
- (KJS::WRECompiler::parseEscape):
- * wrec/WREC.h:
- (KJS::WRECompiler::peekDigit):
+2009-07-16 Gavin Barraclough <barraclough@apple.com>
-2008-09-01 Sam Weinig <sam@webkit.org>
+ RS by Oliver Hunt.
- Reviewed by Gavin Barraclough and Mark Rowe.
+ Revert r45969, this fix does not appear to be valid.
+ https://bugs.webkit.org/show_bug.cgi?id=27077
- Fix one mozilla test.
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::~CodeBlock):
+ (JSC::CodeBlock::unlinkCallers):
+ * jit/JIT.cpp:
+ * jit/JIT.h:
- * wrec/WREC.cpp:
- (KJS::WRECompiler::generateCharacterClassInverted): Fix incorrect not
- ascii upper check.
+2009-07-16 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
-2008-09-01 Sam Weinig <sam@webkit.org>
+ Reviewed by Oliver Hunt.
- Reviewed by Gavin Barraclough and Mark Rowe.
+ Allow custom memory allocation control in ExceptionInfo and RareData struct
+ https://bugs.webkit.org/show_bug.cgi?id=27336
- Parse octal escapes in character classes fixing one mozilla test.
+ Inherits ExceptionInfo and RareData struct from FastAllocBase because these
+ have been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.cpp:1289 and
+ in JavaScriptCore/bytecode/CodeBlock.h:453.
- * wrec/WREC.cpp:
- (KJS::WRECompiler::parseCharacterClass):
- (KJS::WRECompiler::parseOctalEscape):
- * wrec/WREC.h:
- (KJS::WRECompiler::consumeOctal):
+ Remove unnecessary WTF:: namespace from CodeBlock inheritance.
+
+ * bytecode/CodeBlock.h:
-2008-09-01 Sam Weinig <sam@webkit.org>
+2009-07-16 Mark Rowe <mrowe@apple.com>
- Reviewed by Oliver Hunt.
+ Rubber-stamped by Geoff Garen.
- Fixes two mozilla tests with WREC enabled.
+ Fix FeatureDefines.xcconfig to not be out of sync with the rest of the world.
- * wrec/WREC.cpp:
- (KJS::CharacterClassConstructor::append): Keep the character class sorted
- when appending another character class.
+ * Configurations/FeatureDefines.xcconfig:
-2008-09-01 Sam Weinig <sam@webkit.org>
+2009-07-16 Yong Li <yong.li@torchmobile.com>
- Reviewed by Gavin Barraclough and Mark Rowe.
+ Reviewed by George Staikos.
- Fixes two mozilla tests with WREC enabled.
+ https://bugs.webkit.org/show_bug.cgi?id=27320
+ _countof is only included in CE6; for CE5 we need to define it ourself
- * wrec/WREC.cpp:
- (KJS::CharacterClassConstructor::addSortedRange): Insert the range at the correct position
- instead of appending it to the end.
+ * wtf/Platform.h:
-2008-09-01 Gavin Barraclough <barraclough@apple.com>
+2009-07-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
Reviewed by Oliver Hunt.
- Move cross-compilation unit call into NEVER_INLINE function.
+ Workers + garbage collector: weird crashes
+ https://bugs.webkit.org/show_bug.cgi?id=27077
- * VM/Machine.cpp:
- (KJS::doSetReturnAddressVmThrowTrampoline):
+ We need to unlink cached method call sites when a function is destroyed.
+
+ * JavaScriptCore.xcodeproj/project.pbxproj:
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::~CodeBlock):
+ (JSC::CodeBlock::unlinkCallers):
+ * jit/JIT.cpp:
+ (JSC::JIT::unlinkMethodCall):
+ * jit/JIT.h:
-2008-09-01 Sam Weinig <sam@webkit.org>
+2009-07-15 Steve Falkenburg <sfalken@apple.com>
- Reviewed by Gavin Barraclough and Geoff Garen.
+ Windows Build fix.
- Fix one test in fast/js.
+ Visual Studio reset our intermediate directory on us.
+ This sets it back.
+
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.vcproj/testapi/testapi.vcproj:
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_construct_NotJSConstruct): Throw a createNotAConstructorError,
- instead of a createNotAFunctionError.
+2009-07-15 Kwang Yul Seo <skyul@company100.net>
-2008-08-31 Gavin Barraclough <barraclough@apple.com>
+ Reviewed by Eric Seidel.
- Reviewed by Maciej Stachowiak.
-
- Zero-cost exception handling. This patch takes the exception checking
- back of the hot path. When an exception occurs in a Machine::cti*
- method, the return address to JIT code is recorded, and is then
- overwritten with a pointer to a trampoline routine. When the method
- returns the trampoline will cause the cti_vm_throw method to be invoked.
-
- cti_vm_throw uses the return address preserved above, to discover the
- vPC of the bytecode that raised the exception (using a map build during
- translation). From the VPC of the faulting bytecode the vPC of a catch
- routine may be discovered (unwinding the stack where necesary), and then
- a bytecode address for the catch routine is looked up. Final cti_vm_throw
- overwrites its return address to JIT code again, to trampoline directly
- to the catch routine.
+ https://bugs.webkit.org/show_bug.cgi?id=26794
+ Make Yacc-generated parsers to use fastMalloc/fastFree.
- cti_op_throw is handled in a similar fashion.
-
- * VM/CTI.cpp:
- (KJS::CTI::emitPutCTIParam):
- (KJS::CTI::emitPutToCallFrameHeader):
- (KJS::CTI::emitGetFromCallFrameHeader):
- (KJS::ctiSetReturnAddressForArgs):
- (KJS::CTI::emitDebugExceptionCheck):
- (KJS::CTI::printOpcodeOperandTypes):
- (KJS::CTI::emitCall):
- (KJS::CTI::compileOpCall):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile):
- * VM/CTI.h:
- (KJS::CallRecord::CallRecord):
- (KJS::):
- (KJS::CTI::execute):
- * VM/CodeBlock.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- (KJS::Machine::cti_op_instanceof):
- (KJS::Machine::cti_op_call_NotJSFunction):
- (KJS::Machine::cti_op_resolve):
- (KJS::Machine::cti_op_resolve_func):
- (KJS::Machine::cti_op_resolve_skip):
- (KJS::Machine::cti_op_resolve_with_base):
- (KJS::Machine::cti_op_throw):
- (KJS::Machine::cti_op_in):
- (KJS::Machine::cti_vm_throw):
- * VM/RegisterFile.h:
- (KJS::RegisterFile::):
- * kjs/ExecState.h:
- (KJS::ExecState::setCtiReturnAddress):
- (KJS::ExecState::ctiReturnAddress):
- * masm/IA32MacroAsm.h:
- (KJS::IA32MacroAssembler::):
- (KJS::IA32MacroAssembler::emitPushl_m):
- (KJS::IA32MacroAssembler::emitPopl_m):
- (KJS::IA32MacroAssembler::getRelocatedAddress):
-
-2008-08-31 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
+ Define YYMALLOC and YYFREE to fastMalloc and fastFree
+ respectively.
- Fall back to PCRE for any regexp containing parentheses until we correctly backtrack within them.
+ * parser/Grammar.y:
- * wrec/WREC.cpp:
- (KJS::WRECompiler::parseParentheses):
- * wrec/WREC.h:
- (KJS::WRECompiler::):
+2009-07-15 Darin Adler <darin@apple.com>
-2008-08-31 Mark Rowe <mrowe@apple.com>
+ Fix a build for a particular Apple configuration.
- Reviewed by Oliver Hunt.
+ * wtf/FastAllocBase.h: Change include to use "" style for
+ including another wtf header. This is the style we use for
+ including other public headers in the same directory.
- Fix several issues within ecma_3/RegExp/perlstress-001.js with WREC enabled.
+2009-07-15 George Staikos <george.staikos@torchmobile.com>
- * wrec/WREC.cpp:
- (KJS::WRECompiler::generateNonGreedyQuantifier): Compare with the maximum quantifier count rather than the minimum.
- (KJS::WRECompiler::generateAssertionEOL): Do a register-to-register comparison rather than immediate-to-register.
- (KJS::WRECompiler::parseCharacterClass): Pass through the correct inversion flag.
+ Reviewed by Adam Treat.
-2008-08-30 Mark Rowe <mrowe@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=27303
+ Implement createThreadInternal for WinCE.
+ Contains changes by George Staikos <george.staikos@torchmobile.com> and Joe Mason <joe.mason@torchmobile.com>
- Reviewed by Oliver Hunt.
+ * wtf/ThreadingWin.cpp:
+ (WTF::createThreadInternal):
- Re-fix the six remaining failures in the Mozilla JavaScript tests in a manner that does not kill performance.
- This shows up as a 0.6% progression on SunSpider on my machine.
+2009-07-15 Joe Mason <joe.mason@torchmobile.com>
- Grow the JITCodeBuffer's underlying buffer when we run out of space rather than just bailing out.
+ Reviewed by George Staikos.
- * VM/CodeBlock.h:
- (KJS::CodeBlock::~CodeBlock): Switch to using fastFree now that JITCodeBuffer::copy uses fastMalloc.
- * kjs/regexp.cpp: Ditto.
- * masm/IA32MacroAsm.h:
- (KJS::JITCodeBuffer::growBuffer):
- (KJS::JITCodeBuffer::JITCodeBuffer):
- (KJS::JITCodeBuffer::~JITCodeBuffer):
- (KJS::JITCodeBuffer::putByte):
- (KJS::JITCodeBuffer::putShort):
- (KJS::JITCodeBuffer::putInt):
- (KJS::JITCodeBuffer::reset):
- (KJS::JITCodeBuffer::copy):
+ https://bugs.webkit.org/show_bug.cgi?id=27298
+ Platform defines for WINCE.
+ Contains changes by Yong Li <yong.li@torchmobile.com>,
+ George Staikos <george.staikos@torchmobile.com> and Joe Mason <joe.mason@torchmobile.com>
-2008-08-29 Oliver Hunt <oliver@apple.com>
+ * wtf/Platform.h:
- RS=Maciej
+2009-07-15 Yong Li <yong.li@torchmobile.com>
- Roll out previous patch as it causes a 5% performance regression
+ Reviewed by Adam Treat.
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CTI.cpp:
- (KJS::getJCB):
- (KJS::CTI::privateCompile):
- * VM/CodeBlock.h:
- (KJS::CodeBlock::~CodeBlock):
- * masm/IA32MacroAsm.h:
- (KJS::JITCodeBuffer::JITCodeBuffer):
- (KJS::JITCodeBuffer::putByte):
- (KJS::JITCodeBuffer::putShort):
- (KJS::JITCodeBuffer::putInt):
- (KJS::JITCodeBuffer::getEIP):
- (KJS::JITCodeBuffer::start):
- (KJS::JITCodeBuffer::getOffset):
- (KJS::JITCodeBuffer::reset):
- (KJS::JITCodeBuffer::copy):
- (KJS::IA32MacroAssembler::emitModRm_rr):
- (KJS::IA32MacroAssembler::emitModRm_rm):
- (KJS::IA32MacroAssembler::emitModRm_rmsib):
- (KJS::IA32MacroAssembler::IA32MacroAssembler):
- (KJS::IA32MacroAssembler::emitInt3):
- (KJS::IA32MacroAssembler::emitPushl_r):
- (KJS::IA32MacroAssembler::emitPopl_r):
- (KJS::IA32MacroAssembler::emitMovl_rr):
- (KJS::IA32MacroAssembler::emitAddl_rr):
- (KJS::IA32MacroAssembler::emitAddl_i8r):
- (KJS::IA32MacroAssembler::emitAddl_i32r):
- (KJS::IA32MacroAssembler::emitAddl_mr):
- (KJS::IA32MacroAssembler::emitAndl_rr):
- (KJS::IA32MacroAssembler::emitAndl_i32r):
- (KJS::IA32MacroAssembler::emitCmpl_i8r):
- (KJS::IA32MacroAssembler::emitCmpl_rr):
- (KJS::IA32MacroAssembler::emitCmpl_rm):
- (KJS::IA32MacroAssembler::emitCmpl_i32r):
- (KJS::IA32MacroAssembler::emitCmpl_i32m):
- (KJS::IA32MacroAssembler::emitCmpw_rm):
- (KJS::IA32MacroAssembler::emitOrl_rr):
- (KJS::IA32MacroAssembler::emitOrl_i8r):
- (KJS::IA32MacroAssembler::emitSubl_rr):
- (KJS::IA32MacroAssembler::emitSubl_i8r):
- (KJS::IA32MacroAssembler::emitSubl_i32r):
- (KJS::IA32MacroAssembler::emitSubl_mr):
- (KJS::IA32MacroAssembler::emitTestl_i32r):
- (KJS::IA32MacroAssembler::emitTestl_rr):
- (KJS::IA32MacroAssembler::emitXorl_i8r):
- (KJS::IA32MacroAssembler::emitXorl_rr):
- (KJS::IA32MacroAssembler::emitSarl_i8r):
- (KJS::IA32MacroAssembler::emitSarl_CLr):
- (KJS::IA32MacroAssembler::emitShl_i8r):
- (KJS::IA32MacroAssembler::emitShll_CLr):
- (KJS::IA32MacroAssembler::emitMull_rr):
- (KJS::IA32MacroAssembler::emitIdivl_r):
- (KJS::IA32MacroAssembler::emitCdq):
- (KJS::IA32MacroAssembler::emitMovl_mr):
- (KJS::IA32MacroAssembler::emitMovzwl_mr):
- (KJS::IA32MacroAssembler::emitMovl_rm):
- (KJS::IA32MacroAssembler::emitMovl_i32r):
- (KJS::IA32MacroAssembler::emitMovl_i32m):
- (KJS::IA32MacroAssembler::emitLeal_mr):
- (KJS::IA32MacroAssembler::emitRet):
- (KJS::IA32MacroAssembler::emitJmpN_r):
- (KJS::IA32MacroAssembler::emitJmpN_m):
- (KJS::IA32MacroAssembler::emitCall):
- (KJS::IA32MacroAssembler::label):
- (KJS::IA32MacroAssembler::emitUnlinkedJmp):
- (KJS::IA32MacroAssembler::emitUnlinkedJne):
- (KJS::IA32MacroAssembler::emitUnlinkedJe):
- (KJS::IA32MacroAssembler::emitUnlinkedJl):
- (KJS::IA32MacroAssembler::emitUnlinkedJle):
- (KJS::IA32MacroAssembler::emitUnlinkedJge):
- (KJS::IA32MacroAssembler::emitUnlinkedJae):
- (KJS::IA32MacroAssembler::emitUnlinkedJo):
- (KJS::IA32MacroAssembler::link):
- * wrec/WREC.cpp:
- (KJS::WRECompiler::compilePattern):
- (KJS::WRECompiler::compile):
- * wrec/WREC.h:
+ https://bugs.webkit.org/show_bug.cgi?id=27306
+ Use RegisterClass instead of RegisterClassEx on WinCE.
-2008-08-29 Mark Rowe <mrowe@apple.com>
+ * wtf/win/MainThreadWin.cpp:
+ (WTF::initializeMainThreadPlatform):
- Reviewed by Oliver Hunt.
+2009-07-15 Yong Li <yong.li@torchmobile.com>
- Have JITCodeBuffer manage a Vector containing the generated code so that it can grow
- as needed when generating code for a large function. This fixes all six remaining failures
- in Mozilla tests in both debug and release builds.
-
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile):
- * VM/CodeBlock.h:
- (KJS::CodeBlock::~CodeBlock):
- * masm/IA32MacroAsm.h:
- (KJS::JITCodeBuffer::putByte):
- (KJS::JITCodeBuffer::putShort):
- (KJS::JITCodeBuffer::putInt):
- (KJS::JITCodeBuffer::getEIP):
- (KJS::JITCodeBuffer::start):
- (KJS::JITCodeBuffer::getOffset):
- (KJS::JITCodeBuffer::getCode):
- (KJS::IA32MacroAssembler::emitModRm_rr):
- * wrec/WREC.cpp:
- (KJS::WRECompiler::compilePattern):
- * wrec/WREC.h:
+ Reviewed by George Staikos.
-2008-08-29 Mark Rowe <mrowe@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=27301
+ Use OutputDebugStringW on WinCE since OutputDebugStringA is not supported
+ Originally written by Yong Li <yong.li@torchmobile.com> and refactored by
+ Joe Mason <joe.mason@torchmobile.com>
- Reviewed by Oliver Hunt.
+ * wtf/Assertions.cpp: vprintf_stderr_common
- Implement parsing of octal escapes in regular expressions. This fixes three Mozilla tests.
+2009-07-15 Yong Li <yong.li@torchmobile.com>
- * wrec/WREC.cpp:
- (KJS::WRECompiler::parseOctalEscape):
- (KJS::WRECompiler::parseEscape): Parse the escape sequence as an octal escape if it has a leading zero.
- Add a FIXME about treating invalid backreferences as octal escapes in the future.
- * wrec/WREC.h:
- (KJS::WRECompiler::consumeNumber): Multiply by 10 rather than 0 so that we handle numbers with more than
- one digit.
- * wtf/ASCIICType.h:
- (WTF::isASCIIOctalDigit):
+ Reviewed by George Staikos.
-2008-08-29 Sam Weinig <sam@webkit.org>
+ https://bugs.webkit.org/show_bug.cgi?id=27020
+ msToGregorianDateTime should set utcOffset to 0 when outputIsUTC is false
- Reviewed by Mark Rowe.
+ * wtf/DateMath.cpp:
+ (WTF::gregorianDateTimeToMS):
- Pass vPC to instanceof method. Fixes 2 mozilla tests in debug.
+2009-07-15 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass2_Main):
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_instanceof):
+ Reviewed by Simon Hausmann.
-2008-08-29 Sam Weinig <sam@webkit.org>
+ [Qt] Cleanup - Remove obsolete code from the make system
+ https://bugs.webkit.org/show_bug.cgi?id=27299
- Reviewed by Mark Rowe.
+ * JavaScriptCore.pro:
+ * jsc.pro:
- Pass vPCs to resolve methods for correct exception creation. Fixes
- 17 mozilla tests in debug.
+2009-07-07 Norbert Leser <norbert.leser@nokia.com>
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass2_Main):
- * VM/CTI.h:
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_resolve):
- (KJS::Machine::cti_op_resolve_func):
- (KJS::Machine::cti_op_resolve_skip):
- (KJS::Machine::cti_op_resolve_with_base):
+ Reviewed by Simon Hausmann.
-2008-08-29 Gavin Barraclough <barraclough@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=27056
- Reviewed by Oliver Hunt.
+ Alternate bool operator for codewarrior compiler (WINSCW).
+ Compiler (latest b482) reports error for UnspecifiedBoolType construct:
+ "illegal explicit conversion from 'WTF::OwnArrayPtr<JSC::Register>' to 'bool'"
- Remembering to actually throw the exception passed to op throw helps.
- Regressions 19 -> 6.
+ Same fix as in r38391.
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_throw):
- (KJS::Machine::cti_vm_throw):
+ * JavaScriptCore/wtf/OwnArrayPtr.h:
-2008-08-29 Gavin Barraclough <barraclough@apple.com>
+2009-07-15 Norbert Leser <norbert.leser@nokia.com>
- Reviewed by Sam Weinig.
+ Reviewed by Darin Adler.
- Support for exception unwinding the stack.
-
- Once upon a time, Sam asked me for a bettr ChangeLog entry. The return address
- is now preserved on entry to a JIT code function (if we preserve lazily we need
- restore the native return address during exception stack unwind). This takes
- the number of regressions down from ~150 to 19.
-
- * VM/CTI.cpp:
- (KJS::getJCB):
- (KJS::CTI::emitExceptionCheck):
- (KJS::CTI::compileOpCall):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile):
- * VM/CTI.h:
- (KJS::):
- * VM/Machine.cpp:
- (KJS::Machine::throwException):
- (KJS::Machine::cti_op_call_JSFunction):
- (KJS::Machine::cti_op_call_NotJSFunction):
- (KJS::Machine::cti_op_construct_JSConstruct):
- (KJS::Machine::cti_op_construct_NotJSConstruct):
- (KJS::Machine::cti_op_throw):
- (KJS::Machine::cti_vm_throw):
-
-2008-08-29 Mark Rowe <mrowe@apple.com>
+ Qualify include path with wtf to fix compilation
+ on Symbian.
+ https://bugs.webkit.org/show_bug.cgi?id=27055
- Reviewed by Oliver Hunt.
+ * interpreter/Interpreter.h:
- Fix js1_2/regexp/word_boundary.js and four other Mozilla tests with WREC enabled.
+2009-07-15 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- * wrec/WREC.cpp:
- (KJS::WRECompiler::generateCharacterClassInvertedRange): If none of the exact matches
- succeeded, jump to failure.
- (KJS::WRECompiler::compilePattern): Restore and increment the current position stored
- on the stack to ensure that it will be reset to the correct position after a failed
- match has consumed input.
+ Reviewed by Dave Kilzer.
-2008-08-29 Mark Rowe <mrowe@apple.com>
+ Turn off non-portable date manipulations for SYMBIAN
+ https://bugs.webkit.org/show_bug.cgi?id=27064
- Reviewed by Oliver Hunt.
+ Introduce HAVE(TM_GMTOFF), HAVE(TM_ZONE) and HAVE(TIMEGM) guards
+ and place the rules for controlling the guards in Platform.h.
+ Turn off these newly introduced guards for SYMBIAN.
- Fix a hang in ecma_3/RegExp/15.10.2-1.js with WREC enabled.
- A backreference with a quantifier would get stuck in an infinite
- loop if the captured range was empty.
+ * wtf/DateMath.cpp:
+ (WTF::calculateUTCOffset):
+ * wtf/DateMath.h:
+ (WTF::GregorianDateTime::GregorianDateTime):
+ (WTF::GregorianDateTime::operator tm):
+ * wtf/Platform.h:
- * wrec/WREC.cpp:
- (KJS::WRECompiler::generateBackreferenceQuantifier): If the captured range
- was empty, do not attempt to match the backreference.
- (KJS::WRECompiler::parseBackreferenceQuantifier):
- * wrec/WREC.h:
- (KJS::Quantifier::):
+2009-07-15 Norbert Leser <norbert.leser@nokia.com>
-2008-08-28 Sam Weinig <sam@webkit.org>
+ Reviewed by Simon Hausmann.
- Reviewed by Oliver Hunt.
+ Undef ASSERT on Symbian, to avoid excessive warnings
+ https://bugs.webkit.org/show_bug.cgi?id=27052
- Implement op_debug.
-
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- * VM/Machine.cpp:
- (KJS::Machine::debug):
- (KJS::Machine::privateExecute):
- (KJS::Machine::cti_op_debug):
- * VM/Machine.h:
-
-2008-08-28 Sam Weinig <sam@webkit.org>
-
- Reviewed by Gavin Barraclough and Geoff Garen.
-
- Implement op_switch_string fixing 1 mozilla test and one test in fast/js.
-
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile):
- * VM/CTI.h:
- (KJS::SwitchRecord::):
- (KJS::SwitchRecord::SwitchRecord):
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeBlock.h:
- (KJS::ExpressionRangeInfo::):
- (KJS::StringJumpTable::offsetForValue):
- (KJS::StringJumpTable::ctiForValue):
- (KJS::SimpleJumpTable::add):
- (KJS::SimpleJumpTable::ctiForValue):
- * VM/CodeGenerator.cpp:
- (KJS::prepareJumpTableForStringSwitch):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- (KJS::Machine::cti_op_switch_string):
- * VM/Machine.h:
-
-2008-08-28 Gavin Barraclough <barraclough@apple.com>
+ * wtf/Assertions.h:
- Reviewed by Oliver Hunt.
+2009-07-15 Oliver Hunt <oliver@apple.com>
- Do not recurse on the machine stack when executing op_call.
-
- * VM/CTI.cpp:
- (KJS::CTI::emitGetPutArg):
- (KJS::CTI::emitPutArg):
- (KJS::CTI::emitPutArgConstant):
- (KJS::CTI::compileOpCall):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile):
- * VM/CTI.h:
- (KJS::):
- (KJS::CTI::compile):
- (KJS::CTI::execute):
- (KJS::CTI::):
- * VM/Machine.cpp:
- (KJS::Machine::Machine):
- (KJS::Machine::execute):
- (KJS::Machine::cti_op_call_JSFunction):
- (KJS::Machine::cti_op_call_NotJSFunction):
- (KJS::Machine::cti_op_ret):
- (KJS::Machine::cti_op_construct_JSConstruct):
- (KJS::Machine::cti_op_construct_NotJSConstruct):
- (KJS::Machine::cti_op_call_eval):
- * VM/Machine.h:
- * VM/Register.h:
- (KJS::Register::Register):
- * VM/RegisterFile.h:
- (KJS::RegisterFile::):
- * kjs/InternalFunction.h:
- (KJS::InternalFunction::InternalFunction):
- * kjs/JSFunction.h:
- (KJS::JSFunction::JSFunction):
- * kjs/ScopeChain.h:
- (KJS::ScopeChain::ScopeChain):
- * masm/IA32MacroAsm.h:
- (KJS::IA32MacroAssembler::):
- (KJS::IA32MacroAssembler::emitModRm_opm):
- (KJS::IA32MacroAssembler::emitCmpl_i32m):
- (KJS::IA32MacroAssembler::emitCallN_r):
-
-2008-08-28 Sam Weinig <sam@webkit.org>
+ Reviewed by Simon Hausmann.
- Reviewed by Mark Rowe.
+ REGRESSION: fast/js/postfix-syntax.html fails with interpreter
+ https://bugs.webkit.org/show_bug.cgi?id=27294
- Exit instead of crashing in ctiUnsupported and ctiTimedOut.
+ When postfix operators operating on locals assign to the same local
+ the order of operations has to be to store the incremented value, then
+ store the unmodified number. Rather than implementing this subtle
+ semantic in the interpreter I've just made the logic explicit in the
+ bytecode generator, so x=x++ effectively becomes x=ToNumber(x) (for a
+ local var x).
- * VM/Machine.cpp:
- (KJS::ctiUnsupported):
- (KJS::ctiTimedOut):
+ * parser/Nodes.cpp:
+ (JSC::emitPostIncOrDec):
-2008-08-28 Oliver Hunt <oliver@apple.com>
+2009-07-15 Oliver Hunt <oliver@apple.com>
- Reviewed by Maciej Stachowiak.
+ Reviewed by Simon Hausmann.
- Implement codegen for op_jsr and op_sret.
+ REGRESSION(43559): fast/js/kde/arguments-scope.html fails with interpreter
+ https://bugs.webkit.org/show_bug.cgi?id=27259
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile):
- * VM/CTI.h:
- (KJS::CTI::JSRInfo::JSRInfo):
- * masm/IA32MacroAsm.h:
- (KJS::IA32MacroAssembler::emitJmpN_m):
- (KJS::IA32MacroAssembler::linkAbsoluteAddress):
+ The interpreter was incorrectly basing its need to create the arguments object
+ based on the presence of the callframe's argument reference rather than the local
+ arguments reference. Based on this it then overrode the local variable reference.
-2008-08-28 Gavin Barraclough <barraclough@apple.com>
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
- Reviewed by Oliver Hunt.
+2009-07-14 Steve Falkenburg <sfalken@apple.com>
- Initial support for exceptions (throw / catch must occur in same CodeBlock).
-
- * VM/CTI.cpp:
- (KJS::CTI::emitExceptionCheck):
- (KJS::CTI::emitCall):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile_pass4_SlowCases):
- (KJS::CTI::privateCompile):
- * VM/CTI.h:
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::nativeExceptionCodeForHandlerVPC):
- * VM/CodeBlock.h:
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitCatch):
- * VM/Machine.cpp:
- (KJS::Machine::throwException):
- (KJS::Machine::privateExecute):
- (KJS::ctiUnsupported):
- (KJS::ctiTimedOut):
- (KJS::Machine::cti_op_add):
- (KJS::Machine::cti_op_pre_inc):
- (KJS::Machine::cti_timeout_check):
- (KJS::Machine::cti_op_loop_if_less):
- (KJS::Machine::cti_op_put_by_id):
- (KJS::Machine::cti_op_get_by_id):
- (KJS::Machine::cti_op_instanceof):
- (KJS::Machine::cti_op_del_by_id):
- (KJS::Machine::cti_op_mul):
- (KJS::Machine::cti_op_call):
- (KJS::Machine::cti_op_resolve):
- (KJS::Machine::cti_op_construct):
- (KJS::Machine::cti_op_get_by_val):
- (KJS::Machine::cti_op_resolve_func):
- (KJS::Machine::cti_op_sub):
- (KJS::Machine::cti_op_put_by_val):
- (KJS::Machine::cti_op_lesseq):
- (KJS::Machine::cti_op_loop_if_true):
- (KJS::Machine::cti_op_negate):
- (KJS::Machine::cti_op_resolve_skip):
- (KJS::Machine::cti_op_div):
- (KJS::Machine::cti_op_pre_dec):
- (KJS::Machine::cti_op_jless):
- (KJS::Machine::cti_op_not):
- (KJS::Machine::cti_op_jtrue):
- (KJS::Machine::cti_op_post_inc):
- (KJS::Machine::cti_op_eq):
- (KJS::Machine::cti_op_lshift):
- (KJS::Machine::cti_op_bitand):
- (KJS::Machine::cti_op_rshift):
- (KJS::Machine::cti_op_bitnot):
- (KJS::Machine::cti_op_resolve_with_base):
- (KJS::Machine::cti_op_mod):
- (KJS::Machine::cti_op_less):
- (KJS::Machine::cti_op_neq):
- (KJS::Machine::cti_op_post_dec):
- (KJS::Machine::cti_op_urshift):
- (KJS::Machine::cti_op_bitxor):
- (KJS::Machine::cti_op_bitor):
- (KJS::Machine::cti_op_call_eval):
- (KJS::Machine::cti_op_throw):
- (KJS::Machine::cti_op_push_scope):
- (KJS::Machine::cti_op_stricteq):
- (KJS::Machine::cti_op_nstricteq):
- (KJS::Machine::cti_op_to_jsnumber):
- (KJS::Machine::cti_op_in):
- (KJS::Machine::cti_op_del_by_val):
- (KJS::Machine::cti_vm_throw):
- * VM/Machine.h:
- * kjs/ExecState.h:
- * masm/IA32MacroAsm.h:
- (KJS::IA32MacroAssembler::emitCmpl_i32m):
-
-2008-08-28 Mark Rowe <mrowe@apple.com>
+ Reorganize JavaScriptCore headers into:
+ API: include/JavaScriptCore/
+ Private: include/private/JavaScriptCore/
- Rubber-stamped by Oliver Hunt.
+ Reviewed by Darin Adler.
- Print debugging info to stderr so that run-webkit-tests can capture it.
- This makes it easy to check whether test failures are due to unimplemented
- op codes, missing support for exceptions, etc.
-
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::printOpcodeOperandTypes):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile_pass4_SlowCases):
- (KJS::CTI::privateCompile):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- (KJS::ctiException):
- (KJS::ctiUnsupported):
- (KJS::Machine::cti_op_call):
- (KJS::Machine::cti_op_resolve):
- (KJS::Machine::cti_op_construct):
- (KJS::Machine::cti_op_get_by_val):
- (KJS::Machine::cti_op_resolve_func):
- (KJS::Machine::cti_op_resolve_skip):
- (KJS::Machine::cti_op_resolve_with_base):
- (KJS::Machine::cti_op_call_eval):
-
-2008-08-27 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Gavin Barraclough and Maciej Stachowiak.
-
- Fix fast/js/bitwise-and-on-undefined.html.
-
- A temporary value in the slow path of op_bitand was being stored in edx, but was
- being clobbered by emitGetPutArg before we used it. To fix this, emitGetPutArg
- now takes a third argument that specifies the scratch register to use when loading
- from memory. This allows us to avoid clobbering the temporary in op_bitand.
-
- * VM/CTI.cpp:
- (KJS::CTI::emitGetPutArg):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile_pass4_SlowCases):
- * VM/CTI.h:
-
-2008-08-27 Mark Rowe <mrowe@apple.com>
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
+ * JavaScriptCore.vcproj/testapi/testapi.vcproj:
+ * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
- Rubber-stamped by Oliver Hunt.
+2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- Switch CTI on by default.
+ Reviewed by Darin Adler.
- * wtf/Platform.h:
+ Change JSCell's superclass to NoncopyableCustomAllocated
+ https://bugs.webkit.org/show_bug.cgi?id=27248
-2008-08-27 Mark Rowe <mrowe@apple.com>
+ JSCell class customizes operator new, since Noncopyable will be
+ inherited from FastAllocBase, NoncopyableCustomAllocated has
+ to be used.
- Reviewed by Oliver Hunt.
+ * runtime/JSCell.h:
- Fix the build of the full WebKit stack.
+2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- * JavaScriptCore.xcodeproj/project.pbxproj: Mark two new headers as private so they can be pulled in from WebCore.
- * VM/CTI.h: Fix build issues that show up when compiled with GCC 4.2 as part of WebCore.
- * wrec/WREC.h: Ditto.
+ Reviewed by Darin Adler.
-2008-08-27 Mark Rowe <mrowe@apple.com>
+ Change all Noncopyable inheriting visibility to public.
+ https://bugs.webkit.org/show_bug.cgi?id=27225
- Reviewed by Sam Weinig.
+ Change all Noncopyable inheriting visibility to public because
+ it is needed to the custom allocation framework (bug #20422).
- Implement op_new_error. Does not fix any tests as it is always followed by the unimplemented op_throw.
+ * bytecode/SamplingTool.h:
+ * bytecompiler/RegisterID.h:
+ * interpreter/CachedCall.h:
+ * interpreter/RegisterFile.h:
+ * parser/Lexer.h:
+ * parser/Parser.h:
+ * runtime/ArgList.h:
+ * runtime/BatchedTransitionOptimizer.h:
+ * runtime/Collector.h:
+ * runtime/CommonIdentifiers.h:
+ * runtime/JSCell.h:
+ * runtime/JSGlobalObject.h:
+ * runtime/JSLock.h:
+ * runtime/JSONObject.cpp:
+ * runtime/SmallStrings.cpp:
+ * runtime/SmallStrings.h:
+ * wtf/CrossThreadRefCounted.h:
+ * wtf/GOwnPtr.h:
+ * wtf/Locker.h:
+ * wtf/MessageQueue.h:
+ * wtf/OwnArrayPtr.h:
+ * wtf/OwnFastMallocPtr.h:
+ * wtf/OwnPtr.h:
+ * wtf/RefCounted.h:
+ * wtf/ThreadSpecific.h:
+ * wtf/Threading.h:
+ * wtf/Vector.h:
+ * wtf/unicode/Collator.h:
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_new_error):
- * VM/Machine.h:
+2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
-2008-08-27 Sam Weinig <sam@webkit.org>
+ Reviewed by Darin Adler.
- Reviewed by Gavin Barraclough and Geoff Garen.
+ Change ParserArenaRefCounted's superclass to RefCountedCustomAllocated
+ https://bugs.webkit.org/show_bug.cgi?id=27249
- Implement op_put_getter and op_put_setter.
+ ParserArenaDeletable customizes operator new, to avoid double inheritance
+ ParserArenaDeletable's superclass has been changed to RefCountedCustomAllocated.
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_put_getter):
- (KJS::Machine::cti_op_put_setter):
- * VM/Machine.h:
+ * parser/Nodes.h:
-2008-08-27 Sam Weinig <sam@webkit.org>
+2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- Reviewed by Gavin Barraclough and Geoff Garen.
+ Reviewed by Darin Adler.
- Implement op_del_by_val fixing 3 mozilla tests.
+ Add RefCountedCustomAllocated to RefCounted.h
+ https://bugs.webkit.org/show_bug.cgi?id=27232
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_del_by_val):
- * VM/Machine.h:
+ Some class which are inherited from RefCounted customize
+ operator new, but RefCounted is inherited from Noncopyable
+ which will be inherited from FastAllocBase. To avoid
+ conflicts Noncopyable inheriting was moved down to RefCounted
+ and to avoid double inheritance this class has been added.
-2008-08-27 Gavin Barraclough <barraclough@apple.com>
+ * wtf/RefCounted.h:
+ (WTF::RefCountedCustomAllocated::deref):
+ (WTF::RefCountedCustomAllocated::~RefCountedCustomAllocated):
- Reviewed by Oliver Hunt.
+2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- Quick & dirty fix to get SamplingTool sampling op_call.
+ Reviewed by Darin Adler.
- * VM/SamplingTool.h:
- (KJS::SamplingTool::callingHostFunction):
+ Add NoncopyableCustomAllocated to Noncopyable.h.
+ https://bugs.webkit.org/show_bug.cgi?id=27228
+
+ Some classes which inherited from Noncopyable overrides operator new
+ since Noncopyable'll be inherited from FastAllocBase, Noncopyable.h
+ needs to be extended with this new class to support the overriding.
-2008-08-27 Sam Weinig <sam@webkit.org>
+ * wtf/Noncopyable.h:
+ (WTFNoncopyable::NoncopyableCustomAllocated::NoncopyableCustomAllocated):
+ (WTFNoncopyable::NoncopyableCustomAllocated::~NoncopyableCustomAllocated):
- Reviewed by Gavin Barraclough and Geoff Garen.
+2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- Fix op_put_by_index.
+ Reviewed by Darin Adler.
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass2_Main): Use emitPutArgConstant instead of emitGetPutArg
- for the property value.
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_put_by_index): Get the property value from the correct argument.
+ Allow custom memory allocation control for JavaScriptCore's IdentifierTable class
+ https://bugs.webkit.org/show_bug.cgi?id=27260
-2008-08-27 Sam Weinig <sam@webkit.org>
+ Inherits IdentifierTable class from FastAllocBase because it has been
+ instantiated by 'new' in JavaScriptCore/runtime/Identifier.cpp:70.
- Reviewed by Gavin Barraclough and Geoff Garen.
+ * runtime/Identifier.cpp:
- Implement op_switch_imm in the CTI fixing 13 mozilla tests.
+2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_switch_imm):
- * VM/Machine.h:
+ Reviewed by Darin Adler.
-2008-08-27 Gavin Barraclough <barraclough@apple.com>
+ Allow custom memory allocation control for JavaScriptCore's Profiler class
+ https://bugs.webkit.org/show_bug.cgi?id=27253
- Reviewed by Oliver Hunt.
+ Inherits Profiler class from FastAllocBase because it has been instantiated by
+ 'new' in JavaScriptCore/profiler/Profiler.cpp:56.
- Implement op_switch_char in CTI.
-
- * VM/CTI.cpp:
- (KJS::CTI::emitCall):
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile):
- * VM/CTI.h:
- (KJS::CallRecord::CallRecord):
- (KJS::SwitchRecord::SwitchRecord):
- * VM/CodeBlock.h:
- (KJS::SimpleJumpTable::SimpleJumpTable::ctiForValue):
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_switch_char):
- * VM/Machine.h:
- * masm/IA32MacroAsm.h:
- (KJS::IA32MacroAssembler::):
- (KJS::IA32MacroAssembler::emitJmpN_r):
- (KJS::IA32MacroAssembler::getRelocatedAddress):
- * wtf/Platform.h:
+ * profiler/Profiler.h:
-2008-08-26 Sam Weinig <sam@webkit.org>
+2009-07-06 George Staikos <george.staikos@torchmobile.com>
- Reviewed by Mark Rowe.
+ Reviewed by Adam Treat.
- Implement op_put_by_index to fix 1 mozilla test.
+ Authors: George Staikos <george.staikos@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com>, Makoto Matsumoto <matumoto@math.keio.ac.jp>, Takuji Nishimura
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_put_by_index):
- * VM/Machine.h:
+ https://bugs.webkit.org/show_bug.cgi?id=27030
+ Implement custom RNG for WinCE using Mersenne Twister
-2008-08-26 Gavin Barraclough <barraclough@apple.com>
+ * wtf/RandomNumber.cpp:
+ (WTF::randomNumber):
+ * wtf/RandomNumberSeed.h:
+ (WTF::initializeRandomNumberGenerator):
+ * wtf/wince/mt19937ar.c: Added.
+ (init_genrand):
+ (init_by_array):
+ (genrand_int32):
+ (genrand_int31):
+ (genrand_real1):
+ (genrand_real2):
+ (genrand_real3):
+ (genrand_res53):
- Reviewed by Geoff Garen.
+2009-07-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
- More fixes from Geoff's review.
-
- * VM/CTI.cpp:
- (KJS::CTI::emitGetArg):
- (KJS::CTI::emitGetPutArg):
- (KJS::CTI::emitPutArg):
- (KJS::CTI::emitPutArgConstant):
- (KJS::CTI::getConstantImmediateNumericArg):
- (KJS::CTI::emitGetCTIParam):
- (KJS::CTI::emitPutResult):
- (KJS::CTI::emitCall):
- (KJS::CTI::emitJumpSlowCaseIfNotImm):
- (KJS::CTI::emitJumpSlowCaseIfNotImms):
- (KJS::CTI::getDeTaggedConstantImmediate):
- (KJS::CTI::emitFastArithDeTagImmediate):
- (KJS::CTI::emitFastArithReTagImmediate):
- (KJS::CTI::emitFastArithPotentiallyReTagImmediate):
- (KJS::CTI::emitFastArithImmToInt):
- (KJS::CTI::emitFastArithIntToImmOrSlowCase):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile_pass4_SlowCases):
- (KJS::CTI::privateCompile):
- * VM/CTI.h:
-
-2008-08-26 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Gavin Barraclough and Geoff Garen.
-
- Implement op_jmp_scopes to fix 2 Mozilla tests.
-
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_push_new_scope): Update ExecState::m_scopeChain after calling ARG_setScopeChain.
- (KJS::Machine::cti_op_jmp_scopes):
- * VM/Machine.h:
-
-2008-08-26 Gavin Barraclough <barraclough@apple.com>
+ Unreviewed make dist build fix.
- Reviewed by Oliver Hunt.
+ * GNUmakefile.am:
- WebKit Regular Expression Compiler. (set ENABLE_WREC = 1 in Platform.h).
+2009-07-13 Drew Wilson <atwilson@google.com>
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/regexp.cpp:
- * kjs/regexp.h:
- * wrec: Added.
- * wrec/WREC.cpp: Added.
- * wrec/WREC.h: Added.
- * wtf/Platform.h:
+ Reviewed by David Levin.
-2008-08-26 Sam Weinig <sam@webkit.org>
+ Add ENABLE(SHARED_WORKERS) flag and define SharedWorker APIs
+ https://bugs.webkit.org/show_bug.cgi?id=26932
- Rubber-stamped by Oliver Hunt.
+ Added ENABLE(SHARED_WORKERS) flag (off by default).
- Remove bogus assertion.
+ * Configurations/FeatureDefines.xcconfig:
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_del_by_id):
+2009-07-07 Norbert Leser <norbert.leser@nokia.com>
-2008-08-26 Mark Rowe <mrowe@apple.com>
+ Reviewed by Maciej Stachoviak.
- Reviewed by Sam Weinig.
+ https://bugs.webkit.org/show_bug.cgi?id=27058
- Implement op_push_new_scope and stub out op_catch. This fixes 11 Mozilla tests.
+ Removed superfluous parenthesis around single expression.
+ Compilers on Symbian platform fail to properly parse and compile.
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_push_new_scope):
- (KJS::Machine::cti_op_catch):
- * VM/Machine.h:
+ * JavaScriptCore/wtf/Platform.h:
-2008-08-26 Mark Rowe <mrowe@apple.com>
+2009-07-13 Norbert Leser <norbert.leser@nokia.com>
- Reviewed by Sam Weinig.
+ Reviewed by Maciej Stachoviak.
- Clean up op_resolve_base so that it shares its implementation with the bytecode interpreter.
+ https://bugs.webkit.org/show_bug.cgi?id=27054
- * VM/Machine.cpp:
- (KJS::inlineResolveBase):
- (KJS::resolveBase):
+ Renamed Translator to HashTranslator
-2008-08-26 Oliver Hunt <oliver@apple.com>
+ Codewarrior compiler (WINSCW) latest b482 cannot resolve typename
+ mismatch between template declaration and definition
+ (HashTranslator / Translator)
- Reviewed by Sam Weinig.
+ * wtf/HashSet.h:
- Add codegen support for op_instanceof, fixing 15 mozilla tests.
+2009-07-13 Norbert Leser <norbert.leser@nokia.com>
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_instanceof):
- (KJS::Machine::cti_op_del_by_id):
- * VM/Machine.h:
- * wtf/Platform.h:
+ Reviewed by Eric Seidel.
-2008-08-26 Gavin Barraclough <barraclough@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=27053
- Reviewed by Geoff Garen.
+ Ambiguity in LabelScope initialization
- Fixes for initial review comments.
+ Codewarrior compiler (WINSCW) latest b482 on Symbian cannot resolve
+ type of "0" unambiguously. Set expression explicitly to
+ PassRefPtr<Label>::PassRefPtr()
- * VM/CTI.cpp:
- (KJS::CTI::ctiCompileGetArg):
- (KJS::CTI::ctiCompileGetPutArg):
- (KJS::CTI::ctiCompilePutResult):
- (KJS::CTI::ctiCompileCall):
- (KJS::CTI::CTI):
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::printOpcodeOperandTypes):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile_pass4_SlowCases):
- (KJS::CTI::privateCompile):
- * VM/CTI.h:
- * VM/Register.h:
- * kjs/JSValue.h:
+ * bytecompiler/BytecodeGenerator.cpp
-2008-08-26 Sam Weinig <sam@webkit.org>
+2009-07-11 Simon Fraser <simon.fraser@apple.com>
- Reviewed by Gavin Barraclough and Geoff Garen.
+ Enable support for accelerated compositing and 3d transforms on Leopard.
+ <https://bugs.webkit.org/show_bug.cgi?id=20166>
+ <rdar://problem/6120614>
- Fix up exception checking code.
+ Reviewed by Oliver Hunt.
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_call):
- (KJS::Machine::cti_op_resolve):
- (KJS::Machine::cti_op_construct):
- (KJS::Machine::cti_op_resolve_func):
- (KJS::Machine::cti_op_resolve_skip):
- (KJS::Machine::cti_op_resolve_with_base):
- (KJS::Machine::cti_op_call_eval):
+ * Configurations/FeatureDefines.xcconfig:
+ * wtf/Platform.h:
-2008-08-26 Sam Weinig <sam@webkit.org>
+2009-07-10 Mark Rowe <mrowe@apple.com>
- Reviewed by Oliver Hunt.
+ Second part of the "make Windows happier" dance.
- Fix slowcase for op_post_inc and op_post_dec fixing 2 mozilla tests.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass4_SlowCases):
+2009-07-10 Mark Rowe <mrowe@apple.com>
-2008-08-26 Mark Rowe <mrowe@apple.com>
+ Try and make the Windows build happy.
- Reviewed by Sam Weinig.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- Implement op_in, fixing 8 mozilla tests.
+2009-07-10 Kevin McCullough <kmccullough@apple.com>
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_in):
- * VM/Machine.h:
+ Reviewed by Geoffrey Garen.
-2008-08-26 Mark Rowe <mrowe@apple.com>
+ * debugger/Debugger.h: Made this function virtual for use in WebCore's
+ WebInspector.
- Rubber-stamped by Oliver Hunt.
+2009-07-10 Kwang Yul Seo <skyul@company100.net>
- Don't hardcode the size of a Register for op_new_array. Fixes a crash
- seen during the Mozilla tests.
+ Reviewed by Darin Adler.
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass2_Main):
+ ParserArenaDeletable should override delete
+ https://bugs.webkit.org/show_bug.cgi?id=26790
-2008-08-26 Sam Weinig <sam@webkit.org>
+ ParserArenaDeletable overrides new, but it does not override delete.
+ ParserArenaDeletable must be freed by fastFree
+ because it is allocated by fastMalloc.
- Reviewed by Gavin Barraclough and Geoff Garen.
+ * parser/NodeConstructors.h:
+ (JSC::ParserArenaDeletable::operator delete):
+ * parser/Nodes.h:
- Add support for op_push_scope and op_pop_scope, fixing 20 mozilla tests.
+2009-07-10 Adam Roben <aroben@apple.com>
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- * VM/CTI.h:
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_push_scope):
- (KJS::Machine::cti_op_pop_scope):
- * VM/Machine.h:
+ Sort all our Xcode projects
-2008-08-26 Oliver Hunt <oliver@apple.com>
+ Accomplished using sort-Xcode-project-file.
- Reviewed by Maciej Stachowiak.
+ Requested by Dave Kilzer.
- Add codegen support for op_del_by_id, fixing 49 mozilla tests.
+ * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
- * VM/Machine.cpp:
- (KJS::Machine::cti_op_del_by_id):
- * VM/Machine.h:
+2009-07-09 Maciej Stachowiak <mjs@apple.com>
-2008-08-26 Sam Weinig <sam@webkit.org>
+ Not reviewed, build fix.
- Reviewed by Gavin Barraclough and Geoff Garen.
+ Windows build fix for the last change.
- Don't hardcode the size of a Register for op_get_scoped_var and op_put_scoped_var
- fixing 513 mozilla tests in debug build.
+ * wtf/dtoa.cpp: Forgot to include Vector.h
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass2_Main):
+2009-07-09 Maciej Stachowiak <mjs@apple.com>
-2008-08-26 Oliver Hunt <oliver@apple.com>
+ Reviewed by Darin Adler.
- Reviewed by Maciej Stachowiak.
+ REGRESSION: crash in edge cases of floating point parsing.
+ https://bugs.webkit.org/show_bug.cgi?id=27110
+ <rdar://problem/7044458>
- Added code generator support for op_loop, fixing around 60 mozilla tests.
+ Tests: fast/css/number-parsing-crash.html
+ fast/css/number-parsing-crash.html
+ fast/js/number-parsing-crash.html
+
+ * wtf/dtoa.cpp:
+ (WTF::BigInt::BigInt): Converted this to more a proper class, using a Vector
+ with inline capacity
+
+ (WTF::lshift): Rearranged logic somewhat nontrivially to deal with the new way of sizing BigInts.
+ Added an assertion to verify that invariants are maintained.
+
+ All other functions are adapted fairly mechanically to the above changes.
+ (WTF::BigInt::clear):
+ (WTF::BigInt::size):
+ (WTF::BigInt::resize):
+ (WTF::BigInt::words):
+ (WTF::BigInt::append):
+ (WTF::multadd):
+ (WTF::s2b):
+ (WTF::i2b):
+ (WTF::mult):
+ (WTF::cmp):
+ (WTF::diff):
+ (WTF::b2d):
+ (WTF::d2b):
+ (WTF::ratio):
+ (WTF::strtod):
+ (WTF::quorem):
+ (WTF::dtoa):
- * VM/CTI.cpp:
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::privateCompile_pass2_Main):
+2009-07-09 Drew Wilson <atwilson@google.com>
-2008-08-26 Mark Rowe <mrowe@apple.com>
+ Reviewed by Alexey Proskuryakov.
- Reviewed by Sam Weinig.
+ Turned on CHANNEL_MESSAGING by default because the MessageChannel API
+ can now be implemented for Web Workers and is reasonably stable.
- Set -fomit-frame-pointer in the correct location.
+ * Configurations/FeatureDefines.xcconfig:
- * Configurations/JavaScriptCore.xcconfig:
- * JavaScriptCore.xcodeproj/project.pbxproj:
+2009-07-09 Oliver Hunt <oliver@apple.com>
-2008-08-26 Gavin Barraclough <barraclough@apple.com>
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
- Reviewed by Geoff Garen.
-
- Inital cut of CTI, Geoff's review fixes to follow.
+2009-07-09 Oliver Hunt <oliver@apple.com>
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/CTI.cpp: Added.
- (KJS::getJCB):
- (KJS::CTI::ctiCompileGetArg):
- (KJS::CTI::ctiCompileGetPutArg):
- (KJS::CTI::ctiCompilePutArg):
- (KJS::CTI::ctiCompilePutArgImm):
- (KJS::CTI::ctiImmediateNumericArg):
- (KJS::CTI::ctiCompileGetCTIParam):
- (KJS::CTI::ctiCompilePutResult):
- (KJS::CTI::ctiCompileCall):
- (KJS::CTI::slowCaseIfNotImm):
- (KJS::CTI::slowCaseIfNotImms):
- (KJS::CTI::ctiFastArithDeTagConstImmediate):
- (KJS::CTI::ctiFastArithDeTagImmediate):
- (KJS::CTI::ctiFastArithReTagImmediate):
- (KJS::CTI::ctiFastArithPotentiallyReTagImmediate):
- (KJS::CTI::ctiFastArithImmToInt):
- (KJS::CTI::ctiFastArithIntToImmOrSlowCase):
- (KJS::CTI::CTI):
- (KJS::CTI::privateCompile_pass1_Scan):
- (KJS::CTI::ctiCompileAdd):
- (KJS::CTI::ctiCompileAddImm):
- (KJS::CTI::ctiCompileAddImmNotInt):
- (KJS::CTI::TEMP_HACK_PRINT_TYPES):
- (KJS::CTI::privateCompile_pass2_Main):
- (KJS::CTI::privateCompile_pass3_Link):
- (KJS::CTI::privateCompile_pass4_SlowCases):
- (KJS::CTI::privateCompile):
- * VM/CTI.h: Added.
- (KJS::CTI2Result::CTI2Result):
- (KJS::CallRecord::CallRecord):
- (KJS::JmpTable::JmpTable):
- (KJS::SlowCaseEntry::SlowCaseEntry):
- (KJS::CTI::compile):
- (KJS::CTI::LabelInfo::LabelInfo):
- * VM/CodeBlock.h:
- (KJS::CodeBlock::CodeBlock):
- (KJS::CodeBlock::~CodeBlock):
- * VM/Machine.cpp:
- (KJS::Machine::execute):
- (KJS::Machine::privateExecute):
- (KJS::ctiException):
- (KJS::ctiUnsupported):
- (KJS::ctiTimedOut):
- (KJS::Machine::cti_op_end):
- (KJS::Machine::cti_op_add):
- (KJS::Machine::cti_op_pre_inc):
- (KJS::Machine::cti_timeout_check):
- (KJS::Machine::cti_op_loop_if_less):
- (KJS::Machine::cti_op_new_object):
- (KJS::Machine::cti_op_put_by_id):
- (KJS::Machine::cti_op_get_by_id):
- (KJS::Machine::cti_op_mul):
- (KJS::Machine::cti_op_new_func):
- (KJS::Machine::cti_op_call):
- (KJS::Machine::cti_op_ret):
- (KJS::Machine::cti_op_new_array):
- (KJS::Machine::cti_op_resolve):
- (KJS::Machine::cti_op_construct):
- (KJS::Machine::cti_op_get_by_val):
- (KJS::Machine::cti_op_resolve_func):
- (KJS::Machine::cti_op_sub):
- (KJS::Machine::cti_op_put_by_val):
- (KJS::Machine::cti_op_lesseq):
- (KJS::Machine::cti_op_loop_if_true):
- (KJS::Machine::cti_op_negate):
- (KJS::Machine::cti_op_resolve_base):
- (KJS::Machine::cti_op_resolve_skip):
- (KJS::Machine::cti_op_div):
- (KJS::Machine::cti_op_pre_dec):
- (KJS::Machine::cti_op_jless):
- (KJS::Machine::cti_op_not):
- (KJS::Machine::cti_op_jtrue):
- (KJS::Machine::cti_op_post_inc):
- (KJS::Machine::cti_op_eq):
- (KJS::Machine::cti_op_lshift):
- (KJS::Machine::cti_op_bitand):
- (KJS::Machine::cti_op_rshift):
- (KJS::Machine::cti_op_bitnot):
- (KJS::Machine::cti_op_resolve_with_base):
- (KJS::Machine::cti_op_new_func_exp):
- (KJS::Machine::cti_op_mod):
- (KJS::Machine::cti_op_less):
- (KJS::Machine::cti_op_neq):
- (KJS::Machine::cti_op_post_dec):
- (KJS::Machine::cti_op_urshift):
- (KJS::Machine::cti_op_bitxor):
- (KJS::Machine::cti_op_new_regexp):
- (KJS::Machine::cti_op_bitor):
- (KJS::Machine::cti_op_call_eval):
- (KJS::Machine::cti_op_throw):
- (KJS::Machine::cti_op_get_pnames):
- (KJS::Machine::cti_op_next_pname):
- (KJS::Machine::cti_op_typeof):
- (KJS::Machine::cti_op_stricteq):
- (KJS::Machine::cti_op_nstricteq):
- (KJS::Machine::cti_op_to_jsnumber):
- * VM/Machine.h:
- * VM/Register.h:
- (KJS::Register::jsValue):
- (KJS::Register::getJSValue):
- (KJS::Register::codeBlock):
- (KJS::Register::scopeChain):
- (KJS::Register::i):
- (KJS::Register::r):
- (KJS::Register::vPC):
- (KJS::Register::jsPropertyNameIterator):
- * VM/SamplingTool.cpp:
- (KJS::):
- (KJS::SamplingTool::run):
- (KJS::SamplingTool::dump):
- * VM/SamplingTool.h:
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::zeroImmediate):
- (KJS::JSImmediate::oneImmediate):
- * kjs/JSValue.h:
- * kjs/JSVariableObject.h:
- (KJS::JSVariableObject::JSVariableObjectData::offsetOf_registers):
- (KJS::JSVariableObject::offsetOf_d):
- (KJS::JSVariableObject::offsetOf_Data_registers):
- * masm: Added.
- * masm/IA32MacroAsm.h: Added.
- (KJS::JITCodeBuffer::JITCodeBuffer):
- (KJS::JITCodeBuffer::putByte):
- (KJS::JITCodeBuffer::putShort):
- (KJS::JITCodeBuffer::putInt):
- (KJS::JITCodeBuffer::getEIP):
- (KJS::JITCodeBuffer::start):
- (KJS::JITCodeBuffer::getOffset):
- (KJS::JITCodeBuffer::reset):
- (KJS::JITCodeBuffer::copy):
- (KJS::IA32MacroAssembler::):
- (KJS::IA32MacroAssembler::emitModRm_rr):
- (KJS::IA32MacroAssembler::emitModRm_rm):
- (KJS::IA32MacroAssembler::emitModRm_rmsib):
- (KJS::IA32MacroAssembler::emitModRm_opr):
- (KJS::IA32MacroAssembler::emitModRm_opm):
- (KJS::IA32MacroAssembler::IA32MacroAssembler):
- (KJS::IA32MacroAssembler::emitInt3):
- (KJS::IA32MacroAssembler::emitPushl_r):
- (KJS::IA32MacroAssembler::emitPopl_r):
- (KJS::IA32MacroAssembler::emitMovl_rr):
- (KJS::IA32MacroAssembler::emitAddl_rr):
- (KJS::IA32MacroAssembler::emitAddl_i8r):
- (KJS::IA32MacroAssembler::emitAddl_i32r):
- (KJS::IA32MacroAssembler::emitAddl_mr):
- (KJS::IA32MacroAssembler::emitAndl_rr):
- (KJS::IA32MacroAssembler::emitAndl_i32r):
- (KJS::IA32MacroAssembler::emitCmpl_i8r):
- (KJS::IA32MacroAssembler::emitCmpl_rr):
- (KJS::IA32MacroAssembler::emitCmpl_rm):
- (KJS::IA32MacroAssembler::emitCmpl_i32r):
- (KJS::IA32MacroAssembler::emitCmpw_rm):
- (KJS::IA32MacroAssembler::emitOrl_rr):
- (KJS::IA32MacroAssembler::emitOrl_i8r):
- (KJS::IA32MacroAssembler::emitSubl_rr):
- (KJS::IA32MacroAssembler::emitSubl_i8r):
- (KJS::IA32MacroAssembler::emitSubl_i32r):
- (KJS::IA32MacroAssembler::emitSubl_mr):
- (KJS::IA32MacroAssembler::emitTestl_i32r):
- (KJS::IA32MacroAssembler::emitTestl_rr):
- (KJS::IA32MacroAssembler::emitXorl_i8r):
- (KJS::IA32MacroAssembler::emitXorl_rr):
- (KJS::IA32MacroAssembler::emitSarl_i8r):
- (KJS::IA32MacroAssembler::emitSarl_CLr):
- (KJS::IA32MacroAssembler::emitShl_i8r):
- (KJS::IA32MacroAssembler::emitShll_CLr):
- (KJS::IA32MacroAssembler::emitMull_rr):
- (KJS::IA32MacroAssembler::emitIdivl_r):
- (KJS::IA32MacroAssembler::emitCdq):
- (KJS::IA32MacroAssembler::emitMovl_mr):
- (KJS::IA32MacroAssembler::emitMovzwl_mr):
- (KJS::IA32MacroAssembler::emitMovl_rm):
- (KJS::IA32MacroAssembler::emitMovl_i32r):
- (KJS::IA32MacroAssembler::emitMovl_i32m):
- (KJS::IA32MacroAssembler::emitLeal_mr):
- (KJS::IA32MacroAssembler::emitRet):
- (KJS::IA32MacroAssembler::JmpSrc::JmpSrc):
- (KJS::IA32MacroAssembler::JmpDst::JmpDst):
- (KJS::IA32MacroAssembler::emitCall):
- (KJS::IA32MacroAssembler::label):
- (KJS::IA32MacroAssembler::emitUnlinkedJmp):
- (KJS::IA32MacroAssembler::emitUnlinkedJne):
- (KJS::IA32MacroAssembler::emitUnlinkedJe):
- (KJS::IA32MacroAssembler::emitUnlinkedJl):
- (KJS::IA32MacroAssembler::emitUnlinkedJle):
- (KJS::IA32MacroAssembler::emitUnlinkedJge):
- (KJS::IA32MacroAssembler::emitUnlinkedJae):
- (KJS::IA32MacroAssembler::emitUnlinkedJo):
- (KJS::IA32MacroAssembler::emitPredictionNotTaken):
- (KJS::IA32MacroAssembler::link):
- (KJS::IA32MacroAssembler::copy):
- * wtf/Platform.h:
+ Reviewed by Darin Adler.
-2008-08-26 Oliver Hunt <oliver@apple.com>
+ Bug 27016 - Interpreter crashes due to invalid array indexes
+ <https://bugs.webkit.org/show_bug.cgi?id=27016>
- RS=Maciej.
+ Unsigned vs signed conversions results in incorrect behaviour in
+ 64bit interpreter builds.
- Enabled -fomit-frame-pointer on Release and Production builds, add additional Profiling build config for shark, etc.
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::privateExecute):
- * JavaScriptCore.xcodeproj/project.pbxproj:
+2009-07-09 Dimitri Glazkov <dglazkov@chromium.org>
-=== Start merge of squirrelfish-extreme ===
+ Reviewed by Darin Fisher.
-2008-09-06 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ [Chromium] Upstream JavaScriptCore.gypi, the project file for Chromium build.
+ https://bugs.webkit.org/show_bug.cgi?id=27135
- Reviewed by Maciej Stachowiak.
+ * JavaScriptCore.gypi: Added.
- Fix the Mac Debug build by adding symbols that are exported only in a
- Debug configuration.
+2009-07-09 Joe Mason <joe.mason@torchmobile.com>
- * Configurations/JavaScriptCore.xcconfig:
- * DerivedSources.make:
- * JavaScriptCore.Debug.exp: Added.
- * JavaScriptCore.base.exp: Copied from JavaScriptCore.exp.
- * JavaScriptCore.exp: Removed.
- * JavaScriptCore.xcodeproj/project.pbxproj:
+ Reviewed by George Staikos.
+
+ Authors: Yong Li <yong.li@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com>
-2008-09-05 Darin Adler <darin@apple.com>
+ https://bugs.webkit.org/show_bug.cgi?id=27031
+ Add an override for deleteOwnedPtr(HDC) on Windows
+
+ * wtf/OwnPtrCommon.h:
+ * wtf/OwnPtrWin.cpp:
+ (WTF::deleteOwnedPtr):
- Reviewed by Cameron Zwarich.
+2009-07-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
- - https://bugs.webkit.org/show_bug.cgi?id=20681
- JSPropertyNameIterator functions need to be inlined
+ Reviewed by Darin Adler.
- 1.007x as fast on SunSpider overall
- 1.081x as fast on SunSpider math-cordic
+ Guard singal.h dependency with HAVE(SIGNAL_H) to enable building jsc
+ on SYMBIAN.
- * VM/JSPropertyNameIterator.cpp: Moved functions out of here.
- * VM/JSPropertyNameIterator.h:
- (KJS::JSPropertyNameIterator::JSPropertyNameIterator): Moved
- this into the header and marked it inline.
- (KJS::JSPropertyNameIterator::create): Ditto.
- (KJS::JSPropertyNameIterator::next): Ditto.
+ https://bugs.webkit.org/show_bug.cgi?id=27026
-2008-09-05 Darin Adler <darin@apple.com>
+ Based on Norbert Leser's work.
- Reviewed by Geoffrey Garen.
+ * jsc.cpp:
+ (printUsageStatement):
+ (parseArguments):
+ * wtf/Platform.h:
- - fix https://bugs.webkit.org/show_bug.cgi?id=20673
- single-character strings are churning in the Identifier table
-
- 1.007x as fast on SunSpider overall
- 1.167x as fast on SunSpider string-fasta
-
- * JavaScriptCore.exp: Updated.
- * kjs/SmallStrings.cpp:
- (KJS::SmallStrings::singleCharacterStringRep): Added.
- * kjs/SmallStrings.h: Added singleCharacterStringRep for clients that
- need just a UString, not a JSString.
- * kjs/identifier.cpp:
- (KJS::Identifier::add): Added special cases for single character strings
- so that the UString::Rep that ends up in the identifier table is the one
- from the single-character string optimization; otherwise we end up having
- to look it up in the identifier table over and over again.
- (KJS::Identifier::addSlowCase): Ditto.
- (KJS::Identifier::checkSameIdentifierTable): Made this function an empty
- inline in release builds so that callers don't have to put #ifndef NDEBUG
- at each call site.
- * kjs/identifier.h:
- (KJS::Identifier::add): Removed #ifndef NDEBUG around the calls to
- checkSameIdentifierTable.
- (KJS::Identifier::checkSameIdentifierTable): Added. Empty inline version
- for NDEBUG builds.
-
-2008-09-05 Mark Rowe <mrowe@apple.com>
+2009-07-07 Gavin Barraclough <barraclough@apple.com>
- Build fix.
+ Reviewed by Sam Weinig.
- * kjs/JSObject.h: Move the inline virtual destructor after a non-inline
- virtual function so that the symbol for the vtable is not marked as a
- weakly exported symbol.
+ Stop loading constants into the register file.
-2008-09-05 Darin Adler <darin@apple.com>
+ Instead, use high register values (highest bit bar the sign bit set) to indicate
+ constants in the instruction stream, and when we encounter such a value load it
+ directly from the CodeBlock.
- Reviewed by Sam Weinig.
+ Since constants are no longer copied into the register file, this patch renders
+ the 'unexpected constant' mechanism redundant, and removes it.
- - fix https://bugs.webkit.org/show_bug.cgi?id=20671
- JavaScriptCore string manipulation spends too much time in memcpy
+ 2% improvement, thanks to Sam Weinig.
- 1.011x as fast on SunSpider overall
- 1.028x as fast on SunSpider string tests
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dump):
+ (JSC::CodeBlock::CodeBlock):
+ (JSC::CodeBlock::mark):
+ (JSC::CodeBlock::shrinkToFit):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::isTemporaryRegisterIndex):
+ (JSC::CodeBlock::constantRegister):
+ (JSC::CodeBlock::isConstantRegisterIndex):
+ (JSC::CodeBlock::getConstant):
+ (JSC::ExecState::r):
+ * bytecode/Opcode.h:
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::preserveLastVar):
+ (JSC::BytecodeGenerator::BytecodeGenerator):
+ (JSC::BytecodeGenerator::addConstantValue):
+ (JSC::BytecodeGenerator::emitEqualityOp):
+ (JSC::BytecodeGenerator::emitLoad):
+ (JSC::BytecodeGenerator::emitResolveBase):
+ (JSC::BytecodeGenerator::emitResolveWithBase):
+ (JSC::BytecodeGenerator::emitNewError):
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::emitNode):
+ * interpreter/CallFrame.h:
+ (JSC::ExecState::noCaller):
+ (JSC::ExecState::hasHostCallFrameFlag):
+ (JSC::ExecState::addHostCallFrameFlag):
+ (JSC::ExecState::removeHostCallFrameFlag):
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::resolve):
+ (JSC::Interpreter::resolveSkip):
+ (JSC::Interpreter::resolveGlobal):
+ (JSC::Interpreter::resolveBase):
+ (JSC::Interpreter::resolveBaseAndProperty):
+ (JSC::Interpreter::resolveBaseAndFunc):
+ (JSC::Interpreter::dumpRegisters):
+ (JSC::Interpreter::throwException):
+ (JSC::Interpreter::createExceptionScope):
+ (JSC::Interpreter::privateExecute):
+ (JSC::Interpreter::retrieveArguments):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileMainPass):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::emitLoadDouble):
+ (JSC::JIT::emitLoadInt32ToDouble):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_new_error):
+ (JSC::JIT::emit_op_enter):
+ (JSC::JIT::emit_op_enter_with_activation):
+ * parser/Nodes.cpp:
+ (JSC::DeleteResolveNode::emitBytecode):
+ (JSC::DeleteValueNode::emitBytecode):
+ (JSC::PrefixResolveNode::emitBytecode):
+ * runtime/JSActivation.cpp:
+ (JSC::JSActivation::JSActivation):
+ * wtf/Platform.h:
- For small strings, use a loop rather than calling memcpy. The loop can
- be faster because there's no function call overhead, and because it can
- assume the pointers are aligned instead of checking that. Currently the
- threshold is set at 20 characters, based on some testing on one particular
- computer. Later we can tune this for various platforms by setting
- USTRING_COPY_CHARS_INLINE_CUTOFF appropriately, but it does no great harm
- if not perfectly tuned.
+2009-07-07 Mark Rowe <mrowe@apple.com>
- * kjs/ustring.cpp:
- (KJS::overflowIndicator): Removed bogus const.
- (KJS::maxUChars): Ditto.
- (KJS::copyChars): Added.
- (KJS::UString::Rep::createCopying): Call copyChars instead of memcpy.
- Also eliminated need for const_cast.
- (KJS::UString::expandPreCapacity): Ditto.
- (KJS::concatenate): Ditto.
- (KJS::UString::spliceSubstringsWithSeparators): Ditto.
- (KJS::UString::append): Ditto.
+ Reviewed by Darin Adler.
-2008-09-05 Kevin McCullough <kmccullough@apple.com>
+ Fix <https://bugs.webkit.org/show_bug.cgi?id=27025> / <rdar://problem/7033448>.
+ Bug 27025: Crashes and regression test failures related to regexps in 64-bit
- Reviewed by Sam and Alexey.
+ For x86_64 RegexGenerator uses rbx, a callee-save register, as a scratch register but
+ neglects to save and restore it. The change in handling of the output vector in r45545
+ altered code generation so that the RegExp::match was now storing important data in rbx,
+ which caused crashes and bogus results when it was clobbered.
- Make the profiler work with a null exec state. This will allow other
- applications start the profiler to get DTrace probes going without
- needing a WebView.
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::generateEnter): Save rbx.
+ (JSC::Yarr::RegexGenerator::generateReturn): Restore rbx.
- * ChangeLog:
- * profiler/ProfileGenerator.cpp:
- (KJS::ProfileGenerator::ProfileGenerator):
- (KJS::ProfileGenerator::willExecute):
- (KJS::ProfileGenerator::didExecute):
- * profiler/Profiler.cpp:
- (KJS::Profiler::startProfiling):
- (KJS::Profiler::stopProfiling):
- (KJS::dispatchFunctionToProfiles):
+2009-07-06 Ada Chan <adachan@apple.com>
-2008-09-04 Gavin Barraclough <barraclough@apple.com>
+ Reviewed by Darin Adler and Mark Rowe.
- Reviewed by Geoffrey Garen.
+ Decommitted spans are added to the list of normal spans rather than
+ the returned spans in TCMalloc_PageHeap::Delete().
+ https://bugs.webkit.org/show_bug.cgi?id=26998
- Fixed an off-by-one error that would cause the StructureIDChain to
- be one object too short.
-
- Can't construct a test case because other factors make this not crash
- (yet!).
+ In TCMalloc_PageHeap::Delete(), the deleted span can be decommitted in
+ the process of merging with neighboring spans that are also decommitted.
+ The merged span needs to be placed in the list of returned spans (spans
+ whose memory has been returned to the system). Right now it's always added
+ to the list of the normal spans which can theoretically cause thrashing.
- * kjs/StructureID.cpp:
- (KJS::StructureIDChain::StructureIDChain):
+ * wtf/FastMalloc.cpp:
+ (WTF::TCMalloc_PageHeap::Delete):
-2008-09-04 Kevin Ollivier <kevino@theolliviers.com>
+2009-07-05 Lars Knoll <lars.knoll@nokia.com>
- wx build fixes.
+ Reviewed by Maciej Stachowiak.
- * JavaScriptCoreSources.bkl:
+ https://bugs.webkit.org/show_bug.cgi?id=26843
-2008-09-04 Mark Rowe <mrowe@apple.com>
+ Fix run-time crashes in JavaScriptCore with the Metrowerks compiler on Symbian.
- Reviewed by Eric Seidel.
+ The Metrowerks compiler on the Symbian platform moves the globally
+ defined Hashtables into read-only memory, despite one of the members
+ being mutable. This causes crashes at run-time due to write access to
+ read-only memory.
- Fix https://bugs.webkit.org/show_bug.cgi?id=20639.
- Bug 20639: ENABLE_DASHBOARD_SUPPORT does not need to be a FEATURE_DEFINE
+ Avoid the use of const with this compiler by introducing the
+ JSC_CONST_HASHTABLE macro.
- * Configurations/JavaScriptCore.xcconfig: Remove ENABLE_DASHBOARD_SUPPORT from FEATURE_DEFINES.
- * wtf/Platform.h: Set ENABLE_DASHBOARD_SUPPORT for PLATFORM(MAC).
+ Based on idea by Norbert Leser.
-2008-09-04 Adele Peterson <adele@apple.com>
+ * runtime/Lookup.h: Define JSC_CONST_HASHTABLE as const for !WINSCW.
+ * create_hash_table: Use JSC_CONST_HASHTABLE for hashtables.
+ * runtime/JSGlobalData.cpp: Import various global hashtables via the macro.
- Build fix.
+2009-07-04 Dan Bernstein <mitz@apple.com>
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.vcproj/jsc/jsc.vcproj:
+ - debug build fix
-2008-09-04 Mark Rowe <mrowe@apple.com>
+ * runtime/RegExpConstructor.cpp:
+ (JSC::RegExpConstructor::getLastParen):
- Mac build fix.
+2009-07-03 Yong Li <yong.li@torchmobile.com>
- * kjs/config.h: Only check the value of HAVE_CONFIG_H if it is defined.
+ Reviewed by Maciej Stachowiak (and revised slightly)
-2008-09-04 Marco Barisione <marco.barisione@collabora.co.uk>
+ RegExp::match to be optimized
+ https://bugs.webkit.org/show_bug.cgi?id=26957
- Reviewed by Eric Seidel.
+ Allow regexp matching to use Vectors with inline capacity instead of
+ allocating a new ovector buffer every time.
+
+ ~5% speedup on SunSpider string-unpack-code test, 0.3% on SunSpider overall.
- http://bugs.webkit.org/show_bug.cgi?id=20380
- [GTK][AUTOTOOLS] Include autotoolsconfig.h from config.h
+ * runtime/RegExp.cpp:
+ (JSC::RegExp::match):
+ * runtime/RegExp.h:
+ * runtime/RegExpConstructor.cpp:
+ (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate):
+ (JSC::RegExpConstructorPrivate::lastOvector):
+ (JSC::RegExpConstructorPrivate::tempOvector):
+ (JSC::RegExpConstructorPrivate::changeLastOvector):
+ (JSC::RegExpConstructor::performMatch):
+ (JSC::RegExpMatchesArray::RegExpMatchesArray):
+ (JSC::RegExpMatchesArray::fillArrayInstance):
+ (JSC::RegExpConstructor::getBackref):
+ (JSC::RegExpConstructor::getLastParen):
+ (JSC::RegExpConstructor::getLeftContext):
+ (JSC::RegExpConstructor::getRightContext):
+ * runtime/StringPrototype.cpp:
+ (JSC::stringProtoFuncSplit):
- * kjs/config.h: Include the configuration header generated by
- autotools if available.
+2009-06-30 Kwang Yul Seo <skyul@company100.net>
-2008-09-04 Tor Arne Vestbø <tavestbo@trolltech.com>
+ Reviewed by Eric Seidel.
- Reviewed by Simon.
+ Override operator new/delete with const std::nothrow_t& as the second
+ argument.
+ https://bugs.webkit.org/show_bug.cgi?id=26792
- Fix the QtWebKit build to match changes in r36016
+ On Windows CE, operator new/delete, new[]/delete[] with const
+ std::nothrow_t& must be overrided because some standard template
+ libraries use these operators.
- * JavaScriptCore.pri:
+ The problem occurs when memory allocated by new(size_t s, const
+ std::nothrow_t&) is freed by delete(void* p). This causes the umatched
+ malloc/free problem.
-2008-09-04 Mark Rowe <mrowe@apple.com>
+ The patch overrides all new, delete, new[] and delete[] to use
+ fastMaloc and fastFree consistently.
- Fix the 64-bit build.
+ * wtf/FastMalloc.h:
+ (throw):
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::printStructureID): Store the instruction offset into an unsigned local
- to avoid a warning related to format specifiers.
- (KJS::CodeBlock::printStructureIDs): Ditto.
+2009-06-30 Gabor Loki <loki@inf.u-szeged.hu>
-2008-09-04 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Reviewed by Sam Weinig.
- Rubber-stamped by Oliver Hunt.
+ <https://bugs.webkit.org/show_bug.cgi?id=24986>
- Correct the spelling of 'entryIndices'.
+ Remove unnecessary references to AssemblerBuffer.
- * kjs/PropertyMap.cpp:
- (KJS::PropertyMap::get):
- (KJS::PropertyMap::getLocation):
- (KJS::PropertyMap::put):
- (KJS::PropertyMap::insert):
- (KJS::PropertyMap::remove):
- (KJS::PropertyMap::checkConsistency):
- * kjs/PropertyMap.h:
- (KJS::PropertyMapHashTable::entries):
- (KJS::PropertyMap::getOffset):
- (KJS::PropertyMap::putOffset):
- (KJS::PropertyMap::offsetForTableLocation):
+ * interpreter/Interpreter.cpp:
+ * interpreter/Interpreter.h:
-2008-09-03 Geoffrey Garen <ggaren@apple.com>
+2009-06-29 David Levin <levin@chromium.org>
- Reviewed by Cameron Zwarich.
-
- Fixed <rdar://problem/6193925> REGRESSION: Crash occurs at
- KJS::Machine::privateExecute() when attempting to load my Mobile Gallery
- (http://www.me.com/gallery/#home)
-
- also
-
- https://bugs.webkit.org/show_bug.cgi?id=20633 Crash in privateExecute
- @ cs.byu.edu
-
- The underlying problem was that we would cache prototype properties
- even if the prototype was a dictionary.
-
- The fix is to transition a prototype back from dictionary to normal
- status when an opcode caches access to it. (This is better than just
- refusing to cache, since a heavily accessed prototype is almost
- certainly not a true dictionary.)
+ Reviewed by Oliver Hunt.
- * VM/Machine.cpp:
- (KJS::Machine::tryCacheGetByID):
- * kjs/JSObject.h:
+ Still seeing occasional leaks from UString::sharedBuffer code
+ https://bugs.webkit.org/show_bug.cgi?id=26420
-2008-09-03 Eric Seidel <eric@webkit.org>
+ The problem is that the pointer to the memory allocation isn't visible
+ by "leaks" due to the lower bits being used as flags. The fix is to
+ make the pointer visible in memory (in debug only). The downside of
+ this fix that the memory allocated by sharedBuffer will still look like
+ a leak in non-debug builds when any flags are set.
- Reviewed by Sam.
+ * wtf/PtrAndFlags.h:
+ (WTF::PtrAndFlags::set):
- Clean up Platform.h and add PLATFORM(CHROMIUM), PLATFORM(SKIA) and USE(V8_BINDINGS)
+2009-06-29 Sam Weinig <sam@webkit.org>
- * Configurations/JavaScriptCore.xcconfig: add missing ENABLE_*
- * wtf/ASCIICType.h: include <wtf/Assertions.h> since it depends on it.
- * wtf/Platform.h:
+ Reviewed by Mark Rowe.
-2008-09-03 Kevin McCullough <kmccullough@apple.com>
+ Remove more unused scons support.
- Reviewed by Tim.
+ * SConstruct: Removed.
- Remove the rest of the "zombie" code from the profiler.
- - There is no longer a need for the ProfilerClient callback mechanism.
+2009-06-29 Oliver Hunt <oliver@apple.com>
- * API/JSProfilerPrivate.cpp:
- (JSStartProfiling):
- * JavaScriptCore.exp:
- * profiler/HeavyProfile.h:
- * profiler/ProfileGenerator.cpp:
- (KJS::ProfileGenerator::create):
- (KJS::ProfileGenerator::ProfileGenerator):
- * profiler/ProfileGenerator.h:
- (KJS::ProfileGenerator::profileGroup):
- * profiler/Profiler.cpp:
- (KJS::Profiler::startProfiling):
- (KJS::Profiler::stopProfiling): Immediately return the profile when
- stopped instead of using a callback.
- * profiler/Profiler.h:
- * profiler/TreeProfile.h:
+ Reviewed by Gavin Barraclough.
-2008-09-03 Adele Peterson <adele@apple.com>
+ <rdar://problem/7016214> JSON.parse fails to parse valid JSON with most Unicode characters
+ <https://bugs.webkit.org/show_bug.cgi?id=26802>
- Build fix.
+ In the original JSON.parse patch unicode was handled correctly, however in some last
+ minute "clean up" I oversimplified isSafeStringCharacter. This patch corrects this bug.
- * wtf/win/MainThreadWin.cpp:
+ * runtime/LiteralParser.cpp:
+ (JSC::isSafeStringCharacter):
+ (JSC::LiteralParser::Lexer::lexString):
-2008-09-02 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Darin and Tim.
-
- Remove most of the "zombie" mode from the profiler. Next we will need
- to remove the client callback mechanism in profiles.
-
- - This simplifies the code, leverages the recent changes I've made in
- getting line numbers from SquirrelFish, and is a slight speed
- improvement on SunSpider.
- - Also the "zombie" mode was a constant source of odd edge cases and
- obscure bugs so it's good to remove since all of its issues may not have
- been found.
-
- * API/JSProfilerPrivate.cpp: No need to call didFinishAllExecution() any
- more.
- (JSEndProfiling):
- * JavaScriptCore.exp: Export the new signature of retrieveLastCaller()
- * VM/Machine.cpp:
- (KJS::Machine::execute): No need to call didFinishAllExecution() any
- more.
- (KJS::Machine::retrieveCaller): Now operates on InternalFunctions now
- since the RegisterFile is no longer guaranteeded to store only
- JSFunctions
- (KJS::Machine::retrieveLastCaller): Now also retrieve the function's
- name
- (KJS::Machine::callFrame): A result of changing retrieveCaller()
- * VM/Machine.h:
- * VM/Register.h:
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::~JSGlobalObject):
- * kjs/nodes.h:
- * profiler/ProfileGenerator.cpp:
- (KJS::ProfileGenerator::create): Now pass the original exec and get the
- global exec and client when necessary. We need the original exec so we
- can have the stack frame where profiling started.
- (KJS::ProfileGenerator::ProfileGenerator): ditto.
- (KJS::ProfileGenerator::addParentForConsoleStart): This is where the
- parent to star of the profile is added, if there is one.
- (KJS::ProfileGenerator::willExecute): Remove uglyness!
- (KJS::ProfileGenerator::didExecute): Ditto!
- (KJS::ProfileGenerator::stopProfiling):
- (KJS::ProfileGenerator::removeProfileStart): Use a better way to find
- and remove the function we are looking for.
- (KJS::ProfileGenerator::removeProfileEnd): Ditto.
- * profiler/ProfileGenerator.h:
- (KJS::ProfileGenerator::client):
- * profiler/ProfileNode.cpp:
- (KJS::ProfileNode::removeChild): Add a better way to remove a child from
- a ProfileNode.
- (KJS::ProfileNode::stopProfiling):
- (KJS::ProfileNode::debugPrintData): Modified a debug-only diagnostic
- function to be sane.
- * profiler/ProfileNode.h:
- * profiler/Profiler.cpp: Change to pass the original exec state.
- (KJS::Profiler::startProfiling):
- (KJS::Profiler::stopProfiling):
- (KJS::Profiler::willExecute):
- (KJS::Profiler::didExecute):
- (KJS::Profiler::createCallIdentifier):
- * profiler/Profiler.h:
+2009-06-26 Oliver Hunt <oliver@apple.com>
-2008-09-01 Alexey Proskuryakov <ap@webkit.org>
+ Reviewed by Dan Bernstein.
- Reviewed by Darin Adler.
+ <rdar://problem/7009684> REGRESSION(r45039): Crashes inside JSEvent::put on PowerPC (26746)
+ <https://bugs.webkit.org/show_bug.cgi?id=26746>
- Implement callOnMainThreadAndWait().
+ Fix for r45039 incorrectly uncached a get_by_id by converting it to put_by_id. Clearly this
+ is less than correct. This patch corrects that error.
- This will be useful when a background thread needs to perform UI calls synchronously
- (e.g. an openDatabase() call cannot return until the user answers to a confirmation dialog).
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::tryCacheGetByID):
- * wtf/MainThread.cpp:
- (WTF::FunctionWithContext::FunctionWithContext): Added a ThreadCondition member. When
- non-zero, the condition is signalled after the function is called.
- (WTF::mainThreadFunctionQueueMutex): Renamed from functionQueueMutex, sinc this is no longer
- static. Changed to be initialized from initializeThreading() to avoid lock contention.
- (WTF::initializeMainThread): On non-Windows platforms, just call mainThreadFunctionQueueMutex.
- (WTF::dispatchFunctionsFromMainThread): Signal synchronous calls when done.
- (WTF::callOnMainThread): Updated for functionQueueMutex rename.
- (WTF::callOnMainThreadAndWait): Added.
+2009-06-26 Eric Seidel <eric@webkit.org>
- * wtf/MainThread.h: Added callOnMainThreadAndWait(); initializeMainThread() now exists on
- all platforms.
+ No review, only rolling out r45259.
- * wtf/win/MainThreadWin.cpp: (WTF::initializeMainThread): Added a callOnMainThreadAndWait()
- call to initialize function queue mutex.
+ Roll out r45259 after crash appeared on the bots:
+ plugins/undefined-property-crash.html
+ ASSERTION FAILED: s <= HeapConstants<heapType>::cellSize
+ (leopard-intel-debug-tests/build/JavaScriptCore/runtime/Collector.cpp:278
+ void* JSC::Heap::heapAllocate(size_t) [with JSC::HeapType heapType = PrimaryHeap])
- * wtf/ThreadingGtk.cpp: (WTF::initializeThreading):
- * wtf/ThreadingPthreads.cpp: (WTF::initializeThreading):
- * wtf/ThreadingQt.cpp: (WTF::initializeThreading):
- Only initialize mainThreadIdentifier on non-Darwin platforms. It was not guaranteed to be
- accurate on Darwin.
+ * runtime/DateInstance.cpp:
+ * runtime/Identifier.cpp:
+ * runtime/Lookup.h:
+ * runtime/RegExpConstructor.cpp:
+ * runtime/RegExpObject.h:
+ * runtime/ScopeChain.h:
+ * runtime/UString.h:
-2008-09-03 Geoffrey Garen <ggaren@apple.com>
+2009-06-26 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
- Reviewed by Darin Adler.
-
- Use isUndefinedOrNull() instead of separate checks for each in op_eq_null
- and op_neq_null.
+ Reviewed by Simon Hausmann.
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
+ Add support for QDataStream operators to Vector.
-2008-09-02 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
+ * wtf/Vector.h:
+ (WTF::operator<<):
+ (WTF::operator>>):
- Reviewed by Darin Adler.
+2009-06-24 Sam Weinig <sam@webkit.org>
- Bug 20296: OpcodeStats doesn't build on platforms which don't have mergesort().
- <https://bugs.webkit.org/show_bug.cgi?id=20296>
+ Reviewed by Gavin Barraclough.
- * VM/Opcode.cpp:
- (KJS::OpcodeStats::~OpcodeStats): mergesort() replaced with qsort()
+ Make the opcode sampler work once again.
-2008-09-02 Geoffrey Garen <ggaren@apple.com>
+ * jit/JIT.h:
+ (JSC::JIT::compileGetByIdProto):
+ (JSC::JIT::compileGetByIdSelfList):
+ (JSC::JIT::compileGetByIdProtoList):
+ (JSC::JIT::compileGetByIdChainList):
+ (JSC::JIT::compileGetByIdChain):
+ (JSC::JIT::compilePutByIdTransition):
+ (JSC::JIT::compileCTIMachineTrampolines):
+ (JSC::JIT::compilePatchGetArrayLength):
+ * jit/JITStubCall.h:
+ (JSC::JITStubCall::call):
- Reviewed by Oliver Hunt.
-
- Fast path for array.length and string.length.
-
- SunSpider says 0.5% faster.
+2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
-2008-09-02 Geoffrey Garen <ggaren@apple.com>
+ Reviewed by Maciej Stachowiak.
- Reviewed by Anders Carlsson.
-
- Added optimized paths for comparing to null.
-
- SunSpider says 0.5% faster.
+ Extend FastAllocBase.h with 'using WTF::FastAllocBase' to avoid
+ unnecessary WTF:: usings.
+ Remove existing unnecessary WTF:: usings.
-2008-09-02 Geoffrey Garen <ggaren@apple.com>
+ * interpreter/Interpreter.h:
+ * profiler/CallIdentifier.h:
+ * runtime/ScopeChain.h:
+ * wtf/FastAllocBase.h:
- Reviewed by Sam Weinig.
+2009-06-24 David Levin <levin@chromium.org>
- Changed jsDriver.pl to dump the exact text you would need in order to
- reproduce a test result. This enables a fast workflow where you copy
- and paste a test failure in the terminal.
+ Fix all builds.
- * tests/mozilla/jsDriver.pl:
+ * bytecode/CodeBlock.h:
+ * bytecompiler/BytecodeGenerator.h:
+ * interpreter/Register.h:
-2008-09-02 Geoffrey Garen <ggaren@apple.com>
+2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- Reviewed by Sam Weinig.
-
- Implemented the rest of Darin's review comments for the 09-01 inline
- caching patch.
+ Reviewed by Maciej Stachowiak.
- SunSpider says 0.5% faster, but that seems like noise.
-
- * JavaScriptCore.xcodeproj/project.pbxproj: Put PutPropertySlot into
- its own file, and added BatchedTransitionOptimizer.
-
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::~CodeBlock): Use array indexing instead of a pointer
- iterator.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator): Used BatchedTransitionOptimizer to
- make batched put and remove for declared variables fast, without forever
- pessimizing the global object. Removed the old getDirect/removeDirect hack
- that tried to do the same in a more limited way.
+ https://bugs.webkit.org/show_bug.cgi?id=26677
- * VM/CodeGenerator.h: Moved IdentifierRepHash to the KJS namespace since
- it doesn't specialize anything in WTF.
+ Inherits CodeBlock class from FastAllocBase because it
+ has been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.h:217.
- * VM/Machine.cpp:
- (KJS::Machine::Machine): Nixed the DummyConstruct tag because it was
- confusingly named.
-
- (KJS::Machine::execute): Used BatchedTransitionOptimizer, as above. Fixed
- up some comments.
-
- (KJS::cachePrototypeChain): Cast to JSObject*, since it's more specific.
-
- (KJS::Machine::tryCachePutByID): Use isNull() instead of comparing to
- jsNull(), since isNull() leaves more options open for the future.
- (KJS::Machine::tryCacheGetByID): ditto
- (KJS::Machine::privateExecute): ditto
-
- * VM/SamplingTool.cpp:
- (KJS::SamplingTool::dump): Use C++-style cast, to match our style
- guidelines.
-
- * kjs/BatchedTransitionOptimizer.h: Added. New class that allows host
- code to add a batch of properties to an object in an efficient way.
-
- * kjs/JSActivation.cpp: Use isNull(), as above.
-
- * kjs/JSArray.cpp: Get rid of DummyConstruct tag, as above.
- * kjs/JSArray.h:
+ * bytecode/CodeBlock.h:
- * kjs/JSGlobalData.cpp: Nixed two unused StructureIDs.
- * kjs/JSGlobalData.h:
+2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- * kjs/JSImmediate.cpp: Use isNull(), as above.
+ Reviewed by Maciej Stachowiak.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26676
- * kjs/JSObject.cpp:
- (KJS::JSObject::mark): Moved mark tracing code elsewhere, to make this
- function more readable.
+ Inherits BytecodeGenerator class from FastAllocBase because it has been
+ instantiated by 'new' in JavaScriptCore/parser/Nodes.cpp:1892.
- (KJS::JSObject::put): Use isNull(), as above.
+ * bytecompiler/BytecodeGenerator.h:
- (KJS::JSObject::createInheritorID): Return a raw pointer, since the
- object is owned by a data member, not necessarily the caller.
- * kjs/JSObject.h:
+2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- * kjs/JSString.cpp: Use isNull(), as above.
+ Reviewed by Maciej Stachowiak.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26675
- * kjs/PropertyMap.h: Updated to use PropertySlot::invalidOffset.
+ Inherits Register class from FastAllocBase because it has been
+ instantiated by 'new' in JavaScriptCore/runtime/JSVariableObject.h:149.
- * kjs/PropertySlot.h: Changed KJS_INVALID_OFFSET to WTF::notFound
- because C macros are so 80's.
+ * interpreter/Register.h:
- * kjs/PutPropertySlot.h: Added. Split out of PropertySlot.h. Also renamed
- PutPropertySlot::SlotType to PutPropertySlot::Type, and slotBase to base,
- since "slot" was redundant.
+2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- * kjs/StructureID.cpp: Added a new transition *away* from dictionary
- status, to support BatchedTransitionOptimizer.
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26674
- (KJS::StructureIDChain::StructureIDChain): No need to store m_size as
- a data member, so keep it in a local, which might be faster.
- * kjs/StructureID.h:
+ Inherits HashMap class from FastAllocBase because it has been
+ instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:458.
- * kjs/SymbolTable.h: Moved IdentifierRepHash to KJS namespace, as above.
- * kjs/ustring.h:
+ * wtf/HashMap.h:
-2008-09-02 Adam Roben <aroben@apple.com>
+2009-06-24 Oliver Hunt <oliver@apple.com>
- Windows build fixes
+ Reviewed by Darin Adler.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add
- StructureID.{cpp,h} to the project. Also let VS reorder this file.
- * VM/CodeBlock.cpp: Include StringExtras so that snprintf will be
- defined on Windows.
+ <rdar://problem/6940519> REGRESSION (Safari 4 Public Beta - TOT): google.com/adplanner shows blank page instead of site details in "basic research'
-2008-09-01 Sam Weinig <sam@webkit.org>
+ The problem was caused by the page returned with a function using a
+ var declaration list containing around ~3000 variables. The solution
+ to this is to flatten the comma expression representation and make
+ codegen comma expressions and initializer lists iterative rather than
+ recursive.
- Fix release build.
+ * parser/Grammar.y:
+ * parser/NodeConstructors.h:
+ (JSC::CommaNode::CommaNode):
+ * parser/Nodes.cpp:
+ (JSC::CommaNode::emitBytecode):
+ * parser/Nodes.h:
+ (JSC::ExpressionNode::isCommaNode):
+ (JSC::CommaNode::isCommaNode):
+ (JSC::CommaNode::append):
- * JavaScriptCore.exp:
+2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
-2008-09-01 Jan Michael Alonzo <jmalonzo@webkit.org>
+ Reviewed by Maciej Stachowiak.
- Reviewed by Oliver Hunt.
+ https://bugs.webkit.org/show_bug.cgi?id=26645
- Gtk buildfix
+ Inherits ScopeChainNode class from FastAllocBase because it has been
+ instantiated by 'new' in JavaScriptCore/runtime/ScopeChain.h:95.
- * GNUmakefile.am:
- * kjs/PropertyMap.cpp: rename Identifier.h to identifier.h
- * kjs/StructureID.cpp: include JSObject.h
+ * wtf/RefPtr.h:
-2008-09-01 Geoffrey Garen <ggaren@apple.com>
+2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
Reviewed by Darin Adler.
- First cut at inline caching for access to vanilla JavaScript properties.
-
- SunSpider says 4% faster. Tests heavy on dictionary-like access have
- regressed a bit -- we have a lot of room to improve in this area,
- but this patch is over-ripe as-is.
-
- JSCells now have a StructureID that uniquely identifies their layout,
- and holds their prototype.
-
- JSValue::put takes a PropertySlot& argument, so it can fill in details
- about where it put a value, for the sake of caching.
-
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::CodeGenerator): Avoid calling removeDirect if we
- can, since it disables inline caching in the global object. This can
- probably improve in the future.
-
- * kjs/JSGlobalObject.cpp: Nixed reset(), since it complicates caching, and
- wasn't really necessary.
-
- * kjs/JSObject.cpp: Tweaked getter / setter behavior not to rely on the
- IsGetterSetter flag, since the flag was buggy. This is necessary in order
- to avoid accidentally accessing a getter / setter as a normal property.
-
- Also changed getter / setter creation to honor ReadOnly, matching Mozilla.
-
- * kjs/PropertyMap.cpp: Nixed clear(), since it complicates caching and
- isn't necessary.
-
- * kjs/Shell.cpp: Moved SamplingTool dumping outside the loop. This allows
- you to aggregate sampling of multiple files (or the same file repeatedly),
- which helped me track down regressions.
-
- * kjs/ustring.h: Moved IdentifierRepHash here to share it.
-
-2008-09-01 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
+ https://bugs.webkit.org/show_bug.cgi?id=26648
- Eagerly allocate the Math object's numeric constants. This avoids
- constantly reallocating them in loops, and also ensures that the Math
- object will not use the single property optimization, which makes
- properties ineligible for caching.
+ Inherits Deque class from FastAllocBase because it has been
+ instantiated by 'new' with DEFINE_STATIC_LOCAL macro in
+ JavaScriptCore/wtf/MainThread.cpp:62.
- SunSpider reports a small speedup, in combination with inline caching.
+ * wtf/Deque.h:
- * kjs/MathObject.cpp:
- (KJS::MathObject::MathObject):
- (KJS::MathObject::getOwnPropertySlot):
- * kjs/MathObject.h:
+2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
-2008-09-01 Jan Michael Alonzo <jmalonzo@webkit.org>
+ Reviewed by Darin Adler.
- Gtk build fix, not reviewed.
+ https://bugs.webkit.org/show_bug.cgi?id=26644
- * GNUmakefile.am: Add SmallStrings.cpp in both release and debug builds
+ Inherits RefPtr class from FastAllocBase because it has been
+ instantiated by 'new' in JavaScriptCore/runtime/StructureChain.cpp:41.
-2008-08-31 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ * wtf/RefPtr.h:
- Reviewed by Maciej Stachowiak.
+2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- Bug 20577: REGRESSION (r36006): Gmail is broken
- <https://bugs.webkit.org/show_bug.cgi?id=20577>
+ Reviewed by Darin Adler.
- r36006 changed stringProtoFuncSubstr() so that it is uses the more
- efficient jsSubstring(), rather than using UString::substr() and then
- calling jsString(). However, the change did not account for the case
- where the start and the length of the substring extend beyond the length
- of the original string. This patch corrects that.
+ Inherits HashSet class from FastAllocBase, because it has been
+ instantiated by 'new' in JavaScriptCore/runtime/Collector.h:116.
- * kjs/StringPrototype.cpp:
- (KJS::stringProtoFuncSubstr):
+ * wtf/HashSet.h:
-2008-08-31 Simon Hausmann <hausmann@wekit.org>
+2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- Unreviewed build fix (with gcc 4.3)
+ Reviewed by Darin Adler.
- * kjs/ustring.h: Properly forward declare operator== for UString and
- the the concatenate functions inside the KJS namespace.
+ Inherits Vector class from FastAllocBase because it has been
+ instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:633.
-2008-08-30 Darin Adler <darin@apple.com>
+ * wtf/Vector.h:
- Reviewed by Maciej.
+2009-06-24 Norbert Leser <norbert.leser@nokia.com>
- - https://bugs.webkit.org/show_bug.cgi?id=20333
- improve JavaScript speed when handling single-character strings
+ Reviewed by Maciej Stachoviak.
- 1.035x as fast on SunSpider overall.
- 1.127x as fast on SunSpider string tests.
- 1.910x as fast on SunSpider string-base64 test.
+ The BytecodeGenerator objects were instantiated on stack, which takes up ~38kB per instance
+ (each instance includes copy of JSC::CodeBlock with large SymbolTable, etc.).
+ Specifically, since there is nested invocation (e.g., GlobalCode --> FunctionCode),
+ the stack overflows immediately on Symbian hardware (max. 80 kB).
+ Proposed change allocates generator objects on heap.
+ Performance impact (if any) should be negligible and change is proposed as general fix,
+ rather than ifdef'd for SYMBIAN.
- * API/JSObjectRef.cpp:
- (JSObjectMakeFunction): Removed unneeded explicit construction of UString.
+ * parser/Nodes.cpp:
+ (JSC::ProgramNode::generateBytecode):
+ (JSC::EvalNode::generateBytecode):
+ (JSC::EvalNode::bytecodeForExceptionInfoReparse):
+ (JSC::FunctionBodyNode::generateBytecode):
+ (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse):
- * GNUmakefile.am: Added SmallStrings.h and SmallStrings.cpp.
- * JavaScriptCore.pri: Ditto.
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- Ditto.
- * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
- * JavaScriptCoreSources.bkl: Ditto.
-
- * JavaScriptCore.exp: Updated.
-
- * VM/Machine.cpp:
- (KJS::jsAddSlowCase): Changed to use a code path that doesn't involve
- a UString constructor. This avoids an extra jump caused by the "in charge"
- vs. "not in charge" constructors.
- (KJS::jsAdd): Ditto.
- (KJS::jsTypeStringForValue): Adopted jsNontrivialString.
-
- * kjs/ArrayPrototype.cpp:
- (KJS::arrayProtoFuncToString): Adopted jsEmptyString.
- (KJS::arrayProtoFuncToLocaleString): Ditto.
- (KJS::arrayProtoFuncJoin): Ditto.
- * kjs/BooleanPrototype.cpp:
- (KJS::booleanProtoFuncToString): Adopted jsNontrivialString.
- * kjs/DateConstructor.cpp:
- (KJS::callDate): Ditto.
- * kjs/DatePrototype.cpp:
- (KJS::formatLocaleDate): Adopted jsEmptyString and jsNontrivialString.
- (KJS::dateProtoFuncToString): Ditto.
- (KJS::dateProtoFuncToUTCString): Ditto.
- (KJS::dateProtoFuncToDateString): Ditto.
- (KJS::dateProtoFuncToTimeString): Ditto.
- (KJS::dateProtoFuncToLocaleString): Ditto.
- (KJS::dateProtoFuncToLocaleDateString): Ditto.
- (KJS::dateProtoFuncToLocaleTimeString): Ditto.
- (KJS::dateProtoFuncToGMTString): Ditto.
-
- * kjs/ErrorPrototype.cpp:
- (KJS::ErrorPrototype::ErrorPrototype): Ditto.
- (KJS::errorProtoFuncToString): Ditto.
-
- * kjs/JSGlobalData.h: Added SmallStrings.
-
- * kjs/JSString.cpp:
- (KJS::jsString): Eliminated the overload that takes a const char*.
- Added code to use SmallStrings to get strings of small sizes rather
- than creating a new JSString every time.
- (KJS::jsSubstring): Added. Used when creating a string from a substring
- to avoid creating a JSString in cases where the substring will end up
- empty or as one character.
- (KJS::jsOwnedString): Added the same code as in jsString.
-
- * kjs/JSString.h: Added new functions jsEmptyString, jsSingleCharacterString,
- jsSingleCharacterSubstring, jsSubstring, and jsNontrivialString for various
- cases where we want to create JSString, and want special handling for small
- strings.
- (KJS::JSString::JSString): Added an overload that takes a PassRefPtr of
- a UString::Rep so you don't have to construct a UString; PassRefPtr can be
- more efficient.
- (KJS::jsEmptyString): Added.
- (KJS::jsSingleCharacterString): Added.
- (KJS::jsSingleCharacterSubstring): Added.
- (KJS::jsNontrivialString): Added.
- (KJS::JSString::getIndex): Adopted jsSingleCharacterSubstring.
- (KJS::JSString::getStringPropertySlot): Ditto.
-
- * kjs/NumberPrototype.cpp:
- (KJS::numberProtoFuncToFixed): Adopted jsNontrivialString.
- (KJS::numberProtoFuncToExponential): Ditto.
- (KJS::numberProtoFuncToPrecision): Ditto.
-
- * kjs/ObjectPrototype.cpp:
- (KJS::objectProtoFuncToLocaleString): Adopted toThisJSString.
- (KJS::objectProtoFuncToString): Adopted jsNontrivialString.
-
- * kjs/RegExpConstructor.cpp: Separated the lastInput value that's used
- with the lastOvector to return matches from the input value that can be
- changed via JavaScript. They will be equal in many cases, but not all.
- (KJS::RegExpConstructor::performMatch): Set input.
- (KJS::RegExpMatchesArray::RegExpMatchesArray): Ditto.
- (KJS::RegExpMatchesArray::fillArrayInstance): Adopted jsSubstring. Also,
- use input rather than lastInput in the appropriate place.
- (KJS::RegExpConstructor::getBackref): Adopted jsSubstring and jsEmptyString.
- Added code to handle the case where there is no backref -- before this
- depended on range checking in UString::substr which is not present in
- jsSubstring.
- (KJS::RegExpConstructor::getLastParen): Ditto.
- (KJS::RegExpConstructor::getLeftContext): Ditto.
- (KJS::RegExpConstructor::getRightContext): Ditto.
- (KJS::RegExpConstructor::getValueProperty): Use input rather than lastInput.
- Also adopt jsEmptyString.
- (KJS::RegExpConstructor::putValueProperty): Ditto.
- (KJS::RegExpConstructor::input): Ditto.
-
- * kjs/RegExpPrototype.cpp:
- (KJS::regExpProtoFuncToString): Adopt jsNonTrivialString. Also changed to
- use UString::append to append single characters rather than using += and
- a C-style string.
-
- * kjs/SmallStrings.cpp: Added.
- (KJS::SmallStringsStorage::SmallStringsStorage): Construct the
- buffer and UString::Rep for all 256 single-character strings for
- the U+0000 through U+00FF. This covers all the values used in
- the base64 test as well as most values seen elsewhere on the web
- as well. It's possible that later we might fix this to only work
- for U+0000 through U+007F but the others are used quite a bit in
- the current version of the base64 test.
- (KJS::SmallStringsStorage::~SmallStringsStorage): Free memory.
- (KJS::SmallStrings::SmallStrings): Create a set of small strings,
- initially not created; created later when they are used.
- (KJS::SmallStrings::~SmallStrings): Deallocate. Not left compiler
- generated because the SmallStringsStorage class's destructor needs
- to be visible.
- (KJS::SmallStrings::mark): Mark all the strings.
- (KJS::SmallStrings::createEmptyString): Create a cell for the
- empty string. Called only the first time.
- (KJS::SmallStrings::createSingleCharacterString): Create a cell
- for one of the single-character strings. Called only the first time.
- * kjs/SmallStrings.h: Added.
-
- * kjs/StringConstructor.cpp:
- (KJS::stringFromCharCodeSlowCase): Factored out of strinFromCharCode.
- Only used for cases where the caller does not pass exactly one argument.
- (KJS::stringFromCharCode): Adopted jsSingleCharacterString.
- (KJS::callStringConstructor): Adopted jsEmptyString.
-
- * kjs/StringObject.cpp:
- (KJS::StringObject::StringObject): Adopted jsEmptyString.
-
- * kjs/StringPrototype.cpp:
- (KJS::stringProtoFuncReplace): Adopted jsSubstring.
- (KJS::stringProtoFuncCharAt): Adopted jsEmptyString and
- jsSingleCharacterSubstring and also added a special case when the
- index is an immediate number to avoid conversion to and from floating
- point, since that's the common case.
- (KJS::stringProtoFuncCharCodeAt): Ditto.
- (KJS::stringProtoFuncMatch): Adopted jsSubstring and jsEmptyString.
- (KJS::stringProtoFuncSlice): Adopted jsSubstring and
- jsSingleCharacterSubstring. Also got rid of some unneeded locals and
- removed unneeded code to set the length property of the array, since it
- is automatically updated as values are added to the array.
- (KJS::stringProtoFuncSplit): Adopted jsEmptyString.
- (KJS::stringProtoFuncSubstr): Adopted jsSubstring.
- (KJS::stringProtoFuncSubstring): Ditto.
-
- * kjs/collector.cpp:
- (KJS::Heap::collect): Added a call to mark SmallStrings.
-
- * kjs/ustring.cpp:
- (KJS::UString::expandedSize): Made this a static member function since
- it doesn't need to look at any data members.
- (KJS::UString::expandCapacity): Use a non-inline function, makeNull, to
- set the rep to null in failure cases. This avoids adding a PIC branch for
- the normal case when there is no failure.
- (KJS::UString::expandPreCapacity): Ditto.
- (KJS::UString::UString): Ditto.
- (KJS::concatenate): Refactored the concatenation constructor into this
- separate function. Calling the concatenation constructor was leading to
- an extra branch because of the in-charge vs. not-in-charge versions not
- both being inlined, and this was showing up as nearly 1% on Shark. Also
- added a special case for when the second string is a single character,
- since it's a common idiom to build up a string that way and we can do
- things much more quickly, without involving memcpy for example. Also
- adopted the non-inline function, nullRep, for the same reason given for
- makeNull above.
- (KJS::UString::append): Adopted makeNull for failure cases.
- (KJS::UString::operator=): Ditto.
- (KJS::UString::toDouble): Added a special case for converting single
- character strings to numbers. We're doing this a ton of times while
- running the base64 test.
- (KJS::operator==): Added special cases so we can compare single-character
- strings without calling memcmp. Later we might want to special case other
- short lengths similarly.
- (KJS::UString::makeNull): Added.
- (KJS::UString::nullRep): Added.
- * kjs/ustring.h: Added declarations for the nullRep and makeNull. Changed
- expandedSize to be a static member function. Added a declaration of the
- concatenate function. Removed the concatenation constructor. Rewrote
- operator+ to use the concatenate function.
-
-2008-08-29 Anders Carlsson <andersca@apple.com>
+2009-06-23 Oliver Hunt <oliver@apple.com>
- Build fix.
+ Reviewed by Gavin Barraclough.
- * VM/Machine.cpp:
- (KJS::getCPUTime):
+ <rdar://problem/6992806> REGRESSION: Enumeration can skip new properties in cases of prototypes that have more than 64 (26593)
+ <https://bugs.webkit.org/show_bug.cgi?id=26593>
-2008-08-29 Anders Carlsson <andersca@apple.com>
+ Do not attempt to cache structure chains if they contain a dictionary at any level.
- Reviewed by Darin Adler.
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::tryCachePutByID):
+ (JSC::Interpreter::tryCacheGetByID):
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::tryCachePutByID):
+ * runtime/Structure.cpp:
+ (JSC::Structure::getEnumerablePropertyNames):
+ (JSC::Structure::addPropertyTransition):
+ * runtime/StructureChain.cpp:
+ (JSC::StructureChain::isCacheable):
+ * runtime/StructureChain.h:
- <rdar://problem/6174667>
- When a machine is under heavy load, the Slow Script dialog often comes up many times and just gets in the way
-
- Instead of using clock time, use the CPU time spent executing the current thread when
- determining if the script has been running for too long.
-
- * VM/Machine.cpp:
- (KJS::getCPUTime):
- (KJS::Machine::checkTimeout):
+2009-06-23 Yong Li <yong.li@torchmobile.com>
-2008-08-28 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Reviewed by George Staikos.
- Rubber-stamped by Sam Weinig.
+ https://bugs.webkit.org/show_bug.cgi?id=26654
+ Add the proper export define for the JavaScriptCore API when building for WINCE.
- Change 'term' to 'expr' in variable names to standardize terminology.
-
- * kjs/nodes.cpp:
- (KJS::BinaryOpNode::emitCode):
- (KJS::ReverseBinaryOpNode::emitCode):
- (KJS::ThrowableBinaryOpNode::emitCode):
- * kjs/nodes.h:
- (KJS::BinaryOpNode::BinaryOpNode):
- (KJS::ReverseBinaryOpNode::ReverseBinaryOpNode):
- (KJS::MultNode::):
- (KJS::DivNode::):
- (KJS::ModNode::):
- (KJS::AddNode::):
- (KJS::SubNode::):
- (KJS::LeftShiftNode::):
- (KJS::RightShiftNode::):
- (KJS::UnsignedRightShiftNode::):
- (KJS::LessNode::):
- (KJS::GreaterNode::):
- (KJS::LessEqNode::):
- (KJS::GreaterEqNode::):
- (KJS::ThrowableBinaryOpNode::):
- (KJS::InstanceOfNode::):
- (KJS::InNode::):
- (KJS::EqualNode::):
- (KJS::NotEqualNode::):
- (KJS::StrictEqualNode::):
- (KJS::NotStrictEqualNode::):
- (KJS::BitAndNode::):
- (KJS::BitOrNode::):
- (KJS::BitXOrNode::):
- * kjs/nodes2string.cpp:
- (KJS::MultNode::streamTo):
- (KJS::DivNode::streamTo):
- (KJS::ModNode::streamTo):
- (KJS::AddNode::streamTo):
- (KJS::SubNode::streamTo):
- (KJS::LeftShiftNode::streamTo):
- (KJS::RightShiftNode::streamTo):
- (KJS::UnsignedRightShiftNode::streamTo):
- (KJS::LessNode::streamTo):
- (KJS::GreaterNode::streamTo):
- (KJS::LessEqNode::streamTo):
- (KJS::GreaterEqNode::streamTo):
- (KJS::InstanceOfNode::streamTo):
- (KJS::InNode::streamTo):
- (KJS::EqualNode::streamTo):
- (KJS::NotEqualNode::streamTo):
- (KJS::StrictEqualNode::streamTo):
- (KJS::NotStrictEqualNode::streamTo):
- (KJS::BitAndNode::streamTo):
- (KJS::BitXOrNode::streamTo):
- (KJS::BitOrNode::streamTo):
-
-2008-08-28 Alp Toker <alp@nuanti.com>
-
- GTK+ dist/build fix. List newly added header files.
+ * API/JSBase.h:
- * GNUmakefile.am:
+2009-06-23 Joe Mason <joe.mason@torchmobile.com>
-2008-08-28 Sam Weinig <sam@webkit.org>
+ Reviewed by Adam Treat.
- Reviewed by Oliver Hunt.
+ Authors: Yong Li <yong.li@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com>
- Change to throw a ReferenceError at runtime instead of a ParseError
- at parse time, when the left hand side expression of a for-in statement
- is not an lvalue.
+ https://bugs.webkit.org/show_bug.cgi?id=26611
+ Implement currentThreadStackBase on WINCE by adding a global,
+ g_stackBase, which must be set to the address of a local variable
+ by the caller before calling any WebKit function that invokes JSC.
- * kjs/grammar.y:
- * kjs/nodes.cpp:
- (KJS::ForInNode::emitCode):
+ * runtime/Collector.cpp:
+ (JSC::isPageWritable):
+ (JSC::getStackBase):
+ Starts at the top of the stack and returns the entire range of
+ consecutive writable pages as an estimate of the actual stack.
+ This will be much bigger than the actual stack range, so some
+ dead objects can't be collected, but it guarantees live objects
+ aren't collected prematurely.
-2008-08-28 Alexey Proskuryakov <ap@webkit.org>
+ (JSC::currentThreadStackBase):
+ On WinCE, returns g_stackBase if set or call getStackBase as a
+ fallback if not.
- Not reviewed, build fix (at least for OpenBSD, posssibly more).
+2009-06-23 Oliver Hunt <oliver@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=20545
- missing #include <unistd.h> in JavaScriptCore/VM/SamplingTool.cpp
+ Reviewed by Alexey Proskuryakov.
- * VM/SamplingTool.cpp: add the missing include.
+ Fix stupid performance problem in the LiteralParser
-2008-08-26 Kevin McCullough <kmccullough@apple.com>
+ The LiteralParser was making a new UString in order to use
+ toDouble, however UString's toDouble allows a much wider range
+ of numberic strings than the LiteralParser accepts, and requires
+ an additional heap allocation or two for the construciton of the
+ UString. To rectify this we just call WTF::dtoa directly using
+ a stack allocated buffer to hold the validated numeric literal.
- Reviewed by Geoff and Cameron.
+ * runtime/LiteralParser.cpp:
+ (JSC::LiteralParser::Lexer::lexNumber):
+ (JSC::LiteralParser::parse):
+ * runtime/LiteralParser.h:
- <rdar://problem/6174603> Hitting assertion in Register::codeBlock when
- loading facebook (20516).
+2009-06-22 Oliver Hunt <oliver@apple.com>
- - This was a result of my line numbers change. After a host function is
- called the stack does not get reset correctly.
- - Oddly this also appears to be a slight speedup on SunSpider.
+ Reviewed by Alexey Proskuryakov.
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
+ Bug 26640: JSON.stringify needs to special case Boolean objects
+ <https://bugs.webkit.org/show_bug.cgi?id=26640>
-2008-08-26 Alexey Proskuryakov <ap@webkit.org>
+ Add special case handling of the Boolean object so we match current
+ ES5 errata.
- Reviewed by Geoff and Tim.
+ * runtime/JSONObject.cpp:
+ (JSC::unwrapBoxedPrimitive): renamed from unwrapNumberOrString
+ (JSC::gap):
+ (JSC::Stringifier::appendStringifiedValue):
- Export new API methods.
+2009-06-22 Oliver Hunt <oliver@apple.com>
- * JavaScriptCore.exp:
+ Reviewed by Darin Adler.
-2008-08-25 Kevin McCullough <kmccullough@apple.com>
+ Bug 26591: Support revivers in JSON.parse
+ <https://bugs.webkit.org/show_bug.cgi?id=26591>
- Reviewed by Geoff, Tim and Mark.
+ Add reviver support to JSON.parse. This completes the JSON object.
- <rdar://problem/6150623> JSProfiler: It would be nice if the profiles
- in the console said what file and line number they came from
- - Lay the foundation for getting line numbers and other data from the
- JavaScript engine. With the cleanup in kjs/ExecState this is actually
- a slight performance improvement.
+ * runtime/JSONObject.cpp:
+ (JSC::Walker::Walker):
+ (JSC::Walker::callReviver):
+ (JSC::Walker::walk):
+ (JSC::JSONProtoFuncParse):
- * JavaScriptCore.exp: Export retrieveLastCaller() for WebCore.
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * VM/Machine.cpp: Now Host and JS functions set a call frame on the
- exec state, so this and the profiler code were pulled out of the
- branches.
- (KJS::Machine::privateExecute):
- (KJS::Machine::retrieveLastCaller): This get's the lineNumber, sourceID
- and sourceURL for the previously called function.
- * VM/Machine.h:
- * kjs/ExecState.cpp: Remove references to JSFunction since it's not used
- anywhere.
- * kjs/ExecState.h:
-
-2008-08-25 Alexey Proskuryakov <ap@webkit.org>
+2009-06-21 Oliver Hunt <oliver@apple.com>
Reviewed by Darin Adler.
- Ensure that JSGlobalContextRelease() performs garbage collection, even if there are other
- contexts in the current context's group.
-
- This is only really necessary when the last reference is released, but there is no way to
- determine that, and no harm in collecting slightly more often.
-
- * API/JSContextRef.cpp: (JSGlobalContextRelease): Explicitly collect the heap if it is not
- being destroyed.
-
-2008-08-24 Cameron Zwarich <cwzwarich@uwaterloo.ca>
-
- Reviewed by Oliver Hunt.
+ Bug 26592: Support standard toJSON functions
+ <https://bugs.webkit.org/show_bug.cgi?id=26592>
- Bug 20093: JSC shell does not clear exceptions after it executes toString on an expression
- <https://bugs.webkit.org/show_bug.cgi?id=20093>
+ Add support for the standard Date.toJSON function.
- Clear exceptions after evaluating any code in the JSC shell. We do not
- report exceptions that are caused by calling toString on the final
- valued, but at least we avoid incorrect behaviour.
+ * runtime/DatePrototype.cpp:
+ (JSC::dateProtoFuncToJSON):
- Also, print any exceptions that occurred while evaluating code at the
- interactive prompt, not just while evaluating code from a file.
+2009-06-21 Oliver Hunt <oliver@apple.com>
- * kjs/Shell.cpp:
- (runWithScripts):
- (runInteractive):
+ Reviewed by Sam Weinig.
-2008-08-24 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Bug 26594: JSC needs to support Date.toISOString
+ <https://bugs.webkit.org/show_bug.cgi?id=26594>
- Reviewed by Oliver.
+ Add support for Date.toISOString.
- Remove an unnecessary RefPtr to a RegisterID.
+ * runtime/DatePrototype.cpp:
+ (JSC::dateProtoFuncToISOString):
- * kjs/nodes.cpp:
- (KJS::DeleteBracketNode::emitCode):
+2009-06-21 Oliver Hunt <oliver@apple.com>
-2008-08-24 Mark Rowe <mrowe@apple.com>
+ Remove dead code.
- Reviewed by Oliver Hunt.
+ * runtime/LiteralParser.cpp:
+ (JSC::LiteralParser::parse):
- Use the correct version number for when JSGlobalContextCreate was introduced.
+2009-06-21 Oliver Hunt <oliver@apple.com>
- * API/JSContextRef.h:
+ Reviewed by Darin Adler and Cameron Zwarich.
-2008-08-23 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Bug 26587: Support JSON.parse
+ <https://bugs.webkit.org/show_bug.cgi?id=26587>
- Rubber-stamped by Mark Rowe.
+ Extend the LiteralParser to support the full strict JSON
+ grammar, fix a few places where the grammar was incorrectly
+ lenient. Doesn't yet support the JSON.parse reviver function
+ but that does not block the JSON.parse functionality itself.
- Remove modelines.
+ * interpreter/Interpreter.cpp:
+ (JSC::Interpreter::callEval):
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncEval):
+ * runtime/JSONObject.cpp:
+ (JSC::JSONProtoFuncParse):
+ * runtime/LiteralParser.cpp:
+ (JSC::LiteralParser::Lexer::lex):
+ (JSC::isSafeStringCharacter):
+ (JSC::LiteralParser::Lexer::lexString):
+ (JSC::LiteralParser::parse):
+ * runtime/LiteralParser.h:
+ (JSC::LiteralParser::LiteralParser):
+ (JSC::LiteralParser::tryJSONParse):
+ (JSC::LiteralParser::):
+ (JSC::LiteralParser::Lexer::Lexer):
+
+2009-06-21 David Levin <levin@chromium.org>
+
+ Reviewed by NOBODY (speculative build fix for windows).
+
+ Simply removed some whitespace form this file to make windows build wtf and
+ hopefully copy the new MessageQueque.h so that WebCore picks it up.
- * API/APICast.h:
- * API/JSBase.cpp:
- * API/JSCallbackConstructor.cpp:
- * API/JSCallbackConstructor.h:
- * API/JSCallbackFunction.cpp:
- * API/JSCallbackFunction.h:
- * API/JSCallbackObject.cpp:
- * API/JSCallbackObject.h:
- * API/JSCallbackObjectFunctions.h:
- * API/JSClassRef.cpp:
- * API/JSContextRef.cpp:
- * API/JSObjectRef.cpp:
- * API/JSProfilerPrivate.cpp:
- * API/JSStringRef.cpp:
- * API/JSStringRefBSTR.cpp:
- * API/JSStringRefCF.cpp:
- * API/JSValueRef.cpp:
- * API/tests/JSNode.c:
- * API/tests/JSNode.h:
- * API/tests/JSNodeList.c:
- * API/tests/JSNodeList.h:
- * API/tests/Node.c:
- * API/tests/Node.h:
- * API/tests/NodeList.c:
- * API/tests/NodeList.h:
- * API/tests/minidom.c:
- * API/tests/minidom.js:
- * API/tests/testapi.c:
- * API/tests/testapi.js:
- * JavaScriptCore.pro:
- * kjs/FunctionConstructor.h:
- * kjs/FunctionPrototype.h:
- * kjs/JSArray.h:
- * kjs/JSString.h:
- * kjs/JSWrapperObject.cpp:
- * kjs/NumberConstructor.h:
- * kjs/NumberObject.h:
- * kjs/NumberPrototype.h:
- * kjs/lexer.h:
- * kjs/lookup.h:
- * wtf/Assertions.cpp:
- * wtf/Assertions.h:
- * wtf/HashCountedSet.h:
- * wtf/HashFunctions.h:
- * wtf/HashIterators.h:
- * wtf/HashMap.h:
- * wtf/HashSet.h:
- * wtf/HashTable.h:
- * wtf/HashTraits.h:
- * wtf/ListHashSet.h:
- * wtf/ListRefPtr.h:
- * wtf/Noncopyable.h:
- * wtf/OwnArrayPtr.h:
- * wtf/OwnPtr.h:
- * wtf/PassRefPtr.h:
- * wtf/Platform.h:
- * wtf/RefPtr.h:
- * wtf/RefPtrHashMap.h:
- * wtf/RetainPtr.h:
- * wtf/UnusedParam.h:
- * wtf/Vector.h:
- * wtf/VectorTraits.h:
- * wtf/unicode/Unicode.h:
- * wtf/unicode/icu/UnicodeIcu.h:
+ * wtf/Assertions.cpp:
-2008-08-22 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+2009-06-21 Drew Wilson <atwilson@google.com>
- Reviewed by Oliver.
+ Reviewed by David Levin.
- Some cleanup to match our coding style.
+ <https://bugs.webkit.org/show_bug.cgi?id=25043>
+ Added support for multi-threaded MessagePorts.
- * VM/CodeGenerator.h:
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * kjs/ExecState.cpp:
- * kjs/ExecState.h:
- * kjs/completion.h:
- * kjs/identifier.cpp:
- (KJS::Identifier::equal):
- (KJS::CStringTranslator::hash):
- (KJS::CStringTranslator::equal):
- (KJS::CStringTranslator::translate):
- (KJS::UCharBufferTranslator::equal):
- (KJS::UCharBufferTranslator::translate):
- (KJS::Identifier::remove):
- * kjs/operations.h:
+ * wtf/MessageQueue.h:
+ (WTF::::appendAndCheckEmpty):
+ Added API to test whether the queue was empty before adding an element.
+
+2009-06-20 David D. Kilzer <ddkilzer@webkit.org>
-2008-08-20 Alexey Proskuryakov <ap@webkit.org>
+ Fix namespace comment in SegmentedVector.h
- Windows build fix.
+ * wtf/SegmentedVector.h: Updated namespace comment to reflect
+ new namespace after r44897.
- * API/WebKitAvailability.h: Define DEPRECATED_ATTRIBUTE.
+2009-06-20 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
-2008-08-19 Alexey Proskuryakov <ap@webkit.org>
+ Bug 24986: ARM JIT port
+ <https://bugs.webkit.org/show_bug.cgi?id=24986>
- Reviewed by Geoff Garen.
+ Reviewed by Oliver Hunt.
- Bring back shared JSGlobalData and implicit locking, because too many clients rely on it.
+ An Iterator added for SegmentedVector. Currently
+ only the pre ++ operator is supported.
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::~JSGlobalData):
- (KJS::JSGlobalData::JSGlobalData): Re-add shared instance.
- (KJS::JSGlobalData::sharedInstanceExists): Ditto.
- (KJS::JSGlobalData::sharedInstance): Ditto.
- (KJS::JSGlobalData::sharedInstanceInternal): Ditto.
+ * wtf/SegmentedVector.h:
+ (WTF::SegmentedVectorIterator::~SegmentedVectorIterator):
+ (WTF::SegmentedVectorIterator::operator*):
+ (WTF::SegmentedVectorIterator::operator->):
+ (WTF::SegmentedVectorIterator::operator++):
+ (WTF::SegmentedVectorIterator::operator==):
+ (WTF::SegmentedVectorIterator::operator!=):
+ (WTF::SegmentedVectorIterator::operator=):
+ (WTF::SegmentedVectorIterator::SegmentedVectorIterator):
+ (WTF::SegmentedVector::alloc):
+ (WTF::SegmentedVector::begin):
+ (WTF::SegmentedVector::end):
- * API/JSContextRef.h: Deprecated JSGlobalContextCreate(). Added a very conservative
- description of its threading model (nothing is allowed).
+2009-06-20 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
- * API/JSContextRef.cpp:
- (JSGlobalContextCreate): Use shared JSGlobalData.
- (JSGlobalContextCreateInGroup): Support passing NULL group to request a unique one.
- (JSGlobalContextRetain): Added back locking.
- (JSGlobalContextRelease): Ditto.
- (JSContextGetGlobalObject): Ditto.
+ Bug 24986: ARM JIT port
+ <https://bugs.webkit.org/show_bug.cgi?id=24986>
- * API/tests/minidom.c: (main):
- * API/tests/testapi.c: (main):
- Switched to JSGlobalContextCreateInGroup() to avoid deprecation warnings.
+ Reviewed by Oliver Hunt.
- * JavaScriptCore.exp: Re-added JSLock methods. Added JSGlobalContextCreateInGroup (d'oh!).
+ Move SegmentedVector to /wtf subdirectory
+ and change "namespace JSC" to "namespace WTF"
- * API/JSBase.cpp:
- (JSEvaluateScript):
- (JSCheckScriptSyntax):
- (JSGarbageCollect):
- * API/JSCallbackConstructor.cpp:
- (KJS::constructJSCallback):
- * API/JSCallbackFunction.cpp:
- (KJS::JSCallbackFunction::call):
- * API/JSCallbackObjectFunctions.h:
- (KJS::::init):
- (KJS::::getOwnPropertySlot):
- (KJS::::put):
- (KJS::::deleteProperty):
- (KJS::::construct):
- (KJS::::hasInstance):
- (KJS::::call):
- (KJS::::getPropertyNames):
- (KJS::::toNumber):
- (KJS::::toString):
- (KJS::::staticValueGetter):
- (KJS::::callbackGetter):
- * API/JSObjectRef.cpp:
- (JSObjectMake):
- (JSObjectMakeFunctionWithCallback):
- (JSObjectMakeConstructor):
- (JSObjectMakeFunction):
- (JSObjectHasProperty):
- (JSObjectGetProperty):
- (JSObjectSetProperty):
- (JSObjectGetPropertyAtIndex):
- (JSObjectSetPropertyAtIndex):
- (JSObjectDeleteProperty):
- (JSObjectCallAsFunction):
- (JSObjectCallAsConstructor):
- (JSObjectCopyPropertyNames):
- (JSPropertyNameArrayRelease):
- (JSPropertyNameAccumulatorAddName):
- * API/JSValueRef.cpp:
- (JSValueIsEqual):
- (JSValueIsInstanceOfConstructor):
- (JSValueMakeNumber):
- (JSValueMakeString):
- (JSValueToNumber):
- (JSValueToStringCopy):
- (JSValueToObject):
- (JSValueProtect):
- (JSValueUnprotect):
- * ForwardingHeaders/JavaScriptCore/JSLock.h: Added.
- * GNUmakefile.am:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- * kjs/AllInOneFile.cpp:
- * kjs/JSGlobalData.h:
- * kjs/JSGlobalObject.cpp:
- (KJS::JSGlobalObject::~JSGlobalObject):
- (KJS::JSGlobalObject::init):
- * kjs/JSLock.cpp: Added.
- (KJS::createJSLockCount):
- (KJS::JSLock::lockCount):
- (KJS::setLockCount):
- (KJS::JSLock::JSLock):
- (KJS::JSLock::lock):
- (KJS::JSLock::unlock):
- (KJS::JSLock::currentThreadIsHoldingLock):
- (KJS::JSLock::DropAllLocks::DropAllLocks):
- (KJS::JSLock::DropAllLocks::~DropAllLocks):
- * kjs/JSLock.h: Added.
- (KJS::JSLock::JSLock):
- (KJS::JSLock::~JSLock):
- * kjs/Shell.cpp:
- (functionGC):
- (jscmain):
- * kjs/collector.cpp:
- (KJS::Heap::~Heap):
- (KJS::Heap::heapAllocate):
- (KJS::Heap::setGCProtectNeedsLocking):
- (KJS::Heap::protect):
- (KJS::Heap::unprotect):
- (KJS::Heap::collect):
- * kjs/identifier.cpp:
- * kjs/interpreter.cpp:
- (KJS::Interpreter::checkSyntax):
- (KJS::Interpreter::evaluate):
- Re-added implicit locking.
-
-2008-08-19 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim and Mark.
-
- Implement DTrace hooks for dashcode and instruments.
-
- * API/JSProfilerPrivate.cpp: Added. Expose SPI so that profiling can be
- turned on from a client. The DTrace probes were added within the
- profiler mechanism for performance reasons so the profiler must be
- started to enable tracing.
- (JSStartProfiling):
- (JSEndProfiling):
- * API/JSProfilerPrivate.h: Added. Ditto.
- * JavaScriptCore.exp: Exposing the start/stop methods to clients.
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * kjs/Tracing.d: Define the DTrace probes.
- * kjs/Tracing.h: Ditto.
- * profiler/ProfileGenerator.cpp: Implement the DTrace probes in the
- profiler.
- (KJS::ProfileGenerator::willExecute):
- (KJS::ProfileGenerator::didExecute):
+ Additional build file updates by David Kilzer.
-2008-08-19 Steve Falkenburg <sfalken@apple.com>
+ * GNUmakefile.am: Updated path to SegmentedVector.h.
+ * JavaScriptCore.order: Updated SegmentedVector namespace from
+ JSC to WTF in mangled C++ method name.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
+ Removed reference to bytecompiler\SegmentedVector.h.
+ * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added reference to
+ wtf\SegmentedVector.h.
+ * JavaScriptCore.xcodeproj/project.pbxproj: Moved
+ SegmentedVector.h definition from bytecompiler subdirectory to
+ wtf subdirectory.
+ * bytecompiler/BytecodeGenerator.h: Updated #include path to
+ SegmentedVector.h and prepended WTF:: namespace to its use.
+ * parser/Lexer.h: Ditto.
+ * wtf/SegmentedVector.h: Renamed from JavaScriptCore/bytecompiler/SegmentedVector.h.
+ (WTF::SegmentedVector::SegmentedVector):
+ (WTF::SegmentedVector::~SegmentedVector):
+ (WTF::SegmentedVector::size):
+ (WTF::SegmentedVector::at):
+ (WTF::SegmentedVector::operator[]):
+ (WTF::SegmentedVector::last):
+ (WTF::SegmentedVector::append):
+ (WTF::SegmentedVector::removeLast):
+ (WTF::SegmentedVector::grow):
+ (WTF::SegmentedVector::clear):
+ (WTF::SegmentedVector::deleteAllSegments):
+ (WTF::SegmentedVector::segmentExistsFor):
+ (WTF::SegmentedVector::segmentFor):
+ (WTF::SegmentedVector::subscriptFor):
+ (WTF::SegmentedVector::ensureSegmentsFor):
+ (WTF::SegmentedVector::ensureSegment):
+
+2009-06-19 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by NOBODY (build fix take 2 - rename FIELD_OFFSET to something that doesn't conflict with winnt.h).
- Build fix.
-
- * kjs/operations.cpp:
- (KJS::equal):
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompile):
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ (JSC::JIT::emitGetVariableObjectRegister):
+ (JSC::JIT::emitPutVariableObjectRegister):
+ * jit/JIT.h:
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_rshift):
+ (JSC::JIT::emitSlow_op_jnless):
+ (JSC::JIT::emitSlow_op_jnlesseq):
+ (JSC::JIT::compileBinaryArithOp):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileOpCallInitializeCallFrame):
+ (JSC::JIT::compileOpCall):
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::restoreArgumentReference):
+ (JSC::JIT::checkStructure):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_instanceof):
+ (JSC::JIT::emit_op_get_scoped_var):
+ (JSC::JIT::emit_op_put_scoped_var):
+ (JSC::JIT::emit_op_construct_verify):
+ (JSC::JIT::emit_op_resolve_global):
+ (JSC::JIT::emit_op_jeq_null):
+ (JSC::JIT::emit_op_jneq_null):
+ (JSC::JIT::emit_op_to_jsnumber):
+ (JSC::JIT::emit_op_catch):
+ (JSC::JIT::emit_op_eq_null):
+ (JSC::JIT::emit_op_neq_null):
+ (JSC::JIT::emit_op_convert_this):
+ (JSC::JIT::emit_op_profile_will_call):
+ (JSC::JIT::emit_op_profile_did_call):
+ (JSC::JIT::emitSlow_op_get_by_val):
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_get_by_val):
+ (JSC::JIT::emit_op_put_by_val):
+ (JSC::JIT::emit_op_method_check):
+ (JSC::JIT::compileGetByIdHotPath):
+ (JSC::JIT::emit_op_put_by_id):
+ (JSC::JIT::compilePutDirectOffset):
+ (JSC::JIT::compileGetDirectOffset):
+ (JSC::JIT::privateCompilePutByIdTransition):
+ (JSC::JIT::privateCompilePatchGetArrayLength):
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::JITThunks):
-2008-08-18 Timothy Hatcher <timothy@apple.com>
+2009-06-19 Gavin Barraclough <barraclough@apple.com>
- Fix an assertion when generating a heavy profile because the
- empty value and deleted value of CallIdentifier where equal.
+ Reviewed by NOBODY (Windows build fix).
- https://bugs.webkit.org/show_bug.cgi?id=20439
+ * jit/JIT.h:
+ * jit/JITInlineMethods.h:
- Reviewed by Dan Bernstein.
+2009-06-19 Gabor Loki <loki@inf.u-szeged.hu>
- * profiler/CallIdentifier.h: Make the emptyValue for CallIdentifier
- use empty strings for URL and function name.
-
-2008-08-12 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff.
-
- - eliminate JSValue::type()
-
- This will make it slightly easier to change the JSImmediate design without
- having to touch so many call sites.
-
- SunSpider says this change is a wash (looked like a slight speedup, but not
- statistically significant).
-
- * API/JSStringRef.cpp: Removed include of JSType.h.
- * API/JSValueRef.cpp: Removed include of JSType.h.
- (JSValueGetType): Replaced use of JSValue::type() with
- JSValue::is functions.
-
- * JavaScriptCore.exp: Updated.
-
- * VM/JSPropertyNameIterator.cpp: Removed type() implementation.
- (KJS::JSPropertyNameIterator::toPrimitive): Changed to take
- PreferredPrimitiveType argument instead of JSType.
- * VM/JSPropertyNameIterator.h: Ditto.
-
- * VM/Machine.cpp:
- (KJS::fastIsNumber): Updated for name change.
- (KJS::fastToInt32): Ditto.
- (KJS::fastToUInt32): Ditto.
- (KJS::jsAddSlowCase): Updated toPrimitive caller for change from
- JSType to PreferredPrimitiveType.
- (KJS::jsAdd): Replaced calls to JSValue::type() with calls to
- JSValue::isString().
- (KJS::jsTypeStringForValue): Replaced calls to JSValue::type()
- with multiple calls to JSValue::is -- we could make this a
- virtual function instead if we want to have faster performance.
- (KJS::Machine::privateExecute): Renamed JSImmediate::toTruncatedUInt32
- to JSImmediate::getTruncatedUInt32 for consistency with other functions.
- Changed two calls of JSValue::type() to JSValue::isString().
-
- * kjs/GetterSetter.cpp:
- (KJS::GetterSetter::toPrimitive): Changed to take
- PreferredPrimitiveType argument instead of JSType.
- (KJS::GetterSetter::isGetterSetter): Added.
- * kjs/GetterSetter.h:
-
- * kjs/JSCell.cpp:
- (KJS::JSCell::isString): Added.
- (KJS::JSCell::isGetterSetter): Added.
- (KJS::JSCell::isObject): Added.
-
- * kjs/JSCell.h: Eliminated type function. Added isGetterSetter.
- Made isString and isObject virtual. Changed toPrimitive to take
- PreferredPrimitiveType argument instead of JSType.
- (KJS::JSCell::isNumber): Use Heap::isNumber for faster performance.
- (KJS::JSValue::isGetterSetter): Added.
- (KJS::JSValue::toPrimitive): Changed to take
- PreferredPrimitiveType argument instead of JSType.
-
- * kjs/JSImmediate.h: Removed JSValue::type() and replaced
- JSValue::toTruncatedUInt32 with JSValue::getTruncatedUInt32.
- (KJS::JSImmediate::isEitherImmediate): Added.
-
- * kjs/JSNotAnObject.cpp:
- (KJS::JSNotAnObject::toPrimitive): Changed to take
- PreferredPrimitiveType argument instead of JSType.
- * kjs/JSNotAnObject.h: Ditto.
- * kjs/JSNumberCell.cpp:
- (KJS::JSNumberCell::toPrimitive): Ditto.
- * kjs/JSNumberCell.h:
- (KJS::JSNumberCell::toInt32): Renamed from fastToInt32. There's no
- other "slow" version of this once you have a JSNumberCell, so there's
- no need for "fast" in the name. It's a feature that this hides the
- base class toInt32, which does the same job less efficiently (and has
- an additional ExecState argument).
- (KJS::JSNumberCell::toUInt32): Ditto.
-
- * kjs/JSObject.cpp:
- (KJS::callDefaultValueFunction): Use isGetterSetter instead of type.
- (KJS::JSObject::getPrimitiveNumber): Use PreferredPrimitiveType.
- (KJS::JSObject::defaultValue): Ditto.
- (KJS::JSObject::defineGetter): Use isGetterSetter.
- (KJS::JSObject::defineSetter): Ditto.
- (KJS::JSObject::lookupGetter): Ditto.
- (KJS::JSObject::lookupSetter): Ditto.
- (KJS::JSObject::toNumber): Use PreferredPrimitiveType.
- (KJS::JSObject::toString): Ditto.
- (KJS::JSObject::isObject): Added.
-
- * kjs/JSObject.h:
- (KJS::JSObject::inherits): Call the isObject from JSCell; it's now
- hidden by our override of isObject.
- (KJS::JSObject::getOwnPropertySlotForWrite): Use isGetterSetter
- instead of type.
- (KJS::JSObject::getOwnPropertySlot): Ditto.
- (KJS::JSObject::toPrimitive): Use PreferredPrimitiveType.
-
- * kjs/JSString.cpp:
- (KJS::JSString::toPrimitive): Use PreferredPrimitiveType.
- (KJS::JSString::isString): Added.
- * kjs/JSString.h: Ditto.
-
- * kjs/JSValue.h: Removed type(), added isGetterSetter(). Added
- PreferredPrimitiveType enum and used it as the argument for the
- toPrimitive function.
- (KJS::JSValue::getBoolean): Simplified a bit an removed a branch.
-
- * kjs/collector.cpp:
- (KJS::typeName): Changed to use JSCell::is functions instead of
- calling JSCell::type.
-
- * kjs/collector.h:
- (KJS::Heap::isNumber): Renamed from fastIsNumber.
-
- * kjs/nodes.h: Added now-needed include of JSType, since the type
- is used here to record types of values in the tree.
-
- * kjs/operations.cpp:
- (KJS::equal): Rewrote to no longer depend on type().
- (KJS::strictEqual): Ditto.
-
-2008-08-18 Kevin McCullough <kmccullough@apple.com>
-
- Reviewed by Tim.
-
- If there are no nodes in a profile all the time should be attributed to
- (idle)
-
- * profiler/Profile.cpp: If ther are no nodes make sure we still process
- the head.
- (KJS::Profile::forEach):
- * profiler/ProfileGenerator.cpp: Remove some useless code.
- (KJS::ProfileGenerator::stopProfiling):
-
-2008-08-18 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Maciej.
-
- Make JSGlobalContextRetain/Release actually work.
+ Reviewed by Gavin Barraclough.
- * API/JSContextRef.cpp:
- (JSGlobalContextRetain):
- (JSGlobalContextRelease):
- Ref/deref global data to give checking for globalData.refCount() some sense.
+ Reorganize ARM architecture specific macros.
+ Use PLATFORM_ARM_ARCH(7) instead of PLATFORM(ARM_V7).
- * API/tests/testapi.c: (main): Added a test for this bug.
+ Bug 24986: ARM JIT port
+ <https://bugs.webkit.org/show_bug.cgi?id=24986>
- * kjs/JSGlobalData.cpp:
- (KJS::JSGlobalData::~JSGlobalData):
- While checking for memory leaks, found that JSGlobalData::emptyList has changed to
- a pointer, but it was not destructed, causing a huge leak in run-webkit-tests --threaded.
+ * assembler/ARMv7Assembler.h:
+ * assembler/AbstractMacroAssembler.h:
+ (JSC::AbstractMacroAssembler::Imm32::Imm32):
+ * assembler/MacroAssembler.h:
+ * assembler/MacroAssemblerCodeRef.h:
+ (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
+ * jit/ExecutableAllocator.h:
+ (JSC::ExecutableAllocator::cacheFlush):
+ * jit/JIT.h:
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::restoreArgumentReferenceForTrampoline):
+ * jit/JITStubs.cpp:
+ * jit/JITStubs.h:
+ * wtf/Platform.h:
+ * yarr/RegexJIT.cpp:
+ (JSC::Yarr::RegexGenerator::generateEnter):
+ (JSC::Yarr::RegexGenerator::generateReturn):
-2008-08-17 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+2009-06-19 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Maciej.
+ Reviewed by Oliver Hunt.
- Change the counting of constants so that preincrement and predecrement of
- const local variables are considered unexpected loads.
+ Fix armv7 JIT build issues.
- * kjs/nodes.cpp:
- (KJS::PrefixResolveNode::emitCode):
- * kjs/nodes.h:
- (KJS::ScopeNode::neededConstants):
+ Unfortunate the arm compiler does not like the use of offsetof on JITStackFrame (since it now contains non POD types),
+ and the FIELD_OFFSET macro does not appear constantish enough for it to be happy with its use in COMPILE_ASSERT macros.
-2008-08-17 Oliver Hunt <oliver@apple.com>
+ * Replace offsetofs with FIELD_OFFSETs (safe on C++ objects).
+ * Move COMPILE_ASSERTs defending layout of JITStackFrame structure on armv7 into JITThunks constructor.
- Reviewed by Cameron Zwarich.
+ * jit/JIT.cpp:
+ * jit/JIT.h:
+ * jit/JITInlineMethods.h:
+ (JSC::JIT::restoreArgumentReference):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_catch):
+ * jit/JITStubs.cpp:
+ (JSC::JITThunks::JITThunks):
- <rdar://problem/6150322> In Gmail, a crash occurs at KJS::Machine::privateExecute() when applying list styling to text after a quote had been removed
- <https://bugs.webkit.org/show_bug.cgi?id=20386>
+2009-06-19 Adam Treat <adam.treat@torchmobile.com>
- This crash was caused by "depth()" incorrectly determining the scope depth
- of a 0 depth function without a full scope chain. Because such a function
- would not have an activation the depth function would return the scope depth
- of the parent frame, thus triggering an incorrect unwind. Any subsequent
- look up that walked the scope chain would result in incorrect behaviour,
- leading to a crash or incorrect variable resolution. This can only actually
- happen in try...finally statements as that's the only path that can result in
- the need to unwind the scope chain, but not force the function to need a
- full scope chain.
+ Blind attempt at build fix.
- The fix is simply to check for this case before attempting to walk the scope chain.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- * VM/Machine.cpp:
- (KJS::depth):
- (KJS::Machine::throwException):
+2009-06-19 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
-2008-08-17 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ Reviewed by Oliver Hunt.
- Reviewed by Maciej.
+ Inherits CallIdentifier struct from FastAllocBase because it has been
+ instantiated by 'new' in JavaScriptCore/profiler/CallIdentifier.h:86.
- Bug 20419: Remove op_jless
- <https://bugs.webkit.org/show_bug.cgi?id=20419>
+ * wtf/HashCountedSet.h:
- Remove op_jless, which is rarely used now that we have op_loop_if_less.
+2009-06-19 Adam Treat <adam.treat@torchmobile.com>
- * VM/CodeBlock.cpp:
- (KJS::CodeBlock::dump):
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::emitJumpIfTrue):
- * VM/Machine.cpp:
- (KJS::Machine::privateExecute):
- * VM/Opcode.h:
+ Reviewed by Oliver Hunt.
-2008-08-17 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+ https://bugs.webkit.org/show_bug.cgi?id=26540
+ Modify the test shell to add a new function 'checkSyntax' that will
+ only parse the source instead of executing it. In this way we can test
+ pure parsing performance against some of the larger scripts in the wild.
- Reviewed by Dan Bernstein.
+ * jsc.cpp:
+ (GlobalObject::GlobalObject):
+ (functionCheckSyntax):
- Fix a typo in r35807 that is also causing build failures for
- non-AllInOne builds.
+2009-06-19 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
- * kjs/NumberConstructor.cpp:
+ Reviewed by Darin Adler.
+
+ Inherits HashCountedSet class from FastAllocBase because it has been
+ instantiated by 'new' in JavaScriptCore/runtime/Collector.cpp:1095.
-2008-08-17 Geoffrey Garen <ggaren@apple.com>
+ * wtf/HashCountedSet.h:
- Reviewed by Cameron Zwarich.
+2009-06-19 Yong Li <yong.li@torchmobile.com>
- Made room for a free word in JSCell.
-
- SunSpider says no change.
-
- I changed JSCallbackObjectData, Arguments, JSArray, and RegExpObject to
- store auxiliary data in a secondary structure.
+ Reviewed by George Staikos.
- I changed InternalFunction to store the function's name in the property
- map.
-
- I changed JSGlobalObjectData to use a virtual destructor, so WebCore's
- JSDOMWindowBaseData could inherit from it safely. (It's a strange design
- for JSDOMWindowBase to allocate an object that JSGlobalObject deletes,
- but that's really our only option, given the size constraint.)
-
- I also added a bunch of compile-time ASSERTs, and removed lots of comments
- in JSObject.h because they were often out of date, and they got in the
- way of reading what was actually going on.
-
- Also renamed JSArray::getLength to JSArray::length, to match our style
- guidelines.
+ https://bugs.webkit.org/show_bug.cgi?id=26558
+ Declare these symbols extern for WINCE as they are provided by libce.
-2008-08-16 Geoffrey Garen <ggaren@apple.com>
+ * runtime/DateConstructor.cpp:
+ * runtime/DatePrototype.cpp:
+ (JSC::formatLocaleDate):
- Reviewed by Oliver Hunt.
-
- Sped up property access for array.length and string.length by adding a
- mechanism for returning a temporary value directly instead of returning
- a pointer to a function that retrieves the value.
-
- Also removed some unused cruft from PropertySlot.
-
- SunSpider says 0.5% - 1.2% faster.
+2009-06-19 Oliver Hunt <oliver@apple.com>
- NOTE: This optimization is not a good idea in general, because it's
- actually a pessimization in the case of resolve for assignment,
- and it may get in the way of other optimizations in the future.
-
-2008-08-16 Dan Bernstein <mitz@apple.com>
+ Reviewed by Maciej Stachowiak.
- Reviewed by Geoffrey Garen.
+ <rdar://problem/6988973> ScopeChain leak in interpreter builds
- Disable dead code stripping in debug builds.
+ Move the Scopechain destruction code in JSFunction outside of the ENABLE(JIT)
+ path.
- * Configurations/Base.xcconfig:
- * JavaScriptCore.xcodeproj/project.pbxproj:
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::~JSFunction):
+ * wtf/Platform.h:
-2008-08-15 Mark Rowe <mrowe@apple.com>
+2009-06-19 Yong Li <yong.li@torchmobile.com>
- Reviewed by Oliver Hunt.
+ Reviewed by George Staikos.
- <rdar://problem/6143072> FastMallocZone's enumeration code makes assumptions about handling of remote memory regions that overlap
+ https://bugs.webkit.org/show_bug.cgi?id=26543
+ Windows CE uses 'GetLastError' instead of 'errno.'
- * wtf/FastMalloc.cpp:
- (WTF::TCMalloc_Central_FreeList::enumerateFreeObjects): Don't directly compare pointers mapped into the local process with
- a pointer that has not been mapped. Instead, calculate a local address for the pointer and compare with that.
- (WTF::TCMallocStats::FreeObjectFinder::findFreeObjects): Pass in the remote address of the central free list so that it can
- be used when calculating local addresses.
- (WTF::TCMallocStats::FastMallocZone::enumerate): Ditto.
+ * interpreter/RegisterFile.h:
+ (JSC::RegisterFile::RegisterFile):
+ (JSC::RegisterFile::grow):
-2008-08-15 Mark Rowe <mrowe@apple.com>
+2009-06-19 David Levin <levin@chromium.org>
- Rubber-stamped by Geoff Garen.
+ Reviewed by NOBODY (Windows build fix).
- <rdar://problem/6139914> Please include a _debug version of JavaScriptCore framework
+ Add export for Windows corresponding to OSX export done in r44844.
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
+ * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def:
- * Configurations/Base.xcconfig: Factor out the debug-only settings so that they can shared
- between the Debug configuration and debug Production variant.
- * JavaScriptCore.xcodeproj/project.pbxproj: Enable the debug variant.
+2009-06-18 Oliver Hunt <oliver@apple.com>
-2008-08-15 Mark Rowe <mrowe@apple.com>
+ Reviewed by Gavin "Viceroy of Venezuela" Barraclough.
- Fix the 64-bit build.
+ Bug 26532: Native functions do not correctly unlink from optimised callsites when they're collected
+ <https://bugs.webkit.org/show_bug.cgi?id=26532> <rdar://problem/6625385>
- Add extra cast to avoid warnings about loss of precision when casting from
- JSValue* to an integer type.
+ We need to make sure that each native function instance correctly unlinks any references to it
+ when it is collected. Allowing this to happen required a few changes:
+ * Every native function needs a codeblock to track the link information
+ * To have this codeblock, every function now also needs its own functionbodynode
+ so we no longer get to have a single shared instance.
+ * Identifying a host function is now done by looking for CodeBlock::codeType() == NativeCode
- * kjs/JSImmediate.h:
- (KJS::JSImmediate::intValue):
- (KJS::JSImmediate::uintValue):
+ * JavaScriptCore.exp:
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::CodeBlock):
+ Constructor for NativeCode CodeBlock
+ (JSC::CodeBlock::derefStructures):
+ (JSC::CodeBlock::refStructures):
+ (JSC::CodeBlock::reparseForExceptionInfoIfNecessary):
+ (JSC::CodeBlock::handlerForBytecodeOffset):
+ (JSC::CodeBlock::lineNumberForBytecodeOffset):
+ (JSC::CodeBlock::expressionRangeForBytecodeOffset):
+ (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset):
+ (JSC::CodeBlock::functionRegisterForBytecodeOffset):
+ (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset):
+ (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset):
+ (JSC::CodeBlock::setJITCode):
+ Add assertions to ensure we don't try and use NativeCode CodeBlocks as
+ a normal codeblock.
-2008-08-15 Alexey Proskuryakov <ap@webkit.org>
+ * bytecode/CodeBlock.h:
+ (JSC::):
+ (JSC::CodeBlock::source):
+ (JSC::CodeBlock::sourceOffset):
+ (JSC::CodeBlock::evalCodeCache):
+ (JSC::CodeBlock::createRareDataIfNecessary):
+ More assertions.
- Still fixing Windows build.
+ * jit/JIT.cpp:
+ (JSC::JIT::privateCompileCTIMachineTrampolines):
+ (JSC::JIT::linkCall):
+ Update logic to allow native function caching
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Added OpaqueJSString
- to yet another place.
+ * jit/JITStubs.cpp:
+ * parser/Nodes.cpp:
+ (JSC::FunctionBodyNode::createNativeThunk):
+ (JSC::FunctionBodyNode::isHostFunction):
+ * parser/Nodes.h:
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::JSFunction):
+ (JSC::JSFunction::~JSFunction):
+ (JSC::JSFunction::mark):
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::~JSGlobalData):
+ * runtime/JSGlobalData.h:
-2008-08-15 Alexey Proskuryakov <ap@webkit.org>
+2009-06-18 Gavin Barraclough <barraclough@apple.com>
- Trying to fix non-Apple builds.
+ Reviewed by NOBODY (Windows build fix).
- * ForwardingHeaders/JavaScriptCore/OpaqueJSString.h: Added.
+ * wtf/DateMath.cpp:
+ (WTF::calculateUTCOffset):
-2008-08-15 Gavin Barraclough <barraclough@apple.com>
+2009-06-18 Gavin Barraclough <barraclough@apple.com>
Reviewed by Geoff Garen.
- Allow JSImmediate to hold 31 bit signed integer immediate values. The low two bits of a
- JSValue* are a tag, with the tag value 00 indicating the JSValue* is a pointer to a
- JSCell. Non-zero tag values used to indicate that the JSValue* is not a real pointer,
- but instead holds an immediate value encoded within the pointer. This patch changes the
- encoding so both the tag values 01 and 11 indicate the value is a signed integer, allowing
- a 31 bit value to be stored. All other immediates are tagged with the value 10, and
- distinguished by a secondary tag.
+ Timezone calculation incorrect in Venezuela.
- Roughly +2% on SunSpider.
+ https://bugs.webkit.org/show_bug.cgi?id=26531
+ <rdar://problem/6646169> Time is incorrectly reported to JavaScript in both Safari 3 and Firefox 3
- * kjs/JSImmediate.h: Encoding of JSImmediates has changed - see comment at head of file for
- descption of new layout.
+ The problem is that we're calculating the timezone relative to 01/01/2000,
+ but the VET timezone changed from -4 hours to -4:30 hours on 12/09/2007.
+ According to the spec, section 15.9.1.9 states "the time since the beginning
+ of the year", presumably meaning the *current* year. Change the calculation
+ to be based on whatever the current year is, rather than a canned date.
-2008-08-15 Alexey Proskuryakov <ap@webkit.org>
+ No performance impact.
- More build fixes.
+ * wtf/DateMath.cpp:
+ (WTF::calculateUTCOffset):
- * API/OpaqueJSString.h: Add a namespace to friend declaration to appease MSVC.
- * API/JSStringRefCF.h: (JSStringCreateWithCFString) Cast UniChar* to UChar* explicitly.
- * JavaScriptCore.exp: Added OpaqueJSString::create(const KJS::UString&) to fix WebCore build.
+2009-06-18 Gavin Barraclough <barraclough@apple.com>
-2008-08-15 Alexey Proskuryakov <ap@webkit.org>
+ Rubber Stamped by Mark Rowe (originally reviewed by Sam Weinig).
- Build fix.
+ (Reintroducing patch added in r44492, and reverted in r44796.)
- * JavaScriptCore.xcodeproj/project.pbxproj: Marked OpaqueJSString as private
+ Change the implementation of op_throw so the stub function always modifies its
+ return address - if it doesn't find a 'catch' it will switch to a trampoline
+ to force a return from JIT execution. This saves memory, by avoiding the need
+ for a unique return for every op_throw.
- * kjs/identifier.cpp:
- (KJS::Identifier::checkSameIdentifierTable):
- * kjs/identifier.h:
- (KJS::Identifier::add):
- Since checkSameIdentifierTable is exported for debug build's sake, gcc wants it to be
- non-inline in release builds, too.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_throw):
+ JITStubs::cti_op_throw now always changes its return address,
+ remove return code generated after the stub call (this is now
+ handled by ctiOpThrowNotCaught).
+ * jit/JITStubs.cpp:
+ (JSC::):
+ Add ctiOpThrowNotCaught definitions.
+ (JSC::JITStubs::DEFINE_STUB_FUNCTION):
+ Change cti_op_throw to always change its return address.
+ * jit/JITStubs.h:
+ Add ctiOpThrowNotCaught declaration.
- * JavaScriptCore.exp: Don't export inline OpaqueJSString destructor.
+2009-06-18 Kevin McCullough <kmccullough@apple.com>
-2008-08-15 Alexey Proskuryakov <ap@webkit.org>
+ Reviewed by Oliver Hunt.
- Reviewed by Geoff Garen.
+ <rdar://problem/6940880> REGRESSION: Breakpoints don't break in 64-bit
- JSStringRef is created context-free, but can get linked to one via an identifier table,
- breaking an implicit API contract.
+ - Exposed functions now needed by WebCore.
- Made JSStringRef point to OpaqueJSString, which is a new string object separate from UString.
+ * JavaScriptCore.exp:
- * API/APICast.h: Removed toRef/toJS conversions for JSStringRef, as this is no longer a
- simple typecast.
+2009-06-17 Darin Adler <darin@apple.com>
- * kjs/identifier.cpp:
- (KJS::Identifier::checkSameIdentifierTable):
- * kjs/identifier.h:
- (KJS::Identifier::add):
- (KJS::UString::checkSameIdentifierTable):
- Added assertions to verify that an identifier is not being added to a different JSGlobalData.
+ Reviewed by Oliver Hunt.
- * API/JSObjectRef.cpp:
- (OpaqueJSPropertyNameArray::OpaqueJSPropertyNameArray): Changed OpaqueJSPropertyNameArray to
- hold JSStringRefs. This is necessary to avoid having to construct (and leak) a new instance
- in JSPropertyNameArrayGetNameAtIndex(), now that making a JSStringRef is not just a typecast.
+ Bug 26429: Make JSON.stringify non-recursive so it can handle objects
+ of arbitrary complexity
+ https://bugs.webkit.org/show_bug.cgi?id=26429
- * API/OpaqueJSString.cpp: Added.
- (OpaqueJSString::create):
- (OpaqueJSString::ustring):
- (OpaqueJSString::identifier):
- * API/OpaqueJSString.h: Added.
- (OpaqueJSString::create):
- (OpaqueJSString::characters):
- (OpaqueJSString::length):
- (OpaqueJSString::OpaqueJSString):
- (OpaqueJSString::~OpaqueJSString):
+ For marking I decided not to use gcProtect, because this is inside the engine
+ so it's easy enough to just do marking. And that darned gcProtect does locking!
+ Oliver tried to convince me to used MarkedArgumentBuffer, but the constructor
+ for that class says "FIXME: Remove all clients of this API, then remove this API."
- * API/JSBase.cpp:
- (JSEvaluateScript):
- (JSCheckScriptSyntax):
- * API/JSCallbackObjectFunctions.h:
- (KJS::::getOwnPropertySlot):
- (KJS::::put):
- (KJS::::deleteProperty):
- (KJS::::staticValueGetter):
- (KJS::::callbackGetter):
- * API/JSStringRef.cpp:
- (JSStringCreateWithCharacters):
- (JSStringCreateWithUTF8CString):
- (JSStringRetain):
- (JSStringRelease):
- (JSStringGetLength):
- (JSStringGetCharactersPtr):
- (JSStringGetMaximumUTF8CStringSize):
- (JSStringGetUTF8CString):
- (JSStringIsEqual):
- * API/JSStringRefCF.cpp:
- (JSStringCreateWithCFString):
- (JSStringCopyCFString):
- * API/JSValueRef.cpp:
- (JSValueMakeString):
- (JSValueToStringCopy):
- Updated to use OpaqueJSString.
+ * runtime/Collector.cpp:
+ (JSC::Heap::collect): Add a call to JSONObject::markStringifiers.
- * GNUmakefile.am:
- * JavaScriptCore.exp:
- * JavaScriptCore.pri:
- * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- * JavaScriptCoreSources.bkl:
- Added OpaqueJSString.
+ * runtime/CommonIdentifiers.cpp:
+ (JSC::CommonIdentifiers::CommonIdentifiers): Added emptyIdentifier.
+ * runtime/CommonIdentifiers.h: Ditto.
-2008-08-14 Kevin McCullough <kmccullough@apple.com>
+ * runtime/JSGlobalData.cpp:
+ (JSC::JSGlobalData::JSGlobalData): Initialize firstStringifierToMark to 0.
+ * runtime/JSGlobalData.h: Added firstStringifierToMark.
+
+ * runtime/JSONObject.cpp: Cut down the includes to the needed ones only.
+ (JSC::unwrapNumberOrString): Added. Helper for unwrapping number and string
+ objects to get their number and string values.
+ (JSC::ReplacerPropertyName::ReplacerPropertyName): Added. The class is used
+ to wrap an identifier or integer so we don't have to do any work unless we
+ actually call a replacer.
+ (JSC::ReplacerPropertyName::value): Added.
+ (JSC::gap): Added. Helper function for the Stringifier constructor.
+ (JSC::PropertyNameForFunctionCall::PropertyNameForFunctionCall): Added.
+ The class is used to wrap an identifier or integer so we don't have to
+ allocate a number or string until we actually call toJSON or a replacer.
+ (JSC::PropertyNameForFunctionCall::asJSValue): Added.
+ (JSC::Stringifier::Stringifier): Updated and moved out of the class
+ definition. Added code to hook this into a singly linked list for marking.
+ (JSC::Stringifier::~Stringifier): Remove from the singly linked list.
+ (JSC::Stringifier::mark): Mark all the objects in the holder stacks.
+ (JSC::Stringifier::stringify): Updated.
+ (JSC::Stringifier::appendQuotedString): Tweaked and streamlined a bit.
+ (JSC::Stringifier::toJSON): Renamed from toJSONValue.
+ (JSC::Stringifier::appendStringifiedValue): Renamed from stringify.
+ Added code to use the m_holderStack to do non-recursive stringify of
+ objects and arrays. This code also uses the timeout checker since in
+ pathological cases it could be slow even without calling into the
+ JavaScript virtual machine.
+ (JSC::Stringifier::willIndent): Added.
+ (JSC::Stringifier::indent): Added.
+ (JSC::Stringifier::unindent): Added.
+ (JSC::Stringifier::startNewLine): Added.
+ (JSC::Stringifier::Holder::Holder): Added.
+ (JSC::Stringifier::Holder::appendNextProperty): Added. This is the
+ function that handles the format of arrays and objects.
+ (JSC::JSONObject::getOwnPropertySlot): Moved this down to the bottom
+ of the file so the JSONObject class is not interleaved with the
+ Stringifier class.
+ (JSC::JSONObject::markStringifiers): Added. Calls mark.
+ (JSC::JSONProtoFuncStringify): Streamlined the code here. The code
+ to compute the gap string is now a separate function.
+
+ * runtime/JSONObject.h: Made everything private. Added markStringifiers.
+
+2009-06-17 Oliver Hunt <oliver@apple.com>
- Reviewed by Tim.
+ Reviewed by Gavin Barraclough.
- <rdar://problem/6115819> Notify of profile in console
- - Profiles now have a unique ID so that they can be linked to the
- console message that announces that a profile completed.
+ <rdar://problem/6974140> REGRESSION(r43849): Crash in cti_op_call_NotJSFunction when getting directions on maps.google.com
- * profiler/HeavyProfile.cpp:
- (KJS::HeavyProfile::HeavyProfile):
- * profiler/Profile.cpp:
- (KJS::Profile::create):
- (KJS::Profile::Profile):
- * profiler/Profile.h:
- (KJS::Profile::uid):
- * profiler/ProfileGenerator.cpp:
- (KJS::ProfileGenerator::create):
- (KJS::ProfileGenerator::ProfileGenerator):
- * profiler/ProfileGenerator.h:
- * profiler/Profiler.cpp:
- (KJS::Profiler::startProfiling):
- * profiler/TreeProfile.cpp:
- (KJS::TreeProfile::create):
- (KJS::TreeProfile::TreeProfile):
- * profiler/TreeProfile.h:
+ Roll out r43849 as it appears that we cannot rely on the address of
+ an objects property storage being constant even if the structure is
+ unchanged.
-2008-08-13 Geoffrey Garen <ggaren@apple.com>
+ * jit/JIT.h:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::compileGetDirectOffset):
+ (JSC::JIT::privateCompileGetByIdProto):
+ (JSC::JIT::privateCompileGetByIdProtoList):
+ (JSC::JIT::privateCompileGetByIdChainList):
+ (JSC::JIT::privateCompileGetByIdChain):
- Reviewed by Oliver Hunt.
-
- Nixed a PIC branch from JSObject::getOwnPropertySlot, by forcing
- fillGetterProperty, which references a global function pointer,
- out-of-line.
-
- .2% SunSpider speedup, 4.3% access-nbody speedup, 8.7% speedup on a
- custom property access benchmark for objects with one property.
+2009-06-17 Gavin Barraclough <barraclough@apple.com>
- * kjs/JSObject.cpp:
- (KJS::JSObject::fillGetterPropertySlot):
+ Rubber Stamped by Mark Rowe.
-2008-08-13 Alp Toker <alp@nuanti.com>
+ Fully revert r44492 & r44748 while we fix a bug they cause on internal builds <rdar://problem/6955963>.
- Reviewed by Eric Seidel.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_throw):
+ * jit/JITStubs.cpp:
+ (JSC::):
+ (JSC::JITStubs::DEFINE_STUB_FUNCTION):
+ * jit/JITStubs.h:
+
+2009-06-17 Gavin Barraclough <barraclough@apple.com>
- https://bugs.webkit.org/show_bug.cgi?id=20349
- WTF::initializeThreading() fails if threading is already initialized
+ Reviewed by Mark Rowe.
- Fix threading initialization logic to support cases where
- g_thread_init() has already been called elsewhere.
+ <rdar://problem/6947426> sunspider math-cordic.js exhibits different intermediate results running 32-bit vs. 64-bit
- Resolves database-related crashers reported in several applications.
+ On 64-bit, NaN-encoded values must be detagged before they can be used in rshift.
- * wtf/ThreadingGtk.cpp:
- (WTF::initializeThreading):
+ No performance impact.
-2008-08-13 Brad Hughes <bhughes@trolltech.com>
+ * jit/JITArithmetic.cpp:
+ (JSC::JIT::emit_op_rshift):
- Reviewed by Simon.
+2009-06-17 Adam Treat <adam.treat@torchmobile.com>
- Fix compiling of QtWebKit in release mode with the Intel C++ Compiler for Linux
+ Reviewed by George Staikos.
- The latest upgrade of the intel compiler allows us to compile all of
- Qt with optimizations enabled (yay!).
+ https://bugs.webkit.org/show_bug.cgi?id=23155
+ Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks.
- * JavaScriptCore.pro:
+ * jsc.cpp:
+ (main):
-2008-08-12 Oliver Hunt <oliver@apple.com>
+2009-06-17 George Staikos <george.staikos@torchmobile.com>
- Reviewed by Geoff Garen.
+ Reviewed by Adam Treat.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23155
+ Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks.
+
+ * config.h:
+ * jsc.cpp:
+ * wtf/Assertions.cpp:
+ * wtf/Assertions.h:
+ * wtf/CurrentTime.cpp:
+ (WTF::lowResUTCTime):
+ * wtf/DateMath.cpp:
+ (WTF::getLocalTime):
+ * wtf/MathExtras.h:
+ * wtf/Platform.h:
+ * wtf/StringExtras.h:
+ * wtf/Threading.h:
+ * wtf/win/MainThreadWin.cpp:
+
+2009-06-17 Gavin Barraclough <barraclough@apple.com>
- Add peephole optimisation to 'op_not... jfalse...' (eg. if(!...) )
+ Reviewed by Oliver Hunt.
- This is a very slight win in sunspider, and a fairly substantial win
- in hot code that does if(!...), etc.
+ <rdar://problem/6974175> ASSERT in JITStubs.cpp at appsaccess.apple.com
- * VM/CodeGenerator.cpp:
- (KJS::CodeGenerator::retrieveLastUnaryOp):
- (KJS::CodeGenerator::rewindBinaryOp):
- (KJS::CodeGenerator::rewindUnaryOp):
- (KJS::CodeGenerator::emitJumpIfFalse):
- * VM/CodeGenerator.h:
+ Remove PropertySlot::putValue - PropertySlots should only be used for getting,
+ not putting. Rename JSGlobalObject::getOwnPropertySlot to hasOwnPropertyForWrite,
+ which is what it really was being used to ask, and remove some other getOwnPropertySlot
+ & getOwnPropertySlotForWrite methods, which were unused and likely to lead to confusion.
-2008-08-12 Dan Bernstein <mitz@apple.com>
+ * runtime/JSGlobalObject.h:
+ (JSC::JSGlobalObject::hasOwnPropertyForWrite):
+ * runtime/JSObject.h:
+ * runtime/JSStaticScopeObject.cpp:
+ * runtime/JSStaticScopeObject.h:
+ * runtime/PropertySlot.h:
- - JavaScriptCore part of <rdar://problem/6121636>
- Make fast*alloc() abort() on failure and add "try" variants that
- return NULL on failure.
+2009-06-16 Gavin Barraclough <barraclough@apple.com>
- Reviewed by Darin Adler.
+ Reviewed by Oliver hunt.
- * JavaScriptCore.exp: Exported tryFastCalloc().
- * VM/RegisterFile.h:
- (KJS::RegisterFile::RegisterFile): Removed an ASSERT().
- * kjs/JSArray.cpp:
- (KJS::JSArray::putSlowCase): Changed to use tryFastRealloc().
- (KJS::JSArray::increaseVectorLength): Ditto.
- * kjs/ustring.cpp:
- (KJS::allocChars): Changed to use tryFastMalloc().
- (KJS::reallocChars): Changed to use tryFastRealloc().
- * wtf/FastMalloc.cpp:
- (WTF::fastZeroedMalloc): Removed null checking of fastMalloc()'s result
- and removed extra call to InvokeNewHook().
- (WTF::tryFastZeroedMalloc): Added. Uses tryFastMalloc().
- (WTF::tryFastMalloc): Renamed fastMalloc() to this.
- (WTF::fastMalloc): Added. This version abort()s if allocation fails.
- (WTF::tryFastCalloc): Renamed fastCalloc() to this.
- (WTF::fastCalloc): Added. This version abort()s if allocation fails.
- (WTF::tryFastRealloc): Renamed fastRealloc() to this.
- (WTF::fastRealloc): Added. This version abort()s if allocation fails.
- (WTF::do_malloc): Made this a function template. When the abortOnFailure
- template parameter is set, the function abort()s on failure to allocate.
- Otherwise, it sets errno to ENOMEM and returns zero.
- (WTF::TCMallocStats::fastMalloc): Defined to abort() on failure.
- (WTF::TCMallocStats::tryFastMalloc): Added. Does not abort() on
- failure.
- (WTF::TCMallocStats::fastCalloc): Defined to abort() on failure.
- (WTF::TCMallocStats::tryFastCalloc): Added. Does not abort() on
- failure.
- (WTF::TCMallocStats::fastRealloc): Defined to abort() on failure.
- (WTF::TCMallocStats::tryFastRealloc): Added. Does not abort() on
- failure.
- * wtf/FastMalloc.h: Declared the "try" variants.
-
-2008-08-11 Adam Roben <aroben@apple.com>
-
- Move WTF::notFound into its own header so that it can be used
- independently of Vector
-
- Rubberstamped by Darin Adler.
+ Temporarily partially disable r44492, since this is causing some problems on internal builds.
- * JavaScriptCore.vcproj/WTF/WTF.vcproj:
- * JavaScriptCore.xcodeproj/project.pbxproj:
- Added NotFound.h to the project.
- * wtf/NotFound.h: Added. Moved the notFound constant here...
- * wtf/Vector.h: ...from here.
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::emit_op_throw):
+ * jit/JITStubs.cpp:
+ (JSC::JITStubs::DEFINE_STUB_FUNCTION):
-2008-08-11 Alexey Proskuryakov <ap@webkit.org>
+2009-06-16 Sam Weinig <sam@webkit.org>
- Reviewed by Mark Rowe.
+ Fix windows build.
- <rdar://problem/6130393> REGRESSION: PhotoBooth hangs after launching under TOT Webkit
+ * jit/JIT.cpp:
+ (JSC::JIT::JIT):
+
+2009-06-16 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Oliver Hunt.
- * API/JSContextRef.cpp: (JSGlobalContextRelease): Corrected a comment.
+ Initialize m_bytecodeIndex to -1 in JIT, and correctly initialize
+ it for each type of stub using the return address to find the correct
+ offset.
- * kjs/collector.cpp: (KJS::Heap::~Heap): Ensure that JSGlobalData is not deleted while
- sweeping the heap.
+ * jit/JIT.cpp:
+ (JSC::JIT::JIT):
+ * jit/JIT.h:
+ (JSC::JIT::compileGetByIdProto):
+ (JSC::JIT::compileGetByIdSelfList):
+ (JSC::JIT::compileGetByIdProtoList):
+ (JSC::JIT::compileGetByIdChainList):
+ (JSC::JIT::compileGetByIdChain):
+ (JSC::JIT::compilePutByIdTransition):
+ (JSC::JIT::compileCTIMachineTrampolines):
+ (JSC::JIT::compilePatchGetArrayLength):
+ * jit/JITStubCall.h:
+ (JSC::JITStubCall::call):
-== Rolled over to ChangeLog-2008-08-10 ==
+== Rolled over to ChangeLog-2009-06-16 ==