summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/b3/B3StackmapGenerationParams.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
commit32761a6cee1d0dee366b885b7b9c777e67885688 (patch)
treed6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/b3/B3StackmapGenerationParams.h
parenta4e969f4965059196ca948db781e52f7cfebf19e (diff)
downloadWebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/JavaScriptCore/b3/B3StackmapGenerationParams.h')
-rw-r--r--Source/JavaScriptCore/b3/B3StackmapGenerationParams.h118
1 files changed, 0 insertions, 118 deletions
diff --git a/Source/JavaScriptCore/b3/B3StackmapGenerationParams.h b/Source/JavaScriptCore/b3/B3StackmapGenerationParams.h
deleted file mode 100644
index 8168912eb..000000000
--- a/Source/JavaScriptCore/b3/B3StackmapGenerationParams.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2015-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
- * 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 B3StackmapGenerationParams_h
-#define B3StackmapGenerationParams_h
-
-#if ENABLE(B3_JIT)
-
-#include "AirGenerationContext.h"
-#include "B3ValueRep.h"
-#include "RegisterSet.h"
-
-namespace JSC { namespace B3 {
-
-class CheckSpecial;
-class PatchpointSpecial;
-class Procedure;
-class StackmapValue;
-
-class StackmapGenerationParams {
-public:
- // This is the stackmap value that we're generating.
- StackmapValue* value() const { return m_value; }
-
- // This tells you the actual value representations that were chosen. This is usually different
- // from the constraints we supplied.
- const Vector<ValueRep>& reps() const { return m_reps; };
-
- // Usually we wish to access the reps. We make this easy by making ourselves appear to be a
- // collection of reps.
- unsigned size() const { return m_reps.size(); }
- const ValueRep& at(unsigned index) const { return m_reps[index]; }
- const ValueRep& operator[](unsigned index) const { return at(index); }
- Vector<ValueRep>::const_iterator begin() const { return m_reps.begin(); }
- Vector<ValueRep>::const_iterator end() const { return m_reps.end(); }
-
- // This tells you the registers that were used.
- const RegisterSet& usedRegisters() const;
-
- // This is a useful helper if you want to do register allocation inside of a patchpoint. The
- // usedRegisters() set is not directly useful for this purpose because:
- //
- // - You can only use callee-save registers for scratch if they were saved in the prologue. So,
- // if a register is callee-save, it's not enough that it's not in usedRegisters().
- //
- // - Scratch registers are going to be in usedRegisters() at the patchpoint. So, if you want to
- // find one of your requested scratch registers using usedRegisters(), you'll have a bad time.
- //
- // This gives you the used register set that's useful for allocating scratch registers. This set
- // is defined as:
- //
- // (usedRegisters() | (RegisterSet::calleeSaveRegisters() - proc.calleeSaveRegisters()))
- // - gpScratchRegisters - fpScratchRegisters
- //
- // I.e. it is like usedRegisters() but also includes unsaved callee-saves and excludes scratch
- // registers.
- JS_EXPORT_PRIVATE RegisterSet unavailableRegisters() const;
-
- GPRReg gpScratch(unsigned index) const { return m_gpScratch[index]; }
- FPRReg fpScratch(unsigned index) const { return m_fpScratch[index]; }
-
- // This is provided for convenience; it means that you don't have to capture it if you don't want to.
- Procedure& proc() const;
-
- // The Air::GenerationContext gives you even more power.
- Air::GenerationContext& context() const { return m_context; };
-
- template<typename Functor>
- void addLatePath(const Functor& functor) const
- {
- context().latePaths.append(
- createSharedTask<Air::GenerationContext::LatePathFunction>(
- [=] (CCallHelpers& jit, Air::GenerationContext&) {
- functor(jit);
- }));
- }
-
-private:
- friend class CheckSpecial;
- friend class PatchpointSpecial;
-
- StackmapGenerationParams(StackmapValue*, const Vector<ValueRep>& reps, Air::GenerationContext&);
-
- StackmapValue* m_value;
- Vector<ValueRep> m_reps;
- Vector<GPRReg> m_gpScratch;
- Vector<FPRReg> m_fpScratch;
- Air::GenerationContext& m_context;
-};
-
-} } // namespace JSC::B3
-
-#endif // ENABLE(B3_JIT)
-
-#endif // B3StackmapGenerationParams_h
-