⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Dec 28, 2008:

5:35 PM Changeset in webkit [39497] by cwzwarich@webkit.org
  • 2 edits in trunk/WebCore

2008-12-28 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Sam Weinig.

Bug 23016: JavaScriptDebugServer::recompileAllJSFunctions() should not execute JS while reparsing all functions
<https://bugs.webkit.org/show_bug.cgi?id=23016>
<rdar://problem/6425077>

JavaScriptDebugServer::recompileAllJSFunctions() calls sourceParsed() while
reparsing all JS functions, which will execute JS in the inspector. Depending
on the order in which functions are recompiled, a function could have a new
body but other functions that have not been recompiled could have an optimized
(in the sense of inline caching) call to it, bypassing the check of whether or
not there is generated bytecode. This leads to a crash caused by accessing
indices off of a null pointer.

To fix the problem, simply delay calling sourceParsed() until after all functions
have been reparsed. The crash isn't 100% reproducible, but on the one test case
I have, this makes it impossible to reproduce after a large number of attempts,
when it used to happen every few attempts.

  • inspector/JavaScriptDebugServer.cpp: (WebCore::JavaScriptDebugServer::recompileAllJSFunctions):
4:25 PM Changeset in webkit [39496] by Nikolas Zimmermann
  • 3 edits in trunk/WebCore

Rubber-stamped by Antti Koivisto.
Oops, remove some last minute ASSERTS that are obviously wrong.

4:16 PM Changeset in webkit [39495] by Nikolas Zimmermann
  • 10 edits
    1 add in trunk/WebCore

Reviewed by Antti Koivisto.

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

Don't rely on HTMLFormControlElement in RenderTextControl.

Introduce an abstract FormControlElement class, containing the
valueMatchesRenderer/setValueMatchesRenderer, the only HTMLFormControlElement
specific methods that RenderTextControl relies on.

This makes it possible for WML to reuse RenderTextControl.
RenderTextControlSingleLine still relies on HTMLInputElement,
this will change if WMLInputElement is introduced.

1:33 PM Changeset in webkit [39494] by cwzwarich@webkit.org
  • 3 edits in trunk/WebCore

2008-12-28 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Darin Adler.

Bug 23006: Many Loader::Host member functions are not safe to use reentrantly
<https://bugs.webkit.org/show_bug.cgi?id=23006>
<rdar://problem/6216106>

Many Loader::Host member functions set m_processingResource to true when they
begin processing a resource and set it to false when they are done. Thanks to
JavaScript and the web inspector, almost anything can happen during the
processing of a resource, including these functions being called reentrantly,
which is unsafe due to this way of using m_processingResource.

This can theoretically cause a Loader::Host to be used after it is freed,
because when Loader::servedPendingRequests() is called, it will free Hosts
that have m_processingResource set to false.

To fix this, we replace m_processingResource with m_numResourcesProcessing,
which is incremented and decremented using a helper object, ProcessingResource.

There are no occurrences of crashes caused by this bug that are reproducible
by multiple people, but this fixes the problem of m_processingResource being
set to false while a Host is still alive.

  • loader/loader.cpp: (WebCore::Loader::Host::Host): (WebCore::Loader::Host::didFinishLoading): Change to use ProcessingResource instead of manually setting m_processingResource. (WebCore::Loader::Host::didFail): Ditto. (WebCore::Loader::Host::didReceiveData): Ditto.
  • loader/loader.h: (WebCore::Loader::Host::ProcessingResource::ProcessingResource): Added. (WebCore::Loader::Host::ProcessingResource::~ProcessingResource): Added. (WebCore::Loader::Host::processingResource): Change to use m_numResourcesProcessing instead of just getting m_processingResource.
11:40 AM Changeset in webkit [39493] by ap@webkit.org
  • 3 edits
    2 adds in trunk

Reviewed by Darin Adler.

https://bugs.webkit.org/show_bug.cgi?id=23007
REGRESSION: Timer-related crash when closing Web Inspector

