summaryrefslogtreecommitdiffstats
path: root/JavaScriptCore/assembler/MacroAssembler.h
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2011-05-06 11:45:16 +0100
committerSteve Block <steveblock@google.com>2011-05-12 13:44:10 +0100
commitcad810f21b803229eb11403f9209855525a25d57 (patch)
tree29a6fd0279be608e0fe9ffe9841f722f0f4e4269 /JavaScriptCore/assembler/MacroAssembler.h
parent121b0cf4517156d0ac5111caf9830c51b69bae8f (diff)
downloadexternal_webkit-cad810f21b803229eb11403f9209855525a25d57.zip
external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.gz
external_webkit-cad810f21b803229eb11403f9209855525a25d57.tar.bz2
Merge WebKit at r75315: Initial merge by git.
Change-Id: I570314b346ce101c935ed22a626b48c2af266b84
Diffstat (limited to 'JavaScriptCore/assembler/MacroAssembler.h')
-rw-r--r--JavaScriptCore/assembler/MacroAssembler.h347
1 files changed, 0 insertions, 347 deletions
diff --git a/JavaScriptCore/assembler/MacroAssembler.h b/JavaScriptCore/assembler/MacroAssembler.h
deleted file mode 100644
index fa165de..0000000
--- a/JavaScriptCore/assembler/MacroAssembler.h
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * Copyright (C) 2008 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. ``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
- * 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.
- */
-
-#ifndef MacroAssembler_h
-#define MacroAssembler_h
-
-#if ENABLE(ASSEMBLER)
-
-#if CPU(ARM_THUMB2)
-#include "MacroAssemblerARMv7.h"
-namespace JSC { typedef MacroAssemblerARMv7 MacroAssemblerBase; };
-
-#elif CPU(ARM_TRADITIONAL)
-#include "MacroAssemblerARM.h"
-namespace JSC { typedef MacroAssemblerARM MacroAssemblerBase; };
-
-#elif CPU(MIPS)
-#include "MacroAssemblerMIPS.h"
-namespace JSC {
-typedef MacroAssemblerMIPS MacroAssemblerBase;
-};
-
-#elif CPU(X86)
-#include "MacroAssemblerX86.h"
-namespace JSC { typedef MacroAssemblerX86 MacroAssemblerBase; };
-
-#elif CPU(X86_64)
-#include "MacroAssemblerX86_64.h"
-namespace JSC { typedef MacroAssemblerX86_64 MacroAssemblerBase; };
-
-#else
-#error "The MacroAssembler is not supported on this platform."
-#endif
-
-
-namespace JSC {
-
-class MacroAssembler : public MacroAssemblerBase {
-public:
-
- using MacroAssemblerBase::pop;
- using MacroAssemblerBase::jump;
- using MacroAssemblerBase::branch32;
- using MacroAssemblerBase::branch16;
-#if CPU(X86_64)
- using MacroAssemblerBase::branchPtr;
- using MacroAssemblerBase::branchTestPtr;
-#endif
-
-
- // Platform agnostic onvenience functions,
- // described in terms of other macro assembly methods.
- void pop()
- {
- addPtr(Imm32(sizeof(void*)), stackPointerRegister);
- }
-
- void peek(RegisterID dest, int index = 0)
- {
- loadPtr(Address(stackPointerRegister, (index * sizeof(void*))), dest);
- }
-
- void poke(RegisterID src, int index = 0)
- {
- storePtr(src, Address(stackPointerRegister, (index * sizeof(void*))));
- }
-
- void poke(Imm32 value, int index = 0)
- {
- store32(value, Address(stackPointerRegister, (index * sizeof(void*))));
- }
-
- void poke(ImmPtr imm, int index = 0)
- {
- storePtr(imm, Address(stackPointerRegister, (index * sizeof(void*))));
- }
-
-
- // Backwards banches, these are currently all implemented using existing forwards branch mechanisms.
- void branchPtr(Condition cond, RegisterID op1, ImmPtr imm, Label target)
- {
- branchPtr(cond, op1, imm).linkTo(target, this);
- }
-
- void branch32(Condition cond, RegisterID op1, RegisterID op2, Label target)
- {
- branch32(cond, op1, op2).linkTo(target, this);
- }
-
- void branch32(Condition cond, RegisterID op1, Imm32 imm, Label target)
- {
- branch32(cond, op1, imm).linkTo(target, this);
- }
-
- void branch32(Condition cond, RegisterID left, Address right, Label target)
- {
- branch32(cond, left, right).linkTo(target, this);
- }
-
- void branch16(Condition cond, BaseIndex left, RegisterID right, Label target)
- {
- branch16(cond, left, right).linkTo(target, this);
- }
-
- void branchTestPtr(Condition cond, RegisterID reg, Label target)
- {
- branchTestPtr(cond, reg).linkTo(target, this);
- }
-
- void jump(Label target)
- {
- jump().linkTo(target, this);
- }
-
-
- // Ptr methods
- // On 32-bit platforms (i.e. x86), these methods directly map onto their 32-bit equivalents.
- // FIXME: should this use a test for 32-bitness instead of this specific exception?
-#if !CPU(X86_64)
- void addPtr(RegisterID src, RegisterID dest)
- {
- add32(src, dest);
- }
-
- void addPtr(Imm32 imm, RegisterID srcDest)
- {
- add32(imm, srcDest);
- }
-
- void addPtr(ImmPtr imm, RegisterID dest)
- {
- add32(Imm32(imm), dest);
- }
-
- void addPtr(Imm32 imm, RegisterID src, RegisterID dest)
- {
- add32(imm, src, dest);
- }
-
- void andPtr(RegisterID src, RegisterID dest)
- {
- and32(src, dest);
- }
-
- void andPtr(Imm32 imm, RegisterID srcDest)
- {
- and32(imm, srcDest);
- }
-
- void orPtr(RegisterID src, RegisterID dest)
- {
- or32(src, dest);
- }
-
- void orPtr(ImmPtr imm, RegisterID dest)
- {
- or32(Imm32(imm), dest);
- }
-
- void orPtr(Imm32 imm, RegisterID dest)
- {
- or32(imm, dest);
- }
-
- void subPtr(RegisterID src, RegisterID dest)
- {
- sub32(src, dest);
- }
-
- void subPtr(Imm32 imm, RegisterID dest)
- {
- sub32(imm, dest);
- }
-
- void subPtr(ImmPtr imm, RegisterID dest)
- {
- sub32(Imm32(imm), dest);
- }
-
- void xorPtr(RegisterID src, RegisterID dest)
- {
- xor32(src, dest);
- }
-
- void xorPtr(Imm32 imm, RegisterID srcDest)
- {
- xor32(imm, srcDest);
- }
-
-
- void loadPtr(ImplicitAddress address, RegisterID dest)
- {
- load32(address, dest);
- }
-
- void loadPtr(BaseIndex address, RegisterID dest)
- {
- load32(address, dest);
- }
-
- void loadPtr(void* address, RegisterID dest)
- {
- load32(address, dest);
- }
-
- DataLabel32 loadPtrWithAddressOffsetPatch(Address address, RegisterID dest)
- {
- return load32WithAddressOffsetPatch(address, dest);
- }
-
- void setPtr(Condition cond, RegisterID left, Imm32 right, RegisterID dest)
- {
- set32Compare32(cond, left, right, dest);
- }
-
- void storePtr(RegisterID src, ImplicitAddress address)
- {
- store32(src, address);
- }
-
- void storePtr(RegisterID src, BaseIndex address)
- {
- store32(src, address);
- }
-
- void storePtr(RegisterID src, void* address)
- {
- store32(src, address);
- }
-
- void storePtr(ImmPtr imm, ImplicitAddress address)
- {
- store32(Imm32(imm), address);
- }
-
- void storePtr(ImmPtr imm, void* address)
- {
- store32(Imm32(imm), address);
- }
-
- DataLabel32 storePtrWithAddressOffsetPatch(RegisterID src, Address address)
- {
- return store32WithAddressOffsetPatch(src, address);
- }
-
-
- Jump branchPtr(Condition cond, RegisterID left, RegisterID right)
- {
- return branch32(cond, left, right);
- }
-
- Jump branchPtr(Condition cond, RegisterID left, ImmPtr right)
- {
- return branch32(cond, left, Imm32(right));
- }
-
- Jump branchPtr(Condition cond, RegisterID left, Address right)
- {
- return branch32(cond, left, right);
- }
-
- Jump branchPtr(Condition cond, Address left, RegisterID right)
- {
- return branch32(cond, left, right);
- }
-
- Jump branchPtr(Condition cond, AbsoluteAddress left, RegisterID right)
- {
- return branch32(cond, left, right);
- }
-
- Jump branchPtr(Condition cond, Address left, ImmPtr right)
- {
- return branch32(cond, left, Imm32(right));
- }
-
- Jump branchPtr(Condition cond, AbsoluteAddress left, ImmPtr right)
- {
- return branch32(cond, left, Imm32(right));
- }
-
- Jump branchTestPtr(Condition cond, RegisterID reg, RegisterID mask)
- {
- return branchTest32(cond, reg, mask);
- }
-
- Jump branchTestPtr(Condition cond, RegisterID reg, Imm32 mask = Imm32(-1))
- {
- return branchTest32(cond, reg, mask);
- }
-
- Jump branchTestPtr(Condition cond, Address address, Imm32 mask = Imm32(-1))
- {
- return branchTest32(cond, address, mask);
- }
-
- Jump branchTestPtr(Condition cond, BaseIndex address, Imm32 mask = Imm32(-1))
- {
- return branchTest32(cond, address, mask);
- }
-
-
- Jump branchAddPtr(Condition cond, RegisterID src, RegisterID dest)
- {
- return branchAdd32(cond, src, dest);
- }
-
- Jump branchSubPtr(Condition cond, Imm32 imm, RegisterID dest)
- {
- return branchSub32(cond, imm, dest);
- }
- using MacroAssemblerBase::branchTest8;
- Jump branchTest8(Condition cond, ExtendedAddress address, Imm32 mask = Imm32(-1))
- {
- return MacroAssemblerBase::branchTest8(cond, Address(address.base, address.offset), mask);
- }
-#endif
-
-};
-
-} // namespace JSC
-
-#endif // ENABLE(ASSEMBLER)
-
-#endif // MacroAssembler_h