| Summary: | ARM Offline assembler temporary register allocator has duplicate register when building fat binaries | ||||||
|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Michael Saboff <msaboff> | ||||
| Component: | JavaScriptCore | Assignee: | Michael Saboff <msaboff> | ||||
| Status: | RESOLVED FIXED | ||||||
| Severity: | Normal | Keywords: | InRadar | ||||
| Priority: | P2 | ||||||
| Version: | 528+ (Nightly build) | ||||||
| Hardware: | All | ||||||
| OS: | All | ||||||
| Attachments: |
|
||||||
Created attachment 222079 [details]
Patch
Comment on attachment 222079 [details]
Patch
Isn't the bug here just that someone used the .concat() method, which modifies the receiver, instead of using the + operator, which does not?
(In reply to comment #3) > (From update of attachment 222079 [details]) > Isn't the bug here just that someone used the .concat() method, which modifies the receiver, instead of using the + operator, which does not? That is another way to solve it, but the proposed solution is simpler. Comment on attachment 222079 [details]
Patch
r=me
Committed r162701: <http://trac.webkit.org/changeset/162701> |
When the offline assembler is used to build a fat ARM binary, say ARMv7 and ARMv7s, the concat in getModifiedListARMCommon (ARM_EXTRA_GPRS.concat([SpecialRegister.new("r11")]) ) is executed twice, thus adding r11 a second time. Two subsequent requests for a temporary register can result in bad code being generated.