Summary: | Macro assembler branch8 & 16 methods vary in treatment of upper bits | ||||||
---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Michael Saboff <msaboff> | ||||
Component: | JavaScriptCore | Assignee: | Michael Saboff <msaboff> | ||||
Status: | RESOLVED FIXED | ||||||
Severity: | Normal | CC: | barraclough | ||||
Priority: | P2 | ||||||
Version: | 528+ (Nightly build) | ||||||
Hardware: | All | ||||||
OS: | Unspecified | ||||||
Attachments: |
|
Description
Michael Saboff
2011-09-16 18:29:02 PDT
In the case of branch8/16, the current intended behaviour is for any bits other than the low N to be ignored (where N is 8/16). Any MacroAssembler implementation that does otherwise may function incorrectly. This is easy to implement correctly on x86, but may be expensive on other platforms. In many cases we may be able to change the JIT to ensure the full 32-bit value is known (e.g. zero extended), and call branch32 instead. If we can change all client code to use branch32 we can fix this by simply removing the 8/16 bit compares. Created attachment 108579 [details]
Fix for branch16
|