RESOLVED FIXED Bug 22878
It should be possible to post (clone) built-in JS objects to Workers
https://bugs.webkit.org/show_bug.cgi?id=22878
Summary It should be possible to post (clone) built-in JS objects to Workers
Alexey Proskuryakov
Reported 2008-12-16 05:42:22 PST
Worker.postMessage only takes strings now, but the spec has been recently changed to allow arbitrary JS objects, such as Arrays and Objects. We need to support this. This is similar to JSON, but not quite the same.
Attachments
It should be possible to post (clone) built-in JS objects to Workers (97.90 KB, patch)
2009-10-05 23:16 PDT, Oliver Hunt
no flags
It should be possible to post (clone) built-in JS objects to Workers (98.21 KB, patch)
2009-10-06 00:21 PDT, Oliver Hunt
barraclough: review+
Alexey Proskuryakov
Comment 1 2008-12-16 05:43:07 PST
Oliver Hunt
Comment 2 2009-10-05 23:16:21 PDT
Created attachment 40694 [details] It should be possible to post (clone) built-in JS objects to Workers
Oliver Hunt
Comment 3 2009-10-06 00:21:09 PDT
Created attachment 40699 [details] It should be possible to post (clone) built-in JS objects to Workers
Gavin Barraclough
Comment 4 2009-10-06 15:36:29 PDT
Comment on attachment 40699 [details] It should be possible to post (clone) built-in JS objects to Workers In the test case, I'd suggest renaming 'equal' to something more descriptive (I initially wondered, "why not just use ==" :-) ). Maybe 'isCloneOf'? In SerializedArray, all index values should be less than 'm_length'. In SerializedScriptValueData, I think 'operator bool ()' should be 'operator bool()' – a quick grep of JSC would seem to agree with this. r+
Oliver Hunt
Comment 5 2009-10-06 21:58:31 PDT
Landed r49214
Shinichiro Hamaji
Comment 6 2009-10-06 22:03:08 PDT
(In reply to comment #5) > Landed r49214 This expected.txt contains this line: > CONSOLE MESSAGE: line 54: RangeError: Maximum call stack size exceeded. Is this OK? Also... it is very nice if you modify the test so that the results don't contain "PST" . Maybe we can use the value of getTime like if (equal(actualValue, expectedValue)) { if (expectedValue && expectedValue.getTime) { expectedValue = expectedValue.getTime() + " (the value of getTime) } console.innerHTML += "PASS: " + actual + " is " + expectedValue + " of type " + typeof actualValue + "<br>"; } else ?
Note You need to log in before you can comment on or make changes to this bug.