Test: fast/dom/Window/remove-timeout-crash.html

  • bindings/js/DOMTimer.cpp: (WebCore::DOMTimer::fired): Besides deleting the timer, make sure to remove it from a Document map.
9:19 AM Changeset in webkit [39492] by ap@webkit.org
  • 3 edits
    4 adds in trunk

Reviewed by Anders Carlsson.

https://bugs.webkit.org/show_bug.cgi?id=23012
Bring application cache manifest parsing up to date

Test: http/tests/appcache/manifest-parsing.html

  • loader/appcache/ManifestParser.cpp: (WebCore::Mode): Added a constant for unknown sections, which are ignored when parsing. This is necessary for future extensions. (WebCore::parseManifest): Parse unknown sections correctly. Ignore trailing tokens in supported sections.
9:12 AM Changeset in webkit [39491] by ap@webkit.org
  • 9 edits
    2 moves
    7 adds in trunk/LayoutTests

Reviewed by Anders Carlsson.

https://bugs.webkit.org/show_bug.cgi?id=23009
Add a test for application cache offline operation

  • http/tests/resources/network-simulator.php: A proxy script to simulate a network connection that can go offline, using an infinite redirect loop in offline mode to generate an error.
  • http/tests/appcache/offline-access-expected.txt: Added.
  • http/tests/appcache/offline-access.html: Added.
  • http/tests/appcache/resources/offline-access-frame.html: Added.
  • http/tests/appcache/resources/offline-access.js: Added.
  • http/tests/appcache/resources/offline-access.manifest: Added. Test that an application loads successfully from cache.
  • http/tests/resources: Added.
  • http/tests/resources/portabilityLayer.php: Copied from LayoutTests/http/tests/xmlhttprequest/resources/portabilityLayer.php.
  • http/tests/resources/reset-temp-file.php: Copied from LayoutTests/http/tests/xmlhttprequest/resources/reset-temp-file.php.
  • http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache-invalidation-by-header.html:
  • http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache-invalidation-by-method.html:
  • http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache-timeout.html:
  • http/tests/xmlhttprequest/access-control-basic-allow-preflight-cache.html:
  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache-invalidation.php:
  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache-timeout.php:
  • http/tests/xmlhttprequest/resources/access-control-basic-preflight-cache.php:
  • http/tests/xmlhttprequest/resources/portabilityLayer.php: Removed.
  • http/tests/xmlhttprequest/resources/reset-temp-file.php: Removed.
  • http/tests/appcache/resources/fail-on-update.php: Moved some common scripts from xmlhttprequest/resources/ to resources/
5:54 AM Changeset in webkit [39490] by Nikolas Zimmermann
  • 13 edits
    4 adds in trunk/WebCore

Reviewed by Darin Adler.

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

RenderTextControl heavily depends on HTMLInputElement & HTMLTextAreaElement.
It handles multi & single line text control rendering in one class. Split up
in two new classes: RenderTextControlSingleLine & RenderTextControlMultiLine.

This has several benefits - code is more readable now, the memory usage
for RenderTextControlMultiLine is reduced, as all stuff related to search fields
lives in RenderTextControlSingleLine, and it's easier to introduce an
abstraction for input/textarea-like elements for other HTML flavours like WML.

2:05 AM Changeset in webkit [39489] by ap@webkit.org
  • 8 edits in trunk/WebCore

2008-12-28 Dmitry Titov <dimich@chromium.org>

Reviewed by Darin Adler.

https://bugs.webkit.org/show_bug.cgi?id=22755
Prepare to add create/remove timeout methods to JSWorkerContext by moving
timer-specific code from JSDOMWindowBase to DOMTimer.
Moved everything JS-related from DOMTimer to ScheduledAction.
Now ScheduledAction is what it wanted to be all the time: a JS engine-specific
container for timer callback that knows how to invoke it.
DOMTimer is not anymore JS-specific.

