Timeline


and

09/23/08:

23:44 Changeset [36842] by ggaren@apple.com

JavaScriptCore:

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

Reviewed by Oliver Hunt.


Fixed https://bugs.webkit.org/show_bug.cgi?id=21038 | <rdar://problem/6240812>
Uncaught exceptions in regex replace callbacks crash webkit


This was a combination of two problems:


(1) the replace function would continue execution after an exception
had been thrown.


(2) In some cases, the Machine would return 0 in the case of an exception,
despite the fact that a few clients dereference the Machine's return
value without first checking for an exception.


  • VM/Machine.cpp: (JSC::Machine::execute):


Return jsNull() instead of 0 in the case of an exception, since some
clients depend on using our return value.


ASSERT that execution does not continue after an exception has been
thrown, to help catch problems like this in the future.

  • kjs/StringPrototype.cpp: (JSC::stringProtoFuncReplace):


Stop execution if an exception has been thrown.

LayoutTests:

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

Reviewed by Oliver Hunt.


Test for https://bugs.webkit.org/show_bug.cgi?id=21038
Uncaught exceptions in regex replace callbacks crash webkit

  • fast/js/string-replace-exception-crash-expected.txt: Added.
  • fast/js/string-replace-exception-crash.html: Added.
22:49 Changeset [36841] by ggaren@apple.com

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

Try to fix the windows build.

  • VM/CTI.cpp: (JSC::CTI::compileOpCall): (JSC::CTI::privateCompileMainPass):
20:36 Changeset [36840] by alp@webkit.org

2008-09-23 Alp Toker <alp@nuanti.com>

Build fix.

  • VM/CTI.h:
20:24 Changeset [36839] by pewtermoose@webkit.org

2008-09-23 Matt Lilek <webkit@mattlilek.com>

Reviewed by Tim Hatcher.

Inspector search field style tweaks.

  • page/inspector/inspector.css:
19:23 Changeset [36838] by zimmermann@webkit.org

Reviewed by Eric.

Fixes: https://bugs.webkit.org/show_bug.cgi?id=21046 (Several LayoutTests crash)

Fix missing negation in EventTargetNode::insertedIntoDocument.
Made handleLocalEvents() virtual again, HTMLFormElement overrides it.
Remove code, that wasn't supposed to go in in dispatchGenericEvent().

19:08 Changeset [36837] by timothy@apple.com

Adds search support to the Profiles panel.

The Profiles panel supports a few types of queries:

  • Standard string matching for function names and file URLs.
  • Greater than and less than search for numeric columns. So a query of ">24" will match all rows that have calls greater than 24. Or "<=42" will match all 42 or less.
  • Percent and time units. Adding a unit of "s", "ms" or "%" is supported and will match only the Self and Total columns. So a query of ">1.25s" will match all rows that took longer than 1.25 seconds.

Reviewed by Oliver Hunt.

  • page/inspector/ProfileView.js: (WebInspector.ProfileView.prototype.hide): Reset _currentSearchResultIndex to -1. So the next time it will start at the first result. (WebInspector.ProfileView.prototype.refreshShowAsPercents): Moved from the bottom of the file. (WebInspector.ProfileView.prototype.searchCanceled): Clear the search properties and refresh highlighted data grid nodes. (WebInspector.ProfileView.prototype.performSearch): Search the profile nodes. (WebInspector.ProfileView.prototype.jumpToFirstSearchResult): Does what the function says. Calls _jumpToSearchResult. (WebInspector.ProfileView.prototype.jumpToLastSearchResult): Ditto. (WebInspector.ProfileView.prototype.jumpToNextSearchResult): Ditto. (WebInspector.ProfileView.prototype.jumpToPreviousSearchResult): Ditto. (WebInspector.ProfileView.prototype.showingFirstSearchResult): Does what the function says. (WebInspector.ProfileView.prototype.showingLastSearchResult): Ditto. (WebInspector.ProfileView.prototype._jumpToSearchResult): Select and reveal the profile node. Expand all the ancestors first so the profile node will have a DataGridNode. (WebInspector.ProfileView.prototype._changeView): Perform the search again on the new tree. (WebInspector.ProfileDataGridNode.prototype.createCell): Add the highlight class to cells that have search matches.
  • page/inspector/ProfilesPanel.js: (WebInspector.ProfilesPanel.prototype.reset): Call searchCanceled and delete the currentQuery. (WebInspector.ProfilesPanel.prototype.showProfile): Use profileViewForProfile. (WebInspector.ProfilesPanel.prototype.showView): Call showProfile. Used by Panel to show a view. (WebInspector.ProfilesPanel.prototype.profileViewForProfile): Create the ProfileView if needed. (WebInspector.ProfilesPanel.prototype.closeVisibleView): Renamed visibleProfileView to visibleView. (WebInspector.ProfilesPanel.prototype.get searchableViews): Return all the views. (WebInspector.ProfilesPanel.prototype.searchMatchFound): Update the sidebar search matches. (WebInspector.ProfilesPanel.prototype.searchCanceled): Clear all the sidebar search matches. (WebInspector.ProfileSidebarTreeElement.prototype.set searchMatches): Set the class and bubbleText.
  • page/inspector/inspector.css: New style rules for the cell highlight color.
19:08 Changeset [36836] by timothy@apple.com

Adds search support to the Resources and Scripts panels.

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

Reviewed by Oliver Hunt.

  • page/inspector/Images/searchSmallBlue.png: Added.
  • page/inspector/Images/searchSmallBrightBlue.png: Added.
  • page/inspector/Images/searchSmallGray.png: Added.
  • page/inspector/Images/searchSmallWhite.png: Added.
  • page/inspector/ResourceView.js: (WebInspector.ResourceView.prototype.attach): Attempt to attach to "resource-views" or "script-resource-views" since one might not be created yet.
  • page/inspector/ResourcesPanel.js: (WebInspector.ResourcesPanel.prototype.show): Hide any views that are visible that are not this panel's current visible view. This can happen when a ResourceView is visible in the Scripts panel then switched to the this panel. (WebInspector.ResourcesPanel.prototype.get searchableViews): Return all views, with the visibleView first. (WebInspector.ResourcesPanel.prototype.searchResultsSortFunction): Return a sort function that uses the current graph search function. So cycling through results will be in the order things appear in the sidebar. (WebInspector.ResourcesPanel.prototype.searchMatchFound): Update the search matches on the resource's sidebar tree element. (WebInspector.ResourcesPanel.prototype.searchCanceled): Restore the error and warning bubbles in the sidebar. Calls the Panel prototype's searchCanceled. (WebInspector.ResourcesPanel.prototype.performSearch): Hide all the error and warning bubbles in the sidebar. Calls the Panel prototype's performSearch. (WebInspector.ResourcesPanel.prototype.reset): Call searchCanceled and delete the currentQuery. (WebInspector.ResourcesPanel.prototype.addMessageToResource): Don't call updateErrorsAndWarnings if there is a current search query. (WebInspector.ResourcesPanel.prototype.clearMessages): Ditto. (WebInspector.ResourcesPanel.prototype.recreateViewForResourceIfNeeded): Ditto. (WebInspector.ResourcesPanel.prototype.showView): Call showResource. Used by Panel to show a view. (WebInspector.ResourceSidebarTreeElement.prototype.resetBubble): Clear all the classes and content. (WebInspector.ResourceSidebarTreeElement.prototype.set searchMatches): Set the bubbleText and class. (WebInspector.ResourceSidebarTreeElement.prototype.updateErrorsAndWarnings): Call resetBubble.
  • page/inspector/ScriptView.js: (WebInspector.ScriptView): Set _sourceFrameSetup to flase. (WebInspector.ScriptView.prototype.hide): Reset _currentSearchResultIndex to -1. So the next time it will start at the first result. (WebInspector.ScriptView.prototype.setupSourceFrameIfNeeded): Add an event listener for "syntax highlighting complete". (WebInspector.ScriptView.prototype): Share many methods with SourceView.
  • page/inspector/ScriptsPanel.js: (WebInspector.ScriptsPanel.prototype.show): Hide any views that are visible that are not this This can happen when a ResourceView is visible in the Resources panel then switched to the this panel. (WebInspector.ScriptsPanel.prototype.get searchableViews): Return all views, with the visibleView first. (WebInspector.ScriptsPanel.prototype.reset): Call searchCanceled and delete the currentQuery. (WebInspector.ScriptsPanel.prototype.showView): Call _showScriptOrResource. Used by Panel to show a view. (WebInspector.ScriptsPanel.prototype._sourceViewForScriptOrResource): Added helper.
  • page/inspector/SourceFrame.js: (WebInspector.SourceFrame.prototype.syntaxHighlightJavascript): Dispatch a "syntax highlighting complete" event.
  • page/inspector/SourceView.js: (WebInspector.SourceView.prototype.hide): (WebInspector.SourceView.prototype.detach): (WebInspector.SourceView.prototype._resourceLoadingFinished): Moved from the bottom of the file. (WebInspector.SourceView.prototype._addBreakpoint): Ditto. (WebInspector.SourceView.prototype.searchCanceled): Delete search properties. (WebInspector.SourceView.prototype.performSearch): Search the frame if it is loaded, otherwise store the worker function as _delayedFindSearchMatches and call it later in _sourceFrameSetupFinished. (WebInspector.SourceView.prototype.jumpToFirstSearchResult): (WebInspector.SourceView.prototype.jumpToLastSearchResult): (WebInspector.SourceView.prototype.jumpToNextSearchResult): (WebInspector.SourceView.prototype.jumpToPreviousSearchResult): (WebInspector.SourceView.prototype.showingFirstSearchResult): (WebInspector.SourceView.prototype.showingLastSearchResult): (WebInspector.SourceView.prototype._jumpToSearchResult): Selects the found Range. (WebInspector.SourceView.prototype._sourceFrameSetupFinished): Calls _delayedFindSearchMatches. (WebInspector.SourceView.prototype._syntaxHighlightingComplete): Call _sourceFrameSetupFinished.
  • page/inspector/inspector.css:
19:08 Changeset [36835] by timothy@apple.com

Rename some properties of ResourcesPanel and ScriptsPanel to be the same,
so future code can be shared.

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

Reviewed by Oliver Hunt.

  • page/inspector/ResourcesPanel.js: Renamed resourceViews to viewsContainerElement. And visibleResourceView to visibleView.
  • page/inspector/ScriptsPanel.js: Renamed scriptResourceViews to viewsContainerElement.
19:08 Changeset [36834] by timothy@apple.com

Highlight all matched search results in the Elements panel DOM tree.

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

Reviewed by Oliver Hunt.

  • page/inspector/ElementsPanel.js: (WebInspector.ElementsPanel.prototype.searchCanceled): Clear the highlight on all previous search results. (WebInspector.ElementsPanel.prototype.performSearch): Set the hihglight on all new search results.
  • page/inspector/ElementsTreeOutline.js: (WebInspector.ElementsTreeElement): Delay setting the title until onattach. (WebInspector.ElementsTreeElement.prototype.get/set highlighted): Sets or removes the highlighted class on the listItemElement. (WebInspector.ElementsTreeElement.prototype.onattach): Set the highlighted class if needed. Calls _updateTitle. (WebInspector.ElementsTreeElement.prototype._updateTitle): Adds a span with the highlight class so it can be styled when the highlighted class is present.
  • page/inspector/inspector.css: New style rules for the hihglight.
19:08 Changeset [36833] by timothy@apple.com

Add search support to the Elements panel.

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

Reviewed by Oliver Hunt.

  • page/inspector/ElementsPanel.js: (WebInspector.ElementsPanel.prototype.searchCanceled): Call updateSearchMatchesCount with a 0 match count to rest. Reset the other search properties. (WebInspector.ElementsPanel.prototype.performSearch): Evaluates the search as an XPath query and a CSS selector on all the Documents in the page. Remembers the found nodes and avoids duplicates. Focuses the first result. (WebInspector.ElementsPanel.prototype.jumpToNextSearchResult): Focuses the next result. (WebInspector.ElementsPanel.prototype.jumpToPreviousSearchResult): Focuses the previous result.
19:08 Changeset [36832] by timothy@apple.com

Add support to Panel that allows easy searching of sub-views.

Reviewed by Oliver Hunt.

  • page/inspector/Panel.js: (WebInspector.Panel.prototype.searchCanceled): Call searchCanceled on all the views in the search results and delete the currentQuery property. Call WebInspector.updateSearchMatchesCount wit ha 0 match count to rest. Reset the other search properties. (WebInspector.Panel.prototype.performSearch): Call searchCanceled since it will reset everything we need before doing a new search. Get an array of searchableViews from the panel, implemented by sub-classes. Iterate over the views one-by-one with an interval to prevent blocking the UI for large lists of searchableViews. This keeps the interface really responsive. Pass a finishedCallback function to the performSearch on each view so it can notify the panel of results. (WebInspector.Panel.prototype.jumpToNextSearchResult): Finds the index in the searchResults of the visibleView, so we know where in the results we are. This is done every time incase the user manually navigates to a new view. If the view is showing the last result, jump to the next view and show it's first result. Otherwise jump to the next result in the current view. (WebInspector.Panel.prototype.jumpToPreviousSearchResult): Ditto, but in reverse.
19:08 Changeset [36831] by timothy@apple.com

Add support for asking the current panel to perform a search, find next/previous and clear.
A search is performed on the new new current panel when switching between panels. The search
label/placeholder in the toolbar now includes the panel name to make it clear that panel will
be searched. The search field contents are selected when Command/Control-F or Enter/Return
is pressed, so the user can easily type an entirely new query. The search match count shows
up in the toolbar next to the search field.

Also changed:

  • Rename lastQuery to currentQuery since it better matches the truth.
  • Set the search field "results" attribute to zero since results arn't saved for how we use the search field.
  • Make repeated presses of the Return key jump to the next search result instead of doing nothing.
  • Increased the search field width.

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

Reviewed by Oliver Hunt.

  • English.lproj/localizedStrings.js: New strings.
  • page/inspector/inspector.css: New styles.
  • page/inspector/inspector.html: Add the search-results-matches element. Add the incremental attribute to the search field and set the results attribute to zero.
  • page/inspector/inspector.js: (WebInspector.set currentPanel): perform the search on the new panel. (WebInspector.loaded): Change the event listeners and remove code that changes the search label text. (WebInspector.documentKeyDown): Add support for Command/Control-G and Command/Control-Shift-G. To jump to the next and previous search results. (WebInspector.updateSearchLabel): Added. Update the search placeholder/label. This does different things depending on the attached state. (WebInspector.searchKeyDown): Call preventDefault since this was the Enter key. This prevents a "search" event from firing for key down. We handle the Enter key on key up in searchKeyUp. This stops performSearch from being called twice in a row. (WebInspector.searchKeyUp): Calls performSearch when it is the Enter key. (WebInspector.performSearch): Delete the currentQuery property and call searchCanceled on all the panels. Call jumpToNextSearchResult when this is the same query or a forced search. Call updateSearchMatchesCount to reset the matches count in the toolbar. (WebInspector.updateSearchMatchesCount): Added. Updates the matches count in the toolbar.
19:08 Changeset [36830] by timothy@apple.com

Remove the previous Inspector search code to make room for the new stuff.

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

Reviewed by Oliver Hunt.

  • page/inspector/inspector.css:
  • page/inspector/inspector.html:
  • page/inspector/inspector.js: (WebInspector.get/set showingSearchResults): Removed. (WebInspector.searchResultsKeyDown): Removed. (WebInspector.searchResultsResizerDragStart): Removed. (WebInspector.searchResultsResizerDragEnd): Removed. (WebInspector.searchResultsResizerDrag): Removed. (WebInspector.performSearch): Removed searching parts.
19:07 Changeset [36829] by timothy@apple.com

Use the Array.remove helper function in more places.

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

Reviewed by Kevin McCullough.

  • page/inspector/ResourceCategory.js: (WebInspector.ResourceCategory.prototype.removeResource): Use Array.remove.
  • page/inspector/ResourcesPanel.js: (WebInspector.ResourcesPanel.prototype.removeResource): Ditto.
  • page/inspector/inspector.js: (WebInspector.removeResource): Ditto.
19:07 Changeset [36828] by timothy@apple.com

Fixes a bug where inspecting a node after reloading the page
would not reveal the node in the DOM tree. The TreeOutline
was not being told to forget decendants of a removed child.
So old TreeElements would be found that are not in the tree.

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

Reviewed by Kevin McCullough.

  • page/inspector/treeoutline.js: (TreeOutline._removeChildAtIndex): Call _forgetChildrenRecursive in addition to _forgetTreeElement. (TreeOutline._removeChildren): Call _forgetChildrenRecursive in addition to _forgetTreeElement. (TreeOutline._rememberTreeElement): Use Array.indexOf to quickly search for known elements. (TreeOutline._forgetTreeElement): Use Array.remove to remove elements. (TreeOutline._forgetChildrenRecursive): Recursively traverse the descendants and call _forgetTreeElement.
  • page/inspector/utilities.js: (Array.prototype.remove): Speed up this function by using Array.indexOf when onlyFirst is true.
19:07 Changeset [36827] by timothy@apple.com

Fixes a bug where inspecting some short text nodes does
not reveal them in the Elements panel DOM tree.

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

