Timeline


and

10/20/08:

23:08 Changeset [37759] by weinig@apple.com

JavaScriptCore:

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

Reviewed by Cameron Zwarich.

Fix for https://bugs.webkit.org/show_bug.cgi?id=21766
REGRESSION: 12 JSC tests fail

The JSGlobalObject was mutating the shared nullProtoStructureID when
used in jsc. Instead of using nullProtoStructureID, use a new StructureID.

  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h: (JSC::::JSCallbackObject):
  • API/JSContextRef.cpp: (JSGlobalContextCreateInGroup):
  • kjs/JSGlobalObject.h: (JSC::JSGlobalObject::JSGlobalObject):
  • kjs/Shell.cpp: (GlobalObject::GlobalObject): (jscmain):

JavaScriptGlue:

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

Reviewed by Cameron Zwarich.

Fix for https://bugs.webkit.org/show_bug.cgi?id=21766
REGRESSION: 12 JSC tests fail

The JSGlobalObject constructor no longer takes a JSGlobalData
as an argument.

  • JSRun.cpp: (JSRun::JSRun):
  • JSRun.h: (JSGlueGlobalObject::JSGlueGlobalObject):
  • JSUtils.cpp: (getThreadGlobalExecState):
23:01 Changeset [37758] by simon.fraser@apple.com

2008-10-20 Simon Fraser <simon.fraser@apple.com>

Reviewed by Dan Bernstein

Add a comment explaining layoutDelta(), and an assertion
that checks that delta changes were correctly paired during layout.

  • rendering/RenderView.cpp: (WebCore::RenderView::layout):
  • rendering/RenderView.h:
21:50 Changeset [37757] by timothy@apple.com

Make auto-complete only suggest properties that are valid syntax
when using dot-notation. Also when completing numeric properties,
the quotes are omitted inside the brackets.

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

Reviewed by Oliver Hunt.

  • inspector/front-end/Console.js: (WebInspector.Console.prototype.completions): Skip properties that are not valid identifies when using dot-notation. And omit the quotes when completing numbers in bracket-notation.
21:50 Changeset [37756] by timothy@apple.com

Fixes the Profiles panel in the Web Inspector, which was broken by
the JSValue base-class changes. Also renames some functions and
variables in JavaScriptProfileNode.cpp that where title case.

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

Reviewed by Oliver Hunt.

  • inspector/JavaScriptProfile.cpp: (WebCore::toJS): Use a JSObject pointer instead of JSValuePtr so the returned JSValuePtr will be treated as an object and not a value.
  • inspector/JavaScriptProfileNode.cpp: (WebCore::toJS): Ditto.
19:45 Changeset [37755] by cwzwarich@webkit.org

2008-10-20 Cameron Zwarich <zwarich@apple.com>

Reviewed by Maciej Stachowiak.

Remove an untaken branch in CodeGenerator::emitJumpIfFalse(). This
function is never called with a backwards target LabelID, and there is
even an assertion to this effect at the top of the function body.

  • VM/CodeGenerator.cpp: (JSC::CodeGenerator::emitJumpIfFalse):
19:14 Changeset [37754] by weinig@apple.com

WebCore:

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

Reviewed by Anders Carlsson.

Remove FrameLoaderClient::detachedFromParent4. It is no longer used by any port.

  • loader/EmptyClients.h: (WebCore::EmptyFrameLoaderClient::detachedFromParent4):.
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::detachFromParent):
  • loader/FrameLoaderClient.h:

WebKit/gtk:

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

Reviewed by Anders Carlsson.

Remove FrameLoaderClient::detachedFromParent4. It is no longer used by any port.

  • WebCoreSupport/FrameLoaderClientGtk.cpp:
  • WebCoreSupport/FrameLoaderClientGtk.h:

WebKit/mac:

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

Reviewed by Anders Carlsson.

Remove FrameLoaderClient::detachedFromParent4. It is no longer used by any port.

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

WebKit/qt:

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

Reviewed by Anders Carlsson.

Remove FrameLoaderClient::detachedFromParent4. It is no longer used by any port.

  • WebCoreSupport/FrameLoaderClientQt.cpp:
  • WebCoreSupport/FrameLoaderClientQt.h:

WebKit/win:

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

Reviewed by Anders Carlsson.

Remove FrameLoaderClient::detachedFromParent4. It is no longer used by any port.

  • WebFrame.cpp:
  • WebFrame.h:

WebKit/wx:

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

Reviewed by Anders Carlsson.

Remove FrameLoaderClient::detachedFromParent4. It is no longer used by any port.

  • WebKitSupport/FrameLoaderClientWx.cpp:
  • WebKitSupport/FrameLoaderClientWx.h:
18:22 Changeset [37753] by antti@apple.com

2008-10-20 Antti Koivisto <antti@apple.com>

Reviewed by Adele Peterson.

Fix https://bugs.webkit.org/show_bug.cgi?id=21763
REGRESSION (r36108-r36113): Can't load picture content on wired.com galleries
<rdar://problem/6285025


If we get 304 response we need to explicitly check if that completes the frame load.


No test case, simulating the condition is pretty difficult.

  • loader/loader.cpp: (WebCore::Loader::Host::didReceiveResponse):
18:05 Changeset [37752] by andersca@apple.com

2008-10-20 Anders Carlsson <andersca@apple.com>

Reviewed by Mark Rowe.

Work around <rdar://problem/6301728>.


Don't assert that loads are deferred when we're using CFNetwork on Mac or Windows.


  • loader/MainResourceLoader.cpp: (WebCore::MainResourceLoader::didReceiveResponse): (WebCore::MainResourceLoader::didReceiveData): (WebCore::MainResourceLoader::didFinishLoading): (WebCore::MainResourceLoader::didFail):
17:20 Changeset [37751] by cwzwarich@webkit.org

2008-10-20 Cameron Zwarich <zwarich@apple.com>

Not reviewed.

Update the ChangeLog for previous commit to contain meaningful
information.

  • ChangeLog
17:10 Changeset [37750] by cwzwarich@webkit.org

2008-10-20 Cameron Zwarich <zwarich@apple.com>

Rubber-stamped by Sam Weinig.

  • VM/Machine.cpp: (JSC::Machine::privateExecute):
15:47 Changeset [37749] by bdakin@apple.com

2008-10-20 Beth Dakin <bdakin@apple.com>

Reviewed by Adele Peterson.

Speculative fix for <rdar://problem/6242585> CrashTracer: [USER] 19
crashes in Safari at com.apple.WebCore
WebCore::ScrollView::visibleContentRect const + 153

d->m_view can be null and is null-checked at other points in the
code. The logs indicate that this crash occurs when closing a
window containing a PDF, so in case where we crash, the PDF's view
is probably already null. So the fix is to simply add a null-check.

  • page/Frame.cpp: (WebCore::Frame::selectionRect):
14:31 Changeset [37748] by adele@apple.com

2008-10-20 Adele Peterson <adele@apple.com>

Reviewed by Darin Adler.

  • html/HTMLFormElement.cpp: (WebCore::HTMLFormElement::formData): Removed stray increment that would screw up any form with multiple files in it.
14:27 Changeset [37747] by weinig@apple.com

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

Reviewed by Cameron Zwarich.

Fix for https://bugs.webkit.org/show_bug.cgi?id=21683
Don't create intermediate StructureIDs for builtin objects

Second stage in reduce number of StructureIDs created when initializing the
JSGlobalObject.

  • Use putDirectWithoutTransition for the remaining singleton objects to reduce the number of StructureIDs create for about:blank from 132 to 73.
  • kjs/ArrayConstructor.cpp: (JSC::ArrayConstructor::ArrayConstructor):
  • kjs/BooleanConstructor.cpp: (JSC::BooleanConstructor::BooleanConstructor):
  • kjs/BooleanPrototype.cpp: (JSC::BooleanPrototype::BooleanPrototype):
  • kjs/DateConstructor.cpp: (JSC::DateConstructor::DateConstructor):
  • kjs/ErrorConstructor.cpp: (JSC::ErrorConstructor::ErrorConstructor):
  • kjs/ErrorPrototype.cpp: (JSC::ErrorPrototype::ErrorPrototype):
  • kjs/FunctionConstructor.cpp: (JSC::FunctionConstructor::FunctionConstructor):
  • kjs/FunctionPrototype.cpp: (JSC::FunctionPrototype::FunctionPrototype): (JSC::FunctionPrototype::addFunctionProperties):
  • kjs/FunctionPrototype.h: (JSC::FunctionPrototype::createStructureID):
  • kjs/InternalFunction.cpp:
  • kjs/InternalFunction.h: (JSC::InternalFunction::InternalFunction):
  • kjs/JSGlobalObject.cpp: (JSC::JSGlobalObject::reset):
  • kjs/JSObject.h:
  • kjs/MathObject.cpp: (JSC::MathObject::MathObject):
  • kjs/NumberConstructor.cpp: (JSC::NumberConstructor::NumberConstructor):
  • kjs/NumberPrototype.cpp: (JSC::NumberPrototype::NumberPrototype):
  • kjs/ObjectConstructor.cpp: (JSC::ObjectConstructor::ObjectConstructor):
  • kjs/RegExpConstructor.cpp: (JSC::RegExpConstructor::RegExpConstructor):
  • kjs/RegExpPrototype.cpp: (JSC::RegExpPrototype::RegExpPrototype):
  • kjs/StringConstructor.cpp: (JSC::StringConstructor::StringConstructor):
  • kjs/StringPrototype.cpp: (JSC::StringPrototype::StringPrototype):
  • kjs/StructureID.cpp: (JSC::StructureID::dumpStatistics):
  • kjs/StructureID.h: (JSC::StructureID::setPrototypeWithoutTransition):
13:42 Changeset [37746] by weinig@apple.com

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

Rubber-stamped by David Hyatt.

Split LengthBox and LengthSize into their own files.

  • GNUmakefile.am:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/Length.h: (WebCore::Length::blend):
  • platform/LengthBox.h: Copied from platform/Length.h. (WebCore::LengthBox::LengthBox): (WebCore::LengthBox::nonZero):
  • platform/LengthSize.h: Copied from platform/Length.h. (WebCore::LengthSize::LengthSize): (WebCore::LengthSize::setWidth): (WebCore::LengthSize::setHeight): (WebCore::LengthSize::height):
  • platform/Theme.h:
  • rendering/style/FillLayer.h:
  • rendering/style/NinePieceImage.h: (WebCore::NinePieceImage::NinePieceImage):
  • rendering/style/RenderStyle.h:
  • rendering/style/StyleDashboardRegion.h:
  • rendering/style/StyleSurroundData.h:
  • rendering/style/StyleVisualData.h:
13:15 Changeset [37745] by mitz@apple.com
  • Mac build fix
  • WebCore.xcodeproj/project.pbxproj:
12:30 Changeset [37744] by alp@webkit.org

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

Fix autotools dist build target by listing recently added header
files only. Not reviewed.

12:27 Changeset [37743] by hyatt@apple.com

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

Clean up some USE(NEW_THEME) ifdefs (I botched one of them and have broken non-Mac platforms). Also
refactor some of the code that I put in ThemeMac to be cross-platform, since it was in RenderTheme.cpp
originally.

ifdef some methods in RenderTheme.cpp also that are no longer needed with the new Theme.

Reviewed by Adam Roben

  • WebCore.xcodeproj/project.pbxproj:
  • platform/Theme.cpp: Added. (WebCore::Theme::controlSupportsBorder): (WebCore::Theme::controlSupportsPadding):
  • platform/Theme.h:
  • platform/mac/ThemeMac.h:
  • platform/mac/ThemeMac.mm:
  • rendering/RenderTheme.cpp: (WebCore::RenderTheme::adjustStyle):
  • rendering/RenderTheme.h:
12:18 Changeset [37742] by hyatt@apple.com

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

Rename LengthBox's members to have m_ in front of them.

Reviewed by Sam Weinig

  • css/CSSComputedStyleDeclaration.cpp: (WebCore::valueForNinePieceImage): (WebCore::getPositionOffsetValue): (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::mapNinePieceImage):
  • platform/Length.h: (WebCore::LengthBox::LengthBox): (WebCore::LengthBox::left): (WebCore::LengthBox::right): (WebCore::LengthBox::top): (WebCore::LengthBox::bottom): (WebCore::LengthBox::operator==): (WebCore::LengthBox::nonZero):
  • rendering/RenderObject.cpp: (WebCore::RenderObject::paintNinePieceImage): (WebCore::RenderObject::addDashboardRegions):
  • rendering/style/RenderStyle.cpp: (WebCore::positionedObjectMoved): (WebCore::RenderStyle::setClip): (WebCore::RenderStyle::noneDashboardRegions):
  • rendering/style/RenderStyle.h: (WebCore::InheritedFlags::left): (WebCore::InheritedFlags::right): (WebCore::InheritedFlags::top): (WebCore::InheritedFlags::bottom): (WebCore::InheritedFlags::clipLeft): (WebCore::InheritedFlags::clipRight): (WebCore::InheritedFlags::clipTop): (WebCore::InheritedFlags::clipBottom): (WebCore::InheritedFlags::marginTop): (WebCore::InheritedFlags::marginBottom): (WebCore::InheritedFlags::marginLeft): (WebCore::InheritedFlags::marginRight): (WebCore::InheritedFlags::paddingTop): (WebCore::InheritedFlags::paddingBottom): (WebCore::InheritedFlags::paddingLeft): (WebCore::InheritedFlags::paddingRight): (WebCore::InheritedFlags::setLeft): (WebCore::InheritedFlags::setRight): (WebCore::InheritedFlags::setTop): (WebCore::InheritedFlags::setBottom): (WebCore::InheritedFlags::setDashboardRegion): (WebCore::InheritedFlags::setClipLeft): (WebCore::InheritedFlags::setClipRight): (WebCore::InheritedFlags::setClipTop): (WebCore::InheritedFlags::setClipBottom): (WebCore::InheritedFlags::setMarginTop): (WebCore::InheritedFlags::setMarginBottom): (WebCore::InheritedFlags::setMarginLeft): (WebCore::InheritedFlags::setMarginRight): (WebCore::InheritedFlags::setPaddingTop): (WebCore::InheritedFlags::setPaddingBottom): (WebCore::InheritedFlags::setPaddingLeft): (WebCore::InheritedFlags::setPaddingRight):
12:03 Changeset [37741] by timothy@apple.com

Make the Resource panel perform graph updates atomically, so when resources
are added the graph and summary graph update at the same time.

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

Reviewed by Kevin McCullough.

  • inspector/front-end/Resource.js: (WebInspector.Resource.prototype.get startTime): Return -1 if the _startTime property is undefined, null or 0. This allows callers to check for -1 and not the other values when there is no startTime yet. (WebInspector.Resource.prototype.get responseReceivedTime): Ditto. (WebInspector.Resource.prototype.get endTime): Ditto. (WebInspector.Resource.prototype.get duration): Remove an extra empty line. (WebInspector.Resource.prototype.get latency): Ditto. (WebInspector.Resource.prototype.get contentLength): Return 0 if the _duration property is undefined or null. This allows callers to always assume a number. (WebInspector.Resource.prototype.get expectedContentLength): Ditto. (WebInspector.Resource.prototype.get errors): Simplify the case where there is no _errors property yet. (WebInspector.Resource.prototype.set errors): Remove the check if the new value if the same as the previous value, since there is no work to guard. (WebInspector.Resource.prototype.get warnings): Simplify the case where there is no _warnings property yet. (WebInspector.Resource.prototype.set warnings): Remove the check if the new value if the same as the previous value, since there is no work to guard. (WebInspector.Resource.CompareByResponseReceivedTime): Add cases for when the responseReceivedTime is -1. (WebInspector.Resource.CompareByEndTime): Add cases for when the endTime is -1.
  • inspector/front-end/ResourcesPanel.js: (WebInspector.ResourcesPanel.prototype.get searchableViews): If a resource does not have a _resourcesTreeElement yet, exclude it from the searchable views. (WebInspector.ResourcesPanel.prototype.set calculator): Set _staleResource to _resources and call refresh to refresh the entire graph. (WebInspector.ResourcesPanel.prototype.set needsRefresh): Set a timeout if the panel is visible that calls refresh. (WebInspector.ResourcesPanel.prototype.refresh): Create the resource tree element and graph for a resource if it hasn't been created yet. If the boundaries changed during the first stale resource pass, do a full pass of all resources when updating the graphs. (WebInspector.ResourcesPanel.prototype.reset): Remove the legend items. (WebInspector.ResourcesPanel.prototype.addResource): Don't create the tree element and graph, these are now created during the first refresh. (WebInspector.ResourcesPanel.prototype.removeResource): Null check _resourcesTreeElement. (WebInspector.ResourcesPanel.prototype.addMessageToResource): Ditto. (WebInspector.ResourcesPanel.prototype.clearMessages): Ditto. (WebInspector.ResourcesPanel.prototype.refreshResource): Remove most of the work, just add the resource to the _staleResources and set needsRefresh. (WebInspector.ResourcesPanel.prototype.recreateViewForResourceIfNeeded): Null check _resourcesTreeElement. (WebInspector.ResourcesPanel.prototype._sortResourcesIfNeeded): Remove code to clear the timeout used by the deleted _sortResourcesSoonIfNeeded. Remove call to removeChild since the insertBefore call will do it if needed. (WebInspector.ResourcesPanel.prototype._updateGraphDividersIfNeeded): Remove code to clear the timeout used by the deleted _updateGraphDividersSoonIfNeeded. (WebInspector.ResourcesPanel.prototype._updateSummaryGraph): Remove code to clear the timeout used by the deleted _updateSummaryGraphSoon. No need to remove the totalLegendLabel, since all the legend items are removed in one pass right before. (WebInspector.ResourcesPanel.prototype._changeSortingFunction): Set the sortingFunction before the calculator so the correct sortingFunction is there when a refresh happens. (WebInspector.ResourceTimeCalculator.prototype.computeBarGraphPercentages): Set start to 0 when the startTime is -1, since that looks best visually. Also set middle and end to the start and middle (respectfully) when startAtZero. This looks best visually. (WebInspector.ResourceGraph): Start the graph as hidden until the first refresh. (WebInspector.ResourceGraph.prototype.refresh): Remove the hidden class.
11:45 Changeset [37740] by hyatt@apple.com

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

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

Make sure that the haveMetadata flag is set to true for generated images from image buffers, so that
no attempt is made to re-cache the frame from a non-existent image source.

Reviewed by Sam Weinig

  • platform/graphics/cairo/ImageCairo.cpp: (WebCore::BitmapImage::BitmapImage):
  • platform/graphics/cg/ImageCG.cpp: (WebCore::BitmapImage::BitmapImage):
11:23 Changeset [37739] by mitz@apple.com

Reviewed by John Sullivan.

  • make hasARenderedDescendant() have internal linkage
  • editing/CompositeEditCommand.cpp: (WebCore::hasARenderedDescendant):
11:04 Changeset [37738] by alp@webkit.org

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

Partial GTK+/Win32 build fix. Lowercase library name to enable linking
when cross-compiling Windows binaries from Linux: -lWs2_32 -> -lws2_32

  • configure.ac:
10:57 Changeset [37737] by cfleizach@apple.com

Bug 21721: 1 crash in Safari at com.apple.WebCore • WebCore::RenderTableSection::numColumns const + 12

10:42 Changeset [37736] by ggaren@apple.com

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

Reviewed by Anders Carlsson.

  • VM/Machine.cpp: (JSC::Machine::tryCacheGetByID): Removed a redundant and sometimes incorrect cast, which started ASSERTing after Darin's last checkin.
10:40 Changeset [37735] by hyatt@apple.com

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

Avoid some stderr spew from CG by checking if we have a decoder yet in ImageSourceCG.

Reviewed by Darin Adler

  • platform/graphics/cg/ImageSourceCG.cpp: (WebCore::ImageSource::repetitionCount): (WebCore::ImageSource::frameDurationAtIndex):
