Timeline


and

05/24/08:

22:25 Changeset [34116] by alp@webkit.org
  • 2 edits in trunk/WebKitTools

2008-05-24 Andreia Gaita <shana@isninja.com>

Reviewed by Alp Toker.

cygwin-downloader.py fixes.

Remove two non-working mirrors. Add a check for missing dependency
packages to avoid bailing out on an inconsistent Cygwin package list.

  • CygwinDownloader/cygwin-downloader.py:
21:47 Changeset [34115] by timothy@apple.com
  • 2 edits in trunk/WebCore

Fixes a huge leak with the Inspector where it was protecting
a large object that was not being unprotected.

<rdar://problem/5961999> Inspector protects a large JavaScript
object and never unprotects it (large leak)

Reviewed by Darin Adler.

  • page/InspectorController.cpp:

(WebCore::InspectorController::inspectedPageDestroyed): Call close()
and removed a call to stopDebugging() and moved it to close().
(WebCore::InspectorController::close): Add stopDebugging() and
stopUserInitiatedProfiling(). Removed an ASSERT and added an
if statement before calling JSValueUnprotect. We don't always have
a m_scriptContext and m_scriptObject.

21:24 Changeset [34114] by darin@apple.com
  • 1 edit in trunk/JavaScriptCore/docs

Ignore generated bytecode.html file.

21:19 Changeset [34113] by alp@webkit.org
  • 2 edits in trunk

2008-05-24 Alp Toker <alp@nuanti.com>

GTK+/Win32 build fixes. Link against Windows ICU without using
icu-config since it's not available on that platform.

Link against Ws2_32 when the curl http backend is chosen since we
use select() directly.

  • configure.ac:
20:45 Changeset [34112] by alp@webkit.org
  • 2 edits in trunk/WebCore

2008-05-24 Alp Toker <alp@nuanti.com>

Win32/gcc3 build fix in Pango font backend. UChar needs to be
explicitly cast to gunichar2.

  • platform/graphics/gtk/FontGtk.cpp: (WebCore::utf16_to_utf8):
18:58 Changeset [34111] by alp@webkit.org
  • 2 edits in trunk/JavaScriptCore

2008-05-24 Alp Toker <alp@nuanti.com>

Win32/gcc build fix. Remove MSVC assumption.

  • wtf/TCSpinLock.h: (TCMalloc_SlowLock):
18:51 Changeset [34110] by alp@webkit.org
  • 2 edits in trunk/WebKit/gtk

2008-05-24 Alp Toker <alp@nuanti.com>

https://bugs.webkit.org/show_bug.cgi?id=18825
webkitgtk fails to build from source: "Database Tracker" has not been declared

GTK+ fix for building without database support.
exceededDatabaseQuota() still needs to be present, just a no-op.

  • WebCoreSupport/ChromeClientGtk.cpp: (WebKit::ChromeClient::exceededDatabaseQuota):
18:01 Changeset [34109] by timothy@apple.com
  • 3 edits in trunk/WebCore

Fixes a crash where a new Inspector would get an old
JSInspectedObjectWrapper for a user agent CSSStyleDeclaration.
Since these style objects shared between pages, the wrapper cache
would have a wrapper for the object still. But the wrapper was
for a previous global object and with a disconnected frame. This
fixes the wrapper cache so wrappers are remembered per global object
and the object they are wrapping.

<rdar://problem/5958567> repro crash in WebCore::Frame::keepAlive()
opening inspector window after closing it

Reviewed by Darin Adler.

  • bindings/js/JSInspectedObjectWrapper.cpp:

(WebCore::wrappers): Return a GlobalObjectWrapperMap reference.
(WebCore::JSInspectedObjectWrapper::wrap): Find the WrapperMap
by the dynamicGlobalObject then find the wrapper for unwrappedObject.
(WebCore::JSInspectedObjectWrapper::JSInspectedObjectWrapper): Changes
how the wrapper is added to the wrapper cache.
(WebCore::JSInspectedObjectWrapper::~JSInspectedObjectWrapper): Changes
how the wrapper is removed from the wrapper cache.

  • bindings/js/JSQuarantinedObjectWrapper.h:

(WebCore::JSQuarantinedObjectWrapper:unwrappedGlobalObject): Added.

14:12 Changeset [34108] by ap@webkit.org
  • 8 edits
    2 adds in trunk/WebCore

Reviewed by Maciej.

Optimize Node::textContent() to avoid O(n2) string appending behavior.

1.6% speedup at Acid3 test 26.

  • WebCore.xcodeproj/project.pbxproj:
  • GNUmakefile.am:
  • WebCore.pro:
  • WebCoreSources.bkl:
  • WebCore.vcproj/WebCore.vcproj:
  • platform/text/StringBuilder.cpp: Added. (WebCore::StringBuilder::append): (WebCore::StringBuilder::toString):
  • platform/text/StringBuilder.h: Added. (WebCore::StringBuilder::StringBuilder): (WebCore::StringBuilder::isNull): Added a simple class to efficiently build a string by appending. Potentially, it can be extended to be more like java.lang.StringBuilder, but we don't need that much flexibility now.
  • dom/Node.cpp: (WebCore::Node::appendTextContent): (WebCore::Node::textContent):
  • dom/Node.h: Changed to use StringBuilder.
06:26 Changeset [34107] by jchaffraix@webkit.org
  • 8 edits
    4 deletes in trunk/WebCore

2008-05-24 Julien Chaffraix <jchaffraix@webkit.org>

Reviewed by Eric.

Bug 9191: JS*ElementWrapperFactory should be autogenerated
https://bugs.webkit.org/show_bug.cgi?id=9191

This is a first pass for generation of JS*ElementWrapperFactory, in the long term we should move the make_names.pl
intelligence to the *.in files.

  • Add a new parameter to make_names.pl --wrapperFactory which works like --wrapper but generates the JS*ElementWrapperFactory files.
  • Removed JS*ElementWrapperFactory files in WebCore/bindings/js, replaced by the generated ones.
  • Updated the build systems to account for the previous changes.
  • DerivedSources.make:
  • GNUmakefile.am:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • WebCoreSources.bkl:
  • bindings/js/JSHTMLElementWrapperFactory.cpp: Removed.
  • bindings/js/JSHTMLElementWrapperFactory.h: Removed.
  • bindings/js/JSSVGElementWrapperFactory.cpp: Removed.
  • bindings/js/JSSVGElementWrapperFactory.h: Removed.
  • dom/make_names.pl:
05:48 Changeset [34106] by ap@webkit.org
  • 1 edit in trunk/JavaScriptCore/ChangeLog

Fixed ChangeLog.

05:43 Changeset [34105] by ap@webkit.org
  • 5 edits in trunk

Rubber-stamped, tweaked and landed by Alexey.

Build fix for gcc 4.3. Added missing standard includes.

05/23/08:

23:34 Changeset [34104] by timothy@apple.com
  • 2 edits in trunk/WebCore

Fixes a bug where a timer would keep firing after the Inspector
was closed. It turns out this timer wasn't needed anymore now
that we can add an event listener to the inspected page and have
it get called in the Inspector's context.

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

Reviewed by Mark Rowe.

  • page/inspector/ElementsPanel.js:
21:18 Changeset [34103] by mrowe@apple.com
  • 3 edits
    2 copies in tags/Safari-6526.8

Merge r34097.

20:52 Changeset [34102] by pewtermoose@webkit.org
  • 3 edits in trunk/WebCore

2008-05-23 Anthony Ricaud <rik24d@gmail.com>

Changes the largerResourcesButton tooltip to toggle.

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

Reviewed by Tim Hatcher.

  • WebCore/English.lproj/localizedStrings.js: New string and clean an double string "Dock to main window."
  • WebCore/page/inspector/ResourcesPanel.js: Toggle the tooltip and change the default tooltip
19:47 Changeset [34101] by mrowe@apple.com
  • 4 edits in trunk

Versioning.

19:44 Changeset [34100] by mrowe@apple.com
  • 1 copy in tags/Safari-6526.8

New tag.

18:33 Changeset [34099] by jmalonzo@webkit.org
  • 6 edits in trunk/WebKitTools

2008-05-24 Jan Michael Alonzo <jmalonzo@webkit.org>

Reviewed by Darin Adler.

Remove useQmake usage. QMake build doesn't support Gtk port
anymore.

Also fix 2 occurences of "Web Kit". Should be WebKit.

  • Scripts/build-webkit:
  • Scripts/run-javascriptcore-tests:
  • Scripts/run-launcher:
  • Scripts/run-webkit-tests:
  • Scripts/webkitdirs.pm:
17:56 Changeset [34098] by justin.garcia@apple.com
  • 2 edits in trunk/LayoutTests/editing/execCommand

Check Paste, instead of checking Copy twice.

17:29 Changeset [34097] by justin.garcia@apple.com
  • 3 edits
    2 adds in trunk

WebCore:

2008-05-23 Justin Garcia <justin.garcia@apple.com>

Reviewed by Darin.

<rdar://problem/5939887> REGRESSION: With no selection, copy does not fire oncopy handler (affects CIFilterBrowser widget)


Execute cut, copy and paste if they are invoked explicitly, via execCommand or -[WebView copy:], even
if they are disabled. This will fire oncopy, oncut and onpaste, but won't perform any other work, like
writing to the pasteboard during cut/copy or deleting the selection during cut/paste. This matches FF3,
which actually goes further and fires oncopy on any Command-C.


  • editing/EditorCommand.cpp: (WebCore::CommandEntry::): (WebCore::Editor::Command::execute):

LayoutTests:

2008-05-23 Justin Garcia <justin.garcia@apple.com>

Reviewed by Darin.

<rdar://problem/5939887> REGRESSION: With no selection, copy does not fire oncopy handler (affects CIFilterBrowser widget)

  • editing/execCommand/5939887-expected.txt: Added.
  • editing/execCommand/5939887.html: Added.
16:51 Changeset [34096] by timothy@apple.com
  • 4 edits
    1 add in trunk/WebCore

Adds a percentage toggle button the profile view status bar that
changes the time columns between absolute and percents.

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

Reviewed by Kevin McCullough.

  • English.lproj/localizedStrings.js: New strings.
  • page/inspector/Images/percentButtons.png: Added.
  • page/inspector/ProfileView.js: Make the button and add it to the

status bar. Make clicking toggle the showAsPercent* properties.

  • page/inspector/inspector.css: New styles.
16:44 Changeset [34095] by andersca@apple.com
  • 5 edits in trunk/JavaScriptCore

2008-05-23 Anders Carlsson <andersca@apple.com>

Reviewed by Geoff.

<rdar://problem/5959886> REGRESSION: Assertion failure in JSImmediate::toString when loading GMail (19217)


Change List to store a JSValue* pointer + an offset instead of a JSValue pointer to protect against the case where
a register file changes while a list object points to its buffer.


  • VM/Machine.cpp: (KJS::Machine::privateExecute):
  • kjs/JSActivation.cpp: (KJS::JSActivation::createArgumentsObject):
  • kjs/list.cpp: (KJS::List::getSlice):
  • kjs/list.h: (KJS::List::List): (KJS::List::at): (KJS::List::append): (KJS::List::begin): (KJS::List::end): (KJS::List::buffer):
16:41 Changeset [34094] by mrowe@apple.com
  • 3 edits in trunk/WebKitSite

2008-05-23 William Siegrist <wsiegrist@apple.com>

Reviewed by Mark Rowe

Rename duplicated "notice" id to "terms".

  • css/main.css:
  • nav.inc:
16:37 Changeset [34093] by weinig@apple.com
  • 3 edits in trunk/LayoutTests

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

Reviewed by Mark Rowe.

LayoutTests that send an OPTIONS request don't work on Tiger or Window due
to a bug in Apache 1.3

  • platform/mac-tiger/Skipped:
  • platform/win/Skipped:
16:07 Changeset [34092] by kmccullough@apple.com
  • 3 edits in trunk/JavaScriptCore

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

Reviewed by Sam.

<rdar://problem/5960012> JSProfiler: Stack overflow if recursion is
too deep.
-Use a simple depth limit to restrict too deep of recursion.

  • profiler/Profile.cpp: (KJS::Profile::willExecute): (KJS::Profile::didExecute):
  • profiler/Profile.h:
14:30 Changeset [34091] by ggaren@apple.com
  • 1 edit in trunk/JavaScriptCore/ChangeLog

Removed terrible lie from ChangeLog.

14:28 Changeset [34090] by ggaren@apple.com
  • 5 edits in trunk/JavaScriptCore

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

Rolling back in r34085, with performance resolved.


Apparently, passing the eval function to callEval gave GCC a hernia.

Reviewed by Darin Adler, Kevin McCullough, and Oliver Hunt.


Fixed <rdar://problem/5959447> Crashes and incorrect reporting in the
JavaScript profiler

  • VM/Machine.cpp: (KJS::callEval): Made this profiler hooks slightly faster by passing in the eval function.


(KJS::Machine::unwindCallFrame): Fixed incorrect reporting / a crash
when unwinding from inside eval and/or program code: detect the
difference, and do the right thing. Also, be sure to notify the profiler
*before* deref'ing the scope chain, since the profiler uses the scope chain.

(KJS::Machine::execute): Fixed incorrect reporting / crash when calling
a JS function re-entrently: Machine::execute(FunctionBodyNode*...)
should not invoke the didExecute hook, because op_ret already does that.
Also, use the new function's ExecState when calling out to the profiler.
(Not important now, but could have become a subtle bug later.)

(KJS::Machine::privateExecute): Fixed a hard to reproduce crash when
profiling JS functions: notify the profiler *before* deref'ing the scope
chain, since the profiler uses the scope chain.

  • kjs/object.cpp: (KJS::JSObject::call): Removed these hooks, because they are now unnecessary.
  • profiler/Profile.cpp: Added a comment to explain a subtlety that only Kevin and I understood previously. (Now, the whole world can understand!)
  • profiler/Profiler.cpp: (KJS::shouldExcludeFunction): Don't exclude .call and .apply. That was a hack to fix bugs that no longer exist.

Finally, sped things up a little bit by changing the "Is the profiler
running?" check into an ASSERT, since we only call into the profiler
when it's running:

(KJS::Profiler::willExecute):
(KJS::Profiler::didExecute):

13:49 Changeset [34089] by ggaren@apple.com
  • 3 edits
    2 adds in trunk

JavaScriptCore:

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

Reviewed by Oliver Hunt.

  • fixed <rdar://problem/5957662> REGRESSION(r33943-r33980): Can't send email , attach file or save as draft from hotmail.com


SunSpider reports no change.


This is a reworking of r34073, which I rolled out because it caused
lots of crashes.

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::CodeGenerator): Use removeDirect to nix old properties whose names collide with new functions. (Don't use putWithAttributes because that tries to write to the register file, which hasn't grown to fit this program yet.)

LayoutTests:

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

Reviewed by Oliver.


  • test case <rdar://problem/5957662> REGRESSION(r33943-r33980): Can't send email , attach file or save as draft from hotmail.com
  • fast/js/function-redefinition-expected.txt: Added.
  • fast/js/function-redefinition.html: Added.
12:42 Changeset [34088] by mrowe@apple.com
  • 6 edits in trunk/JavaScriptCore

2008-05-23 Darin Adler <darin@apple.com>

Reviewed by Mark Rowe.

As allocateNumber is used via jsNumberCell outside of JavaScriptCore,
we need to provide a non-inlined version of it to avoid creating a
weak external symbol.

  • JavaScriptCore.exp:
  • kjs/AllInOneFile.cpp:
  • kjs/collector.cpp: (KJS::Collector::allocate): (KJS::Collector::allocateNumber):
  • kjs/collector.h: (KJS::Collector::allocate): (KJS::Collector::inlineAllocateNumber):
  • kjs/value.h: (KJS::NumberImp::operator new):
12:34 Changeset [34087] by ggaren@apple.com
  • 3 edits
    2 deletes in trunk

JavaScriptCore:

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

Rolled out r34073 because it caused lots of layout test crashes.

LayoutTests:

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

Rolled out r34073 because it caused lots of layout test crashes.

12:12 Changeset [34086] by ggaren@apple.com
  • 5 edits in trunk/JavaScriptCore

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

Rolled out r34085 because it measured as a 7.6% performance regression.

10:50 Changeset [34085] by ggaren@apple.com
  • 5 edits in trunk/JavaScriptCore

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

Reviewed by Darin Adler, Kevin McCullough, and Oliver Hunt.


Fixed <rdar://problem/5959447> Crashes and incorrect reporting in the
JavaScript profiler

  • VM/Machine.cpp: (KJS::callEval): Made this profiler hooks slightly faster by passing in the eval function.


(KJS::Machine::unwindCallFrame): Fixed incorrect reporting / a crash
when unwinding from inside eval and/or program code: detect the
difference, and do the right thing. Also, be sure to notify the profiler
*before* deref'ing the scope chain, since the profiler uses the scope chain.

(KJS::Machine::execute): Fixed incorrect reporting / crash when calling
a JS function re-entrently: Machine::execute(FunctionBodyNode*...)
should not invoke the didExecute hook, because op_ret already does that.
Also, use the new function's ExecState when calling out to the profiler.
(Not important now, but could have become a subtle bug later.)

(KJS::Machine::privateExecute): Fixed a hard to reproduce crash when
profiling JS functions: notify the profiler *before* deref'ing the scope
chain, since the profiler uses the scope chain.

  • kjs/object.cpp: (KJS::JSObject::call): Removed these hooks, because they are now unnecessary.
  • profiler/Profile.cpp: Added a comment to explain a subtlety that only Kevin and I understood previously. (Now, the whole world can understand!)
  • profiler/Profiler.cpp: (KJS::shouldExcludeFunction): Don't exclude .call and .apply. That was a hack to fix bugs that no longer exist.

Finally, sped things up a little bit by changing the "Is the profiler
running?" check into an ASSERT, since we only call into the profiler
when it's running:

