summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/ftl/FTLLocation.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2015-05-20 09:56:07 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2015-05-20 09:56:07 +0000
commit41386e9cb918eed93b3f13648cbef387e371e451 (patch)
treea97f9d7bd1d9d091833286085f72da9d83fd0606 /Source/JavaScriptCore/ftl/FTLLocation.cpp
parente15dd966d523731101f70ccf768bba12435a0208 (diff)
downloadWebKitGtk-tarball-41386e9cb918eed93b3f13648cbef387e371e451.tar.gz
webkitgtk-2.4.9webkitgtk-2.4.9
Diffstat (limited to 'Source/JavaScriptCore/ftl/FTLLocation.cpp')
-rw-r--r--Source/JavaScriptCore/ftl/FTLLocation.cpp206
1 files changed, 0 insertions, 206 deletions
diff --git a/Source/JavaScriptCore/ftl/FTLLocation.cpp b/Source/JavaScriptCore/ftl/FTLLocation.cpp
deleted file mode 100644
index e00982527..000000000
--- a/Source/JavaScriptCore/ftl/FTLLocation.cpp
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Copyright (C) 2013, 2014 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.
- */
-
-#include "config.h"
-#include "FTLLocation.h"
-
-#if ENABLE(FTL_JIT)
-
-#include "FTLSaveRestore.h"
-#include "RegisterSet.h"
-#include <wtf/CommaPrinter.h>
-#include <wtf/DataLog.h>
-#include <wtf/ListDump.h>
-
-namespace JSC { namespace FTL {
-
-Location Location::forStackmaps(const StackMaps* stackmaps, const StackMaps::Location& location)
-{
- switch (location.kind) {
- case StackMaps::Location::Unprocessed:
- RELEASE_ASSERT_NOT_REACHED();
- break;
-
- case StackMaps::Location::Register:
- case StackMaps::Location::Direct:
- return forRegister(location.dwarfReg, location.offset);
-
- case StackMaps::Location::Indirect:
- return forIndirect(location.dwarfReg, location.offset);
-
- case StackMaps::Location::Constant:
- return forConstant(location.offset);
-
- case StackMaps::Location::ConstantIndex:
- ASSERT(stackmaps);
- return forConstant(stackmaps->constants[location.offset].integer);
- }
-
- RELEASE_ASSERT_NOT_REACHED();
-
- return Location();
-}
-
-void Location::dump(PrintStream& out) const
-{
- out.print("(", kind());
- if (hasDwarfReg())
- out.print(", ", dwarfReg());
- if (hasOffset())
- out.print(", ", offset());
- if (hasAddend())
- out.print(", ", addend());
- if (hasConstant())
- out.print(", ", constant());
- out.print(")");
-}
-
-bool Location::involvesGPR() const
-{
- return isGPR() || kind() == Indirect;
-}
-
-bool Location::isGPR() const
-{
- return kind() == Register && dwarfReg().reg().isGPR();
-}
-
-GPRReg Location::gpr() const
-{
- return dwarfReg().reg().gpr();
-}
-
-bool Location::isFPR() const
-{
- return kind() == Register && dwarfReg().reg().isFPR();
-}
-
-FPRReg Location::fpr() const
-{
- return dwarfReg().reg().fpr();
-}
-
-void Location::restoreInto(MacroAssembler& jit, char* savedRegisters, GPRReg result, unsigned numFramesToPop) const
-{
- if (involvesGPR() && RegisterSet::stackRegisters().get(gpr())) {
- // Make the result GPR contain the appropriate stack register.
- if (numFramesToPop) {
- jit.move(MacroAssembler::framePointerRegister, result);
-
- for (unsigned i = numFramesToPop - 1; i--;)
- jit.loadPtr(result, result);
-
- if (gpr() == MacroAssembler::framePointerRegister)
- jit.loadPtr(result, result);
- else
- jit.addPtr(MacroAssembler::TrustedImmPtr(sizeof(void*) * 2), result);
- } else
- jit.move(gpr(), result);
- }
-
- if (isGPR()) {
- if (RegisterSet::stackRegisters().get(gpr())) {
- // Already restored into result.
- } else
- jit.load64(savedRegisters + offsetOfGPR(gpr()), result);
-
- if (addend())
- jit.add64(MacroAssembler::TrustedImm32(addend()), result);
- return;
- }
-
- if (isFPR()) {
- jit.load64(savedRegisters + offsetOfFPR(fpr()), result);
- ASSERT(!addend());
- return;
- }
-
- switch (kind()) {
- case Register:
- // LLVM used some register that we don't know about!
- dataLog("Unrecognized location: ", *this, "\n");
- RELEASE_ASSERT_NOT_REACHED();
- return;
-
- case Indirect:
- if (RegisterSet::stackRegisters().get(gpr())) {
- // The stack register is already recovered into result.
- jit.load64(MacroAssembler::Address(result, offset()), result);
- return;
- }
-
- jit.load64(savedRegisters + offsetOfGPR(gpr()), result);
- jit.load64(MacroAssembler::Address(result, offset()), result);
- return;
-
- case Constant:
- jit.move(MacroAssembler::TrustedImm64(constant()), result);
- return;
-
- case Unprocessed:
- // Should never see this - it's an enumeration entry on LLVM's side that means that
- // it hasn't processed this location.
- RELEASE_ASSERT_NOT_REACHED();
- return;
- }
-
- RELEASE_ASSERT_NOT_REACHED();
-}
-
-GPRReg Location::directGPR() const
-{
- RELEASE_ASSERT(!addend());
- return gpr();
-}
-
-} } // namespace JSC::FTL
-
-namespace WTF {
-
-using namespace JSC::FTL;
-
-void printInternal(PrintStream& out, JSC::FTL::Location::Kind kind)
-{
- switch (kind) {
- case Location::Unprocessed:
- out.print("Unprocessed");
- return;
- case Location::Register:
- out.print("Register");
- return;
- case Location::Indirect:
- out.print("Indirect");
- return;
- case Location::Constant:
- out.print("Constant");
- return;
- }
- RELEASE_ASSERT_NOT_REACHED();
-}
-
-} // namespace WTF
-
-#endif // ENABLE(FTL_JIT)
-