10:28 Changeset [37734] by ggaren@apple.com

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

Not reviewed.


Re-enable CTI, which I accidentally disabled while checking in fixes
to bytecode.

  • wtf/Platform.h:
10:10 Changeset [37733] by alp@webkit.org

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

Rubber-stamped by Mark Rowe.

Typo fix in function name: mimimum -> minimum.

  • kjs/DateMath.cpp: (JSC::minimumYearForDST): (JSC::equivalentYearForDST):
10:06 Changeset [37732] by alp@webkit.org

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

Reviewed by Mark Rowe.

Use pthread instead of GThread where possible in the GTK+ port. This
fixes issues with global initialisation, particularly on GTK+/Win32
where a late g_thread_init() will cause hangs.

Fix the pthread conditionals in the FTP code to correctly define
threadsafe *_r functions on Windows. Partly fixes the GTK+/Win32
build.

09:50 Changeset [37731] by hyatt@apple.com

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

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

Convert checkboxes and radio buttons on OS X over to the new Theme API.

Reviewed by Adam Roben

  • css/CSSComputedStyleDeclaration.cpp: (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::mapFillSize):
  • platform/Length.h: (WebCore::LengthSize::LengthSize): (WebCore::LengthSize::operator==): (WebCore::LengthSize::width): (WebCore::LengthSize::height): (WebCore::LengthSize::setWidth): (WebCore::LengthSize::setHeight):
  • platform/Theme.h: (WebCore::Theme::controlSize): (WebCore::Theme::controlSupportsBorder): (WebCore::Theme::controlSupportsPadding): (WebCore::Theme::paint): (WebCore::Theme::inflateControlPaintRect):
  • platform/ThemeTypes.h: (WebCore::):
  • platform/mac/ThemeMac.h:
  • platform/mac/ThemeMac.mm: (WebCore::): (WebCore::controlSizeForFont): (WebCore::sizeFromFont): (WebCore::setControlSize): (WebCore::updateStates): (WebCore::inflateRect): (WebCore::checkboxSizes): (WebCore::checkboxMargins): (WebCore::checkboxSize): (WebCore::checkbox): (WebCore::paintCheckbox): (WebCore::radioSizes): (WebCore::radioMargins): (WebCore::radioSize): (WebCore::radio): (WebCore::paintRadio): (WebCore::ThemeMac::baselinePositionAdjustment): (WebCore::ThemeMac::controlSize): (WebCore::ThemeMac::controlSupportsBorder): (WebCore::ThemeMac::controlSupportsPadding): (WebCore::ThemeMac::inflateControlPaintRect): (WebCore::ThemeMac::paint):
  • rendering/RenderBox.cpp: (WebCore::RenderBox::calculateBackgroundSize):
  • rendering/RenderObject.cpp: (WebCore::mustRepaintFillLayers):
  • rendering/RenderTheme.cpp: (WebCore::RenderTheme::adjustStyle): (WebCore::RenderTheme::paint): (WebCore::RenderTheme::baselinePosition): (WebCore::RenderTheme::adjustRepaintRect): (WebCore::RenderTheme::controlStatesForRenderer): (WebCore::RenderTheme::isFocused):
  • rendering/RenderTheme.h:
  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::adjustRepaintRect):
  • rendering/style/FillLayer.cpp: (WebCore::FillLayer::operator==):
09:48 Changeset [37730] by ggaren@apple.com

JavaScriptCore:

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

Reviewed by Darin Adler.


Fixed https://bugs.webkit.org/show_bug.cgi?id=21735
Emit profiling instrumentation only if the Web Inspector's profiling
feature is enabled

22.2% speedup on empty function call benchmark.
2.9% speedup on v8 benchmark.
0.7% speedup on SunSpider.


Lesser but similar speedups in bytecode.

  • VM/CTI.cpp: (JSC::CTI::compileOpCall): (JSC::CTI::privateCompileMainPass): (JSC::CTI::privateCompileSlowCases): Nixed JITed profiler hooks. Profiler hooks now have their own opcodes. Added support for compiling profiler hook opcodes.


(JSC::CodeBlock::dump): Dump support for the new profiling opcodes.

  • VM/CodeGenerator.h:
  • VM/CodeGenerator.cpp: (JSC::CodeGenerator::CodeGenerator): (JSC::CodeGenerator::emitCall): (JSC::CodeGenerator::emitConstruct): Conditionally emit profiling hooks around call and construct, at the call site. (It's easier to get things right this way, if you have profiled code calling non-profiled code. Also, you get a slightly more accurate profile, since you charge the full cost of the call / construct operation to the callee.)


Also, fixed a bug where construct would fetch the ".prototype" property
from the constructor before evaluating the arguments to the constructor,
incorrectly allowing an "invalid constructor" exception to short-circuit
argument evaluation. I encountered this bug when trying to make
constructor exceptions work with profiling.

  • VM/Machine.cpp: (JSC::Machine::callEval): Removed obsolete profiler hooks.

(JSC::Machine::throwException): Added a check for an exception thrown
within a call instruction. We didn't need this before because the call
instruction would check for a valid call before involing the profiler.
(JSC::Machine::execute): Added a didExecute hook at the end of top-level
function invocation, since op_ret no longer does this for us.

(JSC::Machine::privateExecute): Removed obsolete profiler hooks. Added
profiler opcodes. Changed some ++vPC to vPC[x] notation, since the
latter is better for performance, and it makes reasoning about the
current opcode in exception handling much simpler.

(JSC::Machine::cti_op_call_NotJSFunction): Removed obsolete profiler
hooks.

(JSC::Machine::cti_op_create_arguments_no_params): Added missing
CTI_STACK_HACK that I noticed when adding CTI_STACK_HACK to the new
profiler opcode functions.

(JSC::Machine::cti_op_profile_will_call):
(JSC::Machine::cti_op_profile_did_call): The new profiler opcode
functions.

(JSC::Machine::cti_op_construct_NotJSConstruct): Removed obsolete profiler
hooks.

  • VM/Machine.h: (JSC::Machine::isCallOpcode): Helper for exception handling.
  • VM/Opcode.h: Declare new opcodes.
  • kjs/JSGlobalObject.h: (JSC::JSGlobalObject::supportsProfiling): Added virtual interface that allows WebCore to specify whether the target global object has the Web Inspector's profiling feature enabled.
  • profiler/Profiler.cpp: (JSC::Profiler::willExecute): (JSC::Profiler::didExecute): (JSC::Profiler::createCallIdentifier):
  • profiler/Profiler.h: Added support for invoking the profiler with an arbitrary JSValue*, and not a known object. We didn't need this before because the call instruction would check for a valid call before involing the profiler.

WebCore:

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

Reviewed by Darin Adler.

Fixed https://bugs.webkit.org/show_bug.cgi?id=21735
Emit profiling instrumentation only if the Web Inspector's profiling
feature is enabled

  • bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::supportsProfiling):
  • bindings/js/JSDOMWindowBase.h: Implemented the interface for specifying whether a target global object has the Web Inspector's profiling feature enabled.
  • inspector/JavaScriptDebugServer.cpp: (WebCore::JavaScriptDebugServer::recompileAllJSFunctionsSoon): (WebCore::JavaScriptDebugServer::didAddListener): (WebCore::JavaScriptDebugServer::didRemoveListener):
  • inspector/JavaScriptDebugServer.h: Exported an API for recompiling, used by the Settings object.
  • page/Settings.cpp: (WebCore::Settings::Settings): (WebCore::Settings::setDeveloperExtrasEnabled):
  • page/Settings.h: Recompile when the developer menu is enabled/disabled for the first time, to add/remove profiling hooks. In the future, with better Web Inspector UI, we can do this on a page-by-page basis, instead of a global basis.

LayoutTests:

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

Reviewed by Darin Adler.

Test for bugs fixed while working on https://bugs.webkit.org/show_bug.cgi?id=21735
Emit profiling instrumentation only if the Web Inspector's profiling
feature is enabled

  • fast/js/exception-thrown-from-new-expected.txt: Added.
  • fast/js/exception-thrown-from-new.html: Added.
09:42 Changeset [37729] by ap@webkit.org

Add Worker to the results - although it is just a stub right now, it is present in the list
of window properties.

  • fast/dom/Window/window-properties-expected.txt:
09:22 Changeset [37728] by darin@apple.com

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

Reviewed by Geoff Garen.

  • get CTI working on Windows again
  • VM/CTI.cpp: (JSC::CTI::emitCTICall): Add an overload for functions that return JSObject*.
  • VM/CTI.h: Use JSValue* and JSObject* as return types for cti_op functions. Apparently, MSVC doesn't handle returning the JSValuePtr struct in a register. We'll have to look into this more.
  • VM/Machine.cpp: (JSC::Machine::cti_op_convert_this): (JSC::Machine::cti_op_add): (JSC::Machine::cti_op_pre_inc): (JSC::Machine::cti_op_new_object): (JSC::Machine::cti_op_get_by_id): (JSC::Machine::cti_op_get_by_id_second): (JSC::Machine::cti_op_get_by_id_generic): (JSC::Machine::cti_op_get_by_id_fail): (JSC::Machine::cti_op_instanceof): (JSC::Machine::cti_op_del_by_id): (JSC::Machine::cti_op_mul): (JSC::Machine::cti_op_new_func): (JSC::Machine::cti_op_push_activation): (JSC::Machine::cti_op_call_NotJSFunction): (JSC::Machine::cti_op_new_array): (JSC::Machine::cti_op_resolve): (JSC::Machine::cti_op_construct_JSConstructFast): (JSC::Machine::cti_op_construct_NotJSConstruct): (JSC::Machine::cti_op_get_by_val): (JSC::Machine::cti_op_sub): (JSC::Machine::cti_op_lesseq): (JSC::Machine::cti_op_negate): (JSC::Machine::cti_op_resolve_base): (JSC::Machine::cti_op_resolve_skip): (JSC::Machine::cti_op_resolve_global): (JSC::Machine::cti_op_div): (JSC::Machine::cti_op_pre_dec): (JSC::Machine::cti_op_not): (JSC::Machine::cti_op_eq): (JSC::Machine::cti_op_lshift): (JSC::Machine::cti_op_bitand): (JSC::Machine::cti_op_rshift): (JSC::Machine::cti_op_bitnot): (JSC::Machine::cti_op_new_func_exp): (JSC::Machine::cti_op_mod): (JSC::Machine::cti_op_less): (JSC::Machine::cti_op_neq): (JSC::Machine::cti_op_urshift): (JSC::Machine::cti_op_bitxor): (JSC::Machine::cti_op_new_regexp): (JSC::Machine::cti_op_bitor): (JSC::Machine::cti_op_call_eval): (JSC::Machine::cti_op_throw): (JSC::Machine::cti_op_next_pname): (JSC::Machine::cti_op_typeof): (JSC::Machine::cti_op_is_undefined): (JSC::Machine::cti_op_is_boolean): (JSC::Machine::cti_op_is_number): (JSC::Machine::cti_op_is_string): (JSC::Machine::cti_op_is_object): (JSC::Machine::cti_op_is_function): (JSC::Machine::cti_op_stricteq): (JSC::Machine::cti_op_nstricteq): (JSC::Machine::cti_op_to_jsnumber): (JSC::Machine::cti_op_in): (JSC::Machine::cti_op_push_new_scope): (JSC::Machine::cti_op_del_by_val): (JSC::Machine::cti_op_new_error): (JSC::Machine::cti_vm_throw): Change these functions to return pointer types, and never JSValuePtr.
  • VM/Machine.h: Ditto.
09:09 Changeset [37727] by ggaren@apple.com

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

Reviewed by Darin Adler.


Fixed some recent break-age in bytecode mode.

  • VM/CodeBlock.cpp: (JSC::CodeBlock::printStructureIDs): Fixed up an ASSERT caused by Gavin's last checkin. This is a temporary fix so I can keep on moving. I'll send email about what I think is an underlying problem soon.
  • VM/Machine.cpp: (JSC::Machine::privateExecute): Removed a redundant and sometimes incorrect cast, which started ASSERTing after Darin's last checkin.
08:54 Changeset [37726] by hyatt@apple.com

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

Move Length to platform/.

Reviewed by Adam Roben

  • GNUmakefile.am:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • WebCoreSources.bkl:
  • platform/Length.cpp: Copied from rendering/Length.cpp.
  • platform/Length.h: Copied from rendering/Length.h.
08:39 Changeset [37725] by alp@webkit.org

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

Reviewed by Dave Hyatt.

https://bugs.webkit.org/show_bug.cgi?id=21303
[GTK] Scrolling glitches

Implement a buffering scheme to avoid full repaints when scrolling
views or subframes significantly improving scrolling performance.

Improve rendering performance by coalescing large numbers of small
repaints.

Also fixes long-running issues with scrollbar positioning and frame
invalidation.

Rendering in the GTK+ port should be more similar to other ports after
these changes.

  • WebCoreSupport/ChromeClientGtk.cpp: (WebKit::ChromeClient::repaint): (WebKit::ChromeClient::scroll):
  • WebCoreSupport/FrameLoaderClientGtk.cpp: (WebKit::FrameLoaderClient::forceLayout):
  • webkit/webkitwebview.cpp:
08:29 Changeset [37724] by darin@apple.com

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

  • try to fix Qt build
  • bridge/qt/qt_runtime.cpp: (JSC::Bindings::QtRuntimeMetaMethod::connectGetter): Add asObject calls. (JSC::Bindings::QtRuntimeMetaMethod::disconnectGetter): Ditto.
08:28 Changeset [37723] by darin@apple.com

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

  • try to fix Qt build
  • bridge/qt/qt_instance.cpp: (JSC::Bindings::QtInstance::mark): Use JSValue* instead of JSValuePtr. (JSC::Bindings::QtField::valueFromInstance): Ditto.
  • bridge/qt/qt_instance.h: Ditto.
08:24 Changeset [37722] by darin@apple.com

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

  • another similar Windows build fix
  • VM/CTI.cpp: Changed return type to JSObject* instead of JSValuePtr.
08:19 Changeset [37721] by darin@apple.com

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

  • try to fix Windows build
  • VM/CTI.cpp: Use JSValue* instead of JSValuePtr for ctiTrampoline.
  • VM/CTI.h: Ditto.
08:16 Changeset [37720] by darin@apple.com

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

  • try to fix Tiger build
  • bridge/objc/objc_instance.mm: (ObjcInstance::invokeMethod): Add a const_cast to remove the unwanted volatile qualifier. (ObjcInstance::invokeDefaultMethod): Ditto. (ObjcInstance::getValueOfUndefinedField): Ditto.
  • bridge/objc/objc_runtime.mm: (JSC::Bindings::ObjcField::valueFromInstance): Ditto.
08:14 Changeset [37719] by ap@webkit.org

Commit a file that was missing from the previous check-in.

08:13 Changeset [37718] by ap@webkit.org

Reviewed by Darin Adler.

https://bugs.webkit.org/show_bug.cgi?id=21750
Eliminate the notion of "temporary events"

We mark some events as temporary when dispatching, for the sole reason of
manually calling forgetDOMObject when done dispatching.

There doesn't seem to be any reason to call it manually, as JSEvent destructor
will do this automatically right away.

  • bindings/js/ScriptController.cpp:
  • bindings/js/ScriptController.h: Removed ScriptController::finishedWithEvent(), which was called after dispatching a temporary event.
  • dom/ContainerNode.cpp: (WebCore::dispatchChildInsertionEvents): (WebCore::dispatchChildRemovalEvents):
  • dom/EventTarget.h:
  • dom/EventTargetNode.cpp: (WebCore::EventTargetNode::dispatchEvent): (WebCore::EventTargetNode::dispatchGenericEvent): (WebCore::EventTargetNode::dispatchSubtreeModifiedEvent): (WebCore::EventTargetNode::dispatchWindowEvent): (WebCore::EventTargetNode::dispatchUIEvent): (WebCore::EventTargetNode::dispatchKeyEvent): (WebCore::EventTargetNode::dispatchMouseEvent): (WebCore::EventTargetNode::dispatchWheelEvent): (WebCore::EventTargetNode::dispatchWebKitAnimationEvent): (WebCore::EventTargetNode::dispatchWebKitTransitionEvent): (WebCore::EventTargetNode::dispatchEventForType): (WebCore::EventTargetNode::dispatchProgressEvent): (WebCore::EventTargetNode::dispatchStorageEvent):
  • dom/EventTargetNode.h:
  • dom/MessagePort.cpp: (WebCore::MessagePort::dispatchMessages): (WebCore::MessagePort::dispatchCloseEvent): (WebCore::MessagePort::dispatchEvent):
  • dom/MessagePort.h:
  • editing/Editor.cpp: (WebCore::Editor::dispatchCPPEvent): (WebCore::dispatchEditableContentChangedEvents):
  • editing/ReplaceSelectionCommand.cpp: (WebCore::ReplacementFragment::ReplacementFragment):
  • editing/TypingCommand.cpp: (WebCore::TypingCommand::insertText):
  • loader/appcache/DOMApplicationCache.cpp: (WebCore::DOMApplicationCache::dispatchEvent): (WebCore::DOMApplicationCache::callListener):
  • loader/appcache/DOMApplicationCache.h:
  • page/EventHandler.cpp: (WebCore::EventHandler::dispatchDragEvent): (WebCore::EventHandler::keyEvent): (WebCore::EventHandler::handleTextInputEvent):
  • page/FrameView.cpp: (WebCore::FrameView::scheduleEvent): (WebCore::FrameView::updateOverflowStatus): (WebCore::FrameView::dispatchScheduledEvents):
  • page/FrameView.h:
  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::scrollToOffset): (WebCore::RenderLayer::updateOverflowStatus):
  • svg/SVGElement.cpp: (WebCore::SVGElement::sendSVGLoadEventIfPossible):
  • svg/SVGElementInstance.cpp: (WebCore::SVGElementInstance::dispatchEvent):
  • svg/SVGElementInstance.h:
  • xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::dispatchEvent): (WebCore::XMLHttpRequest::dispatchReadyStateChangeEvent): (WebCore::XMLHttpRequest::dispatchXMLHttpRequestProgressEvent):
  • xml/XMLHttpRequest.h:
  • xml/XMLHttpRequestUpload.cpp: (WebCore::XMLHttpRequestUpload::dispatchEvent): (WebCore::XMLHttpRequestUpload::dispatchXMLHttpRequestProgressEvent):
  • xml/XMLHttpRequestUpload.h: Don't pass the tempEvent boolean around.
07:34 Changeset [37717] by ap@webkit.org

Reviewed by Oliver Hunt.

<rdar://problem/6277777> REGRESSION (r36954): XMLHttpRequest not working when
certain WebView delegate actions are taken

  • WebView/WebFrame.mm: (-[WebFrame _attachScriptDebugger]): Don't accidentally create a window shell if there is none yet.
04:32 Changeset [37716] by alp@webkit.org

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

Remove unused includes only. Partial GTK+/Win build fix.

  • platform/graphics/gtk/SimpleFontDataPango.cpp:
02:24 Changeset [37715] by ap@webkit.org

Reviewed by Oliver Hunt.

https://bugs.webkit.org/show_bug.cgi?id=21705
Implement Web Workers client-side API

The implementation is experimental, and disabled by default. It doesn't quite match the
published draft, being influenced by further WHATWG discussions.

This only implements the client-side API, and does not actually create any threads or
global contexts yet.

  • DerivedSources.make: Added DedicatedWorker. SharedWorker is not implemented yet, as I'm still not sure if having separate classes for these helps at all.
  • WebCore.xcodeproj/project.pbxproj: Added new files.
  • bindings/js/JSDOMWindowBase.cpp: (jsDOMWindowBaseWorker): (WebCore::JSDOMWindowBase::put): (setJSDOMWindowBaseWorker): Added window.Worker constructor. Moved JSXSLTProcessorConstructor.h include out of ifdef to match prevailing style.
  • bindings/js/JSDedicatedWorkerConstructor.cpp: Added.
  • bindings/js/JSDedicatedWorkerConstructor.h: Added.
  • bindings/js/JSDedicatedWorkerCustom.cpp: Added. The implementation of event listeners are left custom intentionally, for easier implementation of listeners that are not tied to any Document in the future.
  • dom/DedicatedWorker.cpp: Added.
  • dom/DedicatedWorker.h: Added.
  • dom/DedicatedWorker.idl: Added. Added an implementation that can only load requested scripts for now.
