Timeline


and

04/21/08:

23:47 Changeset [32373] by jhoneycutt@apple.com

2008-04-19 Jon Honeycutt <jhoneycutt@apple.com>

Reviewed by Darin.

Add a method to get the AccessibilityObject's access key,

  • page/AccessibilityObject.cpp: (WebCore::AccessibilityObject::accessKey): Added; returns the object's access key attribute.
  • page/AccessibilityObject.h: Added declaration for accessKey().
23:47 Changeset [32372] by jhoneycutt@apple.com

2008-04-19 Jon Honeycutt <jhoneycutt@apple.com>

Reviewed by Darin.

Implement get_accHelp().

  • AccessibleBase.cpp: (AccessibleBase::get_accHelp): Report the result of calling the object's helpText() method.
23:46 Changeset [32371] by jhoneycutt@apple.com

2008-04-19 Jon Honeycutt <jhoneycutt@apple.com>

Reviewed by Darin.

Implement get_accState().

  • AccessibleBase.cpp: (AccessibleBase::get_accState):
23:46 Changeset [32370] by jhoneycutt@apple.com

2008-04-18 Jon Honeycutt <jhoneycutt@apple.com>

Reviewed by Darin.

Implement get_accRole().

  • AccessibleBase.cpp: (AccessibleBase::get_accRole): Report the result of role(). (MSAARole): Added; returns the MSAA role for a WebCore role. (AccessibleBase::role): Return the MSAA role for the object's roleValue.
  • AccessibleBase.h: Add declaration for role().
23:45 Changeset [32369] by jhoneycutt@apple.com

2008-04-18 Jon Honeycutt <jhoneycutt@apple.com>

Reviewed by Darin.

Implement get_accName(), get_accValue(), get_accDescription(). Added
virtual methods that accessible objects can override to customize the
result.

  • AccessibleBase.cpp: (AccessibleBase::get_accName): Report result of name(). (AccessibleBase::get_accValue): Report result of value(). (AccessibleBase::get_accDescription): Report result of description(). (AccessibleBase::name): Added; returns AccessibilityObject::title(). (AccessibleBase::value): Added; returns AccessibilityObject::stringValue(). (AccessibleBase::description): Added; returns AccessibilityObject::accessibilityDescription().
  • AccessibleBase.h: Added declarations for name(), value(), and description().
  • ChangeLog: Fix my misuse of "definition."
22:47 Changeset [32368] by hyatt@apple.com

Fix layout test results for new props.

22:35 Changeset [32367] by oliver@apple.com

Implement emitCode for ConstDeclNode.

Reviewed by Geoff

This fixes the crash (assertion) in js1_5/Scope/scope-001.js

22:20 Changeset [32366] by mjs@apple.com

2008-04-21 Maciej Stachowiak <mjs@apple.com>

Reviewed by Sam.


  • add some support for the split window object

This fixes many layout tests.


  • VM/Machine.cpp: (KJS::resolveBaseAndFunc): Use toThisObject() to ensure we get the wrapper global, if one exists, as the "this" object.
  • kjs/function.cpp: (KJS::globalFuncEval): Use toGlobalObject() to handle the wrapper case properly.
22:17 Changeset [32365] by mjs@apple.com

2008-04-21 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.


  • restore ScopeChain::operator= to avoid crash on many layout tests


Otherwise, FunctionImp::setScope would cause a reference
underflow. I implemented using the copy construct and swap idiom.

  • kjs/scope_chain.h: (KJS::ScopeChain::swap): (KJS::ScopeChain::operator=):
21:44 Changeset [32364] by weinig@apple.com

2008-04-21 Sam Weinig <sam@webkit.org>

Reviewed by Anders Carlsson.

Fix numerous crashing tests.

  • html/HTMLHtmlElement.cpp: (WebCore::HTMLHtmlElement::insertedIntoDocument): Null check document->frame().
21:06 Changeset [32363] by mrowe@apple.com

Fix the case on the file names of test results for svg/custom/altglyph.svg, and remove an extra -expected.txt that was checked in with incorrect
case.

  • platform/mac/svg/custom/altGlyph-expected.checksum: Removed.
  • platform/mac/svg/custom/altGlyph-expected.png: Removed.
  • platform/mac/svg/custom/altGlyph-expected.txt: Removed.
  • platform/mac/svg/custom/altglyph-expected.checksum: Copied from LayoutTests/platform/mac/svg/custom/altGlyph-expected.checksum.
  • platform/mac/svg/custom/altglyph-expected.png: Copied from LayoutTests/platform/mac/svg/custom/altGlyph-expected.png.
20:33 Changeset [32362] by weinig@apple.com

WebCore:

2008-04-21 Dan Bernstein <mitz@apple.com>

Reviewed by Darin Adler.

Tests: fast/media/implicit-media-all.html

fast/media/monochrome.html

  • allow implicit "all" media in media queries
  • use a value of 0 for the monochrome media feature on color displays
  • css/CSSGrammar.y:
  • css/CSSParser.cpp: (WebCore::CSSParser::createFloatingMediaQuery):
  • css/CSSParser.h:
  • css/MediaQueryEvaluator.cpp: (WebCore::monochromeMediaFeatureEval):

LayoutTests:

2008-04-21 Dan Bernstein <mitz@apple.com>

Reviewed by Darin Adler.

  • update acid3.html to reflect the updated test.
  • test for implicit "all" media in media queries
  • test that the value of the monochrome media feature is 0 on color displays
  • http/tests/misc/acid3.html:
  • fast/media/implicit-media-all.html: Added.
  • fast/media/monochrome.html: Added.
  • platform/mac/fast/media/implicit-media-all-expected.checksum: Added.
  • platform/mac/fast/media/implicit-media-all-expected.png: Added.
  • platform/mac/fast/media/implicit-media-all-expected.txt: Added.
  • platform/mac/fast/media/monochrome-expected.checksum: Added.
  • platform/mac/fast/media/monochrome-expected.png: Added.
  • platform/mac/fast/media/monochrome-expected.txt: Added.
17:42 Changeset [32361] by oliver@apple.com

Bug 18649: SQUIRRELFISH: correctly handle exceptions in eval code
<https://bugs.webkit.org/show_bug.cgi?id=18649>

Reviewed by Geoff

Allocate a callframe for eval() and initialise with a null codeBlock to
indicate native code. This prevents the unwinder from clobbering the
register stack.

17:32 Changeset [32360] by ggaren@apple.com

2008-04-21 Geoffrey Garen <ggaren@apple.com>

Build fix.

  • ChangeLog:
  • WebView/WebScriptDebugDelegate.mm: (-[WebScriptCallFrame scopeChain]):
17:11 Changeset [32359] by ggaren@apple.com

2008-04-21 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.


Removed ScopeChain::push(ScopeChain&) because it was unused. Moved
ScopeChain::print to ScopeChainNode.


ScopeChain is now nothing more than a resource-handling wrapper around
ScopeChainNode.

17:08 SquirrelFish edited by ggaren@apple.com
(diff)
17:07 SquirrelFish edited by ggaren@apple.com
(diff)
17:04 Changeset [32358] by beidson@apple.com

2008-04-21 Brady Eidson <beidson@apple.com>

Rockingly reviewed by Adele

Small StorageArea cleanups

  • storage/SessionStorageArea.cpp: (WebCore::SessionStorageArea::copy): Pass "this" instead of the StorageMap belonging to this (WebCore::SessionStorageArea::SessionStorageArea):
  • storage/SessionStorageArea.h:
  • storage/StorageArea.cpp: Changed to not expose the StorageMap at all - it's dangerous to expose it since we rely explicitly on its ref-count (WebCore::StorageArea::StorageArea): Take another StorageArea as the c'tor argument and get the StorageMap from that. (WebCore::StorageArea::setItem): The previous comment/code here was bogus. All JS objects passed in to this API are stringified, so there's no such thing as "null" for setItem()
  • storage/StorageArea.h:
16:53 Changeset [32357] by mjs@apple.com

2008-04-21 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Maciej.

Bug 18671: SquirrelFish: continue inside switch fails
<https://bugs.webkit.org/show_bug.cgi?id=18671>

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::jumpContextForLabel):
  • VM/CodeGenerator.h:
  • kjs/nodes.cpp: (KJS::ContinueNode::emitCode):
16:51 Changeset [32356] by dino@apple.com

Updated CSS Visual Effects proposals.

CSS Animations

  • described simplified sandwich model (that animations have no effect outside their duration and last specified animation wins)
  • diagram showing the above
  • specified animations to start at style resolution or document load, whichever is later.
  • animation start events always have elapsedTime == 0

CSS Transforms

  • removed text saying that elements cannot be drawn as intersecting.
  • described that preserve-3d trees often need a flattening parent, otherwise elements can be hidden behind their ancestor's background.
  • describe that preserve-3d is not always possible, such as when overflow is 'hidden'.

CSS Transitions

  • no change
  • specs/CSSVisualEffects/CSSAnimation.html:
  • specs/CSSVisualEffects/CSSTransforms.html:
  • specs/CSSVisualEffects/CSSTransitions.html:
  • specs/CSSVisualEffects/sandwich.png: Added.
16:22 Changeset [32355] by hyatt@apple.com

Fix Windows bustage.

16:13 Changeset [32354] by kmccullough@apple.com

2008-04-21 Kevin McCullough <kmccullough@apple.com>

Reviewed by Adam.

<rdar://problem/5770054> JavaScript profiler (10928)

  • When stop profiling is called we need to stop the timers on all the functions that are still running.
  • profiler/FunctionCallProfile.cpp: (KJS::FunctionCallProfile::didExecute): (KJS::FunctionCallProfile::stopProfiling):
  • profiler/FunctionCallProfile.h:
  • profiler/Profiler.cpp: (KJS::Profiler::stopProfiling):
15:48 Changeset [32353] by justin.garcia@apple.com

WebCore:

2008-04-21 Justin Garcia <justin.garcia@apple.com>

Reviewed by John Sullivan.

<rdar://problem/5803706> Pressing return at the end of a header doesn't break out of header (17460)


If we're doing InsertParagraphSeparator at the end of a header element, do not clone it.
Renamed m_useDefaultParagraphElement to m_mustUseDefaultParagraphElement, since now,
when it is false, that does not necessarily mean that a default paragraph element
will not be used. Callers that passed false for this argument are OK with this.

  • editing/InsertParagraphSeparatorCommand.cpp: (WebCore::InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand): (WebCore::InsertParagraphSeparatorCommand::shouldUseDefaultParagraphElement): (WebCore::InsertParagraphSeparatorCommand::doApply):
  • editing/InsertParagraphSeparatorCommand.h:

LayoutTests:

2008-04-21 Justin Garcia <justin.garcia@apple.com>

Reviewed by John Sullivan.

<rdar://problem/5803706> Pressing return at the end of a header doesn't break out of header (17460)

  • editing/inserting/5803706-1-expected.txt: Added.
  • editing/inserting/5803706-1.html: Added.
  • editing/inserting/5803706-2-expected.txt: Added.
  • editing/inserting/5803706-2.html: Added.
15:22 Changeset [32352] by mrowe@apple.com

Land updated results for three tests and disable three more on Tiger.

  • http/tests/xmlhttprequest/infoOnProgressEvent-expected.txt:
  • platform/mac-tiger/Skipped: Disable three tests using font-face that fail intermittently on Tiger bots.
  • platform/mac-tiger/svg/W3C-SVG-1.1/animate-elem-06-t-expected.txt: Update Tiger results following r32247.
  • platform/mac-tiger/svg/W3C-SVG-1.1/animate-elem-07-t-expected.txt: Ditto.
15:21 Changeset [32351] by andersca@apple.com

2008-04-21 Anders Carlsson <andersca@apple.com>

Reviewed by Adam.

Perform cache selection. If a main resource has a URL that exists in a cache, load it from there.


  • html/HTMLAttributeNames.in: Add manifest attribute.


  • html/HTMLHtmlElement.cpp: (WebCore::HTMLHtmlElement::insertedIntoDocument):
  • html/HTMLHtmlElement.h: Perform cache selection.


  • loader/MainResourceLoader.cpp: (WebCore::MainResourceLoader::load):
  • loader/appcache/ApplicationCacheGroup.cpp: (WebCore::cacheHostSet): (WebCore::urlHostHash): (WebCore::ApplicationCacheGroup::cacheForRequest): (WebCore::ApplicationCacheGroup::selectCache):
  • loader/appcache/ApplicationCacheGroup.h:
  • platform/KURL.h: (WebCore::KURL::hostStart): (WebCore::KURL::hostEnd):
15:14 Changeset [32350] by eric@webkit.org

Reviewed by eseidel and darin. Landed by eseidel.

Fix broken optimization in createStrippingNullCharacters.

  • platform/text/StringImpl.cpp: (WebCore::StringImpl::createStrippingNullCharacters):
15:03 Changeset [32349] by ggaren@apple.com

2008-04-21 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.


Moved push(JSObject*) and pop() from ScopeChain to ScopeChainNode,
rearranging scope_chain.h a bit.

SunSpider reports no change.

14:59 Changeset [32348] by hyatt@apple.com

2008-04-21 David Hyatt <hyatt@apple.com>

Make the back end parsing of background properties generic. Rename all the parsing functions from
background -> fill.

Add a new set of properties for doing masks. The code is now refactored so that the mask properties
and the background properties share parsing routines.

Reviewed by Dan

  • css/CSSComputedStyleDeclaration.cpp: (WebCore::): (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
  • css/CSSParser.cpp: (WebCore::CSSParser::parseValue): (WebCore::CSSParser::addFillValue): (WebCore::CSSParser::parseFillShorthand): (WebCore::CSSParser::parseFillImage): (WebCore::CSSParser::parseFillPositionXY): (WebCore::CSSParser::parseFillPosition): (WebCore::CSSParser::parseFillSize): (WebCore::CSSParser::parseFillProperty): (WebCore::CSSParser::parseTransformOrigin):
  • css/CSSParser.h:
  • css/CSSPropertyNames.in:
  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::CSSStyleSelector): (WebCore::CSSStyleSelector::mapFillAttachment): (WebCore::CSSStyleSelector::mapFillClip): (WebCore::CSSStyleSelector::mapFillComposite): (WebCore::CSSStyleSelector::mapFillOrigin): (WebCore::CSSStyleSelector::mapFillImage): (WebCore::CSSStyleSelector::mapFillRepeat): (WebCore::CSSStyleSelector::mapFillSize): (WebCore::CSSStyleSelector::mapFillXPosition): (WebCore::CSSStyleSelector::mapFillYPosition):
  • rendering/RenderStyle.cpp: (WebCore::FillLayer::FillLayer): (WebCore::FillLayer::operator=): (WebCore::FillLayer::operator==): (WebCore::StyleBackgroundData::StyleBackgroundData): (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): (WebCore::StyleRareNonInheritedData::operator==): (WebCore::RenderStyle::diff):
  • rendering/RenderStyle.h: (WebCore::LengthSize::LengthSize): (WebCore::): (WebCore::FillLayer::type): (WebCore::FillLayer::initialFillAttachment): (WebCore::FillLayer::initialFillClip): (WebCore::FillLayer::initialFillOrigin): (WebCore::FillLayer::initialFillRepeat): (WebCore::FillLayer::initialFillComposite): (WebCore::FillLayer::initialFillSize): (WebCore::FillLayer::initialFillXPosition): (WebCore::FillLayer::initialFillYPosition): (WebCore::FillLayer::initialFillImage): (WebCore::RenderStyle::maskImage): (WebCore::RenderStyle::maskRepeat): (WebCore::RenderStyle::maskComposite): (WebCore::RenderStyle::maskAttachment): (WebCore::RenderStyle::maskClip): (WebCore::RenderStyle::maskOrigin): (WebCore::RenderStyle::maskXPosition): (WebCore::RenderStyle::maskYPosition): (WebCore::RenderStyle::maskSize): (WebCore::RenderStyle::accessMaskLayers): (WebCore::RenderStyle::maskLayers): (WebCore::RenderStyle::clearBackgroundLayers): (WebCore::RenderStyle::clearMaskLayers): (WebCore::RenderStyle::inheritMaskLayers):
13:55 Changeset [32347] by timothy@apple.com

Fixes the issue were a Database view could still be visible after navigating to a new page.

Reviewed by Darin Adler.

  • page/inspector/DatabasesPanel.js:

(WebInspector.DatabasesPanel.prototype.reset): Delete the _tableViews and _queryView properties
from all databases. Remove all the children from databaseViews.

13:54 Changeset [32346] by timothy@apple.com

Adds the ability to enter multi-line commands in the console by holding the
alt/option key when pressing enter/return.

https://bugs.webkit.org/show_bug.cgi?id=18454

Reviewed by Darin Adler.

  • page/inspector/Console.js:

(WebInspector.Console.prototype._enterKeyPressed): Return early if the
alt/option key is held when enter is pressed.

  • page/inspector/inspector.css:

(.console-message-text): Added. Set white-space: pre-wrap.

13:54 Changeset [32345] by timothy@apple.com

Fixes the bug where the Database table names do not update when
running the CREATE TABLE or DROP TABLE queries. Also makes the
table names update every time the database is collapsed and expanded.

https://bugs.webkit.org/show_bug.cgi?id=18453

Reviewed by Darin Adler.

  • page/inspector/DatabasesPanel.js:

(WebInspector.DatabasesPanel.prototype.updateDatabaseTables):
Set shouldRefreshChildren to true on the Database's tree element.
The refreshChildren property was renamed to shouldRefreshChildren.
(WebInspector.DatabaseSidebarTreeElement.prototype.oncollapse):
Request a refresh after every collapse so the next expand will
have an updated table list.

13:54 Changeset [32344] by timothy@apple.com

Adds INDEX to the list of completion words for the Databases query view.

https://bugs.webkit.org/show_bug.cgi?id=18452

Reviewed by Darin Adler.

  • page/inspector/DatabaseQueryView.js:

(WebInspector.DatabaseQueryView.prototype.completions): Split up "CREATE TABLE "
and "DROP TABLE " into "CREATE ", "DROP ", "TABLE ". And added "INDEX ".

13:53 Changeset [32343] by timothy@apple.com

Adds the UI portions of the Scripts panel to the Web Inspector.
The Scripts panel has not been added to the toolbar yet.

https://bugs.webkit.org/show_bug.cgi?id=18601

Reviewed by Adam Roben.

  • English.lproj/InspectorLocalizedStrings.js: Changed "Show inherited properties"

to "Show inherited". Adds new strings for the Scripts' panel tooltips.

  • page/inspector/BreakpointsSidebarPane.js: Added.
  • page/inspector/CallStackSidebarPane.js: Added.
  • page/inspector/Images/back.png: Added.
  • page/inspector/Images/debuggerContinue.png: Added.
  • page/inspector/Images/debuggerPause.png: Added.
  • page/inspector/Images/debuggerStepInto.png: Added.
  • page/inspector/Images/debuggerStepOut.png: Added.
  • page/inspector/Images/debuggerStepOver.png: Added.
  • page/inspector/Images/forward.png: Added.
  • page/inspector/Images/statusbarResizerHorizontal.png: Added.
  • page/inspector/PropertiesSection.js:

(WebInspector.PropertiesSection): Flip the order the subtile is appended
so it can float right in the CSS.

  • page/inspector/ScriptsPanel.js: Added.
  • page/inspector/StylesSidebarPane.js:

(WebInspector.StylePropertiesSection): Changed "Show inherited properties"
to "Show inherited".

  • page/inspector/inspector.css: Added new CSS rules for the Scripts panel.

Also changes the look of the section to match the mockup, this affects
Styles and Properties in Elements.

  • page/inspector/inspector.html: Import new files.
  • page/inspector/inspector.js:

(Preferences.minScriptsSidebarWidth): Added.

13:25 Changeset [32342] by kmccullough@apple.com

2008-04-21 Kevin McCullough <kmccullough@apple.com>

Reviewed by Adam.

<rdar://problem/5770054> JavaScript profiler (10928)
Took out debugging printing since we really want to hook into the
inspector and not to print to the terminal.

  • page/Console.cpp: (WebCore::Console::profileEnd):
13:23 Changeset [32341] by weinig@apple.com

2008-04-21 Sam Weinig <sam@webkit.org>

Reviewed by Alexey Proskuryakov.

Fix up XMLHttpRequestProgressEvent.

  • bindings/js/JSEventCustom.cpp: (WebCore::toJS):
  • xml/XMLHttpRequestProgressEvent.cpp:
  • xml/XMLHttpRequestProgressEvent.h:
13:15 Changeset [32340] by aroben@apple.com

Fix Bug 18615: Crash in PluginPackage::hash

<https://bugs.webkit.org/show_bug.cgi?id=18615>

Reviewed by Anders Carlsson.

  • plugins/PluginDatabase.cpp: (WebCore::PluginDatabase::refresh): Don't pass a null PluginPackage* to add().
13:00 Changeset [32339] by andersca@apple.com

2008-04-21 Anders Carlsson <andersca@apple.com>

Reviewed by Adam.

Add cache group implementation.

  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::scheduleApplicationCacheLoad):
  • loader/appcache/ApplicationCache.cpp: (WebCore::ApplicationCache::requestIsHTTPOrHTTPSGet): (WebCore::ApplicationCache::resourceForRequest):
  • loader/appcache/ApplicationCache.h:
  • loader/appcache/ApplicationCacheGroup.cpp: (WebCore::cacheGroupMap): (WebCore::ApplicationCacheGroup::ApplicationCacheGroup): (WebCore::ApplicationCacheGroup::selectCache): (WebCore::ApplicationCacheGroup::selectCacheWithoutManifestURL): (WebCore::ApplicationCacheGroup::finishedLoadingMainResource): (WebCore::ApplicationCacheGroup::documentLoaderDestroyed): (WebCore::ApplicationCacheGroup::cacheDestroyed): (WebCore::ApplicationCacheGroup::update): (WebCore::ApplicationCacheGroup::didReceiveResponse): (WebCore::ApplicationCacheGroup::didReceiveData): (WebCore::ApplicationCacheGroup::didFinishLoading): (WebCore::ApplicationCacheGroup::didFail): (WebCore::ApplicationCacheGroup::didReceiveManifestResponse): (WebCore::ApplicationCacheGroup::didReceiveManifestData): (WebCore::ApplicationCacheGroup::didFinishLoadingManifest): (WebCore::ApplicationCacheGroup::cacheUpdateFailed): (WebCore::ApplicationCacheGroup::didFailToLoadManifest): (WebCore::ApplicationCacheGroup::checkIfLoadIsComplete): (WebCore::ApplicationCacheGroup::startLoadingEntry): (WebCore::ApplicationCacheGroup::addEntry): (WebCore::ApplicationCacheGroup::associateDocumentLoaderWithCache): (WebCore::ApplicationCacheGroup::callListenersOnAssociatedDocuments): (WebCore::ApplicationCacheGroup::callListeners):
  • loader/appcache/ApplicationCacheGroup.h: (WebCore::ApplicationCacheGroup::status): (WebCore::ApplicationCacheGroup::newestCache):
  • platform/KURL.h: (WebCore::KURL::hostStart): (WebCore::KURL::hostEnd):
12:59 Changeset [32338] by ggaren@apple.com

2008-04-21 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.


Moved bottom() from ScopeChain to ScopeChainNode, simplifying it based
on the knowledge that the ScopeChain is never empty.

SunSpider reports no change.

12:42 Changeset [32337] by ggaren@apple.com

2008-04-21 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.


Moved begin() and end() from ScopeChain to ScopeChainNode.


Also marked a few methods "const".

SunSpider reports no change.

12:31 Changeset [32336] by ggaren@apple.com

2008-04-21 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.


Turned ScopeChain::depth into a stand-alone function, and simplified it
a bit.


I also moved ScopeChain::depth to Machine.cpp because it doesn't report
the true depth of the ScopeChain -- just the Machine's perspective of
its depth within a given call frame.

SunSpider reports no change.

12:19 Changeset [32335] by ggaren@apple.com

2008-04-21 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.


Removed indirection in ScopeChain::ref / ScopeChain::deref.


SunSpider reports no change.


  • kjs/scope_chain.h: (KJS::ScopeChain::ScopeChain): (KJS::ScopeChain::~ScopeChain): (KJS::ScopeChain::clear):
12:14 Changeset [32334] by hyatt@apple.com

2008-04-21 David Hyatt <hyatt@apple.com>

Rename BackgroundLayer -> FillLayer in preparation for it being used for other types of fills.