(KJS::Profiler::willExecute):
(KJS::Profiler::didExecute):

10:48 Changeset [34084] by alp@webkit.org
  • 4 edits in trunk

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

GTK+ fixes for building without database support.

10:41 Changeset [34083] by timothy@apple.com
  • 2 edits in trunk/WebCore

Fixes a bug where excluding nodes from the profile could
show an empty parent node.

<rdar://problem/5959573> Excluding nodes from the profile could show
an empty parent node

Reviewed by Kevin McCullough.

  • page/inspector/ProfileView.js: Only say we have children if

all of our children nodes are visible.

10:19 Changeset [34082] by andersca@apple.com
  • 2 edits in trunk/WebCore

2008-05-23 Anders Carlsson <andersca@apple.com>

Reviewed by Adam.

Add IconFetcher to project.


  • WebCore.vcproj/WebCore.vcproj:
10:15 Changeset [34081] by timothy@apple.com
  • 2 edits in trunk/WebCore

Fixes a bug where the Web Insepctor would jump back to
Elements each time it is opened instead of staying at the
last selected panel.

<rdar://problem/5959475> Inspector jumps to the Elements panel
each time it is opened, instead of staying at the previous panel

Reviewed by Adam Roben.

  • page/InspectorController.cpp:

(WebCore::InspectorController::setWindowVisible): Reset
m_showAfterVisible to CurrentPanel, so the next time setWindowVisible
is called it will use CurrentPanel unless showPanel was called again.

10:03 Changeset [34080] by aroben@apple.com
  • 2 edits in trunk/JavaScriptCore

Windows build fix

  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add the profiler directory to the include path.
09:54 Changeset [34079] by cfleizach@apple.com
  • 2 edits in trunk/WebCore

<rdar://problem/5933759> REGRESSION: Frames don't appear as AX children of the top level web area

09:38 Changeset [34078] by andersca@apple.com
  • 6 edits
    3 adds in trunk/WebKit/win

2008-05-22 Anders Carlsson <andersca@apple.com>

Reviewed by Adam.

Add IWebIconFetcher interface and implementation.


  • Interfaces/IWebFramePrivate.idl:
  • Interfaces/IWebIconFetcher.idl: Added.
  • Interfaces/WebKit.idl:
  • WebFrame.cpp:
  • WebFrame.h:
  • WebIconFetcher.cpp: Added.
  • WebIconFetcher.h: Added.
  • WebKit.vcproj/WebKit.vcproj:
08:23 Changeset [34077] by hausmann@webkit.org
  • 2 edits in trunk/WebKit/qt

2008-05-21 Siraj Razick <siraj.razick@collabora.co.uk>

Reviewed by Simon.

Add <param name="classid"/> support for application/x-qt-object plugins

07:24 Changeset [34076] by hausmann@webkit.org
  • 3 edits in trunk/WebCore

2008-05-23 Ariya Hidayat <ariya.hidayat@trolltech.com>

Reviewed by Simon.

For Qt port, support painting to native Windows HDC.

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/qt/GraphicsContextQt.cpp: (WebCore::GraphicsContext::getWindowsContext): (WebCore::GraphicsContext::releaseWindowsContext):
07:23 Changeset [34075] by oliver@apple.com
  • 4 edits in trunk/JavaScriptCore

SQUIRRELFISH: JavaScript error messages are missing informative text

Reviewed by Anders

Partial fix.
Tidy up error messages, makes a couple of them provide slightly more info.
Inexplicably leads to a 1% SunSpider Progression.

04:37 Changeset [34074] by oliver@apple.com
  • 2 edits in trunk/JavaScriptCore

Fix call stack reported by profiler when entering event handlers.

Reviewed by Tim H

JSObject::call was arbitrarily notifying the profiler when it was
called, even if it was JS code, which notifies the profile on entry
in any case.

03:43 Changeset [34073] by mjs@apple.com
  • 3 edits
    2 adds in trunk

JavaScriptCore:

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

Reviewed by Oliver.


  • fixed <rdar://problem/5957662> REGRESSION(r33943-r33980): Can't send email , attach file or save as draft from hotmail.com
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::CodeGenerator): Delete any existing properties before creating the function (this should really be done at execution time not codegen time).

LayoutTests:

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

Reviewed by Oliver.


  • test case <rdar://problem/5957662> REGRESSION(r33943-r33980): Can't send email , attach file or save as draft from hotmail.com
  • fast/js/function-redefinition-expected.txt: Added.
  • fast/js/function-redefinition.html: Added.
03:12 Changeset [34072] by timothy@apple.com
  • 5 edits in trunk/WebCore

Fixes a bug where the Inspector could have 0ms timers firing
even after it is closed.

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

Reviewed by Oliver Hunt.

  • page/inspector/DatabasesPanel.js: Removes setTimeouts that call

the same function with a 0ms delay. These we not doing any good anyway,
so they weren't needed and just caused problems.

  • page/inspector/ElementsPanel.js: Ditto.
  • page/inspector/ProfilesPanel.js: Ditto.
  • page/inspector/ResourcesPanel.js: Ditto.
02:54 Changeset [34071] by alp@webkit.org
  • 2 edits in trunk/JavaScriptCore

+2008-05-16 Alp Toker <alp@nuanti.com>

Build fix for gcc 3. Default constructor required in ExecState,
used by OldInterpreterExecState.

  • kjs/ExecState.h: (KJS::ExecState::ExecState):
02:41 Changeset [34070] by timothy@apple.com
  • 4 edits in trunk/WebCore

Make the Inspector correctly populate the profiles when
closed and re-opened.

Reviewed by Adam Roben.

  • page/InspectorController.cpp:

(WebCore::InspectorController::populateScriptObjects): Call populateInterface
in inspector.js.

  • page/inspector/ProfilesPanel.js:

(WebInspector.ProfilesPanel.prototype.populateInterface): If visible,
call _populateProfiles. Else just set this._shouldPopulateProfiles to true.
(WebInspector.ProfilesPanel.prototype.reset): Don't call _populateProfiles.
Just set this._shouldPopulateProfiles to true.
(WebInspector.ProfilesPanel.prototype._populateProfiles): Delete
this._shouldPopulateProfiles.

  • page/inspector/inspector.js:

(WebInspector.populateInterface): Added. Call populateInterface on all the
panels if they implement it.

02:38 Changeset [34069] by mrowe@apple.com
  • 5 edits in trunk

Fix <rdar://problem/5954997> global-recursion-on-full-stack.html crashes under guardmalloc.

Growing the register file with uncheckedGrow from within Machine::execute is not safe as the
register file may be too close to its maximum size to grow successfully. By using grow,
checking the result and throwing a stack overflow error we can avoid crashing.

Reviewed by Oliver Hunt.

  • VM/Machine.cpp:

(KJS::Machine::execute):

  • VM/RegisterFile.h: Remove the now-unused uncheckedGrow.
02:32 Changeset [34068] by kmccullough@apple.com
  • 6 edits in trunk/WebCore

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

RS = Adam.

Editorial changes

  • manual-tests/inspector/profiler-test-apply.html:
  • manual-tests/inspector/profiler-test-document-dot-write.html:
  • manual-tests/inspector/profiler-test-execution-context-and-eval-on-same-line.html:
  • manual-tests/inspector/profiler-test-one-execution-context.html:
  • manual-tests/inspector/profiler-test-two-execution-contexts.html:
02:07 Changeset [34067] by oliver@apple.com
  • 4 edits in trunk/JavaScriptCore

Remove JAVASCRIPT_PROFILER define

RS=Kevin McCullough

02:01 Changeset [34066] by timothy@apple.com
  • 2 edits in trunk/WebCore

Fixes the bug where the profile was not added when finished.

<rdar://problem/5958851> Stop Profiling from the Develop menu does
not add the Profile to the Inspector

Reviewed by Adam Roben.

  • page/InspectorController.cpp:

(WebCore::InspectorController::stopUserInitiatedProfiling): Call
addProfile with the result of stopProfiling.

01:56 Changeset [34065] by oliver@apple.com
  • 5 edits in trunk/JavaScriptCore

<rdar://problem/5951561> Turn on JavaScript Profiler

Reviewed by Kevin McCullough

Flipped the switch on the profiler, rearranged how we
signal the the profiler is active so that calls aren't
needed in the general case.

Also fixed the entry point for Machine::execute(FunctionBodyNode..)
to correctly indicate function exit.

Results in a 0.7-1.0% regression in SunSpider :-(

01:35 Changeset [34064] by timothy@apple.com
  • 2 edits in trunk/WebCore

Tweak the Web Insector toolbar look to be smaller when attached to
the inspected page.

Reviewed by Adam Roben.

  • page/inspector/inspector.css:
01:03 Changeset [34063] by timothy@apple.com
  • 2 edits in trunk/WebKit/mac

Fix attaching and detaching the Web Inspector. This change removes
the clunky animation that never looked right and was causing issues
where the inspected WebView would get into a no useable state.

<rdar://problem/5958812> Attaching and Detaching the Web Inspector
can cause the inspected WebVIew to be unusable

Reviewed by Adam Roben.

  • WebCoreSupport/WebInspectorClient.mm:

(-[WebInspectorWindowController close]): Removes animation code.
Sets the frame directly and does a displayIfNeeded to prevent
showing the Inspector in the page and in the Inspector window.
(-[WebInspectorWindowController showWindow:]): Removes animation code.
Sets the frame directly.
(-[WebInspectorWindowController attach]): Simplified.
(-[WebInspectorWindowController detach]): Ditto.

00:58 Changeset [34062] by hausmann@webkit.org
  • 4 edits in trunk

Fix the Qt build by adding profiler/ to the include path and providing
an empty stub for AXObjectCache::handleAriaRoleChanged to build without
accessibility.

00:05 Changeset [34061] by alice.liu@apple.com
  • 3 edits in trunk/WebCore

2008-05-23 Alice Liu <alice.liu@apple.com>

Reviewed by Mark Rowe.

Remove call to function whose body was commented out. Returning the
children for a menu button by the normal calculation works just as well.

  • page/AccessibilityRenderObject.cpp: (WebCore::AccessibilityRenderObject::addChildren):
  • page/AccessibilityRenderObject.h:

05/22/08:

23:57 Changeset [34060] by kmccullough@apple.com
  • 4 edits in trunk/JavaScriptCore

2008-05-22 Kevin McCullough <kmccullough@apple.com>

Reviewed by Adam.

Fix a bug in the profiler where time in the current function is given to
(idle).

  • profiler/Profile.cpp: (KJS::Profile::didExecute): Set the start time and then call didExecute to calculate the time spent in this function.
  • profiler/ProfileNode.cpp: Remove confusing calculations that are no longer necessary. (KJS::ProfileNode::insertNode):
  • profiler/ProfileNode.h: Expose access to the start time to allow the simpler time calculations above. (KJS::ProfileNode::startTime): (KJS::ProfileNode::setStartTime):
23:57 Changeset [34059] by timothy@apple.com
  • 3 edits in trunk/WebCore

Fixes the bug where resource would show up multiple times in the
Inspector. This happened when a resource was used multiple times or
when the preloader was scanning ahead to fetch resources.

<rdar://problem/5689373> Cached resources re-appear in Web Inspector
for each access (18223)

Reviewed by Adam Roben.

  • page/InspectorController.cpp:

(WebCore::InspectorController::addResource): Add the URL to m_knownResources.
(WebCore::InspectorController::removeResource): Remove the URL from m_knownResources
(WebCore::InspectorController::didLoadResourceFromMemoryCache): If the URL
is in m_knownResources, then early return.

  • page/InspectorController.h: Added m_knownResources.
23:44 Changeset [34058] by alice.liu@apple.com
  • 8 edits in trunk/WebCore

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

Reviewed by Adele, Dan Bernstein.

Fixed <rdar://problem/5943104> Need to implement ARIA role="menu" and related roles
<rdar://problem/5943132> Need to implement ARIA role="menuitem"
<rdar://problem/5943173> Need to implement ARIA role="menubar"

These changes added a handler for determining the ARIA role when the
attribute changes. Before we were querying for the attribute over and
over every time we queried for the role.

  • dom/Element.cpp: (WebCore::Element::attributeChanged):
  • page/AXObjectCache.cpp: (WebCore::AXObjectCache::handleAriaRoleChanged):
  • page/AXObjectCache.h:

The rest of these changes implement menu, menuitem, and menubar. the last 2 of those
have to, for now, be represented as a Group and MenuButton instead, because AppKit
won't recognize menubar and menubaritems within apps.

  • page/AccessibilityObject.h: (WebCore::AccessibilityObject::isMenuRelated): (WebCore::AccessibilityObject::isMenu): (WebCore::AccessibilityObject::isMenuBar): (WebCore::AccessibilityObject::isMenuButton): (WebCore::AccessibilityObject::isMenuItem):
  • page/AccessibilityRenderObject.cpp: (WebCore::AccessibilityRenderObject::AccessibilityRenderObject): (WebCore::AccessibilityRenderObject::parentObject): (WebCore::AccessibilityRenderObject::isMenuRelated): (WebCore::AccessibilityRenderObject::isMenu): (WebCore::AccessibilityRenderObject::isMenuBar): (WebCore::AccessibilityRenderObject::isMenuButton): (WebCore::AccessibilityRenderObject::isMenuItem): (WebCore::siblingWithAriaRole): (WebCore::AccessibilityRenderObject::menuElementForMenuButton): (WebCore::AccessibilityRenderObject::menuForMenuButton): (WebCore::AccessibilityRenderObject::menuItemElementForMenu): (WebCore::AccessibilityRenderObject::menuButtonForMenu): (WebCore::AccessibilityRenderObject::title): (WebCore::AccessibilityRenderObject::accessibilityShouldUseUniqueId): (WebCore::AccessibilityRenderObject::accessibilityIsIgnored): (WebCore::RoleEntry::): (WebCore::AccessibilityRenderObject::determineAriaRoleAttribute): (WebCore::AccessibilityRenderObject::setAriaRole): (WebCore::AccessibilityRenderObject::ariaRoleAttribute): (WebCore::AccessibilityRenderObject::addChildren): (WebCore::AccessibilityRenderObject::ariaMenuButtonChildren):
  • page/AccessibilityRenderObject.h:
  • page/mac/AccessibilityObjectWrapper.mm: (-[AccessibilityObjectWrapper accessibilityActionNames]): (-[AccessibilityObjectWrapper accessibilityAttributeNames]): (-[AccessibilityObjectWrapper roleDescription]): (-[AccessibilityObjectWrapper accessibilityAttributeValue:]): (-[AccessibilityObjectWrapper accessibilityParameterizedAttributeNames]):
23:43 Changeset [34057] by aroben@apple.com
  • 2 edits in trunk/WebCore

Make top-level resources show their full URLs again instead of just "/"

Reviewed by Tim Hatcher.

  • page/inspector/Resource.js: (WebInspector.Resource.prototype.displayName): If the title has gotten down to just "/", which will happen for, e.g., http://webkit.org/, just show the entire URL.
23:12 Changeset [34056] by timothy@apple.com
  • 7 edits in trunk/WebCore

Shorten URLs shown in the Web Inspector to the file name. This makes
finding files in the Console or the Scripts panel easier.

Reviewed by Adam Roben.

  • page/inspector/Console.js:

(WebInspector.ConsoleMessage.prototype.get shortURL): Removed dead code.
(WebInspector.ConsoleMessage.prototype.toMessageElement): Call WebInspector.displayNameForURL
for the URL before making the link element.

  • page/inspector/ProfileView.js:

(WebInspector.ProfileDataGridNode.prototype.createCell): Use WebInspector.displayNameForURL.

  • page/inspector/Resource.js:

(WebInspector.Resource.prototype.get displayName): Use trimURL to
trim the URL with the main resource's domain.

  • page/inspector/ScriptsPanel.js:

(WebInspector.ScriptsPanel.prototype._addScriptToFilesMenu): Use WebInspector.displayNameForURL.

  • page/inspector/StylesSidebarPane.js:

(WebInspector.StylePropertiesSection): Ditto.

  • page/inspector/inspector.js:

(WebInspector.displayNameForURL): Added.
(WebInspector.resourceForURL): Check for a direct match in resourceURLMap first.

23:09 Changeset [34055] by aroben@apple.com
  • 4 edits
    1 add in trunk/WebCore

Fix Bug 19204: Inspector should highlight source lines when following links to them

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

Reviewed by Tim Hatcher.

Test: manual-tests/inspector/highlight-source-line.html

  • manual-tests/inspector/highlight-source-line.html: Added.
  • page/inspector/ResourcesPanel.js: (WebInspector.ResourcesPanel.prototype.showResource): Call highlightLine on the view if that function exists.
  • page/inspector/SourceFrame.js: (WebInspector.SourceFrame.prototype.highlightLine): Added. Adds the webkit-highlighted-line class to the relevant line, then removes it after a short delay. (WebInspector.SourceFrame.prototype._loaded): Added styles for the highlighted line(s).
  • page/inspector/SourceView.js: (WebInspector.SourceView.prototype.highlightLine): Added. Calls through to the SourceFrame.
23:09 Changeset [34054] by aroben@apple.com
  • 2 edits in trunk/JavaScriptCore

Show "(Function object)" instead of "(JSInpectorCallbackWrapper object)" in profiles

Reviewed by Kevin McCullough.

  • profiler/Profiler.cpp: (KJS::createCallIdentifier): Use JSObject::className instead of getting the class name from the ClassInfo directly. JSObject subclasses can override className to provide a custom class name, and it seems like we should honor that.
23:08 Changeset [34053] by rwlbuis@webkit.org
  • 20 edits in trunk/WebCore

Reviewed by Eric.

https://bugs.webkit.org/show_bug.cgi?id=12053
SVGPathSeg*(Abs|Rel) classses should be combined to reduce code size

Reduce code size through shared base classes.

22:49 Changeset [34052] by alp@webkit.org
  • 3 edits in trunk/WebCore

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

GTK+/DirectFB build fix attempt.

  • plugins/PluginDatabase.cpp: (WebCore::PluginDatabase::isPreferredPluginDirectory):
  • plugins/gtk/PluginDatabaseGtk.cpp: (WebCore::PluginDatabase::isPreferredPluginDirectory):
22:15 Changeset [34051] by timothy@apple.com
  • 9 edits
    4 adds in trunk

Adds Focus, Exclude and Restore buttons to the Profile view
Status bar. Also adds a Record button to create new profiles.

<rdar://problem/5950867> JSProfiler: Allow the profiler to "Focus" a profile node.
<rdar://problem/5951529> JSProfiler: Allow the profiler to "Exclude" a profile node.

Reviewed by Adam Roben.

  • English.lproj/localizedStrings.js: Added new strings.
  • page/JavaScriptProfile.cpp:

(WebCore::restoreAll): Call Profile::restoreAll.
(WebCore::ProfileClass): Added restoreAll to the static functions.

  • page/inspector/Images/excludeButtons.png: Added.
  • page/inspector/Images/focusButtons.png: Added.
  • page/inspector/Images/recordButtons.png: Added.
  • page/inspector/Images/reloadButtons.png: Added.
  • page/inspector/ProfileView.js:

(WebInspector.ProfileView): Create the buttons elements.
(WebInspector.ProfileView.prototype.get statusBarItems): Return the three
status bar buttons.
(WebInspector.ProfileView.prototype.refresh): Only create ProfileDataGridNodes
for ProfileNodes that are visible.
(WebInspector.ProfileView.prototype.refreshShowAsPercents): Just call
refresh on the children, now that they have access to the ProfileView's properties.
(WebInspector.ProfileView.prototype._focusClicked): Call focus
on the profile, refresh the ProfileView and show the reset button.
(WebInspector.ProfileView.prototype._excludeClicked): Call exclude
on the profile, refresh the ProfileView and show the reset button.
(WebInspector.ProfileView.prototype._resetClicked): Call restoreAll
on the profile, refresh the ProfileView and hide the reset button.
(WebInspector.ProfileView.prototype._dataGridNodeSelected): Enable the
focus and exclude buttons.
(WebInspector.ProfileView.prototype._dataGridNodeDeselected): Disable the
focus and exclude buttons.
(WebInspector.ProfileDataGridNode): Take a ProfileView, and remove the
showPercentAs* arguments.

  • page/inspector/ProfilesPanel.js: Add a record status bar button and

th ability to have per-view status bar buttons.

  • page/inspector/inspector.css: New styles.
22:10 Changeset [34050] by mrowe@apple.com
  • 2 edits in trunk/WebCore

<rdar://problem/5956612> ibtool crashes during build

SCDynamicStoreCreate will return null if it cannot create a dynamic store object. We need
to check for failure rather than continuing with a null store as this results in us
passing a null CFRunLoopSourceRef to CFRunLoopAddSource, which promptly crashes.

Reviewed by Tim Hatcher.

  • platform/network/mac/NetworkStateNotifierMac.cpp:

(WebCore::NetworkStateNotifier::NetworkStateNotifier): Null check SCDynamicStoreCreate and
SCDynamicStoreCreateRunLoopSource as it is possible for them to fail.

21:39 Changeset [34049] by alp@webkit.org
  • 2 edits in trunk/JavaScriptCore

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

GTK+ build fix. Add JavaScriptCore/profiler to include path.

  • GNUmakefile.am:
21:32 Changeset [34048] by aroben@apple.com
  • 2 edits in trunk/JavaScriptCore

Implement sub-millisecond profiling on Windows

Reviewed by Kevin McCullough.

  • profiler/ProfileNode.cpp: (KJS::getCount): Added. On Windows, we use QueryPerformanceCounter. On other platforms, we use getCurrentUTCTimeWithMicroseconds. (KJS::ProfileNode::endAndRecordCall): Use getCount instead of getCurrentUTCTimeWithMicroseconds. (KJS::ProfileNode::startTimer): Ditto.
21:32 Changeset [34047] by aroben@apple.com
  • 3 edits
    1 add in trunk

Fix a profiler assertion when calling a NodeList as a function

JavaScriptCore:

Fix a profiler assertion when calling a NodeList as a function

Reviewed by Kevin McCullough.

  • profiler/Profiler.cpp: (KJS::createCallIdentifier): Don't assert when a non-function object is called as a function. Instead, build up a CallIdentifier using the object's class name.

WebCore:

Add a test for calling a NodeList as a function while profiling

Reviewed by Kevin McCullough.

  • manual-tests/inspector/profiler-test-call-nodelist-as-function.html: Added.
20:49 Changeset [34046] by kmccullough@apple.com
  • 1 edit
    6 adds in trunk/WebCore

2008-05-22 Kevin McCullough <kmccullough@apple.com>

Rubber stamped by Adam.

-Added new profiler tests.

  • manual-tests/inspector/profiler-test-calling-the-function-that-started-the-profiler-from-another-scope.html: Added.
  • manual-tests/inspector/profiler-test-constructor.html: Added.
  • manual-tests/inspector/profiler-test-document-dot-write.html: Added.
  • manual-tests/inspector/profiler-test-simple-no-level-change.html: Added.
  • manual-tests/inspector/profiler-test-throw-exception-from-eval.html: Added.
  • manual-tests/inspector/profiler-test-window-dot-eval.html: Added.
20:46 Changeset [34045] by kmccullough@apple.com
  • 4 edits in trunk/WebCore

2008-05-22 Kevin McCullough <kmccullough@apple.com>

Reviewed by Tim.

<rdar://problem/5951529> JSProfiler: Allow the profiler to "Exclude" a
profile node.
-Expose the 'exclude' function to the WebInspector.
-Also fix a bug with 'focus' and expose whether or not a node is visible

  • page/JavaScriptProfile.cpp: Renamed profileClass to have a capital P. (WebCore::getTitleCallback): (WebCore::getHeadCallback): (WebCore::focus): Now correctly compares against a ProfileNodeClass instead of ProfileClass. (WebCore::exclude): Expose 'exclude' function to the WebInspector. (WebCore::ProfileClass): (WebCore::toJS):
  • page/JavaScriptProfileNode.cpp: Declare the ProfileNodeClass in the header so that ProfileClass can use it. (WebCore::getVisible): Expose a node's visiblity to the WebInspector. (WebCore::ProfileNodeClass):
  • page/JavaScriptProfileNode.h:
19:39 Changeset [34044] by aroben@apple.com
  • 4 edits in trunk/WebKit/win

Add functions to IWebInspector to start/stop profiling/debugging

<rdar://5956403>

Reviewed by Jon Honeycutt.

  • Interfaces/IWebInspector.idl:
  • WebInspector.cpp: (WebInspector::isDebuggingJavaScript): (WebInspector::toggleDebuggingJavaScript): (WebInspector::isProfilingJavaScript): (WebInspector::toggleProfilingJavaScript):
  • WebInspector.h:
18:03 Changeset [34043] by kmccullough@apple.com
  • 6 edits in trunk/JavaScriptCore

2008-05-22 Kevin McCullough <kmccullough@apple.com>

Reviewed by Darin.

<rdar://problem/5951529> JSProfiler: Allow the profiler to "Exclude" a
profile node.
-Implement 'exclude'; where the excluded node attributes its time to its
parent's self time.

  • JavaScriptCore.exp: Export the exclude function.
  • profiler/Profile.h: (KJS::Profile::exclude):
  • profiler/ProfileNode.cpp: (KJS::ProfileNode::setTreeVisible): New function that allows a change in visiblitiy to be propogated to all the children of a node. (KJS::ProfileNode::exclude): If the node matches the callIdentifier then set the visiblity of this node and all of its children to false and attribute it's total time to it's caller's self time.
  • profiler/ProfileNode.h:
17:45 Changeset [34042] by mrowe@apple.com
  • 2 edits in trunk/JavaScriptCore

Fix access to static global variables in Windows release builds.

Reviewed by Oliver Hunt.

  • kjs/JSGlobalObject.h: Don't store a reference to an Identifier

in GlobalPropertyInfo as the Identifier is likely to be a temporary
and therefore may be destroyed before the GlobalPropertyInfo.

17:41 Changeset [34041] by weinig@apple.com
  • 7 edits
    7 adds in trunk

WebCore:

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

Reviewed by Anders Carlsson.

<rdar://problem/5838772> Support cross-site XMLHttpRequest

  • Implement support for cross-site non-GET requests using the HTTP header Access-control mechanism.

Tests: http/tests/xmlhttprequest/access-control-basic-allow-async.html

http/tests/xmlhttprequest/access-control-basic-not-get-allow-async.html
http/tests/xmlhttprequest/access-control-basic-not-get-allow.html

  • xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::XMLHttpRequest): (WebCore::XMLHttpRequest::send): Don't continue send if inside the method check preflight (only happens for async).