00:29 Changeset [37714] by darin@apple.com

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

Reviewed by Cameron Zwarich.

  • VM/Machine.cpp: (JSC::Machine::cti_op_call_profiler): Use asFunction. (JSC::Machine::cti_vm_lazyLinkCall): Ditto. (JSC::Machine::cti_op_construct_JSConstructFast): Use asObject.
  • kjs/JSCell.h: Re-sort friend classes. Eliminate inheritance from JSValue. Changed cast in asCell from static_cast to reinterpret_cast. Removed JSValue::getNumber(double&) and one of JSValue::getObject overloads.
  • kjs/JSValue.h: Made the private constructor and destructor both non-virtual and also remove the definitions. This class can never be instantiated or derived.

10/19/08:

23:29 Changeset [37713] by darin@apple.com

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

Reviewed by Dan Bernstein.

  • fix assertion seen when opening inspector
  • bindings/js/JSQuarantinedObjectWrapper.cpp: (WebCore::JSQuarantinedObjectWrapper::getOwnPropertySlot): Removed unneeded asObject cast.
22:58 Changeset [37712] by darin@apple.com

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

Reviewed by Cameron Zwarich.

Change JSValuePtr from a typedef into a class. This allows us to support
conversion from JSCell* to JSValuePtr even if JSCell isn't derived from
JSValue.

  • JavaScriptCore.exp: Updated symbols that involve JSValuePtr, since it's now a distinct type.
  • API/APICast.h: (toRef): Extract the JSValuePtr payload explicitly since we can't just cast any more.
  • VM/CTI.cpp: (JSC::CTI::asInteger): Ditto.
  • VM/CodeGenerator.cpp: (JSC::CodeGenerator::addConstant): Get at the payload directly. (JSC::CodeGenerator::emitLoad): Added an overload of JSCell* because otherwise classes derived from JSValue end up calling the bool overload instead of JSValuePtr.
  • VM/CodeGenerator.h: Ditto. Also update traits to use JSValue* and the payload functions.
  • VM/Register.h: Added a JSCell* overload and use of payload functions.
  • kjs/JSCell.h: (JSC::asCell): Use payload function. (JSC::JSValue::asCell): Use JSValue* instead of JSValuePtr. (JSC::JSValuePtr::JSValuePtr): Added. Constructor that takes JSCell* and creates a JSValuePtr.
  • kjs/JSImmediate.h: Added JSValuePtr class. Also updated makeValue and makeInt to work with JSValue* and the payload function.
  • kjs/JSValue.h: Added == and != operators for JSValuePtr. Put them here because eventually all the JSValue functions should go here except what's needed by JSImmediate. Also fix asValue to use JSValue* instead of JSValuePtr.
  • kjs/PropertySlot.h: Change constructor to take JSValuePtr.
  • kjs/protect.h: Update gcProtect functions to work with JSCell* as well as JSValuePtr. Also updated the ProtectedPtr<JSValuePtr> specialization to work more directly. Also changed all the call sites to use gcProtectNullTolerant.
20:49 Changeset [37711] by mitz@apple.com

Rubber-stamped by Timothy Hatcher.

  • remove empty directories and correct the MIME type of inspector images
  • page/inspector: Removed.
  • page/inspector/Images: Removed.
20:43 Changeset [37710] by timothy@apple.com

Make the Web Inspector Resources panel open quicker and change graphs
faster. There was some accidental n2 logic at fault when updating the
graph boundaries.

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

Reviewed by Darin Adler.

  • inspector/front-end/ResourcesPanel.js: (WebInspector.ResourcesPanel.prototype.set calculator): Return early for a null calculator. Remove the second argument passed to _refreshAllResources. (WebInspector.ResourcesPanel.prototype.refresh): Call updateBoundaries on the calculator for all the stale resources before calling refreshResource. Pass true for the first argument of refreshResource to skip the boundary update. (WebInspector.ResourcesPanel.prototype._updateGraphBoundariesIfNeeded): Remove the second argument passed to _refreshAllResources. (WebInspector.ResourcesPanel.prototype._refreshAllResourcesSoon): Remove the skipSort argument since every passed true, and it would be bad to pass false. (WebInspector.ResourcesPanel.prototype._refreshAllResources): Ditto. And if skipBoundaryUpdate is false, call updateBoundaries on the calculator for all the resources before calling refreshResource. Pass true for the first argument of refreshResource to skip the boundary update.
20:43 Changeset [37709] by timothy@apple.com

Visually distinguish resources that loaded from the memory cache.

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

Reviewed by Dan Bernstein.

  • English.lproj/localizedStrings.js: New string.
  • inspector/front-end/Images/timelineHollowPillBlue.png: Added.
  • inspector/front-end/Images/timelineHollowPillGray.png: Added.
  • inspector/front-end/Images/timelineHollowPillGreen.png: Added.
  • inspector/front-end/Images/timelineHollowPillOrange.png: Added.
  • inspector/front-end/Images/timelineHollowPillPurple.png: Added.
  • inspector/front-end/Images/timelineHollowPillRed.png: Added.
  • inspector/front-end/Images/timelineHollowPillYellow.png: Added.
  • inspector/front-end/ResourcesPanel.js: (WebInspector.ResourceCalculator.prototype.computeBarGraphLabels): Add the "(from cache)" suffix to the tooltip. (WebInspector.ResourceTimeCalculator.prototype.computeBarGraphLabels): Add the "(from cache)" suffix to the tooltip. (WebInspector.ResourceGraph): Add the "resource-cached" class.
  • inspector/front-end/inspector.css: New styles to make the timeline bars use the hollow pill images.
20:43 Changeset [37708] by timothy@apple.com

Update the scroll position in the Resources panel when loading
a new page or toggling on small resource rows.

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

Reviewed by Darin Adler.

  • inspector/front-end/ResourcesPanel.js: (WebInspector.ResourcesPanel.prototype.reset): Scroll to the top, since all the resource are being removed. (WebInspector.ResourcesPanel.prototype.removeResource): Call _adjustScrollPosition in case the view is shorter and needs scrolled. (WebInspector.ResourcesPanel.prototype._toggleLargerResources): Ditto. (WebInspector.ResourcesPanel.prototype._adjustScrollPosition): Check the height of the sidebar against the scrollTop and height of the resourcesContainerElement. If the sidebar is shorter, scroll up so the last resource is at the bottom again.
20:43 Changeset [37707] by timothy@apple.com

Show per resource times and sizes when hovering over the bar graph for a resource.

https://bugs.webkit.org/show_bug.cgi?id=14300
rdar://problem/5712802

Reviewed by Cameron Zwarich.

  • English.lproj/localizedStrings.js: Add new strings.
  • inspector/front-end/Images/graphLabelCalloutLeft.png: Added.
  • inspector/front-end/Images/graphLabelCalloutRight.png: Added.
  • inspector/front-end/ResourcesPanel.js: (WebInspector.ResourcesPanel.prototype.refreshResource): Pass the calculator to the ResourceGraph.refresh function. (WebInspector.ResourceCalculator.prototype.computeBarGraphLabels): Default implementation returns the formatted value. (WebInspector.ResourceTimeCalculator.prototype.computeBarGraphLabels): Return discrete values for the latency and download times. Also generate a custom tooltip. (WebInspector.ResourceGraph): Add a mouseover event listener that calls refreshLabelPositions. (WebInspector.ResourceGraph.prototype.refreshLabelPositions): Added. Updates the label positions in case the bar has changed size. (WebInspector.ResourceGraph.prototype.refresh): Set the label text and tooltips.
  • inspector/front-end/inspector.css: New styles for the labels.
17:28 Changeset [37706] by darin@apple.com

JavaScriptCore:

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

Reviewed by Oliver Hunt.

Remove most uses of JSValue, which will be removed in a future patch.

  • VM/Machine.cpp: (JSC::fastToUInt32): Call toUInt32SlowCase function; no longer a member of JSValue.
  • kjs/JSNumberCell.h: (JSC::JSNumberCell::toInt32): Ditto. (JSC::JSNumberCell::toUInt32): Ditto.
  • kjs/JSValue.cpp: (JSC::toInt32SlowCase): Made a non-member function. (JSC::JSValue::toInt32SlowCase): Changed to call non-member function. (JSC::toUInt32SlowCase): More of the same. (JSC::JSValue::toUInt32SlowCase): Ditto.
  • kjs/JSValue.h: Moved static member function so they are no longer member functions at all.
  • VM/CTI.h: Removed forward declaration of JSValue.
  • VM/ExceptionHelpers.h: Ditto.
  • kjs/CallData.h: Ditto.
  • kjs/ConstructData.h: Ditto.
  • kjs/JSGlobalObjectFunctions.h: Ditto.
  • kjs/PropertyMap.h: Ditto.
  • kjs/StructureID.h: Ditto.
  • kjs/collector.h: Ditto.
  • kjs/completion.h: Ditto.
  • kjs/grammar.y: (JSC::makeBitwiseNotNode): Call new non-member toInt32 function. (JSC::makeLeftShiftNode): More of the same. (JSC::makeRightShiftNode): Ditto.
  • kjs/protect.h: Added a specialization for ProtectedPtr<JSValuePtr> so this can be used with JSValuePtr.

JavaScriptGlue:

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

Reviewed by Oliver Hunt.

Remove most uses of JSValue, which will be removed in a future patch.

  • JSValueWrapper.h: Use JSValuePtr instead of JSValue*.

WebCore:

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

Reviewed by Oliver Hunt.

Remove most uses of JSValue, which will be removed in a future patch.

  • bindings/js/JSCustomXPathNSResolver.h: Removed declaration of JSValue and used JSValuePtr instead.
  • bindings/js/JSEventTarget.h: Ditto.
  • bindings/js/JSNodeFilterCondition.h: Ditto.
  • bindings/js/ScheduledAction.h: Ditto.
  • bindings/js/ScriptController.h: Ditto.
  • bindings/objc/WebScriptObjectPrivate.h: Ditto.
  • bridge/c/c_utility.h: Ditto.
  • bridge/jni/jni_jsobject.h: Ditto.
  • bridge/jni/jni_utility.h: Ditto.
  • bridge/objc/WebScriptObject.h: Ditto.
  • dom/Traversal.h: Ditto.
  • inspector/InspectorController.cpp: Ditto.
  • inspector/JavaScriptProfile.h: Ditto.
  • inspector/JavaScriptProfileNode.h: Ditto.
  • loader/FrameLoader.h: Ditto.
  • page/Console.h: Ditto.
  • plugins/MimeTypeArray.h: Ditto.
  • plugins/Plugin.h: Ditto.
  • plugins/PluginArray.h: Ditto.
  • plugins/PluginView.cpp: (WebCore::getString): Ditto. (WebCore::PluginView::performRequest): Ditto.
  • plugins/gtk/PluginViewGtk.cpp: Ditto.
  • plugins/qt/PluginViewQt.cpp: Ditto.
  • plugins/win/PluginViewWin.cpp: Ditto.
  • bridge/qt/qt_class.cpp: (JSC::Bindings::QtClass::fallbackObject): Use JSValuePtr and JSObject* instead of JSValue*.
  • bridge/qt/qt_class.h: Ditto.
  • bridge/qt/qt_instance.cpp: (JSC::Bindings::QtInstance::mark): Ditto. (JSC::Bindings::QtInstance::invokeMethod): Ditto. (JSC::Bindings::QtInstance::defaultValue): Ditto. (JSC::Bindings::QtInstance::stringValue): Ditto. (JSC::Bindings::QtInstance::numberValue): Ditto. (JSC::Bindings::QtInstance::booleanValue): Ditto. (JSC::Bindings::QtInstance::valueOf): Ditto. (JSC::Bindings::QtField::valueFromInstance): Ditto. (JSC::Bindings::QtField::setValueToInstance): Ditto.
  • bridge/qt/qt_instance.h: Ditto.
  • bridge/qt/qt_runtime.cpp: Ditto. (JSC::Bindings::valueRealType): Ditto. (JSC::Bindings::convertValueToQVariant): Ditto. (JSC::Bindings::convertQVariantToValue): Ditto. (JSC::Bindings::findMethodIndex): Ditto. (JSC::Bindings::QtRuntimeMetaMethod::call): Ditto. (JSC::Bindings::QtRuntimeMetaMethod::lengthGetter): Ditto. (JSC::Bindings::QtRuntimeMetaMethod::connectGetter): Ditto. (JSC::Bindings::QtRuntimeMetaMethod::disconnectGetter): Ditto. (JSC::Bindings::QtRuntimeConnectionMethod::call): Ditto. (JSC::Bindings::QtRuntimeConnectionMethod::lengthGetter): Ditto. (JSC::Bindings::QtArray::setValueAt): Ditto. (JSC::Bindings::QtArray::valueAt): Ditto.
  • bridge/qt/qt_runtime.h: Ditto.
  • bridge/testqtbindings.cpp: (main): Use JSValuePtr.

WebKit/mac:

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

Reviewed by Oliver Hunt.

Remove most uses of JSValue, which will be removed in a future patch.

  • WebView/WebFrame.mm: (-[WebFrame _stringByEvaluatingJavaScriptFromString:forceUserGesture:]): Use JSValuePtr instead of JSValue.
  • WebView/WebScriptDebugger.h: Removed declaration of JSValue.

WebKit/qt:

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

Reviewed by Oliver Hunt.

Remove most uses of JSValue, which will be removed in a future patch.

  • Api/qwebframe.cpp: (QWebFrame::evaluateJavaScript): Use JSValuePtr.

WebKit/win:

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

Reviewed by Oliver Hunt.

Remove most uses of JSValue, which will be removed in a future patch.

  • WebScriptCallFrame.cpp: (WebScriptCallFrame::jsValueToString): Use JSValuePtr. (WebScriptCallFrame::stringByEvaluatingJavaScriptFromString): Ditto. (WebScriptCallFrame::valueForVariable): Put more code inside and ifdef. (WebScriptCallFrame::valueByEvaluatingJavaScriptFromString): Ditto.
  • WebScriptCallFrame.h: Use JSValuePtr.
  • WebView.cpp: (WebView::stringByEvaluatingJavaScriptFromString): Use JSValuePtr.

WebKit/wx:

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

Reviewed by Oliver Hunt.

Remove most uses of JSValue, which will be removed in a future patch.

  • WebFrame.cpp: (wxWebFrame::RunScript): Use JSValuePtr.
09:58 Changeset [37705] by darin@apple.com

JavaScriptCore:

2008-10-18 Darin Adler <darin@apple.com>

Reviewed by Oliver Hunt.

Tweak a little more to get closer to where we can make JSValuePtr a class.

  • API/APICast.h: (toJS): Change back to JSValue* here, since we're converting the pointer type.
  • VM/CTI.cpp: (JSC::CTI::unlinkCall): Call asPointer.
  • VM/CTI.h: Cast to JSValue* here, since it's a pointer cast.
  • kjs/DebuggerCallFrame.h: (JSC::DebuggerCallFrame::DebuggerCallFrame): Call noValue.
  • kjs/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData): Call noValue.
  • kjs/JSImmediate.cpp: (JSC::JSImmediate::toObject): Remove unneeded const_cast.
  • kjs/JSWrapperObject.h: (JSC::JSWrapperObject::JSWrapperObject): Call noValue.

JavaScriptGlue:

2008-10-18 Darin Adler <darin@apple.com>

Reviewed by Oliver Hunt.

Tweak a little more to get closer to where we can make JSValuePtr a class.

  • JSObject.cpp: (nativeCallFunction): Call asObject.
  • JSUtils.cpp: (KJSValueToJSObject): Use JSValuePtr and asObject. (JSObjectKJSValue): Ditto. (KJSValueToCFTypeInternal): Ditto. (KJSValueToCFType): Ditto.
  • JSUtils.h: Ditto.
  • UserObjectImp.cpp: (UserObjectImp::callAsFunction): Use JSValuePtr and asObject. (UserObjectImp::userObjectGetter): Ditto. (UserObjectImp::getOwnPropertySlot): Ditto. (UserObjectImp::put): Ditto. (UserObjectImp::toPrimitive): Ditto.
  • UserObjectImp.h: Ditto.

WebCore:

2008-10-18 Darin Adler <darin@apple.com>

Reviewed by Oliver Hunt.