Reviewed by Dan

  • css/CSSComputedStyleDeclaration.cpp: (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
  • css/CSSPrimitiveValueMappings.h: (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): (WebCore::CSSPrimitiveValue::operator EFillBox): (WebCore::CSSPrimitiveValue::operator EFillRepeat):
  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::applyProperty): (WebCore::CSSStyleSelector::mapFillAttachment): (WebCore::CSSStyleSelector::mapFillClip): (WebCore::CSSStyleSelector::mapFillComposite): (WebCore::CSSStyleSelector::mapFillOrigin): (WebCore::CSSStyleSelector::mapFillImage): (WebCore::CSSStyleSelector::mapFillRepeat): (WebCore::CSSStyleSelector::mapFillSize): (WebCore::CSSStyleSelector::mapFillXPosition): (WebCore::CSSStyleSelector::mapFillYPosition): (WebCore::CSSStyleSelector::mapTransitionDuration): (WebCore::CSSStyleSelector::mapTransitionRepeatCount): (WebCore::CSSStyleSelector::mapTransitionTimingFunction): (WebCore::CSSStyleSelector::mapTransitionProperty):
  • css/CSSStyleSelector.h:
  • page/AnimationController.cpp: (WebCore::ImplicitAnimation::ImplicitAnimation): (WebCore::CompositeImplicitAnimation::animate):
  • rendering/InlineFlowBox.cpp: (WebCore::InlineFlowBox::paintBackgrounds): (WebCore::InlineFlowBox::paintBackground):
  • rendering/InlineFlowBox.h:
  • rendering/RenderBox.cpp: (WebCore::RenderBox::paintRootBoxDecorations): (WebCore::RenderBox::paintBackgrounds): (WebCore::RenderBox::paintBackground): (WebCore::RenderBox::calculateBackgroundSize): (WebCore::RenderBox::imageChanged): (WebCore::RenderBox::calculateBackgroundImageGeometry): (WebCore::RenderBox::paintBackgroundExtended):
  • rendering/RenderBox.h:
  • rendering/RenderObject.cpp: (WebCore::RenderObject::mustRepaintBackgroundOrBorder): (WebCore::RenderObject::updateBackgroundImages): (WebCore::RenderObject::arenaDelete):
  • rendering/RenderObject.h: (WebCore::RenderObject::paintBackgroundExtended):
  • rendering/RenderStyle.cpp: (WebCore::FillLayer::FillLayer): (WebCore::FillLayer::~FillLayer): (WebCore::FillLayer::operator=): (WebCore::FillLayer::operator==): (WebCore::FillLayer::fillUnsetProperties): (WebCore::FillLayer::cullEmptyLayers): (WebCore::Transition::fillUnsetProperties):
  • rendering/RenderStyle.h: (WebCore::): (WebCore::FillLayer::image): (WebCore::FillLayer::xPosition): (WebCore::FillLayer::yPosition): (WebCore::FillLayer::attachment): (WebCore::FillLayer::clip): (WebCore::FillLayer::origin): (WebCore::FillLayer::repeat): (WebCore::FillLayer::composite): (WebCore::FillLayer::size): (WebCore::FillLayer::next): (WebCore::FillLayer::isImageSet): (WebCore::FillLayer::isXPositionSet): (WebCore::FillLayer::isYPositionSet): (WebCore::FillLayer::isAttachmentSet): (WebCore::FillLayer::isClipSet): (WebCore::FillLayer::isOriginSet): (WebCore::FillLayer::isRepeatSet): (WebCore::FillLayer::isCompositeSet): (WebCore::FillLayer::isSizeSet): (WebCore::FillLayer::setImage): (WebCore::FillLayer::setXPosition): (WebCore::FillLayer::setYPosition): (WebCore::FillLayer::setAttachment): (WebCore::FillLayer::setClip): (WebCore::FillLayer::setOrigin): (WebCore::FillLayer::setRepeat): (WebCore::FillLayer::setComposite): (WebCore::FillLayer::setSize): (WebCore::FillLayer::clearImage): (WebCore::FillLayer::clearXPosition): (WebCore::FillLayer::clearYPosition): (WebCore::FillLayer::clearAttachment): (WebCore::FillLayer::clearClip): (WebCore::FillLayer::clearOrigin): (WebCore::FillLayer::clearRepeat): (WebCore::FillLayer::clearComposite): (WebCore::FillLayer::clearSize): (WebCore::FillLayer::setNext): (WebCore::FillLayer::operator!=): (WebCore::FillLayer::hasFixedImage): (WebCore::Transition::isDurationSet): (WebCore::Transition::isRepeatCountSet): (WebCore::Transition::isTimingFunctionSet): (WebCore::Transition::isPropertySet): (WebCore::Transition::clearDuration): (WebCore::Transition::clearRepeatCount): (WebCore::Transition::clearTimingFunction): (WebCore::Transition::clearProperty): (WebCore::Transition::duration): (WebCore::Transition::repeatCount): (WebCore::Transition::timingFunction): (WebCore::Transition::property): (WebCore::Transition::setDuration): (WebCore::Transition::setRepeatCount): (WebCore::Transition::setTimingFunction): (WebCore::Transition::setProperty): (WebCore::RenderStyle::NonInheritedFlags::operator==): (WebCore::RenderStyle::setBitDefaults): (WebCore::RenderStyle::backgroundRepeat): (WebCore::RenderStyle::backgroundComposite): (WebCore::RenderStyle::backgroundAttachment): (WebCore::RenderStyle::backgroundClip): (WebCore::RenderStyle::backgroundOrigin): (WebCore::RenderStyle::backgroundSize): (WebCore::RenderStyle::accessBackgroundLayers): (WebCore::RenderStyle::backgroundLayers): (WebCore::RenderStyle::clearBackgroundLayers): (WebCore::RenderStyle::inheritBackgroundLayers): (WebCore::RenderStyle::initialFillAttachment): (WebCore::RenderStyle::initialFillClip): (WebCore::RenderStyle::initialFillOrigin): (WebCore::RenderStyle::initialFillRepeat): (WebCore::RenderStyle::initialFillComposite): (WebCore::RenderStyle::initialFillSize): (WebCore::RenderStyle::initialFillXPosition): (WebCore::RenderStyle::initialFillYPosition): (WebCore::RenderStyle::initialFillImage): (WebCore::RenderStyle::initialWhiteSpace): (WebCore::RenderStyle::initialColor):
  • rendering/RenderTableCell.cpp: (WebCore::RenderTableCell::paintBackgroundsBehindCell):
  • rendering/RenderTheme.cpp: (WebCore::RenderTheme::adjustStyle): (WebCore::RenderTheme::isControlStyled):
  • rendering/RenderTheme.h:
  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::isControlStyled):
12:06 Changeset [32333] by oliver@apple.com

Fix debug build

11:57 Changeset [32332] by oliver@apple.com

Bug 18664: SQUIRRELFISH: correctly throw a SyntaxError when parsing of eval code fails
<https://bugs.webkit.org/show_bug.cgi?id=18664>

Patch from Cameron Zwarich <cwzwarich@uwaterloo.ca>
Reviewed by Oliver

Correctly throw a SyntaxError when parsing of eval code fails.

11:52 Changeset [32331] by oliver@apple.com

Partial fix for Bug 18649: SQUIRRELFISH: correctly handle exceptions in eval code

Reviewed by Geoff

Make sure we correct the register state before jumping to vm_throw.

11:51 Changeset [32330] by ggaren@apple.com

Fixed reviewer named in old commit message

11:51 Changeset [32329] by ggaren@apple.com

2008-04-21 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.


Simplified ScopeChain ref/deref.


SunSpider reports a .4% speedup.


  • kjs/scope_chain.h: (KJS::ScopeChainNode::ref): Removed this function because it was nonsense. ScopeChainNodes are initialized with a refCount of 1, so the loop was guaranteed to iterate exactly once.
11:39 Changeset [32328] by ggaren@apple.com

2008-04-21 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.


Removed support for empty ScopeChains.

SunSpider reports no change.

11:35 Changeset [32327] by jchaffraix@webkit.org

2008-04-21 Julien Chaffraix <jchaffraix@webkit.org>

Rubber-stamped by Ap.

Add 2 explicit casts.
Fixes built on 64-bit machines (64-bit to 32-bit conversion warning).

  • xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::dispatchProgressEvent):
11:24 Changeset [32326] by ggaren@apple.com

2008-04-21 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.


Removed some completely unused ScopeChain member functions.

SunSpider reports no change.

11:21 Changeset [32325] by aroben@apple.com

Flush stdout/stderr after printing every #EOF separator

This fixes a hang when running the pixel tests on Windows

Reviewed by Mitz Pettel.

  • DumpRenderTree/win/DumpRenderTree.cpp: (dump): (main): We don't have to flush stdout/stderr in the arguments loop anymore, as runTest flushes for us.
11:21 Changeset [32324] by andersca@apple.com

2008-04-21 Anders Carlsson <andersca@apple.com>

Reviewed by Adam.

Make it possible to load resources from the cache.
(Currently no documents are ever associated with a cache though.)


  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::setPrimaryLoadComplete): (WebCore::DocumentLoader::mainResourceApplicationCache): (WebCore::DocumentLoader::scheduleApplicationCacheLoad):
  • loader/DocumentLoader.h:
  • loader/MainResourceLoader.cpp: (WebCore::MainResourceLoader::didFinishLoading): (WebCore::MainResourceLoader::load):
  • loader/MainResourceLoader.h: (WebCore::MainResourceLoader::applicationCache):
  • loader/ResourceLoader.cpp: (WebCore::ResourceLoader::ResourceLoader): (WebCore::ResourceLoader::load):
  • loader/ResourceLoader.h:
  • loader/appcache/ApplicationCacheGroup.h: (WebCore::ApplicationCacheGroup::finishedLoadingMainResource):
11:19 Changeset [32323] by aroben@apple.com

Fix pixel tests

  • Scripts/run-webkit-tests: (sub readFromDumpToolWithTimer): Use readline instead of read to ensure that we don't read past the #EOF marker.
11:11 Changeset [32322] by ap@webkit.org

Reviewed by Darin.

Move collector main thread initialization from WebKit/win to KJS::initializeThreading.

11:10 Changeset [32321] by ggaren@apple.com

2008-04-21 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.


Avoid creating unnecessary ScopeChain objects, to reduce refcount churn.

SunSpider reports no change.

10:50 Changeset [32320] by eric@webkit.org

Reviewed by eseidel. Landed by eseidel.

Add FrameLoader::policyDocumentLoader, and change
provisionalDocumentLoader to have a const signature to be
consistent with documentLoader and activeDocumentLoader.

  • WebCore.base.exp:
  • WebCore.order:
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::policyDocumentLoader): (WebCore::FrameLoader::provisionalDocumentLoader):
  • loader/FrameLoader.h:
10:46 SquirrelFish edited by ggaren@apple.com
(diff)
10:23 SquirrelFish edited by ggaren@apple.com
(diff)
09:09 Changeset [32319] by aroben@apple.com

MSVC build fix

Reviewed by Alexey Proskuryakov.

  • kjs/ustring.h: (KJS::UString::cost): Disable a warning about assigning a 32-bit size_t into a 31-bit size_t.
08:39 Changeset [32318] by jchaffraix@webkit.org

2008-04-21 Julien Chaffraix <jchaffraix@webkit.org>

Not reviewed, add missing files in my previous commit.

08:34 Changeset [32317] by eric@webkit.org

Stamped by Anders.

Make test work in Opera. Fix bug in results serialization.

  • fast/js/resources/function-toString-parentheses.js:
07:43 Changeset [32316] by jchaffraix@webkit.org

2008-04-21 Julien Chaffraix <jchaffraix@webkit.org>

Reviewed by Ap.

Bug 13596: Implement .onprogress handler on XMLHttpRequest objects to support
progressive download content length information.

  • Add the onprogress attribute to XMLHttpRequest and the necessary bindings.
  • We use a custom event XMLHttpRequestProgressEvent that is derived from ProgressEvent (as specified by the XHR2 specification) but also implement LSProgressEvent interface (to be compliant with Firefox event).

Test: http/tests/xmlhttprequest/infoOnProgressEvent.html

2008-04-21 Julien Chaffraix <jchaffraix@webkit.org>

Reviewed by Ap.

Bug 13596: Implement .onprogress handler on XMLHttpRequest objects to support progressive download content length information.

  • http/tests/xmlhttprequest/infoOnProgressEvent-expected.txt: Added.
  • http/tests/xmlhttprequest/infoOnProgressEvent.html: Added.
07:29 Changeset [32315] by hausmann@webkit.org

Michael Goddard <michael.goddard@trolltech.com>

Better handle Qt binding object lifetime in JS.
Add explicit marking of JS objects created for Qt
bindings, and remove the gcProtect calls.

07:24 Changeset [32314] by hausmann@webkit.org

Add better support for RuntimeArray type conversions.
It seems that RuntimeArray claims to inherit ArrayInstance
(in the JS sense), but the C++ class doesn't, so properly
access RuntimeArrays. Also, properly support turning
a JS object into a QVariantMap, since we support the
reverse.

06:57 Changeset [32313] by hausmann@webkit.org

Changed the return type of QWebFrame::evaluateJavaScript from a QString to a QVariant.

06:47 Changeset [32312] by hausmann@webkit.org

Simon Hausmann <hausmann@webkit.org>

Fix painting of text fields in the CleanLooks style.

The CleanLooks style calls painter->drawRect() and expects a painter
that has no brush set. This is a fairly common assumption and therefore
we now always set the brush to NoBrush before calling a style. This
is done by centralizing the painter setup code into StylePainter
and restore the old brush in the StylePainter destructor.

In addition for textfields it is not necessary anymore to draw
PE_FrameLineEdit as we set the lineWidth in the style option correctly
and it's the style responsibility (QCommonStyle usually) to draw
PE_FrameLineEdit.

06:47 Changeset [32311] by hausmann@webkit.org

Olivier Goffart <ogoffart@trolltech.com>

Fixes copy and paste of international characters.

When exporting HTML to the clipboard we need meta tags for now that confirm the
conversion to utf-8 done inside QClipboard.

06:47 Changeset [32310] by hausmann@webkit.org

Olivier Goffart <ogoffart@trolltech.com>

Fixes: Copying on X11 doesn't always work in webkit

Calling QClipboard::clear right before QClipboard::setData create a race condition with klipper. So don't call QClipboard::clear since it's not required.

06:40 Changeset [32309] by hausmann@webkit.org

Simon Hausmann <hausmann@webkit.org>

Fixes redundant "Fonts" submenu in default lineedits that has only disabled items.

Don't show sub-menus that have only actions that are disabled.

06:40 Changeset [32308] by hausmann@webkit.org

Kavindra Devi Palaraja <kdpalara@trolltech.com>.

Lots of documentation fixes, fixed all qdoc warnings.

05:24 Changeset [32307] by hausmann@webkit.org

Marius Bugge Monsen <mmonsen@trolltech.com>

Fix compile failure on solaris-cc

05:11 Changeset [32306] by hausmann@webkit.org

Holger Hans Peter Freyther <holger.freyther@trolltech.com>

Build fix for Qt 4.3

  • When building WebCore/internal make sure the QT_[BEGIN,END]_NAMESPACE is always defined. Do this by adding defines to the compiler line
  • For users of our API this is not feasible. Every public header file should include qwebkitglobal.h. Define the QT_BEGIN_NAMESPACE and QT_END_NAMESPACE when we are building everything < 4.4.0 and don't have them defined.
04:16 Changeset [32305] by hausmann@webkit.org

Holger Hans Peter Freyther <holger.freyther@trolltech.com>

  • Assume that our lineedit has a frame. This is needed for the motif style
04:15 Changeset [32304] by hausmann@webkit.org

Holger Hans Peter Freyther <holger.freyther@trolltech.com>

  • Follow the windows render theme when determining whether to style

listboxes or not.

04:15 Changeset [32303] by hausmann@webkit.org

Holger Hans Peter Freyther <holger.freyther@trolltech.com>

  • Try to bring the notImplemented implementations closer together. This will print each unimplemted method name only once.
  • We might want to change wtf/Assertions.cpp to use qDebug
03:46 Changeset [32302] by hausmann@webkit.org

2008-04-21 Holger Hans Peter Freyther <holger.freyther@trolltech.com>

Reviewed by Simon.

  • Remove the special Qt ctor of BitmapImage as it did not work. The Bitmap returned 0 as width and after intialising drawing would fail. BitmapImage relies on a proper ImageSource.
  • Instead of adding more special cases to BitmapImage create a new class called StillImage which is getting one QPixmap and is implementing Image::draw and Image::size. This is working well for the images created using Image::loadPlatformResource.
03:38 Changeset [32301] by hausmann@webkit.org

Whoops, fixed file permissions to not be executable.

03:28 Changeset [32300] by hausmann@webkit.org

Holger Hans Peter Freyther <holger.freyther@trolltech.com>

  • Initialize the WebGraphics with the one found in WebCore
03:28 Changeset [32299] by hausmann@webkit.org

Holger Hans Peter Freyther <holger.freyther@trolltech.com>

  • Package the Resources into a qrc
03:28 Changeset [32298] by hausmann@webkit.org

Holger Hans Peter Freyther <holger.freyther@trolltech.com>

  • Make sure every resource is available als png as well.
03:27 Changeset [32297] by hausmann@webkit.org

Holger Hans Peter Freyther <holger.freyther@trolltech.com>

  • Allow TextAreas to be resized.
  • No QWebSettings for this is introduced.
03:08 Changeset [32296] by hausmann@webkit.org

Simon Hausmann <shausman@trolltech.com>

Fixes: QWebView::url property behaviour strange in designer

Added QWebView/QWebFrame::setUrl, which unlike load() clears the view immediately, schedules a load of the url but also makes sure url() returns the set url. This setter is now also used for the url property.

03:06 Changeset [32295] by mjs@apple.com

2008-04-21 Maciej Stachowiak <mjs@apple.com>

Rubber stamped by Alexey.


Add some braces.x

  • kjs/testkjs.cpp: (runWithScripts):
02:55 Changeset [32294] by hausmann@webkit.org

Andre Poenitz <andre.poenitz@trolltech.com>

Fixe compilation with Qt namespaces

02:36 Changeset [32293] by hausmann@webkit.org

When printing on high resolution printers we need to scale the painter accordingly (for now).

02:35 Changeset [32292] by hausmann@webkit.org

Provide a print preview in the QtLauncher

01:34 Changeset [32291] by mjs@apple.com

2008-04-21 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.


  • only print "End:" output when -d flag is passed.


This fixes half of our failing JSC regression tests.

  • kjs/testkjs.cpp: (runWithScripts):
00:39 Changeset [32290] by mjs@apple.com

2008-04-21 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Maciej.

Add support for variable declarations in eval code.

  • VM/CodeBlock.h: (KJS::EvalCodeBlock::EvalCodeBlock):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::CodeGenerator):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::execute):
  • VM/Machine.h:
  • kjs/function.cpp: (KJS::globalFuncEval):
  • kjs/nodes.cpp: (KJS::EvalNode::generateCode):
  • kjs/nodes.h: (KJS::EvalNode::):

04/20/08:

23:56 Changeset [32289] by oliver@apple.com

Throw exceptions for invalid continue, break, and return statements.

Reviewed by Maciej

Simple refactoring and extension of Cameron's AssignErrorNode, etc patch

23:35 Changeset [32288] by alp@webkit.org

2008-04-20 Sriram Neelakandan <sriram.neelakandan@gmail.com>

Reviewed by Alp Toker.

Implement FileSystemGtk's getFileModificationTime() with GLib.

  • platform/gtk/FileSystemGtk.cpp: (WebCore::getFileModificationTime):
23:02 Changeset [32287] by alp@webkit.org

2008-04-20 Christian Persch <chpe@gnome.org>

Reviewed by Alp Toker.

Bundle GTK+ Xt compatibility code from Mozilla. These files are used
by all currently proposed GTK+ plugin patches and will make the
proposed patches smaller and easier to review.

These files should be kept as close to the upstream versions as
possible so fixes can be shared between projects and to ensure
compatibility with the reference implementation.

  • plugins/gtk/gtk2xtbin.c: Added. (xt_event_prepare): (xt_event_check): (xt_event_dispatch): (xt_event_polling_timer_callback): (gtk_xtbin_get_type): (gtk_xtbin_class_init): (gtk_xtbin_init): (gtk_xtbin_realize): (gtk_xtbin_new): (gtk_xtbin_set_position): (gtk_xtbin_resize): (gtk_xtbin_unrealize): (gtk_xtbin_destroy): (xt_client_init): (xt_client_create): (xt_client_unrealize): (xt_client_destroy): (xt_client_set_info): (xt_client_handle_xembed_message): (xt_client_event_handler): (send_xembed_message): (error_handler): (trap_errors): (untrap_error): (xt_client_focus_listener): (xt_add_focus_listener): (xt_remove_focus_listener): (xt_add_focus_listener_tree):
  • plugins/gtk/gtk2xtbin.h: Added.
22:43 SquirrelFishPerfIdeas edited by mjs@apple.com
(diff)
22:17 SquirrelFishPerfIdeas edited by mjs@apple.com
(diff)
22:16 Changeset [32286] by ggaren@apple.com

2008-04-20 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.


Removed Machine.cpp from AllInOneFile.cpp, and manually inlined a few
things that used to be inlined automatically.


1.9% speedup on SunSpider.


My hope is that we'll face fewer surprises in Machine.cpp codegen, now
that GCC is making fewer decisions. The speedup seems to confirm that.

20:22 SquirrelFishPerfIdeas edited by mjs@apple.com
(diff)
19:55 Changeset [32285] by oliver@apple.com

Bug 18642: Iterator context may get placed into the return register, leading to much badness
<https://bugs.webkit.org/show_bug.cgi?id=18642>

Reviewed by Maciej

To prevent incorrectly reusing what will become the result register for
eval and global code execution, we need to request and ref the destination
in advance of codegen. Unfortunately this may lead to unnecessary copying,
although in future we can probably limit this. Curiously SunSpider shows
a progression in a number of tests, although it comes out as a wash overall.

This also fixes one of the regressions in run-javascriptcore-tests.

18:56 SquirrelFishPerfIdeas edited by mjs@apple.com
(diff)
17:34 SquirrelFishPerfIdeas edited by mjs@apple.com
(diff)
17:30 SquirrelFishPerfIdeas edited by mjs@apple.com
(diff)
17:30 SquirrelFishPerfIdeas edited by mjs@apple.com
(diff)
17:29 SquirrelFishPerfIdeas created by mjs@apple.com
17:22 Changeset [32284] by alp@webkit.org

2008-04-20 Dirk Schulze <vbs85@gmx.de>

Reviewed by Alp Toker.

http://bugs.webkit.org/show_bug.cgi?id=15449
[CAIRO] SVG gradients do not work properly

Fixed SVG-gradients in Cairo.

  • svg/graphics/cairo/SVGPaintServerGradientCairo.cpp: (WebCore::SVGPaintServerGradient::setup):
17:16 SquirrelFish edited by mjs@apple.com
(diff)
17:05 ApplicationsGtk edited by alp@atoker.com
Add Skipstone and tinymail UI library (diff)
16:46 SquirrelFish edited by mjs@apple.com
(diff)
16:29 Changeset [32283] by mjs@apple.com

2008-04-20 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Maciej.

Add support for AssignErrorNode, PrefixErrorNode, and PostfixErrorNode.

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitCreateError):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::PostfixErrorNode::emitCode): (KJS::PrefixErrorNode::emitCode): (KJS::AssignErrorNode::emitCode):
  • kjs/nodes.h:
16:09 SquirrelFishBlockers edited by mjs@apple.com
(diff)
16:08 SquirrelFishBlockers edited by mjs@apple.com
(diff)
16:08 SquirrelFishBlockers edited by mjs@apple.com
(diff)
16:03 SquirrelFishBlockers edited by mjs@apple.com
(diff)
16:01 SquirrelFishBlockers created by mjs@apple.com
15:59 SquirrelFish edited by mjs@apple.com
(diff)
15:57 squirrelfish edited by mjs@apple.com
(diff)
15:56 WikiStart edited by mjs@apple.com
(diff)
15:55 SquirrelFish created by mjs@apple.com
13:48 Changeset [32282] by pewtermoose@webkit.org

2008-04-20 Matt Lilek <webkit@mattlilek.com>

Mysteriously reviewed by mitz|away.

Bug 18111: Closing a tab while dragging crashes Safari
https://bugs.webkit.org/show_bug.cgi?id=18111

Null check the page before handling drag events.

  • WebView/WebView.mm: (-[WebView draggingUpdated:]): (-[WebView draggingExited:]):
01:47 Changeset [32281] by oliver@apple.com

Provide line number information in exceptions

Reviewed by Geoff and Mark

Simple patch, adds line number information metadata to CodeBlock
and a simple method to get the line number responsible for a given
Instruction*.

00:28 Changeset [32280] by alp@webkit.org

2008-04-20 Simon Hausmann <hausmann@webkit.org>

Reviewed by Alp Toker.

http://bugs.webkit.org/show_bug.cgi?id=18578
Share the printing code between the Gtk and the Qt port

00:09 Changeset [32279] by oliver@apple.com

Provide "sourceURL" in exceptions

Reviewed by Maciej

04/19/08:

23:59 Changeset [32278] by alp@webkit.org

2008-04-19 Alp Toker <alp@nuanti.com>

Reviewed by Mark Rowe.

Complete the Cairo (CSS) gradient implementation.

  • platform/graphics/Gradient.h:
  • platform/graphics/cairo/GradientCairo.cpp: (WebCore::Gradient::platformDestroy): (WebCore::Gradient::fill):