Reviewed by Oliver Hunt.

  • page/inspector/ElementsTreeOutline.js: (WebInspector.ElementsTreeOutline.prototype.set focusedDOMNode): The revealAndSelectNode() method might find a different element if there is inlined text, and the select() call would change the focusedDOMNode and reenter this setter. So to avoid calling focusedNodeChanged() twice, first check if _focusedDOMNode is the same node as the one passed in. (WebInspector.ElementsTreeOutline.prototype.update): Remove use of this.treeOutline, since this is the TreeOutline. (WebInspector.ElementsTreeOutline.prototype.findTreeElement): Added. Provides default functions for isAncestor, getParet and equal. Calls the base protoype's findTreeElement. If that returns null and the node is a text node, try finding it's parent. (WebInspector.ElementsTreeOutline.prototype.revealNode): Removed. Renamed to revealAndSelectNode. (WebInspector.ElementsTreeOutline.prototype.revealAndSelectNode): Selects and reveals the node passed in. Use the simple findTreeElement. (WebInspector.ElementsTreeOutline.prototype._treeElementFromEvent): Remove use of this.treeOutline, since this is the TreeOutline.
19:07 Changeset [36826] by timothy@apple.com

Fixes an exception that happened when removing a Resource
from the ResourcesPanel.

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

Reviewed by Kevin McCullough.

  • page/inspector/ResourcesPanel.js: (WebInspctor.ResourcesPanel.prototype.removeResource): Remove the graphElement.
18:52 Changeset [36825] by ggaren@apple.com

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

Reviewed by Darin Adler.

  • wtf/Platform.h: Removed duplicate #if.
18:18 Changeset [36824] by kmccullough@apple.com

2008-09-23 Kevin McCullough <kmccullough@apple.com>

Fixed "Time" to "Tim"

  • ChangeLog:
18:00 Changeset [36823] by zimmermann@webkit.org

Reviewed by Oliver.

Move mapInstanceToElement/removeInstanceMapping/instancesForElement
from SVGDocumentExtensions to SVGElement. It's more useful to store
the list of SVGElementInstances per SVGElement, instead of using
a document-wide hash for this purpose.

17:53 Changeset [36822] by kevino@webkit.org

wx build fix.

17:27 Changeset [36821] by ggaren@apple.com

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

Reviewed by Darin Adler.


Changed the layout of the call frame from


{ header, parameters, locals | constants, temporaries }


to


{ parameters, header | locals, constants, temporaries }


This simplifies function entry+exit, and enables a number of future
optimizations.


13.5% speedup on empty call benchmark for bytecode; 23.6% speedup on
empty call benchmark for CTI.


SunSpider says no change. SunSpider --v8 says 1% faster.

  • VM/CTI.cpp:


Added a bit of abstraction for calculating whether a register is a
constant, since this patch changes that calculation:
(JSC::CTI::isConstant):
(JSC::CTI::getConstant):
(JSC::CTI::emitGetArg):
(JSC::CTI::emitGetPutArg):
(JSC::CTI::getConstantImmediateNumericArg):

Updated for changes to callframe header location:
(JSC::CTI::emitPutToCallFrameHeader):
(JSC::CTI::emitGetFromCallFrameHeader):
(JSC::CTI::printOpcodeOperandTypes):


Renamed to spite Oliver:
(JSC::CTI::emitInitRegister):


Added an abstraction for emitting a call through a register, so that
calls through registers generate exception info, too:
(JSC::CTI::emitCall):

Updated to match the new callframe header layout, and to support calls
through registers, which have no destination address:
(JSC::CTI::compileOpCall):
(JSC::CTI::privateCompileMainPass):
(JSC::CTI::privateCompileSlowCases):
(JSC::CTI::privateCompile):

  • VM/CTI.h:

More of the above:
(JSC::CallRecord::CallRecord):

  • VM/CodeBlock.cpp:

Updated for new register layout:
(JSC::registerName):
(JSC::CodeBlock::dump):

  • VM/CodeBlock.h:


Updated CodeBlock to track slightly different information about the
register frame, and tweaked the style of an ASSERT_NOT_REACHED.
(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::getStubInfo):

  • VM/CodeGenerator.cpp:


Added some abstraction around constant register allocation, since this
patch changes it, changed codegen to account for the new callframe
layout, and added abstraction around register fetching code
that used to assume that all local registers lived at negative indices,
since vars now live at positive indices:
(JSC::CodeGenerator::generate):
(JSC::CodeGenerator::addVar):
(JSC::CodeGenerator::addGlobalVar):
(JSC::CodeGenerator::allocateConstants):
(JSC::CodeGenerator::CodeGenerator):
(JSC::CodeGenerator::addParameter):
(JSC::CodeGenerator::registerFor):
(JSC::CodeGenerator::constRegisterFor):
(JSC::CodeGenerator::newRegister):
(JSC::CodeGenerator::newTemporary):
(JSC::CodeGenerator::highestUsedRegister):
(JSC::CodeGenerator::addConstant):


ASSERT that our caller referenced the registers it passed to us.
Otherwise, we might overwrite them with parameters:
(JSC::CodeGenerator::emitCall):
(JSC::CodeGenerator::emitConstruct):

  • VM/CodeGenerator.h:


Added some abstraction for getting a RegisterID for a given index,
since the rules are a little weird:
(JSC::CodeGenerator::registerFor):

  • VM/Machine.cpp:

Utility function to transform a machine return PC to a virtual machine
return VPC, for the sake of stack unwinding, since both PCs are stored
in the same location now:
(JSC::vPCForPC):

Tweaked to account for new call frame:
(JSC::Machine::initializeCallFrame):


Tweaked to account for registerOffset supplied by caller:
(JSC::slideRegisterWindowForCall):

Tweaked to account for new register layout:
(JSC::scopeChainForCall):
(JSC::Machine::callEval):
(JSC::Machine::dumpRegisters):
(JSC::Machine::unwindCallFrame):
(JSC::Machine::execute):

Changed op_call and op_construct to implement the new calling convention:
(JSC::Machine::privateExecute):

Tweaked to account for the new register layout:
(JSC::Machine::retrieveArguments):
(JSC::Machine::retrieveCaller):
(JSC::Machine::retrieveLastCaller):
(JSC::Machine::callFrame):
(JSC::Machine::getArgumentsData):

Changed CTI call helpers to implement the new calling convention:
(JSC::Machine::cti_op_call_JSFunction):
(JSC::Machine::cti_op_call_NotJSFunction):
(JSC::Machine::cti_op_ret_activation):
(JSC::Machine::cti_op_ret_profiler):
(JSC::Machine::cti_op_construct_JSConstruct):
(JSC::Machine::cti_op_construct_NotJSConstruct):
(JSC::Machine::cti_op_call_eval):

  • VM/Machine.h:
  • VM/Opcode.h:


Renamed op_initialise_locals to op_init, because this opcode
doesn't initialize all locals, and it doesn't initialize only locals.
Also, to spite Oliver.


  • VM/RegisterFile.h:


New call frame enumeration values:
(JSC::RegisterFile::):

Simplified the calculation of whether a RegisterID is a temporary,
since we can no longer assume that all positive non-constant registers
are temporaries:

  • VM/RegisterID.h: (JSC::RegisterID::RegisterID): (JSC::RegisterID::setTemporary): (JSC::RegisterID::isTemporary):

Renamed firstArgumentIndex to firstParameterIndex because the assumption
that this variable pertained to the actual arguments supplied by the
caller caused me to write some buggy code:

  • kjs/Arguments.cpp: (JSC::ArgumentsData::ArgumentsData): (JSC::Arguments::Arguments): (JSC::Arguments::fillArgList): (JSC::Arguments::getOwnPropertySlot): (JSC::Arguments::put):

Updated for new call frame layout:

  • kjs/DebuggerCallFrame.cpp: (JSC::DebuggerCallFrame::functionName): (JSC::DebuggerCallFrame::type):
  • kjs/DebuggerCallFrame.h:

Changed the activation object to account for the fact that a call frame
header now sits between parameters and local variables. This change
requires all variable objects to do their own marking, since they
now use their register storage differently:

  • kjs/JSActivation.cpp: (JSC::JSActivation::mark): (JSC::JSActivation::copyRegisters): (JSC::JSActivation::createArgumentsObject):
  • kjs/JSActivation.h:

Updated global object to use the new interfaces required by the change
to JSActivation above:

  • kjs/JSGlobalObject.cpp: (JSC::JSGlobalObject::reset): (JSC::JSGlobalObject::mark): (JSC::JSGlobalObject::copyGlobalsFrom): (JSC::JSGlobalObject::copyGlobalsTo):
  • kjs/JSGlobalObject.h: (JSC::JSGlobalObject::addStaticGlobals):

Updated static scope object to use the new interfaces required by the
change to JSActivation above:

  • kjs/JSStaticScopeObject.cpp: (JSC::JSStaticScopeObject::mark): (JSC::JSStaticScopeObject::~JSStaticScopeObject):
  • kjs/JSStaticScopeObject.h: (JSC::JSStaticScopeObject::JSStaticScopeObject): (JSC::JSStaticScopeObject::d):

Updated variable object to use the new interfaces required by the
change to JSActivation above:

  • kjs/JSVariableObject.cpp: (JSC::JSVariableObject::copyRegisterArray): (JSC::JSVariableObject::setRegisters):
  • kjs/JSVariableObject.h:

Changed the bit twiddling in symbol table not to assume that all indices
are negative, since they can be positive now:

  • kjs/SymbolTable.h: (JSC::SymbolTableEntry::SymbolTableEntry): (JSC::SymbolTableEntry::isNull): (JSC::SymbolTableEntry::getIndex): (JSC::SymbolTableEntry::getAttributes): (JSC::SymbolTableEntry::setAttributes): (JSC::SymbolTableEntry::isReadOnly): (JSC::SymbolTableEntry::pack): (JSC::SymbolTableEntry::isValidIndex):

Changed call and construct nodes to ref their functions and/or bases,
so that emitCall/emitConstruct doesn't overwrite them with parameters.
Also, updated for rename to registerFor:

  • kjs/nodes.cpp: (JSC::ResolveNode::emitCode): (JSC::NewExprNode::emitCode): (JSC::EvalFunctionCallNode::emitCode): (JSC::FunctionCallValueNode::emitCode): (JSC::FunctionCallResolveNode::emitCode): (JSC::FunctionCallBracketNode::emitCode): (JSC::FunctionCallDotNode::emitCode): (JSC::PostfixResolveNode::emitCode): (JSC::DeleteResolveNode::emitCode): (JSC::TypeOfResolveNode::emitCode): (JSC::PrefixResolveNode::emitCode): (JSC::ReadModifyResolveNode::emitCode): (JSC::AssignResolveNode::emitCode): (JSC::ConstDeclNode::emitCodeSingle): (JSC::ForInNode::emitCode):

Added abstraction for getting exception info out of a call through a
register:

  • masm/X86Assembler.h: (JSC::X86Assembler::emitCall):


Removed duplicate #if:

  • wtf/Platform.h:
17:23 Changeset [36820] by zimmermann@webkit.org

Rubber stamped by Sam.

Move code from EventTarget to EventTargetNode.

I refactored most parts to live in EventTarget, a year ago,
though the implementation of EventTargetSVGElementInstance is
done in another way, that obsoletes this.

17:14 Changeset [36819] by hyatt@apple.com

Fix horizontal scrollbars on windows.

17:09 Changeset [36818] by bdakin@apple.com

WebCore:

2008-09-23 Beth Dakin <bdakin@apple.com>

Reviewed by Sam Weinig.

Fix for https://bugs.webkit.org/show_bug.cgi?id=21041 "Add Contact"
link at gmail does not support AXPress action
and corresponding: <rdar://problem/6216178>

I fixed this bug by making AccessibilityObject::anchorElement
support ARIA links.

  • page/AccessibilityImageMapLink.cpp: (WebCore::AccessibilityImageMapLink::anchorElement):
  • page/AccessibilityImageMapLink.h:
  • page/AccessibilityObject.cpp: (WebCore::AccessibilityObject::anchorElement):
  • page/AccessibilityObject.h: (WebCore::AccessibilityObject::isNativeAnchor):
  • page/AccessibilityRenderObject.cpp: (WebCore::AccessibilityRenderObject::isNativeAnchor): (WebCore::AccessibilityRenderObject::anchorElement): (WebCore::AccessibilityRenderObject::internalLinkElement): (WebCore::AccessibilityRenderObject::url):
  • page/AccessibilityRenderObject.h:
  • page/mac/AccessibilityObjectWrapper.mm: (AXLinkElementForNode):

WebKitTools:

2008-09-23 Beth Dakin <bdakin@apple.com>

Reviewed by Sam Weinig.

This patch extends DumpRenderTree's AccessibilityController to ask
if the focused element supports the press action.

  • DumpRenderTree/AccessibilityUIElement.cpp: (getSupportsPressActionCallback): (AccessibilityUIElement::getJSClass):
  • DumpRenderTree/AccessibilityUIElement.h:
  • DumpRenderTree/mac/AccessibilityUIElementMac.mm: (AccessibilityUIElement::supportsPressAction):

LayoutTests:

2008-09-23 Beth Dakin <bdakin@apple.com>

Reviewed by Sam Weinig.

Test for https://bugs.webkit.org/show_bug.cgi?id=21041 "Add
Contact" link at gmail does not support AXPress action
and corresponding: <rdar://problem/6216178>

  • accessibility/aria-link-supports-press-expected.txt: Added.
  • accessibility/aria-link-supports-press.html: Added.
17:05 Changeset [36817] by kmccullough@apple.com

2008-09-23 Kevin McCullough <kmccullough@apple.com>

Reviewed by Time and Oliver.

Bug 20949: Catch repeated messages in Inspector Controller to limit
memory usage

  • Store the repeat count in the Console Message object, in the Inspector Controller and JS ConsoleMessage object.
  • page/InspectorController.cpp: (WebCore::ConsoleMessage::ConsoleMessage): (WebCore::ConsoleMessage::operator==): (WebCore::InspectorController::InspectorController): (WebCore::InspectorController::addConsoleMessage): (WebCore::InspectorController::addScriptConsoleMessage):
  • page/InspectorController.h:
  • page/inspector/Console.js:
  • page/inspector/Resource.js:
  • page/inspector/ResourcesPanel.js:
  • page/inspector/SourceFrame.js:
16:44 Changeset [36816] by zimmermann@webkit.org

Reviewed by Eric.

Working on proper EventTarget support for SVGElementInstance.

Add new EventTargetSVGElementInstance class, and it's corresponding JS wrapper.
Finally JSEventTargetBase, is actually used for another class than JSEventTargetnode.

Remove EventTarget inheritance from SVGElementInstance, and the manual "TreeShared"
implementation. Let it use TreeShared directly.

It's not activated so far (SVGUseElement still creating SVGElementInstance objects).
The transition to EventTargetSVGElementInstance will be done in a few individual patches.

14:47 Changeset [36815] by mitz@apple.com

Reviewed by Dave Hyatt.

  • platform/graphics/mac/SimpleFontDataMac.mm: (WebCore::SimpleFontData::getCTFont):
14:43 Changeset [36814] by hyatt@apple.com

WebCore:

2008-09-23 David Hyatt <hyatt@apple.com>

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

Teach the viewless Mac scrollbar how to avoid NSWindow's resizer.

Reviewed by Sam Weinig

  • platform/ScrollView.h:
  • platform/Scrollbar.cpp: (WebCore::Scrollbar::setFrameGeometry):
  • platform/Scrollbar.h:
  • platform/Widget.cpp: (WebCore::Widget::convertFromContainingWindow):
  • platform/Widget.h:
  • platform/mac/ScrollViewMac.mm: (WebCore::ScrollView::ScrollViewPrivate::ScrollViewPrivate): (WebCore::ScrollView::ScrollView): (WebCore::ScrollView::~ScrollView): (WebCore::ScrollView::windowResizerRect): (WebCore::ScrollView::resizerOverlapsContent): (WebCore::ScrollView::adjustOverlappingScrollbarCount): (WebCore::ScrollView::setParent):
  • platform/mac/WidgetMac.mm: (WebCore::Widget::convertFromContainingWindow):

WebKit/mac:

2008-09-23 David Hyatt <hyatt@apple.com>

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

Teach the viewless Mac scrollbar how to avoid the NSWindow resizer.

Reviewed by Sam Weinig

  • WebCoreSupport/WebChromeClient.mm: (WebChromeClient::windowResizerRect):
14:33 Changeset [36813] by jmalonzo@webkit.org

2008-09-23 Dirk Schulze <vbs85@gmx.de>

Reviewed by Darin Adler. Landed by Jan Alonzo.

Added support for getImageData() and putImageData()
to Cairo.

[CAIRO] needs getImageData and putImageData support
https://bugs.webkit.org/show_bug.cgi?id=20838

  • platform/graphics/cairo/ImageBufferCairo.cpp: (WebCore::ImageBuffer::ImageBuffer): (WebCore::ImageBuffer::getImageData): (WebCore::ImageBuffer::putImageData):
14:07 Changeset [36812] by jmalonzo@webkit.org

2008-09-23 Marco Barisione <marco.barisione@collabora.co.uk>

Reviewed by Holger Freyther.

http://bugs.webkit.org/show_bug.cgi?id=18987
[GTK] Implement SharedBuffer::createWithContentsOfFile and
KURL::fileSystemPath

  • GNUmakefile.am: Add KURLGtk.cpp and SharedBufferGtk.cpp.
  • platform/gtk/KURLGtk.cpp: Added. (WebCore::KURL::fileSystemPath): Implemented.
  • platform/gtk/SharedBufferGtk.cpp: Added. (WebCore::SharedBuffer::createWithContentsOfFile): Implemented.
  • platform/gtk/TemporaryLinkStubs.cpp: Remove the old stubs.