Tweak a little more to get closer to where we can make JSValuePtr a class.

  • bindings/js/JSAudioConstructor.cpp: (WebCore::JSAudioConstructor::JSAudioConstructor): Use asObject. (WebCore::constructAudio): Ditto.
  • bindings/js/JSCSSStyleDeclarationCustom.cpp: (WebCore::JSCSSStyleDeclaration::nameGetter): Ditto.
  • bindings/js/JSCanvasRenderingContext2DCustom.cpp: (WebCore::toHTMLCanvasStyle): Use asString and asObject. (WebCore::JSCanvasRenderingContext2D::setFillColor): Ditto. (WebCore::JSCanvasRenderingContext2D::setStrokeColor): Ditto. (WebCore::JSCanvasRenderingContext2D::drawImage): Ditto. (WebCore::JSCanvasRenderingContext2D::drawImageFromRect): Ditto. (WebCore::JSCanvasRenderingContext2D::setShadow): Ditto. (WebCore::JSCanvasRenderingContext2D::createPattern): Ditto.
  • bindings/js/JSCustomSQLTransactionErrorCallback.cpp: (WebCore::JSCustomSQLTransactionErrorCallback::handleEvent): Use JSValuePtr.
  • bindings/js/JSDOMBinding.cpp: (WebCore::setDOMException): Use noValue.
  • bindings/js/JSDOMBinding.h: (WebCore::getDOMPrototype): Use asObject.
  • bindings/js/JSDOMWindowBase.cpp: (WebCore::showModalDialog): Use noValue. (jsDOMWindowBaseEvent): Use asObject. (jsDOMWindowBaseImage): Ditto. (jsDOMWindowBaseMessageChannel): Ditto. (jsDOMWindowBaseOption): Ditto. (jsDOMWindowBaseXMLHttpRequest): Ditto. (jsDOMWindowBaseAudio): Ditto. (jsDOMWindowBaseXSLTProcessor): Ditto. (WebCore::JSDOMWindowBase::childFrameGetter): Ditto. (WebCore::JSDOMWindowBase::indexGetter): Ditto. (WebCore::JSDOMWindowBase::namedItemGetter): Ditto. (WebCore::JSDOMWindowBase::getOwnPropertySlot): Ditto. (WebCore::JSDOMWindowBase::findJSEventListener): Ditto. (WebCore::JSDOMWindowBase::findOrCreateJSEventListener): Ditto. (WebCore::JSDOMWindowBase::findJSUnprotectedEventListener): Ditto. (WebCore::JSDOMWindowBase::findOrCreateJSUnprotectedEventListener): Ditto. (windowProtoFuncOpen): Use noValue. (WebCore::toJSDOMWindow): Use asObject.
  • bindings/js/JSDOMWindowCustom.cpp: (WebCore::setTimeoutOrInterval): Use asString. (WebCore::toDOMWindow): Use asObject.
  • bindings/js/JSEventListener.cpp: (WebCore::JSAbstractEventListener::handleEvent): Use noValue. (WebCore::JSLazyEventListener::parseCode): Use asObject.
  • bindings/js/JSHTMLCollectionCustom.cpp: (WebCore::JSHTMLCollection::nameGetter): Use asObject.
  • bindings/js/JSHTMLDocumentCustom.cpp: (WebCore::JSHTMLDocument::nameGetter): Ditto.
  • bindings/js/JSHTMLElementCustom.cpp: (WebCore::JSHTMLElement::pushEventHandlerScope): Ditto.
  • bindings/js/JSHTMLFormElementCustom.cpp: (WebCore::JSHTMLFormElement::nameGetter): Ditto.
  • bindings/js/JSHTMLFrameSetElementCustom.cpp: (WebCore::JSHTMLFrameSetElement::nameGetter): Ditto.
  • bindings/js/JSHTMLOptionElementConstructor.cpp: (WebCore::JSHTMLOptionElementConstructor::JSHTMLOptionElementConstructor): Ditto. (WebCore::constructHTMLOptionElement): Ditto.
  • bindings/js/JSHTMLOptionsCollectionCustom.cpp: (WebCore::JSHTMLOptionsCollection::remove): Ditto.
  • bindings/js/JSImageConstructor.cpp: (WebCore::JSImageConstructor::JSImageConstructor): Ditto. (WebCore::constructImage): Ditto.
  • bindings/js/JSInspectedObjectWrapper.cpp: (WebCore::JSInspectedObjectWrapper::wrap): Ditto.
  • bindings/js/JSInspectorCallbackWrapper.cpp: (WebCore::JSInspectorCallbackWrapper::wrap): Ditto.
  • bindings/js/JSJavaScriptCallFrameCustom.cpp: (WebCore::JSJavaScriptCallFrame::evaluate): Use noValue.
  • bindings/js/JSMessageChannelConstructor.cpp: (WebCore::JSMessageChannelConstructor::JSMessageChannelConstructor): Use asObject. (WebCore::JSMessageChannelConstructor::construct): Ditto.
  • bindings/js/JSMimeTypeArrayCustom.cpp: (WebCore::JSMimeTypeArray::nameGetter): Ditto.
  • bindings/js/JSNamedNodeMapCustom.cpp: (WebCore::JSNamedNodeMap::nameGetter): Ditto.
  • bindings/js/JSNamedNodesCollection.cpp: (WebCore::JSNamedNodesCollection::lengthGetter): Ditto. (WebCore::JSNamedNodesCollection::indexGetter): Ditto.
  • bindings/js/JSNodeFilterCustom.cpp: (WebCore::toNodeFilter): Ditto.
  • bindings/js/JSNodeListCustom.cpp: (WebCore::JSNodeList::nameGetter): Ditto.
  • bindings/js/JSPluginArrayCustom.cpp: (WebCore::JSPluginArray::nameGetter): Ditto.
  • bindings/js/JSPluginCustom.cpp: (WebCore::JSPlugin::nameGetter): Ditto.
  • bindings/js/JSPluginElementFunctions.cpp: (WebCore::runtimeObjectGetter): Ditto. (WebCore::runtimeObjectPropertyGetter): Ditto.
  • bindings/js/JSQuarantinedObjectWrapper.cpp: (WebCore::JSQuarantinedObjectWrapper::asWrapper): Ditto. (WebCore::JSQuarantinedObjectWrapper::getOwnPropertySlot): Ditto. (WebCore::JSQuarantinedObjectWrapper::construct): Ditto.
  • bindings/js/JSRGBColor.cpp: (jsRGBColorRed): Ditto. (jsRGBColorGreen): Ditto. (jsRGBColorBlue): Ditto.
  • bindings/js/JSSQLResultSetRowListCustom.cpp: (WebCore::JSSQLResultSetRowList::item): Use noValue.
  • bindings/js/JSStorageCustom.cpp: (WebCore::JSStorage::nameGetter): Use asObject. (WebCore::JSStorage::deleteProperty): Ditto. (WebCore::JSStorage::customPut): Ditto.
  • bindings/js/JSStyleSheetListCustom.cpp: (WebCore::JSStyleSheetList::nameGetter): Ditto.
  • bindings/js/JSXMLHttpRequestConstructor.cpp: (WebCore::JSXMLHttpRequestConstructor::JSXMLHttpRequestConstructor): Ditto.
  • bindings/js/JSXSLTProcessorCustom.cpp: (WebCore::JSXSLTProcessor::importStylesheet): Ditto. (WebCore::JSXSLTProcessor::transformToFragment): Ditto. (WebCore::JSXSLTProcessor::transformToDocument): Ditto.
  • bindings/js/ScriptController.cpp: (WebCore::ScriptController::evaluate): Use noValue.
  • bindings/objc/DOMInternal.mm: (-[WebScriptObject _initializeScriptDOMNodeImp]): Ditto.
  • bindings/objc/WebScriptObject.mm: (-[WebScriptObject evaluateWebScript:]): Use JSValuePtr. (-[WebScriptObject valueForKey:]): Ditto. (-[WebScriptObject webScriptValueAtIndex:]): Ditto. (+[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]): Use asObject and asString.
  • bindings/scripts/CodeGeneratorJS.pm: Use asObject.
  • bridge/c/c_instance.h: Use JSValuePtr.
  • bridge/c/c_runtime.cpp: (JSC::Bindings::CField::setValueToInstance): Ditto.
  • bridge/c/c_utility.cpp: (JSC::Bindings::convertValueToNPVariant): Use asObject.
  • bridge/jni/jni_instance.cpp: (JavaInstance::booleanValue): Use JSValuePtr. (JavaInstance::invokeMethod): Ditto. And noValue.
  • bridge/jni/jni_jsobject.mm: (JavaJSObject::getSlot): Ditto. (JavaJSObject::convertValueToJObject): Ditto.
  • bridge/jni/jni_runtime.cpp: (JavaField::dispatchValueFromInstance): Ditto. (JavaField::valueFromInstance): Ditto. (JavaField::dispatchSetValueToInstance): Ditto. (JavaField::setValueToInstance): Ditto. (JavaArray::setValueAt): Ditto. (JavaArray::valueAt): Ditto.
  • bridge/jni/jni_runtime.h: Ditto.
  • bridge/jni/jni_utility.cpp: (JSC::Bindings::convertArrayInstanceToJavaArray): Take a JSArray* instead of a JSValue*. (JSC::Bindings::convertValueToJValue): Use asObject and asArray.
  • bridge/objc/objc_class.h: Use JSValuePtr.
  • bridge/objc/objc_instance.h: Ditto.
  • bridge/objc/objc_runtime.h: Ditto.
  • bridge/objc/objc_runtime.mm: (JSC::Bindings::callObjCFallbackObject): Use asObject.
  • bridge/objc/objc_utility.h: Use JSValuePtr.
  • bridge/objc/objc_utility.mm: (JSC::Bindings::convertValueToObjcValue): Use JSValuePtr and asObject. (JSC::Bindings::convertObjcValueToValue): Use jsUndefined() instead of 0.
  • bridge/runtime.cpp: (JSC::Bindings::Instance::getValueOfField): Use JSValuePtr. (JSC::Bindings::Instance::setValueOfField): Ditto.
  • bridge/runtime_array.cpp: (JSC::RuntimeArray::lengthGetter): Use JSValuePtr and asObject. (JSC::RuntimeArray::indexGetter): Ditto.
  • bridge/runtime_array.h: Ditto.
  • bridge/runtime_method.cpp: (JSC::RuntimeMethod::lengthGetter): Ditto. (JSC::callRuntimeMethod): Ditto.
  • bridge/runtime_object.cpp: (JSC::RuntimeObjectImp::fallbackObjectGetter): Ditto. (JSC::RuntimeObjectImp::fieldGetter): Ditto. (JSC::RuntimeObjectImp::methodGetter): Ditto.
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::executeScript): Use noValue.
  • page/Console.cpp: (WebCore::Console::trace): Use asInternalFunction.

WebKit/mac:

2008-10-18 Darin Adler <darin@apple.com>

Reviewed by Oliver Hunt.

Tweak a little more to get closer to where we can make JSValuePtr a class.

  • WebView/WebScriptDebugDelegate.mm: (-[WebScriptCallFrame _convertValueToObjcValue:]): Use JSValuePtr. (-[WebScriptCallFrame exception]): Ditto. (-[WebScriptCallFrame evaluateWebScript:]): Ditto. And noValue.
  • WebView/WebScriptDebugger.mm: (WebScriptDebugger::WebScriptDebugger): Use new DebuggerCallFrame constructor that doesn't require explicitly passing an exception.
  • WebView/WebView.mm: (aeDescFromJSValue): Use JSValuePtr. (-[WebView aeDescByEvaluatingJavaScriptFromString:]): Ditto.
09:41 Changeset [37704] by mitz@apple.com

Reviewed by Timothy Hatcher.

  • lower the default button repaint frequency
  • rendering/RenderButton.cpp: (WebCore::RenderButton::styleDidChange): Changed the timer interval from 0.01 to 0.03.
00:56 Changeset [37703] by mrowe@apple.com

Versioning.

00:55 Changeset [37702] by mrowe@apple.com

New tag.

10/18/08:

23:46 Changeset [37701] by mrowe@apple.com

Versioning.

23:32 Changeset [37700] by mitz@apple.com
  • build fix
  • WebScriptCallFrame.cpp: (WebScriptCallFrame::jsValueToString):
23:26 Changeset [37699] by mitz@apple.com

Reviewed by Mark Rowe.

  • Windows build fix
  • rendering/RenderThemeSafari.cpp: (WebCore::RenderThemeSafari::paintMediaFullscreenButton): (WebCore::RenderThemeSafari::paintMediaMuteButton): (WebCore::RenderThemeSafari::paintMediaPlayButton): (WebCore::RenderThemeSafari::paintMediaSeekBackButton): (WebCore::RenderThemeSafari::paintMediaSeekForwardButton): (WebCore::RenderThemeSafari::paintMediaSliderThumb):
22:20 Changeset [37698] by darin@apple.com

2008-10-18 Darin Adler <darin@apple.com>

  • fix non-all-in-one build
  • kjs/completion.h: (JSC::Completion::Completion): Add include of JSValue.h.
22:17 Changeset [37697] by darin@apple.com

2008-10-18 Darin Adler <darin@apple.com>

Reviewed by Oliver Hunt.

  • fix assertions I introduced with my casting changes

These were showing up as failures in the JavaScriptCore tests.

  • VM/Machine.cpp: (JSC::Machine::cti_op_instanceof): Remove the bogus asCell casting that was at the top of the function, and instead cast at the point of use. (JSC::Machine::cti_op_construct_NotJSConstruct): Moved the cast to object after checking the construct type.
21:31 Changeset [37696] by darin@apple.com

2008-10-18 Darin Adler <darin@apple.com>

  • fix non-all-in-one build
  • kjs/JSGlobalObjectFunctions.h: Add include of JSImmedate.h (for now).
21:21 Changeset [37695] by darin@apple.com

2008-10-18 Darin Adler <darin@apple.com>

  • fix build
  • kjs/interpreter.h: Include JSValue.h instead of JSImmediate.h.
21:19 Changeset [37694] by darin@apple.com

2008-10-18 Darin Adler <darin@apple.com>

  • kjs/interpreter.h: Fix include of JSImmediate.h.
21:16 Changeset [37693] by darin@apple.com

2008-10-18 Darin Adler <darin@apple.com>

  • fix non-all-in-one build
  • kjs/interpreter.h: Add include of JSImmedate.h.
21:06 Changeset [37692] by darin@apple.com

2008-10-18 Darin Adler <darin@apple.com>

  • fix non-all-in-one build
  • kjs/ConstructData.h: Add include of JSImmedate.h (for now).
20:05 Changeset [37691] by darin@apple.com

2008-10-18 Darin Adler <darin@apple.com>

  • try to fix Windows build
  • VM/Machine.cpp: (JSC::Machine::Machine): Use JSCell* type since MSVC seems to only allow calling ~JSCell directly if it's a JSCell*.
19:59 Changeset [37690] by mrowe@apple.com

Merge r37661.

19:53 Changeset [37689] by mitz@apple.com

WebCore:

Reviewed by Sam Weinig.

Add a cache setting for how long decoded image data should be allowed to
persist in memory after the image has died. By default, this is set to
0, which means "forever".

  • loader/Cache.cpp: (WebCore::Cache::Cache): Initialize m_deadDecodedDataDeletionInterval.
  • loader/Cache.h: (WebCore::Cache::setDeadDecodedDataDeletionInterval): Added a setter. (WebCore::Cache::deadDecodedDataDeletionInterval): Added a getter.
  • loader/CachedImage.cpp: (WebCore::CachedImage::CachedImage): Initialize the decoded data deletion timer. (WebCore::CachedImage::decodedDataDeletionTimerFired): Added. Destroys the decoded image data. (WebCore::CachedImage::addClient): Stop the timer if it is active. (WebCore::CachedImage::allClientsRemoved): Start the decoded data deletion timer.
  • loader/CachedImage.h:

WebKit/mac:

Reviewed by Sam Weinig.

  • WebView/WebView.mm: (+[WebView _setCacheModel:]): In the primary web browser model, set the cache's dead decoded data deletion interval to 60 seconds.

WebKit/win:

2008-10-18 Dan Bernstein <mitz@apple.com>

Reviewed by Sam Weinig.

  • WebView.cpp: (WebView::setCacheModel): In the primary web browser model, set the cache's dead decoded data deletion interval to 60 seconds.
19:35 Changeset [37688] by mrowe@apple.com

Merge r37606.

19:35 Changeset [37687] by mrowe@apple.com

Merge r37598.

19:14 Changeset [37686] by darin@apple.com

Fix log typo.

19:12 Changeset [37685] by darin@apple.com

2008-10-18 Darin Adler <darin@apple.com>

Reviewed by Dan Bernstein.

  • html/HTMLFormElement.cpp: (WebCore::HTMLFormElement::formData): Fix loop that goes through the FormDataList to go two at a time in a clearer way. My last patch screwed up the way it got form content from the items. This "two at a time" a confusing way to do things, which explains why I got it wrong last time through, but I decided to just fix it locally for now rather than changing the design of FormDataList.
18:52 Changeset [37684] by darin@apple.com

JavaScriptCore:

2008-10-18 Darin Adler <darin@apple.com>

Reviewed by Cameron Zwarich.

Use JSValuePtr everywhere instead of JSValue*. In the future, we'll be
changing JSValuePtr to be a class, and then eventually renaming it
to JSValue once that's done.

  • JavaScriptCore.exp: Update entry points, since some now take JSValue* instead of const JSValue*.
  • API/APICast.h:
  • API/JSCallbackConstructor.h:
  • API/JSCallbackFunction.cpp:
  • API/JSCallbackFunction.h:
  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h:
  • API/JSContextRef.cpp:
  • API/JSObjectRef.cpp:
  • API/JSValueRef.cpp:
  • VM/CTI.cpp:
  • VM/CTI.h:
  • VM/CodeBlock.cpp:
  • VM/CodeBlock.h:
  • VM/CodeGenerator.cpp:
  • VM/CodeGenerator.h:
  • VM/ExceptionHelpers.cpp:
  • VM/ExceptionHelpers.h:
  • VM/JSPropertyNameIterator.cpp:
  • VM/JSPropertyNameIterator.h:
  • VM/Machine.cpp:
  • VM/Machine.h:
  • VM/Register.h:
  • kjs/ArgList.cpp:
  • kjs/ArgList.h:
  • kjs/Arguments.cpp:
  • kjs/Arguments.h:
  • kjs/ArrayConstructor.cpp:
  • kjs/ArrayPrototype.cpp:
  • kjs/BooleanConstructor.cpp:
  • kjs/BooleanConstructor.h:
  • kjs/BooleanObject.h:
  • kjs/BooleanPrototype.cpp:
  • kjs/CallData.cpp:
  • kjs/CallData.h:
  • kjs/ConstructData.cpp:
  • kjs/ConstructData.h:
  • kjs/DateConstructor.cpp:
  • kjs/DateInstance.h:
  • kjs/DatePrototype.cpp:
  • kjs/DebuggerCallFrame.cpp:
  • kjs/DebuggerCallFrame.h:
  • kjs/ErrorConstructor.cpp:
  • kjs/ErrorPrototype.cpp:
  • kjs/ExecState.cpp:
  • kjs/ExecState.h:
  • kjs/FunctionConstructor.cpp:
  • kjs/FunctionPrototype.cpp:
  • kjs/GetterSetter.cpp:
  • kjs/GetterSetter.h:
  • kjs/InternalFunction.h:
  • kjs/JSActivation.cpp:
  • kjs/JSActivation.h:
  • kjs/JSArray.cpp:
  • kjs/JSArray.h:
  • kjs/JSCell.cpp:
  • kjs/JSCell.h:
  • kjs/JSFunction.cpp:
  • kjs/JSFunction.h:
  • kjs/JSGlobalData.h:
  • kjs/JSGlobalObject.cpp:
  • kjs/JSGlobalObject.h:
  • kjs/JSGlobalObjectFunctions.cpp:
  • kjs/JSGlobalObjectFunctions.h:
  • kjs/JSImmediate.cpp:
  • kjs/JSImmediate.h:
  • kjs/JSNotAnObject.cpp:
  • kjs/JSNotAnObject.h:
  • kjs/JSNumberCell.cpp:
  • kjs/JSNumberCell.h:
  • kjs/JSObject.cpp:
  • kjs/JSObject.h:
  • kjs/JSStaticScopeObject.cpp:
  • kjs/JSStaticScopeObject.h:
  • kjs/JSString.cpp:
  • kjs/JSString.h:
  • kjs/JSValue.h:
  • kjs/JSVariableObject.h:
  • kjs/JSWrapperObject.h:
  • kjs/MathObject.cpp:
  • kjs/NativeErrorConstructor.cpp:
  • kjs/NumberConstructor.cpp:
  • kjs/NumberConstructor.h:
  • kjs/NumberObject.cpp:
  • kjs/NumberObject.h:
  • kjs/NumberPrototype.cpp:
  • kjs/ObjectConstructor.cpp:
  • kjs/ObjectPrototype.cpp:
  • kjs/ObjectPrototype.h:
  • kjs/PropertyMap.h:
  • kjs/PropertySlot.cpp:
  • kjs/PropertySlot.h:
  • kjs/RegExpConstructor.cpp:
  • kjs/RegExpConstructor.h:
  • kjs/RegExpMatchesArray.h:
  • kjs/RegExpObject.cpp:
  • kjs/RegExpObject.h:
  • kjs/RegExpPrototype.cpp:
  • kjs/Shell.cpp:
  • kjs/StringConstructor.cpp:
  • kjs/StringObject.cpp:
  • kjs/StringObject.h:
  • kjs/StringObjectThatMasqueradesAsUndefined.h:
  • kjs/StringPrototype.cpp:
  • kjs/StructureID.cpp:
  • kjs/StructureID.h:
  • kjs/collector.cpp:
  • kjs/collector.h:
  • kjs/completion.h:
  • kjs/grammar.y:
  • kjs/interpreter.cpp:
  • kjs/interpreter.h:
  • kjs/lookup.cpp:
  • kjs/lookup.h:
  • kjs/nodes.h:
  • kjs/operations.cpp:
  • kjs/operations.h:
  • kjs/protect.h:
  • profiler/ProfileGenerator.cpp: Replace JSValue* with JSValuePtr.

JavaScriptGlue:

2008-10-18 Darin Adler <darin@apple.com>

Reviewed by Cameron Zwarich.

Use JSValuePtr everywhere instead of JSValue*. In the future, we'll be
changing JSValuePtr to be a class, and then eventually renaming it
to JSValue once that's done.

  • JSObject.cpp:
  • JSValueWrapper.cpp:
  • UserObjectImp.cpp:
  • UserObjectImp.h: Replace JSValue* with JSValuePtr.

WebCore:

2008-10-18 Darin Adler <darin@apple.com>

Reviewed by Cameron Zwarich.