(WebCore::XMLHttpRequest::crossSiteAccessRequest):
Add support for non-GET requests, starting off a method check preflight.

(WebCore::XMLHttpRequest::handleAsynchronousMethodCheckResult):
Handler for finishing up after an asynchronous method check has completed.

(WebCore::XMLHttpRequest::didFinishLoading):
(WebCore::XMLHttpRequest::didFinishLoadingMethodCheck):
(WebCore::XMLHttpRequest::didReceiveResponse):
(WebCore::XMLHttpRequest::didReceiveResponseMethodCheck):
(WebCore::XMLHttpRequest::didReceiveData):
Do a limited set of access control when in the method check preflight.

  • xml/XMLHttpRequest.h:

LayoutTests:

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

Reviewed by Anders Carlsson.

<rdar://problem/5838772> Support cross-site XMLHttpRequest

  • Add more tests for cross-domain XHR.
  • http/tests/xmlhttprequest/access-control-basic-allow-access-control-origin-header.html:
  • http/tests/xmlhttprequest/access-control-basic-allow-async-expected.txt: Added.
  • http/tests/xmlhttprequest/access-control-basic-allow-async.html: Added.
  • http/tests/xmlhttprequest/access-control-basic-denied.html:
  • http/tests/xmlhttprequest/access-control-basic-exclude.html:
  • http/tests/xmlhttprequest/access-control-basic-not-get-allow-async-expected.txt: Added.
  • http/tests/xmlhttprequest/access-control-basic-not-get-allow-async.html: Added.
  • http/tests/xmlhttprequest/access-control-basic-not-get-allow-expected.txt: Added.
  • http/tests/xmlhttprequest/access-control-basic-not-get-allow.html: Added.
  • http/tests/xmlhttprequest/resources/access-control-basic-non-get-allow.cgi: Added.
16:30 Changeset [34040] by timothy@apple.com
  • 2 edits in trunk/WebCore

Make sure we don't call findTreeElement with the same representedObject
again, to prevent infinite recursion. Added many comments to this
code so it can be understood later.

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

Reviewed by Adam Roben.

  • page/inspector/treeoutline.js:
15:48 Changeset [34039] by timothy@apple.com
  • 3 edits in trunk/WebCore

Re-word the "Attach Debugger" overlay to never say "Attach". The new
wording is "Start Debugging". This makes the overlay consistent with
other wording used for starting the debugger. Also fixes the tooltips
for the Pause on Exceptions button.

Reviewed by Adam Roben and Dan Bernstein.

  • English.lproj/localizedStrings.js: Adds new strings.
  • page/inspector/ScriptsPanel.js: Changes the wording. Flips the

tooltips for the Pause on Exceptions buttons so the tooltip says
what will happen when the button is pressed.

15:48 Changeset [34038] by timothy@apple.com
  • 3 edits in trunk/WebCore

Remove some non-functional elements from the Scripts panel
so they don't confuse users why they aren't working.

Reviewed by Adam Roben.

  • page/inspector/ScriptsPanel.js: Removes the back/forward buttons

and the function menu.

  • page/inspector/inspector.css: Make the files menu wider since there

is more room now.

15:22 Changeset [34037] by kmccullough@apple.com
  • 2 edits in trunk/JavaScriptCore

2008-05-22 Kevin McCullough <kmccullough@apple.com>

Build fix.

  • VM/Machine.cpp: (KJS::callEval):
15:09 Changeset [34036] by kmccullough@apple.com
  • 8 edits in trunk/JavaScriptCore

2008-05-22 Kevin McCullough <kmccullough@apple.com>

Reviewed by Sam.

<rdar://problem/5951561> Turn on JavaScript Profiler
Get basic JS profiling working.
Even with this patch the profiler will not be compiled in because we do
not know the extend, if any, of the performance regression it would cause
when it is not in use. However with these changes, if the profiler were
on, it would not crash and show good profiling data.

  • VM/Machine.cpp: Instrument the calls sites that are needed for profiling. (KJS::callEval): (KJS::Machine::unwindCallFrame): (KJS::Machine::execute): (KJS::Machine::privateExecute):
  • kjs/function.cpp: Ditto. (KJS::globalFuncEval):
  • kjs/interpreter.cpp: Ditto. (KJS::Interpreter::evaluate):
  • profiler/Profile.cpp: (KJS::Profile::willExecute): (KJS::Profile::didExecute): Because we do not get a good context when startProfiling is called it is possible that m_currentNode will be at the top of the known stack when a didExecute() is called. What we then do is create a new node that represents the function being exited and insert it between the head and the currently known children, since they should be children of this new node.
  • profiler/ProfileNode.cpp: (KJS::ProfileNode::ProfileNode): (KJS::ProfileNode::willExecute): Rename the add function for consistency. (KJS::ProfileNode::addChild): Appends the child to this node but also sets the parent pointer of the children to this node. (KJS::ProfileNode::insertNode): Insert a node between this node and its children. Also set the time for the new node since it is now exiting and we don't really know when it started. (KJS::ProfileNode::stopProfiling): (KJS::ProfileNode::startTimer):
  • profiler/ProfileNode.h: (KJS::CallIdentifier::toString): Added for debugging. (KJS::ProfileNode::setParent): (KJS::ProfileNode::setSelfTime): Fixed an old bug where we set the visibleTotalTime not the visibleSelfTime. (KJS::ProfileNode::children): (KJS::ProfileNode::toString): Added for debugging.
  • profiler/Profiler.cpp: remove unecessary calls. (KJS::Profiler::startProfiling):
15:05 Changeset [34035] by andersca@apple.com
  • 5 edits
    4 copies in trunk/WebCore

Roll out 34034, it broke the build.

14:17 Changeset [34034] by jchaffraix@webkit.org
  • 5 edits
    4 deletes in trunk/WebCore

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

Reviewed by Eric.

Bug 9191: JS*ElementWrapperFactory should be autogenerated
https://bugs.webkit.org/show_bug.cgi?id=9191

  • Add a new parameter to make_names.pl --wrapperFactory which works like --wrapper but generates the JS*ElementWrapperFactories.
  • Added the new parameter to the different build systems.
  • Removed JS*ElementWrapperFactories in WebCore/bindings/js, replaced by the generated ones.
  • DerivedSources.make:
  • GNUmakefile.am:
  • WebCore.pro:
  • bindings/js/JSHTMLElementWrapperFactory.cpp: Removed.
  • bindings/js/JSHTMLElementWrapperFactory.h: Removed.
  • bindings/js/JSSVGElementWrapperFactory.cpp: Removed.
  • bindings/js/JSSVGElementWrapperFactory.h: Removed.
  • dom/make_names.pl:
13:39 Changeset [34033] by sfalken@apple.com
  • 5 edits in trunk/WebKit/win

2008-05-22 Steve Falkenburg <sfalken@apple.com>

Build fix.

12:55 Changeset [34032] by weinig@apple.com
  • 4 edits in trunk/JavaScriptCore

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

Reviewed by Oliver Hunt.

Rename register arguments for op_call, op_call_eval, op_end, and op_construct
to document what they are for.

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitCall): (KJS::CodeGenerator::emitCallEval): (KJS::CodeGenerator::emitEnd): (KJS::CodeGenerator::emitConstruct):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::Machine::privateExecute):
12:51 Changeset [34031] by mitz@apple.com
  • 2 edits in trunk/WebKit/mac

Reviewed by Darin Adler.

  • fix broken documentation of webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:
  • WebView/WebUIDelegate.h: Fixed method name in HeaderDoc for -webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:
12:36 Changeset [34030] by oliver@apple.com
  • 2 edits in trunk/JavaScriptCore

Bug 19116: SquirrelFish shouldn't regress on variable lookups
<https://bugs.webkit.org/show_bug.cgi?id=19116>

Reviewed by Darin.

Last of the multiscope look up optimisations. This is a wash overall on SunSpider
but is a factor of 5-10 improvement in multiscope read/write/modify (eg. ++, --, +=,
... applied to any non-local var).

12:03 Changeset [34029] by ap@webkit.org
  • 5 edits in trunk/LayoutTests

Rubber-stamped by Darin.

Fix tests failing on Tiger.

  • fast/loader/data-url-encoding-html.html:
  • fast/loader/data-url-encoding-html-expected.txt:
  • fast/loader/data-url-encoding-svg.html:
  • fast/loader/data-url-encoding-svg-expected.txt: Changed these tests to always use an explicit charset - otherwise, they were failing on Leopard because of a CFNetwork bug, and on Tiger because of WebKit bug 19193. Also, changed them to test that decoding was performed correctly, not just that document.charset matched expectations.
11:40 Changeset [34028] by ddkilzer@apple.com
  • 4 edits in trunk/JavaScriptCore

<rdar://problem/5954233> Add method to release free memory from FastMalloc

Patch suggested by Mark Rowe. Rubber-stamped by Maciej.

  • JavaScriptCore.exp: Export _releaseFastMallocFreeMemory.
  • wtf/FastMalloc.cpp: (WTF::TCMallocStats::): Added releaseFastMallocFreeMemory() for both system malloc and FastMalloc code paths.
  • wtf/FastMalloc.h: Define releaseFastMallocFreeMemory().
