Bug 152370

Summary: ARM64 MacroAssembler improperly reuses data temp register in test32() and test8() calls
Product: WebKit Reporter: Michael Saboff <msaboff>
Component: JavaScriptCoreAssignee: Michael Saboff <msaboff>
Status: RESOLVED FIXED    
Severity: Normal CC: commit-queue, keith_miller, mark.lam, sbarati
Priority: P2    
Version: WebKit Nightly Build   
Hardware: iPhone / iPad   
OS: All   
Bug Depends on:    
Bug Blocks: 151839    
Attachments:
Description Flags
Patch none

Description Michael Saboff 2015-12-16 17:55:29 PST
The void test32(ResultCondition cond, Address address, TrustedImm32 mask, RegisterID dest) and the similar test8() use the dataTempRegister with the value loaded from "address" and then call void test32(ResultCondition cond, RegisterID src, TrustedImm32 mask, RegisterID dest).  The two register version of test32 can use the dataTempRegister to materialize the immediate mask.
Comment 1 Michael Saboff 2015-12-16 18:03:55 PST
Created attachment 267516 [details]
Patch
Comment 2 WebKit Commit Bot 2015-12-16 21:03:16 PST
Comment on attachment 267516 [details]
Patch

Clearing flags on attachment: 267516

Committed r194208: <http://trac.webkit.org/changeset/194208>
Comment 3 WebKit Commit Bot 2015-12-16 21:03:19 PST
All reviewed patches have been landed.  Closing bug.
Comment 4 Geoffrey Garen 2015-12-17 14:02:20 PST
Comment on attachment 267516 [details]
Patch

Does this work? Keith told me this doesn't work.
Comment 5 Michael Saboff 2015-12-17 14:06:22 PST
(In reply to comment #4)
> Comment on attachment 267516 [details]
> Patch
> 
> Does this work? Keith told me this doesn't work.

From my discussion with Keith, this is what he tried and it work.  He was concerned that there were other issues, but I couldn't find any.
Comment 6 Keith Miller 2015-12-17 15:22:57 PST
My patch is working with this patch applied so this should be sufficient.