Use JSValuePtr everywhere instead of JSValue*. In the future, we'll be
changing JSValuePtr to be a class, and then eventually renaming it
to JSValue once that's done.

  • bindings/js/JSAttrCustom.cpp:
  • bindings/js/JSCSSRuleCustom.cpp:
  • bindings/js/JSCSSStyleDeclarationCustom.cpp:
  • bindings/js/JSCSSValueCustom.cpp:
  • bindings/js/JSCanvasPixelArrayCustom.h:
  • bindings/js/JSCanvasRenderingContext2DCustom.cpp:
  • bindings/js/JSClipboardCustom.cpp:
  • bindings/js/JSConsoleCustom.cpp:
  • bindings/js/JSCustomSQLStatementCallback.cpp:
  • bindings/js/JSCustomSQLStatementErrorCallback.cpp:
  • bindings/js/JSCustomSQLTransactionCallback.cpp:
  • bindings/js/JSCustomSQLTransactionErrorCallback.cpp:
  • bindings/js/JSCustomVoidCallback.cpp:
  • bindings/js/JSCustomVoidCallback.h:
  • bindings/js/JSCustomXPathNSResolver.cpp:
  • bindings/js/JSDOMApplicationCacheCustom.cpp:
  • bindings/js/JSDOMBinding.cpp:
  • bindings/js/JSDOMBinding.h:
  • bindings/js/JSDOMWindowBase.cpp:
  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSDOMWindowCustom.cpp:
  • bindings/js/JSDOMWindowCustom.h:
  • bindings/js/JSDOMWindowShell.cpp:
  • bindings/js/JSDOMWindowShell.h:
  • bindings/js/JSDatabaseCustom.cpp:
  • bindings/js/JSDocumentCustom.cpp:
  • bindings/js/JSElementCustom.cpp:
  • bindings/js/JSEventCustom.cpp:
  • bindings/js/JSEventListener.cpp:
  • bindings/js/JSEventTarget.cpp:
  • bindings/js/JSEventTargetBase.h:
  • bindings/js/JSEventTargetNodeCustom.cpp:
  • bindings/js/JSHTMLAllCollection.h:
  • bindings/js/JSHTMLAppletElementCustom.cpp:
  • bindings/js/JSHTMLCollectionCustom.cpp:
  • bindings/js/JSHTMLDocumentCustom.cpp:
  • bindings/js/JSHTMLEmbedElementCustom.cpp:
  • bindings/js/JSHTMLFormElementCustom.cpp:
  • bindings/js/JSHTMLFrameElementCustom.cpp:
  • bindings/js/JSHTMLFrameSetElementCustom.cpp:
  • bindings/js/JSHTMLIFrameElementCustom.cpp:
  • bindings/js/JSHTMLInputElementCustom.cpp:
  • bindings/js/JSHTMLObjectElementCustom.cpp:
  • bindings/js/JSHTMLOptionsCollectionCustom.cpp:
  • bindings/js/JSHTMLSelectElementCustom.cpp:
  • bindings/js/JSHTMLSelectElementCustom.h:
  • bindings/js/JSHistoryCustom.cpp:
  • bindings/js/JSImageDataCustom.cpp:
  • bindings/js/JSInspectedObjectWrapper.cpp:
  • bindings/js/JSInspectedObjectWrapper.h:
  • bindings/js/JSInspectorCallbackWrapper.cpp:
  • bindings/js/JSInspectorCallbackWrapper.h:
  • bindings/js/JSJavaScriptCallFrameCustom.cpp:
  • bindings/js/JSLocationCustom.cpp:
  • bindings/js/JSMessagePortCustom.cpp:
  • bindings/js/JSMimeTypeArrayCustom.cpp:
  • bindings/js/JSNamedNodeMapCustom.cpp:
  • bindings/js/JSNamedNodesCollection.cpp:
  • bindings/js/JSNamedNodesCollection.h:
  • bindings/js/JSNavigatorCustom.cpp:
  • bindings/js/JSNodeCustom.cpp:
  • bindings/js/JSNodeFilterCondition.cpp:
  • bindings/js/JSNodeFilterCustom.cpp:
  • bindings/js/JSNodeIteratorCustom.cpp:
  • bindings/js/JSNodeListCustom.cpp:
  • bindings/js/JSPluginArrayCustom.cpp:
  • bindings/js/JSPluginCustom.cpp:
  • bindings/js/JSPluginElementFunctions.cpp:
  • bindings/js/JSPluginElementFunctions.h:
  • bindings/js/JSQuarantinedObjectWrapper.cpp:
  • bindings/js/JSQuarantinedObjectWrapper.h:
  • bindings/js/JSRGBColor.cpp:
  • bindings/js/JSRGBColor.h:
  • bindings/js/JSSQLResultSetRowListCustom.cpp:
  • bindings/js/JSSQLTransactionCustom.cpp:
  • bindings/js/JSSVGElementInstanceCustom.cpp:
  • bindings/js/JSSVGLengthCustom.cpp:
  • bindings/js/JSSVGMatrixCustom.cpp:
  • bindings/js/JSSVGPathSegCustom.cpp:
  • bindings/js/JSSVGPathSegListCustom.cpp:
  • bindings/js/JSSVGPointListCustom.cpp:
  • bindings/js/JSSVGTransformListCustom.cpp:
  • bindings/js/JSStorageCustom.cpp:
  • bindings/js/JSStyleSheetCustom.cpp:
  • bindings/js/JSStyleSheetListCustom.cpp:
  • bindings/js/JSTextCustom.cpp:
  • bindings/js/JSTreeWalkerCustom.cpp:
  • bindings/js/JSXMLHttpRequestCustom.cpp:
  • bindings/js/JSXMLHttpRequestUploadCustom.cpp:
  • bindings/js/JSXSLTProcessorCustom.cpp:
  • bindings/js/ScheduledAction.cpp:
  • bindings/js/ScheduledAction.h:
  • bindings/js/ScriptController.cpp:
  • bindings/js/ScriptController.h:
  • bindings/objc/WebScriptObject.mm:
  • bindings/scripts/CodeGeneratorJS.pm:
  • bridge/NP_jsobject.cpp:
  • bridge/c/c_instance.cpp:
  • bridge/c/c_instance.h:
  • bridge/c/c_runtime.cpp:
  • bridge/c/c_runtime.h:
  • bridge/c/c_utility.cpp:
  • bridge/jni/jni_instance.cpp:
  • bridge/jni/jni_instance.h:
  • bridge/jni/jni_jsobject.mm:
  • bridge/jni/jni_objc.mm:
  • bridge/jni/jni_runtime.cpp:
  • bridge/jni/jni_runtime.h:
  • bridge/jni/jni_utility.cpp:
  • bridge/objc/objc_class.mm:
  • bridge/objc/objc_instance.h:
  • bridge/objc/objc_instance.mm:
  • bridge/objc/objc_runtime.h:
  • bridge/objc/objc_runtime.mm:
  • bridge/objc/objc_utility.h:
  • bridge/objc/objc_utility.mm:
  • bridge/runtime.h:
  • bridge/runtime_array.cpp:
  • bridge/runtime_array.h:
  • bridge/runtime_method.cpp:
  • bridge/runtime_method.h:
  • bridge/runtime_object.cpp:
  • bridge/runtime_object.h:
  • inspector/JavaScriptCallFrame.cpp:
  • inspector/JavaScriptCallFrame.h:
  • inspector/JavaScriptProfile.cpp:
  • inspector/JavaScriptProfileNode.cpp:
  • loader/FrameLoader.cpp:
  • loader/FrameLoader.h:
  • page/Console.cpp:
  • page/Console.h:
  • plugins/MimeTypeArray.h:
  • plugins/Plugin.h:
  • plugins/PluginArray.h:
  • xml/XMLHttpRequest.cpp: Replace JSValue* with JSValuePtr.
16:46 Changeset [37683] by mrowe@apple.com

Export logging symbols in debug.

16:19 Changeset [37682] by darin@apple.com

2008-10-18 Darin Adler <darin@apple.com>

  • VM/Machine.cpp: (JSC::Machine::cti_op_call_eval): Removed stray parentheses from my last check-in.
16:08 Changeset [37681] by darin@apple.com

JavaScriptCore:

2008-10-18 Darin Adler <darin@apple.com>

Reviewed by Oliver Hunt.

Remove casts from JSValue* to derived classes, replacing them with
calls to inline casting functions. These functions are also a bit
better than aidrect cast because they also do a runtime assertion.

Removed use of 0 as for JSValue*, changing call sites to use a
noValue() function instead.

Move things needed by classes derived from JSValue out of the class,
since the classes won't be deriving from JSValue any more soon.

I did most of these changes by changing JSValue to not be JSValue* any
more, then fixing a lot of the compilation problems, then rolling out
the JSValue change.

1.011x as fast on SunSpider (presumably due to some of the Machine.cpp changes)

  • API/APICast.h: Removed unneeded forward declarations.
  • API/JSCallbackObject.h: Added an asCallbackObject function for casting.
  • API/JSCallbackObjectFunctions.h: (JSC::JSCallbackObject::asCallbackObject): Added. (JSC::JSCallbackObject::getOwnPropertySlot): Use asObject. (JSC::JSCallbackObject::call): Use noValue. (JSC::JSCallbackObject::staticValueGetter): Use asCallbackObject. (JSC::JSCallbackObject::staticFunctionGetter): Ditto. (JSC::JSCallbackObject::callbackGetter): Ditto.
  • JavaScriptCore.xcodeproj/project.pbxproj: Added RegExpMatchesArray.h.
  • VM/CTI.cpp: (JSC::CTI::asInteger): Added. For use casting a JSValue to an integer. (JSC::CTI::emitGetArg): Use asInteger. (JSC::CTI::emitGetPutArg): Ditto. (JSC::CTI::getConstantImmediateNumericArg): Ditto. Also use noValue. (JSC::CTI::emitInitRegister): Use asInteger. (JSC::CTI::getDeTaggedConstantImmediate): Ditto. (JSC::CTI::compileOpCallInitializeCallFrame): Ditto. (JSC::CTI::compileOpCall): Ditto. (JSC::CTI::compileOpStrictEq): Ditto. (JSC::CTI::privateCompileMainPass): Ditto. (JSC::CTI::privateCompileGetByIdProto): Ditto. (JSC::CTI::privateCompileGetByIdChain): Ditto. (JSC::CTI::privateCompilePutByIdTransition): Ditto.
  • VM/CTI.h: Rewrite the ARG-related macros to use C++ casts instead of C casts and get rid of some extra parentheses. Addd declaration of asInteger.
  • VM/CodeGenerator.cpp: (JSC::CodeGenerator::emitEqualityOp): Use asString. (JSC::CodeGenerator::emitLoad): Use noValue. (JSC::CodeGenerator::findScopedProperty): Change globalObject argument to JSObject* instead of JSValue*. (JSC::CodeGenerator::emitResolve): Remove unneeded cast. (JSC::CodeGenerator::emitGetScopedVar): Use asCell. (JSC::CodeGenerator::emitPutScopedVar): Ditto.
  • VM/CodeGenerator.h: Changed out argument of findScopedProperty. Also change the JSValueMap to use PtrHash explicitly instead of getting it from DefaultHash.
  • VM/JSPropertyNameIterator.cpp: (JSC::JSPropertyNameIterator::toPrimitive): Use noValue.
  • VM/JSPropertyNameIterator.h: (JSC::JSPropertyNameIterator::next): Ditto.
  • VM/Machine.cpp: (JSC::fastIsNumber): Moved isImmediate check here instead of checking for 0 inside Heap::isNumber. Use asCell and asNumberCell. (JSC::fastToInt32): Ditto. (JSC::fastToUInt32): Ditto. (JSC::jsLess): Use asString. (JSC::jsLessEq): Ditto. (JSC::jsAdd): Ditto. (JSC::jsTypeStringForValue): Use asObject. (JSC::jsIsObjectType): Ditto. (JSC::jsIsFunctionType): Ditto. (JSC::inlineResolveBase): Use noValue. (JSC::Machine::callEval): Use asString. Initialize result to undefined, not 0. (JSC::Machine::Machine): Remove unneeded casts to JSCell*. (JSC::Machine::throwException): Use asObject. (JSC::Machine::debug): Remove explicit calls to the DebuggerCallFrame constructor. (JSC::Machine::checkTimeout): Use noValue. (JSC::cachePrototypeChain): Use asObject. (JSC::Machine::tryCachePutByID): Use asCell. (JSC::Machine::tryCacheGetByID): Use aCell and asObject. (JSC::Machine::privateExecute): Use noValue, asCell, asObject, asString, asArray, asActivation, asFunction. Changed code that creates call frames for host functions to pass 0 for the function pointer -- the call frame needs a JSFunction* and a host function object is not one. This was caught by the assertions in the casting functions. Also remove some unneeded casts in cases where two values are compared. (JSC::Machine::retrieveLastCaller): Use noValue. (JSC::Machine::tryCTICachePutByID): Use asCell. (JSC::Machine::tryCTICacheGetByID): Use aCell and asObject. (JSC::setUpThrowTrampolineReturnAddress): Added this function to restore the PIC-branch-avoidance that was recently lost. (JSC::Machine::cti_op_add): Use asString. (JSC::Machine::cti_op_instanceof): Use asCell and asObject. (JSC::Machine::cti_op_call_JSFunction): Use asFunction. (JSC::Machine::cti_op_call_NotJSFunction): Changed code to pass 0 for the function pointer, since we don't have a JSFunction. Use asObject. (JSC::Machine::cti_op_tear_off_activation): Use asActivation. (JSC::Machine::cti_op_construct_JSConstruct): Use asFunction and asObject. (JSC::Machine::cti_op_construct_NotJSConstruct): use asObject. (JSC::Machine::cti_op_get_by_val): Use asArray and asString. (JSC::Machine::cti_op_resolve_func): Use asPointer; this helps prepare us for a situation where JSValue is not a pointer. (JSC::Machine::cti_op_put_by_val): Use asArray. (JSC::Machine::cti_op_put_by_val_array): Ditto. (JSC::Machine::cti_op_resolve_global): Use asGlobalObject. (JSC::Machine::cti_op_post_inc): Change VM_CHECK_EXCEPTION_2 to VM_CHECK_EXCEPTION_AT_END, since there's no observable work done after that point. Also use asPointer. (JSC::Machine::cti_op_resolve_with_base): Use asPointer. (JSC::Machine::cti_op_post_dec): Change VM_CHECK_EXCEPTION_2 to VM_CHECK_EXCEPTION_AT_END, since there's no observable work done after that point. Also use asPointer. (JSC::Machine::cti_op_call_eval): Use asObject, noValue, and change VM_CHECK_EXCEPTION_ARG to VM_THROW_EXCEPTION_AT_END. (JSC::Machine::cti_op_throw): Change return value to a JSValue*. (JSC::Machine::cti_op_in): Use asObject. (JSC::Machine::cti_op_switch_char): Use asString. (JSC::Machine::cti_op_switch_string): Ditto. (JSC::Machine::cti_op_put_getter): Use asObject. (JSC::Machine::cti_op_put_setter): Ditto. (JSC::Machine::cti_vm_throw): Change return value to a JSValue*. Use noValue.
  • VM/Machine.h: Change return values of both cti_op_throw and cti_vm_throw to JSValue*.
  • VM/Register.h: Remove nullJSValue, which is the same thing as noValue(). Also removed unneeded definition of JSValue.
  • kjs/ArgList.h: Removed unneeded definition of JSValue.
  • kjs/Arguments.h: (JSC::asArguments): Added.
  • kjs/ArrayPrototype.cpp: (JSC::getProperty): Use noValue. (JSC::arrayProtoFuncToString): Use asArray. (JSC::arrayProtoFuncToLocaleString): Ditto. (JSC::arrayProtoFuncConcat): Ditto. (JSC::arrayProtoFuncPop): Ditto. Also removed unneeded initialization of the result, which is set in both sides of the branch. (JSC::arrayProtoFuncPush): Ditto. (JSC::arrayProtoFuncShift): Removed unneeded initialization of the result, which is set in both sides of the branch. (JSC::arrayProtoFuncSort): Use asArray.
  • kjs/BooleanObject.h: (JSC::asBooleanObject): Added.
  • kjs/BooleanPrototype.cpp: (JSC::booleanProtoFuncToString): Use asBooleanObject. (JSC::booleanProtoFuncValueOf): Ditto.
  • kjs/CallData.cpp: (JSC::call): Use asObject and asFunction.
  • kjs/ConstructData.cpp: (JSC::construct): Ditto.
  • kjs/DateConstructor.cpp: (JSC::constructDate): Use asDateInstance.
  • kjs/DateInstance.h: (JSC::asDateInstance): Added.
  • kjs/DatePrototype.cpp: (JSC::dateProtoFuncToString): Use asDateInstance. (JSC::dateProtoFuncToUTCString): Ditto. (JSC::dateProtoFuncToDateString): Ditto. (JSC::dateProtoFuncToTimeString): Ditto. (JSC::dateProtoFuncToLocaleString): Ditto. (JSC::dateProtoFuncToLocaleDateString): Ditto. (JSC::dateProtoFuncToLocaleTimeString): Ditto. (JSC::dateProtoFuncValueOf): Ditto. (JSC::dateProtoFuncGetTime): Ditto. (JSC::dateProtoFuncGetFullYear): Ditto. (JSC::dateProtoFuncGetUTCFullYear): Ditto. (JSC::dateProtoFuncToGMTString): Ditto. (JSC::dateProtoFuncGetMonth): Ditto. (JSC::dateProtoFuncGetUTCMonth): Ditto. (JSC::dateProtoFuncGetDate): Ditto. (JSC::dateProtoFuncGetUTCDate): Ditto. (JSC::dateProtoFuncGetDay): Ditto. (JSC::dateProtoFuncGetUTCDay): Ditto. (JSC::dateProtoFuncGetHours): Ditto. (JSC::dateProtoFuncGetUTCHours): Ditto. (JSC::dateProtoFuncGetMinutes): Ditto. (JSC::dateProtoFuncGetUTCMinutes): Ditto. (JSC::dateProtoFuncGetSeconds): Ditto. (JSC::dateProtoFuncGetUTCSeconds): Ditto. (JSC::dateProtoFuncGetMilliSeconds): Ditto. (JSC::dateProtoFuncGetUTCMilliseconds): Ditto. (JSC::dateProtoFuncGetTimezoneOffset): Ditto. (JSC::dateProtoFuncSetTime): Ditto. (JSC::setNewValueFromTimeArgs): Ditto. (JSC::setNewValueFromDateArgs): Ditto. (JSC::dateProtoFuncSetYear): Ditto. (JSC::dateProtoFuncGetYear): Ditto.
  • kjs/DebuggerCallFrame.cpp: (JSC::DebuggerCallFrame::thisObject): Use asObject. (JSC::DebuggerCallFrame::evaluate): Use noValue.
  • kjs/DebuggerCallFrame.h: Added a constructor that takes only a callFrame.
  • kjs/ExecState.h: (JSC::ExecState::clearException): Use noValue.
  • kjs/FunctionPrototype.cpp: (JSC::functionProtoFuncToString): Use asFunction. (JSC::functionProtoFuncApply): Use asArguments and asArray.
  • kjs/GetterSetter.cpp: (JSC::GetterSetter::getPrimitiveNumber): Use noValue.
  • kjs/GetterSetter.h: (JSC::asGetterSetter): Added.
  • kjs/InternalFunction.cpp: (JSC::InternalFunction::name): Use asString.
  • kjs/InternalFunction.h: (JSC::asInternalFunction): Added.
  • kjs/JSActivation.cpp: (JSC::JSActivation::argumentsGetter): Use asActivation.
  • kjs/JSActivation.h: (JSC::asActivation): Added.
  • kjs/JSArray.cpp: (JSC::JSArray::putSlowCase): Use noValue. (JSC::JSArray::deleteProperty): Ditto. (JSC::JSArray::increaseVectorLength): Ditto. (JSC::JSArray::setLength): Ditto. (JSC::JSArray::pop): Ditto. (JSC::JSArray::sort): Ditto. (JSC::JSArray::compactForSorting): Ditto.
  • kjs/JSArray.h: (JSC::asArray): Added.
  • kjs/JSCell.cpp: (JSC::JSCell::getJSNumber): Use noValue.
  • kjs/JSCell.h: (JSC::asCell): Added. (JSC::JSValue::asCell): Changed to not preserve const. Given the wide use of JSValue* and JSCell*, it's not really useful to use const. (JSC::JSValue::isNumber): Use asValue. (JSC::JSValue::isString): Ditto. (JSC::JSValue::isGetterSetter): Ditto. (JSC::JSValue::isObject): Ditto. (JSC::JSValue::getNumber): Ditto. (JSC::JSValue::getString): Ditto. (JSC::JSValue::getObject): Ditto. (JSC::JSValue::getCallData): Ditto. (JSC::JSValue::getConstructData): Ditto. (JSC::JSValue::getUInt32): Ditto. (JSC::JSValue::getTruncatedInt32): Ditto. (JSC::JSValue::getTruncatedUInt32): Ditto. (JSC::JSValue::mark): Ditto. (JSC::JSValue::marked): Ditto. (JSC::JSValue::toPrimitive): Ditto. (JSC::JSValue::getPrimitiveNumber): Ditto. (JSC::JSValue::toBoolean): Ditto. (JSC::JSValue::toNumber): Ditto. (JSC::JSValue::toString): Ditto. (JSC::JSValue::toObject): Ditto. (JSC::JSValue::toThisObject): Ditto. (JSC::JSValue::needsThisConversion): Ditto. (JSC::JSValue::toThisString): Ditto. (JSC::JSValue::getJSNumber): Ditto.
  • kjs/JSFunction.cpp: (JSC::JSFunction::argumentsGetter): Use asFunction. (JSC::JSFunction::callerGetter): Ditto. (JSC::JSFunction::lengthGetter): Ditto. (JSC::JSFunction::construct): Use asObject.
  • kjs/JSFunction.h: (JSC::asFunction): Added.
  • kjs/JSGlobalObject.cpp: (JSC::lastInPrototypeChain): Use asObject.
  • kjs/JSGlobalObject.h: (JSC::asGlobalObject): Added. (JSC::ScopeChainNode::globalObject): Use asGlobalObject.
  • kjs/JSImmediate.h: Added noValue, asPointer, and makeValue functions. Use rawValue, makeValue, and noValue consistently instead of doing reinterpret_cast in various functions.
  • kjs/JSNumberCell.h: (JSC::asNumberCell): Added. (JSC::JSValue::uncheckedGetNumber): Use asValue and asNumberCell. (JSC::JSValue::toJSNumber): Use asValue.
  • kjs/JSObject.cpp: (JSC::JSObject::put): Use asObject and asGetterSetter. (JSC::callDefaultValueFunction): Use noValue. (JSC::JSObject::defineGetter): Use asGetterSetter. (JSC::JSObject::defineSetter): Ditto. (JSC::JSObject::lookupGetter): Ditto. Also use asObject. (JSC::JSObject::lookupSetter): Ditto. (JSC::JSObject::hasInstance): Use asObject. (JSC::JSObject::fillGetterPropertySlot): Use asGetterSetter.
  • kjs/JSObject.h: (JSC::JSObject::getDirect): Use noValue. (JSC::asObject): Added. (JSC::JSValue::isObject): Use asValue. (JSC::JSObject::get): Removed unneeded const_cast. (JSC::JSObject::getPropertySlot): Use asObject. (JSC::JSValue::get): Removed unneeded const_cast. Use asValue, asCell, and asObject. (JSC::JSValue::put): Ditto. (JSC::JSObject::allocatePropertyStorageInline): Fixed spelling of "oldPropertStorage".
  • kjs/JSString.cpp: (JSC::JSString::getOwnPropertySlot): Use asObject.
  • kjs/JSString.h: (JSC::asString): Added. (JSC::JSValue::toThisJSString): Use asValue.
  • kjs/JSValue.h: Make PreferredPrimitiveType a top level enum instead of a member of JSValue. Added an asValue function that returns this. Removed overload of asCell for const. Use asValue instead of getting right at this.
  • kjs/ObjectPrototype.cpp: (JSC::objectProtoFuncIsPrototypeOf): Use asObject. (JSC::objectProtoFuncDefineGetter): Ditto. (JSC::objectProtoFuncDefineSetter): Ditto.
  • kjs/PropertySlot.h: (JSC::PropertySlot::PropertySlot): Take a const JSValue* so the callers don't have to worry about const. (JSC::PropertySlot::clearBase): Use noValue. (JSC::PropertySlot::clearValue): Ditto.
  • kjs/RegExpConstructor.cpp: (JSC::regExpConstructorDollar1): Use asRegExpConstructor. (JSC::regExpConstructorDollar2): Ditto. (JSC::regExpConstructorDollar3): Ditto. (JSC::regExpConstructorDollar4): Ditto. (JSC::regExpConstructorDollar5): Ditto. (JSC::regExpConstructorDollar6): Ditto. (JSC::regExpConstructorDollar7): Ditto. (JSC::regExpConstructorDollar8): Ditto. (JSC::regExpConstructorDollar9): Ditto. (JSC::regExpConstructorInput): Ditto. (JSC::regExpConstructorMultiline): Ditto. (JSC::regExpConstructorLastMatch): Ditto. (JSC::regExpConstructorLastParen): Ditto. (JSC::regExpConstructorLeftContext): Ditto. (JSC::regExpConstructorRightContext): Ditto. (JSC::setRegExpConstructorInput): Ditto. (JSC::setRegExpConstructorMultiline): Ditto. (JSC::constructRegExp): Use asObject.
  • kjs/RegExpConstructor.h: (JSC::asRegExpConstructor): Added.
  • kjs/RegExpObject.cpp: (JSC::regExpObjectGlobal): Use asRegExpObject. (JSC::regExpObjectIgnoreCase): Ditto. (JSC::regExpObjectMultiline): Ditto. (JSC::regExpObjectSource): Ditto. (JSC::regExpObjectLastIndex): Ditto. (JSC::setRegExpObjectLastIndex): Ditto. (JSC::callRegExpObject): Ditto.
  • kjs/RegExpObject.h: (JSC::asRegExpObject): Added.
  • kjs/RegExpPrototype.cpp: (JSC::regExpProtoFuncTest): Use asRegExpObject. (JSC::regExpProtoFuncExec): Ditto. (JSC::regExpProtoFuncCompile): Ditto. (JSC::regExpProtoFuncToString): Ditto.
  • kjs/StringObject.h: (JSC::StringObject::internalValue): Use asString. (JSC::asStringObject): Added.
  • kjs/StringPrototype.cpp: (JSC::stringProtoFuncReplace): Use asRegExpObject. (JSC::stringProtoFuncToString): Ue asStringObject. (JSC::stringProtoFuncMatch): Use asRegExpObject. (JSC::stringProtoFuncSearch): Ditto. (JSC::stringProtoFuncSplit): Ditto.
  • kjs/StructureID.cpp: (JSC::StructureID::getEnumerablePropertyNames): Use asObject. (JSC::StructureID::createCachedPrototypeChain): Ditto. (JSC::StructureIDChain::StructureIDChain): Use asCell and asObject.
  • kjs/collector.h: (JSC::Heap::isNumber): Removed null handling. This can only be called on valid cells. (JSC::Heap::cellBlock): Removed overload for const and non-const. Whether the JSCell* is const or not really should have no effect on whether you can modify the collector block it's in.
  • kjs/interpreter.cpp: (JSC::Interpreter::evaluate): Use noValue and noObject.
  • kjs/nodes.cpp: (JSC::FunctionCallResolveNode::emitCode): Use JSObject for the global object rather than JSValue. (JSC::PostfixResolveNode::emitCode): Ditto. (JSC::PrefixResolveNode::emitCode): Ditto. (JSC::ReadModifyResolveNode::emitCode): Ditto. (JSC::AssignResolveNode::emitCode): Ditto.
  • kjs/operations.h: (JSC::equalSlowCaseInline): Use asString, asCell, asNumberCell, (JSC::strictEqualSlowCaseInline): Ditto.

