Ignore:
Timestamp:
Aug 11, 2014, 8:20:04 PM (11 years ago)
Author:
[email protected]
Message:

Eliminate {push,pop}CalleeSaves in favor of individual pushes & pops
https://bugs.webkit.org/show_bug.cgi?id=127155

Reviewed by Geoffrey Garen.

Eliminated the offline assembler instructions {push,pop}CalleeSaves as well as the
ARM64 specific {push,pop}LRAndFP and replaced them with individual push and pop
instructions. Where the registers referenced by the added push and pop instructions
are not part of the offline assembler register aliases, used a newly added "emit"
offline assembler instruction which takes a string literal and outputs that
string as a native instruction.

  • llint/LowLevelInterpreter.asm:
  • offlineasm/arm.rb:
  • offlineasm/arm64.rb:
  • offlineasm/ast.rb:
  • offlineasm/cloop.rb:
  • offlineasm/instructions.rb:
  • offlineasm/mips.rb:
  • offlineasm/parser.rb:
  • offlineasm/sh4.rb:
  • offlineasm/transform.rb:
  • offlineasm/x86.rb:
File:
1 edited

Legend:

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

    r167094 r172429  
    581581end
    582582
     583class StringLiteral < NoChildren
     584    attr_reader :value
     585   
     586    def initialize(codeOrigin, value)
     587        super(codeOrigin)
     588        @value = value[1..-2]
     589        raise "Bad string literal #{value.inspect} at #{codeOriginString}" unless value.is_a? String
     590    end
     591   
     592    def dump
     593        "#{value}"
     594    end
     595   
     596    def ==(other)
     597        other.is_a? StringLiteral and other.value == @value
     598    end
     599   
     600    def address?
     601        false
     602    end
     603   
     604    def label?
     605        false
     606    end
     607   
     608    def immediate?
     609        false
     610    end
     611   
     612    def immediateOperand?
     613        false
     614    end
     615       
     616    def register?
     617        false
     618    end
     619end
     620
    583621class RegisterID < NoChildren
    584622    attr_reader :name
     
    890928        when "globalAnnotation"
    891929            $asm.putGlobalAnnotation
     930        when "emit"
     931          $asm.puts "#{operands[0].dump}"
    892932        else
    893933            raise "Unhandled opcode #{opcode} at #{codeOriginString}"
Note: See TracChangeset for help on using the changeset viewer.