Ignore:
Timestamp:
Oct 24, 2019, 1:36:00 AM (6 years ago)
Author:
[email protected]
Message:

Disable pichdr generation on MIPS for return location labels
https://bugs.webkit.org/show_bug.cgi?id=203040

Patch by Paulo Matos <Paulo Matos> on 2019-10-24
Reviewed by Yusuke Suzuki.

Disable generation of pichdr for return location labels generated in
defineOSRExitReturnLabel. Since r250806 (Allow OSR exit to the LLInt),
MIPS was segfaulting since the pichdr after an OSR exit was corruption
the gp register.

  • offlineasm/mips.rb:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/offlineasm/mips.rb

    r245906 r251533  
    680680        | node |
    681681        myList << node
    682         if node.is_a? Label
     682        if node.is_a? Label and node.name !~ /^.*_return_location(?:_(?:wide16|wide32))?$/
     683            # Only generate a pichdr if the label is not a return location (OSR Exit) - a cpload
     684            # (generated by pichdr) after this type of label would cause the a gp register
     685            # corruption. The cpload only sets gp correctly if t9 contains the address of the start
     686            # of cpload, which is only the case when we do a `jr t9` (on a OSR Exit).
     687            # This regular expression needs to stay in sync with the labels
     688            # generated in macro defineOSRExitReturnLabel defined llint/LowLevelInterpreter.asm
    683689            myList << Instruction.new(node.codeOrigin, "pichdr", [])
    684690        end
Note: See TracChangeset for help on using the changeset viewer.