This is mostly moving the code around. No intended functional changes.

  • bindings/js/DOMTimer.cpp: (WebCore::DOMTimer::DOMTimer): (WebCore::DOMTimer::~DOMTimer): (WebCore::DOMTimer::install): (WebCore::DOMTimer::removeById): (WebCore::DOMTimer::fired): (WebCore::DOMTimer::stop):
  • bindings/js/DOMTimer.h:
  • bindings/js/JSDOMWindowBase.cpp: (WebCore::JSDOMWindowBase::installTimeout): (WebCore::JSDOMWindowBase::removeTimeout):
  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/ScheduledAction.cpp: (WebCore::ScheduledAction::execute):
  • bindings/js/ScheduledAction.h:
  • dom/Document.cpp: (WebCore::Document::addTimeout):
12:52 AM Changeset in webkit [39488] by cwzwarich@webkit.org
  • 3 edits
    2 adds in trunk

2008-12-28 Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Oliver Hunt.

Bug 22840: REGRESSION (r38349): Gmail doesn't load with profiling enabled
<https://bugs.webkit.org/show_bug.cgi?id=22840>
<rdar://problem/6468077>

JavaScriptCore:

  • bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::emitNewArray): Add an assertion that the range of registers passed to op_new_array is sequential. (JSC::BytecodeGenerator::emitCall): Correct the relocation of registers when emitting profiler hooks so that registers aren't leaked. Also, add an assertion that the 'this' register is always ref'd (because it is), remove the needless protection of the 'this' register when relocating, and add an assertion that the range of registers passed to op_call for function call arguments is sequential. (JSC::BytecodeGenerator::emitConstruct): Correct the relocation of registers when emitting profiler hooks so that registers aren't leaked. Also, add an assertion that the range of registers passed to op_construct for function call arguments is sequential.

LayoutTests:

  • fast/profiler/call-register-leak-expected.txt: Added.
  • fast/profiler/call-register-leak.html: Added.

Dec 27, 2008:

6:54 PM Changeset in webkit [39487] by mrowe@apple.com
  • 13 edits
    1 add in trunk/JavaScriptCore

<rdar://problem/6467376> Race condition in WTF::currentThread can lead to a thread using two different identifiers during its lifetime

If a newly-created thread calls WTF::currentThread() before WTF::createThread calls establishIdentifierForPthreadHandle
then more than one identifier will be used for the same thread. We can avoid this by adding some extra synchronization
during thread creation that delays the execution of the thread function until the thread identifier has been set up, and
an assertion to catch this problem should it reappear in the future.

Reviewed by Alexey Proskuryakov.

  • wtf/Threading.cpp: Added.

(WTF::NewThreadContext::NewThreadContext):
(WTF::threadEntryPoint):
(WTF::createThread): Add cross-platform createThread function that delays the execution of the thread function until
after the thread identifier has been set up.

  • wtf/Threading.h:
  • wtf/ThreadingGtk.cpp:

(WTF::establishIdentifierForThread):
(WTF::createThreadInternal):

  • wtf/ThreadingNone.cpp:

(WTF::createThreadInternal):

  • wtf/ThreadingPthreads.cpp:

(WTF::establishIdentifierForPthreadHandle):
(WTF::createThreadInternal):

  • wtf/ThreadingQt.cpp:

(WTF::identifierByQthreadHandle):
(WTF::establishIdentifierForThread):
(WTF::createThreadInternal):

  • wtf/ThreadingWin.cpp:

(WTF::storeThreadHandleByIdentifier):
(WTF::createThreadInternal):

Add Threading.cpp to the build.

12:30 AM Changeset in webkit [39486] by ap@webkit.org
  • 2 edits in trunk/LayoutTests

Suggested by Dave Levin.

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

Another attempt to fix the failing XHR tests on Tiger buildbot: make file_put_contents
portable implementation return a result.

  • http/tests/xmlhttprequest/resources/portabilityLayer.php:
Note: See TracTimeline for information about the timeline view.