13:39 Changeset [36811] by ap@webkit.org

Reviewed by Oliver Hunt, okayed by Darin Adler.

<rdar://problem/5575547> REGRESSION: ATOK has no phrase boundary on Safari/Mail.app

  • rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::paintCompositionUnderline): Add 2 pixel spacing between clauses.
13:30 Changeset [36810] by mitz@apple.com

WebKit/mac:

Reviewed by Beth Dakin.

  • fix <rdar://problem/6233388> Crash beneath -[WebFrameView keyDown:]

Test: fast/events/keydown-remove-frame.html

  • WebView/WebFrameView.mm: (-[WebFrameView keyDown:]): Added a null check.

LayoutTests:

Reviewed by Beth Dakin.

  • test for <rdar://problem/6233388> Crash beneath -[WebFrameView keyDown:]
  • fast/events/keydown-remove-frame-expected.txt: Added.
  • fast/events/keydown-remove-frame.html: Added.
  • fast/events/resources/keydown-remove-frame-iframe.html: Added.
11:37 Changeset [36809] by kmccullough@apple.com

2008-09-23 Kevin McCullough <kmccullough@apple.com>

Reviewed by Darin.

Bug 21030: The JS debugger breaks on the do of a do-while not the while
(where the conditional statement is)
https://bugs.webkit.org/show_bug.cgi?id=21030
Now the statementListEmitCode detects if a do-while node is being
emited and emits the debug hook on the last line instead of the first.

This change had no effect on sunspider.

  • kjs/nodes.cpp: (JSC::statementListEmitCode):
  • kjs/nodes.h: (JSC::StatementNode::isDoWhile): (JSC::DoWhileNode::isDoWhile):
10:30 Changeset [36808] by mjs@apple.com

2008-09-23 Maciej Stachowiak <mjs@apple.com>

Reviewed by Camron Zwarich.

~2% speedup on EarleyBoyer test.


  • VM/CTI.cpp: (JSC::CTI::privateCompileMainPass): (JSC::CTI::privateCompileSlowCases):
  • VM/Machine.cpp: (JSC::Machine::cti_op_instanceof):
09:34 Changeset [36807] by ap@webkit.org

Reviewed by Darin Adler.

https://bugs.webkit.org/show_bug.cgi?id=21023
Don't use TEC for encodings supported by ICU

  • platform/text/mac/mac-encodings.txt: Removed x-mac-centraleurroman, x-mac-cyrillic, x-mac-greek, and x-mac-turkish.
  • platform/text/TextCodecICU.cpp: (WebCore::TextCodecICU::registerExtendedEncodingNames): Register aliases for these encodings that are not registered automatically; updated comments.
07:18 Changeset [36806] by mjs@apple.com

2008-09-23 Maciej Stachowiak <mjs@apple.com>

Reviewed by Cameron Zwarich.


  • add forgotten slow case logic for !==
  • VM/CTI.cpp: (JSC::CTI::privateCompileSlowCases):
06:20 Changeset [36805] by mjs@apple.com

2008-09-23 Maciej Stachowiak <mjs@apple.com>

Reviewed by Cameron Zwarich.

  • inline the fast cases of !==, same as for ===


2.9% speedup on EarleyBoyer benchmark

  • VM/CTI.cpp: (JSC::CTI::compileOpStrictEq): Factored stricteq codegen into this function, and parameterized so it can do the reverse version as well. (JSC::CTI::privateCompileMainPass): Use the above for stricteq and nstricteq.
  • VM/CTI.h: (JSC::CTI::): Declare above stuff.
  • VM/Machine.cpp: (JSC::Machine::cti_op_nstricteq): Removed fast cases, now handled inline.
03:59 Changeset [36804] by cwzwarich@webkit.org

2008-09-23 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Oliver Hunt.

Bug 20989: Aguments constructor should put 'callee' and 'length' properties in a more efficient way
<https://bugs.webkit.org/show_bug.cgi?id=20989>

Make special cases for the 'callee' and 'length' properties in the
Arguments object.

This is somewhere between a 7.8% speedup and a 10% speedup on the V8
Raytrace benchmark, depending on whether it is run alone or with the
other V8 benchmarks.

  • kjs/Arguments.cpp: (JSC::ArgumentsData::ArgumentsData): (JSC::Arguments::Arguments): (JSC::Arguments::mark): (JSC::Arguments::getOwnPropertySlot): (JSC::Arguments::put): (JSC::Arguments::deleteProperty):
03:03 Changeset [36803] by oliver@apple.com

Build fix (add file i forgot in r36801)

00:46 Changeset [36802] by mjs@apple.com

JavaScriptCore:

2008-09-23 Maciej Stachowiak <mjs@apple.com>

Reviewed by Darin.


~2% speedup on EarleyBoyer

The idea here is to record in the StructureID whether the class
needs a special hasInstance or if it can use the normal logic from
JSObject.


Based on this I inlined the real work directly into
cti_op_instanceof and put the fastest checks up front and the
error handling at the end (so it should be fairly straightforward
to split off the beginning to be inlined if desired).

I only did this for CTI, not the bytecode interpreter.


  • API/JSCallbackObject.h: (JSC::JSCallbackObject::createStructureID):
  • ChangeLog:
  • VM/Machine.cpp: (JSC::Machine::cti_op_instanceof):
  • kjs/JSImmediate.h: (JSC::JSImmediate::isAnyImmediate):
  • kjs/TypeInfo.h: (JSC::TypeInfo::overridesHasInstance): (JSC::TypeInfo::flags):

WebCore:

2008-09-23 Maciej Stachowiak <mjs@apple.com>

Reviewed by Darin.

~2% speedup on EarleyBoyer

(WebCore updates.)


  • bindings/js/JSQuarantinedObjectWrapper.h: (WebCore::JSQuarantinedObjectWrapper::createStructureID):
00:40 Changeset [36801] by oliver@apple.com

2008-09-22 Darin Adler <darin@apple.com>

Reviewed by Oliver Hunt

  • GNUmakefile.am: Added JSCanvasPixelArrayCustom.h.
  • WebCore.vcproj/WebCore.vcproj: Ditto.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • bindings/js/JSCanvasPixelArrayCustom.cpp: Removed indexGetter and indexSetter. These are now both inlined, so in the header.
  • bindings/js/JSCanvasPixelArrayCustom.h: Added. The getByIndex function is what's used for HasCustomIndexGetter. Also moved the indexSetter function here.
  • bindings/scripts/CodeGeneratorJS.pm: Changed HasCustomIndexGetter to use a getByIndex member function rather than an indexGetter stat member function in a property slot. This lets us avoid the property slot mechanism's rule where it turns numeric property names into strings in the identifier table, which is good because that's slow. Also added a new property CustomHeader that allows IDL files to introduce headers to be included -- useful when we have functions that we want to inline into the binding.
  • html/CanvasPixelArray.idl: Added CustomHeader attribute.
00:23 Changeset [36800] by eric@webkit.org

No review, build fix only.

Another blind stab in the dark.

  • svg/graphics/cg/SVGResourceClipperCg.cpp: Add missing header.
00:04 Changeset [36799] by eric@webkit.org

No review, build fix only.

Third time's the charm, eh? My local build is sadly still not done...

  • platform/graphics/AffineTransform.cpp: remove extra &
  • platform/graphics/AffineTransform.h: remove extra &

09/22/08:

23:47 Changeset [36798] by eric@webkit.org

2008-09-22 Eric Seidel <eric@webkit.org>

No review, build fix only.

  • platform/graphics/AffineTransform.cpp: remove extra ;
23:38 Changeset [36797] by eric@webkit.org

No review, build fix only.

Speculative fix for the build while I wait for my compile to finish.

  • platform/graphics/AffineTransform.cpp:
23:25 Changeset [36796] by alice.liu@apple.com

WebKit/win:

2008-09-22 Alice Liu <alice.liu@apple.com>

Added record-memory-win.vcproj tool to the solution

Reviewed by Steve Falkenburg.

  • WebKit.vcproj/WebKit.sln:

WebKitTools:

2008-09-22 Alice Liu <alice.liu@apple.com>

Adding a stand-alone Windows console application to record a process's memory usage

Reviewed by Steve Falkenburg.

  • record-memory-win: Added.
  • record-memory-win/main.cpp: Added.
  • record-memory-win/record-memory-win.vcproj: Added.
23:05 Changeset [36795] by eric@webkit.org

2008-09-22 Dirk Schulze <vbs85@gmx.de>

Reviewed by eseidel. Landed by eseidel.

Moved makeMapBetweenRects from SVG/CG to AffineTransform
Make SVGResourceClipper::applyClip more cross-platform

  • platform/graphics/AffineTransform.cpp:
  • platform/graphics/AffineTransform.h:
  • svg/graphics/cg/CgSupport.cpp:
  • svg/graphics/cg/CgSupport.h:
  • svg/graphics/cg/SVGPaintServerGradientCg.cpp: (WebCore::SVGPaintServerGradient::handleBoundingBoxModeAndGradientTransformation):
  • svg/graphics/cg/SVGResourceClipperCg.cpp: (WebCore::SVGResourceClipper::applyClip):
22:45 Introducing SquirrelFish Extreme.ja edited by omo@dodgson.org
(diff)
22:22 Changeset [36794] by darin@apple.com

2008-09-22 Darin Adler <darin@apple.com>

Reviewed by Sam Weinig.

Speeds up v8-raytrace by 7.2%.

  • kjs/nodes.cpp: (JSC::FunctionBodyNode::FunctionBodyNode): Initialize m_refCount to 0.
  • kjs/nodes.h: (JSC::FunctionBodyNode::ref): Call base class ref once, and thereafter use m_refCount. (JSC::FunctionBodyNode::deref): Ditto, but the deref side.
22:12 Changeset [36793] by darin@apple.com

2008-09-22 Darin Adler <darin@apple.com>

Pointed out by Sam Weinig.

  • kjs/Arguments.cpp: (JSC::Arguments::fillArgList): Fix bad copy and paste. Oops!
21:55 Changeset [36792] by darin@apple.com

2008-09-22 Darin Adler <darin@apple.com>

Reviewed by Cameron Zwarich.

Speeds up v8-raytrace by 5%.

  • kjs/Arguments.cpp: (JSC::ArgumentsData::ArgumentsData): Use a fixed buffer if there are 4 or fewer extra arguments. (JSC::Arguments::Arguments): Use a fixed buffer if there are 4 or fewer extra arguments. (JSC::Arguments::~Arguments): Delete the buffer if necessary. (JSC::Arguments::mark): Update since extraArguments are now Register. (JSC::Arguments::fillArgList): Added special case for the only case that's actually used in the practice, when there are no parameters. There are some other special cases in there too, but that's the only one that matters. (JSC::Arguments::getOwnPropertySlot): Updated to use setValueSlot since there's no operation to get you at the JSValue* inside a Register as a "slot".
20:08 Changeset [36791] by alp@webkit.org

2008-09-22 Alp Toker <alp@nuanti.com>

Reviewed by David Hyatt.

https://bugs.webkit.org/show_bug.cgi?id=16331
[Gtk] no focus when button/checkbox/radiobutton clicked, only when tabbed

Obey GTK+ focusing conventions for controls and anchor elements.

It could be interesting to push these decisions up to Settings or
ChromeClient some day but this gets things working.

Right and middle click events still need some work to match GTK+
conventions.

  • html/HTMLAnchorElement.cpp: (WebCore::HTMLAnchorElement::isMouseFocusable):
  • html/HTMLFormControlElement.cpp: (WebCore::HTMLFormControlElement::isMouseFocusable):
  • page/EventHandler.cpp: (WebCore::EventHandler::sendContextMenuEvent):
19:46 Changeset [36790] by weinig@apple.com

Fix typo in ChangeLog

19:44 Changeset [36789] by weinig@apple.com

2008-09-22 Sam Weinig <sam@webkit.org>

Reviewed by Maciej Stachowiak.

Patch for https://bugs.webkit.org/show_bug.cgi?id=21014
Speed up for..in by using StructureID to avoid call hasProperty

Speeds up fasta by 8%.

  • VM/JSPropertyNameIterator.cpp: (JSC::JSPropertyNameIterator::invalidate):
  • VM/JSPropertyNameIterator.h: (JSC::JSPropertyNameIterator::next):
  • kjs/PropertyNameArray.h: (JSC::PropertyNameArrayData::begin): (JSC::PropertyNameArrayData::end): (JSC::PropertyNameArrayData::setCachedStructureID): (JSC::PropertyNameArrayData::cachedStructureID):
  • kjs/StructureID.cpp: (JSC::StructureID::getEnumerablePropertyNames): (JSC::structureIDChainsAreEqual):
  • kjs/StructureID.h:
18:24 Changeset [36788] by darin@apple.com

2008-09-22 Darin Adler <darin@apple.com>

  • page/mac/FrameMac.mm: (WebCore::Frame::baseWritingDirectionForSelectionStart): Fix indentation.
18:19 Changeset [36787] by weinig@apple.com

WebCore:

2008-09-22 Sam Weinig <sam@webkit.org>

Reviewed by Dan Bernstein.

Patch for https://bugs.webkit.org/show_bug.cgi?id=21013
Match Firefox in how we hide HTMLInputElement.selectionStart, selectionEnd
and setSelectionRange. This also allows us to remove the legacy JSHTMLInputElementBase
class!

  • selectionStart, selectionEnd and setSelectionRange now are visible in iteration of non-selectable input types, but return undefined when accessed.
  • DerivedSources.make:
  • GNUmakefile.am:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • WebCoreSources.bkl:
  • bindings/js/JSHTMLInputElementBase.cpp: Removed.
  • bindings/js/JSHTMLInputElementBase.h: Removed.
  • bindings/js/JSHTMLInputElementCustom.cpp: Added. (WebCore::JSHTMLInputElement::customGetOwnPropertySlot): (WebCore::JSHTMLInputElement::selectionStart): (WebCore::JSHTMLInputElement::selectionEnd):
  • bindings/js/JSHTMLInputElementCustom.h: Added.
  • html/HTMLInputElement.idl:

LayoutTests:

2008-09-22 Sam Weinig <sam@webkit.org>

Reviewed by Dan Bernstein.

Tests for https://bugs.webkit.org/show_bug.cgi?id=21013

  • fast/forms/selection-functions.html: Update test to match new behavior that we now share with Firefox.
17:48 Changeset [36786] by mitz@apple.com

Reviewed by Sam Weinig.

  • fix <rdar://problem/5699571> Mail: Unable to change writing direction to LTR in an empty message

Not testable in DumpRenderTree or in Safari

  • page/mac/FrameMac.mm: (WebCore::Frame::baseWritingDirectionForSelectionStart): Account for the case that the selection start node is a block.
16:18 Changeset [36785] by weinig@apple.com

2008-09-22 Alexander Orlov <alexander.orlov@loxal.net>

Reviewed by Darin Adler.

  • projects/performance/index.html: Remove dead link to the 24fun test.
16:01 Changeset [36784] by weinig@apple.com

2008-09-22 Kelvin Sherlock <ksherlock@gmail.com>

Updated and tweaked by Sam Weinig.

Reviewed by Geoffrey Garen.

Bug 20020: Proposed enhancement to JavaScriptCore API
<https://bugs.webkit.org/show_bug.cgi?id=20020>

Add JSObjectMakeArray, JSObjectMakeDate, JSObjectMakeError, and JSObjectMakeRegExp
functions to create JavaScript Array, Date, Error, and RegExp objects, respectively.

  • API/JSObjectRef.cpp: The functions
  • API/JSObjectRef.h: Function prototype and documentation
  • JavaScriptCore.exp: Added functions to exported function list
  • API/tests/testapi.c: Added basic functionality tests.
  • kjs/DateConstructor.cpp: Replaced static JSObject* constructDate(ExecState* exec, JSObject*, const ArgList& args) with JSObject* constructDate(ExecState* exec, const ArgList& args). Added static JSObject* constructWithDateConstructor(ExecState* exec, JSObject*, const ArgList& args) function
  • kjs/DateConstructor.h: added prototype for JSObject* constructDate(ExecState* exec, const ArgList& args)
  • kjs/ErrorConstructor.cpp: removed static qualifier from ErrorInstance* constructError(ExecState* exec, const ArgList& args)
  • kjs/ErrorConstructor.h: added prototype for ErrorInstance* constructError(ExecState* exec, const ArgList& args)
  • kjs/RegExpConstructor.cpp: removed static qualifier from JSObject* constructRegExp(ExecState* exec, const ArgList& args)
  • kjs/RegExpConstructor.h: added prototype for JSObject* constructRegExp(ExecState* exec, const ArgList& args)
15:17 Changeset [36783] by hyatt@apple.com

WebCore:

2008-09-22 David Hyatt <hyatt@apple.com>

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

Make sure that the scrollbar gets sent a release event on platforms that call handleMouseDoubleClickEvent.

Reviewed by Sam Weinig

  • page/EventHandler.cpp: (WebCore::EventHandler::handleMouseDoubleClickEvent):

LayoutTests:

2008-09-22 David Hyatt <hyatt@apple.com>

Layout test for double click scrollbar bug.

