RESOLVED FIXED 149100
Implement indirect calls in WebAssembly
https://bugs.webkit.org/show_bug.cgi?id=149100
Summary Implement indirect calls in WebAssembly
Sukolsak Sakshuwong
Reported 2015-09-12 21:48:21 PDT
Implement indirect calls in WebAssembly
Attachments
Patch (14.75 KB, patch)
2015-09-12 21:50 PDT, Sukolsak Sakshuwong
no flags
Patch (15.40 KB, patch)
2015-09-12 23:12 PDT, Sukolsak Sakshuwong
no flags
Update to ToT and use Math.imul for multiplication (15.37 KB, patch)
2015-09-16 16:45 PDT, Sukolsak Sakshuwong
no flags
Sukolsak Sakshuwong
Comment 1 2015-09-12 21:50:38 PDT
Sukolsak Sakshuwong
Comment 2 2015-09-12 23:12:26 PDT
Geoffrey Garen
Comment 3 2015-09-16 11:18:38 PDT
Comment on attachment 261077 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=261077&action=review r=me > Source/JavaScriptCore/wasm/WASMFunctionCompiler.h:610 > + > + const Vector<JSFunction*>& functions = m_module->functionPointerTables()[functionPointerTableIndex].functions; > + move(TrustedImmPtr(functions.data()), GPRInfo::regT0); > + load32(temporaryAddress(m_tempStackTop - 1), GPRInfo::regT1); > + m_tempStackTop--; Can you guarantee that the vector will never resize (and thus never change its data pointer)?
Sukolsak Sakshuwong
Comment 4 2015-09-16 14:28:34 PDT
Thanks for the review. (In reply to comment #3) > Comment on attachment 261077 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=261077&action=review > > r=me > > > Source/JavaScriptCore/wasm/WASMFunctionCompiler.h:610 > > + > > + const Vector<JSFunction*>& functions = m_module->functionPointerTables()[functionPointerTableIndex].functions; > > + move(TrustedImmPtr(functions.data()), GPRInfo::regT0); > > + load32(temporaryAddress(m_tempStackTop - 1), GPRInfo::regT1); > > + m_tempStackTop--; > > Can you guarantee that the vector will never resize (and thus never change > its data pointer)? WASM source is parsed in two passes. The first pass is for syntax checking and initializing some data. The second pass is for code generation. The vector only resizes in the first pass. It will never resize after that. The vector only resizes when we load the WASM module and parse the function pointer tables. It will never resize after that.
Sukolsak Sakshuwong
Comment 5 2015-09-16 14:30:57 PDT
Oops, please ignore the second paragraph. I rephrased it and forgot to remove it.
Sukolsak Sakshuwong
Comment 6 2015-09-16 16:45:14 PDT
Created attachment 261337 [details] Update to ToT and use Math.imul for multiplication
Geoffrey Garen
Comment 7 2015-09-16 17:35:05 PDT
Comment on attachment 261337 [details] Update to ToT and use Math.imul for multiplication r=me
WebKit Commit Bot
Comment 8 2015-09-16 18:23:36 PDT
Comment on attachment 261337 [details] Update to ToT and use Math.imul for multiplication Clearing flags on attachment: 261337 Committed r189892: <http://trac.webkit.org/changeset/189892>
WebKit Commit Bot
Comment 9 2015-09-16 18:23:40 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.