11:37 Changeset [34027] by timothy@apple.com
  • 18 edits in trunk

<rdar://problem/5956403> Update the Develop menu to match the new Inspector items

11:27 Changeset [34026] by andersca@apple.com
  • 7 edits in trunk

WebCore:

2008-05-22 Josh Aas <joshmoz@gmail.com>

Reviewed by Anders.

<rdar://problem/5956429>
https://bugs.webkit.org/show_bug.cgi?id=19192
remove NPNVpluginEventModel, fix example plugin


Remove NPNVpluginEventModel enum variable.


  • bridge/npapi.h:

WebKit/mac:

2008-05-22 Josh Aas <joshmoz@gmail.com>

Reviewed by Anders.

<rdar://problem/5956429>
https://bugs.webkit.org/show_bug.cgi?id=19192
remove NPNVpluginEventModel, fix example plugin


  • Plugins/WebBaseNetscapePluginView.mm: (-[WebBaseNetscapePluginView getVariable:value:]):

WebKitExamplePlugins:

2008-05-22 Josh Aas <joshmoz@gmail.com>

Reviewed by Anders.

Use correct enum.


  • NetscapeCocoaPlugin/main.m: (NPP_New):
  • NetscapeInputMethodPlugin/main.m: (NPP_New):
11:26 Changeset [34025] by andersca@apple.com
  • 5 edits
    3 adds in trunk/WebKit

..:

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

Reviewed by Maciej.

Add WebIconFetcher files.


  • WebKit.xcodeproj/project.pbxproj:

../mac:

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

Reviewed by Maciej.

Add WebIconFetcher.


  • Misc/WebIconFetcher.h: Added.
  • Misc/WebIconFetcher.mm: Added. (WebIconFetcherClient::WebIconFetcherClient): (WebIconFetcherClient::finishedFetchingIcon): (WebIconFetcherClient::setFetcher): (-[WebIconFetcher init]): (-[WebIconFetcher dealloc]): (-[WebIconFetcher finalize]): (-[WebIconFetcher cancel]): (-[WebIconFetcher _initWithIconFetcher:client:]): (+[WebIconFetcher _fetchApplicationIconForFrame:target:selector:]):
  • Misc/WebIconFetcherInternal.h: Added.
  • WebView/WebFrame.mm: (-[WebFrame fetchApplicationIcon:selector:]):
  • WebView/WebFramePrivate.h:
02:53 Changeset [34024] by oliver@apple.com
  • 2 edits in trunk/JavaScriptCore

Roll out r34020 as it causes recursion tests to fail.

RS=Maciej

02:36 Changeset [34023] by slewis@apple.com
  • 8 edits
    2 adds in trunk

2008-05-22 Stephanie Lewis <slewis@apple.com>

Reviewed by Dan.

Fix <rdar://problem/5952405>. The unbeforeunload count cannot be cleared when it is dispatched because it is possible to be called again. Clear it after the unload event is dispatched.

Test: fast/events/onunload-clears-onbeforeunload.html

  • loader/FrameLoader.cpp: (WebCore::FrameLoader::stopLoading):
  • page/Frame.cpp: (WebCore::Frame::shouldClose):

implement the beforeUnload UI delegate so that DRT will dispatch beforeunload events.

  • DumpRenderTree/mac/UIDelegate.mm: (-[UIDelegate webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:]):
  • DumpRenderTree/win/UIDelegate.cpp: (SearchableWebViewHost::runBeforeUnloadConfirmPanelWithMessage):

add test to test for beforeunload event handlers being removed after they have been fired.

  • fast/events/onunload-clears-onbeforeunload-expected.txt: Added.
  • fast/events/onunload-clears-onbeforeunload.html: Added.
02:34 Changeset [34022] by oliver@apple.com
  • 2 edits in trunk/JavaScriptCore

Don't leak the SymbolTable when compiling eval code.

Reviewed by Mark

02:07 Changeset [34021] by hausmann@webkit.org
  • 8 edits in trunk

2008-05-22 Simon Hausmann <hausmann@webkit.org>

Reviewed by Oliver.

Qt build fixes.

01:37 Changeset [34020] by ggaren@apple.com
  • 2 edits in trunk/JavaScriptCore

2008-05-22 Geoffrey Garen <ggaren@apple.com>

Reviewed by Adam Roben.


Removed the old recursion guard mechanism, since squirrelfish has its
own mechanism. Also removed some old JS call tracing code, since we
have other ways to do that, too.


SunSpider reports no change.

  • kjs/object.cpp: (KJS::JSObject::call):
01:19 Changeset [34019] by aroben@apple.com
  • 2 edits in trunk/WebCore

Massively speed up date-format-tofte with the debugger attached

On a debug Windows build (I know, hardly a good testcase) this patch
makes this test run 57.25x as fast.

Reviewed by Mark Rowe.

  • page/inspector/ScriptsPanel.js: (WebInspector.ScriptsPanel.prototype.reset): Clear the _scriptsForURLsInFilesSelect object. (WebInspector.ScriptsPanel.prototype._showScriptOrResource): Instead of looping over all the options in the select to find the option we want, get the script object from _scriptsForURLsInFilesSelect and get the option element from the script object. (WebInspector.ScriptsPanel.prototype._addScriptToFilesMenu): Use _scriptsForURLsInFilesSelect to cache the script objects. Store the option element for each script on the script object so we can quickly retrieve it later.
01:18 Changeset [34018] by aroben@apple.com
  • 2 edits in trunk/WebCore

Remove some dead code from ScriptsPanel.js

Reviewed by Mark Rowe.

  • page/inspector/ScriptsPanel.js:
01:17 Changeset [34017] by mjs@apple.com
  • 3 edits
    2 adds in trunk

JavaScriptCore:

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

Reviewed by Oliver.


  • fixed <rdar://problem/5954979> crash on celtic kane JS benchmark
  • kjs/nodes.cpp: (KJS::WithNode::emitCode): (KJS::TryNode::emitCode):

LayoutTests:

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

Reviewed by Oliver.


  • test case for <rdar://problem/5954979> crash on celtic kane JS benchmark
  • fast/js/try-catch-crash-expected.txt: Added.
  • fast/js/try-catch-crash.html: Added.
00:27 Changeset [34016] by mrowe@apple.com
  • 4 edits in tags/Safari-6526.7

Versioning.

00:21 Changeset [34015] by mrowe@apple.com
  • 2 edits in tags/Safari-6526.7.1/WebKit/mac

Merge r33971.

00:20 Changeset [34014] by mrowe@apple.com
  • 1 copy in tags/Safari-6526.7.1

New tag.

05/21/08:

23:21 Changeset [34013] by kmccullough@apple.com
  • 7 edits in trunk/JavaScriptCore

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

Reviewed by Maciej and Geoff.

<rdar://problem/5951561> Turn on JavaScript Profiler
-As part of the effort to turn on the profiler it would be helpful if it
did not need ExecStates to represent the stack location of the currently
executing statement.
-We now create each node as necessary with a reference to the current
node and each node knows its parent so that the tree can be made without
the entire stack.

  • profiler/Profile.cpp: (KJS::Profile::Profile): The current node starts at the head. (KJS::Profile::stopProfiling): The current node is cleared when profiling stops. (KJS::Profile::willExecute): The current node either adds a new child or starts and returns a reference to an already existing child if the call ID that is requested already exists. (KJS::Profile::didExecute): The current node finishes and returns its parent.
  • profiler/Profile.h: Use a single callIdentifier instead of a vector since we no longer use the whole stack.
  • profiler/ProfileNode.cpp: Now profile nodes keep a reference to their parent. (KJS::ProfileNode::ProfileNode): Initialize the parent. (KJS::ProfileNode::didExecute): Record the time and return the parent. (KJS::ProfileNode::addOrStartChild): If the given callIdentifier is already a child, start it and return it, otherwise create a new one and return that. (KJS::ProfileNode::stopProfiling): Same logic, just use the new function.
  • profiler/ProfileNode.h: Utilize the parent. (KJS::ProfileNode::create): (KJS::ProfileNode::parent):
  • profiler/Profiler.cpp: (KJS::Profiler::startProfiling): Here is the only place where the ExecState is used to figure out where in the stack the profiler is currently profiling. (KJS::dispatchFunctionToProfiles): Only send one CallIdentifier instead of a vector of them. (KJS::Profiler::willExecute): Ditto. (KJS::Profiler::didExecute): Ditto. (KJS::createCallIdentifier): Create only one CallIdentifier. (KJS::createCallIdentifierFromFunctionImp): Ditto.
  • profiler/Profiler.h:
22:59 Changeset [34012] by aroben@apple.com
  • 3 edits in trunk/WebCore

Fix Bug 19178: Inspector should support sorting resources by latency

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

I replaced "Sort by Time" with the following sorting options:

  • Sort by Start Time
  • Sort by Response Time
  • Sort by End Time
  • Sort by Duration
  • Sort by Latency

You can no longer sort by Size when looking at the Time graph, and you
can't use any of the time-based sorting functions when looking at the
Size graph.

Reviewed by Tim Hatcher.

  • page/inspector/Resource.js: (WebInspector.Resource.prototype.get duration): Added. (WebInspector.Resource.prototype.get latency): Added. (WebInspector.Resource.CompareByStartTime): Added. (WebInspector.Resource.CompareByResponseReceivedTime): Added. (WebInspector.Resource.CompareByEndTime): Added. (WebInspector.Resource.CompareByDuration): Added. (WebInspector.Resource.CompareByLatency): Added.
  • page/inspector/ResourcesPanel.js: (WebInspector.ResourcesPanel):
    • Each graph sidebar item now holds a list of sorting options
    • Graph sidebar items no longer have a calculator property. This is stored on the sorting options instead, to allow each kind of sorting to have a different calculator.
    • The sortingSelectElement starts out empty, and is populated in _graphSelected
    • The sortingFunction starts out uninitialized and is set as a side-effect of _graphSelected.

(WebInspector.ResourcesPanel.prototype.set calculator): Don't do
anything if the calculator hasn't changed.
(WebInspector.ResourcesPanel.prototype.closeVisibleResource): Use the
_lastSelectedGraphTreeElement property instead of getting the graph
element from the calculator.
(WebInspector.ResourcesPanel.prototype._graphSelected):

  • Store the tree element in the _lastSelectedGraphTreeElement property
  • Popuplate sortingSelectElement with the sortingOptions and select the option that was last selected

(WebInspector.ResourcesPanel.prototype._changeSortingFunction): Set
our calculator from the sorting option.
(WebInspector.ResourceTimeCalculator): Renamed from
ResourceTransferTimeCalculator. Now takes a parameter to specify
whether the bars should all start at zero.
(WebInspector.ResourceTimeCalculator.prototype.computeBarGraphPercentages):
Take this.startAtZero into account.
(WebInspector.ResourceTimeCalculator.prototype.updateBoundries):
Abstracted the lower/upper bounds of a resource into methods.
(WebInspector.ResourceTimeCalculator.prototype._lowerBound): Added.
(WebInspector.ResourceTimeCalculator.prototype._upperBound): Added.
(WebInspector.ResourceTransferTimeCalculator): Added. This is now a
subclass of ResourceTimeCalculator
(WebInspector.ResourceTransferDurationCalculator): Added.
(WebInspector.ResourceSidebarTreeElement.CompareByAscendingStartTime): Added.
(WebInspector.ResourceSidebarTreeElement.CompareByAscendingResponseReceivedTime): Added.
(WebInspector.ResourceSidebarTreeElement.CompareByAscendingEndTime): Added.
(WebInspector.ResourceSidebarTreeElement.CompareByDescendingDuration): Added.
(WebInspector.ResourceSidebarTreeElement.CompareByDescendingLatency): Added.
(WebInspector.ResourceSidebarTreeElement.CompareByDescendingSize):
Changed to call CompareBySize.

22:59 Changeset [34011] by aroben@apple.com
  • 2 edits
    1 add in trunk/WebCore

Fix Bug 19173: Tool tips for Inspector debugger status bar buttons are wrong/missing

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