Reviewed by Sam Weinig

  • fast/events/scrollbar-double-click-expected.txt: Added.
  • fast/events/scrollbar-double-click.html: Added.
14:59 Changeset [36782] by pewtermoose@webkit.org

2008-09-22 Matt Lilek <webkit@mattlilek.com>

Not reviewed, Windows build fix.

  • kjs/Arguments.cpp:
  • kjs/FunctionPrototype.cpp:
14:44 Changeset [36781] by eric@webkit.org

No review, rollback only.

Roll out Peter's change (per his request)
http://trac.webkit.org/changeset/36069
https://bugs.webkit.org/show_bug.cgi?id=19663
This change has been the source of numerous regressions
(several of which were latent bugs revealed by this change,
others were bugs in this change)

  • platform/graphics/BitmapImage.cpp: (WebCore::BitmapImage::BitmapImage): (WebCore::BitmapImage::startAnimation): (WebCore::BitmapImage::advanceAnimation):
  • platform/graphics/BitmapImage.h:
  • platform/graphics/cairo/ImageCairo.cpp: (WebCore::BitmapImage::draw):
  • platform/graphics/cg/ImageCG.cpp: (WebCore::BitmapImage::draw):
  • platform/graphics/qt/ImageQt.cpp: (WebCore::BitmapImage::draw):
  • platform/graphics/wx/ImageWx.cpp: (WebCore::BitmapImage::draw):
14:32 Changeset [36780] by mitz@apple.com

WebCore:

Reviewed by Sam Weinig.

  • fix <rdar://problem/5158514> Switch the complex text code path to Core Text

Tests: platform/mac-snowleopard/fast/text/myanmar-shaping.html

platform/mac-snowleopard/fast/text/thai-combining-mark-positioning.html

  • config.h: Use Core Text if not building for Leopard or Tiger.

LayoutTests:

Reviewed by Sam Weinig.

  • tests and updated results for <rdar://problem/5158514> Switch the complex text code path to Core Text
  • platform/mac-snowleopard/fast: Added.
  • platform/mac-snowleopard/fast/text: Added.
  • platform/mac-snowleopard/fast/text/atsui-multiple-renderers-expected.checksum: Added.
  • platform/mac-snowleopard/fast/text/atsui-multiple-renderers-expected.png: Added.
  • platform/mac-snowleopard/fast/text/atsui-multiple-renderers-expected.txt: Added.
  • platform/mac-snowleopard/fast/text/myanmar-shaping-expected.checksum: Added.
  • platform/mac-snowleopard/fast/text/myanmar-shaping-expected.png: Added.
  • platform/mac-snowleopard/fast/text/myanmar-shaping-expected.txt: Added.
  • platform/mac-snowleopard/fast/text/myanmar-shaping.html: Added.
  • platform/mac-snowleopard/fast/text/resources: Added.
  • platform/mac-snowleopard/fast/text/resources/Garuda.ttf: Added from http://www.w3.org/International/tests/test-webfonts/test-thai-tibetan-myanmar.html.
  • platform/mac-snowleopard/fast/text/resources/mm3.ttf: Added from http://www.w3.org/International/tests/test-webfonts/test-thai-tibetan-myanmar.html.
  • platform/mac-snowleopard/fast/text/thai-combining-mark-positioning-expected.checksum: Added.
  • platform/mac-snowleopard/fast/text/thai-combining-mark-positioning-expected.png: Added.
  • platform/mac-snowleopard/fast/text/thai-combining-mark-positioning-expected.txt: Added.
  • platform/mac-snowleopard/fast/text/thai-combining-mark-positioning.html: Added.
14:20 Changeset [36779] by weinig@apple.com

JavaScriptCore:

2008-09-22 Sam Weinig <sam@webkit.org>

Reviewed by Darin Adler.

Patch for https://bugs.webkit.org/show_bug.cgi?id=20982
Speed up the apply method of functions by special-casing array and 'arguments' objects

1% speedup on v8-raytrace.

Test: fast/js/function-apply.html

  • kjs/Arguments.cpp: (JSC::Arguments::fillArgList):
  • kjs/Arguments.h:
  • kjs/FunctionPrototype.cpp: (JSC::functionProtoFuncApply):
  • kjs/JSArray.cpp: (JSC::JSArray::fillArgList):
  • kjs/JSArray.h:

LayoutTests:

2008-09-22 Sam Weinig <sam@webkit.org>

Reviewed by Darin Adler.

Test for https://bugs.webkit.org/show_bug.cgi?id=20982

  • fast/js/function-apply-expected.txt: Added.
  • fast/js/function-apply.html: Added.
  • fast/js/resources/function-apply.js: Added.
14:04 Changeset [36778] by darin@apple.com

2008-09-22 Darin Adler <darin@apple.com>

Reviewed by Sam Weinig.

3% or so speedup on DeltaBlue benchmark.

  • kjs/ArrayPrototype.cpp: (JSC::arrayProtoFuncPop): Call JSArray::pop when appropriate. (JSC::arrayProtoFuncPush): Call JSArray::push when appropriate.
  • kjs/JSArray.cpp: (JSC::JSArray::putSlowCase): Set m_fastAccessCutoff when appropriate, getting us into the fast code path. (JSC::JSArray::pop): Added. (JSC::JSArray::push): Added.
  • kjs/JSArray.h: Added push and pop.
  • kjs/operations.cpp: (JSC::throwOutOfMemoryError): Don't inline this. Helps us avoid PIC branches.
14:03 Changeset [36777] by hyatt@apple.com

2008-09-22 David Hyatt <hyatt@apple.com>

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

Add code that paints an NSView-less scroller using HIThemeDrawTrack. This scrollbar is still not
switched on. There are still a few more refinements to make to the rendering and behavior.

Reviewed by Darin Adler

  • platform/ScrollbarThemeComposite.cpp: (WebCore::ScrollbarThemeComposite::paint):
  • platform/ScrollbarThemeComposite.h: (WebCore::ScrollbarThemeComposite::paintTrack): (WebCore::ScrollbarThemeComposite::paintButton): (WebCore::ScrollbarThemeComposite::paintThumb):
  • platform/mac/ScrollbarThemeMac.h:
  • platform/mac/ScrollbarThemeMac.mm: (WebCore::ScrollbarThemeMac::backButtonRect): (WebCore::ScrollbarThemeMac::forwardButtonRect): (WebCore::scrollbarPartToHIPressedState): (WebCore::ScrollbarThemeMac::paint):
  • platform/mac/WidgetMac.mm: (WebCore::Widget::invalidateRect):
13:38 Changeset [36776] by sfalken@apple.com

Merged r36578

13:35 Changeset [36775] by sfalken@apple.com

Merge r36748, r36750.

13:19 Changeset [36774] by simon.fraser@apple.com

2008-09-22 Chris Marrin <cmarrin@apple.com>

Reviewed by Sam Weinig

transition end event when -webkit-transition-property: all puts wrong
propertyName in event
https://bugs.webkit.org/show_bug.cgi?id=20903

  • page/animation/ImplicitAnimation.cpp: (WebCore::ImplicitAnimation::sendTransitionEvent):
11:47 Changeset [36773] by cfleizach@apple.com

<rdar://problem/6230234> AXTable should probably not be exposed in there's only one cell

11:30 Changeset [36772] by cfleizach@apple.com

<rdar://problem/6167779> Setting AXSelectedTextRange for TextAreas in a WebView behaves incorrectly

11:21 Changeset [36771] by hyatt@apple.com

WebCore:

2008-09-22 David Hyatt <hyatt@apple.com>

Clean up some parent relationships in the back end stylesheet code. Make sure parentStyleSheet
properly walks up nested rule blocks to reach the parent sheet instead of giving up at the immediate
parent. Also fix the doc() method so that it is properly set when the parent of the sheet is an import
rule.

Reviewed by Sam Weinig

Added fast/css/nested-rule-parent-sheet.html

  • css/CSSImportRule.cpp:

(WebCore::CSSImportRule::insertedIntoParent):

  • css/CSSRule.cpp: (WebCore::CSSRule::parentStyleSheet): (WebCore::CSSRule::parentRule):
  • css/CSSStyleSheet.cpp: (WebCore::CSSStyleSheet::CSSStyleSheet):
  • css/CSSStyleSheet.h:

LayoutTests:

2008-09-22 David Hyatt <hyatt@apple.com>

Add new test for .parentStyleSheet.

Reviewed by Sam Weinig

  • fast/css/nested-rule-parent-sheet.html: Added.
11:17 Changeset [36770] by mitz@apple.com

Reviewed by Sam Weinig.

Fixes svg/text/text-spacing-01-b.svg in run-webkit-tests --complex-text

  • platform/graphics/mac/FontMacATSUI.mm: (WebCore::overrideLayoutOperation):
10:10 Changeset [36769] by mrowe@apple.com

Versioning.

09:39 Changeset [36768] by mrowe@apple.com

Merge r34834.

09:39 Changeset [36767] by mrowe@apple.com

Merge r35182.

08:03 Changeset [36766] by mjs@apple.com

JavaScriptCore:

2008-09-22 Maciej Stachowiak <mjs@apple.com>

Reviewed by Cameron Zwarich.


  • speed up instanceof operator by replacing implementsHasInstance method with a TypeInfo flag

Partial work towards <https://bugs.webkit.org/show_bug.cgi?id=20818>


2.2% speedup on EarleyBoyer benchmark.

  • API/JSCallbackConstructor.cpp:
  • API/JSCallbackConstructor.h: (JSC::JSCallbackConstructor::createStructureID):
  • API/JSCallbackFunction.cpp:
  • API/JSCallbackFunction.h: (JSC::JSCallbackFunction::createStructureID):
  • API/JSCallbackObject.h: (JSC::JSCallbackObject::createStructureID):
  • API/JSCallbackObjectFunctions.h: (JSC::::hasInstance):
  • API/JSValueRef.cpp: (JSValueIsInstanceOfConstructor):
  • JavaScriptCore.exp:
  • VM/Machine.cpp: (JSC::Machine::privateExecute): (JSC::Machine::cti_op_instanceof):
  • kjs/InternalFunction.cpp:
  • kjs/InternalFunction.h: (JSC::InternalFunction::createStructureID):
  • kjs/JSObject.cpp:
  • kjs/JSObject.h:
  • kjs/TypeInfo.h: (JSC::TypeInfo::implementsHasInstance):

WebCore:

2008-09-22 Maciej Stachowiak <mjs@apple.com>

Reviewed by Cameron Zwarich.

  • speed up instanceof operator by replacing implementsHasInstance method with a TypeInfo flag

Partial work towards <https://bugs.webkit.org/show_bug.cgi?id=20818>


2.2% speedup on EarleyBoyer benchmark.

  • bindings/js/JSQuarantinedObjectWrapper.cpp:
  • bindings/js/JSQuarantinedObjectWrapper.h: (WebCore::JSQuarantinedObjectWrapper::createStructureID):
  • bindings/scripts/CodeGeneratorJS.pm:
07:31 Changeset [36765] by aroben@apple.com

Windows build fix

  • WebCore.vcproj/WebCore.vcproj: Add a missing </File> tag.
06:59 Changeset [36764] by mjs@apple.com

JavaScriptCore:

2008-09-22 Maciej Stachowiak <mjs@apple.com>

Reviewed by Dave Hyatt.


Based on initial work by Darin Adler.


0.5% speedup on SunSpider
~4% speedup on Richards benchmark


  • VM/CTI.cpp: (JSC::CTI::privateCompileMainPass):
  • VM/Machine.cpp: (JSC::jsTypeStringForValue): (JSC::jsIsObjectType): (JSC::Machine::privateExecute): (JSC::Machine::cti_op_is_undefined):
  • VM/Machine.h:
  • kjs/JSCell.h:
  • kjs/JSValue.h:
  • kjs/StringObjectThatMasqueradesAsUndefined.h: (JSC::StringObjectThatMasqueradesAsUndefined::create): (JSC::StringObjectThatMasqueradesAsUndefined::createStructureID):
  • kjs/StructureID.h: (JSC::StructureID::mutableTypeInfo):
  • kjs/TypeInfo.h: (JSC::TypeInfo::TypeInfo): (JSC::TypeInfo::masqueradesAsUndefined):
  • kjs/operations.cpp: (JSC::equal):
  • masm/X86Assembler.h: (JSC::X86Assembler::): (JSC::X86Assembler::setne_r): (JSC::X86Assembler::setnz_r): (JSC::X86Assembler::testl_i32m):

WebCore:

2008-09-22 Maciej Stachowiak <mjs@apple.com>

Reviewed by Dave Hyatt.

Based on initial work by Darin Adler.



  • WebCore.xcodeproj/project.pbxproj:
  • WebCore.vcproj/WebCore.vcproj:
  • bindings/js/JSCSSStyleDeclarationCustom.cpp: (WebCore::JSCSSStyleDeclaration::nameGetter):
  • bindings/js/JSHTMLAllCollection.cpp: Added. (WebCore::):
  • bindings/js/JSHTMLAllCollection.h: (WebCore::JSHTMLAllCollection::createStructureID): (WebCore::JSHTMLAllCollection::toBoolean):
06:27 Changeset [36763] by vestbo@webkit.org

2008-09-22 Tor Arne Vestbø <tavestbo@trolltech.com>

Reviewed by Simon.

Initialize QCoreApplication in kjs binary/Shell.cpp

This allows us to use QCoreApplication::instance() to
get the main thread in ThreadingQt.cpp

06:27 Changeset [36762] by vestbo@webkit.org

2008-09-22 Tor Arne Vestbø <tavestbo@trolltech.com>

Reviewed by Simon.

Fix the QtWebKit build

01:53 Changeset [36761] by alp@webkit.org

2008-09-22 Alp Toker <alp@nuanti.com>

Suggested by David Hyatt.

Build fix: ScrollView::update() is still used by Document.cpp on !MAC
so make it public.

  • platform/ScrollView.h:
01:36 Changeset [36760] by hyatt@apple.com

2008-09-22 David Hyatt <hyatt@apple.com>

Fix a regression in Windows scrollbar painting. (Also fix the same
bug in my new viewless Mac scrollbar painting code). The track rect
was being improperly inflated when painting resulting in the scrollbar
being too tall and painting in the border of overflow sections.

Reviewed by Oliver Hunt

  • platform/mac/ScrollbarThemeMac.mm: (WebCore::ScrollbarThemeMac::trackRect):
  • platform/win/ScrollbarThemeSafari.cpp: (WebCore::ScrollbarThemeSafari::trackRect):
00:57 Changeset [36759] by hyatt@apple.com

2008-09-22 David Hyatt <hyatt@apple.com>

Fix a hit testing bug where events are mistakenly passed to subframes
if the mouse is over the border or padding area of the frame. Add
a boolean flag, isOverWidget(), to hit test results so that EventHandler
can check it to tell if the mouse is really over the content box of a
RenderWidget and not just in the border/padding area.

This is not testable, since the old code properly recovered when it detected
that the mouse was outside the bounds of the view, but this prevents
the extra passdown from even occurring (and is basically a nice cleanup).

Reviewed by Oliver Hunt

  • page/EventHandler.cpp: (WebCore::EventHandler::handleMousePressEvent): (WebCore::EventHandler::hitTestResultAtPoint): (WebCore::subframeForHitTestResult): (WebCore::EventHandler::handleMouseDoubleClickEvent): (WebCore::EventHandler::handleMouseMoveEvent): (WebCore::EventHandler::handleMouseReleaseEvent): (WebCore::EventHandler::handleWheelEvent):
  • page/MouseEventWithHitTestResults.h: (WebCore::MouseEventWithHitTestResults::isOverWidget):
  • rendering/HitTestResult.cpp: (WebCore::HitTestResult::HitTestResult): (WebCore::HitTestResult::operator=):
  • rendering/HitTestResult.h: (WebCore::HitTestResult::isOverWidget): (WebCore::HitTestResult::setIsOverWidget):
  • rendering/RenderWidget.cpp: (WebCore::RenderWidget::nodeAtPoint):
  • rendering/RenderWidget.h:

09/21/08:

22:54 Changeset [36758] by hyatt@apple.com

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

Rename FrameView's repaintRectangle method to repaintContentRectangle. Make
both it and ScrollView's updateContents method be off-limits to everyone in
WebCore except for RenderView.

Make repaintViewRectangle the only possible method for WebCore code to do
an invalidation. This ensures that all invalidates triggered by WebCore
cross-platform code that cross ownerElement() boundaries are transform-aware.

Make sure that iframes/frames contained inside objects that have transforms
or reflections are not allowed to blit (this was already true for transparency).

It is not possible to make a test for any of this, since iframe scrolling
still doesn't work on Mac (since the invalidates are not being done
through WebCore's cross-platform invalidation code but are instead going
through NSScrollView's setNeedsDisplay still).

Reviewed by Oliver Hunt

  • editing/SelectionController.cpp: (WebCore::SelectionController::recomputeCaretRect): (WebCore::SelectionController::invalidateCaretRect): (WebCore::SelectionController::focusedOrActiveStateChanged):
  • page/FrameView.cpp: (WebCore::FrameView::repaintContentRectangle): (WebCore::FrameView::endDeferredRepaints):
  • page/FrameView.h:
  • platform/ScrollView.h:
  • rendering/RenderBox.cpp: (WebCore::RenderBox::paintFillLayerExtended):
  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::enclosingPositionedAncestor): (WebCore::RenderLayer::requiresSlowRepaints):
  • rendering/RenderLayer.h: (WebCore::RenderLayer::hasTransform):
  • rendering/RenderView.cpp: (WebCore::RenderView::paintBoxDecorations): (WebCore::RenderView::repaintViewRectangle): (WebCore::RenderView::setSelection):
