diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-02-24 16:36:50 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-02-24 16:36:50 +0100 |
commit | ad0d549d4cc13433f77c1ac8f0ab379c83d93f28 (patch) | |
tree | b34b0daceb7c8e7fdde4b4ec43650ab7caadb0a9 /Source/JavaScriptCore/offlineasm/backends.rb | |
parent | 03e12282df9aa1e1fb05a8b90f1cfc2e08764cec (diff) | |
download | qtwebkit-ad0d549d4cc13433f77c1ac8f0ab379c83d93f28.tar.gz |
Imported WebKit commit bb52bf3c0119e8a128cd93afe5572413a8617de9 (http://svn.webkit.org/repository/webkit/trunk@108790)
Diffstat (limited to 'Source/JavaScriptCore/offlineasm/backends.rb')
-rw-r--r-- | Source/JavaScriptCore/offlineasm/backends.rb | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/offlineasm/backends.rb b/Source/JavaScriptCore/offlineasm/backends.rb new file mode 100644 index 000000000..2c65b517d --- /dev/null +++ b/Source/JavaScriptCore/offlineasm/backends.rb @@ -0,0 +1,96 @@ +# Copyright (C) 2011 Apple Inc. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +# THE POSSIBILITY OF SUCH DAMAGE. + +require "armv7" +require "ast" +require "x86" + +BACKENDS = + [ + "X86", + "ARMv7" + ] + +# Keep the set of working backends separate from the set of backends that might be +# supported. This is great because the BACKENDS list is almost like a reserved +# words list, in that it causes settings resolution to treat those words specially. +# Hence this lets us set aside the name of a backend we might want to support in +# the future while not actually supporting the backend yet. +WORKING_BACKENDS = + [ + "X86", + "ARMv7" + ] + +BACKEND_PATTERN = Regexp.new('\\A(' + BACKENDS.join(')|(') + ')\\Z') + +class Node + def lower(name) + send("lower" + name) + end +end + +# Overrides for lower() for those nodes that are backend-agnostic + +class Label + def lower(name) + $asm.putsLabel(self.name[1..-1]) + end +end + +class LocalLabel + def lower(name) + $asm.putsLocalLabel "_offlineasm_#{self.name[1..-1]}" + end +end + +class LabelReference + def asmLabel + Assembler.labelReference(name[1..-1]) + end +end + +class LocalLabelReference + def asmLabel + Assembler.localLabelReference("_offlineasm_"+name[1..-1]) + end +end + +class Skip + def lower(name) + end +end + +class Sequence + def lower(name) + if respond_to? "lower#{name}" + send("lower#{name}") + else + @list.each { + | node | + node.lower(name) + } + end + end +end + |