WebCore:

2008-10-18 Darin Adler <darin@apple.com>

Reviewed by Oliver Hunt.

Update for change to make PreferredPrimitiveType no longer
a member of JSValue.

  • bridge/c/c_instance.cpp: (JSC::Bindings::CInstance::defaultValue): Removed JSValue:: prefix.
  • bridge/jni/jni_instance.cpp: (JavaInstance::defaultValue): Ditto.
  • bridge/objc/objc_instance.mm: (ObjcInstance::defaultValue): Ditto.
  • bridge/qt/qt_instance.cpp: (JSC::Bindings::QtInstance::defaultValue): Ditto.
  • bridge/runtime.h: Ditto. Also removed typedef.
14:54 Changeset [37680] by darin@apple.com

2008-10-18 Darin Adler <darin@apple.com>

  • try to fix Windows build
  • rendering/RenderThemeSafari.cpp: (WebCore::RenderThemeSafari::paintCheckbox): Explicitly qualify part name with SafariTheme namespace, since there is now an identically named constant in the ControlPart enum. (WebCore::RenderThemeSafari::paintButton): Ditto. (WebCore::RenderThemeSafari::paintTextField): Ditto. (WebCore::RenderThemeSafari::paintTextArea): Ditto. (WebCore::RenderThemeSafari::paintSearchField): Ditto. (WebCore::RenderThemeSafari::paintSearchFieldCancelButton): Ditto. (WebCore::RenderThemeSafari::paintSearchFieldResultsDecoration): Ditto. (WebCore::RenderThemeSafari::paintSearchFieldResultsButton): Ditto.
14:23 Changeset [37679] by jmalonzo@webkit.org

2008-10-18 Jan Michael Alonzo <jmalonzo@webkit.org>

Reviewed by Alp Toker.

[GTK] crash after selecting a file on an <input type=file>
https://bugs.webkit.org/show_bug.cgi?id=21385

Follow Mac and Win's behaviors for Icon::paint

  • platform/graphics/gtk/IconGtk.cpp: (WebCore::Icon::paint): check if painting is enabled before painting the icon
02:44 Changeset [37678] by cwzwarich@webkit.org

2008-10-18 Cameron Zwarich <zwarich@apple.com>

Reviewed by Oliver Hunt.

Bug 21702: Special op_create_activation for the case where there are no named parameters
<https://bugs.webkit.org/show_bug.cgi?id=21702>

This is a 2.5% speedup on the V8 Raytrace benchmark and a 1.1% speedup
on the V8 Earley-Boyer benchmark.

  • VM/CTI.cpp: (JSC::CTI::privateCompileMainPass):
  • VM/Machine.cpp: (JSC::Machine::cti_op_create_arguments_no_params):
  • VM/Machine.h:
  • kjs/Arguments.h: (JSC::Arguments::): (JSC::Arguments::Arguments):
01:44 Changeset [37677] by oliver@apple.com

2008-10-18 Zan Dobersek <zandobersek@gmail.com>

Reviewed by Oliver Hunt.

Qt port build fix.

  • platform/qt/RenderThemeQt.h:
00:06 Changeset [37676] by jmalonzo@webkit.org

2008-10-17 Luke Kenneth Casson Leighton <lkcl@lkcl.net>

Reviewed by Mark Rowe. Landed by Jan Alonzo.

https://bugs.webkit.org/show_bug.cgi?id=20403
[Gtk] Segfault after a table with an iframe is attempted to be added twice to DOM model with javascript

  • WebCoreSupport/FrameLoaderClientGtk.cpp: (WebKit::FrameLoaderClient::frameLoaderDestroyed): (WebKit::FrameLoaderClient::detachedFromParent4):

10/17/08:

23:18 Changeset [37675] by mjs@apple.com

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

Reviewed by Mark Rowe.


  • default to 1000 tests per dump tool instance again, now that CTI no longer causes excess different stack logs.


(Also fix a small bug in my last change.)

  • Scripts/run-webkit-tests:
23:17 Changeset [37674] by mjs@apple.com

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

Reviewed by Cameron Zwarich.


  • in debug builds, alter the stack to avoid blowing out MallocStackLogging


(In essence, while executing a CTI function we alter the return
address to jscGeneratedNativeCode so that a single consistent
function is on the stack instead of many random functions without
symbols.)

  • VM/CTI.h:
  • VM/Machine.cpp: (JSC::doSetReturnAddress): (JSC::): (JSC::StackHack::StackHack): (JSC::StackHack::~StackHack): (JSC::Machine::cti_op_convert_this): (JSC::Machine::cti_op_end): (JSC::Machine::cti_op_add): (JSC::Machine::cti_op_pre_inc): (JSC::Machine::cti_timeout_check): (JSC::Machine::cti_register_file_check): (JSC::Machine::cti_op_loop_if_less): (JSC::Machine::cti_op_loop_if_lesseq): (JSC::Machine::cti_op_new_object): (JSC::Machine::cti_op_put_by_id): (JSC::Machine::cti_op_put_by_id_second): (JSC::Machine::cti_op_put_by_id_generic): (JSC::Machine::cti_op_put_by_id_fail): (JSC::Machine::cti_op_get_by_id): (JSC::Machine::cti_op_get_by_id_second): (JSC::Machine::cti_op_get_by_id_generic): (JSC::Machine::cti_op_get_by_id_fail): (JSC::Machine::cti_op_instanceof): (JSC::Machine::cti_op_del_by_id): (JSC::Machine::cti_op_mul): (JSC::Machine::cti_op_new_func): (JSC::Machine::cti_op_call_profiler): (JSC::Machine::cti_op_call_JSFunction): (JSC::Machine::cti_vm_lazyLinkCall): (JSC::Machine::cti_vm_compile): (JSC::Machine::cti_op_push_activation): (JSC::Machine::cti_op_call_NotJSFunction): (JSC::Machine::cti_op_create_arguments): (JSC::Machine::cti_op_tear_off_activation): (JSC::Machine::cti_op_tear_off_arguments): (JSC::Machine::cti_op_ret_profiler): (JSC::Machine::cti_op_ret_scopeChain): (JSC::Machine::cti_op_new_array): (JSC::Machine::cti_op_resolve): (JSC::Machine::cti_op_construct_JSConstructFast): (JSC::Machine::cti_op_construct_JSConstruct): (JSC::Machine::cti_op_construct_NotJSConstruct): (JSC::Machine::cti_op_get_by_val): (JSC::Machine::cti_op_resolve_func): (JSC::Machine::cti_op_sub): (JSC::Machine::cti_op_put_by_val): (JSC::Machine::cti_op_put_by_val_array): (JSC::Machine::cti_op_lesseq): (JSC::Machine::cti_op_loop_if_true): (JSC::Machine::cti_op_negate): (JSC::Machine::cti_op_resolve_base): (JSC::Machine::cti_op_resolve_skip): (JSC::Machine::cti_op_resolve_global): (JSC::Machine::cti_op_div): (JSC::Machine::cti_op_pre_dec): (JSC::Machine::cti_op_jless): (JSC::Machine::cti_op_not): (JSC::Machine::cti_op_jtrue): (JSC::Machine::cti_op_post_inc): (JSC::Machine::cti_op_eq): (JSC::Machine::cti_op_lshift): (JSC::Machine::cti_op_bitand): (JSC::Machine::cti_op_rshift): (JSC::Machine::cti_op_bitnot): (JSC::Machine::cti_op_resolve_with_base): (JSC::Machine::cti_op_new_func_exp): (JSC::Machine::cti_op_mod): (JSC::Machine::cti_op_less): (JSC::Machine::cti_op_neq): (JSC::Machine::cti_op_post_dec): (JSC::Machine::cti_op_urshift): (JSC::Machine::cti_op_bitxor): (JSC::Machine::cti_op_new_regexp): (JSC::Machine::cti_op_bitor): (JSC::Machine::cti_op_call_eval): (JSC::Machine::cti_op_throw): (JSC::Machine::cti_op_get_pnames): (JSC::Machine::cti_op_next_pname): (JSC::Machine::cti_op_push_scope): (JSC::Machine::cti_op_pop_scope): (JSC::Machine::cti_op_typeof): (JSC::Machine::cti_op_is_undefined): (JSC::Machine::cti_op_is_boolean): (JSC::Machine::cti_op_is_number): (JSC::Machine::cti_op_is_string): (JSC::Machine::cti_op_is_object): (JSC::Machine::cti_op_is_function): (JSC::Machine::cti_op_stricteq): (JSC::Machine::cti_op_nstricteq): (JSC::Machine::cti_op_to_jsnumber): (JSC::Machine::cti_op_in): (JSC::Machine::cti_op_push_new_scope): (JSC::Machine::cti_op_jmp_scopes): (JSC::Machine::cti_op_put_by_index): (JSC::Machine::cti_op_switch_imm): (JSC::Machine::cti_op_switch_char): (JSC::Machine::cti_op_switch_string): (JSC::Machine::cti_op_del_by_val): (JSC::Machine::cti_op_put_getter): (JSC::Machine::cti_op_put_setter): (JSC::Machine::cti_op_new_error): (JSC::Machine::cti_op_debug): (JSC::Machine::cti_vm_throw):
21:54 Changeset [37673] by slewis@apple.com

2008-10-17 Stephanie Lewis <slewis@apple.com>

Reviewed by Mark Rowe.

Fix layout tests that use prologues and epilogues.

  • Scripts/run-webkit-tests:
21:29 Changeset [37672] by mjs@apple.com

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

Reviewed by Mark Rowe.


  • make sure MallocStackLogging is only on for tools we want to leak check, not other random stuff as well.
  • Scripts/run-webkit-tests:
19:53 Changeset [37671] by barraclough@apple.com

typo in ChangeLog

19:51 Changeset [37670] by barraclough@apple.com

2008-10-17 Gavin Barraclough <barraclough@apple.com>

Optimize op_call by allowing call sites to be directly linked to callees.

For the hot path of op_call, CTI now generates a check (initially for an impossible
value), and the first time the call is executed we attempt to link the call directly
to the callee. WWe can currently only do so if the arity of the caller and callee
match. The (optimized) setup for the call on the hot path is linked directly to
the ctiCode for the callee, without indirection.


Two forms of the slow case of the call are generated, the first will be executed the
first time the call is reached. As well as this path attempting to link the call to
a callee, it also relinks the slow case to a second slow case, which will not continue
to attempt relinking the call. (This policy could be changed in future, but for not
this is intended to prevent thrashing).

If a callee that the caller has been linked to is garbage collected, then the link
in the caller's JIt code will be reset back to a value that cannot match - to prevent
any false positive matches.

~20% progression on deltablue & richards, >12% overall reduction in v8-tests
runtime, one or two percent progression on sunspider.

Reviewed by Oliver Hunt.

  • VM/CTI.cpp: (JSC::): (JSC::CTI::emitNakedCall): (JSC::unreachable): (JSC::CTI::compileOpCallInitializeCallFrame): (JSC::CTI::compileOpCallSetupArgs): (JSC::CTI::compileOpCall): (JSC::CTI::privateCompileMainPass): (JSC::CTI::privateCompileSlowCases): (JSC::CTI::privateCompile): (JSC::CTI::unlinkCall): (JSC::CTI::linkCall):
  • VM/CTI.h:
  • VM/CodeBlock.cpp: (JSC::CodeBlock::~CodeBlock): (JSC::CodeBlock::unlinkCallers): (JSC::CodeBlock::derefStructureIDs):
  • VM/CodeBlock.h: (JSC::StructureStubInfo::StructureStubInfo): (JSC::CallLinkInfo::CallLinkInfo): (JSC::CodeBlock::addCaller): (JSC::CodeBlock::removeCaller): (JSC::CodeBlock::getStubInfo):
  • VM/CodeGenerator.cpp: (JSC::CodeGenerator::emitCall): (JSC::CodeGenerator::emitConstruct):
  • VM/Machine.cpp: (JSC::Machine::cti_op_call_profiler): (JSC::Machine::cti_op_call_JSFunction): (JSC::Machine::cti_vm_lazyLinkCall): (JSC::Machine::cti_op_construct_JSConstructFast): (JSC::Machine::cti_op_construct_JSConstruct): (JSC::Machine::cti_op_construct_NotJSConstruct):
  • VM/Machine.h:
  • kjs/JSFunction.cpp: (JSC::JSFunction::~JSFunction):
  • kjs/JSFunction.h:
  • kjs/nodes.h: (JSC::FunctionBodyNode::):
  • masm/X86Assembler.h: (JSC::X86Assembler::getDifferenceBetweenLabels):