21:07 Changeset [36757] by darin@apple.com

2008-09-21 Darin Adler <darin@apple.com>

  • blind attempt to fix non-all-in-one builds
  • kjs/JSGlobalObject.cpp: Added includes of Arguments.h and RegExpObject.h.
20:35 Changeset [36756] by darin@apple.com

2008-09-21 Darin Adler <darin@apple.com>

  • fix debug build
  • kjs/StructureID.cpp: (JSC::StructureID::addPropertyTransition): Use typeInfo().type() instead of m_type. (JSC::StructureID::createCachedPrototypeChain): Ditto.
20:15 Changeset [36755] by mjs@apple.com

JavaScriptCore:

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

Reviewed by Darin.


  • JavaScriptCore.exp:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • VM/CTI.cpp: (JSC::CTI::privateCompileMainPass): (JSC::CTI::privateCompilePutByIdTransition):
  • VM/Machine.cpp: (JSC::jsIsObjectType): (JSC::Machine::Machine):
  • kjs/AllInOneFile.cpp:
  • kjs/JSCell.h: (JSC::JSCell::isObject): (JSC::JSCell::isString):
  • kjs/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData):
  • kjs/JSGlobalObject.cpp: (JSC::JSGlobalObject::reset):
  • kjs/JSGlobalObject.h: (JSC::StructureID::prototypeForLookup):
  • kjs/JSNumberCell.h: (JSC::JSNumberCell::createStructureID):
  • kjs/JSObject.cpp: (JSC::JSObject::createInheritorID):
  • kjs/JSObject.h: (JSC::JSObject::createStructureID):
  • kjs/JSString.h: (JSC::JSString::createStructureID):
  • kjs/NativeErrorConstructor.cpp: (JSC::NativeErrorConstructor::NativeErrorConstructor):
  • kjs/RegExpConstructor.cpp:
  • kjs/RegExpMatchesArray.h: Added. (JSC::RegExpMatchesArray::getOwnPropertySlot): (JSC::RegExpMatchesArray::put): (JSC::RegExpMatchesArray::deleteProperty): (JSC::RegExpMatchesArray::getPropertyNames):
  • kjs/StructureID.cpp: (JSC::StructureID::StructureID): (JSC::StructureID::addPropertyTransition): (JSC::StructureID::toDictionaryTransition): (JSC::StructureID::changePrototypeTransition): (JSC::StructureID::getterSetterTransition):
  • kjs/StructureID.h: (JSC::StructureID::create): (JSC::StructureID::typeInfo):
  • kjs/TypeInfo.h: Added. (JSC::TypeInfo::TypeInfo): (JSC::TypeInfo::type):

WebCore:

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

Reviewed by Darin.


  • bindings/js/JSAudioConstructor.cpp: (WebCore::JSAudioConstructor::JSAudioConstructor):
  • bindings/js/JSCSSStyleDeclarationCustom.cpp: (WebCore::JSCSSStyleDeclaration::nameGetter):
  • bindings/js/JSDOMBinding.cpp: (WebCore::createDOMStructure):
  • bindings/js/JSDOMBinding.h: (WebCore::getDOMStructure):
  • bindings/js/JSDOMWindowShell.cpp: (WebCore::JSDOMWindowShell::JSDOMWindowShell): (WebCore::JSDOMWindowShell::setWindow):
  • bindings/js/JSEventTargetNode.cpp: (WebCore::JSEventTargetNode::createPrototype):
  • bindings/js/JSHTMLOptionElementConstructor.cpp: (WebCore::JSHTMLOptionElementConstructor::JSHTMLOptionElementConstructor):
  • bindings/js/JSImageConstructor.cpp: (WebCore::JSImageConstructor::JSImageConstructor):
  • bindings/js/JSXMLHttpRequestConstructor.cpp: (WebCore::JSXMLHttpRequestConstructor::JSXMLHttpRequestConstructor):
  • bindings/js/JSXSLTProcessorConstructor.cpp: (WebCore::JSXSLTProcessorConstructor::JSXSLTProcessorConstructor):
  • bindings/scripts/CodeGeneratorJS.pm:
19:12 Changeset [36754] by darin@apple.com

2008-09-21 Darin Adler <darin@apple.com>

Reviewed by Maciej Stachowiak.

  • fix problem Maciej noticed where every JSNamedNodesCollection gets its own StructureID
  • bindings/js/JSNamedNodesCollection.cpp: (WebCore::JSNamedNodesCollection::JSNamedNodesCollection): Use getDOMStructure to get the structure.
  • bindings/js/JSNamedNodesCollection.h: (WebCore::JSNamedNodesCollection::createPrototype): Return the object prototype.
17:42 Changeset [36753] by darin@apple.com

2008-09-21 Darin Adler <darin@apple.com>

Reviewed by Cameron Zwarich.

  • fix crash logging into Gmail due to recent Arguments change
  • kjs/Arguments.cpp: (JSC::Arguments::Arguments): Fix window where mark() function could see d->extraArguments with uninitialized contents. (JSC::Arguments::mark): Check d->extraArguments for 0 to handle two cases: 1) Inside the constructor before it's initialized. 2) numArguments <= numParameters.
17:33 Changeset [36752] by hyatt@apple.com

2008-09-20 David Hyatt <hyatt@apple.com>

Make sure transformed scrollbars in overflow sections position
properly. This patch mimics the same behavior that works for
iframes, namely making sure that the same code that dynamically
adjusts iframe widget positions at paint time for fixed positioning
and transforms also applies to scrollbars. (This is as simple as passing
in the current translation factor at paint time rather than crawling
up the layer tree to compute a "false" absolute position.)

An existing transform test covers this (although only a pixel result
reveals the correct rendering).

Reviewed by Darin Adler

  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::updateLayerPositions): (WebCore::RenderLayer::positionOverflowControls): (WebCore::RenderLayer::paintOverflowControls): (WebCore::RenderLayer::paintLayer):
  • rendering/RenderLayer.h:
17:18 Changeset [36751] by darin@apple.com

2008-09-21 Darin Adler <darin@apple.com>

  • fix loose end from the "duplicate constant values" patch
  • VM/CodeGenerator.cpp: (JSC::CodeGenerator::emitLoad): Add a special case for values the hash table can't handle.
17:12 Changeset [36750] by sfalken@apple.com

Removed unnecessary nested timer check.


Rubber-stamped by Dan Bernstein.

  • platform/win/SharedTimerWin.cpp: (WebCore::TimerWindowWndProc):
17:12 Changeset [36749] by mrowe@apple.com

Fix the non-AllInOneFile build.

17:08 Changeset [36748] by sfalken@apple.com

Improve timer resolution on WinXP.
https://bugs.webkit.org/show_bug.cgi?id=20979


Removed last-chance timer. It should not be necessary.
Change timeEndPeriod timer to fire in 300ms instead of 20ms. Calling timeBeginPeriod/timeEndPeriod too often throws off accuracy.
Remove Vista checks. We now run the same code on both XP and Vista.


Call through to JSC::getCurrentUTCTimeWithMicroseconds from WebCore::currentTime.
The code previously called GetSystemTimeAsFileTime, which is always low-resolution on XP, even within timeBeginPeriod(1).


Reviewed by Maciej Stachowiak.

  • platform/win/SharedTimerWin.cpp: (WebCore::): (WebCore::TimerWindowWndProc): (WebCore::setSharedTimerFireTime):
  • platform/win/SystemTimeWin.cpp: (WebCore::currentTime):
17:01 Changeset [36747] by darin@apple.com

2008-09-21 Darin Adler <darin@apple.com>

Reviewed by Cameron Zwarich and Mark Rowe.

  • fix test failure caused by my recent IndexToNameMap patch
  • kjs/Arguments.cpp: (JSC::Arguments::deleteProperty): Added the accidentally-omitted check of the boolean result from toArrayIndex.
16:08 Changeset [36746] by darin@apple.com

2008-09-21 Darin Adler <darin@apple.com>

Reviewed by Maciej Stachowiak.

  • VM/CTI.h: Renamed emitJumpSlowCaseIfNotImm to emitJumpSlowCaseIfNotImmNum, since the old name was incorrect.
  • VM/CTI.cpp: Updated for new name. (JSC::CTI::privateCompileMainPass): Added op_eq. (JSC::CTI::privateCompileSlowCases): Added op_eq.
  • VM/Machine.cpp: (JSC::Machine::cti_op_eq): Removed fast case, since it's now compiled.
14:53 Changeset [36745] by eric@webkit.org

2008-09-21 Peter Gal <galpter@inf.u-szeged.hu>

Reviewed by Tim Hatcher and Eric Seidel.

Fix the QT/Linux JavaScriptCore segmentation fault.
https://bugs.webkit.org/show_bug.cgi?id=20914

  • wtf/ThreadingQt.cpp: (WTF::initializeThreading): Use currentThread() if platform is not a MAC (like in pre 36541 revisions)
14:36 Changeset [36744] by darin@apple.com

2008-09-21 Darin Adler <darin@apple.com>

Reviewed by Sam Weinig.

  • kjs/debugger.h: Removed some unneeded includes and declarations.
14:35 Changeset [36743] by darin@apple.com

2008-09-21 Darin Adler <darin@apple.com>

Reviewed by Sam Weinig.

No change on SunSpider. 1.29x as fast on V8 Raytrace.

  • kjs/Arguments.cpp: Moved ArgumentsData in here. Eliminated the indexToNameMap and hadDeletes data members. Changed extraArguments into an OwnArrayPtr and added deletedArguments, another OwnArrayPtr. Replaced numExtraArguments with numParameters, since that's what's used more directly in hot code paths. (JSC::Arguments::Arguments): Pass in argument count instead of ArgList. Initialize ArgumentsData the new way. (JSC::Arguments::mark): Updated. (JSC::Arguments::getOwnPropertySlot): Overload for the integer form so we don't have to convert integers to identifiers just to get an argument. Integrated the deleted case with the fast case. (JSC::Arguments::put): Ditto. (JSC::Arguments::deleteProperty): Ditto.
  • kjs/Arguments.h: Minimized includes. Made everything private. Added overloads for the integral property name case. Eliminated mappedIndexSetter. Moved ArgumentsData into the .cpp file.
  • kjs/IndexToNameMap.cpp: Emptied out and prepared for deletion.
  • kjs/IndexToNameMap.h: Ditto.
  • kjs/JSActivation.cpp: (JSC::JSActivation::createArgumentsObject): Elminated ArgList.
  • GNUmakefile.am:
  • JavaScriptCore.pri:
  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • JavaScriptCoreSources.bkl:
  • kjs/AllInOneFile.cpp: Removed IndexToNameMap.
13:41 Changeset [36742] by darin@apple.com

2008-09-21 Darin Adler <darin@apple.com>

  • VM/CodeGenerator.cpp: (JSC::CodeGenerator::emitLoad): One more tweak: Wrote this in a slightly clearer style.
13:35 Changeset [36741] by darin@apple.com

2008-09-21 Judit Jasz <jasy@inf.u-szeged.hu>

Reviewed and tweaked by Darin Adler.

Seems to be a wash on SunSpider.

  • VM/CodeGenerator.cpp: (JSC::CodeGenerator::emitLoad): Use m_numberMap and m_stringMap to guarantee we emit the same JSValue* for identical numbers and strings.
  • VM/CodeGenerator.h: Added overload of emitLoad for const Identifier&. Add NumberMap and IdentifierStringMap types and m_numberMap and m_stringMap.
  • kjs/nodes.cpp: (JSC::StringNode::emitCode): Call the new emitLoad and let it do the JSString creation.
13:17 Changeset [36740] by darin@apple.com

2008-09-21 Paul Pedriana <webkit@pedriana.com>

Reviewed and tweaked by Darin Adler.

  • wtf/Vector.h: Added WTF_ALIGH_ON, WTF_ALIGNED, AlignedBufferChar, and AlignedBuffer. Use AlignedBuffer insteadof an array of char in VectorBuffer.
12:15 Changeset [36739] by darin@apple.com

JavaScriptCore:

2008-09-21 Gabor Loki <loki@inf.u-szeged.hu>

Reviewed by Darin Adler.

1.008x as fast on SunSpider.

  • kjs/grammar.y: (makeNegateNode): Fold if expression is a number > 0. (makeBitwiseNotNode): Fold if expression is a number. (makeMultNode): Fold if expressions are both numbers. (makeDivNode): Fold if expressions are both numbers. (makeAddNode): Fold if expressions are both numbers. (makeLeftShiftNode): Fold if expressions are both numbers. (makeRightShiftNode): Fold if expressions are both numbers.

LayoutTests:

2008-09-21 Gabor Loki <loki@inf.u-szeged.hu>

Reviewed and tweaked by Darin Adler.

  • fast/js/constant-folding-expected.txt: Added.
  • fast/js/constant-folding.html: Added.
  • fast/js/resources/constant-folding.js: Added.
03:39 Changeset [36738] by mjs@apple.com

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

Reviewed by Oliver.


  • VM/CTI.cpp: (JSC::CTI::emitJumpSlowCaseIfNotImmediateNumber): (JSC::CTI::emitJumpSlowCaseIfNotImmediateNumbers): (JSC::CTI::emitJumpSlowCaseIfNotImmediates): (JSC::CTI::emitTagAsBoolImmediate): (JSC::CTI::privateCompileMainPass): (JSC::CTI::privateCompileSlowCases):
  • VM/CTI.h:
  • VM/Machine.cpp: (JSC::Machine::cti_op_stricteq):
  • masm/X86Assembler.h: (JSC::X86Assembler::): (JSC::X86Assembler::sete_r): (JSC::X86Assembler::setz_r): (JSC::X86Assembler::movzbl_rr): (JSC::X86Assembler::emitUnlinkedJnz):
03:37 Changeset [36737] by eric@webkit.org

2008-09-21 Dirk Schulze <vbs85@gmx.de>

Reviewed by eseidel. Landed by eseidel.

All platforms use the DashArray in the GraphicsContext.

  • svg/graphics/SVGPaintServer.h:
  • svg/graphics/cairo/SVGPaintServerGradientCairo.cpp: (WebCore::SVGPaintServerGradient::setup):
  • svg/graphics/cairo/SVGPaintServerPatternCairo.cpp: (WebCore::SVGPaintServerPattern::setup):
  • svg/graphics/cairo/SVGPaintServerSolidCairo.cpp: (WebCore::SVGPaintServerSolid::setup):
  • svg/graphics/qt/SVGPaintServerGradientQt.cpp: (WebCore::SVGPaintServerGradient::setup):
  • svg/graphics/qt/SVGPaintServerQt.cpp:
  • svg/graphics/qt/SVGPaintServerSolidQt.cpp: (WebCore::SVGPaintServerSolid::setup):
01:46 Changeset [36736] by cwzwarich@webkit.org

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

Reviewed by Maciej Stachowiak.

Free memory allocated for extra arguments in the destructor of the
Arguments object.

  • kjs/Arguments.cpp: (JSC::Arguments::~Arguments):
  • kjs/Arguments.h:
01:37 Changeset [36735] by cwzwarich@webkit.org

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

Reviewed by Maciej Stachowiak.

Bug 20815: 'arguments' object creation is non-optimal
<https://bugs.webkit.org/show_bug.cgi?id=20815>

Fix our inefficient way of creating the arguments object by only
creating named properties for each of the arguments after a use of the
'delete' statement. This patch also speeds up access to the 'arguments'
object slightly, but it still does not use the array fast path for
indexed access that exists for many opcodes.

This is about a 20% improvement on the V8 Raytrace benchmark, and a 1.5%
improvement on the Earley-Boyer benchmark, which gives a 4% improvement
overall.

JavaScriptCore:

  • kjs/Arguments.cpp: (JSC::Arguments::Arguments): (JSC::Arguments::mark): (JSC::Arguments::getOwnPropertySlot): (JSC::Arguments::put): (JSC::Arguments::deleteProperty):
  • kjs/Arguments.h: (JSC::Arguments::ArgumentsData::ArgumentsData):
  • kjs/IndexToNameMap.h: (JSC::IndexToNameMap::size):
  • kjs/JSActivation.cpp: (JSC::JSActivation::createArgumentsObject):
  • kjs/JSActivation.h: (JSC::JSActivation::uncheckedSymbolTableGet): (JSC::JSActivation::uncheckedSymbolTableGetValue): (JSC::JSActivation::uncheckedSymbolTablePut):
  • kjs/JSFunction.h: (JSC::JSFunction::numParameters):

LayoutTests:

  • fast/js/arguments-expected.txt: Added.
  • fast/js/arguments.html: Added.
  • fast/js/resources/arguments.js: Added.
00:59 Changeset [36734] by eric@webkit.org

2008-09-21 Dirk Schulze <vbs85@gmx.de>

Reviewed by eseidel. Landed by eseidel.