23:13 Changeset [32277] by oliver@apple.com

Don't call emitCode directly on subnodes, instead use CodeGenerator::emitNode

Reviewed by Maciej

This patch just a preparation for tracking line numbers.

22:34 Changeset [32276] by alp@webkit.org

2008-04-19 Alp Toker <alp@nuanti.com>

Reviewed by Dave Hyatt.

Restore Cairo canvas support following the recent changes in
BitmapImage and ImageBuffer integrating canvas with CSS. Some
drawing regressions remain unfixed.

  • platform/graphics/BitmapImage.h:
  • platform/graphics/ImageBuffer.h:
  • platform/graphics/cairo/ImageBufferCairo.cpp: (WebCore::ImageBuffer::image):
  • platform/graphics/cairo/ImageCairo.cpp: (WebCore::BitmapImage::BitmapImage): (WebCore::BitmapImage::draw):
  • platform/graphics/cairo/ImageSourceCairo.cpp: (WebCore::ImageSource::createFrameAtIndex):
21:26 Changeset [32275] by mitz@apple.com

WebCore:

Reviewed by Dave Hyatt.

Test: fast/text/trailing-white-space-2.html

  • platform/text/BidiResolver.h: (WebCore::::moveRunToEnd): (WebCore::::moveRunToBeginning):
  • rendering/bidi.cpp: (WebCore::RenderBlock::layoutInlineChildren):

LayoutTests:

Reviewed by Dave Hyatt.

  • fast/text/trailing-white-space-2.html: Copied from LayoutTests/fast/text/trailing-white-space.html.
  • platform/mac/fast/text/trailing-white-space-2-expected.checksum: Added.
  • platform/mac/fast/text/trailing-white-space-2-expected.png: Added.
  • platform/mac/fast/text/trailing-white-space-2-expected.txt: Added.
19:27 Changeset [32274] by pewtermoose@webkit.org

2008-04-19 Matt Lilek <webkit@mattlilek.com>

Not reviewed, Windows build fix - copy the profiler headers in all
configurations, not just Debug_Internal.

19:10 Changeset [32273] by mrowe@apple.com

Merge r31964.

19:10 Changeset [32272] by mrowe@apple.com

Merge r32023.

19:06 Changeset [32271] by mrowe@apple.com

Versioning.

18:58 Changeset [32270] by mrowe@apple.com

New tag.

15:34 Changeset [32269] by oliver@apple.com

Bug 18619: Support continue, break, and return in try .. finally blocks
<https://bugs.webkit.org/show_bug.cgi?id=18619>

Reviewed by Maciej

This patch replaces the current partial finally support (which uses code
duplication to achieve what it does) with a subroutine based approach.
This has a number of advantages over code duplication:

  • Reduced code size
  • Simplified exception handling as the finaliser code only exists in one place, so no "magic" is needed to get the correct handler for a finaliser.
  • When we support instruction to line number mapping we won't need to worry about the dramatic code movement caused by duplication

On the downside it is necessary to add two new opcodes, op_jsr and op_sret
to enter and exit the finaliser subroutines, happily SunSpider reports
a performance progression (gcc amazes me) and ubench reports a wash.

While jsr and sret provide a mechanism that allows us to enter and exit
any arbitrary finaliser we need to, it was still necessary to increase
the amount of information tracked when entering and exiting both finaliser
scopes and dynamic scopes ("with"). This means "scopeDepth" is now
the combination of "finaliserDepth" and "dynamicScopeDepth". We also
now use a scopeContextStack to ensure that we pop scopes and execute
finalisers in the correct order. This increases the cost of "with" nodes
during codegen, but it should not be significant enough to effect real
world performance and greatly simplifies codegen for return, break and
continue when interacting with finalisers.

14:11 Changeset [32268] by alp@webkit.org

2008-04-19 Alp Toker <alp@nuanti.com>

Reviewed by Maciej.

Enable visited link tracking by default at startup.

With this patch, the GTK+ port rendering of Acid3 now matches the
reference page.

  • webkit/webkitprivate.cpp: (WebKit::core): (webkit_init):
13:34 Changeset [32267] by jchaffraix@webkit.org

2008-04-19 Julien Chaffraix <jchaffraix@webkit.org>

Qt build fix (renderer() -> contentRenderer()).

  • Api/qwebframe.cpp: (QWebFrame::renderTreeDump): (QWebFrame::render):
09:00 Changeset [32266] by beidson@apple.com

2008-04-19 Brady Eidson <beidson@apple.com>

Update window-properties to add the profiler and fix a layout test

  • fast/dom/Window/window-properties-expected.txt:
09:00 Changeset [32265] by kevino@webkit.org

wx build fix. renderer() -> contentRenderer()

02:39 Changeset [32264] by alp@webkit.org

2008-04-19 Alp Toker <alp@nuanti.com>

Reviewed by Nikolas.

Add text shadow support for simple text in FontCairo.

  • platform/graphics/cairo/FontCairo.cpp: (WebCore::Font::drawGlyphs):
02:21 Changeset [32263] by hyatt@apple.com

2008-04-19 David Hyatt <hyatt@apple.com>

Fix a minor typo in CSSGradientValue's cssText() method.

Reviewed by olliej

  • css/CSSGradientValue.cpp: (WebCore::CSSGradientValue::cssText):
00:56 Changeset [32262] by alp@webkit.org

2008-04-19 Mike Hommey <glandium@debian.org>

Reviewed by Alp Toker.

Don't build GtkLauncher and DumpRenderTree with rpath.

Don't build testkjs with rpath.

00:26 Changeset [32261] by beidson@apple.com

WebCore:

2008-04-19 Brady Eidson <beidson@apple.com>

Reviewed by Tim Hatcher

Add LocalStorageDatabasePath to the settings for the location of persistent local storage.

  • WebCore.base.exp:
  • page/Settings.cpp: (WebCore::Settings::setLocalStorageDatabasePath):
  • page/Settings.h: (WebCore::Settings::localStorageDatabasePath):

WebKit/mac:

2008-04-19 Brady Eidson <beidson@apple.com>

Reviewed by Tim Hatcher

Add a WebPreference for the path of the local storage persistent store.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.m: (-[WebPreferences _localStorageDatabasePath]): (-[WebPreferences _setLocalStorageDatabasePath:]):
  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm: (-[WebView _preferencesChangedNotification:]):

04/18/08:

22:46 Changeset [32260] by jhoneycutt@apple.com

2008-04-18 Jon Honeycutt <jhoneycutt@apple.com>

Fix build after r32231.

  • WebFrame.cpp: (WebFrame::renderTreeAsExternalRepresentation): renderer() -> contentRenderer()
22:39 Changeset [32259] by kevino@webkit.org

wx build fixes. Rename LocalStorage.h to LocalStorageEntry.h to avoid header detection issues between WebCore/storage/LocalStorage.h and it, and add $(PROFILER_SOURCES) to the wx JSCore build.

22:19 Changeset [32258] by alp@webkit.org

Fix changelog entries for r32257 (reference to wrong bug).
This commit was unrelated to plugin support.

22:16 Changeset [32257] by alp@webkit.org

2008-04-18 Jan Michael Alonzo <jmalonzo@unpluggable.com>

Reviewed by Alp Toker.

http://bugs.webkit.org/show_bug.cgi?id=14750
[gtk] Implement plugin support in GTK backend

Cleanups.

22:08 Changeset [32256] by jhoneycutt@apple.com

2008-04-18 Jon Honeycutt <jhoneycutt@apple.com>

Fix build after r32231.

  • WebView.cpp: (WebView::paintIntoBackingStore): renderer() -> contentRenderer() (WebView::elementAtPoint): Same.
22:02 Changeset [32255] by jhoneycutt@apple.com

2008-04-18 Jon Honeycutt <jhoneycutt@apple.com>

  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Windows build fix.
21:01 Changeset [32254] by jhoneycutt@apple.com

2008-04-18 Jon Honeycutt <jhoneycutt@apple.com>

  • AccessibleBase.cpp: Build fix for copy/paste error.
20:54 Changeset [32253] by jhoneycutt@apple.com

2008-04-18 Jon Honeycutt <jhoneycutt@apple.com>

Reviewed by Darin.

Implement IAccessible::get_accChild().

  • AccessibleBase.cpp: (AccessibleBase::get_accChild): Call getAccessibilityObjectForChild to find the AccessibilityObject for the VARIANT vChild. Get the AccessibilityObjectWrapper for the child, add a ref, and pass it back. (AccessibleBase::getAccessibilityObjectForChild): Added; finds the AccessibilityObject referred to by a VARIANT, or returns a COM error on failure. (AccessibleBase::wrapper): Added; returns the wrapper for the AccessibilityObject. Creates one if necessary.
  • AccessibleBase.h: Added definitions for wrapper() and getAccessibilityObjectForChild().
20:53 Changeset [32252] by jhoneycutt@apple.com

2008-04-18 Jon Honeycutt <jhoneycutt@apple.com>

Reviewed by Darin, Ollie.

  • AccessibleBase.cpp: (AccessibleBase::get_accChildCount): Implement get_accChildCount.
20:53 Changeset [32251] by jhoneycutt@apple.com

2008-04-17 Jon Honeycutt <jhoneycutt@apple.com>

Reviewed by Darin.

Implement IAccessible::get_accParent().

  • AccessibleBase.cpp: (AccessibleBase::get_accParent): Call AccessibleObjectFromWindow with OBJID_WINDOW. This will be handled by Windows to return the default accessible object for the WebView, because we only handle OBJID_CLIENT.
  • WebView.cpp: (WebView::AccessibleObjectFromWindow): Added; calls through to the AccessibleObjectFromWindow in the MSAA DLL.
  • WebView.h: Added definition for AccessibleObjectFromWindow.
20:52 Changeset [32250] by jhoneycutt@apple.com

2008-04-17 Jon Honeycutt <jhoneycutt@apple.com>

Reviewed by Darin.

Return an AccessibleDocument when our root accessible object is queried
for.

  • AccessibleDocument.cpp: Added; represents an AccessibilityObject that itself represents a Document. (AccessibleDocument::AccessibleDocument): Initialize AccessibleBase with the AccessibilityObject for this Document.
  • AccessibleDocument.h: Added.
  • WebFrame.cpp: (WebFrame::accessible): If m_accessible is 0, or if Document in this frame does not match the Document in the cached m_accessible object, create a new AccessibleDocument for this frame's Document.
  • WebFrame.h: Swap AccessibleBase.h for AccessibleDocument.h
  • WebKit.vcproj/WebKit.vcproj: Add AccessibleDocument.{h,cpp}
20:52 Changeset [32249] by jhoneycutt@apple.com

2008-04-17 Jon Honeycutt <jhoneycutt@apple.com>

Reviewed by Darin, Alice.

Implement AXObjectCache::detachWrapper() on Windows.

  • page/win/AXObjectCacheWin.cpp: (WebCore::AXObjectCache::detachWrapper): If this object has a wrapper, call its detach() method.
20:51 Changeset [32248] by jhoneycutt@apple.com

2008-04-17 Jon Honeycutt <jhoneycutt@apple.com>

Reviewed by Darin.

Respond to WM_GETOBJECT messages. Currently returns NULL.

  • WebFrame.cpp: (WebFrame::accessible): Added; will return the root accessible object for this frame.
  • WebFrame.h: Added definition for accessible().
  • WebView.cpp: (WebViewWndProc): Handle WM_GETOBJECT messages by calling onGetObject(). (WebView::onGetObject): Added; enables the AXObjectCache in WebCore, queries the top-level frame for its root accessible object, and loads the MSAA DLL and locates its LresultFromObject function. If calling LresultFromObject succeeds, it returns a reference to the accessible object to pass back to Windows. If not, we return false and let Windows handle the request through DefWindowProc.
  • WebView.h: Added definition for onGetObject().
20:37 Changeset [32247] by antti@apple.com

2008-04-18 Antti Koivisto <antti@apple.com>

Update test results.

  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-06-t-expected.txt:
  • platform/mac-leopard/svg/W3C-SVG-1.1/animate-elem-07-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-08-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-33-t-expected.txt:
20:32 Changeset [32246] by alp@webkit.org

2008-04-18 Marco Barisione <marco.barisione@collabora.co.uk>

Reviewed by Alexey.

http://bugs.webkit.org/show_bug.cgi?id=18357
[GTK] Enter on buttons doesn't work

  • platform/gtk/KeyEventGtk.cpp: (WebCore::singleCharacterString): Set the text of a keyboard event for GDK_ISO_Enter, GDK_KP_Enter, GDK_Return to "\r" instead of an empty string.
20:29 Changeset [32245] by alp@webkit.org

2008-04-18 Marco Barisione <marco@barisione.org>

Reviewed by Alp Toker.

https://bugs.webkit.org/show_bug.cgi?id=18576
[GTK] windowsKeyCodeForKeyEvent doesn't handle GDK_ISO_Enter and
GDK_KP_Enter

  • platform/gtk/KeyEventGtk.cpp: (WebCore::windowsKeyCodeForKeyEvent): handle GDK_ISO_Enter and GDK_KP_Enter in windowsKeyCodeForKeyEvent.
19:58 SuccessfulPortHowTo created by ddkilzer@webkit.org
19:50 Changeset [32244] by mrowe@apple.com

Gtk build fix.

19:34 WikiStart edited by ddkilzer@webkit.org
Added link to Successful Port How To page. (diff)
18:34 Changeset [32243] by antti@apple.com

2008-04-18 Antti Koivisto <antti@apple.com>

Reviewed by Oliver.

Implement path animation for <animateMotion>.


SVG test suite tests
animate-elem-07-t.svg
animate-elem-08-t.svg
animate-elem-24-t.svg
animate-elem-30-t.svg

  • svg/SVGAnimateMotionElement.cpp: (WebCore::SVGAnimateMotionElement::SVGAnimateMotionElement): (WebCore::SVGAnimateMotionElement::hasValidTarget): (WebCore::SVGAnimateMotionElement::parseMappedAttribute): (WebCore::SVGAnimateMotionElement::rotateMode): (WebCore::SVGAnimateMotionElement::animationPath): (WebCore::SVGAnimateMotionElement::calculateAnimatedValue): (WebCore::SVGAnimateMotionElement::applyResultsToTarget):
  • svg/SVGAnimateMotionElement.h: (WebCore::SVGAnimateMotionElement::):
  • svg/SVGAnimationElement.cpp: (WebCore::SVGAnimationElement::animationMode): (WebCore::SVGAnimationElement::startedActiveInterval):
  • svg/SVGAnimationElement.h: (WebCore::SVGAnimationElement::): (WebCore::SVGAnimationElement::calculateDistance): (WebCore::SVGAnimationElement::animationPath):
18:31 Changeset [32242] by mrowe@apple.com

Silence some warnings that GCC 4.3 triggers.

Rubber-stamped by Antti Koivisto.

18:12 Changeset [32241] by beidson@apple.com

WebKit/mac:

2008-04-18 Brady Eidson <beidson@apple.com>

Reviewed by Sam Weinig

Don't clear the PageGroup on _close, as the WebCore::Page destructor already does this.
No reason to do the work twice...

  • WebView/WebView.mm: (-[WebView _close]):

WebKit/win:

2008-04-18 Brady Eidson <beidson@apple.com>

Reviewed by Sam Weinig

Don't clear the PageGroup on _close, as the WebCore::Page destructor already does this.
No reason to do the work twice...

  • WebView.cpp: (WebView::close):
18:01 Changeset [32240] by mrowe@apple.com

Gtk build fix after r32231.

17:15 Changeset [32239] by beidson@apple.com

2008-04-18 Brady Eidson <beidson@apple.com>

Rubberstamped by Mark Rowe

Roll out http://trac.webkit.org/projects/webkit/changeset/32204 as it was an incorrect build fix.
The feature in question was NOT database support.

The proper build fix was later applied by Mark in http://trac.webkit.org/projects/webkit/changeset/32225

  • page/PageGroup.cpp: (WebCore::PageGroup::localStorage):
16:58 Changeset [32238] by weinig@apple.com

2008-04-18 Sam Weinig <sam@webkit.org>

Disable this test until we can figure out why it is failing on some systems.

  • fast/canvas/toDataURL-supportedTypes.html: Removed.
  • fast/canvas/toDataURL-supportedTypes.html-disabled: Copied from fast/canvas/toDataURL-supportedTypes.html.
16:56 Changeset [32237] by beidson@apple.com

2008-04-18 Brady Eidson <beidson@apple.com>

Reviewed by Darin and Sam

Don't forget PageGroups when their last Page goes away, as this hurts visited links and anything
else that will be per-PageGroup in the future (such as LocalStorage).

This also fixes a leak, since PageGroups are ref-counted and therefore clearing the raw pointer out
of the PageGroups map without manual deletion leaked it!

  • page/Page.cpp: (WebCore::Page::setGroupName):
16:19 Changeset [32236] by mitz@apple.com

WebCore:

Reviewed by Brady Eidson.

  • fix <rdar://problem/5872671> REGRESSION (3.1.1-TOT): Repro crash going to Ortega Park home page

Test: fast/dynamic/5872671.html

  • rendering/bidi.cpp: (WebCore::RenderBlock::layoutInlineChildren): Added a missing null check.

LayoutTests:

Reviewed by Brady Eidson.

  • test for <rdar://problem/5872671> REGRESSION (3.1.1-TOT): Repro crash going to Ortega Park home page
  • fast/dynamic/5872671-expected.txt: Added.
  • fast/dynamic/5872671.html: Added.
15:58 Changeset [32235] by weinig@apple.com

2008-04-18 Sam Weinig <sam@webkit.org>

Rubber-stamped by Mark Rowe.

responseText and responseXML don't throw exceptions so they don't need an ExceptionCode parameter.

  • bindings/js/JSXMLHttpRequestCustom.cpp:
  • xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::responseText): (WebCore::XMLHttpRequest::responseXML):
  • xml/XMLHttpRequest.h:
  • xml/XMLHttpRequest.idl:
15:41 Changeset [32234] by kmccullough@apple.com

2008-04-18 Kevin McCullough <kmccullough@apple.com>

Reviewed by Sam.

-<rdar://problem/5770054> JavaScript profiler (10928)

  • Use Deque instead of Vector since the profiler uses prepend a lot and deque is faster at that.
  • profiler/FunctionCallProfile.h: (KJS::FunctionCallProfile::milliSecs): Corrected the name to match its output.
  • wtf/Deque.h: (WTF::deleteAllValues):
15:17 Changeset [32233] by kmccullough@apple.com

2008-04-18 Kevin McCullough <kmccullough@apple.com>

Reviewed by Sam.

  • Build fix.
  • page/Console.cpp: (WebCore::Console::profile):
  • page/Console.h:
  • page/Console.idl:
14:59 Changeset [32232] by eric@webkit.org

Reviewed by darin.

Fix probable crasher caused by invalid static_cast
https://bugs.webkit.org/show_bug.cgi?id=18585

  • page/Frame.cpp: (WebCore::Frame::contentRenderer): (WebCore::Frame::ownerRenderer):
  • rendering/RenderObject.h: sort the "is*" functions (WebCore::RenderObject::isApplet): (WebCore::RenderObject::isBR): (WebCore::RenderObject::isBlockFlow): (WebCore::RenderObject::isCounter): (WebCore::RenderObject::isFrame): (WebCore::RenderObject::isFrameSet): (WebCore::RenderObject::isImage): (WebCore::RenderObject::isInlineBlockOrInlineTable): (WebCore::RenderObject::isInlineFlow): (WebCore::RenderObject::isListBox): (WebCore::RenderObject::isListItem): (WebCore::RenderObject::isListMarker): (WebCore::RenderObject::isMedia): (WebCore::RenderObject::isMenuList): (WebCore::RenderObject::isRenderBlock): (WebCore::RenderObject::isRenderImage): (WebCore::RenderObject::isRenderInline): (WebCore::RenderObject::isRenderPart): (WebCore::RenderObject::isRenderView): (WebCore::RenderObject::isSlider): (WebCore::RenderObject::isTable): (WebCore::RenderObject::isTableCell): (WebCore::RenderObject::isTableCol): (WebCore::RenderObject::isTableRow): (WebCore::RenderObject::isTableSection): (WebCore::RenderObject::isTextArea):
  • rendering/RenderPart.h:
14:59 Changeset [32231] by eric@webkit.org

Reviewed by beth.

Rename Frame::renderer() to contentRenderer() and fix uses.

  • WebCore.base.exp:
  • editing/Editor.cpp: (WebCore::Editor::respondToChangedContents):
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::gotoAnchor):
  • page/DragController.cpp: (WebCore::DragController::canProcessDrag): (WebCore::DragController::mayStartDragAtEventLocation): (WebCore::DragController::startDrag):
  • page/EventHandler.cpp: (WebCore::EventHandler::eventMayStartDrag): (WebCore::EventHandler::updateSelectionForMouseDrag): (WebCore::EventHandler::hitTestResultAtPoint): (WebCore::EventHandler::hoverTimerFired): (WebCore::EventHandler::handleDrag):
  • page/Frame.cpp: (WebCore::Frame::selectionLayoutChanged): (WebCore::Frame::contentRenderer): (WebCore::Frame::paint): (WebCore::Frame::markAllMatchesForText): (WebCore::Frame::documentAtPoint):
  • page/Frame.h:
  • page/FrameView.cpp: (WebCore::FrameView::~FrameView): (WebCore::FrameView::adjustViewSize): (WebCore::FrameView::layout): (WebCore::FrameView::scheduleRelayoutOfSubtree): (WebCore::FrameView::needsLayout): (WebCore::FrameView::setNeedsLayout): (WebCore::FrameView::updateControlTints):
  • rendering/RenderTreeAsText.cpp: (WebCore::write):
  • svg/graphics/SVGImage.cpp: (WebCore::SVGImage::nativeImageForCurrentFrame):
14:56 Changeset [32230] by antti@apple.com

2008-04-18 Antti Koivisto <antti@apple.com>

Reviewed by Oliver.

https://bugs.webkit.org/show_bug.cgi?id=18551
REGRESSION (r31801?): Crash in ContainerNode::removedFromDocument on many SVG tests


Fix for test svg/W3C-SVG-1.1/animate-elem-62-t.svg which was still
crashing under guard malloc after the previous fix.


If the event base element was a parent of the current element, dereffing it during
removedFromDocument() would cause problems. Avoid this by not holding ref pointer
to the event base but instead checking from the ref count of the event listener whether
it is still alive and in need for unregistering.


This shold not be a problem for syncbase pointers since those are always animation elements
and leaf nodes.

  • svg/animation/SVGSMILElement.cpp: (WebCore::ConditionEventListener::ConditionEventListener): (WebCore::ConditionEventListener::unregister): (WebCore::ConditionEventListener::handleEvent): (WebCore::SVGSMILElement::connectConditions): (WebCore::SVGSMILElement::disconnectConditions): (WebCore::SVGSMILElement::createInstanceTimesFromSyncbase):
  • svg/animation/SVGSMILElement.h:
14:50 Changeset [32229] by kmccullough@apple.com

2008-04-18 Kevin McCullough <kmccullough@apple.com>

Reviewed by Sam and Adam.

-<rdar://problem/5770054> JavaScript profiler (10928)

  • Added support for console.profile() and console.profileEnd().
  • ForwardingHeaders/kjs/FunctionCallProfile.h: Added.
  • ForwardingHeaders/kjs/Profiler.h: Added.
  • page/Console.cpp: (WebCore::Console::profile): (WebCore::Console::profileEnd):
  • page/Console.h:
  • page/Console.idl:
14:49 Changeset [32228] by kmccullough@apple.com

2008-04-18 Kevin McCullough <kmccullough@apple.com>

Reviewed by Sam and Adam.

-<rdar://problem/5770054> JavaScript profiler (10928)

  • Cleaned up the header file and made some functions static, added a new, sane, printing function, and fixed a few minor bugs.
  • JavaScriptCore.exp:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • profiler/FunctionCallProfile.cpp: (KJS::FunctionCallProfile::didExecute): Removed assertion that time is

    0 because at ms resolution that may not be true and only cross-

    platform way to get time differences is in ms. (KJS::FunctionCallProfile::printDataInspectorStyle): Added a new printing function for dumping data in a sane style. (KJS::FunctionCallProfile::printDataSampleStyle): Fixed a bug where we displayed too much precision when printing our floats. Also added logic to make sure we don't display 0 because that doesn't make sense for a sampling profile.
  • profiler/FunctionCallProfile.h:
  • profiler/Profiler.cpp: Moved functions that could be static into the implementation, and chaned the ASSERTs to early returns. I did this because console.profile() is a JS function and so was being profiled but asserting because the profiler had not been started! In the future I would like to put the ASSERTs back and not profile the calls to console.profile() and console.profileEnd(). (KJS::Profiler::willExecute): (KJS::Profiler::didExecute): (KJS::getStackNames): Fixed a bug where the wrong ExecState was being used. (KJS::getFunctionName): (KJS::Profiler::printDataInspectorStyle):
  • profiler/Profiler.h:
14:25 Changeset [32227] by kevino@webkit.org

wx build 'fix'. Add loader/appcache sources to the build, and define ENABLE_DOM_STORAGE.

14:18 Changeset [32226] by mitz@apple.com

WebCore:

Reviewed by Darin Adler.

Test: fast/text/trailing-white-space.html

Made trailing white space on the line always behave like it has the base
bidi level of the block, meaning it will always go on the right (left)
of the line in a left-to-right (right-to-left) block. Made the trailing
white space vanish when it is next to a margin that the text should
be touching, and made its width not count when computing the center
point for center alignment.

  • platform/text/BidiResolver.h: (WebCore::::prependRun): Added.
  • rendering/RenderBlock.h:
  • rendering/bidi.cpp: (WebCore::RenderBlock::computeHorizontalPositionsForLine): Changed the logicallyLastRun parameter to an optional trailingSpaceRun and changed the alignment logic to implement the above rules. (WebCore::RenderBlock::layoutInlineChildren): Added code to identify when there is trailing white space that needs to be split into its own run and optionally re-ordered. (WebCore::RenderBlock::findNextLineBreak): Removed code that split some trailing space into a separate run in one special case.

LayoutTests:

Reviewed by Darin Adler.

  • fast/text/trailing-white-space.html: Added.
  • http/tests/misc/acid3-expected.txt:
  • platform/mac/editing/deleting/delete-block-table-expected.txt:
  • platform/mac/editing/deleting/delete-to-select-table-expected.txt:
  • platform/mac/editing/deleting/deletionUI-single-instance-expected.txt:
  • platform/mac/editing/execCommand/5482023-expected.txt:
  • platform/mac/editing/execCommand/boldSelection-expected.txt:
  • platform/mac/editing/execCommand/italicizeByCharacter-expected.txt:
  • platform/mac/editing/execCommand/modifyForeColorByCharacter-expected.txt:
  • platform/mac/editing/execCommand/print-expected.txt:
  • platform/mac/editing/execCommand/selectAll-expected.txt:
  • platform/mac/editing/execCommand/strikethroughSelection-expected.txt:
  • platform/mac/editing/inserting/editable-html-element-expected.txt:
  • platform/mac/editing/inserting/insert-div-027-expected.txt:
  • platform/mac/editing/pasteboard/5028447-expected.txt:
  • platform/mac/editing/pasteboard/block-wrappers-necessary-expected.checksum:
  • platform/mac/editing/pasteboard/block-wrappers-necessary-expected.png:
  • platform/mac/editing/pasteboard/block-wrappers-necessary-expected.txt:
  • platform/mac/editing/pasteboard/nested-blocks-with-text-area-expected.checksum:
  • platform/mac/editing/pasteboard/nested-blocks-with-text-area-expected.png:
  • platform/mac/editing/pasteboard/nested-blocks-with-text-area-expected.txt:
  • platform/mac/editing/pasteboard/nested-blocks-with-text-field-expected.checksum:
  • platform/mac/editing/pasteboard/nested-blocks-with-text-field-expected.png:
  • platform/mac/editing/pasteboard/nested-blocks-with-text-field-expected.txt:
  • platform/mac/editing/selection/5081257-1-expected.txt:
  • platform/mac/editing/selection/after-line-wrap-expected.txt:
  • platform/mac/editing/selection/mixed-editability-1-expected.txt:
  • platform/mac/editing/selection/select-all-001-expected.txt:
  • platform/mac/editing/selection/select-all-002-expected.txt:
  • platform/mac/editing/selection/select-all-003-expected.txt:
  • platform/mac/editing/style/apple-style-editable-mix-expected.txt:
  • platform/mac/editing/style/create-block-for-style-012-expected.checksum:
  • platform/mac/editing/style/create-block-for-style-012-expected.png:
  • platform/mac/editing/style/create-block-for-style-012-expected.txt:
  • platform/mac/fast/clip/outline-overflowClip-expected.txt:
  • platform/mac/fast/forms/textarea-rows-cols-expected.txt:
  • platform/mac/fast/replaced/width100percent-textarea-expected.txt:
  • platform/mac/fast/text/embed-at-end-of-pre-wrap-line-expected.txt:
  • platform/mac/fast/text/justified-text-rect-expected.txt:
  • platform/mac/fast/text/trailing-white-space-expected.checksum: Added.
  • platform/mac/fast/text/trailing-white-space-expected.png: Added.
  • platform/mac/fast/text/trailing-white-space-expected.txt: Added.
  • platform/mac/fast/text/whitespace/pre-wrap-last-char-expected.txt:
  • platform/mac/fast/text/whitespace/pre-wrap-overflow-selection-expected.txt:
  • platform/mac/fast/text/whitespace/pre-wrap-spaces-after-newline-expected.txt:
13:54 Changeset [32225] by mrowe@apple.com

Fix builds that do not have DOM storage enabled.

13:33 Changeset [32224] by timothy@apple.com

Fixes the regression where style rules in the Inspector always show "inline stylesheet"
for the source of the rule and not the URL or other sources.

https://bugs.webkit.org/show_bug.cgi?id=18592

Reviewed by Dan Bernstein.

  • page/inspector/StylesSidebarPane.js:

(WebInspector.StylesSidebarPane.prototype.update): Add parentStyleSheet to the anonymous obejct
that we make for each matched rule. The parentStyleSheet property is used later to make the subtitle.

13:14 Changeset [32223] by dino@apple.com

Fixed marquee suspension on wrong document. Passes current
document into Frame::clearTimers.

Reviewed by hyatt.

  • history/CachedPage.cpp:

(WebCore::CachedPage::clear):

  • page/Frame.cpp:

(WebCore::Frame::clearTimers):

  • page/Frame.h:
12:46 Changeset [32222] by ap@webkit.org

Reviewed by Darin.

Fix leaks during plugin tests (which actually excercise background JS), and potential
PAC brokenness that was not reported, but very likely.

The leaks shadowed a bigger problem with Identifier destruction. Identifier::remove involves
an IdentifierTable lookup, which is now a per-thread instance. Since garbage collection can
currently happen on a different thread than allocation, a wrong table was used.

No measurable change on SunSpider total, ~1% variation on individual tests.

  • kjs/ustring.cpp: (KJS::): (KJS::UString::Rep::create): (KJS::UString::Rep::destroy):
  • kjs/ustring.h: Replaced isIdentifier with a pointer to IdentifierTable, so that destruction can be done correctly. Took one bit from reportedCost, to avoid making UString::Rep larger (performance effect was measurable on SunSpider).
  • kjs/identifier.cpp: (KJS::IdentifierTable::IdentifierTable): (KJS::IdentifierTable::~IdentifierTable): (KJS::IdentifierTable::add): (KJS::IdentifierTable::remove): Make IdentifierTable a real class. Its destructor needs to zero out outstanding references, because some identifiers may briefly outlive it during thread destruction, and we don't want them to use their stale pointers.

(KJS::LiteralIdentifierTable):
(KJS::Identifier::add):
Now that LiteralIdentifierTable is per-thread and can be destroyed not just during application
shutdown, it is not appropriate to simply bump refcount for strings that get there; changed
the table to hold RefPtrs.

(KJS::CStringTranslator::translate):
(KJS::UCharBufferTranslator::translate):
(KJS::Identifier::addSlowCase):
(KJS::Identifier::remove):

  • kjs/identifier.h: (KJS::Identifier::add): Use and update UString::Rep::identifierTable as appropriate. Updating it is now done in IdentifierTable::add, not in translators.
12:45 Changeset [32221] by dino@apple.com

Add 'ease' timing function to transitions and
make it the default. See latest specification proposal at:
http://webkit.org/specs/CSSVisualEffects/CSSTransitions.html

Reviewed by hyatt.

NOTE: still working on a way to test animating/transitioning content

  • css/CSSParser.cpp:

(WebCore::CSSParser::parseTransitionTimingFunction):

  • css/CSSStyleSelector.cpp:

(WebCore::CSSStyleSelector::mapTransitionTimingFunction):

  • css/CSSValueKeywords.in:
12:02 Changeset [32220] by ap@webkit.org

Reviewed by Darin.

Get rid of static compareWithCompareFunctionArguments in array_instance.cpp.

No change on SunSpider, CelticKane or iBench JavaScript. It is probable that in some cases,
merge sort is still faster, but more investigation is needed to determine a new cutoff.
Or possibly, it would be better to do what FIXME says (change to tree sort).

Also, made arguments a local variable - not sure why it was a member of
CompareWithCompareFunctionArguments.

  • kjs/array_instance.cpp: (KJS::CompareWithCompareFunctionArguments::CompareWithCompareFunctionArguments): (KJS::CompareWithCompareFunctionArguments::operator()): (KJS::ArrayInstance::sort):
11:03 Changeset [32219] by aroben@apple.com

Change JavaScriptDebugListener to use KJS::UString instead of WebCore::String

WebCore:

Change JavaScriptDebugListener to use KJS::UString instead of
WebCore::String

This should reduce the number of string allocations performed while
debugging.

Reviewed by Tim Hatcher.

  • page/InspectorController.cpp: Updated JavaScriptDebugListener functions.
  • page/InspectorController.h: Ditto.
  • page/JavaScriptDebugListener.h: Changed to use KJS::UString instead of WebCore::String.
  • page/JavaScriptDebugServer.cpp: Ditto.
  • platform/win/BString.cpp: (WebCore::BString::BString): Added a constructor that takes a KJS::UString.
  • platform/win/BString.h:

WebKit/win:

Update WebScriptDebugServer for JavaScriptDebugListener changes

Reviewed by Tim Hatcher.

  • WebScriptDebugServer.cpp: Changed to use KJS::UString instead of WebCore::String.
  • WebScriptDebugServer.h: Ditto.
10:27 Changeset [32218] by aroben@apple.com

Mac build fix

  • WebCore.xcodeproj/project.pbxproj: Mark JavaScriptDebugListener.h private.
09:32 Changeset [32217] by aroben@apple.com

Make InspectorController a JavaScriptDebugListener

I added two new functions to the InspectorController JS object:
reloadInspectedPageAndStartDebugging and stopDebugging. These control
when the InspectorController adds/removes itself to/from the
JavaScriptDebugServer.

Reviewed by Tim Hatcher.

  • page/InspectorController.cpp: (WebCore::reloadInspectedPageAndStartDebugging): Added. Just calls through to InspectorController. (WebCore::stopDebugging): Ditto. (WebCore::InspectorController::~InspectorController): Make sure we stop debugging before we are destroyed so the JavaScriptDebugServer won't be left with a stale pointer. (WebCore::InspectorController::windowScriptObjectAvailable): Added two new functions to our JS object. (WebCore::InspectorController::closeWindow): Stop debugging when the window closes. (WebCore::InspectorController::reloadInspectedPageAndStartDebugging): Added. (WebCore::InspectorController::stopDebugging): Added.

(WebCore::InspectorController::didParseSource):
(WebCore::InspectorController::failedToParseSource):
(WebCore::InspectorController::didEnterCallFrame):
(WebCore::InspectorController::willExecuteStatement):
(WebCore::InspectorController::willLeaveCallFrame):
Added empty implementations of the JavaScriptDebugListener functions.

  • page/InspectorController.h:
09:01 Changeset [32216] by mitz@apple.com
  • add css2.1/t1506-c525-font-wt-00-b.html to the Windows skipped list
  • platform/win/Skipped:
08:43 Changeset [32215] by aroben@apple.com

Rename ExecState* instances from state to exec

Requested by Darin Adler and Sam Weinig.

  • bindings/js/JSConsoleCustom.cpp:
08:41 Changeset [32214] by aroben@apple.com
  • platform/win/Skipped: Added another failing test.
08:38 Changeset [32213] by aroben@apple.com

Clean up InspectorController's use of JSStringRef

All JSStringRef creation now happens through a helper function,
jsStringRef, which takes either a const char* or a const String& and
returns a JSRetainPtr<JSStringRef>.

Reviewed by Mitz Pettel.

  • page/InspectorController.cpp: Added jsStringRef and converted all callers to JSStringCreateWithUTF8CString or JSStringCreateWithCharacters to use it.
08:34 Changeset [32212] by aroben@apple.com

Drop the hang timer to 30 seconds

This matches what DRT/mac was using.

Reviewed by Mitz Pettel.

  • Scripts/run-webkit-tests:
08:33 Changeset [32211] by aroben@apple.com

Get rid of DRT's Watchdog

run-webkit-tests now detects hangs and samples DRT as needed.

Reviewed by Mitz Pettel.

  • DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Removed Watchdog* files from the project.
  • DumpRenderTree/Watchdog.cpp: Removed.
  • DumpRenderTree/Watchdog.h: Removed.
  • DumpRenderTree/mac/DumpRenderTree.mm: Removed uses of Watchdog (dumpRenderTree): (runTest):
  • DumpRenderTree/mac/WatchdogMac.h: Removed.
  • DumpRenderTree/mac/WatchdogMac.mm: Removed.
  • Scripts/run-webkit-tests: (sub testCrashedOrTimedOut): Call sampleDumpTool() if we timed out. (sub sampleDumpTool): Added. Writes a sample report to ~/Library/Logs/DumpRenderTree/HangReport.txt.
08:19 Changeset [32210] by aroben@apple.com

Add wrappers around InspectorClient::{show,close}Window

This will let us perform actions when the window is actually
showing/closing (InspectorController::show doesn't always directly
show the window).

Reviewed by Tim Hatcher.

  • page/InspectorController.cpp: (WebCore::InspectorController::scriptObjectReady): Call showWindow() instead of m_client->showWindow(). (WebCore::InspectorController::show): Ditto. (WebCore::InspectorController::close): Ditto for closeWindow(). (WebCore::InspectorController::showWindow): (WebCore::InspectorController::closeWindow):
  • page/InspectorController.h:
07:53 Changeset [32209] by hausmann@webkit.org

Many API changes and additions after a full review with Jasmin Blanchette <jasmin@trolltech.com>

The diff is too big to mention the changes individually, but most of the changes were of cosmetic
nature where methods or enums have been renamed or prefixed/suffixed according to the consistency
rules of the Qt API.

07:37 Changeset [32208] by hausmann@webkit.org

2008-04-18 Ariya Hidayat <ariya.hidayat@trolltech.com>

Reviewed by Adam Roben.

https://bugs.webkit.org/show_bug.cgi?id=18477

No resize indication is shown when moving/hovering over the frame
border/splitter.

07:32 Changeset [32207] by hausmann@webkit.org

Added QWebView::find/QWebFrame::find.

07:07 Changeset [32206] by aroben@apple.com

Windows build fix

Same as before, but for fabs/fabsf.

  • svg/SVGAnimateTransformElement.cpp: (WebCore::SVGAnimateTransformElement::calculateDistance): Changed to use fabsf and removed narrowPrecisionToFloat.
06:57 Changeset [32205] by aroben@apple.com

Windows build fix

In MSVC, sqrt() has three overloads: float, double, and long
double. In GCC, sqrt() is only for doubles. Both MSVC and GCC have
sqrtf() to operate explicitly on floats.

  • svg/SVGAnimateMotionElement.cpp: (WebCore::SVGAnimateMotionElement::calculateDistance): Changed to use sqrtf and removed narrowPrecisionToFloat.
  • svg/SVGAnimateTransformElement.cpp: (WebCore::SVGAnimateTransformElement::calculateDistance): Ditto.
05:47 Changeset [32204] by hausmann@webkit.org

Fix the build without Database support (fixes the Qt/win build).

04:13 Changeset [32203] by alp@webkit.org

2008-04-18 Alp Toker <alp@atoker.com>

Rubber-stamped by Holger Freyther.

http://bugs.webkit.org/show_bug.cgi?id=18218
[Gtk] segfault when clicking on a disabled button

Always use the main frame for mouse events (not the focused frame)
since it knows best how to get the event through to the right target.

This also fixes a null crasher.

  • webkit/webkitwebview.cpp:
04:03 Changeset [32202] by hausmann@webkit.org

Fix the Gtk build on the build bot.

03:44 Changeset [32201] by hausmann@webkit.org

Prospective wx build fix.

03:40 Changeset [32200] by hausmann@webkit.org

Build fix. Back out previous #include fix for PageGroup.h as it broke
the Mac build due to forwarding headers.

03:00 Changeset [32199] by hausmann@webkit.org

Build fix for Qt and gcc 4.3.

02:31 Changeset [32198] by hausmann@webkit.org

Build fix for gcc 4.3 and Gtk.

00:40 Changeset [32197] by antti@apple.com

2008-04-17 Antti Koivisto <antti@apple.com>

Reviewed by Oliver.


https://bugs.webkit.org/show_bug.cgi?id=18573

Implement supplemental transforms and use them for <animateMotion> instead of the transform list.
This will allow <animateTransform> and <animateMotion> combine properly.

  • svg/SVGAnimateMotionElement.cpp: (WebCore::SVGAnimateMotionElement::resetToBaseValue): (WebCore::SVGAnimateMotionElement::calculateAnimatedValue): (WebCore::SVGAnimateMotionElement::applyResultsToTarget):
  • svg/SVGElement.h: (WebCore::SVGElement::supplementalTransform):
  • svg/SVGStyledTransformableElement.cpp: (WebCore::SVGStyledTransformableElement::animatedLocalTransform):
  • svg/SVGStyledTransformableElement.h: (WebCore::SVGStyledTransformableElement::supplementalTransform):
  • svg/SVGTextElement.cpp: (WebCore::SVGTextElement::animatedLocalTransform):
  • svg/SVGTextElement.h: (WebCore::SVGTextElement::supplementalTransform):

04/17/08:

23:59 Changeset [32196] by mrowe@apple.com

Remove unnecessary files from testkjs, testapi and minidom targets.

Rubber-stamped by Oliver Hunt.

23:59 Changeset [32195] by mrowe@apple.com

2008-04-17 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Fixed ASSERT seen during run-sunspider of a debug build.

  • VM/CodeGenerator.h: Made the default codegen buffers bigger. SunSpider runs all tests in one global environment, so you end up with more than 128 locals. This is just a stop-gap until we code up a real solution to arbitrary symbol and label limits.
23:59 Changeset [32194] by mrowe@apple.com

2008-04-17 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Fixed a bug in exception unwinding, where we wouldn't deref the scope
chain in global scope, so we would leak ScopeChainNodes when exceptions
were thrown inside "with" and "catch" scopes.

Also did some cleanup of the unwinding code along the way.

Scope chain reference counting is still wrong in a few ways. I thought
I would fix this portion of it first.

run-sunspider shows no change.

  • VM/Machine.cpp: (KJS::Machine::unwindCallFrame): (KJS::Machine::throwException): (KJS::Machine::privateExecute):
  • VM/Machine.h:
23:59 Changeset [32193] by mrowe@apple.com

Add more exception checking to toNumber conversions

Reviewed by Maciej

This corrects op_pre_dec, op_negate, op_mod and op_sub.

23:59 Changeset [32192] by mrowe@apple.com

2008-04-17 Geoffrey Garen <ggaren@apple.com> and Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Oliver Hunt.

Behold: eval.

Introduced a new opcode: op_call_eval. In the normal case, it performs
an eval. In the case where eval has been overridden in some way, it
performs a function call.

  • VM/CodeGenerator.h: Added a feature so the code generator knows not to optimized locals in eval code.
23:59 Changeset [32191] by mrowe@apple.com

2008-04-17 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.

Added some ASSERTs to document codegen failures in
run-javascriptcore-tests.

For all tests, program-level codegen now either succeeds, or fails with
an ASSERT.

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::addVar): (KJS::CodeGenerator::CodeGenerator): (KJS::CodeGenerator::newTemporary): (KJS::CodeGenerator::newLabel):
23:59 Changeset [32190] by mrowe@apple.com

2008-04-17 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.

Fixed another case of a dst register being an unreferenced temporary
(caused an ASSERT when running the full sunspider suite).

  • kjs/nodes.cpp: (KJS::CaseBlockNode::emitCodeForBlock):
23:59 Changeset [32189] by mrowe@apple.com

2008-04-16 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.

  • add documentation (and meaningful parameter names) for arithmetic and bitwise binary ops
  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitMul): (KJS::CodeGenerator::emitDiv): (KJS::CodeGenerator::emitMod): (KJS::CodeGenerator::emitSub): (KJS::CodeGenerator::emitLeftShift): (KJS::CodeGenerator::emitRightShift): (KJS::CodeGenerator::emitUnsignedRightShift): (KJS::CodeGenerator::emitBitAnd): (KJS::CodeGenerator::emitBitXOr): (KJS::CodeGenerator::emitBitOr):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::MultNode::emitCode): (KJS::DivNode::emitCode): (KJS::ModNode::emitCode): (KJS::SubNode::emitCode): (KJS::LeftShiftNode::emitCode): (KJS::RightShiftNode::emitCode): (KJS::UnsignedRightShiftNode::emitCode): (KJS::BitAndNode::emitCode): (KJS::BitXOrNode::emitCode): (KJS::BitOrNode::emitCode): (KJS::emitReadModifyAssignment): (KJS::ReadModifyResolveNode::emitCode):
23:59 Changeset [32188] by mrowe@apple.com

Exception checks for toNumber in op_pre_inc

Reviewed by Geoff

This is somewhat more convoluted than the simple hadException checks
we currently use. Instead we use special toNumber conversions that
select between the exception and ordinary vPC. This allows us to
remove any branches in the common case (incrementing a number).

23:58 Changeset [32187] by mrowe@apple.com

2008-04-16 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.

  • ensure that activations are kept in a register to protect them from GC

Also renamed OptionalCalleeScopeChain constant to OptionalCalleeActivation, since
that is what is now kept there, and there is no more need to keep the scope chain in
the register file.

  • VM/Machine.cpp: (KJS::initializeCallFrame): (KJS::scopeChainForCall):
  • VM/Machine.h: (KJS::Machine::):
23:58 Changeset [32186] by mrowe@apple.com

2008-04-16 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Made "this" work in program code / global scope.

The machine can initialize "this" prior to execution because it knows
that, for program code, "this" is always stored in lr1.

  • VM/Machine.cpp: (KJS::Machine::execute):
  • VM/Machine.h: (KJS::Machine::):
  • kjs/interpreter.cpp: (KJS::Interpreter::evaluate):
23:58 Changeset [32185] by mrowe@apple.com

2008-04-16 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Fixed a codegen bug when returning from inside a dynamic scope (a with
or catch block): we need to pop any dynamic scope(s) that have been
added so op_ret can find the activation object at the top of the scope
chain.

  • kjs/nodes.cpp: (KJS::ReturnNode::emitCode): If we're returning from inside a dynamic scope, emit a jmp_scopes to take care of popping any dynamic scope(s) and then branching to the return instruction.
23:58 Changeset [32184] by mrowe@apple.com

2008-04-16 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.

  • document the add and get_prop_id opcodes

In addition to adding documentation in comments, I changed
references to register IDs or indices relating to these opcodes to
have meaningful names instead of r0 r1 r2.

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitAdd):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • kjs/nodes.cpp: (KJS::DotAccessorNode::emitCode): (KJS::FunctionCallDotNode::emitCode): (KJS::PostIncDotNode::emitCode): (KJS::PostDecDotNode::emitCode): (KJS::PreIncDotNode::emitCode): (KJS::PreDecDotNode::emitCode): (KJS::AddNode::emitCode): (KJS::ReadModifyDotNode::emitCode):
23:58 Changeset [32183] by mrowe@apple.com

2008-04-15 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt and Maciej Stachowiak.

Fixed a codegen bug in with and switch, and added an ASSERT to
make sure it doesn't happen again.

emitCode() assumes that dst, if non-zero, is either referenced or
non-temporary (i.e., it assumes that newTemporary() will return a
register not equal to dst). Certain callers to emitCode() weren't
guaranteeing that to be so, so temporary register values were being
overwritten.

  • VM/CodeGenerator.h: (KJS::CodeGenerator::emitNode): ASSERT that dst is referenced or non-temporary.
  • kjs/nodes.cpp: (KJS::CommaNode::emitCode): Reference the dst we pass.

(KJS::WithNode::emitCode): No need to pass an explicit dst register.

(KJS::CaseBlockNode::emitCodeForBlock): No need to pass an explicit dst register.
(KJS::SwitchNode::emitCode): No need to pass an explicit dst register.

  • kjs/nodes.h: Made dst the last parameter to emitCodeForBlock, to match emitCode.
23:58 Changeset [32182] by mrowe@apple.com

Bug 18526: Throw exceptions when resolve fails for op_resolve_base_and_func.
<https://bugs.webkit.org/show_bug.cgi?id=18526>

Reviewed by Maciej

Very simple fix, sunspider shows a 0.7% progression, ubench shows a 0.4% regression.

23:58 Changeset [32181] by mrowe@apple.com

2008-04-15 Maciej Stachowiak <mjs@apple.com>

Rubber stamped by Oliver.

  • add newly working tests to squirrelfish list
  • tests/LIST-SQUIRRELFISH: Add 3d-raytrace and string-unpack-code
23:58 Changeset [32180] by mrowe@apple.com