18:04 Changeset [37669] by mjs@apple.com

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

Reviewed by Stephanie Lewis.


  • make run-webkit-tests --leaks default to 100 tests per run instead of 1000


This should reduce or eliminate crashes on the buildbot due to
running out of memory while stack logging.

  • Scripts/run-webkit-tests:
17:08 Changeset [37668] by mjs@apple.com

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

Reviewed by Geoff Garen.


  • remove ASSERT that makes the leaks buildbot cry
  • kjs/JSFunction.cpp: (JSC::JSFunction::JSFunction):
17:03 Changeset [37667] by kevino@webkit.org

Reviewed by Kevin Ollivier

Fix wx port's scrollbar and drawing handling after recent changes.

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

16:22 Changeset [37666] by kevino@webkit.org

wx build fix. EAppearance -> ControlPart.

15:56 Changeset [37665] by pam@chromium.org

2008-10-17 Pamela Greene <pam@chromium.org>

Add a number of new tests.
See https://bugs.webkit.org/show_bug.cgi?id=21407

Reviewed by Alexey Proskuryakov.

  • fast/css/border-height.html: Added.
  • fast/dom/Window/orphaned-frame-access-expected.txt: Added.
  • fast/dom/Window/orphaned-frame-access.html: Added.
  • fast/forms/image-border.html: Added.
  • fast/forms/input-field-text-truncated.html: Added.
  • fast/forms/input-type-text-min-width.html: Added.
  • fast/forms/textarea-scrollbar-height-expected.txt: Added.
  • fast/forms/textarea-scrollbar-height.html: Added.
  • fast/forms/textarea-width.html: Added.
  • fast/overflow/overflow_hidden.html: Added.
  • fast/parser/resources/xml-declaration-missing-ending-mark.xml: Added.
  • fast/parser/xml-declaration-missing-ending-mark-expected.txt: Added.
  • fast/parser/xml-declaration-missing-ending-mark.html: Added.
  • fast/text/international/hindi-spacing.html: Added.
  • http/tests/misc/crash-multiple-family-fontface-expected.txt: Added.
  • http/tests/misc/crash-multiple-family-fontface.html: Added.
  • platform/mac/fast/css/border-height-expected.checksum: Added.
  • platform/mac/fast/css/border-height-expected.png: Added.
  • platform/mac/fast/css/border-height-expected.txt: Added.
  • platform/mac/fast/forms/image-border-expected.checksum: Added.
  • platform/mac/fast/forms/image-border-expected.png: Added.
  • platform/mac/fast/forms/image-border-expected.txt: Added.
  • platform/mac/fast/forms/input-field-text-truncated-expected.checksum: Added.
  • platform/mac/fast/forms/input-field-text-truncated-expected.png: Added.
  • platform/mac/fast/forms/input-field-text-truncated-expected.txt: Added.
  • platform/mac/fast/forms/input-type-text-min-width-expected.checksum: Added.
  • platform/mac/fast/forms/input-type-text-min-width-expected.png: Added.
  • platform/mac/fast/forms/input-type-text-min-width-expected.txt: Added.
  • platform/mac/fast/forms/textarea-width-expected.checksum: Added.
  • platform/mac/fast/forms/textarea-width-expected.png: Added.
  • platform/mac/fast/forms/textarea-width-expected.txt: Added.
  • platform/mac/fast/overflow/overflow_hidden-expected.checksum: Added.
  • platform/mac/fast/overflow/overflow_hidden-expected.png: Added.
  • platform/mac/fast/overflow/overflow_hidden-expected.txt: Added.
  • platform/mac/fast/text/international/hindi-spacing-expected.checksum: Added.
  • platform/mac/fast/text/international/hindi-spacing-expected.png: Added.
  • platform/mac/fast/text/international/hindi-spacing-expected.txt: Added.
15:26 Changeset [37664] by mjs@apple.com

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

Reviewed by Cameron Zwarich


  • don't bother to do arguments tearoff when it will have no effect

~1% on v8 raytrace


  • VM/CodeGenerator.cpp: (JSC::CodeGenerator::emitReturn):
15:02 Changeset [37663] by hyatt@apple.com

2008-10-17 David Hyatt <hyatt@apple.com>

Eliminate the EAppearance enum in favor of the new ControlPart enum. Cut out the scrollbar
values from the enum since they are handled by ScrollbarTheme instead.

Reviewed by Tim Hatcher

  • css/CSSPrimitiveValueMappings.h: (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): (WebCore::CSSPrimitiveValue::operator ControlPart):
  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::adjustRenderStyle):
  • css/CSSValueKeywords.in:
  • platform/gtk/RenderThemeGtk.cpp: (WebCore::supportsFocus): (WebCore::RenderThemeGtk::baselinePosition): (WebCore::setToggleSize): (WebCore::RenderThemeGtk::setCheckboxSize): (WebCore::RenderThemeGtk::setRadioSize): (WebCore::RenderThemeGtk::adjustButtonStyle):
  • platform/qt/RenderThemeQt.cpp: (WebCore::RenderThemeQt::baselinePosition): (WebCore::RenderThemeQt::controlSupportsTints): (WebCore::RenderThemeQt::adjustRepaintRect): (WebCore::RenderThemeQt::isControlStyled): (WebCore::computeSizeBasedOnStyle): (WebCore::RenderThemeQt::paintButton): (WebCore::RenderThemeQt::paintTextField): (WebCore::RenderThemeQt::paintMenuList): (WebCore::RenderThemeQt::supportsFocus): (WebCore::RenderThemeQt::applyTheme): (WebCore::RenderThemeQt::adjustSliderThumbSize):
  • platform/qt/RenderThemeQt.h:
  • rendering/RenderSlider.cpp: (WebCore::RenderSlider::createThumbStyle): (WebCore::RenderSlider::layout): (WebCore::RenderSlider::setValueForPosition): (WebCore::RenderSlider::setPositionFromValue): (WebCore::RenderSlider::positionForOffset): (WebCore::RenderSlider::currentPosition): (WebCore::RenderSlider::setCurrentPosition): (WebCore::RenderSlider::trackSize):
  • rendering/RenderTheme.cpp: (WebCore::RenderTheme::adjustStyle): (WebCore::RenderTheme::paint): (WebCore::RenderTheme::paintBorderOnly): (WebCore::RenderTheme::paintDecorations): (WebCore::RenderTheme::isControlContainer): (WebCore::RenderTheme::isControlStyled): (WebCore::RenderTheme::supportsFocusRing): (WebCore::RenderTheme::isDefault):
  • rendering/RenderTheme.h:
  • rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::isControlStyled): (WebCore::RenderThemeMac::adjustRepaintRect): (WebCore::RenderThemeMac::baselinePosition): (WebCore::RenderThemeMac::controlSupportsTints): (WebCore::RenderThemeMac::adjustButtonStyle): (WebCore::RenderThemeMac::setButtonCellState): (WebCore::RenderThemeMac::popupInternalPaddingLeft): (WebCore::RenderThemeMac::popupInternalPaddingRight): (WebCore::RenderThemeMac::popupInternalPaddingTop): (WebCore::RenderThemeMac::popupInternalPaddingBottom): (WebCore::RenderThemeMac::paintSliderTrack): (WebCore::RenderThemeMac::paintSliderThumb): (WebCore::RenderThemeMac::adjustSliderThumbSize):
  • rendering/RenderThemeSafari.cpp: (WebCore::RenderThemeSafari::isControlStyled): (WebCore::RenderThemeSafari::adjustRepaintRect): (WebCore::RenderThemeSafari::baselinePosition): (WebCore::RenderThemeSafari::controlSupportsTints): (WebCore::RenderThemeSafari::adjustButtonStyle): (WebCore::RenderThemeSafari::popupInternalPaddingLeft): (WebCore::RenderThemeSafari::popupInternalPaddingRight): (WebCore::RenderThemeSafari::popupInternalPaddingTop): (WebCore::RenderThemeSafari::popupInternalPaddingBottom): (WebCore::RenderThemeSafari::paintSliderTrack): (WebCore::RenderThemeSafari::adjustSliderThumbSize):
  • rendering/RenderThemeWin.cpp: (WebCore::RenderThemeWin::supportsFocus): (WebCore::RenderThemeWin::determineClassicState): (WebCore::RenderThemeWin::getClassicThemeData): (WebCore::RenderThemeWin::getThemeData): (WebCore::drawControl): (WebCore::RenderThemeWin::paintSliderTrack): (WebCore::RenderThemeWin::adjustSliderThumbSize):
  • rendering/RenderThemeWin.h:
  • rendering/style/RenderStyle.h: (WebCore::InheritedFlags::hasAppearance): (WebCore::InheritedFlags::appearance): (WebCore::InheritedFlags::setAppearance): (WebCore::InheritedFlags::initialAppearance):
  • rendering/style/RenderStyleConstants.h:
14:26 Changeset [37662] by hyatt@apple.com

2008-10-17 David Hyatt <hyatt@apple.com>

Beginning of the RenderTheme re-architecture (to share more code). Add the new Theme API header
file. Add new USE(NEW_THEME) switch that is enabled on Mac. The Mac theme will be converted first.

Reviewed by Tim Hatcher

  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • config.h:
  • platform/Theme.h: Added. (WebCore::Theme::Theme): (WebCore::Theme::~Theme): (WebCore::Theme::baselinePositionAdjustment): (WebCore::Theme::controlHasInactiveAppearance): (WebCore::Theme::controlsCanHaveInactiveAppearance): (WebCore::Theme::controlsCanHaveHoveredAppearance): (WebCore::Theme::controlDrawsBorder): (WebCore::Theme::controlDrawsBackground): (WebCore::Theme::controlDrawsFocusOutline): (WebCore::Theme::selectionColor): (WebCore::Theme::textSearchHighlightColor): (WebCore::Theme::systemColor): (WebCore::Theme::systemFont): (WebCore::Theme::caretBlinkFrequency): (WebCore::Theme::themeChanged): (WebCore::Theme::controlSize): (WebCore::Theme::controlFont): (WebCore::Theme::controlPadding): (WebCore::Theme::controlInternalPadding): (WebCore::Theme::controlBorder): (WebCore::Theme::controlBorderRadius): (WebCore::Theme::paint): (WebCore::Theme::inflateControlPaintRect):
  • platform/ThemeTypes.h: Added. (WebCore::): (WebCore::ControlBox::ControlBox): (WebCore::ControlBox::top): (WebCore::ControlBox::right): (WebCore::ControlBox::bottom): (WebCore::ControlBox::left):
  • platform/mac/ThemeMac.h: Added. (WebCore::ThemeMac::ThemeMac): (WebCore::ThemeMac::~ThemeMac):
  • platform/mac/ThemeMac.mm: Added. (WebCore::platformTheme):
  • rendering/RenderTheme.cpp: (WebCore::RenderTheme::RenderTheme):
  • rendering/RenderTheme.h:
14:22 Changeset [37661] by kmccullough@apple.com

2008-10-16 Kevin McCullough <kmccullough@apple.com>

Reviewed by Steve Falkenburg.

<rdar://problem/6292718>
Implement a standard way to get the UA given an application name.

  • Interfaces/IWebViewPrivate.idl:
  • WebView.cpp: (WebView::standardUserAgentWithApplicationName):
  • WebView.h:
14:16 Changeset [37660] by jmalonzo@webkit.org

2008-10-17 Marco Barisione <marco.barisione@collabora.co.uk>

Reviewed by Sam Weinig. Landed by Jan Alonzo.

https://bugs.webkit.org/show_bug.cgi?id=21603
[GTK] Minor fixes to GOwnPtr

  • wtf/GOwnPtr.cpp: (WTF::GError): (WTF::GList): (WTF::GCond): (WTF::GMutex): (WTF::GPatternSpec): (WTF::GDir):
  • wtf/GOwnPtr.h: (WTF::freeOwnedGPtr): (WTF::GOwnPtr::~GOwnPtr): (WTF::GOwnPtr::outPtr): (WTF::GOwnPtr::set): (WTF::GOwnPtr::clear):
  • wtf/Threading.h:

2008-10-17 Marco Barisione <marco.barisione@collabora.co.uk>

Reviewed by Sam Weinig. Landed by Jan Alonzo.

https://bugs.webkit.org/show_bug.cgi?id=21603
[GTK] Minor fixes to GOwnPtr

  • platform/graphics/gtk/MediaPlayerPrivateGStreamer.cpp: (WebCore::mediaPlayerPrivateErrorCallback):
14:04 Changeset [37659] by timothy@apple.com

Recompile the JavaScript functions when removing any listener, so functions that are
not being debugged can resume normal speed again.

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

Reviewed by Geoffrey Garen.

  • bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::globalExec): Changed an assert into an if check. This assert was firing when closing the window and having the recompile fire after. This was an overzelious assert now.
  • inspector/JavaScriptDebugServer.cpp: (WebCore::JavaScriptDebugServer::didRemoveListener): Start the recompile timer. (WebCore::JavaScriptDebugServer::didRemoveLastListener): Removed the recompile timer start.
13:17 Changeset [37658] by mitz@apple.com

Reviewed by Sam Weinig.

  • export WTF::initializeOnMainThread()
  • WebKit.vcproj/WebKit.def:
  • WebKit.vcproj/WebKit_debug.def:
11:07 Changeset [37657] by pam@chromium.org

2008-10-17 Pamela Greene <pam@chromium.org>

Fix potential race by running two passes of test to defer notifyDone.
See https://bugs.webkit.org/show_bug.cgi?id=21576

Reviewed by Timothy Hatcher.

  • fast/history/resources/history_reload_window.html:
09:51 Changeset [37656] by timothy@apple.com

Fixes a regression where starting a debugging session in
another Web Inspector window would not show any scripts.
Also only attach the debugger to only the required Pages.

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

Reviewed by Darin Adler.

  • inspector/JavaScriptDebugServer.cpp: (WebCore::JavaScriptDebugServer::addListener): Add an assert and remove the call to willAddFirstListener(). Add a call to didAddListener(). (WebCore::JavaScriptDebugServer::removeListener): Add an assert and call to didRemoveListener(). (WebCore::JavaScriptDebugServer::pageCreated): Attach the debugger if there is a listener interested in the new Page. (WebCore::JavaScriptDebugServer::hasListenersInterestedInPage): Use hasGlobalListeners() instead of isEmpty(). (WebCore::JavaScriptDebugServer::sourceParsed): Ditto. (WebCore::JavaScriptDebugServer::didAddListener): Added. Attach the debugger to the page if non-null, or all pages if page is null. (WebCore::JavaScriptDebugServer::didRemoveListener): Added. Detach the debugger only if there are no interested listeners. (WebCore::JavaScriptDebugServer::didRemoveLastListener): Remove the call to Page::setDebuggerForAllPages().
  • inspector/JavaScriptDebugServer.h: (WebCore::JavaScriptDebugServer::hasGlobalListeners): Added.
08:56 Changeset [37655] by brettw@chromium.org

Reviewed by Timothy Hatcher.

Have ImageDocument generate its own filename for the title of images
without relying on the suggested filename from the network layer, which
may be nonexistant or not relevant.
https://bugs.webkit.org/show_bug.cgi?id=21565

  • loader/ImageDocument.cpp: (WebCore::ImageTokenizer::finish):
06:35 Changeset [37654] by ap@webkit.org

Non-Mac build fix.

  • GNUmakefile.am:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCoreSources.bkl: Added ActiveDOMObject to the build.
04:55 Changeset [37653] by mjs@apple.com

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

Reviewed by Cameron Zwarich.


  • speed up transitions that resize the property storage a fair bit


~3% speedup on v8 RayTrace benchmark, ~1% on DeltaBlue

  • VM/CTI.cpp: (JSC::resizePropertyStorage): renamed from transitionObject, and reduced to just resize the object's property storage with one inline call. (JSC::CTI::privateCompilePutByIdTransition): Use a separate function for property storage resize, but still do all the rest of the work in assembly in that case, and pass the known compile-time constants of old and new size rather than structureIDs, saving a bunch of redundant memory access.
  • kjs/JSObject.cpp: (JSC::JSObject::allocatePropertyStorage): Just call the inline version.
  • kjs/JSObject.h: (JSC::JSObject::allocatePropertyStorageInline): Inline version of allocatePropertyStorage
  • masm/X86Assembler.h: (JSC::X86Assembler::): (JSC::X86Assembler::pushl_i32): Add code to assmeble push of a constant; code originally by Cameron Zwarich.
03:46 Changeset [37652] by cwzwarich@webkit.org

2008-10-17 Cameron Zwarich <zwarich@apple.com>

Reviewed by Maciej Stachowiak.

Remove some C style casts.

  • masm/X86Assembler.h: (JSC::JITCodeBuffer::putIntUnchecked): (JSC::X86Assembler::link): (JSC::X86Assembler::linkAbsoluteAddress): (JSC::X86Assembler::getRelocatedAddress):
03:15 Changeset [37651] by cwzwarich@webkit.org

2008-10-17 Cameron Zwarich <zwarich@apple.com>

Rubber-stamped by Maciej Stachowiak.

Remove some C style casts.

  • VM/CTI.cpp: (JSC::CTI::patchGetByIdSelf): (JSC::CTI::patchPutByIdReplace):
  • VM/Machine.cpp: (JSC::Machine::tryCTICachePutByID): (JSC::Machine::tryCTICacheGetByID): (JSC::Machine::cti_op_put_by_id): (JSC::Machine::cti_op_put_by_id_fail): (JSC::Machine::cti_op_get_by_id): (JSC::Machine::cti_op_get_by_id_fail):
02:06 Changeset [37650] by mjs@apple.com

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

Reviewed by Cameron Zwarich.


This patch stops writing the call frame at call and return points;
instead it does so immediately before any CTI call.


0.5% speedup or so on the v8 benchmark


  • VM/CTI.cpp: (JSC::CTI::emitCTICall): (JSC::CTI::compileOpCall): (JSC::CTI::emitSlowScriptCheck): (JSC::CTI::compileBinaryArithOpSlowCase): (JSC::CTI::privateCompileMainPass): (JSC::CTI::privateCompileSlowCases): (JSC::CTI::privateCompile):
  • VM/CTI.h:
01:10 Changeset [37649] by ap@webkit.org

Reviewed by Sam Weinig.