Moved DashArray to GraphicsContext.

  • GNUmakefile.am:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/DashArray.h: Added.
  • platform/graphics/GraphicsContext.h:
  • platform/graphics/cairo/GraphicsContextCairo.cpp: (WebCore::GraphicsContext::setLineDash):
  • platform/graphics/cg/GraphicsContextCG.cpp: (WebCore::GraphicsContext::setLineDash):
  • platform/graphics/qt/GraphicsContextQt.cpp: (WebCore::GraphicsContext::setLineDash):
  • svg/graphics/SVGPaintServer.cpp: (WebCore::applyStrokeStyleToContext):
  • svg/graphics/SVGPaintServer.h:
  • svg/graphics/cg/CgSupport.cpp:
  • svg/graphics/cg/CgSupport.h:
00:16 Changeset [36733] by mitz@apple.com

Reviewed by Mark Rowe.

  • fix linker warnings
  • WebCore.base.exp:

09/20/08:

23:50 Changeset [36732] by darin@apple.com

2008-09-20 Darin Adler <darin@apple.com>

  • another try at fixing Qt
  • bridge/qt/qt_runtime.cpp: "using namespce WebCore"
23:34 Changeset [36731] by darin@apple.com

2008-09-20 Darin Adler <darin@apple.com>

  • blind attempt to fix Qt build
  • bridge/qt/qt_runtime.cpp: (JSC::Bindings::convertQVariantToValue): Use regExpStructure instead of regExpPrototype to make a RegExpObject. There should really be some sort of public helper function for this. Same thing for DateInstance and dateStructure. For JSObject, use constructEmptyObject. (JSC::Bindings::): (JSC::Bindings::QtRuntimeMethod::QtRuntimeMethod): Use getDOMStructure. It is not correct to do this inside the constructor because it could cause a garbage collect while the QtRuntimeMethod object is half- allocated, which could lead to a crash; note that RuntimeMethod, QtRuntimeObjectImp, and RuntimeObjectImp have the same bug.
  • bridge/qt/qt_runtime.h: Add s_info and createPrototype.
23:26 Changeset [36730] by collinj@webkit.org

2008-09-20 Collin Jackson <collinj@webkit.org>

Prefetch DNS for hyperlinks that the user mouses over.

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

Reviewed by Sam Weinig.

  • page/Chrome.cpp: (WebCore::Chrome::mouseDidMoveOverElement):
23:21 Changeset [36729] by darin@apple.com

2008-09-20 Darin Adler <darin@apple.com>

Reviewed by Mark Rowe.

  • fix crash seen on buildbot
  • kjs/JSGlobalObject.cpp: (JSC::JSGlobalObject::mark): Add back mark of arrayPrototype, deleted by accident in my recent check-in.
23:16 Changeset [36728] by mjs@apple.com

2008-09-20 Maciej Stachowiak <mjs@apple.com>

Not reviewed, build fix.


  • speculative fix for non-AllInOne builds
  • kjs/operations.h:
22:54 Changeset [36727] by mjs@apple.com

2008-09-20 Maciej Stachowiak <mjs@apple.com>

Reviewed by Darin.



2.5% speedup on earley-boyer test

  • VM/Machine.cpp: (JSC::Machine::cti_op_stricteq): Use inline version of strictEqualSlowCase; remove unneeded exception check. (JSC::Machine::cti_op_nstricteq): ditto
  • kjs/operations.cpp: (JSC::strictEqual): Use strictEqualSlowCaseInline (JSC::strictEqualSlowCase): ditto
  • kjs/operations.h: (JSC::strictEqualSlowCaseInline): Version of strictEqualSlowCase that can be inlined, since the extra function call indirection is a lose for CTI.
21:53 FAQ edited by hahn.seb@web.de
(diff)
19:29 Changeset [36726] by darin@apple.com

JavaScriptCore:

2008-09-20 Darin Adler <darin@apple.com>

Reviewed by Maciej Stachowiak.

This also includes some optimizations that make the change an overall
small speedup. Without those it was a bit of a slowdown.

  • API/JSCallbackConstructor.cpp: (JSC::JSCallbackConstructor::JSCallbackConstructor): Take a structure.
  • API/JSCallbackConstructor.h: Ditto.
  • API/JSCallbackFunction.cpp: (JSC::JSCallbackFunction::JSCallbackFunction): Pass a structure.
  • API/JSCallbackObject.h: Take a structure.
  • API/JSCallbackObjectFunctions.h: (JSC::JSCallbackObject::JSCallbackObject): Ditto.
  • API/JSClassRef.cpp: (OpaqueJSClass::prototype): Pass in a structure. Call setPrototype if there's a custom prototype involved.
  • API/JSObjectRef.cpp: (JSObjectMake): Ditto. (JSObjectMakeConstructor): Pass in a structure.
  • VM/Machine.cpp: (JSC::jsLess): Added a special case for when both arguments are strings. This avoids converting both strings to with UString::toDouble. (JSC::jsLessEq): Ditto. (JSC::Machine::privateExecute): Pass in a structure. (JSC::Machine::cti_op_construct_JSConstruct): Ditto. (JSC::Machine::cti_op_new_regexp): Ditto. (JSC::Machine::cti_op_is_string): Ditto.
  • VM/Machine.h: Made isJSString public so it can be used in the CTI.
  • kjs/Arguments.cpp: (JSC::Arguments::Arguments): Pass in a structure.
  • kjs/JSCell.h: Mark constructor explicit.
  • kjs/JSGlobalObject.cpp: (JSC::markIfNeeded): Added an overload for marking structures. (JSC::JSGlobalObject::reset): Eliminate code to set data members to zero. We now do that in the constructor, and we no longer use this anywhere except in the constructor. Added code to create structures. Pass structures rather than prototypes when creating objects. (JSC::JSGlobalObject::mark): Mark the structures.
  • kjs/JSGlobalObject.h: Removed unneeded class declarations. Added initializers for raw pointers in JSGlobalObjectData so everything starts with a 0. Added structure data and accessor functions.
  • kjs/JSImmediate.cpp: (JSC::JSImmediate::nonInlineNaN): Added.
  • kjs/JSImmediate.h: (JSC::JSImmediate::toDouble): Rewrote to avoid PIC branches.
  • kjs/JSNumberCell.cpp: (JSC::jsNumberCell): Made non-inline to avoid PIC branches in functions that call this one. (JSC::jsNaN): Ditto.
  • kjs/JSNumberCell.h: Ditto.
  • kjs/JSObject.h: Removed constructor that takes a prototype. All callers now pass structures.
  • kjs/ArrayConstructor.cpp: (JSC::ArrayConstructor::ArrayConstructor): (JSC::constructArrayWithSizeQuirk):
  • kjs/ArrayConstructor.h:
  • kjs/ArrayPrototype.cpp: (JSC::ArrayPrototype::ArrayPrototype):
  • kjs/ArrayPrototype.h:
  • kjs/BooleanConstructor.cpp: (JSC::BooleanConstructor::BooleanConstructor): (JSC::constructBoolean): (JSC::constructBooleanFromImmediateBoolean):
  • kjs/BooleanConstructor.h:
  • kjs/BooleanObject.cpp: (JSC::BooleanObject::BooleanObject):
  • kjs/BooleanObject.h:
  • kjs/BooleanPrototype.cpp: (JSC::BooleanPrototype::BooleanPrototype):
  • kjs/BooleanPrototype.h:
  • kjs/DateConstructor.cpp: (JSC::DateConstructor::DateConstructor): (JSC::constructDate):
  • kjs/DateConstructor.h:
  • kjs/DateInstance.cpp: (JSC::DateInstance::DateInstance):
  • kjs/DateInstance.h:
  • kjs/DatePrototype.cpp: (JSC::DatePrototype::DatePrototype):
  • kjs/DatePrototype.h:
  • kjs/ErrorConstructor.cpp: (JSC::ErrorConstructor::ErrorConstructor): (JSC::constructError):
  • kjs/ErrorConstructor.h:
  • kjs/ErrorInstance.cpp: (JSC::ErrorInstance::ErrorInstance):
  • kjs/ErrorInstance.h:
  • kjs/ErrorPrototype.cpp: (JSC::ErrorPrototype::ErrorPrototype):
  • kjs/ErrorPrototype.h:
  • kjs/FunctionConstructor.cpp: (JSC::FunctionConstructor::FunctionConstructor):
  • kjs/FunctionConstructor.h:
  • kjs/FunctionPrototype.cpp: (JSC::FunctionPrototype::FunctionPrototype): (JSC::FunctionPrototype::addFunctionProperties):
  • kjs/FunctionPrototype.h:
  • kjs/GlobalEvalFunction.cpp: (JSC::GlobalEvalFunction::GlobalEvalFunction):
  • kjs/GlobalEvalFunction.h:
  • kjs/InternalFunction.cpp: (JSC::InternalFunction::InternalFunction):
  • kjs/InternalFunction.h: (JSC::InternalFunction::InternalFunction):
  • kjs/JSArray.cpp: (JSC::JSArray::JSArray): (JSC::constructEmptyArray): (JSC::constructArray):
  • kjs/JSArray.h:
  • kjs/JSFunction.cpp: (JSC::JSFunction::JSFunction): (JSC::JSFunction::construct):
  • kjs/JSObject.cpp: (JSC::constructEmptyObject):
  • kjs/JSString.cpp: (JSC::StringObject::create):
  • kjs/JSWrapperObject.h:
  • kjs/MathObject.cpp: (JSC::MathObject::MathObject):
  • kjs/MathObject.h:
  • kjs/NativeErrorConstructor.cpp: (JSC::NativeErrorConstructor::NativeErrorConstructor): (JSC::NativeErrorConstructor::construct):
  • kjs/NativeErrorConstructor.h:
  • kjs/NativeErrorPrototype.cpp: (JSC::NativeErrorPrototype::NativeErrorPrototype):
  • kjs/NativeErrorPrototype.h:
  • kjs/NumberConstructor.cpp: (JSC::NumberConstructor::NumberConstructor): (JSC::constructWithNumberConstructor):
  • kjs/NumberConstructor.h:
  • kjs/NumberObject.cpp: (JSC::NumberObject::NumberObject): (JSC::constructNumber): (JSC::constructNumberFromImmediateNumber):
  • kjs/NumberObject.h:
  • kjs/NumberPrototype.cpp: (JSC::NumberPrototype::NumberPrototype):
  • kjs/NumberPrototype.h:
  • kjs/ObjectConstructor.cpp: (JSC::ObjectConstructor::ObjectConstructor): (JSC::constructObject):
  • kjs/ObjectConstructor.h:
  • kjs/ObjectPrototype.cpp: (JSC::ObjectPrototype::ObjectPrototype):
  • kjs/ObjectPrototype.h:
  • kjs/PrototypeFunction.cpp: (JSC::PrototypeFunction::PrototypeFunction):
  • kjs/PrototypeFunction.h:
  • kjs/RegExpConstructor.cpp: (JSC::RegExpConstructor::RegExpConstructor): (JSC::RegExpMatchesArray::RegExpMatchesArray): (JSC::constructRegExp):
  • kjs/RegExpConstructor.h:
  • kjs/RegExpObject.cpp: (JSC::RegExpObject::RegExpObject):
  • kjs/RegExpObject.h:
  • kjs/RegExpPrototype.cpp: (JSC::RegExpPrototype::RegExpPrototype):
  • kjs/RegExpPrototype.h:
  • kjs/Shell.cpp: (GlobalObject::GlobalObject):
  • kjs/StringConstructor.cpp: (JSC::StringConstructor::StringConstructor): (JSC::constructWithStringConstructor):
  • kjs/StringConstructor.h:
  • kjs/StringObject.cpp: (JSC::StringObject::StringObject):
  • kjs/StringObject.h:
  • kjs/StringObjectThatMasqueradesAsUndefined.h: (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
  • kjs/StringPrototype.cpp: (JSC::StringPrototype::StringPrototype):
  • kjs/StringPrototype.h: Take and pass structures.

WebCore:

2008-09-20 Darin Adler <darin@apple.com>

Reviewed by Maciej Stachowiak.

  • bindings/js/JSCSSStyleDeclarationCustom.cpp: (WebCore::JSCSSStyleDeclaration::nameGetter): Pass in a structure ID. Note that this makes a new structure every time -- we could optimize this slightly be caching and reusing a single one.
  • bridge/runtime_method.cpp: (JSC::RuntimeMethod::RuntimeMethod): Create a unique structure using getDOMStructure.
  • bridge/runtime_method.h: (JSC::RuntimeMethod::createPrototype): Added createPrototype so getDOMStructure will work.
  • bindings/js/JSDOMWindowShell.cpp: (WebCore::JSDOMWindowShell::JSDOMWindowShell): Initialize m_window to 0; needed in case garbage collection happens while creating the JSDOMWindow.
18:29 Changeset [36725] by mrowe@apple.com

Roll out r36719 and attempted build fixes r36121 and r36722 due to massive build breakage.

17:52 Changeset [36724] by mitz@apple.com

Added Radar link

17:49 Changeset [36723] by mitz@apple.com

Reviewed by Eric Seidel.

  • svg/SVGTextContentElement.cpp: (WebCore::SVGInlineTextBoxQueryWalker::chunkPortionCallback): Changed to not include the first character in the extraCharsAvailable count.
17:42 Changeset [36722] by mitz@apple.com
  • Mac build fix
  • WebCore.xcodeproj/project.pbxproj: Made DashArray.h a private header.
17:36 Changeset [36721] by mitz@apple.com

Added a file that was missing from r36719

16:56 Changeset [36720] by kevino@webkit.org

Add missing bug reference to ChangeLog.

16:46 Changeset [36719] by eric@webkit.org

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

Reviewed by eseidel. Landed by eseidel.

Moved DashArray to the GraphicsContext.

  • GNUmakefile.am:
  • platform/graphics/DashArray.h: Added.
  • platform/graphics/GraphicsContext.h:
  • platform/graphics/cairo/GraphicsContextCairo.cpp: (WebCore::GraphicsContext::setLineDash):
  • platform/graphics/cg/GraphicsContextCG.cpp: (WebCore::GraphicsContext::setLineDash):
  • platform/graphics/qt/GraphicsContextQt.cpp: (WebCore::GraphicsContext::setLineDash):
  • svg/graphics/SVGPaintServer.cpp: (WebCore::applyStrokeStyleToContext):
  • svg/graphics/SVGPaintServer.h:
  • svg/graphics/cg/CgSupport.cpp:
  • svg/graphics/cg/CgSupport.h:
16:39 Changeset [36718] by kevino@webkit.org

Reviewed by Dan Bernstein.

Fix two memory leaks.

15:31 Changeset [36717] by kevino@webkit.org

wx build fixes. Added/removed build sources, and nativeWindow->platformWidget updates.

15:21 Changeset [36716] by timothy@apple.com

Fix the new Node Search button image to not be blurry.

  • page/inspector/Images/nodeSearchButtons.png:
14:53 Changeset [36715] by pewtermoose@webkit.org

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

Reviewed by Tim Hatcher.

Cut down some of the inspector javascript -> InspectorController glue code
with two new macros. Also rearrange the exposed function list to be grouped
by implementation and to all explicitly use the WebCore namespace.

  • page/InspectorController.cpp: (WebCore::InspectorController::windowScriptObjectAvailable):
14:53 Changeset [36714] by pewtermoose@webkit.org

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

Reviewed by Tim Hatcher.

Revert r35688. We use a textured window on Leopard, which does not have the
square corners of the standard Aqua window on Tiger.

  • WebCoreSupport/WebInspectorClient.mm: (-[WebInspectorWindowController window]): Add back the call to WKNSWindowMakeBottomCornersSquare.
14:30 Changeset [36713] by pewtermoose@webkit.org

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

Reviewed by Tim Hatcher.

Fix regression from my previous patch where the breadcrumbs bar was not displayed.

  • page/inspector/inspector.css:
13:19 Changeset [36712] by zimmermann@webkit.org

Reviewed by Eric.

Refactor HTMLImageLoader/SVGImageLoader code.
Move html/HTMLImageLoader.* to loader/ImageLoader.*

Let HTMLImageLoader & SVGImageLoader inherit from the new base class.
SVGImageLoader used to inherit from HTMLImageLoader which is awkward.

07:36 Changeset [36711] by darin@apple.com

2008-09-20 Darin Adler <darin@apple.com>

  • fix build
  • WebCoreSupport/WebChromeClient.cpp: (WebChromeClient::paintCustomScrollbar): Tweaked constant names to make this compile, but it may not be working correctly. Hyatt should do the real fix.
07:29 Changeset [36710] by darin@apple.com

2008-09-20 Darin Adler <darin@apple.com>

  • DumpRenderTree/mac/DumpRenderTree.mm: (convertMIMEType): Turn on Stephanie's workaround for Tiger too.
07:24 Changeset [36709] by zecke@webkit.org

[qtwebkit] ScrollBar build fix after r36684.

BackButtonPart was split into Start and End Part
ForwardButtonPart was split into Start and End Part

07:24 Changeset [36708] by zecke@webkit.org

[qtwebkit] Make qt_instance.cpp compile.

Revision of 36675 introduced getDOMStructure to give unique
structure id's to C++ classes. Catch up. RuntimeObjectImp assigns
the the StructureID inside the c'tor, do the same in QtRuntimeObjectImp

07:24 Changeset [36707] by zecke@webkit.org

[svg] Change SVGLocatable to deal with a plain SVGElement

There is no requirement in the code that we have to have a
SVGStyledElement. Remove that artificial limitation and compile
with SVGElement.

07:23 Changeset [36706] by zecke@webkit.org

[svg] Use OwnPtr for the SVGExtensions

Use OwnPtr to avoid custom lifetime management.

09/19/08:

23:34 Changeset [36705] by alp@webkit.org

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

Build fix for the 'gold' linker and recent binutils. New behaviour
requires that we link to used libraries explicitly.

22:17 Changeset [36704] by slewis@apple.com

2008-09-19 Stephanie Lewis <slewis@apple.com>

Reviewed by Oliver Hunt.

Implement a workaround for an incorrect mime-type on machines with
Dashcode 2.0.1. Dashcode is overriding the UTI type for .js files.
See radar <rdar://problem/6234318>.

  • DumpRenderTree/mac/DumpRenderTree.mm: (convertMIMEType):

Use correct mime-type for javascript

  • svg/webarchive/svg-script-subresouces-expected.webarchive:
  • webarchive/test-duplicate-resources-expected.webarchive:
  • webarchive/test-script-src-expected.webarchive:
22:09 Changeset [36703] by hyatt@apple.com

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

Fix for crash in updateTransitions. Make sure to test for a style
being null when comparing two RenderStyles.

Reviewed by Oliver Hunt

  • page/animation/AnimationBase.cpp: (WebCore::PropertyWrapperGetter::equals):
21:50 Changeset [36702] by hyatt@apple.com

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

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

Roll out r36628 since it has caused horrible regressions with
animated GIF CPU usage.

  • platform/graphics/BitmapImage.cpp: (WebCore::BitmapImage::cacheFrame): (WebCore::BitmapImage::startAnimation):
  • platform/graphics/BitmapImage.h: (WebCore::FrameData::FrameData):
  • platform/graphics/cairo/ImageCairo.cpp: (WebCore::FrameData::clear):
  • platform/graphics/cg/ImageCG.cpp: (WebCore::FrameData::clear):
  • platform/graphics/qt/ImageQt.cpp: (WebCore::FrameData::clear):
  • platform/graphics/wx/ImageWx.cpp: (WebCore::FrameData::clear):
21:35 Changeset [36701] by weinig@apple.com

2008-09-19 Sam Weinig <sam@webkit.org>

Roll r36694 back in. It did not cause the crash.

  • JavaScriptCore.exp:
  • VM/JSPropertyNameIterator.cpp: (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): (JSC::JSPropertyNameIterator::invalidate):
  • VM/JSPropertyNameIterator.h: (JSC::JSPropertyNameIterator::JSPropertyNameIterator): (JSC::JSPropertyNameIterator::create):
  • kjs/JSObject.cpp: (JSC::JSObject::getPropertyNames):
  • kjs/PropertyMap.cpp: (JSC::PropertyMap::getEnumerablePropertyNames):
  • kjs/PropertyMap.h:
  • kjs/PropertyNameArray.cpp: (JSC::PropertyNameArray::add):
  • kjs/PropertyNameArray.h: (JSC::PropertyNameArrayData::create): (JSC::PropertyNameArrayData::propertyNameVector): (JSC::PropertyNameArrayData::setCachedPrototypeChain): (JSC::PropertyNameArrayData::cachedPrototypeChain): (JSC::PropertyNameArrayData::begin): (JSC::PropertyNameArrayData::end): (JSC::PropertyNameArrayData::PropertyNameArrayData): (JSC::PropertyNameArray::PropertyNameArray): (JSC::PropertyNameArray::addKnownUnique): (JSC::PropertyNameArray::size): (JSC::PropertyNameArray::operator[]): (JSC::PropertyNameArray::begin): (JSC::PropertyNameArray::end): (JSC::PropertyNameArray::setData): (JSC::PropertyNameArray::data): (JSC::PropertyNameArray::releaseData):
  • kjs/StructureID.cpp: (JSC::structureIDChainsAreEqual): (JSC::StructureID::getEnumerablePropertyNames): (JSC::StructureID::clearEnumerationCache): (JSC::StructureID::createCachedPrototypeChain):
  • kjs/StructureID.h:
20:43 Changeset [36700] by alp@webkit.org

2008-09-20 Alp Toker <alp@nuanti.com>

Reviewed by Timothy Hatcher.

https://bugs.webkit.org/show_bug.cgi?id=20913
Avoid redudant includes

Document.h is included excessively such that a modification to Document.h (or
any of the header it includes itself) triggers a rebuild of many files
including the whole of SVG and a lot of the JS bindings.

Some of these includes can be avoided by only including Document.h where
necessary.

  • bindings/js/JSAttrCustom.cpp:
  • bindings/js/JSElementCustom.cpp:
  • bindings/js/JSEventTargetBase.cpp:
  • bindings/js/JSEventTargetBase.h:
  • bindings/js/JSEventTargetNode.cpp:
  • bindings/js/JSHTMLFrameElementCustom.cpp:
  • bindings/js/JSHTMLIFrameElementCustom.cpp:
  • bindings/scripts/CodeGeneratorJS.pm:
  • css/CSSCursorImageValue.cpp:
  • css/SVGCSSStyleSelector.cpp:
  • dom/make_names.pl:
  • svg/SVGAnimateElement.h:
  • svg/SVGAnimatedProperty.h: (WebCore::::baseValue): (WebCore::::setBaseValue): (WebCore::::startAnimation): (WebCore::::stopAnimation):
  • svg/SVGElement.cpp: (WebCore::SVGElement::accessDocumentSVGExtensions):
  • svg/SVGElement.h:
  • svg/SVGElementInstance.cpp:
  • svg/SVGFitToViewBox.cpp:
  • svg/SVGFontElement.cpp:
  • svg/SVGFontFaceElement.cpp:
  • svg/SVGLinearGradientElement.cpp:
  • svg/SVGMPathElement.cpp:
  • svg/SVGViewSpec.cpp:
20:33 Changeset [36699] by zimmermann@webkit.org

Reviewed by Antti & Eric.

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

Finish HTMLScriptElement / SVGScriptElement unification.
SVG <script> support is complete now, full SVGLoad event
respecting the influence of the externalResourcesRequired attribute
as well as SVGError event support. All other features shared with HTML.

Tests: fast/dom/HTMLScriptElement/script-reexecution.html

svg/dom/SVGScriptElement/script-change-externalResourcesRequired-while-loading.svg
svg/dom/SVGScriptElement/script-load-and-error-events.svg
svg/dom/SVGScriptElement/script-reexecution.svg
svg/dom/SVGScriptElement/script-set-href.svg

20:23 Changeset [36698] by mitz@apple.com

Reviewed by John Sullivan.

Without the fix, the newly-added assertion fails in platform/mac/editing/input/caret-primary-bidi.html

  • dom/Position.cpp: (WebCore::Position::getInlineBoxAndOffset):
  • rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::positionForOffset):