Reviewed by Tim Hatcher.

  • manual-tests/inspector/debugger-status-bar-buttons-state.html: Added.
  • page/inspector/ScriptsPanel.js: (WebInspector.ScriptsPanel.prototype._toggleDebugging): Call _clearInterface (which updates the buttons' tool tips) after attaching/detaching the debugger so that the buttons will reflect the new state. (WebInspector.ScriptsPanel.prototype._updatePauseOnExceptionsButton): Set the title of the pauseOnExceptionsButton, not the debuggingButton.
22:58 Changeset [34010] by aroben@apple.com
  • 8 edits in trunk

Fix Bug 19153: Inspector should support console.debug

WebCore:

Fix Bug 19153: Inspector should support console.debug

<https://bugs.webkit.org/show_bug.cgi?id=19153>
<rdar://problem/5950856>

Reviewed by Tim Hatcher.

Test: manual-tests/inspector/console-log-formatting.html

  • bindings/js/JSConsoleCustom.cpp: (WebCore::JSConsole::debug): Added.
  • manual-tests/inspector/console-log-formatting.html: Changed to test console.debug as well.
  • page/Console.cpp: (WebCore::Console::debug): Added. Just calls through to log().
  • page/Console.h:
  • page/Console.idl: Added debug() declaration.

LayoutTests:

Update window-properties results for new console functions

Reviewed by Tim Hatcher.

  • fast/dom/Window/window-properties-expected.txt:
22:19 Changeset [34009] by darin@apple.com
  • 2 edits in trunk/JavaScriptCore

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

Reviewed by Maciej.

Makes standalone SunSpider 1.022x faster.

  • VM/Machine.cpp: (KJS::jsLess): Add a special case for when both are numbers that fit in a JSImmediate.
22:18 Changeset [34008] by mjs@apple.com
  • 3 adds in trunk/LayoutTests/fast/frames

Check in files I forgot to last time.

22:02 Changeset [34007] by mjs@apple.com
  • 6 edits in trunk

JavaScriptCore:

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

Reviewed by Oliver and Sam.


  • fixed <rdar://problem/5815631> REGRESSION (r31239): Multiscope optimisation of function calls results in incorrect this value (breaks tvtv.de)


Track global this value in the scope chain so we can retrieve it
efficiently but it follows lexical scope properly.

  • kjs/ExecState.h: (KJS::ExecState::globalThisValue):
  • kjs/JSGlobalObject.h: (KJS::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData):
  • kjs/function_object.cpp: (KJS::FunctionObjectImp::construct):
  • kjs/scope_chain.h: (KJS::ScopeChainNode::ScopeChainNode): (KJS::ScopeChainNode::globalThisObject): (KJS::ScopeChainNode::push): (KJS::ScopeChain::ScopeChain):

LayoutTests:

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

Reviewed by Oliver and Sam.


  • tests for <rdar://problem/5815631> REGRESSION (r31239): Multiscope optimisation of function calls results in incorrect this value (breaks tvtv.de)
  • fast/frames/cross-site-this-expected.txt: Added.
  • fast/frames/cross-site-this.html: Added.
  • fast/frames/resources/cross-site-this-helper.html: Added.
21:57 Changeset [34006] by adele@apple.com
  • 10 edits in trunk

WebKit/win:

2008-05-21 Adele Peterson <adele@apple.com>

Reviewed by Adam.

WebKit part of for <rdar://problem/5787733> fast/dom/HTMLDocument/hasFocus.html fails on Windows


  • WebCoreSupport/WebChromeClient.cpp: (WebChromeClient::focus): Call updateActiveState directly. Normally this would happen on a timer, but JS might need to know this earlier, so we'll update here. (WebChromeClient::unfocus): ditto.
  • WebView.cpp: (WebView::updateActiveStateSoon): Added comment about why we use a timer for this.

WebKitTools:

2008-05-21 Adele Peterson <adele@apple.com>

Reviewed by Adam.

DumpRenderTree support for <rdar://problem/5787733> fast/dom/HTMLDocument/hasFocus.html fails on Windows

  • DumpRenderTree/win/UIDelegate.cpp: (UIDelegate::webViewFocus): Added. (UIDelegate::webViewUnfocus): Added.
  • DumpRenderTree/win/UIDelegate.h:

LayoutTests:

2008-05-21 Adele Peterson <adele@apple.com>

Reviewed by Adam.

Enhanced and enabled test for <rdar://problem/5787733> fast/dom/HTMLDocument/hasFocus.html fails on Windows


  • fast/dom/HTMLDocument/hasFocus-expected.txt:
  • fast/dom/HTMLDocument/hasFocus.html:
  • platform/win/Skipped:
21:56 Changeset [34005] by kmccullough@apple.com
  • 2 edits in trunk/WebCore

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

Reviewed by Adam.

<rdar://problem/5950867> JSProfiler: Allow the profiler to "Focus" a
profile node.

  • Expose the Profile's 'focus' ability to WebCore and the WebInspector.
  • page/JavaScriptProfile.cpp: (WebCore::focus): (WebCore::profileClass):
21:52 Changeset [34004] by kmccullough@apple.com
  • 2 edits in trunk/JavaScriptCore

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

Sadness :(

  • kjs/config.h:
21:51 Changeset [34003] by kmccullough@apple.com
  • 7 edits in trunk/JavaScriptCore

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

Reviewed by Maciej.

<rdar://problem/5950867> JSProfiler: Allow the profiler to "Focus" a
profile node.

  • This patch updatest the times of the visible nodes correctly, but to do so, some of the design of the ProfileNode changed.
  • JavaScriptCore.exp: export focus' symbol.
  • profiler/Profile.cpp: ProfileNodes now take a reference to the head of the profile tree to get up-to-date accurate total profile time. (KJS::Profile::Profile): Pass 0 for the head node. (KJS::Profile::stopProfiling): stopProfiling no longer needs the time passed into it, since it can get it from the head and it does not need to be told it is the head because it can figure it out on it's own. (KJS::Profile::willExecute): Set the head node for each created node.
  • profiler/Profile.h: (KJS::Profile::focus): Instead of taking a CallIdentifier that the caller would have to create, now focus() takes a ProfileNode that they should already have a reference to and focus() can extract the CallIdentifier from it.
  • profiler/ProfileNode.cpp: Create actual and visible versions fo the total and self times for focus and exclude. Also add a head node reference so that nodes can get information from their head. (KJS::ProfileNode::ProfileNode): (KJS::ProfileNode::stopProfiling): Rename the total and self time variables and set the visual ones to the actual ones, so that without any changes to the visual versions of these variables, their times will match the actual times. (KJS::ProfileNode::focus): Now focus() has a bool to force it's children to be visible if this node is visible. If this node does not match the CallIdentifier being focused then the visibleTotalTime is only updated if one or more of it's children is the CallIdentifier being focused. (KJS::ProfileNode::restoreAll): Restores all variables with respect to the visible data in the ProfileNode. (KJS::ProfileNode::endAndRecordCall): Name change. (KJS::ProfileNode::debugPrintData): Dump the new variables. (KJS::ProfileNode::debugPrintDataSampleStyle): Name change.
  • profiler/ProfileNode.h: Use the new variables and reference to the head node. (KJS::ProfileNode::create): (KJS::ProfileNode::totalTime): (KJS::ProfileNode::setTotalTime): (KJS::ProfileNode::selfTime): (KJS::ProfileNode::setSelfTime): (KJS::ProfileNode::totalPercent): (KJS::ProfileNode::selfPercent): (KJS::ProfileNode::setVisible):
21:50 Changeset [34002] by weinig@apple.com
  • 1 edit
    3 moves in trunk/LayoutTests

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

Review by Mark Rowe.

Change test so that its result are not different all the time.

  • http/tests/xmlhttprequest/access-control-basic-allow-access-control-origin-header-expected.txt: Copied from http/tests/xmlhttprequest/access-control-basic-allow-headers-expected.txt.
  • http/tests/xmlhttprequest/access-control-basic-allow-access-control-origin-header.html: Copied from http/tests/xmlhttprequest/access-control-basic-allow-headers.html.
  • http/tests/xmlhttprequest/access-control-basic-allow-headers-expected.txt: Removed.
  • http/tests/xmlhttprequest/access-control-basic-allow-headers.html: Removed.
  • http/tests/xmlhttprequest/resources/access-control-basic-allow-access-control-origin-header.cgi: Copied from http/tests/xmlhttprequest/resources/access-control-basic-allow-headers.cgi.
  • http/tests/xmlhttprequest/resources/access-control-basic-allow-headers.cgi: Removed.
21:33 Changeset [34001] by beidson@apple.com
  • 2 edits in trunk/LayoutTests

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

Rubberstamped by Adam

<rdar://problem/5787763> - Hang in Storage tests on windows

Since the hang was originally noticed and investigated, no one has revisited it.
Adam and I just spent some time trying to reproduce and were unable.


Lets give the bots another go, shall we?

  • platform/win/Skipped:
21:16 Changeset [34000] by mrowe@apple.com
  • 2 edits in tags/Safari-6526.7/WebKit/mac

Merge r33968.

21:14 Changeset [33999] by mrowe@apple.com
  • 4 edits in trunk

Versioning.

21:13 Changeset [33998] by mrowe@apple.com
  • 1 copy in tags/Safari-6526.7

New tag.

21:02 Changeset [33997] by mrowe@apple.com
  • 2 edits in trunk/WebKitTools

Set the pass_through flag on Getopt so that extra arguments can be passed through to Safari,
rather than trigger an unknown argument message. This allows run-webkit-tests to display results
once more.

Rubber-stamped by Stephanie Lewis.

  • Scripts/run-safari:
20:52 Changeset [33996] by oliver@apple.com
  • 2 edits in trunk/JavaScriptCore

Yet more windows builds fixes

20:46 Changeset [33995] by timothy@apple.com
  • 2 edits in trunk/WebCore

Remove the rest of the debug code inside DEBUG_DEBUGGER_CALLBACKS
since the parts the remain aren't useful.

  • page/JavaScriptDebugServer.cpp:

(WebCore::JavaScriptDebugServer::sourceParsed):

20:44 Changeset [33994] by alp@webkit.org
  • 2 edits in trunk/JavaScriptCore

2008-05-21 Alp Toker <alp@nuanti.com>

GTK+/UNIX testkjs build fix. Include signal.h.

  • kjs/testkjs.cpp:
20:41 Changeset [33993] by bdakin@apple.com
  • 2 edits in trunk/WebCore

2008-05-21 Beth Dakin <bdakin@apple.com>

Reviewed by Anders.

Fix for <rdar://problem/5848161> REGRESSION (r31438?): Crash
beneath ResourceHandle::setDefersLoading while running fast/loader/
simultaneous-reloads-assert.html (null CFURLConnection)

  • platform/network/cf/ResourceHandleCFNet.cpp: (WebCore::ResourceHandle::setDefersLoading): Added simple null- check.
20:34 Changeset [33992] by oliver@apple.com
  • 2 edits in trunk/JavaScriptCore

Yet more windows build fixes

20:31 Changeset [33991] by timothy@apple.com
  • 9 edits in trunk/WebCore

Adds the Request and Response headers to the Resource view.

<rdar://problem/5940782> REGRESSION: Resource Request and Response
headers aren't shown (18451)

Reviewed by Adam Roben.

  • English.lproj/localizedStrings.js: Added new strings.
  • css/view-source.css: Add comments to make sure a couple of

style rules stay in sync with inspector.css.

  • page/inspector/Resource.js:

(WebInspector.Resource.prototype.set url): Dispatch an event when
this property changes.
(WebInspector.Resource.prototype.set requestHeaders): Ditto.
(WebInspector.Resource.prototype.set responseHeaders): Ditto.

  • page/inspector/ResourceView.js:

(WebInspector.ResourceView): Add new elements for the headers
and a headers TreeOutline. Add event listeners for resource
property changes. Calls the three new refresh functions.
(WebInspector.ResourceView.prototype.set headersVisible): Implemented.
Toggles the headers-visible class name.
(WebInspector.ResourceView.prototype._refreshURL): Update the URL
tree element.
(WebInspector.ResourceView.prototype._refreshRequestHeaders): Call _refreshHeaders.
(WebInspector.ResourceView.prototype._refreshResponseHeaders): Ditto.
(WebInspector.ResourceView.prototype._refreshHeaders): Remove the previous
headers fromm the tree element. Loop throuh the headers and create new
tree elements and append them.

  • page/inspector/ResourcesPanel.js:

(WebInspector.ResourcesPanel.prototype._updateSidebarWidth): Call resize
on the visible view if it is implemented.

  • page/inspector/SourceFrame.js:

(WebInspector.SourceFrame.prototype.get autoSizeToFitContentHeight):
(WebInspector.SourceFrame.prototype.set autoSizeToFitContentHeight):
(WebInspector.SourceFrame.prototype.sizeToFitContentHeight):
(WebInspector.SourceFrame.prototype._loaded):
(WebInspector.SourceFrame.prototype._windowResized):

  • page/inspector/SourceView.js:

(WebInspector.SourceView): Move the SourceFrame creation so it is
available when headersVisible is set. Add a gutter element to fill
the vertical space no covered by the SourceFrame now.
(WebInspector.SourceView.prototype.set headersVisible): Set the
SourceFrame.autoSizeToFitContentHeight when this property changes.
(WebInspector.SourceView.prototype.resize): Call SourceFrame.sizeToFitContentHeight
when autoSizeToFitContentHeight is true. This happens when resizing the
Resources sidebar.

  • page/inspector/inspector.css: Add a copy of webkit-line-gutter-backdrop

and a comment to keep in sync with view-source.css. Adds other styles
for the headers area of resource-view.

20:23 Changeset [33990] by weinig@apple.com
  • 12 edits
    12 adds in trunk

WebCore:

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

Reviewed by Anders Carlsson.

<rdar://problem/5838772> Support cross-site XMLHttpRequest

  • Implement support for cross-site GET requests using the HTTP header Access-control mechanism.

Tests: http/tests/xmlhttprequest/access-control-basic-allow-headers.html

http/tests/xmlhttprequest/access-control-basic-allow.html
http/tests/xmlhttprequest/access-control-basic-denied.html
http/tests/xmlhttprequest/access-control-basic-exclude.html

  • xml/AccessControlList.cpp: (WebCore::AccessControlList::checkOrigin): Implement the list check algorithm.
  • xml/AccessControlList.h:
  • xml/AccessItem.cpp: (WebCore::AccessItem::AccessItem): (WebCore::AccessItem::matches):
  • xml/AccessItem.h: Temporarily use a SecurityOrigin as the bases of AccessItem matching. Using the isSameSchemeHostPort test of the SecurityOrigin allows for a legal subset of the AccessItem match algorithm to be used, until the complete parsing of the wildcards and optional pieces is complete.
  • xml/AccessItemRule.cpp: (WebCore::matchesAny): (WebCore::AccessItemRule::allowListMatchesAny): (WebCore::AccessItemRule::excludeListMatchesAny):
  • xml/AccessItemRule.h: More of the implementation of the list check algorithm. Check if any of the items in the rule match the control origin.
  • xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::XMLHttpRequest): (WebCore::XMLHttpRequest::open): Don't throw a SECURITY_ERR for cross-domain requests anymore. (WebCore::XMLHttpRequest::send): Use different paths for same origin and cross-domain requests. (WebCore::XMLHttpRequest::crossSiteAccessRequest): Temporarily only support the GET method for cross-domain requests. (WebCore::XMLHttpRequest::loadRequestSynchronously): (WebCore::XMLHttpRequest::processSyncLoadResults): This can now throw an exception if a cross-domain request is denied by the access control (WebCore::XMLHttpRequest::didFinishLoading): Add support for cross-domain GET request. ASSERT temporarily that the method is GET, since we should have bailed out much earlier for non-GET methods. (WebCore::XMLHttpRequest::willSendRequest): (WebCore::XMLHttpRequest::didReceiveResponse): Do the HTTP header access-control check as soon as the headers arrive.
  • xml/XMLHttpRequest.h:

LayoutTests:

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

Reviewed by Anders Carlsson.

<rdar://problem/5838772> Support cross-site XMLHttpRequest

  • Add tests for basic cross-domain XHR.
  • http/tests/xmlhttprequest/access-control-basic-allow-expected.txt: Added.
  • http/tests/xmlhttprequest/access-control-basic-allow-headers-expected.txt: Added.
  • http/tests/xmlhttprequest/access-control-basic-allow-headers.html: Added.
  • http/tests/xmlhttprequest/access-control-basic-allow.html: Added.
  • http/tests/xmlhttprequest/access-control-basic-denied-expected.txt: Added.
  • http/tests/xmlhttprequest/access-control-basic-denied.html: Added.
  • http/tests/xmlhttprequest/access-control-basic-exclude-expected.txt: Added.
  • http/tests/xmlhttprequest/access-control-basic-exclude.html: Added.
  • http/tests/xmlhttprequest/exceptions-expected.txt:
  • http/tests/xmlhttprequest/exceptions.html:
  • http/tests/xmlhttprequest/resources/access-control-basic-allow-headers.cgi: Added.
  • http/tests/xmlhttprequest/resources/access-control-basic-allow.cgi: Added.
  • http/tests/xmlhttprequest/resources/access-control-basic-denied.cgi: Added.
  • http/tests/xmlhttprequest/resources/access-control-basic-exclude.cgi: Added.
20:20 Changeset [33989] by alp@webkit.org
  • 2 edits in trunk/JavaScriptCore

2008-05-21 Alp Toker <alp@nuanti.com>

GTK+ build fix. Add DebuggerCallFrame.cpp and take AllInOneFile.cpp
changes into account.

  • GNUmakefile.am:
19:51 Changeset [33988] by oliver@apple.com
  • 2 edits in trunk/JavaScriptCore

Fix windows build

19:36 Changeset [33987] by slewis@apple.com
  • 3 edits in trunk/WebKitTools

2008-05-21 Stephanie Lewis <slewis@apple.com>

Reviewed by Maciej.


arch doesn't take arguments on tiger. expand DRT timeout for guardMalloc.

  • Scripts/run-webkit-tests:
  • Scripts/webkitdirs.pm:
19:19 Changeset [33986] by mrowe@apple.com
  • 5 edits in trunk/WebKitTools

Improve the behavior of run-webkit-tests with 64-bit WebKit by automatically inferring whether to run 64-bit.

If --64-bit is not passed to run-webkit-tests, attempt to guess whether we should run 64-bit.
This decision is made based on the 64-bitness of the built WebKit framework if it exists, and
can be manually overridden by passing --64-bit or --no-64-bit. This removes the need to always
pass an argument to run-webkit-tests after having built with "make x86_64".

Reviewed by Stephanie Lewis.

  • Scripts/gdb-safari:
  • Scripts/run-safari:
  • Scripts/run-webkit-tests:
  • Scripts/webkitdirs.pm: Split the setting of the 64-bit flag, the determination of the

preferred architecture, and exporting of the environment variables for 'arch' out into
separate subroutines.

19:19 Changeset [33985] by mrowe@apple.com
  • 2 edits in trunk/WebKitTools

Fix "make x86_64" by adding x86_64 target to WebKitTools Makefile.

19:06 Changeset [33984] by alp@webkit.org
  • 2 edits in trunk/JavaScriptCore

2008-05-21 Alp Toker <alp@nuanti.com>

GTK+ port build fixes following squirrelfish merge r33979.

  • GNUmakefile.am:
19:03 Changeset [33983] by mjs@apple.com
  • 2 edits in trunk/JavaScriptCore

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

Reviewed by Darin.


  • save a hash lookup wne writing to global properties 0.3% speedup on SunSpider, 7% on bitops-bitwise-and
  • VM/Machine.cpp: (KJS::resolveBase): Check for being a the end of the scope chain before hash lookup.
18:31 Changeset [33982] by alp@webkit.org
  • 4 edits in trunk

2008-05-21 Alp Toker <alp@nuanti.com>

Rubber-stamped by Maciej.

Replace non-standard #pragma marks with comments to avoid compiler
warnings.

18:23 Changeset [33981] by mrowe@apple.com
  • 1 move in branches/old/squirrelfish

Move aside the squirrelfish branch now that it has been merged.

18:21 Changeset [33980] by mrowe@apple.com
  • 6 edits in trunk

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

Reviewed by Mark Rowe.

Fix layout test failure in fast/dom/getter-on-window-object2 introduced in r33961.

  • JavaScriptCore.exp:
  • kjs/JSGlobalObject.cpp: (KJS::JSGlobalObject::defineGetter): (KJS::JSGlobalObject::defineSetter):
  • kjs/JSGlobalObject.h:
18:20 Changeset [33979] by mrowe@apple.com
  • 485 edits
    2 moves
    123 adds
    8 deletes in trunk

Merge squirrelfish branch into trunk.

16:18 Changeset [33978] by andersca@apple.com
  • 4 edits
    2 adds in trunk/WebCore

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

Reviewed by Mitz.

Add IconFetcher implementation.

  • WebCore.base.exp:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLLinkElement.h: (WebCore::HTMLLinkElement::isIcon):
  • loader/icon/IconFetcher.cpp: Added. (WebCore::IconLinkEntry::): (WebCore::IconLinkEntry::IconLinkEntry): (WebCore::IconLinkEntry::type): (WebCore::IconLinkEntry::url): (WebCore::IconLinkEntry::buffer): (WebCore::parseIconLink): (WebCore::IconFetcher::create): (WebCore::IconFetcher::IconFetcher): (WebCore::IconFetcher::~IconFetcher): (WebCore::IconFetcher::cancel): (WebCore::IconFetcher::createIcon): (WebCore::IconFetcher::loadEntry): (WebCore::IconFetcher::loadFailed): (WebCore::IconFetcher::didReceiveResponse): (WebCore::IconFetcher::didReceiveData): (WebCore::IconFetcher::didFinishLoading): (WebCore::IconFetcher::didFail):
  • loader/icon/IconFetcher.h: Added. (WebCore::IconFetcherClient::~IconFetcherClient):
14:50 Changeset [33977] by mitz@apple.com
  • 2 edits in trunk/WebCore

Reviewed by Dave Hyatt.

  • platform/graphics/mac/SimpleFontDataMac.mm: (WebCore::SimpleFontData::platformInit): In the case of a custom font, there is no NSFont to base the fallback font on, so get a font based on fallback family name alone.
14:09 Changeset [33976] by timothy@apple.com
  • 4 edits in trunk/WebCore

Adds the files and line numbers to the Profile call tree.

<rdar://problem/5952924> Inspector needs to show file and line number
in the Profile call tree

Reviewed by Geoff Garen.

  • page/JavaScriptProfileNode.cpp:

(WebCore::getFunctionName): Fixes a JSStringRef leak.
(WebCore::getURL): Call ProfileNode::url.
(WebCore::getLineNumber): Call ProfileNode::lineNumber.
(WebCore::ProfileNodeClass): Add the url and lineNumber properties.

  • page/inspector/ProfileView.js:

(WebInspector.ProfileDataGridNode.prototype.createCell): Overload the
DataGridNode.createCell and add the file and lineNumber to the
cell if the column is the function column.

  • page/inspector/inspector.css: New styles for the file and line.
13:56 Changeset [33975] by ggaren@apple.com
  • 16 edits in branches/squirrelfish

JavaScriptCore:

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

Reviewed by Tim Hatcher.


Merged with trunk WebCore's new debugger.

  • kjs/DebuggerCallFrame.cpp: (KJS::DebuggerCallFrame::evaluate): Changed this function to separate the exception value from the return value. The WebKit debugger treats them as one, but the WebCore debugger doesn't.
  • kjs/DebuggerCallFrame.h: (KJS::DebuggerCallFrame::dynamicGlobalObject): Added a new accessor for the dynamic global object, since the debugger doesn't want the lexical global object.

WebCore:

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

Reviewed by Tim Hatcher.

Merged with trunk WebCore's new debugger.

  • page/InspectorController.cpp: (WebCore::currentCallFrame): Updated to use the DebuggerCallFrame API. (WebCore::InspectorController::pauseInDebugger): Updated for name change explained below. (WebCore::InspectorController::resumeDebugger): ditto (WebCore::InspectorController::didParseSource): Fixed a bug that would produce garbled text in some cases: Don't treat JS source as null- terminated UTF8; it's UTF16.
  • page/JavaScriptCallFrame.cpp:
  • page/JavaScriptCallFrame.h: Changed this class to do all of its processing through a JavaScriptCore DebuggerCallFrame. We have to copy the DebuggerCallFrame because it's a temporary. (WebCore::JavaScriptCallFrame::update): Added an API for updating a call frame during execution: this is how we handle "with" and "eval".
  • page/JavaScriptDebugServer.cpp: Separated "m_paused" from "m_doneProcessingDebuggerEvents", because they have different semantics: "m_paused" is the flag the debug server uses to indicate that new debugger callbacks should be ignored, because they come from the debugger's own JS code; "m_doneProcessingDebuggerEvents" is the flag the debugger UI uses to indicate that it's done processing events, and would like execution to continue. When these flags were one, the debugger would erroneously process callbacks that ocurred while unwinding from its own JS code.

(WebCore::toPage): Removed some unnecessary NULL checking. Added some
missing NULL checking.


(WebCore::JavaScriptDebugServer::pauseIfNeeded): Changed pause tracking
to track a JavaScriptCallFrame instead of an ExecState, since ExecState
is no longer a unique identifier for a call frame.

I removed the updateCurrentCallFrame scheme, and replaced it with
individual tracking inside these callbacks:


(WebCore::JavaScriptDebugServer::callEvent):
(WebCore::JavaScriptDebugServer::atStatement):
(WebCore::JavaScriptDebugServer::returnEvent):
(WebCore::JavaScriptDebugServer::exception):


The updateCurrentCallFrame scheme was just too incompatible with the
squirrelfish execution model. Everything still works as before, except
for eval, which no longer shows up as an independent call frame. We'll
need to augment our debugger callbacks to bring back support for that.

  • page/inspector/ScopeChainSidebarPane.js: Updated to use the activation class's new name.

WebKit/mac:

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

Reviewed by Tim Hatcher.


Updated for API changes from merging with trunk WebCore's new debugger.

  • WebView/WebScriptDebugDelegate.mm: (-[WebScriptCallFrame evaluateWebScript:]): Explicitly check for an exception return, since the DebuggerCallFrame no longer automatically substitutes the exception for the return value.
  • WebView/WebScriptDebugger.mm: Use the dynamic global object, not the lexical global object, since the debugger attaches based on dynamic global object.
12:25 Changeset [33974] by darin@apple.com
  • 2 edits in trunk/WebKitTools

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

  • Scripts/make-js-test-wrappers: Added another exception.
12:16 Changeset [33973] by darin@apple.com
  • 3 edits in trunk/JavaScriptCore

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

  • try to fix the Windows build
  • profiler/Profiler.cpp: (KJS::Profiler::stopProfiling): Use ptrdiff_t instead of the less-common but incredibly similar ssize_t type.
  • wtf/AVLTree.h: (KJS::AVLTree::search): Added a typename for a dependent name that's a type.
12:15 Changeset [33972] by darin@apple.com
  • 4 edits
    3 adds in trunk

JavaScriptCore:

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

Reviewed by Anders.

  • fix <rdar://problem/5952721> bug in JavaScript arguments object property lookup

Test: fast/js/arguments-bad-index.html

  • kjs/function.cpp: (KJS::IndexToNameMap::IndexToNameMap): Use unsigned instead of int. (KJS::IndexToNameMap::isMapped): Use unsigned instead of int, and also use the strict version of the numeric conversion function, since we don't want to allow trailing junk. (KJS::IndexToNameMap::unMap): Ditto. (KJS::IndexToNameMap::operator[]): Ditto.
  • kjs/function.h: Changed IndexToNameMap::size type from int to unsigned.

LayoutTests:

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

Reviewed by Anders.

  • test for <rdar://problem/5952721> bug in JavaScript arguments object property lookup
  • fast/js/arguments-bad-index-expected.txt: Added.
  • fast/js/arguments-bad-index.html: Added.
  • fast/js/resources/arguments-bad-index.js: Added.
11:34 Changeset [33971] by darin@apple.com
  • 2 edits in trunk/WebKit/mac

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

  • fix build
  • WebView/WebViewPrivate.h: Remove declaration of closeWithFastTeardown. We can add it back later if we want, but if we do, we should probably make some refinements like checking _private->closed and applicationIsTerminating.
11:16 Changeset [33970] by timothy@apple.com
  • 13 edits in trunk/WebCore

Restores logging of console calls to the STDOUT
when Interpreter::shouldPrintExceptions() is true.

<rdar://problem/5636442> REGRESSION: Console.log no longer logs to
the system console or terminal

<rdar://problem/5146079> JavaScript exception logging should print
accurate file and line info when called from WebScriptObject

Reviewed by Adam Roben.

  • bindings/js/JSCustomSQLStatementCallback.cpp:

(WebCore::JSCustomSQLStatementCallback::handleEvent): Remove existing
printf and check for Interpreter::shouldPrintExceptions() since there is
a call to Console::addMessage.

  • bindings/js/JSCustomSQLStatementErrorCallback.cpp:

(WebCore::JSCustomSQLStatementErrorCallback::handleEvent): Ditto.

  • bindings/js/JSCustomSQLTransactionCallback.cpp:

(WebCore::JSCustomSQLTransactionCallback::handleEvent): Ditto.

  • bindings/js/JSCustomSQLTransactionErrorCallback.cpp:

(WebCore::JSCustomSQLTransactionErrorCallback::handleEvent): Ditto.

  • bindings/js/JSCustomVoidCallback.cpp:

(WebCore::JSCustomVoidCallback::handleEvent): Ditto.

  • bindings/js/JSCustomXPathNSResolver.cpp:

(WebCore::JSCustomXPathNSResolver::lookupNamespaceURI): Ditto.

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::printErrorMessage): Ditto.

  • bindings/js/ScheduledAction.cpp:

(WebCore::ScheduledAction::execute): Ditto.

  • bindings/js/kjs_events.cpp:

(WebCore::JSAbstractEventListener::handleEvent): Ditto.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::shouldAllowNavigation): Ditto.

  • bindings/objc/WebScriptObject.mm:

(WebCore::addExceptionToConsole): Added helper static function that
calls Console::addMessage.
(-[WebScriptObject callWebScriptMethod:withArguments:]): Call addExceptionToConsole.
(-[WebScriptObject evaluateWebScript:]): Ditto.
(-[WebScriptObject setValue:forKey:]): Ditto.
(-[WebScriptObject valueForKey:]): Ditto.
(-[WebScriptObject removeWebScriptKey:]): Ditto.
(-[WebScriptObject webScriptValueAtIndex:]): Ditto.
(-[WebScriptObject setWebScriptValueAtIndex:value:]): Ditto.

  • page/Console.cpp:

(WebCore::Console::addMessage): Print the level, message,
URL and line number to STDOUT.
(WebCore::printToStandardOut): Helper static function that
takes a prefix string, ExecState, an argument List and URL.
Prints the prefix and loops through the arguments calling
toString on each and printing the string. Finally printing
the URL and new line.
(WebCore::Console::error): Call printToStandardOut.
(WebCore::Console::info): Ditto.
(WebCore::Console::log): Ditto.
(WebCore::Console::assertCondition): Ditto.
(WebCore::Console::warn): Ditto.

11:16 Changeset [33969] by timothy@apple.com
  • 15 edits in trunk

Changes to the ownership of Profiles and allows multiple Profiles at a time

JavaScriptCore:

Change the Profiler to allow multiple profiles to be running at
the same time. This can happen when you have nested console.profile()
calls. This required two changes. First, the Profiler needed to keep a
Vector of current profiles, instead of one. Second, a Profile needs
to keep track of the global ExecState it started in and the page group
identifier it is tracking.

The stopProfiling call now takes the same arguments as startProfiling.
This makes sure the correct profile is stopped. Passing a null UString
as the title will stop the last profile for the matching ExecState.

<rdar://problem/5951559> Multiple pages profiling can interfere with each other

Reviewed by Kevin McCullough.

  • JavaScriptCore.exp: Added new exports. Removed old symbols.
  • profiler/Profile.cpp: (KJS::Profile::Profile): New constructor arguments for the originatingGlobalExec and pageGroupIdentifier. (KJS::Profile::stopProfiling): Set the m_originatingGlobalExec to null.
  • profiler/Profile.h: (KJS::Profile::create): Additional arguments. (KJS::Profile::originatingGlobalExec): Return m_originatingGlobalExec. (KJS::Profile::pageGroupIdentifier): Return m_pageGroupIdentifier.
  • profiler/Profiler.cpp: (KJS::Profiler::findProfile): Added. Finds a Profile that matches the ExecState and title. (KJS::Profiler::startProfiling): Return early if there is already a Profile with the ExecState and title. If not, create a new profile and append it to m_currentProfiles. (KJS::Profiler::stopProfiling): Loops through m_currentProfiles and find the one matching the ExecState and title. If one is found call stopProfiling and return the Profile after removing it from m_currentProfiles. (KJS::dispatchFunctionToProfiles): Helper inline function to loop through m_currentProfiles and call a Profile function. (KJS::Profiler::willExecute): Call dispatchFunctionToProfiles. (KJS::Profiler::didExecute): Ditto.
  • profiler/Profiler.h:

WebCore:

Changes to work with the new Profiler API. The Profile is now
stored by the InspectorController when Console.profileEnd is called.
This solves three issues with the previous design. First, we don't
keep profiles around unless the Inspector is enabled. Second, we
only show Profiles initiated by the Page in it's Inspector, not every
Profile for the whole process. Third, we now show Profiles in the
Inspector when they are created.

<rdar://problem/5951562> New profiles aren't added to the Inspector
as they finish

Reviewed by Kevin McCullough.

  • bindings/js/JSConsoleCustom.cpp: (WebCore::JSConsole::profileEnd): Added. Calls impl()->profileEnd() and passes the ExecState and arguments.
  • page/Console.cpp: (WebCore::Console::profile): (WebCore::Console::profileEnd): Accept the optional title argument and pass it to Profilier::stopProfiling along with the ExecState. Calls InspectorController::addProfile with the result Profile.
  • page/Console.h:
  • page/Console.idl: Made profileEnd Custom so we can get the ExecState.
  • page/InspectorController.cpp: (WebCore::profiles): Renamed from allProfiles. Uses the controller's profiles vector. (WebCore::InspectorController::addProfile): Appends to m_profiles. Calls addScriptProfile if the window is visible. (WebCore::InspectorController::windowScriptObjectAvailable): Renamed allProfiles to profiles. (WebCore::InspectorController::addScriptProfile): Calls addProfile on the JavaScript side. (WebCore::InspectorController::didCommitLoad): Clears m_profiles.
  • page/InspectorController.h:
  • page/inspector/ProfilesPanel.js: Populates the profiles sidebar the first time the panel is shown after a rest.
  • page/inspector/inspector.js: Added addProfile, calls ProfilesPanel's addProfile function.
10:53 Changeset [33968] by darin@apple.com
  • 2 edits in trunk/WebKit/mac

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

Reviewed by Anders and Kevin Decker.

  • fix <rdar://problem/5951130> REGRESSION: crash on quit after reopening windows from previous session
  • WebView/WebView.mm: (-[WebViewPrivate dealloc]): Fix assertions to not complain when fast teardown is used. (-[WebView _closePluginDatabases]): Factored out some common code from both versions of close. (-[WebView _closeWithFastTeardown]): Added an underscore to this method's name, since it's internal. Streamlined the code a bit. Added a line of code to set _private->closed (this is the bug fix). (-[WebView _close]): Changed for new method name and to use _closePluginDatabases.
10:17 Changeset [33967] by ap@webkit.org
  • 7 edits
    10 adds in trunk

Reviewed by Darin.

<rdar://problem/5908520> REGRESSION (3.1.1-r33033): Crash in WebKit when opening or
refreshing page on people.com