2008-04-15 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

  • fix incorrect result on 3d-raytrace test

Oliver found and tracked down this bug, I just typed in the fix.

  • VM/Machine.cpp: (KJS::slideRegisterWindowForCall): When setting omitted parameters to undefined, account for the space for local variables.
23:58 Changeset [32179] by mrowe@apple.com

2008-04-15 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

  • fix codegen handling of dst registers

1.006x speedup (not sure why).

Most emitCode functions take an optional "dst" parameter that says
where the output of the instruction should be written. I made some
functions for convenient handling of the dst register:

  • VM/CodeGenerator.h: (KJS::CodeGenerator::tempDestination): Takes the dst register. Returns it if it is not null and is a temporary, otherwise allocates a new temporary. This is intended for cases where an intermediate value might be written into the dst

(KJS::CodeGenerator::finalDestination): Takes the dst register and an optional
register that was used as a temp destination. Picks the right thing for the final
output. Intended to be used as the output register for the instruction that generates
the final value of a particular node.

(KJS::CodeGenerator::moveToDestinationIfNeeded): Takes dst and a
RegisterID; moves from the register to dst if dst is defined and
different from the register. This is intended for cases where the
result of a node is already in a specific register (likely a
local), and so no code needs to be generated unless a specific
destination has been requested, in which case a move is needed.

I also applied these methods throughout emitCode functions. In
some cases this was just cleanup, in other cases I fixed actual
codegen bugs. Below I have given specific comments for the cases
where I believe I fixed a codegen bug, or improved quality of codegen.

  • kjs/nodes.cpp: (KJS::NullNode::emitCode): (KJS::FalseNode::emitCode): (KJS::TrueNode::emitCode): (KJS::NumberNode::emitCode): (KJS::StringNode::emitCode): (KJS::RegExpNode::emitCode): (KJS::ThisNode::emitCode): Now avoids emitting a mov when dst is the same as the this register (the unlikely case of "this = this"); (KJS::ResolveNode::emitCode): Now avoids emitting a mov when dst is the same as the local regiester, in the local var case (the unlikely case of "x = x"); (KJS::ArrayNode::emitCode): Fixed a codegen bug where array literal element expressions may have observed an intermediate value of constructing the array. (KJS::ObjectLiteralNode::emitCode): (KJS::PropertyListNode::emitCode): Fixed a codegen bug where object literal property definition expressions may have obesrved an intermediate value of constructing the object. (KJS::BracketAccessorNode::emitCode): (KJS::DotAccessorNode::emitCode): (KJS::NewExprNode::emitCode): (KJS::FunctionCallValueNode::emitCode): (KJS::FunctionCallBracketNode::emitCode): (KJS::FunctionCallDotNode::emitCode): (KJS::PostIncResolveNode::emitCode): (KJS::PostDecResolveNode::emitCode): (KJS::PostIncBracketNode::emitCode): (KJS::PostDecBracketNode::emitCode): (KJS::PostIncDotNode::emitCode): (KJS::PostDecDotNode::emitCode): (KJS::DeleteResolveNode::emitCode): (KJS::DeleteBracketNode::emitCode): (KJS::DeleteDotNode::emitCode): (KJS::DeleteValueNode::emitCode): (KJS::VoidNode::emitCode): (KJS::TypeOfResolveNode::emitCode): (KJS::TypeOfValueNode::emitCode): (KJS::PreIncResolveNode::emitCode): Fixed a codegen bug where the final value would not be output to the dst register in the local var case. (KJS::PreDecResolveNode::emitCode): Fixed a codegen bug where the final value would not be output to the dst register in the local var case. (KJS::PreIncBracketNode::emitCode): (KJS::PreDecBracketNode::emitCode): (KJS::PreIncDotNode::emitCode): (KJS::PreDecDotNode::emitCode): (KJS::UnaryPlusNode::emitCode): (KJS::NegateNode::emitCode): (KJS::BitwiseNotNode::emitCode): (KJS::LogicalNotNode::emitCode): (KJS::MultNode::emitCode): (KJS::DivNode::emitCode): (KJS::ModNode::emitCode): (KJS::AddNode::emitCode): (KJS::SubNode::emitCode): (KJS::LeftShiftNode::emitCode): (KJS::RightShiftNode::emitCode): (KJS::UnsignedRightShiftNode::emitCode): (KJS::LessNode::emitCode): (KJS::GreaterNode::emitCode): (KJS::LessEqNode::emitCode): (KJS::GreaterEqNode::emitCode): (KJS::InstanceOfNode::emitCode): (KJS::InNode::emitCode): (KJS::EqualNode::emitCode): (KJS::NotEqualNode::emitCode): (KJS::StrictEqualNode::emitCode): (KJS::NotStrictEqualNode::emitCode): (KJS::BitAndNode::emitCode): (KJS::BitXOrNode::emitCode): (KJS::BitOrNode::emitCode): (KJS::LogicalAndNode::emitCode): (KJS::LogicalOrNode::emitCode): (KJS::ConditionalNode::emitCode): (KJS::emitReadModifyAssignment): Allow an out argument separate from the operands, needed for fixes below. (KJS::ReadModifyResolveNode::emitCode): Fixed a codegen bug where the right side of the expression may observe an intermediate value. (KJS::AssignResolveNode::emitCode): Fixed a codegen bug where the right side of the expression may observe an intermediate value. (KJS::ReadModifyDotNode::emitCode): Fixed a codegen bug where the right side of the expression may observe an intermediate value. (KJS::ReadModifyBracketNode::emitCode): Fixed a codegen bug where the right side of the expression may observe an intermediate value. (KJS::CommaNode::emitCode): Avoid writing temporary value to dst register. (KJS::ReturnNode::emitCode): Void return should return undefined, not null. (KJS::FuncExprNode::emitCode):
23:58 Changeset [32178] by mrowe@apple.com

2008-04-15 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.

  • fix huge performance regression (from trunk) in string-unpack-code

This restores string-unpack-code performance to parity with
trunk (2.27x speedup relative to previous SquirrelFish)

  • VM/Machine.cpp: (KJS::Machine::execute): Shrink register file after call to avoid growing repeatedly.
23:58 Changeset [32177] by mrowe@apple.com

2008-04-15 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.

Fixed dumpCallFrame to match our new convention of passing around a
ScopeChainNode* instead of a ScopeChain*.

  • JavaScriptCore.exp:
  • VM/Machine.cpp: (KJS::Machine::dumpCallFrame):
  • VM/Machine.h:
23:58 Changeset [32176] by mrowe@apple.com

Bug 18436: Need to throw exception on read/modify/write or similar resolve for nonexistent property
<https://bugs.webkit.org/show_bug.cgi?id=18436>

Reviewed by Maciej.

Add op_resolve_base_and_property for read/modify/write operations,
this adds a "superinstruction" to resolve the base and value of a
property simultaneously. Just using resolveBase and resolve results
in an 5% regression in ubench, 30% in loop-empty-resolve (which is
expected). 1.3% progression in sunspider, 2.1% in ubench, with a
21% gain in loop-empty-resolve. The only outlier is function-missing-args
which gets a 3% regression that I could never resolve.

23:58 Changeset [32175] by mrowe@apple.com

2008-04-15 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

3d-raytrace and string-unpack-code now run.

The basic approach is to pass around ScopeChainNode* instead of
ScopeChain*, which in addition to not becoming suddenly an invalid
pointer also saves an indirection.

This is an 0.4% speedup on SunSpider --squirrelfish (1.8% on --ubench)

  • VM/Machine.cpp: (KJS::resolve): (KJS::resolveBase): (KJS::resolveBaseAndFunc): (KJS::initializeCallFrame): (KJS::scopeChainForCall): (KJS::Machine::unwindCallFrame): (KJS::Machine::throwException): (KJS::Machine::execute): (KJS::Machine::privateExecute):
  • VM/Machine.h:
  • VM/Register.h: (KJS::Register::):
  • kjs/nodes.cpp: (KJS::EvalNode::generateCode): (KJS::FunctionBodyNode::generateCode): (KJS::ProgramNode::generateCode): (KJS::ProgramNode::processDeclarations): (KJS::EvalNode::processDeclarations): (KJS::FuncDeclNode::makeFunction): (KJS::FuncExprNode::makeFunction):
  • kjs/nodes.h: (KJS::ProgramNode::): (KJS::EvalNode::): (KJS::FunctionBodyNode::):
  • kjs/object.h:
  • kjs/scope_chain.h: (KJS::ScopeChainNode::ScopeChainNode): (KJS::ScopeChainNode::deref): (KJS::ScopeChainIterator::ScopeChainIterator): (KJS::ScopeChainIterator::operator*): (KJS::ScopeChainIterator::operator->): (KJS::ScopeChain::ScopeChain): (KJS::ScopeChain::node): (KJS::ScopeChain::deref): (KJS::ScopeChain::ref): (KJS::ScopeChainNode::ref): (KJS::ScopeChainNode::release): (KJS::ScopeChainNode::begin): (KJS::ScopeChainNode::end):
23:58 Changeset [32174] by mrowe@apple.com

2008-04-14 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Fixed crash when accessing registers in a torn-off activation object.

  • kjs/JSActivation.cpp: (KJS::JSActivation::copyRegisters): Update our registerOffset after copying our registers, since our offset should now be relative to our private register array, not the shared register file.
23:58 Changeset [32173] by mrowe@apple.com

2008-04-14 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

  • fix a codegen flaw that makes some tests run way too fast or way too slow

The basic problem was that FunctionCallResolveNode results in
codegen which can incorrectly write an intermediate value into the
dst register even when that is a local. I added convenience
functions to CodeGenerator for getting this right, but for now I
only fixed FunctionCallResolve.

  • VM/CodeGenerator.h: (KJS::CodeGenerator::tempDestination): (KJS::CodeGenerator::):
  • kjs/nodes.cpp: (KJS::FunctionCallResolveNode::emitCode):
23:57 Changeset [32172] by mrowe@apple.com

2008-04-14 Maciej Stachowiak <mjs@apple.com>

Rubber stamped by Oliver.

  • move ubench tests properly.
  • tests/ubench: Added.
  • tests/ubench/function-closure.js: Added.
  • tests/ubench/function-empty.js: Added.
  • tests/ubench/function-missing-args.js: Added.
  • tests/ubench/function-sum.js: Added.
  • tests/ubench/loop-empty-resolve.js: Added.
  • tests/ubench/loop-empty.js: Added.
  • tests/ubench/loop-sum.js: Added.
23:57 Changeset [32171] by mrowe@apple.com

2008-04-14 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

  • added support for --ubench mode
  • Scripts/run-sunspider:
23:57 Changeset [32170] by mrowe@apple.com

2008-04-14 Maciej Stachowiak <mjs@apple.com>

Rubber stamped by Oliver.

  • sunspider: Don't force --runs=1 in squirrelfish mode any more.
23:57 Changeset [32169] by mrowe@apple.com

JavaScriptCore:

2008-04-14 Gabor Loki <loki@inf.u-szeged.hu>

Reviewed and slightly tweaked by Geoffrey Garen.

Bug 18489: Squirrelfish doesn't build on linux
<https://bugs.webkit.org/show_bug.cgi?id=18489>

  • JavaScriptCore.pri: Add VM into include path and its files into source set
  • VM/JSPropertyNameIterator.cpp: Fix include name
  • VM/Machine.cpp: Add UNLIKELY macro for GCC
  • VM/Machine.h: Add missing includes
  • VM/RegisterFile.cpp: Add missing include
  • kjs/testkjs.pro: Add VM into include path

WebCore:

2008-04-14 Gabor Loki <loki@inf.u-szeged.hu>

Reviewed by Geoffrey Garen.

Bug 18489: Squirrelfish doesn't build on linux
<https://bugs.webkit.org/show_bug.cgi?id=18489>

23:57 Changeset [32168] by mrowe@apple.com

2008-04-14 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

  • make --squirrelfish mode use the real harness, but a reduced set of tests

Also add a new ubench mode which runs the older squirrelfish microbenchmarks.

  • sunspider:
  • tests/LIST-SQUIRRELFISH:
  • tests/LIST-UBENCH: Added.
  • tests/squirrelfish: Moved to tests/ubench
23:57 Changeset [32167] by mrowe@apple.com

2008-04-14 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.

Removed an unused test.

  • tests/squirrelfish/loop-resolve.js: Removed.
23:57 Changeset [32166] by mrowe@apple.com

2008-04-14 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.

Restored OwnPtr in some places where I had removed it previously. We
can have an OwnPtr to an undefined class in a header as long as the
class's destructor isn't in the header.

23:57 Changeset [32165] by mrowe@apple.com

2008-04-14 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.

Fixed access to "this" inside dynamic scopes.

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::registerForLocal): Always return a register for "this", even if we're not optimizing access to other locals. Because "this" is a keyword, it's always in a register and always accessible.
  • VM/CodeGenerator.h: (KJS::CodeGenerator::shouldOptimizeLocals): Factored out a function for determining whether we should optimize access to locals, since eval will need to make this test a little more complicated.
23:57 Changeset [32164] by mrowe@apple.com

2008-04-14 Maciej Stachowiak <mjs@apple.com>

Reviewed by Adam.

  • fix crash when running SunSpider full harness

When growing the register file's buffer to make space for new globals,
make sure to copy accounting for the fact that the new space is logically
at the beginning of the buffer in this case, instead of at the end as when
growing for a new call frame.

  • VM/RegisterFile.cpp: (KJS::RegisterFile::newBuffer): (KJS::RegisterFile::growBuffer): (KJS::RegisterFile::addGlobalSlots):
  • VM/RegisterFile.h:
23:57 Changeset [32163] by mrowe@apple.com

2008-04-11 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.

Mark constant pools for global and eval code (collectively known as
"program code"). (Constant pools for function code are already marked by
their functions.)

The global object is responsible for marking program code constant
pools. Code blocks add themselves to the mark set at creation time, and
remove themselves from the mark set at destruction time.

sunspider --squirrelfish reports a 1% speedup, perhaps because
generateCode() is now non-virtual.

  • kjs/nodes.cpp: I had to use manual init and delete in this file because putting an OwnPtr into the header would have created a circular header dependency.
23:57 Changeset [32162] by mrowe@apple.com

Bug 18231: Improve support for function call nodes in SquirrelFish
<https://bugs.webkit.org/show_bug.cgi?id=18231>

Reviewed by Maciej

Use correct value of 'this' for function calls.

23:57 Changeset [32161] by mrowe@apple.com

2008-04-10 Geoffrey Garen <ggaren@apple.com>

This time for sure.

  • kjs/interpreter.cpp: (KJS::Interpreter::evaluate):
23:57 Changeset [32160] by mrowe@apple.com

2008-04-10 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.

Fixed Interpreter::execute to honor the new model for returning non-NULL
values when an exception is thrown.

  • kjs/interpreter.cpp: (KJS::Interpreter::evaluate):
23:57 Changeset [32159] by mrowe@apple.com

Fix SquirrelFish interpreter to pass internal exceptions back to
native code correctly.

Reviewed by Geoff

23:57 Changeset [32158] by mrowe@apple.com

JavaScriptCore:

2008-04-10 Sam Weinig <sam@webkit.org>

Reviewed by Geoffrey Garen.

Replace the use of getCallData in op_construct with the new
getConstructData function that replaces implementsConstruct.

  • API/JSCallbackConstructor.cpp: (KJS::JSCallbackConstructor::getConstructData):
  • API/JSCallbackConstructor.h:
  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h: (KJS::::getConstructData): (KJS::::construct):
  • API/JSObjectRef.cpp: (JSObjectIsConstructor):
  • JavaScriptCore.exp:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • kjs/CallData.h:
  • kjs/ConstructData.h: Copied from JavaScriptCore/kjs/CallData.h. (KJS::):
  • kjs/array_object.cpp: (KJS::ArrayObjectImp::getConstructData):
  • kjs/array_object.h:
  • kjs/bool_object.cpp: (KJS::BooleanObjectImp::getConstructData):
  • kjs/bool_object.h:
  • kjs/date_object.cpp: (KJS::DateObjectImp::getConstructData):
  • kjs/date_object.h:
  • kjs/error_object.cpp: (KJS::ErrorObjectImp::getConstructData): (KJS::NativeErrorImp::getConstructData):
  • kjs/error_object.h:
  • kjs/function.cpp: (KJS::FunctionImp::getCallData): (KJS::FunctionImp::getConstructData): (KJS::FunctionImp::construct):
  • kjs/function.h:
  • kjs/function_object.cpp: (KJS::FunctionObjectImp::getConstructData):
  • kjs/function_object.h:
  • kjs/nodes.cpp: (KJS::NewExprNode::inlineEvaluate):
  • kjs/number_object.cpp: (KJS::NumberObjectImp::getConstructData):
  • kjs/number_object.h:
  • kjs/object.cpp:
  • kjs/object.h:
  • kjs/object_object.cpp: (KJS::ObjectObjectImp::getConstructData):
  • kjs/object_object.h:
  • kjs/regexp_object.cpp: (KJS::RegExpObjectImp::getConstructData):
  • kjs/regexp_object.h:
  • kjs/string_object.cpp: (KJS::StringObjectImp::getConstructData):
  • kjs/string_object.h:
  • kjs/value.cpp: (KJS::JSCell::getConstructData):
  • kjs/value.h: (KJS::JSValue::getConstructData):

WebCore:

2008-04-10 Sam Weinig <sam@webkit.org>

Reviewed by Geoffrey Garen.

Adjusted WebCore JS functions to the new "getConstructData" calling convention.

23:56 Changeset [32157] by mrowe@apple.com

Bug 18420: SquirrelFish: need to throw Reference and Type errors
when attempting invalid operations on JSValues

Reviewed by Geoff

Add validation and exception checks to SquirrelFish so that the
correct exceptions are thrown for undefined variables, type errors
and toObject failure. Also handle exceptions thrown by native
function calls.

23:56 Changeset [32156] by mrowe@apple.com

2008-04-10 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Pass a function body node its function's scope chain, rather than the
current execution context's scope chain, when compiling it.

This doesn't matter yet, but it will once we start using the scope
chain during compilation.

sunspider --squirrelfish notes a tiny speedup.

  • VM/Machine.cpp: (KJS::Machine::privateExecute):
23:56 Changeset [32155] by mrowe@apple.com

2008-04-10 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Fix two bugs when throwing exceptions from re-entrant JS calls:

(1) Don't shrink the register file to 0, since our caller may still
be using it.

(2) In case of exception, return jsNull() instead of 0 because,
surprisingly, some JavaScriptCore clients rely on a function's return
value being safe to operate on even if the function threw an exception.

Also:

  • Changed FunctionImp::callAsFunction to honor the new semantics of exceptions not returning 0.
  • Renamed "handlerPC" to "handlerVPC" to match other uses of "VPC".
  • Renamed "exceptionData" to "exceptionValue", because "data" seemed to imply something more than just a JSValue.
  • Merged prepareException into throwException, since throwException was its only caller, and it seemed weird that throwException didn't take an exception as an argument.

sunspider --squirrelfish does not seem to complain on my machine, but it
complains a little (.6%) on Oliver's.

23:56 Changeset [32154] by mrowe@apple.com

2008-04-10 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.

Fixed op_construct for CallTypeNative to reacquire "r" before setting
its return value, since registerBase can theoretically change during the
execution of arbitrary code. (Not sure if any native constructors
actually make this possible.)

sunspider --squirrelfish does not seem to complain.

  • VM/Machine.cpp: (KJS::Machine::privateExecute):
23:56 Changeset [32153] by mrowe@apple.com

2008-04-10 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt and Sam Weinig.

Re-entrant execution of function code (global code -> built-in function
-> JS function):

Miraculously, sunspider --squirrelfish does not seem to complain.

A re-entrant function call is the same as a normal function call with
one exception: the re-entrant call leaves everything except for
CallerCodeBlock in the call frame header uninitialized, since the call
doesn't need to return to JS code. (It sets CallerCodeBlock to 0, to
indicate that the call shouldn't return to JS code.)

Also fixed a few issues along the way:

  • Fixed two bugs in the read-write List implementation that caused m_size and m_buffer to go stale.
  • Changed native call code to update "r" *before* setting the return value, since the call may in turn call JS code, which changes the value of "r".
  • Migrated initialization of "r" outside of Machine::privateExecute, because global code and function code initialize "r" differently.
  • Migrated a codegen warning from Machine::privateExecute to the wiki.
  • Removed unnecessary "r" parameter from slideRegisterWindowForCall
  • VM/Machine.cpp: (KJS::slideRegisterWindowForCall): (KJS::scopeChainForCall): (KJS::Machine::execute): (KJS::Machine::privateExecute):
  • VM/Machine.h:
  • kjs/function.cpp: (KJS::FunctionImp::callAsFunction):
  • kjs/list.cpp: (KJS::List::getSlice):
  • kjs/list.h: (KJS::List::clear):
23:56 Changeset [32152] by mrowe@apple.com

2008-04-10 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

Add newly runnable tests to --squirrelfish mode.

  • tests/LIST-SQUIRRELFISH:
23:56 Changeset [32151] by mrowe@apple.com

2008-04-10 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

  • fix problem with code generation for return with no argument

3d-cube now runs

  • kjs/nodes.cpp: (KJS::ReturnNode::emitCode):
23:56 Changeset [32150] by mrowe@apple.com

2008-04-10 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

  • Implement support for JS constructors

access-binary-trees and access-nbody now run.

Inexplicably a 1% speedup.

  • VM/Machine.cpp: (KJS::initializeCallFrame): (KJS::Machine::privateExecute):
  • VM/Machine.h: (KJS::Machine::):
23:56 Changeset [32149] by mrowe@apple.com

2008-04-10 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

  • More code cleanup in preparation for JS constructors

Factor the remaining interesting parts of JS function calls into
slideRegisterWindowForCall and scopeChainForCall.

  • VM/Machine.cpp: (KJS::slideRegisterWindowForCall): (KJS::scopeChainForCall): (KJS::Machine::privateExecute):
23:56 Changeset [32148] by mrowe@apple.com

2008-04-10 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.

  • Code cleanup in preparation for JS constructors
  • Renamed returnInfo to callFrame.
  • Made an enum which defines what goes where in the call frame.
  • Factored out initializeCallFrame function from op_call
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitCall): (KJS::CodeGenerator::emitConstruct):
  • VM/Machine.cpp: (KJS::Machine::dumpRegisters): (KJS::initializeCallFrame): (KJS::Machine::unwindCallFrame): (KJS::Machine::execute): (KJS::Machine::privateExecute):
  • VM/Machine.h: (KJS::Machine::):
23:56 Changeset [32147] by mrowe@apple.com

2008-04-10 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Fixed two bugs in register allocation for function calls:

(1) op_call used to allocate codeBlock->numVars too many registers for
each call frame, due to duplicated math. Fixing this revealed...

(2) By unconditionally calling resize(), op_call used to truncate the
register file when calling a function whose registers fit wholly within
the register file already allocated by its caller.

sunspider --squirrelfish reports no regression.

I also threw in a little extra formatting to dumpCallFrame, because it
helped me debug these issues.

  • VM/Machine.cpp: (KJS::Machine::dumpRegisters): (KJS::Machine::execute): (KJS::Machine::privateExecute):
  • VM/RegisterFile.h: (KJS::RegisterFile::shrink): (KJS::RegisterFile::grow):
  • VM/RegisterFileStack.cpp: (KJS::RegisterFileStack::popRegisterFile):
23:56 Changeset [32146] by mrowe@apple.com

2008-04-09 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Next step toward re-entrant execution of function code (global code ->
built-in function -> JS function):

Made op_ret return from Machine::privateExecute if its calling codeBlock
is NULL.

I'm checking this in by itself to demonstrate that a more clever
mechanism is not necessary for performance.

sunspider --squirrelfish reports no regression.

  • ChangeLog:
  • VM/Machine.cpp: (KJS::Machine::execute): (KJS::Machine::privateExecute):
23:56 Changeset [32145] by mrowe@apple.com

2008-04-09 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.

Next step toward re-entrant execution of function code (global code ->
built-in function -> JS function):

Made Machine::execute return a value.

Sketched out some code for Machine::execute for functions -- still
doesn't work yet, though.

sunspider --squirrelfish reports no regression.

  • VM/Machine.cpp: (KJS::Machine::execute): (KJS::Machine::privateExecute):
  • VM/Machine.h:
  • kjs/interpreter.cpp: (KJS::Interpreter::evaluate):
  • kjs/testkjs.cpp: (runWithScripts):
23:56 Changeset [32144] by mrowe@apple.com

2008-04-09 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.

First step toward re-entrant execution of function code (global code ->
built-in function -> JS function):

Tiny bit of refactoring in the Machine class.

sunspider --squirrelfish reports no regression.

  • VM/Machine.cpp: (KJS::Machine::dumpRegisters): (KJS::Machine::unwindCallFrame): (KJS::Machine::execute): (KJS::Machine::privateExecute):
  • VM/Machine.h: (KJS::Machine::isGlobalCallFrame):
  • kjs/interpreter.cpp: (KJS::Interpreter::evaluate):