20:21 Changeset [36697] by hyatt@apple.com

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

Add support for hit testing of all five possible scrollbar button placements.

Reviewed by Sam Weinig

  • platform/ScrollbarThemeComposite.cpp: (WebCore::ScrollbarThemeComposite::paint):
  • platform/mac/ScrollbarThemeMac.mm: (WebCore::): (WebCore::ScrollbarThemeMac::backButtonRect): (WebCore::ScrollbarThemeMac::forwardButtonRect): (WebCore::ScrollbarThemeMac::trackRect): (WebCore::ScrollbarThemeMac::paintButton):
20:19 Changeset [36696] by weinig@apple.com

2008-09-19 Sam Weinig <sam@webkit.org>

Roll out r36694.

  • JavaScriptCore.exp:
  • VM/JSPropertyNameIterator.cpp: (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): (JSC::JSPropertyNameIterator::invalidate):
  • VM/JSPropertyNameIterator.h: (JSC::JSPropertyNameIterator::JSPropertyNameIterator): (JSC::JSPropertyNameIterator::create):
  • kjs/JSObject.cpp: (JSC::JSObject::getPropertyNames):
  • kjs/PropertyMap.cpp: (JSC::PropertyMap::getEnumerablePropertyNames):
  • kjs/PropertyMap.h:
  • kjs/PropertyNameArray.cpp: (JSC::PropertyNameArray::add):
  • kjs/PropertyNameArray.h: (JSC::PropertyNameArray::PropertyNameArray): (JSC::PropertyNameArray::addKnownUnique): (JSC::PropertyNameArray::begin): (JSC::PropertyNameArray::end): (JSC::PropertyNameArray::size): (JSC::PropertyNameArray::operator[]): (JSC::PropertyNameArray::releaseIdentifiers):
  • kjs/StructureID.cpp: (JSC::StructureID::getEnumerablePropertyNames):
  • kjs/StructureID.h: (JSC::StructureID::clearEnumerationCache):
20:00 Changeset [36695] by oliver@apple.com

Improve peformance of local variable initialisation.

Reviewed by Maciej Stachowiak

Pull local and constant initialisation out of slideRegisterWindowForCall
and into its own opcode. This allows the JIT to generate the initialisation
code for a function directly into the instruction stream and so avoids a few
branches on function entry.

Results a 1% progression in SunSpider, particularly in a number of the bitop
tests where the called functions are very fast.

19:23 Changeset [36694] by weinig@apple.com

2008-09-19 Sam Weinig <sam@webkit.org>

Reviewed by Darin Adler.

Patch for https://bugs.webkit.org/show_bug.cgi?id=20928
Speed up JS property enumeration by caching entire PropertyNameArray

1.3% speedup on Sunspider, 30% on string-fasta.

  • JavaScriptCore.exp:
  • VM/JSPropertyNameIterator.cpp: (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): (JSC::JSPropertyNameIterator::invalidate):
  • VM/JSPropertyNameIterator.h: (JSC::JSPropertyNameIterator::JSPropertyNameIterator): (JSC::JSPropertyNameIterator::create):
  • kjs/JSObject.cpp: (JSC::JSObject::getPropertyNames):
  • kjs/PropertyMap.cpp: (JSC::PropertyMap::getEnumerablePropertyNames):
  • kjs/PropertyMap.h:
  • kjs/PropertyNameArray.cpp: (JSC::PropertyNameArray::add):
  • kjs/PropertyNameArray.h: (JSC::PropertyNameArrayData::create): (JSC::PropertyNameArrayData::propertyNameVector): (JSC::PropertyNameArrayData::setCachedPrototypeChain): (JSC::PropertyNameArrayData::cachedPrototypeChain): (JSC::PropertyNameArrayData::begin): (JSC::PropertyNameArrayData::end): (JSC::PropertyNameArrayData::PropertyNameArrayData): (JSC::PropertyNameArray::PropertyNameArray): (JSC::PropertyNameArray::addKnownUnique): (JSC::PropertyNameArray::size): (JSC::PropertyNameArray::operator[]): (JSC::PropertyNameArray::begin): (JSC::PropertyNameArray::end): (JSC::PropertyNameArray::setData): (JSC::PropertyNameArray::data): (JSC::PropertyNameArray::releaseData):
  • kjs/ScopeChain.cpp: (JSC::ScopeChainNode::print):
  • kjs/StructureID.cpp: (JSC::structureIDChainsAreEqual): (JSC::StructureID::getEnumerablePropertyNames): (JSC::StructureID::clearEnumerationCache): (JSC::StructureID::createCachedPrototypeChain):
  • kjs/StructureID.h:
18:54 Changeset [36693] by zecke@webkit.org

Fix a mismatched new[]/delete in JSObject::allocatePropertyStorage

18:22 Changeset [36692] by alice.liu@apple.com

2008-09-19 Alice Liu <alice.liu@apple.com>

Fix crash when submitting form at bugreport.apple.com rdar://6234126

Reviewed by Mark Rowe.

  • COMPropertyBag.h: (::GetPropertyInfo): correct mis-use of comma operator
18:08 Changeset [36691] by hyatt@apple.com

Fix build bustage on Win.

18:05 Changeset [36690] by darin@apple.com

2008-09-19 Darin Adler <darin@apple.com>

  • try to fix Qt build
  • bridge/qt/qt_instance.cpp: (JSC::Bindings::QtRuntimeObjectImp::QtRuntimeObjectImp): Add structure argument. (JSC::Bindings::QtInstance::getRuntimeObject): Ditto.
  • bridge/runtime_object.cpp: (JSC::RuntimeObjectImp::RuntimeObjectImp): Add an overload just for Qt.
  • bridge/runtime_object.h: Ditto.
17:57 Changeset [36689] by hyatt@apple.com

Fix build bustage.

17:54 Changeset [36688] by hyatt@apple.com

Fix build bustage.

17:53 Changeset [36687] by dino@apple.com

2008-09-19 Chris Marrin <cmarrin@apple.com>

Reviewed by Dave Hyatt.

Transition starts running when it shouldn't
https://bugs.webkit.org/show_bug.cgi?id=20892

When there is a transition and an animation on the
same element, make sure the animation wins.

The fix is to save the unanimated style when an animation is started.
Then, when starting a transition, check to see if there is a current
animation on the same prop. If so, use the unanimated style as the
fromStyle rather than the current style.

Test: animations/transition-and-animation-1.html

  • page/animation/CompositeAnimation.cpp: (WebCore::CompositeAnimation::updateTransitions): (WebCore::CompositeAnimation::updateKeyframeAnimations): (WebCore::CompositeAnimation::animate): (WebCore::CompositeAnimation::getAnimationForProperty):
  • page/animation/CompositeAnimation.h:
  • page/animation/ImplicitAnimation.cpp: (WebCore::ImplicitAnimation::reset):
  • page/animation/ImplicitAnimation.h:
  • page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::hasAnimationForProperty):
  • page/animation/KeyframeAnimation.h: (WebCore::KeyframeAnimation::KeyframeAnimation): (WebCore::KeyframeAnimation::unanimatedStyle):
17:42 Changeset [36686] by hyatt@apple.com

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

Add support for painting/hit testing of four possible scrollbar buttons.
The Windows themes simply ignore the two parts that they will never
show. The Mac theme also ignores the other two buttons for now.

The cross-platform base for all three themes, ScrollbarThemeComposite,
has all the proper support though.

Reviewed by Sam Weinig

  • platform/ScrollbarThemeComposite.cpp: (WebCore::ScrollbarThemeComposite::hitTest): (WebCore::ScrollbarThemeComposite::invalidatePart):
  • platform/ScrollbarThemeComposite.h:
  • platform/mac/ScrollbarThemeMac.h:
  • platform/mac/ScrollbarThemeMac.mm: (WebCore::ScrollbarThemeMac::backButtonRect): (WebCore::ScrollbarThemeMac::forwardButtonRect): (WebCore::ScrollbarThemeMac::paintButton):
  • platform/win/ScrollbarThemeSafari.cpp: (WebCore::ScrollbarThemeSafari::backButtonRect): (WebCore::ScrollbarThemeSafari::forwardButtonRect): (WebCore::ScrollbarThemeSafari::paintButton):
  • platform/win/ScrollbarThemeSafari.h:
  • platform/win/ScrollbarThemeWin.cpp: (WebCore::ScrollbarThemeWin::backButtonRect): (WebCore::ScrollbarThemeWin::forwardButtonRect): (WebCore::ScrollbarThemeWin::paintButton):
  • platform/win/ScrollbarThemeWin.h:
17:11 Changeset [36685] by pewtermoose@webkit.org

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

Reviewed by Tim Hatcher.

Bug 17772: Inspector should support point-and-click to select a node to inspect
https://bugs.webkit.org/show_bug.cgi?id=17772
<rdar://problem/5792395>

  • English.lproj/localizedStrings.js:
  • page/Chrome.cpp: (WebCore::Chrome::mouseDidMoveOverElement):
  • page/EventHandler.cpp: (WebCore::EventHandler::handleMousePressEvent):
  • page/InspectorController.cpp: (WebCore::toggleNodeSearch): (WebCore::searchingForNode): (WebCore::InspectorController::InspectorController): (WebCore::InspectorController::toggleSearchForNodeInPage): (WebCore::InspectorController::mouseDidMoveOverElement): (WebCore::InspectorController::handleMousePressOnNode): (WebCore::InspectorController::windowScriptObjectAvailable):
  • page/InspectorController.h: (WebCore::InspectorController::searchingForNodeInPage):
  • page/inspector/ElementsPanel.js:
  • page/inspector/Images/nodeSearchButtons.png: Added.
  • page/inspector/inspector.css:
16:39 Changeset [36684] by hyatt@apple.com

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

Add new scrollbar parts to be able to represent back and forward buttons
at either end of the scrollbar. The current scrollbar still just draws
a single button at either end, but the parts now exist.

Reviewed by Sam Weinig

  • platform/ScrollTypes.h: (WebCore::):
  • platform/Scrollbar.cpp: (WebCore::Scrollbar::autoscrollTimerFired): (WebCore::Scrollbar::pressedPartScrollDirection): (WebCore::Scrollbar::pressedPartScrollGranularity): (WebCore::Scrollbar::handleMouseMoveEvent):
  • platform/ScrollbarTheme.h: (WebCore::ScrollbarTheme::buttonsPlacement): (WebCore::ScrollbarTheme::invalidateParts):
  • platform/ScrollbarThemeComposite.cpp: (WebCore::ScrollbarThemeComposite::paint): (WebCore::ScrollbarThemeComposite::hitTest): (WebCore::ScrollbarThemeComposite::invalidatePart):
  • platform/ScrollbarThemeComposite.h:
16:02 Changeset [36683] by bdakin@apple.com

WebCore:

2008-09-19 Beth Dakin <bdakin@apple.com>

Reviewed by Dave Hyatt.

Fix for <rdar://problem/6231308> crash in AutoTableLayout

