- 30 Sep, 2016 1 commit
-
-
leszeks authored
matching function, creates a hashmap the specialises the case of keys that simply check pointer equality. I measure an average ~1% improvement on Octane code-load. Review-Url: https://codereview.chromium.org/2369963002 Cr-Commit-Position: refs/heads/master@{#39920}
-
- 20 Sep, 2016 3 commits
-
-
adamk authored
This patch gives the ability for the embedder to ask for the module requests of a module, and to pass a ResolveCallback into Module::Instantiate(). In d8, I've implemented a simple module_map that's used along with this API to allow loading, compiling, instantiating, and evaluating a whole tree of modules. No path resolution is yet implemented, meaning that all import paths are relative to whatever directory d8 runs in. And no imports are linked to the exports of the requested module. BUG=v8:1569 Review-Url: https://codereview.chromium.org/2351113004 Cr-Commit-Position: refs/heads/master@{#39569}
-
jgruber authored
This commit ensures that the d8 shared library build uses the same logic as the standard static build by exporting relevant functions and classes. BUG=chromium:646337 Committed: https://crrev.com/2c10ca8086a4d595ecf9aa843d2031b068470d65 Review-Url: https://codereview.chromium.org/2342563002 Cr-Original-Commit-Position: refs/heads/master@{#39503} Cr-Commit-Position: refs/heads/master@{#39547}
-
machenbach authored
Revert of [d8] Fix the shared-library build (patchset #12 id:20002 of https://codereview.chromium.org/2342563002/ ) Reason for revert: Unblocking roll Original issue's description: > [d8] Fix the shared-library build > > This commit ensures that the d8 shared library build uses the same logic as > the standard static build by exporting relevant functions and classes. > > BUG=chromium:646337 > > Committed: https://crrev.com/2c10ca8086a4d595ecf9aa843d2031b068470d65 > Cr-Commit-Position: refs/heads/master@{#39503} TBR=jochen@chromium.org,vogelheim@chromium.org,bmeurer@chromium.org,titzer@chromium.org,jgruber@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:646337 Review-Url: https://codereview.chromium.org/2356703003 Cr-Commit-Position: refs/heads/master@{#39526}
-
- 19 Sep, 2016 1 commit
-
-
jgruber authored
This commit ensures that the d8 shared library build uses the same logic as the standard static build by exporting relevant functions and classes. BUG=chromium:646337 Review-Url: https://codereview.chromium.org/2342563002 Cr-Commit-Position: refs/heads/master@{#39503}
-
- 16 Sep, 2016 1 commit
-
-
adamk authored
R=neis@chromium.org BUG=v8:1569 Review-Url: https://codereview.chromium.org/2347933002 Cr-Commit-Position: refs/heads/master@{#39481}
-
- 10 Aug, 2016 1 commit
-
-
lpy authored
BUG=v8:4561 LOG=N Review-Url: https://codereview.chromium.org/2208873002 Cr-Commit-Position: refs/heads/master@{#38553}
-
- 27 Jul, 2016 1 commit
-
-
fmeawad authored
V8 has had a trace event macro interface for while, but without a tracing controller a standalone V8 would be unable to collect traces. This CL introduces a complete Tracing Controller system for V8. It is fully function except that it does not yet store trace event args. This CL has a few components, The tracing controller itself, contributed by the author of this CL The Trace config (including the parser), contributed by lpy@ The Trace Object, Trace Writer, and Trace Buffer are all contributed by rksang@ BUG=v8:4561 LOG=N The original CL was failing the V8 Arm Builder: https://build.chromium.org/p/client.v8.ports/builders/V8%20Arm%20-%20builder/builds/2456 and the V8 Mips Builder: https://build.chromium.org/p/client.v8.ports/builders/V8%20Mips%20-%20builder/builds/2506 The failure is due to undefined behavior of CHECK_EQ of 2 const char* Fix in patch #1 Committed: https://crrev.com/3d598452679ce208ad9b2f48e0fb3fae352ce375 Cr-Commit-Position: refs/heads/master@{#38073} patch from issue 2137013006 at patchset 200001 (http://crrev.com/2137013006#ps200001) Review-Url: https://codereview.chromium.org/2183923004 Cr-Commit-Position: refs/heads/master@{#38104}
-
- 26 Jul, 2016 2 commits
-
-
lpy authored
Revert of [Tracing] V8 Tracing Controller (patchset #11 id:200001 of https://codereview.chromium.org/2137013006/ ) Reason for revert: Revert this CL due to V8 Arm Builder failure and V8 Mips Builder failure. https://build.chromium.org/p/client.v8.ports/builders/V8%20Arm%20-%20builder/builds/2456 https://build.chromium.org/p/client.v8.ports/builders/V8%20Mips%20-%20builder/builds/2506 Original issue's description: > [Tracing] V8 Tracing Controller > > V8 has had a trace event macro interface for while, but without a tracing > controller a standalone V8 would be unable to collect traces. > > This CL introduces a complete Tracing Controller system for V8. > It is fully function except that it does not yet store trace event args. > > This CL has a few components, > The tracing controller itself, contributed by the author of this CL > The Trace config (including the parser), contributed by lpy@ > The Trace Object, Trace Writer, and Trace Buffer are all contributed by rksang@ > > BUG=v8:4561 > LOG=N > > Committed: https://crrev.com/3d598452679ce208ad9b2f48e0fb3fae352ce375 > Cr-Commit-Position: refs/heads/master@{#38073} TBR=jochen@chromium.org,mattloring@google.com,rskang@google.com,yangguo@chromium.org,fmeawad@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4561 Review-Url: https://codereview.chromium.org/2183943002 Cr-Commit-Position: refs/heads/master@{#38074}
-
fmeawad authored
V8 has had a trace event macro interface for while, but without a tracing controller a standalone V8 would be unable to collect traces. This CL introduces a complete Tracing Controller system for V8. It is fully function except that it does not yet store trace event args. This CL has a few components, The tracing controller itself, contributed by the author of this CL The Trace config (including the parser), contributed by lpy@ The Trace Object, Trace Writer, and Trace Buffer are all contributed by rksang@ BUG=v8:4561 LOG=N Review-Url: https://codereview.chromium.org/2137013006 Cr-Commit-Position: refs/heads/master@{#38073}
-
- 09 Jun, 2016 1 commit
-
-
lpy authored
We ported hashmap.h into libsampler as a workaround before, so the main focus of this patch is to reduce code duplication. This patch moves the hashmap into src/base as well as creates DefaultAllocationPolicy using malloc and free. BUG=v8:5050 LOG=n Review-Url: https://codereview.chromium.org/2010243003 Cr-Commit-Position: refs/heads/master@{#36873}
-
- 27 May, 2016 1 commit
-
-
littledan authored
Some tests, e.g. in test262, want to create a new same-origin realm. This patch exposes a new function, Realm.createAllowCrossRealmAccess(), which vends a new realm with the same security token as the currently executing one. Review-Url: https://codereview.chromium.org/1973363004 Cr-Commit-Position: refs/heads/master@{#36561}
-
- 27 Apr, 2016 1 commit
-
-
ssanfilippo authored
This commit introduces IgnitionStatisticsExtension, which provides methods for accessing Ignition statistics and counters from JavaScript. The extension is registered when FLAG_ignition and FLAG_trace_ignition_dispatches are both enabled. For the moment, the only exposed function is getIgnitionDispatchCounters(), which allows to retrieve Ignition dispatch counters as a JavaScript object. BUG=v8:4899 LOG=N Review URL: https://codereview.chromium.org/1899133004 Cr-Commit-Position: refs/heads/master@{#35816}
-
- 31 Mar, 2016 1 commit
-
-
yangguo authored
We only use it to store the Stringify function to format REPL output. This is overkill and introduces issues with security tokens. R=jochen@chromium.org BUG= Review URL: https://codereview.chromium.org/1845833002 Cr-Commit-Position: refs/heads/master@{#35158}
-
- 12 Aug, 2015 1 commit
-
-
mstarzinger authored
This tries to remove includes of "-inl.h" headers from normal ".h" headers, thereby reducing the chance of any cyclic dependencies and decreasing the average size of our compilation units. Note that this change still leaves 7 violations of that rule in the code. However there now is the "tools/check-inline-includes.sh" tool detecting such violations. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1283033003 Cr-Commit-Position: refs/heads/master@{#30125}
-
- 11 Aug, 2015 1 commit
-
-
mstarzinger authored
This is the first step of turning the v8.h file into a normal header instead of an include-the-world header. The new rule is that no other header files are allowed to include v8.h, which is enforced by DEPS. Also the number of includes inside the v8.h file has been drastically reduced. Basically the last missing piece is the inclusion of the big objects-inl.h file. This in turn makes many headers follow the IWYU principle. R=bmeurer@chromium.org,hpayer@chromium.org,titzer@chromium.org Review URL: https://codereview.chromium.org/1282503003 Cr-Commit-Position: refs/heads/master@{#30102}
-
- 30 Jul, 2015 2 commits
-
-
binji authored
script_executed and last_run are read/written by multiple threads. Also externalized_shared_contents_ is modified by multiple threads. BUG=4306 R=jarin@chromium.org LOG=n Review URL: https://codereview.chromium.org/1252623003 Cr-Commit-Position: refs/heads/master@{#29912}
-
binji authored
When the main thread terminates, it forcibly terminates all Worker threads. When this happens, the threads objects were only half-created; they had a JavaScript Worker object, but not a C++ worker object. This CL fixes that bug, as well as some other fixes: * Signatures on Worker methods * Use SetAlignedPointerFromInternalField instead of using an External. * Remove state_ from Worker. Simplify to atomic bool running_. BUG=chromium:511880 R=jarin@chromium.org LOG=n Review URL: https://codereview.chromium.org/1255563002 Cr-Commit-Position: refs/heads/master@{#29911}
-
- 23 Jul, 2015 2 commits
-
-
yangguo authored
Nobody seems to use it. A good alternative is rlwrap. R=jochen@chromium.org Review URL: https://codereview.chromium.org/1250223002 Cr-Commit-Position: refs/heads/master@{#29810}
-
yangguo authored
The code is unmaintained and full of errors... but this CL wipes them all away. Nobody seems to use it anyways. R=mvstanton@chromium.org Review URL: https://codereview.chromium.org/1243213004 Cr-Commit-Position: refs/heads/master@{#29801}
-
- 20 Jul, 2015 1 commit
-
-
jochen authored
Original issue's description: > BUG=v8:4134 > LOG=n > R=yangguo@chromium.org > > Review URL: https://codereview.chromium.org/1239053004 BUG=v8:4134 LOG=n R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1235603004 Cr-Commit-Position: refs/heads/master@{#29742}
-
- 17 Jul, 2015 2 commits
-
-
machenbach authored
Revert of Make d8 stop using to-be-deprecated APIs (patchset #3 id:40001 of https://codereview.chromium.org/1239053004/) Reason for revert: [Sheriff] Breaks: http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20debug%20-%20code%20serializer/builds/3400 Original issue's description: > Make d8 stop using to-be-deprecated APIs > > BUG=v8:4134 > LOG=n > R=yangguo@chromium.org > > Committed: https://crrev.com/af82ef84b4f851411f00e69167ab29382c7499b8 > Cr-Commit-Position: refs/heads/master@{#29726} TBR=yangguo@chromium.org,jochen@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4134 Review URL: https://codereview.chromium.org/1240993003 Cr-Commit-Position: refs/heads/master@{#29730}
-
jochen authored
BUG=v8:4134 LOG=n R=yangguo@chromium.org Review URL: https://codereview.chromium.org/1239053004 Cr-Commit-Position: refs/heads/master@{#29726}
-
- 16 Jul, 2015 1 commit
-
-
binji authored
Calling quit() from d8 will call exit(), which will run static destructors. If context_mutex_ is statically allocated, pthread_mutex_destroy will be called. When running d8 in "isolates" mode, another thread may be running. If it calls CreateEvaluationContext, it will lock the context_mutex_. If the mutex is destroyed while it is locked, it will return an error. This CL changes the Mutex to a LazyMutex, which will leak instead of being destroyed. BUG=v8:4279 R=jarin@chromium.org R=machenbach@chromium.org LOG=n Review URL: https://codereview.chromium.org/1240553003 Cr-Commit-Position: refs/heads/master@{#29709}
-
- 15 Jul, 2015 1 commit
-
-
epertoso authored
R=jochen@chromium.org LOG=y BUG= Review URL: https://codereview.chromium.org/1209403005 Cr-Commit-Position: refs/heads/master@{#29680}
-
- 14 Jul, 2015 4 commits
-
-
binji authored
Reland of d8 workers: make sure Shell::Quit is only called once (patchset #1 id:1 of https://codereview.chromium.org/1235083004/) Reason for revert: Looks like the failure is unrelated to my change (still fails after the revert). See http://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Win/builds/856/steps/webkit_unit_tests/logs/stdio Original issue's description: > Revert of d8 workers: make sure Shell::Quit is only called once (patchset #5 id:80001 of https://codereview.chromium.org/1230403003/) > > Reason for revert: > Breaks webkit_unit_tests. See http://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Win/builds/853/steps/webkit_unit_tests/logs/stdio > > Original issue's description: > > d8 workers: make sure Shell::Quit is only called once > > > > When running with isolates, Quit can be called simultaneously by two threads. > > If this happens, then both threads try to clean up the Workers, which could > > crash. > > > > BUG=v8:4279 > > R=jarin@chromium.org > > R=machenbach@chromium.org > > LOG=n > > > > Committed: https://crrev.com/76184292b392d107609f21662a949b58bb1e258c > > Cr-Commit-Position: refs/heads/master@{#29654} > > TBR=jarin@chromium.org,machenbach@chromium.org > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=v8:4279 > > Committed: https://crrev.com/6b2c6eb75678747afca59b4a78ace597e218145d > Cr-Commit-Position: refs/heads/master@{#29656} TBR=jarin@chromium.org,machenbach@chromium.org,adamk@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4279 Review URL: https://codereview.chromium.org/1224203004 Cr-Commit-Position: refs/heads/master@{#29663}
-
binji authored
Note: the previous try was reverted for occasional flaky tests. This continued after the revert, and should be fixed by https://codereview.chromium.org/1226143003. Previously, the serialization code would call Externalize for every transferred ArrayBuffer or SharedArrayBuffer, but that function can only be called once. If the buffer is already externalized, we should call GetContents instead. Also fix use-after-free bug when transferring ArrayBuffers. The transferred ArrayBuffer must be internalized in the new isolate, or be managed by the Shell. The current code gives it to the isolate externalized and frees it immediately afterward when the SerializationData object is destroyed. BUG=chromium:497295 R=jarin@chromium.org LOG=n Review URL: https://codereview.chromium.org/1223813008 Cr-Commit-Position: refs/heads/master@{#29658}
-
binji authored
Revert of d8 workers: make sure Shell::Quit is only called once (patchset #5 id:80001 of https://codereview.chromium.org/1230403003/) Reason for revert: Breaks webkit_unit_tests. See http://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Win/builds/853/steps/webkit_unit_tests/logs/stdio Original issue's description: > d8 workers: make sure Shell::Quit is only called once > > When running with isolates, Quit can be called simultaneously by two threads. > If this happens, then both threads try to clean up the Workers, which could > crash. > > BUG=v8:4279 > R=jarin@chromium.org > R=machenbach@chromium.org > LOG=n > > Committed: https://crrev.com/76184292b392d107609f21662a949b58bb1e258c > Cr-Commit-Position: refs/heads/master@{#29654} TBR=jarin@chromium.org,machenbach@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4279 Review URL: https://codereview.chromium.org/1235083004 Cr-Commit-Position: refs/heads/master@{#29656}
-
binji authored
When running with isolates, Quit can be called simultaneously by two threads. If this happens, then both threads try to clean up the Workers, which could crash. BUG=v8:4279 R=jarin@chromium.org R=machenbach@chromium.org LOG=n Review URL: https://codereview.chromium.org/1230403003 Cr-Commit-Position: refs/heads/master@{#29654}
-
- 13 Jul, 2015 2 commits
-
-
binji authored
* Fix embarrassing bug in DeserializeValue, using a static buffer in multithreaded code. * Fix thread leak when Worker.terminate() is not called. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1226143003 Cr-Commit-Position: refs/heads/master@{#29626}
-
rmcilroy authored
Review URL: https://codereview.chromium.org/1221433021 Cr-Commit-Position: refs/heads/master@{#29604}
-
- 07 Jul, 2015 1 commit
-
-
machenbach authored
Revert of Fix bug when transferring SharedArrayBuffer to multiple Workers. (patchset #3 id:40001 of https://codereview.chromium.org/1215233004/) Reason for revert: [Sheriff] Test hangs sometimes and times out flakily. E.g.: http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosse3/builds/4551/steps/Check%20%28flakes%29/logs/d8-worker-sharedarray.. Original issue's description: > Fix bug when transferring SharedArrayBuffer to multiple Workers. > > Previously, the serialization code would call Externalize for every transferred > ArrayBuffer or SharedArrayBuffer, but that function can only be called once. If > the buffer is already externalized, we should call GetContents instead. > > Also fix use-after-free bug when transferring ArrayBuffers. The transferred > ArrayBuffer must be internalized in the new isolate, or be managed by the > Shell. The current code gives it to the isolate externalized and frees it > immediately afterward when the SerializationData object is destroyed. > > BUG=chromium:497295 > R=jarin@chromium.org > LOG=n > > Committed: https://crrev.com/dd7962bf7838f8379ba776ee6b7b0e4d3bec2140 > Cr-Commit-Position: refs/heads/master@{#29499} TBR=jarin@chromium.org,jochen@chromium.org,binji@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:497295 Review URL: https://codereview.chromium.org/1224843008 Cr-Commit-Position: refs/heads/master@{#29506}
-
- 06 Jul, 2015 1 commit
-
-
binji authored
Previously, the serialization code would call Externalize for every transferred ArrayBuffer or SharedArrayBuffer, but that function can only be called once. If the buffer is already externalized, we should call GetContents instead. Also fix use-after-free bug when transferring ArrayBuffers. The transferred ArrayBuffer must be internalized in the new isolate, or be managed by the Shell. The current code gives it to the isolate externalized and frees it immediately afterward when the SerializationData object is destroyed. BUG=chromium:497295 R=jarin@chromium.org LOG=n Review URL: https://codereview.chromium.org/1215233004 Cr-Commit-Position: refs/heads/master@{#29499}
-
- 01 Jul, 2015 1 commit
-
-
binji authored
This is more consistent with the DOM API, and is clearer w.r.t. which values are available in the lexical environment of the Worker. BUG=chromium:497295 R=jarin@chromium.org LOG=n Review URL: https://codereview.chromium.org/1218553004 Cr-Commit-Position: refs/heads/master@{#29426}
-
- 25 Jun, 2015 1 commit
-
-
binji authored
The issue is that Worker.prototype.terminate was deleting the C++ Worker object, and then Worker.prototype.getMessage was trying to read messages from the queue. The simplest solution is to keep workers in a zombie state when they have been terminated. They won't be reaped until Shell::CleanupWorkers is called. I've also fixed some threading issues with Workers: * Workers can be created by another Worker, so the Shell::workers_ variable must be protected by a mutex. * An individual Worker can typically only be accessed by the isolate that created it, but the main thread can always terminate it, so the Worker::state_ must be accessed in a thread-safe way. BUG=chromium:504136 R=jochen@chromium.org LOG=n Review URL: https://codereview.chromium.org/1208733002 Cr-Commit-Position: refs/heads/master@{#29306}
-
- 22 Jun, 2015 1 commit
-
-
binji authored
This API closely matches the Worker API. The differences: 1) The argument to the Worker constructor is a function to run, not a script. 2) Receiving a message from a worker is a synchronous API (as there is no event loop). The serialization done here is not robust as the real DOM implementation. For example, recursive data structures or otherwise duplicated objects are not allowed. BUG=chromium:497295 LOG=n Review URL: https://codereview.chromium.org/1192923002 Cr-Commit-Position: refs/heads/master@{#29195}
-
- 19 Jun, 2015 2 commits
-
-
binji authored
Revert of Add d8 API for spawning function on a new thread (Second try) (patchset #3 id:60001 of https://codereview.chromium.org/1195613003/) Reason for revert: Fails on V8 Linux - isolates (http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20isolates/builds/4128) Original issue's description: > Add d8 API for spawning function on a new thread (Second try) > > This API closely matches the Worker API. The differences: > > 1) The argument to the Worker constructor is a function to run, not a script. > 2) Receiving a message from a worker is a synchronous API (as there is no event > loop). > > The serialization done here is not robust as the real DOM implementation. For > example, recursive data structures or otherwise duplicated objects are not > allowed. > > BUG=chromium:497295 > R=jochen@chromium.org > LOG=n > > Review URL: https://codereview.chromium.org/1185643004 > > Cr-Commit-Position: refs/heads/master@{#29126} > > Committed: https://crrev.com/ec2eaf712ecee6b4891c0458f2397e04a1f9b339 > Cr-Commit-Position: refs/heads/master@{#29158} TBR=jochen@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:497295 Review URL: https://codereview.chromium.org/1191373005 Cr-Commit-Position: refs/heads/master@{#29161}
-
binji authored
This API closely matches the Worker API. The differences: 1) The argument to the Worker constructor is a function to run, not a script. 2) Receiving a message from a worker is a synchronous API (as there is no event loop). The serialization done here is not robust as the real DOM implementation. For example, recursive data structures or otherwise duplicated objects are not allowed. BUG=chromium:497295 R=jochen@chromium.org LOG=n Review URL: https://codereview.chromium.org/1185643004 Cr-Commit-Position: refs/heads/master@{#29126} Review URL: https://codereview.chromium.org/1195613003 Cr-Commit-Position: refs/heads/master@{#29158}
-
- 18 Jun, 2015 2 commits
-
-
binji authored
Revert of Add d8 API for spawning function on a new thread. (patchset #6 id:100001 of https://codereview.chromium.org/1185643004/) Reason for revert: Fails on V8 Win32 - nosnap - shared (http://build.chromium.org/p/client.v8/builders/V8%20Win32%20-%20nosnap%20-%20shared/builds/7427) Fails on V8 Arm - debug builder (http://build.chromium.org/p/client.v8/builders/V8%20Arm%20-%20debug%20builder/builds/4361) Fails on V8 Linux - shared (http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20shared/builds/4430) Original issue's description: > Add d8 API for spawning function on a new thread. > > This API closely matches the Worker API. The differences: > > 1) The argument to the Worker constructor is a function to run, not a script. > 2) Receiving a message from a worker is a synchronous API (as there is no event > loop). > > The serialization done here is not robust as the real DOM implementation. For > example, recursive data structures or otherwise duplicated objects are not > allowed. > > BUG=none > R=jochen@chromium.org > LOG=n > > Committed: https://crrev.com/3d98b956b56fa283b40913788ff760022d478812 > Cr-Commit-Position: refs/heads/master@{#29126} TBR=jochen@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=none Review URL: https://codereview.chromium.org/1192193002 Cr-Commit-Position: refs/heads/master@{#29130}
-
binji authored
This API closely matches the Worker API. The differences: 1) The argument to the Worker constructor is a function to run, not a script. 2) Receiving a message from a worker is a synchronous API (as there is no event loop). The serialization done here is not robust as the real DOM implementation. For example, recursive data structures or otherwise duplicated objects are not allowed. BUG=none R=jochen@chromium.org LOG=n Review URL: https://codereview.chromium.org/1185643004 Cr-Commit-Position: refs/heads/master@{#29126}
-