diff options
Diffstat (limited to 'Source/JavaScriptCore/offlineasm/backends.rb')
-rw-r--r-- | Source/JavaScriptCore/offlineasm/backends.rb | 51 |
1 files changed, 48 insertions, 3 deletions
diff --git a/Source/JavaScriptCore/offlineasm/backends.rb b/Source/JavaScriptCore/offlineasm/backends.rb index 902a764af..274441997 100644 --- a/Source/JavaScriptCore/offlineasm/backends.rb +++ b/Source/JavaScriptCore/offlineasm/backends.rb @@ -1,4 +1,4 @@ -# Copyright (C) 2011 Apple Inc. All rights reserved. +# Copyright (C) 2011, 2016 Apple Inc. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -23,6 +23,7 @@ require "config" require "arm" +require "arm64" require "ast" require "x86" require "mips" @@ -32,10 +33,13 @@ require "cloop" BACKENDS = [ "X86", + "X86_WIN", "X86_64", + "X86_64_WIN", "ARM", "ARMv7", "ARMv7_TRADITIONAL", + "ARM64", "MIPS", "SH4", "C_LOOP" @@ -49,10 +53,13 @@ BACKENDS = WORKING_BACKENDS = [ "X86", + "X86_WIN", "X86_64", + "X86_64_WIN", "ARM", "ARMv7", "ARMv7_TRADITIONAL", + "ARM64", "MIPS", "SH4", "C_LOOP" @@ -60,6 +67,37 @@ WORKING_BACKENDS = BACKEND_PATTERN = Regexp.new('\\A(' + BACKENDS.join(')|(') + ')\\Z') +$allBackends = {} +$validBackends = {} +BACKENDS.each { + | backend | + $validBackends[backend] = true + $allBackends[backend] = true +} + +def includeOnlyBackends(list) + newValidBackends = {} + list.each { + | backend | + if $validBackends[backend] + newValidBackends[backend] = true + end + } + $validBackends = newValidBackends +end + +def isBackend?(backend) + $allBackends[backend] +end + +def isValidBackend?(backend) + $validBackends[backend] +end + +def validBackends + $validBackends.keys +end + class Node def lower(name) begin @@ -76,7 +114,8 @@ end class Label def lower(name) - $asm.putsLabel(self.name[1..-1]) + $asm.debugAnnotation codeOrigin.debugDirective if $enableDebugAnnotations + $asm.putsLabel(self.name[1..-1], @global) end end @@ -88,8 +127,13 @@ end class LabelReference def asmLabel - Assembler.labelReference(name[1..-1]) + if extern? + Assembler.externLabelReference(name[1..-1]) + else + Assembler.labelReference(name[1..-1]) + end end + def cLabel Assembler.cLabelReference(name[1..-1]) end @@ -99,6 +143,7 @@ class LocalLabelReference def asmLabel Assembler.localLabelReference("_offlineasm_"+name[1..-1]) end + def cLabel Assembler.cLocalLabelReference("_offlineasm_"+name[1..-1]) end |