The code assumes later on that a TableSection's grid's row vector
will never be empty. So make 1 the minimum number of columns.

  • rendering/RenderTableSection.cpp: (WebCore::RenderTableSection::ensureRows):

LayoutTests:

2008-09-19 Beth Dakin <bdakin@apple.com>

Reviewed by Dave Hyatt.

Test for <rdar://problem/6231308> crash in AutoTableLayout

  • fast/table/empty-row-crash.html: Added.
  • platform/mac/fast/table/empty-row-crash-expected.checksum: Added.
  • platform/mac/fast/table/empty-row-crash-expected.png: Added.
  • platform/mac/fast/table/empty-row-crash-expected.txt: Added.
15:55 Changeset [36682] by hyatt@apple.com

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

Add a new ScrollbarButtonsPlacement type for specifying where
the button arrows are in a scrollbar.

Read in the placement settings for Mac. Nothing is done with the
setting yet.

Add a new buttonsPlacement() method to ScrollbarTheme composite
so that the arrow settings can be obtained.

Reviewed by Sam Weinig

  • platform/ScrollTypes.h: (WebCore::):
  • platform/ScrollbarThemeComposite.h: (WebCore::ScrollbarThemeComposite::buttonsPlacement):
  • platform/mac/ScrollbarThemeMac.mm: (WebCore::updateArrowPlacement): (WebCore::ScrollbarThemeMac::ScrollbarThemeMac):
15:47 Changeset [36681] by sfalken@apple.com

Roll out r36626. It is causing variance in SunSpider numbers on XP.


Rubber stamped by Mark Rowe.

  • platform/win/SharedTimerWin.cpp: (WebCore::isRunningOnVistaOrLater): (WebCore::setSharedTimerFireTime):
15:46 Changeset [36680] by cfleizach@apple.com

Fix Windows bustage

15:12 Changeset [36679] by hyatt@apple.com

2008-09-19 Kevin McCullough <kmccullough@apple.com>

Reviewed by Tim.

https://bugs.webkit.org/show_bug.cgi?id=20942
Bug 20942: Repeated messages in resources don't collapse

  • Now repeated messages in a resource's view are collapsed and a message says how many were repeated.
  • English.lproj/localizedStrings.js:
  • manual-tests/inspector/multiple-console-messages.html:
  • page/inspector/Console.js: Send all the messages to the resource's view before possibly returning early if the message is a repeat.
  • page/inspector/SourceFrame.js: Add the text about the message being repeated, if it is, and increment it when necessary.
14:56 Changeset [36678] by kmccullough@apple.com

2008-09-19 Kevin McCullough <kmccullough@apple.com>

Reviewed by Tim.

https://bugs.webkit.org/show_bug.cgi?id=20942
Bug 20942: Repeated messages in resources don't collapse

  • Now repeated messages in a resource's view are collapsed and a message says how many were repeated.
  • English.lproj/localizedStrings.js:
  • manual-tests/inspector/multiple-console-messages.html:
  • page/inspector/Console.js: Send all the messages to the resource's view before possibly returning early if the message is a repeat.
  • page/inspector/SourceFrame.js: Add the text about the message being repeated, if it is, and increment it when necessary.
14:39 Changeset [36677] by cfleizach@apple.com

Removed unnecessary #if

14:20 Changeset [36676] by hyatt@apple.com

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

Move ScrollbarThemeMac.cpp to ScrollbarThemeMac.mm so it can use Obj-C.
Set the initial button repeat delay to 0.5 for Mac.

Reviewed by Sam Weinig

  • WebCore.xcodeproj/project.pbxproj:
  • platform/mac/ScrollbarThemeMac.cpp: Removed.
  • platform/mac/ScrollbarThemeMac.h: (WebCore::ScrollbarThemeMac::initialAutoscrollTimerDelay):
  • platform/mac/ScrollbarThemeMac.mm: Copied from platform/mac/ScrollbarThemeMac.cpp.
14:15 Changeset [36675] by darin@apple.com

JavaScriptCore:

2008-09-19 Darin Adler <darin@apple.com>

Reviewed by Sam Weinig.

  • JavaScriptCore.exp: Exported constructEmptyObject for use in WebCore.
  • kjs/JSGlobalObject.h: Changed the protected constructor to take a structure instead of a prototype.
  • kjs/JSVariableObject.h: Removed constructor that takes a prototype.

WebCore:

2008-09-19 Darin Adler <darin@apple.com>

Reviewed by Sam Weinig.

+ Fixed all cases where we were using a shared structure for multiple

C++ classes in WebCore. This still has to be done in JavaScriptCore.

+ Got rid of cacheGlobalObject.

+ Improved use of PassRefPtr in bindings code.

+ Removed a couple cases where we were potentially allocating prototypes

inside a JSObject's construction process -- this can lead to trouble if
we do a garbage collection while an object is only partly constructed.

  • bindings/js/JSAudioConstructor.cpp: (WebCore::JSAudioConstructor::JSAudioConstructor): Create a structure explicitly so we don't implicitly share the structure with other objects that use the object prototype.
  • bindings/js/JSDOMBinding.cpp: (WebCore::getCachedDOMConstructor): Added. To be used for constructors so we don't need cacheGlobalObject any more. (WebCore::cacheDOMConstructor): Ditto.
  • bindings/js/JSDOMBinding.h: Removed DOMObject constructor that takes a prototype. Added functions and a function template for getting cached DOM constructors. Removed cacheGlobalObject function template.
  • bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::JSDOMWindowBase): Take a PassRefPtr<DOMWindow> since we're taking ownership.
  • bindings/js/JSDOMWindowBase.h: Changed constructor to take PassRefPtr, since we're taking ownership. Added constructor map.
  • bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::mark): Mark the constructors in the map.
  • bindings/js/JSDOMWindowShell.cpp: (WebCore::JSDOMWindowShell::JSDOMWindowShell): Take a PassRefPtr<DOMWindow> since we're taking ownership. Use the new setWindow function to create the JSDOMWindow; this is now done in only that one place. (WebCore::JSDOMWindowShell::setWindow): Added. Creates the JSDOMWindow based on the passed-in DOMWindow. Code was moved here and changed to allocate unique structures for both the window prototype and the window.
  • bindings/js/JSDOMWindowShell.h: Ditto.
  • bindings/js/JSEventTargetBase.h: Changed class template argument so it doesn't have the same name (JSEventTarget) as an actual class. Removed unhelpful use of private/friend in JSEventTargetBase. Removed comments referring to defunct macros. Changed JSEventTargetBasePrototype to get the prototype with the new rather than its own copy of cacheGlobalObject (I missed this during pass 1). Changed JSEventTargetBasePrototype so it doesn't have so many template arguments.
  • bindings/js/JSEventTargetNode.cpp: Added s_info; needed for the new scheme for caching structures and prototypes. (WebCore::JSEventTargetNode::JSEventTargetNode): Use PassRefPtr. (WebCore::JSEventTargetNode::createPrototype): Added.
  • bindings/js/JSEventTargetNode.h: Updated for above changes.
  • bindings/js/JSHTMLAllCollection.h: (WebCore::JSHTMLAllCollection::JSHTMLAllCollection): Use PassRefPtr.
  • bindings/js/JSHTMLCollectionCustom.cpp: (WebCore::getNamedItems): Pass ExecState instead of prototype.
  • bindings/js/JSHTMLFormElementCustom.cpp: (WebCore::JSHTMLFormElement::nameGetter): Ditto.
  • bindings/js/JSHTMLInputElementBase.cpp: (WebCore::JSHTMLInputElementBase::JSHTMLInputElementBase): Use PassRefPtr.
  • bindings/js/JSHTMLInputElementBase.h: Ditto.
  • bindings/js/JSHTMLOptionElementConstructor.cpp: (WebCore::JSHTMLOptionElementConstructor::JSHTMLOptionElementConstructor): Create a unique structure instead of sharing.
  • bindings/js/JSImageConstructor.cpp: (WebCore::JSImageConstructor::JSImageConstructor): Ditto.
  • bindings/js/JSInspectedObjectWrapper.cpp: (WebCore::JSInspectedObjectWrapper::wrap): Removed overload that takes a prototype rather than a structure. Made the use of inheritorID() here explicit.
  • bindings/js/JSInspectedObjectWrapper.h: Ditto.
  • bindings/js/JSInspectorCallbackWrapper.cpp: (WebCore::JSInspectorCallbackWrapper::wrap): Ditto.
  • bindings/js/JSInspectorCallbackWrapper.h: Ditto.
  • bindings/js/JSNamedNodesCollection.cpp: (WebCore::JSNamedNodesCollection::JSNamedNodesCollection): Changed to take an ExecState argument instead of a prototype. Create a unique StructureID instead of sharing.
  • bindings/js/JSNamedNodesCollection.h: Ditto.
  • bindings/js/JSQuarantinedObjectWrapper.cpp: Removed overloaded constructor that takes a prototype instead of a structure.
  • bindings/js/JSQuarantinedObjectWrapper.h: Ditto.
  • bindings/js/JSRGBColor.cpp: (WebCore::JSRGBColor::JSRGBColor): Take ExecState instead of a prototype; create a unique structure. (WebCore::getJSRGBColor): Ditto.
  • bindings/js/JSRGBColor.h: Ditto.
  • bindings/js/JSSQLResultSetRowListCustom.cpp: (WebCore::JSSQLResultSetRowList::item): Use constructEmptyObject instead of explicit coding the idiom for making a new object.
  • bindings/js/JSXMLHttpRequestConstructor.cpp: (WebCore::JSXMLHttpRequestConstructor::JSXMLHttpRequestConstructor): Create a unique structure instead of the shared one.
  • bindings/js/JSXSLTProcessorConstructor.cpp: (WebCore::JSXSLTProcessorConstructor::JSXSLTProcessorConstructor): Ditto.
  • bindings/js/ScriptController.cpp: (WebCore::ScriptController::clearWindowShell): Let the window shell's setWindow function create the JSDOMWindow instead of doing it here.
  • bindings/scripts/CodeGeneratorJS.pm: Changed to use PassRefPtr for the structure and the wrapped object when creating wrappers. Simplified some of the special cases for DOMWindow so they are different only in ways the need to be. Eliminated the JSDOMWindow::createPrototype and JSDOMWindowPrototype::self functions. Moved responsibility for creating the structure and parent prototype out of the prototype constructor into the createPrototype function. Removed the unused "DoNotCache" flag for objects other than DOMWindow. Use getDOMConstructor instead of cacheGlobalObject for constructors. Make each constructor have a unique structure ID.
  • bridge/objc/objc_runtime.h: Added createPrototype and changed the name of the info member to s_info so we can use the standard DOM binding macros to handl the prototype.
  • bridge/objc/objc_runtime.mm: Fixed namespacing a bit. (JSC::Bindings::ObjcFallbackObjectImp::ObjcFallbackObjectImp): Create a unique structure using getDOMStructure.
  • bridge/runtime_array.cpp: Fixed namespacing a bit. (JSC::RuntimeArray::RuntimeArray): Create a unique structure using getDOMStructure.
  • bridge/runtime_array.h: Added createPrototype so getDOMStructure will work.
  • bridge/runtime_object.cpp: (JSC::RuntimeObjectImp::RuntimeObjectImp): Create a unique structure using getDOMStructure.
  • bridge/runtime_object.h: Added createPrototype so getDOMStructure will work.
  • history/CachedPage.cpp: (WebCore::CachedPage::restore): Let the window shell's setWindow function create the JSDOMWindow instead of doing it here.
  • page/DOMWindow.idl: Removed DoNotCache, which is no longer used.
14:10 Changeset [36674] by mitz@apple.com

Fixed ChangeLog typo

14:02 Changeset [36673] by mitz@apple.com

Reviewed by Dave Hyatt.

This optimization was suggested by Daniel Fenwick

  • speed up measuring text on the Core Text code path by not specifying a paragraph writing direction

Specifying LTR paragraph directionality when measuring runs of RTL text
resulted in typically two CTRuns being generated for every run instad
of one, due to the leading space being reordered to the left.

  • platform/graphics/SimpleFontData.h: Removed the ltr parameter to getCFStringAttributes() and changed m_CFStringAttributes from an array to a single value.
  • platform/graphics/mac/CoreTextController.cpp: (WebCore::CoreTextController::CoreTextController): Added a mayUseNaturalWritingDirection parameter. (WebCore::CoreTextController::collectCoreTextRunsForCharacters): Changed to force the bidi embedding level whenever m_mayUseNaturalWritingDirectrion is false. Since this is now a common case, made the typesetter options dictionaries static.
  • platform/graphics/mac/CoreTextController.h:
  • platform/graphics/mac/FontMacCoreText.cpp: (WebCore::Font::selectionRectForComplexText): Renamed a local variable. (WebCore::Font::floatWidthForComplexText): Changed to allow the CoreTextController to not set the writing direction.
  • platform/graphics/mac/SimpleFontDataMac.mm: (WebCore::SimpleFontData::getCFStringAttributes): Removed the ltr parameter and the paragraph style attribute.
13:54 Changeset [36672] by hyatt@apple.com

WebCore:

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

Reviewed by Sam Weinig

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

Incorrect height calculation for replaced element inside nested
positioned elements (where the inner has a percentage height and
the outer implicitly has a fixed height because of explicit top/bottom
values).

Added fast/block/positioning/replaced-inside-top-bottom.html

  • rendering/RenderBox.cpp: (WebCore::RenderBox::availableHeightUsing):

LayoutTests:

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

Fix for bug 20941.

Reviewed by Sam Weinig

  • fast/block/positioning/replaced-inside-fixed-top-bottom.html: Added.
  • platform/mac/fast/block/positioning/replaced-inside-fixed-top-bottom-expected.checksum: Added.
  • platform/mac/fast/block/positioning/replaced-inside-fixed-top-bottom-expected.png: Added.
  • platform/mac/fast/block/positioning/replaced-inside-fixed-top-bottom-expected.txt: Added.
13:48 Changeset [36671] by cfleizach@apple.com

Fix Tiger bustage

13:24 Changeset [36670] by cfleizach@apple.com

<rdar://problem/6211041> Expose legend tag in accessibility

Makes the <legend> tag the titleUIElement of the field set.

13:05 ProposedWebInspectorRearchitecting edited by dglazkov@chromium.org
(diff)
13:04 Changeset [36669] by cfleizach@apple.com

<rdar://problem/6213171> WebKit should use new array-centric methods for AX performance

13:02 ProposedWebInspectorRearchitecting edited by dglazkov@chromium.org
started on message format (diff)
11:47 Changeset [36668] by darin@apple.com

2008-09-19 Darin Adler <darin@apple.com>

Reviewed by Dan Bernstein.

  • WebView/WebView.mm: (-[WebView _commonInitializationWithFrameName:groupName:]): Moved call to RefCountedLeakCounter::suppressMessages in here. (-[WebView initWithFrame:frameName:groupName:]): Moved it out of here.
07:35 Introducing SquirrelFish Extreme.ja edited by omo@dodgson.org
(diff)
07:34 Introducing SquirrelFish Extreme.ja edited by omo@dodgson.org
(diff)
07:13 Introducing SquirrelFish Extreme.ja created by omo@dodgson.org
04:43 Changeset [36667] by zecke@webkit.org

[qtwebkit] Set the m_should* flags to their proper value on entry

With plugins it was possible that we finished a job twice. This was
some kind of reentrancy in QNetworkReplyHandler::sendQueuedItems. By
setting the flag to (m_loadMode == LoadDeferred) they will always have
the right value and we will not send responses twice.

04:06 Changeset [36666] by zecke@webkit.org

[qtwebkit] Pass test 70 of acid3. Handle text decoding errors

Handle text decoding errors before instructing the parser to parse. We
have converted the text to QString and all encoding errors are gone and
the parser will not be able to detect them. So handle them before parsing.

02:55 Changeset [36665] by hyatt@apple.com

Fix Gtk bustage.

02:54 Changeset [36664] by hyatt@apple.com

Fix Qt bustage.

01:50 Changeset [36663] by jchaffraix@webkit.org

2008-09-19 Julien Chaffraix <jchaffraix@pleyo.com>

Reviewed by Alexey Proskuryakov.

Use the template hoisting technique on the RefCounted class. This reduces the code bloat due to
non-template methods' code been copied for each instance of the template.
The patch splits RefCounted between a base class that holds non-template methods and attributes
and the template RefCounted class that keeps the same functionnality.

On my Linux with gcc 4.3 for the Gtk port, this is:

  • a ~600KB save on libwebkit.so in release.
  • a ~1.6MB save on libwebkit.so in debug.

It is a wash on Sunspider and a small win on Dromaeo (not sure it is relevant).
On the whole, it should be a small win as we reduce the compiled code size and the only
new function call should be inlined by the compiler.

  • wtf/RefCounted.h: (WTF::RefCountedBase::ref): Copied from RefCounted. (WTF::RefCountedBase::hasOneRef): Ditto. (WTF::RefCountedBase::refCount): Ditto. (WTF::RefCountedBase::RefCountedBase): Ditto. (WTF::RefCountedBase::~RefCountedBase): Ditto. (WTF::RefCountedBase::derefBase): Tweaked from the RefCounted version to remove template section. (WTF::RefCounted::RefCounted): (WTF::RefCounted::deref): Small wrapper around RefCountedBase::derefBase(). (WTF::RefCounted::~RefCounted): Keep private destructor.
Note: See TracTimeline for information about the timeline view.