Thanks for working on this! https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/DocumentLoader.cpp File Source/core/loader/DocumentLoader.cpp (right): https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/DocumentLoader.cpp#newcode117 Source/core/loader/DocumentLoader.cpp:117: m_applicationCacheHost->dispose(); I'm wondering if ...
4 years, 10 months ago
(2015-06-22 01:57:59 UTC)
#4
4 years, 10 months ago
(2015-06-22 05:03:46 UTC)
#5
https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/app...
File Source/core/loader/appcache/ApplicationCacheHost.cpp (right):
https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/app...
Source/core/loader/appcache/ApplicationCacheHost.cpp:177: m_documentLoader =
nullptr;
On 2015/06/22 01:57:59, haraken wrote:
>
> Now in non-oilpan, both DocumentLoader and ApplicationCacheHost are on the
heap.
> So it seems unsafe (and not needed) to clear
> ApplicationCacheHost::m_documentLoader in dispose() which is called in
> DocumentLoader's destructor.
>
> Maybe can we entirely remove the dispose() method from both oilpan and
> non-oilpan?
That will not work. The Persistent<> on DocumentLoader will keep the Host alive
for another GC iteration. In time for the host to be called and a freed
m_documentLoader to be accessed.
haraken
https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/appcache/ApplicationCacheHost.cpp File Source/core/loader/appcache/ApplicationCacheHost.cpp (right): https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/appcache/ApplicationCacheHost.cpp#newcode177 Source/core/loader/appcache/ApplicationCacheHost.cpp:177: m_documentLoader = nullptr; On 2015/06/22 05:03:46, sof wrote: > ...
4 years, 10 months ago
(2015-06-22 05:28:56 UTC)
#6
https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/app...
File Source/core/loader/appcache/ApplicationCacheHost.cpp (right):
https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/app...
Source/core/loader/appcache/ApplicationCacheHost.cpp:177: m_documentLoader =
nullptr;
On 2015/06/22 05:03:46, sof wrote:
> On 2015/06/22 01:57:59, haraken wrote:
> >
> > Now in non-oilpan, both DocumentLoader and ApplicationCacheHost are on the
> heap.
> > So it seems unsafe (and not needed) to clear
> > ApplicationCacheHost::m_documentLoader in dispose() which is called in
> > DocumentLoader's destructor.
> >
> > Maybe can we entirely remove the dispose() method from both oilpan and
> > non-oilpan?
>
> That will not work. The Persistent<> on DocumentLoader will keep the Host
alive
> for another GC iteration. In time for the host to be called and a freed
> m_documentLoader to be accessed.
I'm not sure but maybe can we clear the Persistent<> just after calling
ApplicationCacheHost::dispose()?
4 years, 10 months ago
(2015-06-22 05:36:02 UTC)
#7
On 2015/06/22 05:28:56, haraken wrote:
>
https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/app...
> File Source/core/loader/appcache/ApplicationCacheHost.cpp (right):
>
>
https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/app...
> Source/core/loader/appcache/ApplicationCacheHost.cpp:177: m_documentLoader =
> nullptr;
> On 2015/06/22 05:03:46, sof wrote:
> > On 2015/06/22 01:57:59, haraken wrote:
> > >
> > > Now in non-oilpan, both DocumentLoader and ApplicationCacheHost are on the
> > heap.
> > > So it seems unsafe (and not needed) to clear
> > > ApplicationCacheHost::m_documentLoader in dispose() which is called in
> > > DocumentLoader's destructor.
> > >
> > > Maybe can we entirely remove the dispose() method from both oilpan and
> > > non-oilpan?
> >
> > That will not work. The Persistent<> on DocumentLoader will keep the Host
> alive
> > for another GC iteration. In time for the host to be called and a freed
> > m_documentLoader to be accessed.
>
> I'm not sure but maybe can we clear the Persistent<> just after calling
> ApplicationCacheHost::dispose()?
Isn't it cleared by code inserted by the compiler in ~DocumentLoader just after
that dispose() call?
haraken
On 2015/06/22 05:36:02, sof wrote: > On 2015/06/22 05:28:56, haraken wrote: > > > https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/appcache/ApplicationCacheHost.cpp ...
4 years, 10 months ago
(2015-06-22 05:39:21 UTC)
#8
On 2015/06/22 05:36:02, sof wrote:
> On 2015/06/22 05:28:56, haraken wrote:
> >
>
https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/app...
> > File Source/core/loader/appcache/ApplicationCacheHost.cpp (right):
> >
> >
>
https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/app...
> > Source/core/loader/appcache/ApplicationCacheHost.cpp:177: m_documentLoader =
> > nullptr;
> > On 2015/06/22 05:03:46, sof wrote:
> > > On 2015/06/22 01:57:59, haraken wrote:
> > > >
> > > > Now in non-oilpan, both DocumentLoader and ApplicationCacheHost are on
the
> > > heap.
> > > > So it seems unsafe (and not needed) to clear
> > > > ApplicationCacheHost::m_documentLoader in dispose() which is called in
> > > > DocumentLoader's destructor.
> > > >
> > > > Maybe can we entirely remove the dispose() method from both oilpan and
> > > > non-oilpan?
> > >
> > > That will not work. The Persistent<> on DocumentLoader will keep the Host
> > alive
> > > for another GC iteration. In time for the host to be called and a freed
> > > m_documentLoader to be accessed.
> >
> > I'm not sure but maybe can we clear the Persistent<> just after calling
> > ApplicationCacheHost::dispose()?
>
> Isn't it cleared by code inserted by the compiler in ~DocumentLoader just
after
> that dispose() call?
Maybe I'm misunderstanding your comment. I thought we can address:
> > > That will not work. The Persistent<> on DocumentLoader will keep the Host
> > alive
> > > for another GC iteration. In time for the host to be called and a freed
> > > m_documentLoader to be accessed.
^^^ this concern by calling ApplicationCacheHost::dispose and
m_applicationCacheHost.clear() at the same time (i.e., in detachFromFrame).
sof
On 2015/06/22 05:39:21, haraken wrote: > On 2015/06/22 05:36:02, sof wrote: > > On 2015/06/22 ...
4 years, 10 months ago
(2015-06-22 05:56:36 UTC)
#9
On 2015/06/22 05:39:21, haraken wrote:
> On 2015/06/22 05:36:02, sof wrote:
> > On 2015/06/22 05:28:56, haraken wrote:
> > >
> >
>
https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/app...
> > > File Source/core/loader/appcache/ApplicationCacheHost.cpp (right):
> > >
> > >
> >
>
https://codereview.chromium.org/1194003004/diff/100001/Source/core/loader/app...
> > > Source/core/loader/appcache/ApplicationCacheHost.cpp:177: m_documentLoader
=
> > > nullptr;
> > > On 2015/06/22 05:03:46, sof wrote:
> > > > On 2015/06/22 01:57:59, haraken wrote:
> > > > >
> > > > > Now in non-oilpan, both DocumentLoader and ApplicationCacheHost are on
> the
> > > > heap.
> > > > > So it seems unsafe (and not needed) to clear
> > > > > ApplicationCacheHost::m_documentLoader in dispose() which is called in
> > > > > DocumentLoader's destructor.
> > > > >
> > > > > Maybe can we entirely remove the dispose() method from both oilpan and
> > > > > non-oilpan?
> > > >
> > > > That will not work. The Persistent<> on DocumentLoader will keep the
Host
> > > alive
> > > > for another GC iteration. In time for the host to be called and a freed
> > > > m_documentLoader to be accessed.
> > >
> > > I'm not sure but maybe can we clear the Persistent<> just after calling
> > > ApplicationCacheHost::dispose()?
> >
> > Isn't it cleared by code inserted by the compiler in ~DocumentLoader just
> after
> > that dispose() call?
>
> Maybe I'm misunderstanding your comment. I thought we can address:
>
> > > > That will not work. The Persistent<> on DocumentLoader will keep the
Host
> > > alive
> > > > for another GC iteration. In time for the host to be called and a freed
> > > > m_documentLoader to be accessed.
>
> ^^^ this concern by calling ApplicationCacheHost::dispose and
> m_applicationCacheHost.clear() at the same time (i.e., in detachFromFrame).
Sure, we can try to move a line of code out of the destructor. but dispose() is
needed !ENABLE(OILPAN).
sof
Given that we have an explicit detach step over DocumentLoader, we can extend that to ...
4 years, 10 months ago
(2015-06-22 06:49:18 UTC)
#10
4 years, 10 months ago
(2015-06-22 07:13:17 UTC)
#12
LGTM, much nicer!
sof
will wait on oilpan results.
4 years, 10 months ago
(2015-06-22 07:45:23 UTC)
#13
will wait on oilpan results.
sof
The "FrameLoader always detaches its DocumentLoaders" only held 95% of the time, so some more ...
4 years, 10 months ago
(2015-06-22 11:23:52 UTC)
#14
The "FrameLoader always detaches its DocumentLoaders" only held 95% of the time,
so some more changes needed to enforce that invariant.
ptal? Changes to FrameLoader and DocumentLoader only.
haraken
On 2015/06/22 11:23:52, sof wrote: > The "FrameLoader always detaches its DocumentLoaders" only held 95% ...
4 years, 10 months ago
(2015-06-22 11:51:31 UTC)
#15
On 2015/06/22 11:23:52, sof wrote:
> The "FrameLoader always detaches its DocumentLoaders" only held 95% of the
time,
> so some more changes needed to enforce that invariant.
>
> ptal? Changes to FrameLoader and DocumentLoader only.
LGTM
sof
The CQ bit was checked by sigbjornf@opera.com
4 years, 10 months ago
(2015-06-22 14:04:30 UTC)
#16
The initial landing attempt got caught up in some unrelated test instability; addressed by http://code.google.com/p/chromium/issues/detail?id=503583. ...
4 years, 10 months ago
(2015-06-23 15:17:42 UTC)
#20
Try jobs failed on following builders: mac_blink_rel on tryserver.blink (JOB_FAILED, http://build.chromium.org/p/tryserver.blink/builders/mac_blink_rel/builds/60320)
4 years, 10 months ago
(2015-06-23 16:07:01 UTC)
#25
Issue 1194003004: Oilpan: enable appcache + move DocumentLoader to the heap.
(Closed)
Created 4 years, 10 months ago by sof
Modified 4 years, 10 months ago
Reviewers: oilpan-reviews, haraken
Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Comments: 15