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/parser.rb

    r167094 r172429  
    166166        when /\A[:,\(\)\[\]=\+\-~\|&^*]/
    167167            result << Token.new(CodeOrigin.new(fileName, lineNumber), $&)
     168        when /\A".*"/
     169            result << Token.new(CodeOrigin.new(fileName, lineNumber), $&)
    168170        else
    169171            raise "Lexer error at #{CodeOrigin.new(fileName, lineNumber).to_s}, unexpected sequence #{str[0..20].inspect}"
     
    211213def isInteger(token)
    212214    token =~ /\A[0-9]/
     215end
     216
     217def isString(token)
     218    token =~ /\A".*"/
    213219end
    214220
     
    398404            @idx += 1
    399405            result
     406        elsif isString @tokens[@idx]
     407            result = StringLiteral.new(@tokens[@idx].codeOrigin, @tokens[@idx].string)
     408            @idx += 1
     409            result
    400410        elsif isIdentifier @tokens[@idx]
    401411            codeOrigin, names = parseColonColon
     
    439449   
    440450    def couldBeExpression
    441         @tokens[@idx] == "-" or @tokens[@idx] == "~" or @tokens[@idx] == "sizeof" or isInteger(@tokens[@idx]) or isVariable(@tokens[@idx]) or @tokens[@idx] == "("
     451        @tokens[@idx] == "-" or @tokens[@idx] == "~" or @tokens[@idx] == "sizeof" or isInteger(@tokens[@idx]) or isString(@tokens[@idx]) or isVariable(@tokens[@idx]) or @tokens[@idx] == "("
    442452    end
    443453   
Note: See TracChangeset for help on using the changeset viewer.