https://bugs.webkit.org/show_bug.cgi?id=21642
Abstract out active object tracking

  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSDOMBinding.cpp: (WebCore::markActiveObjectsForDocument):
  • dom/ActiveDOMObject.cpp: Added. (WebCore::ActiveDOMObject::ActiveDOMObject): (WebCore::ActiveDOMObject::~ActiveDOMObject): (WebCore::ActiveDOMObject::contextDestroyed): (WebCore::ActiveDOMObject::stop):
  • dom/ActiveDOMObject.h: Added. (WebCore::ActiveDOMObject::document): (WebCore::ActiveDOMObject::hasPendingActivity): (WebCore::ActiveDOMObject::setPendingActivity): (WebCore::ActiveDOMObject::unsetPendingActivity):
  • dom/Document.cpp: (WebCore::Document::~Document): (WebCore::Document::stopActiveDOMObjects): (WebCore::Document::createdActiveDOMObject): (WebCore::Document::destroyedActiveDOMObject):
  • dom/Document.h: (WebCore::Document::activeDOMObjects):
  • dom/MessagePort.cpp: (WebCore::MessagePort::contextDestroyed):
  • dom/MessagePort.h:
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::stopLoading):
  • xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::XMLHttpRequest): (WebCore::XMLHttpRequest::~XMLHttpRequest): (WebCore::XMLHttpRequest::associatedFrame): (WebCore::XMLHttpRequest::responseXML): (WebCore::XMLHttpRequest::callReadyStateChangeListener): (WebCore::XMLHttpRequest::initSend): (WebCore::XMLHttpRequest::send): (WebCore::XMLHttpRequest::createRequest): (WebCore::XMLHttpRequest::makeSimpleCrossSiteAccessRequest): (WebCore::XMLHttpRequest::makeCrossSiteAccessRequestWithPreflight): (WebCore::XMLHttpRequest::handleAsynchronousPreflightResult): (WebCore::XMLHttpRequest::loadRequestSynchronously): (WebCore::XMLHttpRequest::loadRequestAsynchronously): (WebCore::XMLHttpRequest::dropProtection): (WebCore::XMLHttpRequest::setRequestHeader): (WebCore::XMLHttpRequest::processSyncLoadResults): (WebCore::XMLHttpRequest::didFinishLoading): (WebCore::XMLHttpRequest::didFinishLoadingPreflight): (WebCore::XMLHttpRequest::willSendRequest): (WebCore::XMLHttpRequest::accessControlCheck): (WebCore::XMLHttpRequest::didReceiveResponsePreflight): (WebCore::XMLHttpRequest::stop): (WebCore::XMLHttpRequest::contextDestroyed):
  • xml/XMLHttpRequest.h: Move activity tracking to a new ActiveDOMObject class.
01:04 Changeset [37648] by cwzwarich@webkit.org

2008-10-17 Cameron Zwarich <zwarich@apple.com>

Reviewed by Sam Weinig.

Make WREC require CTI because it won't actually compile otherwise.

  • wtf/Platform.h:

10/16/08:

20:24 Changeset [37647] by mjs@apple.com

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

Reviewed by Geoff Garen.

  • fixed <rdar://problem/5806316> JavaScriptCore should not force building with gcc 4.0
  • use gcc 4.2 when building with Xcode 3.1 or newer on Leopard, even though this is not the default

This time there is no performance regression; we can avoid having
to use the fastcall calling convention for CTI functions by using
varargs to prevent the compiler from moving things around on the
stack.


  • Configurations/DebugRelease.xcconfig:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • VM/CTI.cpp:
  • VM/Machine.h:
  • wtf/Platform.h:
20:05 Changeset [37646] by mjs@apple.com

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

Reviewed by Oliver Hunt.


  • kjs/collector.cpp: (JSC::Heap::collect): Avoid crashing when a GC occurs while no global objects are live.
19:57 Changeset [37645] by weinig@apple.com

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

Reviewed by Maciej Stachowiak.

Fix for https://bugs.webkit.org/show_bug.cgi?id=21683
Don't create intermediate StructureIDs for builtin objects

First step in reduce number of StructureIDs created when initializing the
JSGlobalObject.

  • In order to avoid creating the intermediate StructureIDs use the new putDirectWithoutTransition and putDirectFunctionWithoutTransition to add properties to JSObjects without transitioning the StructureID. This patch just implements this strategy for ObjectPrototype but alone reduces the number of StructureIDs create for about:blank by 10, from 142 to 132.
  • kjs/JSGlobalObject.cpp: (JSC::JSGlobalObject::reset):
  • kjs/JSObject.cpp: (JSC::JSObject::putDirectFunctionWithoutTransition):
  • kjs/JSObject.h: (JSC::JSObject::putDirectWithoutTransition):
  • kjs/ObjectPrototype.cpp: (JSC::ObjectPrototype::ObjectPrototype):
  • kjs/ObjectPrototype.h:
  • kjs/StructureID.cpp: (JSC::StructureID::addPropertyWithoutTransition):
  • kjs/StructureID.h:
18:20 Changeset [37644] by hyatt@apple.com

2008-10-16 David Hyatt <hyatt@apple.com>

Simplify styleForRenderer to avoid confusion. Callers in the SVG filter code thought "forRenderer" meant
they would be given a style that corresponded to the RenderObject* passed in. This is not what the code
did though. This patch removes the renderer argument and the Element subclass shadow implementation
so that confusion like this can't occur again.

Reviewed by Oliver Hunt

  • dom/Element.cpp:
  • dom/Element.h:
  • dom/Node.cpp: (WebCore::Node::createRendererIfNeeded): (WebCore::Node::styleForRenderer):
  • dom/Node.h:
  • html/HTMLOptGroupElement.cpp: (WebCore::HTMLOptGroupElement::attach):
  • html/HTMLOptionElement.cpp: (WebCore::HTMLOptionElement::attach):
  • svg/SVGClipPathElement.cpp: (WebCore::SVGClipPathElement::canvasResource):
  • svg/SVGFEDiffuseLightingElement.cpp: (WebCore::SVGFEDiffuseLightingElement::build):
  • svg/SVGFEFloodElement.cpp: (WebCore::SVGFEFloodElement::build):
  • svg/SVGFESpecularLightingElement.cpp: (WebCore::SVGFESpecularLightingElement::build):
  • svg/SVGGradientElement.cpp: (WebCore::SVGGradientElement::buildStops):
  • svg/SVGUseElement.cpp: (WebCore::SVGUseElement::attachShadowTree):
18:04 Changeset [37643] by hyatt@apple.com

Add fixme about this filter code's style gyrations making no sense whatsoever.

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

Fix Qt bustage. Why are filters on in Qt?

17:48 Changeset [37641] by hyatt@apple.com

Fix Qt bustage. Why are filters on in Qt?

17:47 Changeset [37640] by hyatt@apple.com

Fix Qt bustage. Why are filters on in Qt?

17:46 Changeset [37639] by hyatt@apple.com

Fix Qt bustage. Why are filters on in Qt?

17:46 Changeset [37638] by hyatt@apple.com

Fix Qt bustage. Why are filters on in Qt?

17:25 Changeset [37637] by hyatt@apple.com

2008-10-16 David Hyatt <hyatt@apple.com>

https://bugs.webkit.org/attachment.cgi?bugid=21647

Make RenderStyle inherit from RefCounted so that it works with RefPtr. RenderStyle was being malloced
out of the RenderArena. Years and years ago (before TCMalloc), the plan was to make RenderStyles and
all their associated sub-structs use the arena. However only the RenderStyle itself was ever changed
to use the arena.

At a later point style sharing was implemented, which made using the arena for styles pretty pointless,
as the bulk of the styles on a given page are actually shared. Not ever making the sub-structs use the
arena also limited the usefulness.

Now that we have RefPtr/PassRefPtr to eliminate manual ref/deref and now that we use TCMalloc for fast
mallocs, there is no reason to keep RenderStyles in the arena. The benefits of being able to eliminate
manual ref/deref far outweigh keeping them in the arena.

Reviewed by Adam Roben

  • css/CSSStyleSelector.cpp: (WebCore::CSSStyleSelector::CSSStyleSelector): (WebCore::CSSStyleSelector::~CSSStyleSelector): (WebCore::CSSStyleSelector::styleForElement): (WebCore::CSSStyleSelector::keyframeStylesForAnimation): (WebCore::CSSStyleSelector::pseudoStyleForElement): These methods now return a PassRefPtr. They will null out the m_style variable as they hand it back so that it isn't left pointing to the previous style resolve RenderStyle (which is what the old code did).

(WebCore::CSSStyleSelector::updateFont):
(WebCore::CSSStyleSelector::checkSelector):
(WebCore::CSSStyleSelector::applyProperty):
(WebCore::CSSStyleSelector::mapFillSize):
(WebCore::CSSStyleSelector::mapFillXPosition):
(WebCore::CSSStyleSelector::mapFillYPosition):

  • css/CSSStyleSelector.h: (WebCore::CSSStyleSelector::style):
  • dom/Document.cpp: (WebCore::Document::recalcStyle):
  • dom/Element.cpp: (WebCore::Element::styleForRenderer): (WebCore::Element::recalcStyle): (WebCore::Element::computedStyle):
  • dom/Element.h:
  • dom/ElementRareData.h: (WebCore::ElementRareData::ElementRareData): (WebCore::ElementRareData::resetComputedStyle):
  • dom/Node.cpp: (WebCore::Node::diff): (WebCore::Node::createRendererIfNeeded): (WebCore::Node::styleForRenderer): (WebCore::Node::setRenderStyle):
  • dom/Node.h:
  • html/CanvasRenderingContext2D.cpp: (WebCore::CanvasRenderingContext2D::setFont):
  • html/HTMLOptGroupElement.cpp: (WebCore::HTMLOptGroupElement::attach): (WebCore::HTMLOptGroupElement::detach): (WebCore::HTMLOptGroupElement::setRenderStyle): (WebCore::HTMLOptGroupElement::nonRendererRenderStyle):
  • html/HTMLOptGroupElement.h:
  • html/HTMLOptionElement.cpp: (WebCore::HTMLOptionElement::attach): (WebCore::HTMLOptionElement::detach): (WebCore::HTMLOptionElement::setRenderStyle): (WebCore::HTMLOptionElement::nonRendererRenderStyle):
  • html/HTMLOptionElement.h:
  • page/animation/AnimationBase.h: (WebCore::AnimationBase::animate):
  • page/animation/AnimationController.cpp: (WebCore::AnimationController::updateAnimations):
  • page/animation/AnimationController.h:
  • page/animation/CompositeAnimation.cpp: (WebCore::CompositeAnimationPrivate::updateTransitions): (WebCore::CompositeAnimationPrivate::updateKeyframeAnimations): (WebCore::CompositeAnimationPrivate::animate): (WebCore::CompositeAnimation::animate):
  • page/animation/CompositeAnimation.h:
  • page/animation/ImplicitAnimation.cpp: (WebCore::ImplicitAnimation::ImplicitAnimation): (WebCore::ImplicitAnimation::~ImplicitAnimation): (WebCore::ImplicitAnimation::animate): (WebCore::ImplicitAnimation::reset): (WebCore::ImplicitAnimation::isTargetPropertyEqual): (WebCore::ImplicitAnimation::blendPropertyValueInStyle):
  • page/animation/ImplicitAnimation.h: (WebCore::ImplicitAnimation::create):
  • page/animation/KeyframeAnimation.cpp: (WebCore::KeyframeAnimation::KeyframeAnimation): (WebCore::KeyframeAnimation::~KeyframeAnimation): (WebCore::KeyframeAnimation::animate): (WebCore::KeyframeAnimation::validateTransformFunctionList):
  • page/animation/KeyframeAnimation.h: (WebCore::KeyframeAnimation::create): (WebCore::KeyframeAnimation::unanimatedStyle):
  • rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::paint):
  • rendering/MediaControlElements.cpp: (WebCore::MediaControlShadowRootElement::MediaControlShadowRootElement): (WebCore::MediaControlInputElement::MediaControlInputElement):
  • rendering/RenderBlock.cpp: (WebCore::RenderBlock::styleDidChange): (WebCore::RenderBlock::updateFirstLetter):
  • rendering/RenderContainer.cpp: (WebCore::RenderContainer::addChild): (WebCore::RenderContainer::updateBeforeAfterContentForContainer):
  • rendering/RenderFileUploadControl.cpp: (WebCore::RenderFileUploadControl::updateFromElement): (WebCore::RenderFileUploadControl::createButtonStyle):
  • rendering/RenderFileUploadControl.h:
  • rendering/RenderFlow.cpp: (WebCore::RenderFlow::createAnonymousFlow):
  • rendering/RenderFlow.h:
  • rendering/RenderInline.cpp: (WebCore::RenderInline::addChildToFlow):
  • rendering/RenderLayer.cpp: (WebCore::RenderLayer::updateScrollCornerStyle): (WebCore::RenderLayer::updateResizerStyle): (WebCore::RenderLayer::updateReflectionStyle):
  • rendering/RenderListItem.cpp: (WebCore::RenderListItem::styleDidChange):
  • rendering/RenderMedia.cpp: (WebCore::RenderMedia::createPanel): (WebCore::RenderMedia::createTimeDisplay): (WebCore::RenderMedia::changeOpacity):
  • rendering/RenderObject.cpp: (WebCore::RenderObject::selectionBackgroundColor): (WebCore::RenderObject::selectionForegroundColor): (WebCore::RenderObject::createAnonymousBlock): (WebCore::RenderObject::setAnimatableStyle): (WebCore::RenderObject::setStyle): (WebCore::RenderObject::setStyleInternal): (WebCore::RenderObject::arenaDelete): (WebCore::RenderObject::firstLineStyle): (WebCore::RenderObject::getPseudoStyle):
  • rendering/RenderObject.h: (WebCore::RenderObject::style):
  • rendering/RenderSVGBlock.cpp: (WebCore::RenderSVGBlock::setStyle):
  • rendering/RenderSVGBlock.h:
  • rendering/RenderScrollbar.cpp: (WebCore::RenderScrollbar::getScrollbarPseudoStyle): (WebCore::RenderScrollbar::updateScrollbarPart):
  • rendering/RenderScrollbar.h:
  • rendering/RenderSlider.cpp: (WebCore::RenderSlider::styleDidChange): (WebCore::RenderSlider::createThumbStyle): (WebCore::RenderSlider::updateFromElement):
  • rendering/RenderSlider.h:
  • rendering/RenderTable.cpp: (WebCore::RenderTable::addChild):
  • rendering/RenderTableRow.cpp: (WebCore::RenderTableRow::addChild):
  • rendering/RenderTableSection.cpp: (WebCore::RenderTableSection::addChild):
  • rendering/RenderTextControl.cpp: (WebCore::RenderTextControl::styleDidChange): (WebCore::RenderTextControl::createInnerBlockStyle): (WebCore::RenderTextControl::createInnerTextStyle): (WebCore::RenderTextControl::createResultsButtonStyle): (WebCore::RenderTextControl::createCancelButtonStyle): (WebCore::RenderTextControl::createSubtreeIfNeeded): (WebCore::RenderTextControl::updatePlaceholderVisibility):
  • rendering/RenderTextControl.h:
  • rendering/TextControlInnerElements.cpp: (WebCore::TextControlInnerElement::attachInnerElement):
  • rendering/TextControlInnerElements.h:
  • rendering/style/KeyframeList.cpp: (WebCore::KeyframeList::clear): (WebCore::KeyframeList::operator==): (WebCore::KeyframeList::insert):
  • rendering/style/KeyframeList.h: (WebCore::KeyframeValue::KeyframeValue): (WebCore::KeyframeValue::~KeyframeValue): (WebCore::KeyframeValue::key): (WebCore::KeyframeValue::style):
  • rendering/style/RenderStyle.cpp: (WebCore::defaultStyle): (WebCore::RenderStyle::create): (WebCore::RenderStyle::createDefaultStyle): (WebCore::RenderStyle::clone): (WebCore::RenderStyle::RenderStyle): (WebCore::RenderStyle::getCachedPseudoStyle): (WebCore::RenderStyle::addCachedPseudoStyle):
  • rendering/style/RenderStyle.h: (WebCore::): (WebCore::InheritedFlags::operator!=):
  • svg/SVGClipPathElement.cpp: (WebCore::SVGClipPathElement::canvasResource):
  • svg/SVGGradientElement.cpp: (WebCore::SVGGradientElement::buildStops):
  • svg/SVGStyledElement.cpp: (WebCore::SVGStyledElement::resolveStyle):
  • svg/SVGStyledElement.h:
  • svg/SVGUseElement.cpp: (WebCore::SVGUseElement::recalcStyle): (WebCore::SVGUseElement::attachShadowTree):
12:08 Changeset [37636] by andersca@apple.com

2008-10-16 Kenneth Russell <kenneth.russell@sun.com>

Reviewed and landed by Anders Carlsson.

https://bugs.webkit.org/show_bug.cgi?id=21587
NPN_PluginThreadAsyncCall does not work properly


  • plugins/PluginMainThreadScheduler.cpp: (WebCore::PluginMainThreadScheduler::dispatchCalls): Make sure to set m_callPending to false once the queue has been cleared.
11:57 Changeset [37635] by jmalonzo@webkit.org

2008-10-16 Jan Michael Alonzo <jmalonzo@webkit.org>

Gtk build fix. Not reviewed.

  • DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: (LayoutTestController::setSmartInsertDeleteEnabled):
09:12 Changeset [37634] by jchaffraix@webkit.org

2008-10-16 Julien Chaffraix <jchaffraix@pleyo.com>

Rubber-stamped by Alexey Proskuryakov.

Remove duplicated code in this test.

  • http/tests/xmlhttprequest/xmlhttprequest-post-crash.html:
08:52 Changeset [37633] by darin@apple.com

WebKitTools:

2008-10-15 Glenn Wilson <gwilson@google.com>

Added new method to allow tests to disable smart editing in the course of a test.
This is a possible solution to bug .20655

Reviewed by Tim Hatcher.

  • DumpRenderTree/LayoutTestController.cpp: (setSmartInsertDeleteEnabledCallback): new method (LayoutTestController::staticFunctions): added new method to static list of callbacks
  • DumpRenderTree/LayoutTestController.h: added signature of new method
  • DumpRenderTree/mac/DumpRenderTree.mm: (resetWebViewToConsistentStateBeforeTesting): added state resetting
  • DumpRenderTree/mac/LayoutTestControllerMac.mm: (LayoutTestController::setSmartInsertDeleteEnabled): added new method
  • DumpRenderTree/win/DumpRenderTree.cpp: (resetWebViewToConsistentStateBeforeTesting): added state resetting
  • DumpRenderTree/win/LayoutTestControllerWin.cpp: (LayoutTestController::setSmartInsertDeleteEnabled): added new method

LayoutTests:

2008-10-15 Glenn Wilson <gwilson@google.com>

Added tests to verify that smart editing can be disabled for some tests.

Reviewed by Tim Hatcher.

  • editing/deleting/smart-editing-disabled-expected.txt: Added.
  • editing/deleting/smart-editing-disabled.html: Added.
04:11 Changeset [37632] by mjs@apple.com

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

Reviewed by Cameron Zwarich.


  • fix for: REGRESSION: over 100 StructureIDs leak loading about:blank (result of fix for bug 21633)


Apparent slight progression (< 0.5%) on v8 benchmarks and SunSpider.

  • kjs/StructureID.cpp: (JSC::StructureID::~StructureID): Don't deref this object's parent's pointer to itself from the destructor; that doesn't even make sense. (JSC::StructureID::addPropertyTransition): Don't refer the single transition; the rule is that parent StructureIDs are ref'd but child ones are not. Refing the child creates a cycle.
01:00 Changeset [37631] by ap@webkit.org

Reviewed by Darin Adler.

https://bugs.webkit.org/show_bug.cgi?id=21609
Make MessagePorts protect their peers across heaps

JavaScriptCore:

  • JavaScriptCore.exp:
  • kjs/JSGlobalObject.cpp: (JSC::JSGlobalObject::markCrossHeapDependentObjects):
  • kjs/JSGlobalObject.h:
  • kjs/collector.cpp: (JSC::Heap::collect): Before GC sweep phase, a function supplied by global object is now called for all global objects in the heap, making it possible to implement cross-heap dependencies.

WebCore:

  • dom/MessagePort.cpp: (WebCore::MessagePort::MessagePort):
  • dom/MessagePort.h: (WebCore::MessagePort::setJSWrapperIsKnownToBeInaccessible): (WebCore::MessagePort::jsWrapperIsKnownToBeInaccessible): Track objects whose JS wrappers are no longer reachable in MessagePort. Unfortunately, this means that the implementation object knows about JS bindings - but it is not possible to access JS wrappers from another heap/thread.
  • bindings/js/JSDOMBinding.cpp: (WebCore::markCrossHeapDependentObjectsForDocument):
  • bindings/js/JSDOMBinding.h:
  • bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::markCrossHeapDependentObjects):
  • bindings/js/JSDOMWindowBase.h: Implement cross-heap dependency tracking for entangled MessagePorts. If a wrapper object hasn't been marked normally, it is marked as inaccessible. It is then marked manually, as long as its entangled port is accessible itself.
Note: See TracTimeline for information about the timeline view.