Bug 79609

Summary: LLInt should support JSVALUE64
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: rniwa
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Bug Depends on: 79608    
Bug Blocks:    
Attachments:
Description Flags
it begins
none
work in progress
none
work in progress
none
work in progress
none
work in progress
none
work in progress
none
work in progress
none
work in progress
none
work in progress
none
work in progress
none
the patch
none
the patch
buildbot: commit-queue-
the patch barraclough: review+

Description Filip Pizlo 2012-02-26 15:28:28 PST
Patch forthcoming.
Comment 1 Filip Pizlo 2012-02-26 15:41:22 PST
Created attachment 128933 [details]
it begins

Work in progress. Note that this includes https://bugs.webkit.org/show_bug.cgi?id=79608 for now, since that hasn't landed yet.
Comment 2 Filip Pizlo 2012-02-26 20:16:01 PST
Created attachment 128941 [details]
work in progress
Comment 3 Filip Pizlo 2012-02-27 17:23:21 PST
Created attachment 129143 [details]
work in progress

Filled in more of the 64-bit code.
Comment 4 Filip Pizlo 2012-02-28 17:14:57 PST
Created attachment 129358 [details]
work in progress

Almost half way there!
Comment 5 Filip Pizlo 2012-03-06 20:19:56 PST
Created attachment 130527 [details]
work in progress

More than half done.
Comment 6 Filip Pizlo 2012-03-06 20:27:35 PST
Created attachment 130528 [details]
work in progress

Same as previous but with typo fixes.  Turns out the offlineasm's parser and semantic analyzer emits useful error messages.
Comment 7 Filip Pizlo 2012-03-08 19:49:24 PST
Created attachment 130957 [details]
work in progress

Almost there.
Comment 8 Filip Pizlo 2012-03-08 19:54:17 PST
<rdar://problem/10063437>
Comment 9 Filip Pizlo 2012-03-08 20:56:23 PST
Created attachment 130966 [details]
work in progress

All of the code is written.  Offlineasm compiles it fine, but I have no idea if clang will be happy with offlineasm's input, and if it is, if it'll run at all.

Next step: having fun playing with seg faults.
Comment 10 Filip Pizlo 2012-03-09 16:25:37 PST
Created attachment 131132 [details]
work in progress

It's passing most run-javascriptcore-tests.

Still more work to be done, though.
Comment 11 Filip Pizlo 2012-03-09 16:52:30 PST
Created attachment 131136 [details]
work in progress

Fixed some silly goofs, like one that was preventing the get_by_id/put_by_id fast paths from being taken.
Comment 12 Filip Pizlo 2012-03-09 23:28:24 PST
Created attachment 131158 [details]
the patch

It's ready.
Comment 13 Filip Pizlo 2012-03-09 23:36:23 PST
Created attachment 131159 [details]
the patch

Wrote a changelog.
Comment 14 Build Bot 2012-03-10 00:11:18 PST
Comment on attachment 131159 [details]
the patch

Attachment 131159 [details] did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/11933072
Comment 15 Filip Pizlo 2012-03-10 00:24:02 PST
Created attachment 131161 [details]
the patch

Fix Mac build and a minor bug in op_to_jsnumber.
Comment 16 Oliver Hunt 2012-03-10 11:31:10 PST
Comment on attachment 131161 [details]
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=131161&action=review

This looks fine to me (other than the unnecessary release mode hash lookups :( ) but i'll let gavin make the final call

> Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:233
> +    if (exec->globalData().interpreter->getOpcodeID(pc[0].u.opcode) == op_ret) {

Doesn't this result in a hash lookup even in release builds without logging?
Comment 17 Filip Pizlo 2012-03-10 12:25:46 PST
(In reply to comment #16)
> (From update of attachment 131161 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=131161&action=review
> 
> This looks fine to me (other than the unnecessary release mode hash lookups :( ) but i'll let gavin make the final call

This patch does not introduce any unnecessary hash lookups. 

> 
> > Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:233
> > +    if (exec->globalData().interpreter->getOpcodeID(pc[0].u.opcode) == op_ret) {
> 
> Doesn't this result in a hash lookup even in release builds without logging?

No. That function only gets called with execution tracing is enabled. It is not enabled by default in any builds.
Comment 18 Gavin Barraclough 2012-03-10 14:46:39 PST
Comment on attachment 131161 [details]
the patch

r+, but see email
Comment 19 Gavin Barraclough 2012-03-10 14:48:46 PST
Comment on attachment 131161 [details]
the patch

Scratch the email comment.  r+, all looks good, commit away!
Comment 20 Filip Pizlo 2012-03-10 16:35:58 PST
Landed in http://trac.webkit.org/changeset/110383
Comment 21 Ryosuke Niwa 2012-03-10 20:03:06 PST
I'm not certain but maybe this regressed Dromaeo/sunspider-crypto-sha1 (or that undone the temporary gain made by http://trac.webkit.org/changeset/109705/)?

http://webkit-perf.appspot.com/graph.html#tests=[[39655,2001,32196]]&sel=none&displayrange=7&datatype=running