23:56 Changeset [32143] by mrowe@apple.com

2008-04-08 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Support for re-entrant execution of global code (global code -> built-in
function -> global code).

Keep a stack of register files instead of just one. Globals propogate
between register files as the register files enter and exit the stack.

An activation still uses its own register file's base as its
registerBase, but the global object uses the register file *stack*'s
registerBase, which updates dynamically to match the register file at
the top of the stack.

sunspider --squirrelfish reports no regression.

23:56 Changeset [32142] by mrowe@apple.com

2008-04-08 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.

  • initial preparatory work for JS constructors

1) Allocate registers for the returnInfo block and "this" value when generating code for
op_construct. These are not used yet, but the JS branch of op_construct will use them.

2) Adjust argc and argv appropriately for native constructor calls.

3) Assign return value in a more straightforward way in op_ret since this is actually
a bit faster (and makes up for the allocation of extra registers above).

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitConstruct):
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
23:56 Changeset [32141] by mrowe@apple.com

2008-04-06 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.

A little more love for --squirrelfish mode:

Fixed a misplaced sort. Results properly sort now.

Added a test list just for squirrelfish, and updated it to include
all currently passing SunSpider tests.

Fixed the pruning regexp to match 3d-morph.js.

  • sunspider:
23:55 Changeset [32140] by mrowe@apple.com

fix changelog, bokay?

23:55 Changeset [32139] by mrowe@apple.com

2008-04-07 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.

Fixed crasing SunSpider tests.

Let's just pretend this never happened, bokay?

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::CodeGenerator):
  • VM/CodeGenerator.h:
  • VM/RegisterFile.cpp: (KJS::RegisterFile::addGlobals):
23:55 Changeset [32138] by mrowe@apple.com

2008-04-07 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Restored dumping of generated code as a command-line switch:
run-testkjs -d will do it.

23:55 Changeset [32137] by mrowe@apple.com

2008-04-07 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Next step toward supporting re-entrant evaluation: Moved register file
maintenance code into a proper "RegisterFile" class.

There's a subtle change to the register file's internal layout: for
global code / the global object, registerOffset is always 0 now. In
other words, all register counting starts at 0, not 0 + (number of
global variables). The helps simplify accounting when the number of
global variables changes.

23:55 Changeset [32136] by mrowe@apple.com

Bug 18338: Support exceptions in SquirrelFish <http://bugs.webkit.org/show_bug.cgi?id=18338>

Reviewed by Geoff

Initial support for exceptions in SquirrelFish, only supports finalisers in the
simple cases (eg. exceptions and non-goto/return across finaliser boundaries).
This doesn't add the required exception checks to existing code, it merely adds
support for throw, catch, and the required stack unwinding.

23:55 Changeset [32135] by mrowe@apple.com

2008-04-06 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

First step toward supporting re-entrant evaluation: Switch register
clients from using "registers", a pointer to a register vector, to
"registerBase", an indirect pointer to the logical first entry in the
register file. (The logical first entry is the first entry that is not
a global variable).

With a vector, offsets into the register file remain good when the
underlying buffer reallocates, but they go bad when the logical
first entry moves. (The logical first entry moves when new global
variables get added to the beginning of the register file.) With an
indirect pointer to the logical first entry, offsets will remain good
regardless.

1.4% speedup on sunspider --squirrelfish. I suspect this is due to
reduced allocation when creating closures, and reduced indirection
through the register vector.

  • wtf/Vector.h: Added an accessor for an indirect pointer to the vector's buffer, which we currently use (incorrectly) for registerBase. This is temporary scaffolding to allow us to change client code without changing behavior.
23:55 Changeset [32134] by mrowe@apple.com

2008-04-06 Sam Weinig <sam@webkit.org>

Reviewed by Oliver Hunt.

Implement codegen for ReadModifyDotNode.

  • kjs/nodes.cpp: (KJS::ReadModifyDotNode::emitCode):
  • kjs/nodes.h:
23:55 Changeset [32133] by mrowe@apple.com

2008-04-06 Sam Weinig <sam@webkit.org>

Reviewed by Oliver Hunt.

Fix codegen for PostIncDotNode and implement codegen for PostIncBracketNode,
PostDecBracketNode and PostDecDotNode.

  • kjs/nodes.cpp: (KJS::PostIncBracketNode::emitCode): (KJS::PostDecBracketNode::emitCode): (KJS::PostIncDotNode::emitCode): (KJS::PostDecDotNode::emitCode):
  • kjs/nodes.h:
23:55 Changeset [32132] by mrowe@apple.com

2008-04-06 Sam Weinig <sam@webkit.org>

Reviewed by Geoffrey Garen.

Implement codegen for PreDecResolveNode, PreIncBracketNode, PreDecBracketNode,
PreIncDotNode and PreDecDotNode. This required adding one new op code, op_pre_dec.

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitPreDec):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::PreDecResolveNode::emitCode): (KJS::PreIncBracketNode::emitCode): (KJS::PreDecBracketNode::emitCode): (KJS::PreIncDotNode::emitCode): (KJS::PreDecDotNode::emitCode):
  • kjs/nodes.h:
23:55 Changeset [32131] by mrowe@apple.com

2008-04-06 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.

Improved register dumping, plus a liberal smattering of "const". Here's
what the new format looks like:

(gdb) call (void)dumpCallFrame(codeBlock, scopeChain, registers->begin(), r)
4 instructions; 48 bytes at 0x509210; 3 locals (2 parameters); 1 temporaries

[ 0] load lr1, undefined(@k0)
[ 3] load lr1, 2(@k1)
[ 6] add tr0, lr2, lr1
[ 10] ret tr0

Constants:

k0 = undefined
k1 = 2

Register frame:

----------------------------------------

use | address | value

----------------------------------------
[return info] | 0x80ac08 | 0x5081c0
[return info] | 0x80ac0c | 0x508e90
[return info] | 0x80ac10 | 0x504acc
[return info] | 0x80ac14 | 0x2
[return info] | 0x80ac18 | 0x0
[return info] | 0x80ac1c | 0x7
[return info] | 0x80ac20 | 0x0
----------------------------------------
[param] | 0x80ac24 | 0x1
[param] | 0x80ac28 | 0x7
[var] | 0x80ac2c | 0xb
[temp] | 0x80ac30 | 0xf

23:55 Changeset [32130] by mrowe@apple.com

2008-04-06 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.

Support for evaluating multiple scripts in the same global environment.
(Still don't support re-entrant evaluation yet.)

The main changes here are:

(1) Obey the ECMA 10.1.3 rules regarding how to resolve collisions when
a given symbol is declared more than once. (This patch fixes the same
issue for function code, too.)

(2) In the case of var and/or function collisions, reuse the existing
storage slot. For global code, this is required for previously
generated instructions to continue to work. For function code, it's
more of a "nice to have": it makes register layout in the case of
collisions easier to understand, and has the added benefit of saving
memory.

(3) Allocate slots in the CodeGenerator's m_locals vector in parallel
to register indexes in the symbol table. This ensures that, given an
index in the symbol table, we can find the corresponding RegisterID
without hashing, which speeds up codegen.

I moved responsibility for emitting var and function initialization
instructions into the CodeGenerator, because bookkeeping in cases where
var, function, and/or parameter names collide requires a lot of
internal knowledge about the CodeGenerator.

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::addVar): Removed responsibility for checking whether a var declaration overwrites "arguments", because the check is inappropriate for global code, which may not have a pre-existing "arguments" symbol in scope. Also changed this function to return a boolean indicating whether addVar actually created a new RegisterID, or just reused an old one.

(KJS::CodeGenerator::CodeGenerator): Split out the constructors for
function code and global code, since they're quite different now.

(KJS::CodeGenerator::registerForLocal): This function does its job
without any hashing now.

  • VM/Machine.cpp: Move old globals and update "r" before executing a new script. That way, old globals stay at a constant offset from "r", and previously optimized code still works.
  • VM/RegisterID.h: Added the ability to allocate a RegisterID before initializing its index field. We use this for parameters now.
  • kjs/JSVariableObject.h: (KJS::JSVariableObject::symbolTableGet): Changed the ungettable getter ASSERT to account for the fact that symbol indexes are all negative.
23:55 Changeset [32129] by mrowe@apple.com

Fix ChangeLog

23:55 Changeset [32128] by mrowe@apple.com

2008-04-05 Sam Weinig <sam@webkit.org>

Reviewed by Geoffrey Garen.

Implement codegen for ForInNode.

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitIn):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::InNode::emitCode):
  • kjs/nodes.h:
23:55 Changeset [32127] by mrowe@apple.com

2008-04-05 Sam Weinig <sam@webkit.org>

Reviewed by Oliver Hunt.

  • Implement codegen for DeleteResolveNode, DeleteBracketNode, DeleteDotNode and DeleteValueNode.
  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitGetPropId): (KJS::CodeGenerator::emitPutPropId): (KJS::CodeGenerator::emitDeletePropId): (KJS::CodeGenerator::emitDeletePropVal): (KJS::CodeGenerator::emitPutPropIndex):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::DeleteResolveNode::emitCode): (KJS::DeleteBracketNode::emitCode): (KJS::DeleteDotNode::emitCode): (KJS::DeleteValueNode::emitCode):
  • kjs/nodes.h:
23:55 Changeset [32126] by mrowe@apple.com

2008-04-04 Sam Weinig <sam@webkit.org>

Reviewed by Oliver Hunt.

  • Implement codegen for Switch statements.
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::pushJumpContext): (KJS::CodeGenerator::popJumpContext): (KJS::CodeGenerator::jumpContextForLabel):
  • VM/CodeGenerator.h: Rename LoopContext to JumpContext now that it used of Switch statements in addition to loops.
  • kjs/nodes.cpp: (KJS::DoWhileNode::emitCode): (KJS::WhileNode::emitCode): (KJS::ForNode::emitCode): (KJS::ForInNode::emitCode): (KJS::ContinueNode::emitCode): (KJS::BreakNode::emitCode): (KJS::CaseBlockNode::emitCodeForBlock): (KJS::SwitchNode::emitCode):
  • kjs/nodes.h: (KJS::CaseClauseNode::expr): (KJS::CaseClauseNode::children): (KJS::CaseBlockNode::):
23:55 Changeset [32125] by mrowe@apple.com

2008-04-03 Maciej Stachowiak <mjs@apple.com>

Reviewed by Sam.

  • fix crash in codegen from new nodes
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitConstruct):
  • kjs/nodes.h:
23:54 Changeset [32124] by mrowe@apple.com

File I forgot in my last commit.

23:54 Changeset [32123] by mrowe@apple.com

2008-04-03 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.

  • kjs/nodes.cpp: (KJS::ReadModifyResolveNode::emitCode): (KJS::ReadModifyBracketNode::emitCode):
  • kjs/nodes.h:
23:54 Changeset [32122] by mrowe@apple.com

2008-04-02 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.

  • take a shot at marking constant pools for global and eval code

Geoff says this won't really work in all cases but is an ok stopgap.

  • kjs/JSGlobalObject.cpp: (KJS::JSGlobalObject::mark):
23:54 Changeset [32121] by mrowe@apple.com

2008-04-02 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.

  • fix 2x perf regression in 3d-morph
  • VM/Machine.cpp: (KJS::Machine::privateExecute): If we subbed in null for the global object, don't toObject it, since that will throw an exception (very slowly).
23:54 Changeset [32120] by mrowe@apple.com

2008-04-02 Maciej Stachowiak <mjs@apple.com>

Rubber stamped by Geoff

  • fix Release build
  • kjs/nodes.cpp: (KJS::getNonLocalSymbol):
23:54 Changeset [32119] by mrowe@apple.com

2008-04-02 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Removed the last vestiges of LocalStorage from JSVariableObject and
JSGlobalObject.

  • kjs/JSGlobalObject.cpp: (KJS::JSGlobalObject::saveLocalStorage): Save and restore from/to registers. Use stub isReadOnly and isDontEnum methods for now, until we really implement attributes in the symbol table. (KJS::JSGlobalObject::restoreLocalStorage): (KJS::JSGlobalObject::reset):
  • kjs/JSVariableObject.cpp: (KJS::JSVariableObject::getPropertyNames): Use stub isDontEnum method for now, as above. (KJS::JSVariableObject::getPropertyAttributes): ditto
  • kjs/JSVariableObject.h: Removed LocalStorage from JSVariableObjectData. Removed mark method, because subclasses implement different strategies for marking registers. (KJS::JSVariableObject::isReadOnly): Stub method (KJS::JSVariableObject::isDontEnum): ditto

Changed the code below to ASSERT_NOT_REACHED() and return 0, since it
can no longer retrieve LocalStorage from the ExecState. (Eventually,
we'll just remove this code and all its friends, but that's a task for
later.)

  • kjs/ExecState.cpp: (KJS::ExecState::ExecState):
  • kjs/function.cpp: (KJS::ActivationImp::markChildren):
  • kjs/function.h:
  • kjs/nodes.cpp: (KJS::getNonLocalSymbol): (KJS::ScopeNode::optimizeVariableAccess): (KJS::ProgramNode::processDeclarations):
23:54 Changeset [32118] by mrowe@apple.com

reverse order of last two ChangeLog entries (oops)

23:54 Changeset [32117] by mrowe@apple.com

2008-04-01 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.

  • mark the constant pool (at least for function code blocks)
  • VM/CodeBlock.cpp: (KJS::CodeBlock::mark):
  • VM/CodeBlock.h:
  • kjs/function.cpp: (KJS::FunctionImp::mark):
  • kjs/nodes.cpp: (KJS::ScopeNode::mark):
  • kjs/nodes.h: (KJS::FuncExprNode::body): (KJS::FuncDeclNode::body):
23:54 Changeset [32116] by mrowe@apple.com

2008-04-01 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.

  • mark the constant pool (at least for function code blocks)
  • VM/CodeBlock.cpp: (KJS::CodeBlock::mark):
  • VM/CodeBlock.h:
  • kjs/function.cpp: (KJS::FunctionImp::mark):
  • kjs/nodes.cpp: (KJS::ScopeNode::mark):
  • kjs/nodes.h: (KJS::FuncExprNode::body): (KJS::FuncDeclNode::body):
23:54 Changeset [32115] by mrowe@apple.com

2008-04-01 Geoffrey Garen <ggaren@apple.com>

Reviewed by Beth Dakin.

Cleaned up a few loose ends.

  • JavaScriptCore.exp: Export dumpRegisters, so it's visible to gdb even if we don't explicitly call it in the source text.
  • VM/Machine.cpp: (KJS::Machine::privateExecute): No need to call dumpRegisters anymore, since that was just a hack for gdb's sake.
  • kjs/JSActivation.h: Removed obsolete comment.
  • VM/CodeGenerator.cpp: Added ASSERTs to verify that the localCount we're given matches the number of locals actually allocated.
  • VM/CodeGenerator.h: (KJS::CodeGenerator::CodeGenerator): Changed "localCount" to include the parameter count, since we're using the word "local" to mean parameter, var, function, or "this". Renamed "m_nextLocal" to "m_nextVar", since "m_nextLocal" doesn't contrast well with "m_nextParameter".

Also moved tracking of implicit "this" parameter from here...

  • kjs/nodes.cpp: (KJS::FunctionBodyNode::generateCode): ... to here (KJS::ProgramNode::generateCode): ... and here
  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump): Added missing "\n".
23:54 Changeset [32114] by mrowe@apple.com

2008-04-01 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Oliver.

Bug 18274: ResolveNode::emitCode() doesn't make a new temporary when dst

is 0, leading to incorrect codegen

<http://bugs.webkit.org/show_bug.cgi?id=18274>

23:54 Changeset [32113] by mrowe@apple.com

2008-04-01 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

  • fix bug in for..in codegen (gotta use ident, not m_ident)
  • kjs/nodes.cpp: (KJS::ForInNode::emitCode):
23:54 Changeset [32112] by mrowe@apple.com

2008-04-01 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

  • Add suport for regexp literals
  • VM/CodeBlock.cpp: (KJS::regexpToSourceString): (KJS::regexpName): (KJS::CodeBlock::dump):
  • VM/CodeBlock.h:
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::addRegExp): (KJS::CodeGenerator::emitNewRegExp):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::RegExpNode::emitCode):
  • kjs/nodes.h:
23:54 Changeset [32111] by mrowe@apple.com

Add support for for..in nodes

Reviewed by Geoff

Added two new opcodes to get_pnames and next_pname to handle iterating
over the set of properties on an object. This iterator is explicitly
invalidated and the property name array is released on standard exit
from the loop, otherwise we rely on GC to do the clean up for us.

23:54 Changeset [32110] by mrowe@apple.com

2008-04-01 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Maciej.

Change CodeGenerator::emitCall() so it increments the reference count of
registers passed to it, and change its callers so they don't needlessly
increment the reference count of the registers they are passing.

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitCall):
  • kjs/nodes.cpp: (KJS::FunctionCallResolveNode::emitCode): (KJS::FunctionCallDotNode::emitCode):
23:54 Changeset [32109] by mrowe@apple.com

2008-04-01 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

  • generate call for PostIncDotNode
  • kjs/nodes.cpp: (KJS::PostIncDotNode::emitCode):
  • kjs/nodes.h:
23:54 Changeset [32108] by mrowe@apple.com

2008-04-01 Maciej Stachowiak <mjs@apple.com>

Build fix.

  • fix build (not sure how this ever worked?)
  • kjs/nodes.cpp: (KJS::FunctionCallBracketNode::emitCode):
23:53 Changeset [32107] by mrowe@apple.com

2008-04-01 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.

  • generate code for FunctionCallBracketNode
  • kjs/nodes.cpp: (KJS::FunctionCallBracketNode::emitCode):
  • kjs/nodes.h:
23:53 Changeset [32106] by mrowe@apple.com

2008-04-01 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.

  • Fix two crashing SunSpider tests
  • VM/Machine.cpp: (KJS::Machine::privateExecute): set up 'this' properly for native calls.
  • kjs/list.h: (KJS::List::List): Fix intialization of buffer and size from vector, the initialization order was wrong.
23:53 Changeset [32105] by mrowe@apple.com

2008-04-01 Geoffrey Garen <ggaren@apple.com>

Build fix: marked ASSERT-only variables as UNUSED_PARAMs.

  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • kjs/JSVariableObject.h: (KJS::JSVariableObject::symbolTableInitializeVariable):
23:53 Changeset [32104] by mrowe@apple.com

2008-04-01 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Next step toward global code: Moved get, put, and initializeVariable
functionality up into JSVariableObject, and changed JSActivation to
rely on it.

  • kjs/JSActivation.cpp: (KJS::JSActivation::JSActivation): (KJS::JSActivation::getOwnPropertySlot): (KJS::JSActivation::put): (KJS::JSActivation::initializeVariable):
  • kjs/JSVariableObject.h: (KJS::JSVariableObject::valueAt): (KJS::JSVariableObject::isReadOnly): (KJS::JSVariableObject::symbolTableGet): (KJS::JSVariableObject::symbolTablePut): (KJS::JSVariableObject::symbolTableInitializeVariable):
23:53 Changeset [32103] by mrowe@apple.com

2008-04-01 Maciej Stachowiak <mjs@apple.com>

Reviewed by Sam.

  • fix HashTable assertion on some SunSpider tests

Don't use -1 as the deleted value for JSValue*-keyed hashtables,
since it is a valid value (it's the immediate for -1).

  • VM/CodeGenerator.h: (KJS::CodeGenerator::JSValueHashTraits::emptyValue): (KJS::CodeGenerator::JSValueHashTraits::deletedValue):
  • kjs/JSImmediate.h: (KJS::JSImmediate::impossibleValue):
23:53 Changeset [32102] by mrowe@apple.com

2008-04-01 Sam Weinig <sam@webkit.org>

Reviewed by Maciej Stachowiak.

Add support for calling Native constructors like new Array().

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitConstruct):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::NewExprNode::emitCode):
  • kjs/nodes.h:
23:53 Changeset [32101] by mrowe@apple.com

2008-04-01 Maciej Stachowiak <mjs@apple.com>

Reviewed by Sam.

  • add some missing toOpbject calls to avoid crashing when calling methods on primitives
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
23:53 Changeset [32100] by mrowe@apple.com

2008-04-01 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Changed Machine::dumpRegisters to take a pointer instead of a reference,
so gdb understands how to call it.

  • VM/Machine.cpp: (KJS::Machine::dumpRegisters): (KJS::Machine::privateExecute):
  • VM/Machine.h:
23:53 Changeset [32099] by mrowe@apple.com

2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Maciej.

Fix CodeGenerator::addConstant() so it uses the functionExpressions
counter for function expressions, not the functions counter.

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::addConstant):
23:53 Changeset [32098] by mrowe@apple.com

2008-03-31 Sam Weinig <sam@webkit.org>

Reviewed by Geoffrey Garen.

Add emitCode support for TypeOfResolveNode and TypeOfValueNode.
Added new opcode op_type_of to handle them.

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitNot): (KJS::CodeGenerator::emitInstanceOf): (KJS::CodeGenerator::emitTypeOf):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::jsTypeStringForValue): (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::TypeOfResolveNode::emitCode): (KJS::TypeOfValueNode::emitCode):
  • kjs/nodes.h:
23:53 Changeset [32097] by mrowe@apple.com

2008-03-31 Sam Weinig <sam@webkit.org>

Reviewed by Oliver Hunt.

Fix non-computed goto version of isOpcode. op_end is a valid opcode.

  • VM/Machine.cpp: (KJS::Machine::isOpcode):
23:53 Changeset [32096] by mrowe@apple.com

2008-03-31 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.

Added op_post_dec.

23:53 Changeset [32095] by mrowe@apple.com

2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Geoffrey Garen.

Add support for FunctionCallDotNode.

  • kjs/nodes.cpp: (KJS::FunctionCallDotNode::emitCode):
  • kjs/nodes.h:
23:53 Changeset [32094] by mrowe@apple.com

2008-03-31 Geoffrey Garen <ggaren@apple.com>

Reviewed by Beth Dakin.

Next step toward global code: Removed more obsolete API, moved
saveLocalStorage and restoreLocalStorage to JSGlobalObject subclass,
since it's only intended for use there.

  • ChangeLog:
  • JavaScriptCore.exp:
  • kjs/Activation.h:
  • kjs/JSGlobalObject.cpp: (KJS::JSGlobalObject::saveLocalStorage): (KJS::JSGlobalObject::restoreLocalStorage):
  • kjs/JSGlobalObject.h:
  • kjs/JSVariableObject.cpp:
  • kjs/JSVariableObject.h: (KJS::JSVariableObject::JSVariableObjectData::JSVariableObjectData):
  • kjs/function.cpp: (KJS::ActivationImp::ActivationImp):
23:52 Changeset [32093] by mrowe@apple.com

2008-03-31 Geoffrey Garen <ggaren@apple.com>

Reviewed by Beth Dakin.

Next step toward global code: subclass JSActivation + JSActivationData
from JSVariableObject + JSVariableObjectData.

JSActivation now relies on JSVariableObject for access to registers and
symbol table, and for some delete functionality, but not for anything
else yet.

(KJS::JSActivation::mark): Cleaned up the style here a little bit.

23:52 Changeset [32092] by mrowe@apple.com

2008-03-31 Geoffrey Garen <ggaren@apple.com>

Reviewed by Beth Dakin.

Next step toward global code: store "rOffset" in JSVariableObjectData.

  • kjs/JSGlobalObject.h: (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
  • kjs/JSVariableObject.h: (KJS::JSVariableObject::JSVariableObjectData::JSVariableObjectData):
23:52 Changeset [32091] by mrowe@apple.com

2008-03-31 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.

Next steps toward global code:

  • Moved access to the register file into JSVariableObject.
  • Added more ASSERTs to indicate obsolete APIs there are just hanging around to stave off build failures.
  • kjs/JSGlobalObject.h: (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
  • kjs/JSVariableObject.h: (KJS::JSVariableObject::registers): (KJS::JSVariableObject::JSVariableObjectData::JSVariableObjectData): (KJS::JSVariableObject::JSVariableObject):
23:52 Changeset [32090] by mrowe@apple.com

2008-03-31 Sam Weinig <sam@webkit.org>

Reviewed by Oliver. Tweaked somewhat by Maciej.

  • implement codegen for ReadModifyResolveNode
  • kjs/nodes.cpp: (KJS::emitReadModifyAssignment): (KJS::ReadModifyResolveNode::emitCode):
  • kjs/nodes.h:
23:52 Changeset [32089] by mrowe@apple.com

2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Geoff.

Fix the build -- r31492 removed activation tear-off, but r31493 used it.

  • kjs/nodes.cpp: (KJS::FuncExprNode::makeFunction):
23:52 Changeset [32088] by mrowe@apple.com

2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Maciej.

Add support for FuncExprNode to SquirrelFish.

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeBlock.h:
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::addConstant): (KJS::CodeGenerator::emitNewFunctionExpression):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::FuncExprNode::emitCode): (KJS::FuncExprNode::makeFunction):
  • kjs/nodes.h:
