1
# Copyright (C) 2011 Apple Inc. All rights reserved.
3
# Redistribution and use in source and binary forms, with or without
4
# modification, are permitted provided that the following conditions
6
# 1. Redistributions of source code must retain the above copyright
7
# notice, this list of conditions and the following disclaimer.
8
# 2. Redistributions in binary form must reproduce the above copyright
9
# notice, this list of conditions and the following disclaimer in the
10
# documentation and/or other materials provided with the distribution.
12
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
13
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
14
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
15
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
16
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
17
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
18
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
19
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
20
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
21
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
22
# THE POSSIBILITY OF SUCH DAMAGE.
38
# Keep the set of working backends separate from the set of backends that might be
39
# supported. This is great because the BACKENDS list is almost like a reserved
40
# words list, in that it causes settings resolution to treat those words specially.
41
# Hence this lets us set aside the name of a backend we might want to support in
42
# the future while not actually supporting the backend yet.
51
BACKEND_PATTERN = Regexp.new('\\A(' + BACKENDS.join(')|(') + ')\\Z')
59
e.message << "At #{codeOriginString}"
65
# Overrides for lower() for those nodes that are backend-agnostic
69
$asm.putsLabel(self.name[1..-1])
75
$asm.putsLocalLabel "_offlineasm_#{self.name[1..-1]}"
81
Assembler.labelReference(name[1..-1])
84
Assembler.cLabelReference(name[1..-1])
88
class LocalLabelReference
90
Assembler.localLabelReference("_offlineasm_"+name[1..-1])
93
Assembler.cLocalLabelReference("_offlineasm_"+name[1..-1])
104
$activeBackend = name
105
if respond_to? "getModifiedList#{name}"
106
newList = send("getModifiedList#{name}")
111
elsif respond_to? "lower#{name}"