We should pass Isolate to ArrayValue and Dictionary. Rationale 1: We want to replace V8Proxy::throwError(ExceptionCode) with setDOMException(ExceptionCode, Isolate*). For the replacement, we need to pass Isolate to V8Utilities::extractTransferables(). To pass Isolate to V8Utilities::extractTransferables(), ( ...omitted... ), we need to pass Isolate* to ArrayValue and Dictionary. Rationale 2: JSC already passes ExecState to ArrayValue and Dictionary.
Created attachment 156818 [details] Patch
Comment on attachment 156818 [details] Patch Attachment 156818 [details] did not pass chromium-ews (chromium-xvfb): Output: http://queues.webkit.org/results/13451204
Created attachment 156825 [details] Patch
Comment on attachment 156825 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=156825&action=review > Source/WebCore/bindings/v8/ArrayValue.h:60 > + v8::Isolate* m_isolate; Is it ok to store a long-lived pointer to an isolate? How do we know this pointer remains valid?
Created attachment 157078 [details] patch for landing
Created attachment 157079 [details] Patch
(In reply to comment #4) > > Source/WebCore/bindings/v8/ArrayValue.h:60 > > + v8::Isolate* m_isolate; > > Is it ok to store a long-lived pointer to an isolate? How do we know this pointer remains valid? I think it's ok. Dictionary and ArrayValue are designed based on the assumption that they are allocated on stack. In fact, - Dictionary already has m_options of type Local<Value>. ArrayValue already has m_array of type Local<Array>. - JSC already stores ExecState in Dictionary and ArrayValue. Just in case, I added ASSERT(m_isolate == v8::Isolate::Current()) to the patch.
Comment on attachment 157079 [details] Patch Makes sense. Thanks.
Comment on attachment 157079 [details] Patch Rejecting attachment 157079 [details] from commit-queue. Failed to run "['/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch', '--status-host=queues.webkit.org', '-..." exit_code: 2 Last 500 characters of output: -merging Tools/ChangeLog Failed to merge in the changes. Patch failed at 0001 Optimize ChildNode{Insertion,Removal}Notifier::notify() by lazily taking a snapshot of child nodes When you have resolved this problem run "git rebase --continue". If you would prefer to skip this patch, instead run "git rebase --skip". To restore the original branch and stop rebasing run "git rebase --abort". rebase refs/remotes/origin/master: command returned error: 1 Died at Tools/Scripts/update-webkit line 164. Full output: http://queues.webkit.org/results/13459119
Comment on attachment 157079 [details] Patch Clearing flags on attachment: 157079 Committed r125012: <http://trac.webkit.org/changeset/125012>
All reviewed patches have been landed. Closing bug.