The problem was that STL algorithms do not work with non-conformant comparators, and the
site used sort(function() { return 0.5 - Math.random(); } to randomly shuffle an array.

https://bugs.webkit.org/show_bug.cgi?id=18687
REGRESSION(r32220): ecma/Array/15.4.4.5-3.js test now fails in GMT(BST)

Besides relying on sort stability, this test was just broken, and kept failing with the
new stable sort.

Tests: fast/js/sort-randomly.html

fast/js/sort-stability.html
fast/js/comparefn-sort-stability.html

  • kjs/avl_tree.h: Added an AVL tree implementation.
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • wtf/AVLTree.h: Added. Added an AVL tree implementation.
  • kjs/array_instance.cpp: (KJS::ArrayInstance::increaseVectorLength): (KJS::ArrayInstance::sort): (KJS::AVLTreeAbstractorForArrayCompare::get_less): (KJS::AVLTreeAbstractorForArrayCompare::set_less): (KJS::AVLTreeAbstractorForArrayCompare::get_greater): (KJS::AVLTreeAbstractorForArrayCompare::set_greater): (KJS::AVLTreeAbstractorForArrayCompare::get_balance_factor): (KJS::AVLTreeAbstractorForArrayCompare::set_balance_factor): (KJS::AVLTreeAbstractorForArrayCompare::compare_key_key): (KJS::AVLTreeAbstractorForArrayCompare::compare_key_node): (KJS::AVLTreeAbstractorForArrayCompare::compare_node_node): (KJS::AVLTreeAbstractorForArrayCompare::null): (KJS::ArrayInstance::compactForSorting):


  • kjs/array_instance.h: increaseVectorLength() now returns a bool to indicate whether it was successful.
  • wtf/Vector.h: (WTF::Vector::Vector): (WTF::::operator=): (WTF::::fill): Make these methods fail instead instead of crash when allocation fails, matching resize() and reserveCapacity(), which already had this behavior. Callers need to check for null buffer after making any Vector call that can try to allocate.
  • tests/mozilla/ecma/Array/15.4.4.5-3.js: Fixed the test to use a consistent sort function, as suggested in comments to a Mozilla bug filed about it (I'll keep tracking the bug to see what the final resolution is).
10:00 Changeset [33966] by ap@webkit.org
  • 3 edits
    3 adds in trunk

Reviewed by Darin.

https://bugs.webkit.org/show_bug.cgi?id=19169
<rdar://5952342> REGRESSION: nakarte.ru searches don't work

Test: http/tests/xmlhttprequest/encode-request-url.html

  • platform/KURL.cpp: (WebCore::KURL::init): Don't allow UTF-8 encoded data to be implicitly converted to String, as it will be encoded again by parse().
09:59 Changeset [33965] by kmccullough@apple.com
  • 4 edits in trunk/JavaScriptCore

2008-05-20 Kevin McCullough <kmccullough@apple.com>

Reviewed by Tim.

<rdar://problem/5950867> JSProfiler: Allow the profiler to "Focus" a
profile node.

  • Implements focus by adding the idea of a profileNode being visible and adding the ability to reset all of the visible flags.
  • profiler/Profile.h: (KJS::Profile::focus):
  • profiler/ProfileNode.cpp: (KJS::ProfileNode::ProfileNode): Initialize the visible flag. (KJS::ProfileNode::setTreeVisible): Set the visibility of this node and all of its descendents. (KJS::ProfileNode::focus): Determine if this node should be visible when focusing, if the functionName matches this node's function name or if any of this node's children are visible. (KJS::ProfileNode::restoreAll): Restore all nodes' visible flag. (KJS::ProfileNode::debugPrintData):
  • profiler/ProfileNode.h: (KJS::ProfileNode::visible): (KJS::ProfileNode::setVisible):
07:38 Changeset [33964] by hausmann@webkit.org
  • 2 edits in trunk/WebCore

2008-05-21 Ariya Hidayat <ariya.hidayat@trolltech.com>

Reviewed by Simon.

For the Qt port, fix building with Qt for Embedded Linux.

07:35 Changeset [33963] by hausmann@webkit.org
  • 3 edits in trunk/WebCore

2008-05-21 Ariya Hidayat <ariya.hidayat@trolltech.com>

Reviewed by Simon.

For the Qt port, allow building without NPAPI plugin support.

  • WebCore.pro:
  • plugins/PluginView.h:
05:51 Changeset [33962] by oliver@apple.com
  • 7 edits in branches/squirrelfish/JavaScriptCore

Bug 19116: SquirrelFish shouldn't regress on variable lookups
<https://bugs.webkit.org/show_bug.cgi?id=19116>

Reviewed by Maciej

Optimise cross scope assignment, 0.4% progression in sunspider.

05:31 Changeset [33961] by mjs@apple.com
  • 2 edits in branches/squirrelfish/JavaScriptCore

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

Reviewed by Oliver.


  • check property map before symbol table in JSGlobalObject::getOwnPropertySlot 0.5% speedup on SunSpider
  • kjs/JSGlobalObject.h: (KJS::JSGlobalObject::getOwnPropertySlot): Check property map before symbol table because symbol table access is likely to have been optimized.
05:16 Changeset [33960] by oliver@apple.com
  • 5 edits in branches/squirrelfish/JavaScriptCore

Bug 19116: SquirrelFish shouldn't regress on variable lookups
<https://bugs.webkit.org/show_bug.cgi?id=19116>

Reviewed by Maciej

Optimise multiscope lookup of statically resolvable function calls.
SunSpider reports a 1.5% improvement, including 37% on
controlflow-recursive for some reason :D

03:31 Changeset [33959] by mjs@apple.com
  • 10 edits in branches/squirrelfish

JavaScriptCore:

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

Reviewed by Oliver.


  • give JSGlobalObject a special version of getOwnPropertySlot that tells you if the slot is directly writable (WebCore change using this is a 2.6% speedup on in-browser SunSpider).
  • JavaScriptCore.exp:
  • kjs/JSGlobalObject.h: (KJS::JSGlobalObject::getOwnPropertySlot):
  • kjs/JSVariableObject.h: (KJS::JSVariableObject::symbolTableGet):
  • kjs/object.h: (KJS::JSObject::getDirectLocation): (KJS::JSObject::getOwnPropertySlotForWrite):
  • kjs/property_map.cpp: (KJS::PropertyMap::getLocation):
  • kjs/property_map.h:
  • kjs/property_slot.h: (KJS::PropertySlot::putValue):

WebCore:

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

Reviewed by Oliver.

  • write directly to the slot we used to check for override properties, when possible 2.6% speedup on in-browser SunSpider
  • bindings/js/JSDOMWindowCustom.h: (WebCore::JSDOMWindow::customPut):
01:47 Changeset [33958] by oliver@apple.com
  • 8 edits in branches/squirrelfish/JavaScriptCore

Bug 19116: SquirrelFish shouldn't regress on variable lookups
<https://bugs.webkit.org/show_bug.cgi?id=19116>

Reviewed by Maciej

This restores multiscope optimisation to simple resolve, producing
a 2.6% progression in SunSpider. Have verified that none of the
sites broken by the multiscope optimisation in trunk were effected
by this change.

05/20/08:

22:47 Changeset [33957] by kevino@webkit.org
  • 4 edits
    2 moves in trunk/WebKit/wx

Reviewed by Darin Adler.

Rename wxWebFrame -> wxWebBrowserShell in preparation to introduce a WebFrame counterpart in wx port. (Frame typically means 'top level window' in wx terms.)

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

22:01 Changeset [33956] by mjs@apple.com
  • 4 edits in branches/squirrelfish/WebCore

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

Reviewed by Oliver.

  • inline JSDOMWindow security checks 0.9% speedup to SunSpider in-browser
  • bindings/js/JSDOMWindowBase.cpp:
  • bindings/js/JSDOMWindowCustom.h: (WebCore::JSDOMWindowBasePrivate::JSDOMWindowBasePrivate): (WebCore::JSDOMWindowBase::allowsAccessFrom): (WebCore::JSDOMWindowBase::allowsAccessFromNoErrorMessage): (WebCore::JSDOMWindowBase::allowsAccessFromPrivate):
  • bindings/js/kjs_binding.cpp:
21:14 Changeset [33955] by kmccullough@apple.com
  • 1 edit
    31 adds in trunk/WebCore

2008-05-20 Kevin McCullough <kmccullough@apple.com>

Reviewed by Tim.

Added all of my personal manual tests for the profiler.

  • manual-tests/inspector/profiler-test-anonymous-event-handler.html: Added.
  • manual-tests/inspector/profiler-test-anonymous-function-called-from-different-contexts.html: Added.
  • manual-tests/inspector/profiler-test-anonymous-function-calls-built-in-functions.html: Added.
  • manual-tests/inspector/profiler-test-anonymous-function-calls-eval.html: Added.
  • manual-tests/inspector/profiler-test-apply.html: Added.
  • manual-tests/inspector/profiler-test-built-in-function-calls-anonymous.html: Added.
  • manual-tests/inspector/profiler-test-built-in-function-calls-user-defined-function.html: Added.
  • manual-tests/inspector/profiler-test-call.html: Added.
  • manual-tests/inspector/profiler-test-dead-time.html: Added.
  • manual-tests/inspector/profiler-test-event-handler.html: Added.
  • manual-tests/inspector/profiler-test-execution-context-and-eval-on-same-line.html: Added.
  • manual-tests/inspector/profiler-test-inline-event-handler.html: Added.
  • manual-tests/inspector/profiler-test-many-calls-in-the-same-scope.html: Added.
  • manual-tests/inspector/profiler-test-multiple-and-different-scoped-anonymous-function-calls.html: Added.
  • manual-tests/inspector/profiler-test-multiple-and-different-scoped-function-calls.html: Added.
  • manual-tests/inspector/profiler-test-multiple-frames.html: Added.
  • manual-tests/inspector/profiler-test-multiple-windows.html: Added.
  • manual-tests/inspector/profiler-test-nested-anonymous-functon.html: Added.
  • manual-tests/inspector/profiler-test-nested-start-and-stop-profiler.html: Added.
  • manual-tests/inspector/profiler-test-no-execution-context.html: Added.
  • manual-tests/inspector/profiler-test-one-execution-context.html: Added.
  • manual-tests/inspector/profiler-test-profile-calls-in-included-file.html: Added.
  • manual-tests/inspector/profiler-test-profiling-from-a-nested-location-but-stop-profiling-outside-the-nesting.html: Added.
  • manual-tests/inspector/profiler-test-profiling-from-a-nested-location.html: Added.
  • manual-tests/inspector/profiler-test-start-and-stop-profiler-multiple-times.html: Added.
  • manual-tests/inspector/profiler-test-two-execution-contexts.html: Added.
  • manual-tests/inspector/profiler-test-user-defined-function-calls-built-in-functions.html: Added.
  • manual-tests/inspector/resources: Added.
  • manual-tests/inspector/resources/other-frame.html: Added.
  • manual-tests/inspector/resources/other-window.html: Added.
  • manual-tests/inspector/resources/profiler-test-JS-resources.js: Added.
20:06 Changeset [33954] by mjs@apple.com
  • 2 edits in branches/squirrelfish/WebCore

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

Reviewed by Adam.

  • use ALWAYS_INLINE on customGetOwnPropertySlot since it wasn't inlining 2% speedup to SunSpider in-browser
  • bindings/js/JSDOMWindowCustom.h: (WebCore::JSDOMWindow::customGetOwnPropertySlot):
19:50 Changeset [33953] by mjs@apple.com
  • 11 edits
    7 adds in branches/squirrelfish/WebCore

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

Reviewed by Adam.

  • inline JSDOMWindow's customPut and customGetOwnPropertySlot methods 1.2% speedup to SunSpider in-browser


The approach here is to make the code generator include a
JS{classname}Custom.h header in the autogenerated implementation,
which we can use to provide inline versions.

  • bindings/js/JSCSSStyleDeclarationCustom.cpp:
  • bindings/js/JSCSSStyleDeclarationCustom.h: Added.
  • bindings/js/JSDOMWindowCustom.cpp:
  • bindings/js/JSDOMWindowCustom.h: (WebCore::asJSDOMWindow): (WebCore::JSDOMWindow::customGetOwnPropertySlot): (WebCore::JSDOMWindow::customPut):
  • bindings/js/JSHTMLAppletElementCustom.cpp:
  • bindings/js/JSHTMLAppletElementCustom.h: Added.
  • bindings/js/JSHTMLEmbedElementCustom.cpp:
  • bindings/js/JSHTMLEmbedElementCustom.h: Added.
  • bindings/js/JSHTMLObjectElementCustom.cpp:
  • bindings/js/JSHTMLObjectElementCustom.h: Added.
  • bindings/js/JSHistoryCustom.cpp:
  • bindings/js/JSHistoryCustom.h: Added.
  • bindings/js/JSLocationCustom.cpp:
  • bindings/js/JSLocationCustom.h: Added.
  • bindings/js/JSStorageCustom.cpp:
  • bindings/js/JSStorageCustom.h: Added.
  • bindings/scripts/CodeGeneratorJS.pm:
18:48 Changeset [33952] by timothy@apple.com
  • 3 edits in trunk/JavaScriptCore

Fixes a couple performance issues with the profiler. Also fixes
a regression where some nodes wouldn't be added to the tree.

Reviewed by Kevin McCullough.

  • profiler/ProfileNode.cpp:

(KJS::ProfileNode::addChild): Compare callIdentifier instead
of functionName.

  • profiler/ProfileNode.h:

(CallIdentifier.operator==): Compare the CallIdentifiers in
an order that fails sooner for non-matches.
(CallIdentifier.callIdentifier): Return the CallIdentifier by
reference to prevent making a new copy each time.

17:51 Changeset [33951] by alp@webkit.org
  • 2 edits in trunk

2008-05-20 Jan Michael Alonzo <jmalonzo@webkit.org>

Reviewed by Alp Toker.

Fix for previous autotools change.

  • configure.ac:
17:33 Changeset [33950] by oliver@apple.com
  • 7 edits in branches/squirrelfish/JavaScriptCore

Fixerate the windows build.

Reviewed by NOBODY (Build fix)

17:23 Changeset [33949] by aroben@apple.com
  • 2 edits in trunk/WebCore

Use KJS::List::getSlice instead of reimplementing it

Rubberstamped and suggested by Sam Weinig.

  • bindings/js/JSConsoleCustom.cpp: (WebCore::JSConsole::assertCondition):
16:38 Changeset [33948] by adele@apple.com
  • 3 edits in trunk/WebCore

2008-05-20 Kevin Calhoun <kcalhoun@apple.com>

Reviewed by Darin.

Fix <rdar://problem/5929010> Adopt new QTKit methods for <video> implementation

If the class QTVideoRendererWebKitOnly is present use it to render video,
otherwise fall back to existing use of QTMovieView/QTMovieContentView.

  • platform/graphics/mac/MediaPlayerPrivateQTKit.h:
  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm: (WebCore::MediaPlayerPrivate::~MediaPlayerPrivate): (WebCore::MediaPlayerPrivate::createQTMovie): (WebCore::QTVideoRendererClass): (WebCore::MediaPlayerPrivate::detachQTMovieView): (WebCore::MediaPlayerPrivate::createQTVideoRenderer): (WebCore::MediaPlayerPrivate::destroyQTVideoRenderer): (WebCore::MediaPlayerPrivate::setUpVideoRendering): (WebCore::MediaPlayerPrivate::tearDownVideoRendering): (WebCore::MediaPlayerPrivate::load): (WebCore::MediaPlayerPrivate::cancelLoad): (WebCore::MediaPlayerPrivate::setVisible): (WebCore::MediaPlayerPrivate::paint): (-[WebCoreMovieObserver newImageAvailable:]):
16:32 Changeset [33947] by kmccullough@apple.com
  • 8 edits in trunk/JavaScriptCore

2008-05-20 Kevin McCullough <kmccullough@apple.com>

Reviewed by Darin.

<rdar://problem/5950796> JSProfiler: dump functions are in the code
Removed dump and logging functions from the Release version of the code
and renamed them to be obviously for debugging only.

  • JavaScriptCore.exp:
  • profiler/Profile.cpp: (KJS::Profile::debugPrintData): (KJS::Profile::debugPrintDataSampleStyle):
  • profiler/Profile.h:
  • profiler/ProfileNode.cpp: (KJS::ProfileNode::debugPrintData): (KJS::ProfileNode::debugPrintDataSampleStyle):
  • profiler/ProfileNode.h:
  • profiler/Profiler.cpp:
  • profiler/Profiler.h:
16:05 Changeset [33946] by aroben@apple.com
  • 6 edits
    1 add in trunk/WebCore

Fix Bug 19134: Inspector should support console.assert

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

Reviewed by Tim Hatcher.

Test: manual-tests/inspector/console-assert.html

  • bindings/js/JSConsoleCustom.cpp: (WebCore::JSConsole::assertCondition): Added.
  • bindings/scripts/CodeGeneratorJS.pm: Added parsing of the ImplementationFunction extended attribute, which allows you to override the name of the C++ function used to implement this method.
  • manual-tests/inspector/console-assert.html: Added.
  • page/Console.cpp: (WebCore::Console::assertCondition): Added.
  • page/Console.h:
  • page/Console.idl: Added assert().
16:05 Changeset [33945] by kmccullough@apple.com
  • 4 edits in trunk/JavaScriptCore

2008-05-20 Kevin McCullough <kmccullough@apple.com>

Reviewed by Adam.

<rdar://problem/5950538> JSProfiler: Keep track of non-JS execution time
We now have an extra node that represents the excess non-JS time.

  • Also changed "SCRIPT" and "anonymous function" to be more consistent with the debugger.
  • profiler/ProfileNode.cpp: (KJS::ProfileNode::stopProfiling): If this ProfileNode is the head node create a new child that has the excess execution time. (KJS::ProfileNode::calculatePercentages): Moved calculation of the percentages into a function since it's called from multiple places.
  • profiler/ProfileNode.h: Add the newly needed functions used above. (KJS::ProfileNode::setTotalTime): (KJS::ProfileNode::setSelfTime): (KJS::ProfileNode::setNumberOfCalls):
  • profiler/Profiler.cpp: renamed "SCRIPT" and "anonymous function" to be consistent with the debugger and use constants that can be localized more easily. (KJS::getCallIdentifiers): (KJS::getCallIdentifierFromFunctionImp):
14:38 Changeset [33944] by oliver@apple.com
  • 7 edits in branches/squirrelfish/JavaScriptCore

Bug 19110: SquirrelFish: Google Maps - no maps
<https://bugs.webkit.org/show_bug.cgi?id=19110>

Reviewed by Geoff

Correct a comedy of errors present in my original patch to "fix"
exceptions occurring midway through pre and post increment. This
solution is cleaner than the original, doesn't need the additional
opcodes, and as an added benefit does not break Google Maps.

Sunspider reports a 0.4% progression.

14:29 Changeset [33943] by kmccullough@apple.com
  • 4 edits in trunk/JavaScriptCore

2008-05-20 Kevin McCullough <kmccullough@apple.com>

Reviewed by Tim.

<rdar://problem/5770054> JavaScript profiler (10928)
Removed only profiler-internal use of currentProfile since that concept
is changing.

  • profiler/Profile.h: Now stopProfiling takes a time and bool as arguments. The time is used to calculate %s from and the bool tells if this node is the head node and should be the one calculating the time. (KJS::Profile::stopProfiling):
  • profiler/ProfileNode.cpp: Ditto. (KJS::ProfileNode::stopProfiling):
  • profiler/ProfileNode.h: Ditto.
14:02 Changeset [33942] by kmccullough@apple.com
  • 2 edits in trunk/JavaScriptCore

2008-05-20 Kevin McCullough <kmccullough@apple.com>

Accidentally turned on the profiler.

  • kjs/config.h:
13:59 Changeset [33941] by kmccullough@apple.com
  • 9 edits in trunk/JavaScriptCore

2008-05-20 Kevin McCullough <kmccullough@apple.com>

Reviewed by Tim.

<rdar://problem/5770054> JavaScript profiler (10928)
Split function name into 3 parts so that the Web Inspector can link it to
the resource location from whence it came.

  • kjs/ustring.cpp: Implemented operator> for UStrings (KJS::operator>):
  • kjs/ustring.h:
  • profiler/Profile.cpp: (KJS::Profile::Profile): Initialize all 3 values. (KJS::Profile::willExecute): Use CallIdentifier struct. (KJS::Profile::didExecute): Ditto.
  • profiler/Profile.h: Ditto and remove unused function.
  • profiler/ProfileNode.cpp: (KJS::ProfileNode::ProfileNode): Use CallIdentifier struct. (KJS::ProfileNode::willExecute): Ditto and fix an issue where we restarted the m_startTime even though it was already started. (KJS::ProfileNode::didExecute): Ditto. (KJS::ProfileNode::findChild): Ditto. (KJS::functionNameDescendingComparator): Ditto and use new comparator. (KJS::functionNameAscendingComparator): Ditto. (KJS::ProfileNode::printDataInspectorStyle): Use CallIdentifier struct. (KJS::ProfileNode::printDataSampleStyle): Ditto.
  • profiler/ProfileNode.h: (KJS::CallIdentifier::CallIdentifier): Describe the CallIdentifier struct (KJS::CallIdentifier::operator== ): (KJS::ProfileNode::create): Use the CallIdentifier struct. (KJS::ProfileNode::callIdentifier): (KJS::ProfileNode::functionName): Now only return the function name, not the url and line number too. (KJS::ProfileNode::url): (KJS::ProfileNode::lineNumber):
  • profiler/Profiler.cpp: Use the CallIdentifier struct. (KJS::Profiler::startProfiling): (KJS::Profiler::willExecute): (KJS::Profiler::didExecute): (KJS::getCallIdentifiers): (KJS::getCallIdentifierFromFunctionImp):
13:51 Changeset [33940] by alice.liu@apple.com
  • 2 edits in trunk/WebCore

2008-05-20 Alice Liu <alice.liu@apple.com>

Reviewed by Brady.

fix <rdar://problem/5908580> 10A58: Dictionary Panel hangs in WebCore::Cache::pruneDeadResources()

  • loader/Cache.cpp: (WebCore::Cache::requestUserCSSStyleSheet): Add a call to resourceAccessed() to more closely mirror what is done in requestResource() (WebCore::Cache::insertInLRUList): Assert that any resource in the LRU list has been accessed. This is early detection of a potential hang later when pruning resources, and also agrees with the early return in removeFromLRUList().
12:15 Changeset [33939] by mitz@apple.com
  • 6 edits
    3 adds in trunk

WebCore:

Reviewed by Darin Adler.

Test: fast/dom/SelectorAPI/viewless-document.html

  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::CSSStyleSelector): Updated to initialize the selector checker. (WebCore::CSSStyleSelector::init): Removed initialization of m_collectRulesOnly, which is now part of the selector checker. (WebCore::CSSStyleSelector::matchRules): Updated for renames and data moved into the selector checker. (WebCore::CSSStyleSelector::matchRulesForList): Ditto. (WebCore::CSSStyleSelector::initForStyleResolve): Added a PseudoId argument, which is used to initialize a data member of the selector checker. Updated for renames. Removed initialization of m_isXMLDoc because this bit is now initialized only once in the selector checker's constructor. (WebCore::CSSStyleSelector::SelectorChecker::SelectorChecker): Added. (WebCore::CSSStyleSelector::SelectorChecker::checkPseudoState): Changed into a SelectorChecker method. (WebCore::CSSStyleSelector::SelectorChecker::checkSelector): Added. Used by querySelector() and querySelectorAll(). (WebCore::CSSStyleSelector::canShareStyleWithElement): Updated for data moved into the selector checker. (WebCore::CSSStyleSelector::matchUARules): Ditto. (WebCore::CSSStyleSelector::styleForElement): (WebCore::CSSStyleSelector::pseudoStyleForElement): Ditto. Also removed code that set the parentStyle variable after the last place it is accessed, and changed to ensure that m_style is set early in this function. (WebCore::CSSStyleSelector::adjustRenderStyle): Updated for data moved into the selector checker. (WebCore::CSSStyleSelector::styleRulesForElement): Ditto. (WebCore::CSSStyleSelector::checkSelector): Ditto. Also changed to pass the element's style and the parent style to the selector checker, as well as the dynamic pseudo variable and the selector attributes vector. (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector): Added arguments for the style of the base element and its parent. When the elementStyle argument is 0, the style is fetched from the element and its parent as needed. Also changed to take a reference to the dynamic pseudo ID and a pointer to the vector of attributes affecting the match. (WebCore::CSSStyleSelector::applyProperty): Updated for data moved into the selector checker. (WebCore::CSSStyleSelector::checkForGenericFamilyChange): Ditto. (WebCore::CSSStyleSelector::getComputedSizeFromSpecifiedSize): Ditto. (WebCore::CSSStyleSelector::fontSizeForKeyword): Ditto. (WebCore::CSSStyleSelector::getColorFromPrimitiveValue): Ditto. (WebCore::CSSStyleSelector::SelectorChecker::allVisitedStateChanged): Changed into a SelectorChecker method. (WebCore::CSSStyleSelector::SelectorChecker::visitedStateChanged): Ditto.
  • css/CSSStyleSelector.h: Added a SelectorChecker class and moved data and methods used in checking selectors into it. (WebCore::CSSStyleSelector::allVisitedStateChanged): Changed to call the SelectorChecker method. (WebCore::CSSStyleSelector::visitedStateChanged): Ditto.
  • dom/Node.cpp: (WebCore::Node::querySelector): Changed to use a SelectorChecker instead of the document's style selector.
  • dom/SelectorNodeList.cpp: (WebCore::SelectorNodeList::SelectorNodeList): Ditto.

LayoutTests:

Reviewed by Darin Adler.

  • fast/dom/SelectorAPI/resources/viewless-document.js: Added.
  • fast/dom/SelectorAPI/viewless-document-expected.txt: Added.
  • fast/dom/SelectorAPI/viewless-document.html: Added.
12:04 Changeset [33938] by timothy@apple.com
  • 8 edits
    1 add in trunk/WebCore

Implements the Profiles panel and Profile view.

Reviewed by Kevin McCullough.

  • English.lproj/localizedStrings.js: Added new strings.
  • page/inspector/Images/profileIcon.png: Added.
  • page/inspector/Images/profilesIcon.png: Changed. New icon design

that fits in with the other toolbar icons.

  • page/inspector/ProfileView.js:

(WebInspector.ProfileView): Remove custom table elements
and create a DataGrid. Sorts the profile by descending total time,
since the profiles aren't sorted by default.
(WebInspector.ProfileView.prototype.refresh): Clears the DataGrid
and recreates all the nodes. The selection is preserved.
(WebInspector.ProfileView.prototype.refreshShowAsPercents): Traverse
all the children and change showTotalTimeAsPercent and showSelfTimeAsPercent
to match the ProfileView values. Then call refresh on the child.
(WebInspector.ProfileView.prototype._sortData): Determine the sort
function to call on the head profile node. Call it and then call
refresh to rebuild the DataGrid.
(WebInspector.ProfileView.prototype._mouseDownInDataGrid): Return early
if the event is not a double-click. When it is a double-click, determine
the column that was targeted and if it was total or self toggle the
show as percent property. Call refreshShowAsPercents.
(WebInspector.ProfileDataGridNode):
(WebInspector.ProfileDataGridNode.prototype.get data):
(WebInspector.ProfileDataGridNode.prototype.expand):
(WebInspector.ProfileDataGridNode.prototype.collapse):
(WebInspector.ProfileDataGridNode.prototype._populate):

  • page/inspector/ProfilesPanel.js:

(WebInspector.ProfilesPanel):
(WebInspector.ProfilesPanel.prototype.show): Populate the sidebar
with all profiles. This is a workaround until the Inspector
is told about new profiles.
(WebInspector.ProfilesPanel.prototype.reset): Clear the sidebar and
profile views.
(WebInspector.ProfilesPanel.prototype.handleKeyEvent): Pass the key
event to the sidebar.
(WebInspector.ProfilesPanel.prototype.addProfile): Create a
ProfileSidebarTreeElement object and add it to the sidebar.
(WebInspector.ProfilesPanel.prototype.showProfile): Create a ProfileView
and show it.
(WebInspector.ProfilesPanel.prototype.closeVisibleView): Hide the
visible view.
(WebInspector.ProfilesPanel.prototype._startSidebarDragging): Call
WebInspector.elementDragStart.
(WebInspector.ProfilesPanel.prototype._sidebarDragging): Call _updateSidebarWidth.
(WebInspector.ProfilesPanel.prototype._endSidebarDragging):
Call WebInspector.elementDragEnd.
(WebInspector.ProfilesPanel.prototype._updateSidebarWidth): Update the
sidebar width based on the passed in value.
(WebInspector.ProfileSidebarTreeElement): Subclass WebInspector.SidebarTreeElement.
(WebInspector.ProfileSidebarTreeElement.prototype.onselect): Call ProfilesPanel.showProfile.
(WebInspector.ProfileSidebarTreeElement.prototype.get mainTitle): Return profile.title.
(WebInspector.ProfileSidebarTreeElement.prototype.set mainTitle): Do nothing.
(WebInspector.ProfileSidebarTreeElement.prototype.get subtitle): Ditto.
(WebInspector.ProfileSidebarTreeElement.prototype.set subtitle): Ditto.

  • page/inspector/inspector.css: New styles for the profile sidebar

item and profile data grid columns.

  • page/inspector/inspector.js:
  • page/inspector/utilities.js:

(Number.secondsToString): Added a higherResolution argument
that returns fractional milliseconds.

11:39 Changeset [33937] by cfleizach@apple.com
  • 4 edits in trunk/WebCore

<rdar://problem/5060458> Elements without AXActions should not return kAXErrorFailure
<rdar://problem/3438014> Might need accessibility solution for context menus in web pages

10:12 Changeset [33936] by timothy@apple.com
  • 2 edits in trunk/WebCore

Expose the ProfileNode functionName sorting functions on
JavaScriptProfileNode.

Reviewed by Kevin McCullough.

  • page/JavaScriptProfileNode.cpp:

(WebCore::sortFunctionNameDescending): Call ProfileNode.
(WebCore::sortFunctionNameAscending): Ditto.
(WebCore::ProfileNodeClass): Add static functions.

10:12 Changeset [33935] by timothy@apple.com
  • 5 edits in trunk/JavaScriptCore

Rename sortFileName{Ascending,Descending} to
sortFunctionName{Ascending,Descending}.

Reviewed by Kevin McCullough.

  • JavaScriptCore.exp:
  • kjs/config.h:
  • profiler/Profile.h:
  • profiler/ProfileNode.cpp:

(KJS::functionNameDescendingComparator):
(KJS::ProfileNode::sortFunctionNameDescending):
(KJS::functionNameAscendingComparator):
(KJS::ProfileNode::sortFunctionNameAscending):

  • profiler/ProfileNode.h:
09:41 Changeset [33934] by darin@apple.com
  • 12 edits in trunk/WebCore

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

Reviewed by Mitz.

  • a first small step of CSS DOM refactoring -- the eventual goal is to reduce StyleBase and possibly eliminate it, since it has multiple purposes and unneccessarily ties many classes together
  • css/CSSCursorImageValue.cpp: (WebCore::isSVGCursorIdentifier): Mark static so it has internal linkage. (WebCore::resourceReferencedByCursorElement): Ditto. (WebCore::CSSCursorImageValue::CSSCursorImageValue): Removed unused style argument. (WebCore::CSSCursorImageValue::updateIfSVGCursorIsUsed): Removed code to check if X and Y changed before changing them -- there's no reason to do that. Removed code that depended on the internals of CSSImageValue. The new code uses only protected functions rather than going right at the fields and uing internal knowledge of the base class.
  • css/CSSCursorImageValue.h: Added a create function, made constructor private, removed unused style argument.
  • css/CSSImageValue.cpp: (WebCore::CSSImageValue::CSSImageValue): Removed unused style argument. (WebCore::CSSImageValue::cachedImageURL): Added. A protected function for use by CSSCursorImageValue that gives the URL. (WebCore::CSSImageValue::clearCachedImage): Added. A protected function for use by CSSCursorImageValue that clears the CachedImage.
  • css/CSSImageValue.h: Added create functions, made constructors protected and private, removed unused style argument, made data members private, added some protected functions for use by CSSCursorImageValue.
  • css/CSSImportRule.cpp: (WebCore::CSSImportRule::setCSSStyleSheet): Changed to call checkLoaded on the parent. This is part of preparation to move the checkLoaded function from StyleBase to StyleSheet. (WebCore::CSSImportRule::insertedIntoParent): Changed code to check the URL of the style sheet to use the href function of the style sheet rather than the baseURL function. This eliminates an O(n2) algorithm here and reduces the use of baseURL, part of preparation to move it from StyleBase to CSSStyleSheet.
  • css/CSSMutableStyleDeclaration.cpp: (WebCore::CSSMutableStyleDeclaration::setImageProperty): Changed to use create function instead of a direct call to new for the CSSImageValue classes.
  • css/CSSParser.cpp: (WebCore::CSSParser::parseValue): Ditto. (WebCore::CSSParser::parseContent): Ditto. (WebCore::CSSParser::parseFillImage): Ditto. (WebCore::CSSParser::parseBorderImage): Ditto.
  • css/CSSStyleSelector.cpp: Removed unneeded include of CSSImageValue.h.
  • rendering/style/RenderStyle.h: Removed unneeded include of CSSCursorImageValue.h, which was causing us to rebuild the world way too often.
  • xml/XSLImportRule.cpp: (WebCore::XSLImportRule::setXSLStyleSheet): See change to CSSImportRule above. (WebCore::XSLImportRule::loadSheet): Ditto.
08:55 Changeset [33933] by kmccullough@apple.com
  • 2 edits in trunk/WebCore

2008-05-20 Kevin McCullough <kmccullough@apple.com>

Rubber stamped by Adam.

-Minor fix. Should not use a reference since the original may disappear.

  • page/Console.cpp: (WebCore::Console::profile):
08:40 Changeset [33932] by kevino@webkit.org
  • 4 edits in trunk

wx build fixes for PluginViewWx.cpp and WebKit/wx/WebView.cpp

06:58 Changeset [33931] by timothy@apple.com
  • 2 edits in trunk/WebCore

Expose the ProfileNode sorting functions on JavaScriptProfileNode.

Reviewed by Kevin McCullough.

  • page/JavaScriptProfileNode.cpp:

(WebCore::sortTotalTimeDescending): Call ProfileNode.
(WebCore::sortTotalTimeAscending): Ditto.
(WebCore::sortSelfTimeDescending): Ditto.
(WebCore::sortSelfTimeAscending): Ditto.
(WebCore::sortCallsDescending): Ditto.
(WebCore::sortCallsAscending): Ditto.
(WebCore::ProfileNodeClass): Add static static functions.

06:58 Changeset [33930] by timothy@apple.com
  • 4 edits in trunk/JavaScriptCore

Make the profiler use higher than millisecond resolution time-stamps.

Reviewed by Kevin McCullough.

  • kjs/DateMath.cpp:

(KJS::getCurrentUTCTime): Call getCurrentUTCTimeWithMicroseconds and
floor the result.
(KJS::getCurrentUTCTimeWithMicroseconds): Copied from the previous
implementation of getCurrentUTCTime without the floor call.

  • kjs/DateMath.h: Addded getCurrentUTCTimeWithMicroseconds.
  • profiler/ProfileNode.cpp:

(KJS::ProfileNode::ProfileNode): Use getCurrentUTCTimeWithMicroseconds.

06:57 Changeset [33929] by timothy@apple.com
  • 2 edits in trunk/WebCore
  • page/InspectorController.cpp: Change the include for

JavaScriptProfile.h to sue double quotes instead of backets.

06:57 Changeset [33928] by timothy@apple.com
  • 3 edits in trunk/JavaScriptCore

Fixes a bug in the profiler where call and apply would show up
and double the time spent in a function. We don't want to show call
and apply at all in the profiles. This change excludes them.

Reviewed by Kevin McCullough.

  • profiler/ProfileNode.cpp:

(KJS::ProfileNode::stopProfiling): Remove a second for loop and
calculate self time in the existing loop.

  • profiler/Profiler.cpp:

(KJS::shouldExcludeFunction): Helper inline function that returns
true in the current function in an InternalFunctionImp and it is
has the functionName call or apply.
(KJS::Profiler::willExecute): Call shouldExcludeFunction and return
early if if returns true.
(KJS::Profiler::didExecute): Ditto.

06:57 Changeset [33927] by timothy@apple.com
  • 10 edits
    3 adds
    1 delete in trunk/WebCore

Adds a DataGrid object that is used for multi-column data
and can contain hierarchical content with disclosure arrows.
A lot of DataGrid was copied from treeoutline.js. This change
makes the database views use the DataGrid. It will later be
used by the ProfileView.

Reviewed by Adam Roben.

  • page/inspector/DataGrid.js: Added. Most copied from treeoutline.js

and modified to work with table elements.

  • page/inspector/DatabaseQueryView.js:

(WebInspector.DatabaseQueryView.prototype._queryFinished):
Call DatabasesPanel.dataGridForResult and adds the inline style to
the DataGrid element.

  • page/inspector/DatabaseTableView.js:

(WebInspector.DatabaseTableView.prototype._queryFinished):
Call DatabasesPanel.dataGridForResult.

  • page/inspector/DatabasesPanel.js:

(WebInspector.DatabasesPanel.prototype._tableForResult): Removed.
(WebInspector.DatabasesPanel.prototype.dataGridForResult): Added.
Similar to the previous _tableForResult function, but makes a DataGrid.

  • page/inspector/inspector.css: Changes to the data-grid

style rules.

  • WebCore.vcproj/WebCore.vcproj: Add DataGrid.js.
  • page/inspector/WebKit.qrc: Ditto.
  • page/inspector/inspector.html: Ditto.
04:52 Changeset [33926] by jmalonzo@webkit.org
  • 2 edits in trunk

2008-05-20 Jan Michael Alonzo <jmalonzo@webkit.org>

Reviewed by Alp.

http://bugs.webkit.org/show_bug.cgi?id=18483
[Gtk] Autotools should match build-webkit default flags

  • configure.ac:
03:02 Changeset [33925] by mjs@apple.com
  • 15 edits
    1 add in branches/squirrelfish/WebCore

2008-05-19 Maciej Stachowiak <mjs@apple.com>

Reviewed by Anders.

  • inline asDOMWindow (using a new JSDOMWindowCustom.h header) since it is just a cast 1% speedup to SunSpider in-browser
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSCustomVoidCallback.cpp:
  • bindings/js/JSCustomXPathNSResolver.cpp:
  • bindings/js/JSDOMApplicationCacheCustom.cpp:
  • bindings/js/JSDOMWindowBase.cpp:
  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSDOMWindowCustom.cpp:
  • bindings/js/JSDOMWindowCustom.h: Added. (WebCore::asJSDOMWindow):
  • bindings/js/JSDatabaseCustom.cpp:
  • bindings/js/JSDocumentCustom.cpp:
  • bindings/js/JSLocationCustom.cpp:
  • bindings/js/JSSQLTransactionCustom.cpp:
  • bindings/js/JSXMLHttpRequestCustom.cpp:
  • page/JavaScriptDebugServer.cpp:
02:44 Changeset [33924] by mjs@apple.com
  • 2 edits in branches/squirrelfish/WebCore

2008-05-19 Maciej Stachowiak <mjs@apple.com>

Reviewed by Oliver.

  • obtain current inner window of outer window in a more efficient way 1.6% speedup to SunSpider in-browser
  • bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::allowsAccessFromPrivate):
02:35 Changeset [33923] by mjs@apple.com
  • 3 edits in branches/squirrelfish/WebCore

2008-05-19 Maciej Stachowiak <mjs@apple.com>

Reviewed by Adam.

  • make impl() method for JSWindow inline 0.6% speedup to SunSpider in-browser
  • WebCore.base.exp: Remove now-inline symbol
  • bindings/scripts/CodeGeneratorJS.pm: Make the codegen script inline impl() even for classes with a parent class.
00:59 Changeset [33922] by mjs@apple.com
  • 3 edits in branches/squirrelfish/JavaScriptCore

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

Reviewed by Oliver.


  • inline JSGlobalObject::getOwnPropertySlot 1% improvement on in-browser SunSpider (a wash command-line)
  • kjs/JSGlobalObject.cpp:
  • kjs/JSGlobalObject.h: (KJS::JSGlobalObject::getOwnPropertySlot):
00:29 Changeset [33921] by slewis@apple.com
  • 1 edit in trunk/WebKitTools/ChangeLog

fix changelog

Note: See TracTimeline for information about the timeline view.