23:52 Changeset [32087] by mrowe@apple.com

2008-03-31 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.

First step toward global code: removed some obsolete JSGlobalObject
APIs, changing clients to ASSERT_NOT_REACHED.

Activation tear-off and scope chain pushing is obsolete because we
statically detect whether an activation + scope node is required.

The variableObject() and activationObject() accessors are obsolete
because they haven't been maintained, and they're mostly used by
node evaluation code, anyway.

The localStorage() accessor is obsolete because everything is in
registers now, and it's mostly used by node evaluation code, anyway.

23:52 Changeset [32086] by mrowe@apple.com

2008-03-31 Maciej Stachowiak <mjs@apple.com>

Reviewed by Darin.

  • implement codegen for bracket accessor and bracket assign
  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitGetPropVal): (KJS::CodeGenerator::emitPutPropVal):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::BracketAccessorNode::emitCode): (KJS::AssignBracketNode::emitCode):
  • kjs/nodes.h:
23:52 Changeset [32085] by mrowe@apple.com

2008-03-31 Geoffrey Garen <ggaren@apple.com>

Not reviewed.

Removed FIXME that I just fixed.

Added ASSERT to cover an error previously only covered by a FIXME.

  • kjs/JSActivation.cpp: (KJS::JSActivation::getOwnPropertySlot):
23:52 Changeset [32084] by mrowe@apple.com

2008-03-31 Geoffrey Garen <ggaren@apple.com>

Not reviewed.

Fixed indentation inside op_call. (I had left this code badly indented
to make the behavior-changing diff clearer.)

  • VM/Machine.cpp: (KJS::Machine::privateExecute):
23:52 Changeset [32083] by mrowe@apple.com

2008-03-31 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.

Fixed up logging of jump instructions to follow the following style:

jump offset(->absoluteTarget)

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
23:52 Changeset [32082] by mrowe@apple.com

2008-03-31 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.

Changed the SymbolTable API to use int instead of size_t. It has been
using int internally for a while now (since squirrelfish symbols can
have negative indices).

23:52 Changeset [32081] by mrowe@apple.com

2008-03-31 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Maciej.

Add support for FunctionCallValueNode.

  • kjs/nodes.cpp: (KJS::FunctionCallValueNode::emitCode):
  • kjs/nodes.h:
23:52 Changeset [32080] by mrowe@apple.com

2008-03-31 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

1) Implemented array literals

2) Renamed op_object_get and op_object_put to op_get_prop_id and
op_put_prop_id in preparation for new variants.

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitNewArray): (KJS::CodeGenerator::emitGetPropId): (KJS::CodeGenerator::emitPutPropId): (KJS::CodeGenerator::emitPutPropIndex):
  • VM/CodeGenerator.h: (KJS::CodeGenerator::CodeGenerator): (KJS::CodeGenerator::propertyNames):
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::ArrayNode::emitCode): (KJS::PropertyListNode::emitCode): (KJS::DotAccessorNode::emitCode): (KJS::PostIncResolveNode::emitCode): (KJS::PreIncResolveNode::emitCode): (KJS::AssignResolveNode::emitCode): (KJS::AssignDotNode::emitCode):
  • kjs/nodes.h:
23:52 Changeset [32079] by mrowe@apple.com

JavaScriptCore:

2008-03-30 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Implemented native function calls. (Re-entering from native code back
to JS doesn't work yet, though.)

0.2% speedup overall, due to some inlining tweaks. 3.6% regression on
function-empty.js, since we're making a new virtual call and taking a
new branch inside every op_call.

I adjusted the JavaScriptCore calling convention to minimize overhead,
like so:

The machine calls a single virtual function, "getCallData", to get all
the data it needs for a function call. Native code still uses the old
"isObject()" check followed by an "implementsCall()" check, which
aliases to "getCallData". (We can optimize native code to use getCallData
at our leisure.)

To supply a list of arguments, the machine calls a new List constructor
that just takes a pointer and a length, without copying. Native code
still appends to the list one argument at a time. (We can optimize
native code to use the new List constructor at our leisure.)

  • VM/Machine.cpp: (KJS::Machine::privateExecute): Changed resize() call to grow() call, to encourage the compiler to inline the Vector code.
  • kjs/CallData.h: Added. (KJS::): CallData is a union because eventually native calls will stuff a function pointer into it, to eliminate the callAsFunction virtual call.
  • kjs/function.cpp: (KJS::FunctionImp::callAsFunction): Changed this to an ASSERT since it's not implemented yet.
  • kjs/list.h: Made the List class two-faced, to support the old way and the new way during this transition phase: lists can be made read-only with just a pointer and a legnth, or you can append to them one item at a time.
  • kjs/value.h: (KJS::jsUndefined): Marked this function ALWAYS_INLINE for the benefit of a certain compiler that doesn't know what's best for it.

JavaScriptGlue:

2008-03-30 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Build fix.

  • ForwardingHeaders/wtf/UnusedParam.h: Copied from ForwardingHeaders/wtf/OwnPtr.h.

WebCore:

2008-03-30 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Adjusted WebCore JS functions to the new "getCallData" calling convention.

WebKit/mac:

2008-03-30 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Build fix.

23:51 Changeset [32078] by mrowe@apple.com

2008-03-30 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

Dump code that codegen can't handle yet, so it's easier to prioritize missing nodes.

  • kjs/nodes.h: (KJS::Node::emitCode):
23:51 Changeset [32077] by mrowe@apple.com

2008-03-30 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

Improve dumping of bytecode and fix coding style accordingly.

Registers are printed as lr1 for locals, tr1 for temp registers. Identifiers print as
foobar(@id0) and constants print as "foo"(@k1) or 312.4(@k2) or the like. Constant and
identifier tables are dumped for reference.

  • VM/CodeBlock.cpp: (KJS::escapeQuotes): (KJS::valueToSourceString): (KJS::registerName): (KJS::constantName): (KJS::idName): (KJS::printUnaryOp): (KJS::printBinaryOp): (KJS::CodeBlock::dump):
  • VM/Machine.cpp: (KJS::resolve): (KJS::resolveBase): (KJS::Machine::privateExecute):
23:51 Changeset [32076] by mrowe@apple.com

2008-03-30 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

Implement StringNode and VoidNode (both pretty trivial).

  • kjs/nodes.cpp: (KJS::StringNode::emitCode): (KJS::VoidNode::emitCode):
  • kjs/nodes.h:
23:51 Changeset [32075] by mrowe@apple.com

2008-03-30 Maciej Stachowiak <mjs@apple.com>

Reviewed by Sam.

Implement CommaNode.

  • kjs/nodes.cpp: (KJS::CommaNode::emitCode):
  • kjs/nodes.h:
23:51 Changeset [32074] by mrowe@apple.com

2008-03-30 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Maciej.

Adds support for dot notation and object literals.

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitNewObject):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::ObjectLiteralNode::emitCode): (KJS::PropertyListNode::emitCode): (KJS::DotAccessorNode::emitCode): (KJS::AssignDotNode::emitCode):
  • kjs/nodes.h:
23:51 Changeset [32073] by mrowe@apple.com

2008-03-29 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.

Mark the register file.

It's a conservative mark for now, but once registers are typed, we can
do an exact mark.

1.4% regression regardless of whether we actually do the marking.
GCC is is worth every penny.

  • VM/Machine.cpp: (KJS::Machine::privateExecute): Most of the changes here are just for the fact that "registers" is a pointer now.
  • kjs/JSGlobalObject.cpp: The global object owns the register file now.
23:51 Changeset [32072] by mrowe@apple.com

Bug 18204: SquirrelFish: continue/break do not correctly handle scope popping
<http://bugs.webkit.org/show_bug.cgi?id=18204>

Reviewed by Maciej.

We now track the scope depth as part of a loop context, and add an
extra instruction op_jump_scopes that is used to perform a jump across
dynamic scope boundaries.

23:51 Changeset [32071] by mrowe@apple.com

2008-03-28 Sam Weinig <sam@webkit.org>

Reviewed by Geoffrey Garen.

Add emitCode support for ConditionalNode.

  • kjs/nodes.cpp: (KJS::ConditionalNode::emitCode):
  • kjs/nodes.h:
23:51 Changeset [32070] by mrowe@apple.com

2008-03-28 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Responding to feedback, added some comments, fixed up a few names, and
clarified that "locals" always means all local variables, functions,
and parameters.

23:51 Changeset [32069] by mrowe@apple.com

2008-03-28 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Added support for "this".

Supply an implicit "this" value as the first argument to every function.
Alias the "this" keyword to that argument.

1% regression overall, 2.5% regression on empty function calls. Seems
like a reasonable cost for now, since we're doing more work.
(Eventually, we might decide to create a version of op_call specialized
for a known null "this" value.)

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitCall):
  • VM/CodeGenerator.h: (KJS::CodeGenerator::CodeGenerator):
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • kjs/CommonIdentifiers.cpp: (KJS::CommonIdentifiers::CommonIdentifiers):
  • kjs/CommonIdentifiers.h:
  • kjs/nodes.cpp: (KJS::ThisNode::emitCode): (KJS::FunctionCallResolveNode::emitCode):
  • kjs/nodes.h:
23:51 Changeset [32068] by mrowe@apple.com

Bug 18192: Squirrelfish needs support for break and continue
<http://bugs.webkit.org/show_bug.cgi?id=18192>

Reviewed by Geoff

Added a loop context stack to the code generator to provide the
correct jump labels for continue and goto. Added logic to the
currently implemented loop constructs to manage entry and exit
from the loop contexts. Finally, implemented codegen for break
and continue (and a pass through for LabelNode)

23:51 Changeset [32067] by mrowe@apple.com

2008-03-27 Sam Weinig <sam@webkit.org>

Reviewed by Geoffrey Garen.

Add emitCode support for UnaryPlusNode, NegateNode, BitwiseNotNode and LogicalNotNode.

  • VM/CodeBlock.cpp: (KJS::printUnaryOp): (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitToJSNumber): (KJS::CodeGenerator::emitNegate): (KJS::CodeGenerator::emitBitNot): (KJS::CodeGenerator::emitNot):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::UnaryPlusNode::emitCode): (KJS::NegateNode::emitCode): (KJS::BitwiseNotNode::emitCode): (KJS::LogicalNotNode::emitCode):
  • kjs/nodes.h:
23:51 Changeset [32066] by mrowe@apple.com

2008-03-27 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Maciej Stachowiak.

Add support for LogicalAndNode and LogicalOrNode.

  • kjs/nodes.cpp: (KJS::LogicalAndNode::emitCode): (KJS::LogicalOrNode::emitCode):
  • kjs/nodes.h:
23:51 Changeset [32065] by mrowe@apple.com

2008-03-27 Sam Weinig <sam@webkit.org>

Clean up code and debug output.

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
23:51 Changeset [32064] by mrowe@apple.com

2008-03-27 Geoffrey Garen <ggaren@apple.com>

Moved an ASSERT to a more logical place.

  • VM/Machine.cpp: (KJS::Machine::privateExecute):
23:51 Changeset [32063] by mrowe@apple.com

2008-03-27 Sam Weinig <sam@webkit.org>

Reviewed by Oliver Hunt.

Add emitCode support for InstanceOfNode.

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitInstanceOf):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::InstanceOfNode::emitCode):
  • kjs/nodes.h:
23:51 Changeset [32062] by mrowe@apple.com

Bug 18142: squirrelfish needs to support dynamic scoping/with
<http://bugs.webkit.org/show_bug.cgi?id=18142>

Reviewed by Maciej

Add support for dynamic scoping and add code to handle 'with'
statements.

23:50 Changeset [32061] by mrowe@apple.com

2008-03-27 Sam Weinig <sam@webkit.org>

Reviewed by Geoffrey Garen.

Add emitCode support for NullNode, FalseNode, TrueNode, IfNode, IfElseNode, DoWhileNode and WhileNode

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump): Dump op_jfalse opcode.
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitJumpIfFalse): Identical to emitJumpIfTrue except it emits the op_jfalse opcode. (KJS::CodeGenerator::emitLoad): Add and emitLoad override for booleans.
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute): Adds execution of op_jfalse. It is identical to op_jtrue, except the the condition is reversed.
  • VM/Opcode.h: Add op_jfalse.
  • kjs/nodes.cpp: (KJS::NullNode::emitCode): Added. (KJS::FalseNode::emitCode): Added. (KJS::TrueNode::emitCode): Added. (KJS::IfNode::emitCode): Added. (KJS::IfElseNode::emitCode): Added. (KJS::DoWhileNode::emitCode): Added. (KJS::WhileNode::emitCode): Added.
  • kjs/nodes.h:
23:50 Changeset [32060] by mrowe@apple.com

2008-03-26 Geoffrey Garen <ggaren@apple.com>

Nixed an unused List.

The calm before my stormy war against the List class.

  • kjs/function_object.cpp: (KJS::FunctionObjectImp::construct):
23:50 Changeset [32059] by mrowe@apple.com

SunSpider:

2008-03-26 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

--squirrelfish mode: pared down tests for squirrelfish to chew on.

  • sunspider:
  • tests/LIST:
  • tests/squirrelfish: Added.
  • tests/squirrelfish/function-closure.js: Added.
  • tests/squirrelfish/function-empty.js: Added.
  • tests/squirrelfish/function-missing-args.js: Added.
  • tests/squirrelfish/function-sum.js: Added.
  • tests/squirrelfish/loop-empty-resolve.js: Added.
  • tests/squirrelfish/loop-empty.js: Added.
  • tests/squirrelfish/loop-resolve.js: Added.
  • tests/squirrelfish/loop-sum.js: Added.

WebKitTools:

2008-03-26 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

--squirrelfish mode: pared down tests for squirrelfish to chew on.

  • Scripts/run-sunspider:
23:50 Changeset [32058] by mrowe@apple.com

2008-03-26 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Geoffrey Garen.

Adds support for EqualNode, NotEqualNode, StrictEqualNode, NotStrictEqualNode,
LessEqNode, GreaterNode, GreaterEqNode, MultNode, DivNode, ModNode, SubNode,
LeftShiftNode, RightShiftNode, UnsignedRightShiftNode, BitAndNode, BitXOrNode,
and BitOrNode.

  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitEqual): (KJS::CodeGenerator::emitNotEqual): (KJS::CodeGenerator::emitStrictEqual): (KJS::CodeGenerator::emitNotStrictEqual): (KJS::CodeGenerator::emitLessEq): (KJS::CodeGenerator::emitMult): (KJS::CodeGenerator::emitDiv): (KJS::CodeGenerator::emitMod): (KJS::CodeGenerator::emitSub): (KJS::CodeGenerator::emitLeftShift): (KJS::CodeGenerator::emitRightShift): (KJS::CodeGenerator::emitUnsignedRightShift): (KJS::CodeGenerator::emitBitAnd): (KJS::CodeGenerator::emitBitXOr): (KJS::CodeGenerator::emitBitOr):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::jsLessEq): (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::MultNode::emitCode): (KJS::DivNode::emitCode): (KJS::ModNode::emitCode): (KJS::SubNode::emitCode): (KJS::LeftShiftNode::emitCode): (KJS::RightShiftNode::emitCode): (KJS::UnsignedRightShiftNode::emitCode): (KJS::GreaterNode::emitCode): (KJS::LessEqNode::emitCode): (KJS::GreaterEqNode::emitCode): (KJS::EqualNode::emitCode): (KJS::NotEqualNode::emitCode): (KJS::StrictEqualNode::emitCode): (KJS::NotStrictEqualNode::emitCode): (KJS::BitAndNode::emitCode): (KJS::BitXOrNode::emitCode): (KJS::BitOrNode::emitCode):
  • kjs/nodes.h:
23:50 Changeset [32057] by mrowe@apple.com

2008-03-26 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Only print debug dumps in debug builds.

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::generate):
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
23:50 Changeset [32056] by mrowe@apple.com

2008-03-26 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Moved a few files around in the XCode project.

23:50 Changeset [32055] by mrowe@apple.com

2008-03-26 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Made closures work.

An activation object aliases to the register file until its associated
function returns, at which point it copies the registers for locals and
parameters into an independent storage buffer.

23:50 Changeset [32054] by mrowe@apple.com

2008-03-24 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.

Fixed recent 25% regression on simple for loop test. GCC seems to be
very finicky about the code that gets inlined into
Machine::privateExecute.

Everything in this patch is simply the result of experiment.

The resolve and resolve_base opcodes do not seem to have gotten slower
from this change.

  • VM/Machine.cpp: (KJS::resolve): (KJS::resolveBase): (KJS::Machine::privateExecute):
  • kjs/nodes.h:
23:50 Changeset [32053] by mrowe@apple.com

Bug 18059: squirrelfish needs to compile on platforms without computed goto
<http://bugs.webkit.org/show_bug.cgi?id=18059>

Reviewed by Geoff Garen

"Standard" macro style support for conditionalising the use of computed goto.

23:50 Changeset [32052] by mrowe@apple.com

2008-03-24 Geoffrey Garen <ggaren@apple.com>

Moved my notes from nodes.h to the wiki.

  • kjs/nodes.h:
23:50 Changeset [32051] by mrowe@apple.com

2008-03-24 Geoffrey Garen <ggaren@apple.com>

Reviewed by NOBODY.

SquirrelFish lives.

Initial check-in of the code I've been carrying around. Lots of stuff
doesn't work. Plus a bunch of empty files.

23:44 Changeset [32050] by mrowe@apple.com

Re-create squirrelfish branch.

23:43 Changeset [32049] by mrowe@apple.com

Move aside squirrelfish branch in prepration for rebasing it on trunk.

22:44 Changeset [32048] by antti@apple.com

2008-04-17 Antti Koivisto <antti@apple.com>

Reviewed by Oliver.

Implement calcMode=paced.


Tested by SVG testsuite tests
animate-elem-11-t.svg
animate-elem-15-t.svg
animate-elem-82-t.svg

  • svg/SVGAnimateElement.cpp: (WebCore::SVGAnimateElement::calculateDistance):
  • svg/SVGAnimateElement.h:
  • svg/SVGAnimateMotionElement.cpp: (WebCore::SVGAnimateMotionElement::calculateDistance):
  • svg/SVGAnimateMotionElement.h:
  • svg/SVGAnimateTransformElement.cpp: (WebCore::SVGAnimateTransformElement::calculateDistance):
  • svg/SVGAnimateTransformElement.h:
  • svg/SVGAnimationElement.cpp: (WebCore::SVGAnimationElement::calculateKeyTimesForCalcModePaced): (WebCore::SVGAnimationElement::startedActiveInterval):
  • svg/SVGAnimationElement.h: (WebCore::SVGAnimationElement::calculateDistance):
22:19 Changeset [32047] by ggaren@apple.com

2008-04-17 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.


Fixed ASSERT seen during run-sunspider of a debug build.

  • VM/CodeGenerator.h: Made the default codegen buffers bigger. SunSpider runs all tests in one global environment, so you end up with more than 128 locals. This is just a stop-gap until we code up a real solution to arbitrary symbol and label limits.
21:02 Changeset [32046] by hyatt@apple.com

2008-04-17 David Hyatt <hyatt@apple.com>

Fix a leak in ImageBuffer's clearImage method.

Reviewed by olliej

  • platform/graphics/ImageBuffer.h: (WebCore::ImageBuffer::clearImage):
20:45 Changeset [32045] by antti@apple.com

2008-04-17 Antti Koivisto <antti@apple.com>

Update SVG animation test results.

  • platform/mac/svg/W3C-SVG-1.1/animate-elem-30-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-40-t-expected.txt:
  • platform/mac/svg/W3C-SVG-1.1/animate-elem-41-t-expected.txt:
20:45 Changeset [32044] by antti@apple.com

2008-04-17 Antti Koivisto <antti@apple.com>

Reviewed by Eric.


https://bugs.webkit.org/show_bug.cgi?id=12438

More SVG animation:


  • Make multiple additive animations work
  • Support animating <use> instance trees
  • svg/SVGAnimateColorElement.cpp: (WebCore::SVGAnimateColorElement::SVGAnimateColorElement):
  • svg/SVGAnimateColorElement.h:


Made this AnimateElement subclass. All functionality is now provided by AnimateElement.


  • svg/SVGAnimateElement.cpp: (WebCore::SVGAnimateElement::determinePropertyType): (WebCore::SVGAnimateElement::calculateAnimatedValue): (WebCore::SVGAnimateElement::calculateFromAndToValues): (WebCore::SVGAnimateElement::calculateFromAndByValues): (WebCore::SVGAnimateElement::resetToBaseValue): (WebCore::SVGAnimateElement::applyResultsToTarget):
  • svg/SVGAnimateElement.h:
  • svg/SVGAnimateMotionElement.cpp: (WebCore::SVGAnimateMotionElement::resetToBaseValue): (WebCore::SVGAnimateMotionElement::calculateAnimatedValue): (WebCore::SVGAnimateMotionElement::applyResultsToTarget):
  • svg/SVGAnimateMotionElement.h:
  • svg/SVGAnimateTransformElement.cpp: (WebCore::SVGAnimateTransformElement::resetToBaseValue): (WebCore::SVGAnimateTransformElement::calculateAnimatedValue): (WebCore::SVGAnimateTransformElement::calculateFromAndByValues): (WebCore::SVGAnimateTransformElement::applyResultsToTarget):
  • svg/SVGAnimateTransformElement.h:


Switch to new model where

  • resetToBaseValue() resets the animated value back to the base value
  • calculateAnimatedValue() computes the value and adds it to the element used for accumulation
  • applyResultsToTarget() sets the computed value the target element


  • svg/SVGAnimationElement.cpp: (WebCore::SVGAnimationElement::fromValue): (WebCore::SVGAnimationElement::attributeIsCSS): (WebCore::SVGAnimationElement::targetAttributeIsCSS): (WebCore::SVGAnimationElement::setTargetAttributeAnimatedValue):


Update instances too.


(WebCore::SVGAnimationElement::startedActiveInterval):
(WebCore::SVGAnimationElement::updateAnimation):
(WebCore::SVGAnimationElement::endedActiveInterval):

  • svg/SVGAnimationElement.h:
  • svg/SVGSVGElement.cpp: (WebCore::SVGSVGElement::SVGSVGElement):
  • svg/SVGSetElement.cpp: (WebCore::SVGSetElement::SVGSetElement):
  • svg/SVGSetElement.h:


Made this AnimateElement subclass. All functionality is now provided by AnimateElement.


  • svg/animation/SMILTimeContainer.cpp: (WebCore::SMILTimeContainer::SMILTimeContainer): (WebCore::SMILTimeContainer::unschedule): (WebCore::SMILTimeContainer::updateDocumentOrderIndexes): (WebCore::PriorityCompare::PriorityCompare): (WebCore::PriorityCompare::operator()): (WebCore::SMILTimeContainer::sortByPriority): (WebCore::applyOrderSortFunction): (WebCore::sortByApplyOrder): (WebCore::SMILTimeContainer::baseValueFor): (WebCore::SMILTimeContainer::updateAnimations):
  • svg/animation/SMILTimeContainer.h: (WebCore::SMILTimeContainer::create): (WebCore::SMILTimeContainer::setDocumentOrderIndexesDirty):


Do additive animation with the following steps

  • sort active animations based on their priority (begin time, document order).
  • if not yet saved for each (element, attribute) pair save the base value.
  • lowest priority animation for each (element, attribute) acts as the result element.
  • animation results are resolved in priority order and results are accumulated to the result element.
  • after all active animations have been processed the values in result elements are applied to the target elements.


  • svg/animation/SVGSMILElement.cpp: (WebCore::SVGSMILElement::SVGSMILElement): (WebCore::SVGSMILElement::insertedIntoDocument):


Invalidate document order index.


(WebCore::SVGSMILElement::attributeName):
(WebCore::SVGSMILElement::isInactive):
(WebCore::SVGSMILElement::isFrozen):
(WebCore::SVGSMILElement::beginListChanged):
(WebCore::SVGSMILElement::determineActiveState):
(WebCore::SVGSMILElement::isContributing):
(WebCore::SVGSMILElement::progress):


Take care that animations in frozen state still contribute to the total. Since we now build the result starting
from the base value, fill="replace" works magically simply by not contributing anything.


  • svg/animation/SVGSMILElement.h: (WebCore::SVGSMILElement::previousIntervalBegin): (WebCore::SVGSMILElement::documentOrderIndex): (WebCore::SVGSMILElement::setDocumentOrderIndex):
18:50 Changeset [32043] by aroben@apple.com

Fix many tests on Windows

  • Scripts/run-webkit-tests: (readFromDumpToolWithTimer):
    • Use read instead of sysread to ensure that we don't interfere with other uses of buffered IO in this script.

(setFileHandleNonBlocking): Actually set the filehandle to blocking
when specified.

18:03 Changeset [32042] by jhoneycutt@apple.com

2008-04-17 Jon Honeycutt <jhoneycutt@apple.com>

Reviewed by mrowe.

Define HAVE_ACCESSIBILITY where WebKit, WebCore can see it.

18:02 Changeset [32041] by jhoneycutt@apple.com

2008-04-17 Jon Honeycutt <jhoneycutt@apple.com>

Reviewed by aliu.

  • page/AccessibilityObject.cpp: (WebCore::AccessibilityObject::layoutCount): Check isRenderView() before casting to RenderView.
18:01 Changeset [32040] by antti@apple.com

2008-04-17 Antti Koivisto <antti@apple.com>

Re-enable animation tests on windows.

  • platform/win/Skipped:
17:57 Changeset [32039] by antti@apple.com

2008-04-17 Antti Koivisto <antti@apple.com>

Reviewed by Oliver.


Fix https://bugs.webkit.org/show_bug.cgi?id=18551
Bug 18551: REGRESSION (r31801?): Crash in ContainerNode::removedFromDocument on many SVG tests under guard malloc


Freeing a RefPtr that is the last ref to the parent from removedFromDocument() is a bad idea.

Caching the target element is too dangerous, let's simply not do it. Getting it is very cheap anyway.

  • svg/animation/SVGSMILElement.cpp: (WebCore::SVGSMILElement::removedFromDocument): (WebCore::SVGSMILElement::attributeChanged): (WebCore::SVGSMILElement::targetElement):
  • svg/animation/SVGSMILElement.h:
17:56 Changeset [32038] by aroben@apple.com

Fix ~10 tests

  • Scripts/run-webkit-tests: Only remove the newline after #EOF, not whatever newline happens to be at the end of what we've read.
17:56 Changeset [32037] by weinig@apple.com

WebCore:

2008-04-17 Sam Weinig <sam@webkit.org>

Reviewed by Anders Carlsson.

Autogenerate the XMLHttpRequest javascript binding.

  • GNUmakefile.am:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCoreSources.bkl:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMWindowBase.cpp:
  • bindings/js/JSXMLHttpRequest.cpp: Removed.
  • bindings/js/JSXMLHttpRequest.h: Removed.
  • bindings/js/JSXMLHttpRequestConstructor.cpp: Added. (WebCore::JSXMLHttpRequestConstructor::JSXMLHttpRequestConstructor): (WebCore::JSXMLHttpRequestConstructor::implementsConstruct): (WebCore::JSXMLHttpRequestConstructor::construct):
  • bindings/js/JSXMLHttpRequestConstructor.h: Added. (WebCore::JSXMLHttpRequestConstructor::classInfo):
  • bindings/js/JSXMLHttpRequestCustom.cpp: Added. (WebCore::JSXMLHttpRequest::mark): (WebCore::JSXMLHttpRequest::onreadystatechange): (WebCore::JSXMLHttpRequest::setOnreadystatechange): (WebCore::JSXMLHttpRequest::onload): (WebCore::JSXMLHttpRequest::setOnload): (WebCore::JSXMLHttpRequest::responseXML): (WebCore::JSXMLHttpRequest::open): (WebCore::JSXMLHttpRequest::setRequestHeader): (WebCore::JSXMLHttpRequest::send): (WebCore::JSXMLHttpRequest::getResponseHeader): (WebCore::JSXMLHttpRequest::overrideMimeType): (WebCore::JSXMLHttpRequest::addEventListener): (WebCore::JSXMLHttpRequest::removeEventListener): (WebCore::JSXMLHttpRequest::dispatchEvent):
  • xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::readyState): (WebCore::XMLHttpRequest::responseText):
  • xml/XMLHttpRequest.h:
  • xml/XMLHttpRequest.idl: Added.

LayoutTests:

2008-04-17 Sam Weinig <sam@webkit.org>

Reviewed by Anders Carlsson.

Update test result for additon of XMLHttpRequest constants.

  • fast/dom/Window/window-properties-expected.txt:
17:50 Changeset [32036] by aroben@apple.com

Remove DRT/win's hang timer

run-webkit-tests takes care of this for us now

Reviewed by Anders Carlsson.

  • DumpRenderTree/win/DumpRenderTree.cpp:
17:49 Changeset [32035] by aroben@apple.com

Don't wait for the hang timer twice in the case of a hang

Previously we'd wait for a hang while reading both stdout and stderr
from DRT. Now we'll only wait for one or the other.

Reviewed by Anders Carlsson.

  • Scripts/run-webkit-tests: (top level): Don't wait for stderr to time out if stdout already timed out. (readFromDumpToolWithTimer): If $dontWaitForTimeOut is true, quit after the first read that returns no data.
17:48 Changeset [32034] by aroben@apple.com

Don't throw away the output from timed out tests

Reviewed by Anders Carlsson.

  • Scripts/run-webkit-tests: (top level): Updated for changes to readFromDumpToolWithTimer. (readFromDumpToolWithTimer): Return a hash that contains both the output and whether or not the test timed out.
17:46 Changeset [32033] by ggaren@apple.com

2008-04-17 Geoffrey Garen <ggaren@apple.com>

Reviewed by Oliver Hunt.


Fixed a bug in exception unwinding, where we wouldn't deref the scope
chain in global scope, so we would leak ScopeChainNodes when exceptions
were thrown inside "with" and "catch" scopes.


Also did some cleanup of the unwinding code along the way.


Scope chain reference counting is still wrong in a few ways. I thought
I would fix this portion of it first.


run-sunspider shows no change.

  • VM/Machine.cpp: (KJS::Machine::unwindCallFrame): (KJS::Machine::throwException): (KJS::Machine::privateExecute):
  • VM/Machine.h:
17:22 Changeset [32032] by beidson@apple.com

2008-04-17 Brady Eidson <beidson@apple.com>

Reviewed by Anders

The SessionStorage for a Page has to be copied every time a new Page is created.

I thought I had the right choke point for creating new Pages at FrameLoader::createWindow(),
but it just so happens there was another - in the ContextMenuController.

The *real* choke point for this, then, is in the Chrome itself.

  • loader/FrameLoader.cpp: (WebCore::FrameLoader::createWindow): Don't do the SessionStorage copy here...
  • page/Chrome.cpp: (WebCore::Chrome::createWindow): Do it here, instead!
17:13 Changeset [32031] by aroben@apple.com

Make the hang timer 60 seconds

  • Scripts/run-webkit-tests:
17:06 Changeset [32030] by alice.liu@apple.com

2008-04-17 Alice Liu <alice.liu@apple.com>

Reviewed by Jon Honeycutt.

Added some asserts to catch undesirable usage of setWrapper and addChildren.

  • page/AccessibilityObject.cpp: (WebCore::AccessibilityObject::addChildren):
  • page/AccessibilityObject.h: (WebCore::AccessibilityObject::setWrapper):
16:58 Changeset [32029] by aroben@apple.com

Get rid of carriage returns in DRT/win's stderr

Reviewed by Eric Seidel.

  • DumpRenderTree/win/DumpRenderTree.cpp: (main): Mark stderr as binary like we already do for stdout.
16:57 Changeset [32028] by aroben@apple.com

Fix Bug 17678: run-webkit-tests should have a watchdog timer (and timeout long tests)

<https://bugs.webkit.org/show_bug.cgi?id=17678>

We now abort tests that take longer than 60 seconds to produce output.
This matches the watchdog timer in DRT/mac and DRT/win (which we can
now remove).

Reviewed by Eric Seidel.

  • Scripts/run-webkit-tests: (top level): Read DRT's output using the new readFromDumpToolWithTimer subroutine. If readFromDumpToolWithTimer returns undefined it means the test timed out, so we register the test as a hang and move on. (sub testCrashedOrTimedOut): Renamed from testCrashed. Now handles both crashed and timed out tests. If the test timed out, we kill DRT before returning. (sub linksForTimedOutTest): Added. We don't have any output to link to for tests that timed out. (sub recordActualResultsAndDiff): Don't call length on undefined. (sub readFromDumpToolWithTimer): Added. Performs non-blocking reads from a filehandle until an #EOF is reached or $maximumSecondsWithoutOutput have elapsed. (sub setFileHandleNonBlocking): Marks a filehandle as blocking or non-blocking.
16:57 Changeset [32027] by aroben@apple.com

Refactor test results page generation

Reviewed by Eric Seidel.

  • Scripts/run-webkit-tests: (sub htmlForResultsSection): Added. Takes a set of tests, a description, and a subroutine to generate the links for each test, and creates a HTML string containing a table of the tests and their links. (sub linksForExpectedAndActualResults): Added. Replaces the htmlForExpectedAndActualResults subroutine. (sub linksForMismatchTest): Added. (sub linksForCrashOrErrorTest): Added. (sub linksForNewTest): Added.
16:57 Changeset [32026] by aroben@apple.com

Print the extension for all tests in the test results page

Reviewed by Eric Seidel.

  • Scripts/run-webkit-tests:
16:57 Changeset [32025] by aroben@apple.com

Move code that counts finished tests into a subroutine

Reviewed by Eric Seidel.

  • Scripts/run-webkit-tests: (sub countFinishedTest): Added.
16:56 Changeset [32024] by aroben@apple.com

Move code that handles a crash into a subroutine

Reviewed by Eric Seidel.

  • Scripts/run-webkit-tests: (sub testCrashed): Added.
16:31 Changeset [32023] by mrowe@apple.com

Fix <rdar://problem/5863552> REGRESSION (r30741): Attachments don't appear in the iChat message window after sending

The order of arguments to -[NSDictionary initWithObjects:andKeys:] had been transposed accidentally during refactoring.

Reviewed by Dan Bernstein.

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::createPlugin): Pass the arguments in the correct order.

16:25 Changeset [32022] by oliver@apple.com

Add more exception checking to toNumber conversions

Reviewed by Maciej

This corrects op_pre_dec, op_negate, op_mod and op_sub.

16:22 Changeset [32021] by andersca@apple.com

2008-04-17 Anders Carlsson <andersca@apple.com>

Add applicationCache object.


  • fast/dom/Window/window-properties-expected.txt:
16:09 Changeset [32020] by beidson@apple.com

2008-04-17 Brady Eidson <beidson@apple.com>

Reviewed by the Mitzpettel

Before things get much more intertwined, move away from a global LocalStorage model
to a per-PageGroup LocalStorage model.

  • page/DOMWindow.cpp: (WebCore::DOMWindow::localStorage): Get it from the current PageGroup, not the global LocalStorage (which doesn't exist anymore).
  • page/Page.cpp:
  • page/PageGroup.cpp: (WebCore::PageGroup::localStorage): Create a LocalStorage object on demand.
  • page/PageGroup.h:
  • storage/LocalStorage.cpp: (WebCore::LocalStorage::LocalStorage): Hold a back pointer to the owning PageGroup. (WebCore::LocalStorage::storageArea):
  • storage/LocalStorage.h: (WebCore::LocalStorage::create):
  • storage/LocalStorageArea.cpp: (WebCore::LocalStorageArea::LocalStorageArea): Hold a back pointer to the owning LocalStorage.
  • storage/LocalStorageArea.h: (WebCore::LocalStorageArea::create):
16:05 Changeset [32019] by alp@webkit.org

2008-04-17 Alp Toker <alp@atoker.com>

GTK+ build fix. Back out the libjpeg check part of r32008 from bug
#17865 (reopened).

  • configure.ac:
15:47 Changeset [32018] by andersca@apple.com

2008-04-17 Anders Carlsson <andersca@apple.com>

Fix indentation.


  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::scheduleArchiveLoad):
15:34 Changeset [32017] by andersca@apple.com

2008-04-17 Anders Carlsson <andersca@apple.com>

Reviewed by Brady.

When in the web archive debug mode, don't call didFail immediately. Instead,
add the loader to the substitute resource map, but with a null resource, which
indicates to substituteResourceDeliveryTimerFired that the load should fail.


  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::substituteResourceDeliveryTimerFired): (WebCore::DocumentLoader::scheduleArchiveLoad):
  • loader/ResourceLoader.cpp: (WebCore::ResourceLoader::load):
14:54 Changeset [32016] by eric@webkit.org

Reviewed by hyatt.

Rename RenderView to RenderViewport in the next rename patch.

  • Scripts/do-webcore-rename:
14:30 Changeset [32015] by andersca@apple.com

2008-04-17 Anders Carlsson <andersca@apple.com>

Reviewed by Sam.

Add JS bindings for the DOMApplicationCache object.


  • bindings/js/JSDOMApplicationCacheCustom.cpp: (WebCore::JSDOMApplicationCache::add): (WebCore::JSDOMApplicationCache::remove): (WebCore::JSDOMApplicationCache::addEventListener): (WebCore::JSDOMApplicationCache::removeEventListener): (WebCore::JSDOMApplicationCache::dispatchEvent): (WebCore::JSDOMApplicationCache::setOnchecking): (WebCore::JSDOMApplicationCache::onchecking): (WebCore::JSDOMApplicationCache::setOnerror): (WebCore::JSDOMApplicationCache::onerror): (WebCore::JSDOMApplicationCache::setOnnoupdate): (WebCore::JSDOMApplicationCache::onnoupdate): (WebCore::JSDOMApplicationCache::setOndownloading): (WebCore::JSDOMApplicationCache::ondownloading): (WebCore::JSDOMApplicationCache::setOnprogress): (WebCore::JSDOMApplicationCache::onprogress): (WebCore::JSDOMApplicationCache::setOnupdateready): (WebCore::JSDOMApplicationCache::onupdateready): (WebCore::JSDOMApplicationCache::setOncached): (WebCore::JSDOMApplicationCache::oncached): (WebCore::JSDOMApplicationCache::mark):
  • bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::mark):
  • bindings/js/JSEventTargetBase.cpp: (WebCore::toJS):
  • loader/appcache/DOMApplicationCache.idl:
  • page/DOMWindow.idl:
14:09 Changeset [32014] by alp@webkit.org

2008-04-17 Alp Toker <alp@atoker.com>

Rubber-stamped by Holger Freyther.

Reduce hard-coded page-cache count to 3 based on research done for the
Mac port on value / page.

We will need to make this more dynamic or configurable at some point
but for now it's best to keep closer to the behaviour before page
caching was enabled.

Issue spotted by Mark Rowe.

  • webkit/webkitprivate.cpp: (webkit_init):
14:05 Changeset [32013] by ggaren@apple.com

2008-04-17 Geoffrey Garen <ggaren@apple.com> and Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Oliver Hunt.


Behold: eval.


Introduced a new opcode: op_call_eval. In the normal case, it performs
an eval. In the case where eval has been overridden in some way, it
performs a function call.

  • VM/CodeGenerator.h: Added a feature so the code generator knows not to optimized locals in eval code.
13:33 Changeset [32012] by aroben@apple.com

Add some crashing tests to the Skipped file

  • platform/win/Skipped:
13:26 Changeset [32011] by adele@apple.com

2008-04-17 Eric Carlson <eric.carlson@apple.com>

Reviewed by Adele.

Fix for <rdar://problem/5861642> QTMovieWin returns uninitialized values

  • platform/graphics/win/QTMovieWin.cpp: (QTMovieWin::rate): (QTMovieWin::setRate): (QTMovieWin::setVolume): (QTMovieWin::getNaturalSize):
12:35 Changeset [32010] by alp@webkit.org

2008-04-17 Marco Barisione <marco.barisione@collabora.co.uk>

Reviewed by Alp Toker.

http://bugs.webkit.org/show_bug.cgi?id=18335
Pango font backend unable to display japanese properly

Different fonts can have different glyph indices, so we need to pass
the right font when retrieving a glyph index.

  • platform/graphics/gtk/GlyphPageTreeNodePango.cpp: (WebCore::pango_font_get_glyph): Temporarily override the font in the PangoAnalysis passed to pango_shape.
12:25 Changeset [32009] by alp@webkit.org

2008-04-17 Mario Bensi <mbensi@pleyo.com>

Reviewed by Alp Toker.

http://bugs.webkit.org/show_bug.cgi?id=18543
DumpRenderTree gtk freeze

fix DumpRenderTree gtk freeze

  • DumpRenderTree/gtk/DumpRenderTree.cpp: (dump):
12:21 Changeset [32008] by alp@webkit.org

2008-04-17 Jan Michael Alonzo <jmalonzo@unpluggable.com>

Reviewed by Alp Toker.

http://bugs.webkit.org/show_bug.cgi?id=17865
[Gtk] Improve detection of jpeglib and glib tools

Improve detecting jpeglib and glib tools

  • configure.ac: Throw an error if the dependencies above are currently not installed
12:10 Changeset [32007] by andersca@apple.com

2008-04-17 Anders Carlsson <andersca@apple.com>

According to Sam and David, it's "topLevel", not "toplevel".


  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::topLevelApplicationCache):
  • loader/DocumentLoader.h:
  • loader/appcache/DOMApplicationCache.cpp: (WebCore::DOMApplicationCache::associatedCache):
12:05 Changeset [32006] by andersca@apple.com

2008-04-17 Anders Carlsson <andersca@apple.com>

Reviewed by Sam.

Add DOMApplicationCache implementation.


  • dom/EventNames.h: Add new event names.


  • dom/EventTarget.cpp: (WebCore::EventTarget::toDOMApplicationCache):
  • dom/EventTarget.h: Add EventTarget conversion method.


  • loader/appcache/ApplicationCacheGroup.h: (WebCore::ApplicationCacheGroup::): (WebCore::ApplicationCacheGroup::status): (WebCore::ApplicationCacheGroup::update): (WebCore::ApplicationCacheGroup::newestCache): Add more stubs.


  • loader/appcache/DOMApplicationCache.cpp:
  • loader/appcache/DOMApplicationCache.h:
  • page/DOMWindow.cpp: (WebCore::DOMWindow::clear): (WebCore::DOMWindow::applicationCache):
  • page/DOMWindow.h: (WebCore::DOMWindow::optionalApplicationCache): Add ApplicationCache member.
11:49 Changeset [32005] by alp@webkit.org

2008-04-17 Daniele Metilli <daniele.metilli@gmail.com>

Reviewed by Eric.

Fixed a typo in the copyright header.

  • webkit/webkitprivate.h:
11:44 Changeset [32004] by andersca@apple.com

2008-04-17 Anders Carlsson <andersca@apple.com>

Build fix.

  • WebCore.vcproj/WebCore.vcproj:
10:50 Changeset [32003] by ggaren@apple.com

2008-04-17 Geoffrey Garen <ggaren@apple.com>

Reviewed by Sam Weinig.


Added some ASSERTs to document codegen failures in
run-javascriptcore-tests.


For all tests, program-level codegen now either succeeds, or fails with
an ASSERT.

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::addVar): (KJS::CodeGenerator::CodeGenerator): (KJS::CodeGenerator::newTemporary): (KJS::CodeGenerator::newLabel):
10:26 Changeset [32002] by adele@apple.com

WebCore:

2008-04-17 Dean Jackson <dino@apple.com>

Reviewed by Hyatt.

Fix for <rdar://problem/5849968> translate method should have Y=0 when only X is present

Test: fast/css/transform-default-parameter.html

  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::applyProperty): translate function with only X parameter now leaves the Y parameter as zero.

LayoutTests:

2008-04-17 Dean Jackson <dino@apple.com>

Reviewed by Hyatt.

Test for <rdar://problem/5849968> translate method should have Y=0 when only X is present

  • fast/css/transform-default-parameter.html: Added.
  • platform/mac/fast/css/transform-default-parameter-expected.checksum: Added.
  • platform/mac/fast/css/transform-default-parameter-expected.png: Added.
  • platform/mac/fast/css/transform-default-parameter-expected.txt: Added.
10:09 Changeset [32001] by andersca@apple.com

2008-04-17 Anders Carlsson <andersca@apple.com>

Reviewed by Sam.


Add plumbing for associating document loaders with application caches.


  • loader/DocumentLoader.cpp: (WebCore::DocumentLoader::DocumentLoader): (WebCore::DocumentLoader::~DocumentLoader): (WebCore::DocumentLoader::originalURL): (WebCore::DocumentLoader::requestURL): (WebCore::DocumentLoader::responseURL): (WebCore::DocumentLoader::responseMIMEType): (WebCore::DocumentLoader::setCandidateApplicationCacheGroup): (WebCore::DocumentLoader::setApplicationCache): (WebCore::DocumentLoader::toplevelApplicationCache):
  • loader/DocumentLoader.h: (WebCore::DocumentLoader::candidateApplicationCacheGroup): (WebCore::DocumentLoader::applicationCache):
  • loader/appcache/ApplicationCacheGroup.h: (WebCore::ApplicationCacheGroup::documentLoaderDestroyed):
09:04 Changeset [32000] by ap@webkit.org

Reviewed by Maciej.

Thread static data destructors are not guaranteed to be called in any particular order;
turn ThreadSpecific into a phoenix-style singleton to avoid accessing freed memory when
deleted objects are interdependent (e.g. CommonIdentifiers and internal identifier tables).

No change on SunSpider.

  • wtf/ThreadSpecific.h: (WTF::ThreadSpecific::Data::Data): (WTF::::get): (WTF::::set): (WTF::::destroy):
08:31 Changeset [31999] by aroben@apple.com

Fix Bug 18544: REGRESSION (r31951): Two fast/xsl tests crash

<https://bugs.webkit.org/show_bug.cgi?id=18544>

r31951 changed XSLTProcessor::parseErrorFunc to expect a Console* as
the context parameter. The caller in XSLTProcessor was changed, but
the one in XSLStyleSheet was missed.

Reviewed by Alexey Proskuryakov.

  • xml/XSLStyleSheet.cpp: (WebCore::XSLStyleSheet::parseString): Pass the Console as the context to parseErrorFunc.
08:11 Changeset [31998] by aroben@apple.com

Windows build fix after r31981

  • dom/Document.idl: Omit getCSSCanvasContext from the COM bindings.
04:56 Changeset [31997] by hausmann@webkit.org

Ariya Hidayat <ariya.hidayat@trolltech.com>

Implemented getFileModificationTime and pathGetFileName for the Qt port.

01:21 Changeset [31996] by ggaren@apple.com

2008-04-17 Geoffrey Garen <ggaren@apple.com>

Reviewed by Maciej Stachowiak.


Fixed another case of a dst register being an unreferenced temporary
(caused an ASSERT when running the full sunspider suite).

  • kjs/nodes.cpp: (KJS::CaseBlockNode::emitCodeForBlock):
01:07 Changeset [31995] by mjs@apple.com

2008-04-16 Maciej Stachowiak <mjs@apple.com>

Reviewed by Geoff.


  • add documentation (and meaningful parameter names) for arithmetic and bitwise binary ops
  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitMul): (KJS::CodeGenerator::emitDiv): (KJS::CodeGenerator::emitMod): (KJS::CodeGenerator::emitSub): (KJS::CodeGenerator::emitLeftShift): (KJS::CodeGenerator::emitRightShift): (KJS::CodeGenerator::emitUnsignedRightShift): (KJS::CodeGenerator::emitBitAnd): (KJS::CodeGenerator::emitBitXOr): (KJS::CodeGenerator::emitBitOr):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • VM/Opcode.h:
  • kjs/nodes.cpp: (KJS::MultNode::emitCode): (KJS::DivNode::emitCode): (KJS::ModNode::emitCode): (KJS::SubNode::emitCode): (KJS::LeftShiftNode::emitCode): (KJS::RightShiftNode::emitCode): (KJS::UnsignedRightShiftNode::emitCode): (KJS::BitAndNode::emitCode): (KJS::BitXOrNode::emitCode): (KJS::BitOrNode::emitCode): (KJS::emitReadModifyAssignment): (KJS::ReadModifyResolveNode::emitCode):
00:56 Changeset [31994] by oliver@apple.com

Exception checks for toNumber in op_pre_inc

Reviewed by Geoff

This is somewhat more convoluted than the simple hadException checks
we currently use. Instead we use special toNumber conversions that
select between the exception and ordinary vPC. This allows us to
remove any branches in the common case (incrementing a number).

00:44 Changeset [31993] by mrowe@apple.com

2008-04-17 Mark Rowe <mrowe@apple.com>

Fix the non-Mac builds that I broke with my Mac build fix.

  • css/CSSMutableStyleDeclaration.cpp: (WebCore::CSSMutableStyleDeclaration::getLayeredShorthandValue): Explicitly use the size_t version of max to avoid making assumptions about sizeof(size_t).
00:22 Changeset [31992] by mrowe@apple.com

2008-04-17 Mark Rowe <mrowe@apple.com>

Rubber-stamped by Dan Bernstein.

Fix the Mac build.

  • css/CSSMutableStyleDeclaration.cpp: (WebCore::CSSMutableStyleDeclaration::getLayeredShorthandValue): Update to use size_t in place of unsigned.
  • dom/NamedNodeMap.h: Ditto.
  • page/AccessibilityObject.h: Forward-declare AccessibilityObjectWrapper in the non-Objective-C case too.

2008-04-17 Mark Rowe <mrowe@apple.com>

Rubber-stamped by Dan Bernstein.

Fix the Mac build.

  • WebView/WebFrame.mm: Define HAVE_ACCESSIBILITY before including AccessibilityObject.h and AXObjectCache.h to get things building for now. This comes from config.h in WebCore but we don't have an equivalent in WebKit so we'll need to work out the correct place for this to live going forward.
Note: See TracTimeline for information about the timeline view.