CACAO
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
source
cacao
src
vm
jit
compiler2
ScheduleLatePass.hpp
Go to the documentation of this file.
1
/* src/vm/jit/compiler2/ScheduleLatePass.hpp - ScheduleLatePass
2
3
Copyright (C) 2013
4
CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
5
6
This file is part of CACAO.
7
8
This program is free software; you can redistribute it and/or
9
modify it under the terms of the GNU General Public License as
10
published by the Free Software Foundation; either version 2, or (at
11
your option) any later version.
12
13
This program is distributed in the hope that it will be useful, but
14
WITHOUT ANY WARRANTY; without even the implied warranty of
15
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
General Public License for more details.
17
18
You should have received a copy of the GNU General Public License
19
along with this program; if not, write to the Free Software
20
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21
02110-1301, USA.
22
23
*/
24
25
#ifndef _JIT_COMPILER2_SCHEDULELATEPASS
26
#define _JIT_COMPILER2_SCHEDULELATEPASS
27
28
#include "
vm/jit/compiler2/Pass.hpp
"
29
#include "
vm/jit/compiler2/Loop.hpp
"
30
#include "
vm/jit/compiler2/GlobalSchedule.hpp
"
31
32
MM_MAKE_NAME
(ScheduleLatePass)
33
34
namespace cacao {
35
namespace
jit {
36
namespace
compiler2 {
37
38
39
class
Method;
40
class
Instruction;
41
class
DominatorTree;
42
43
/**
44
* ScheduleLatePass
45
*
46
* Based on the algorithm in Click's Phd Thesis, Chapter 6 @cite ClickPHD.
47
*/
48
class
ScheduleLatePass
:
public
Pass
,
public
memory::ManagerMixin
<ScheduleLatePass>,
public
GlobalSchedule
{
49
private
:
50
DominatorTree
*
DT
;
51
LoopTree
*
LT
;
52
GlobalSchedule
*
early
;
53
Method
*
M
;
54
public
:
55
void
schedule_late(
Instruction
*
I
);
56
static
char
ID
;
57
ScheduleLatePass
() :
Pass
() {}
58
virtual
bool
run(
JITData
&JD);
59
virtual
PassUsage
& get_PassUsage(
PassUsage
&PU)
const
;
60
};
61
62
}
// end namespace compiler2
63
}
// end namespace jit
64
}
// end namespace cacao
65
66
#endif
/* _JIT_COMPILER2_SCHEDULELATEPASS */
67
68
69
/*
70
* These are local overrides for various environment variables in Emacs.
71
* Please do not remove this and leave it at the end of the file, where
72
* Emacs will automagically detect them.
73
* ---------------------------------------------------------------------
74
* Local variables:
75
* mode: c++
76
* indent-tabs-mode: t
77
* c-basic-offset: 4
78
* tab-width: 4
79
* End:
80
* vim:noexpandtab:sw=4:ts=4:
81
*/
cacao::jit::compiler2::GlobalSchedule
GlobalSchedule TODO: more info.
Definition:
GlobalSchedule.hpp:42
cacao::jit::compiler2::Pass
Pass superclass All compiler passes should inheritate this class.
Definition:
Pass.hpp:48
GlobalSchedule.hpp
cacao::jit::compiler2::ScheduleLatePass::M
Method * M
Definition:
ScheduleLatePass.hpp:53
cacao::jit::compiler2::DominatorTree
Definition:
DominatorPass.hpp:41
cacao::jit::compiler2::memory::ManagerMixin
Custom new/delete handler mixin.
Definition:
Manager.hpp:43
cacao::jit::compiler2::ScheduleLatePass
ScheduleLatePass.
Definition:
ScheduleLatePass.hpp:48
MM_MAKE_NAME
#define MM_MAKE_NAME(x)
Definition:
memstats.hpp:127
cacao::jit::compiler2::ScheduleLatePass::early
GlobalSchedule * early
Definition:
ScheduleLatePass.hpp:52
cacao::jit::compiler2::ScheduleLatePass::DT
DominatorTree * DT
Definition:
ScheduleLatePass.hpp:50
cacao::jit::compiler2::PassUsage
Stores the interdependencies of a pass.
Definition:
PassUsage.hpp:55
cacao::jit::compiler2::JITData
Definition:
JITData.hpp:42
cacao::jit::compiler2::Instruction
Instruction super class.
Definition:
Instruction.hpp:73
cacao::jit::compiler2::ScheduleLatePass::ScheduleLatePass
ScheduleLatePass()
Definition:
ScheduleLatePass.hpp:57
cacao::jit::compiler2::ScheduleLatePass::LT
LoopTree * LT
Definition:
ScheduleLatePass.hpp:51
cacao::jit::compiler2::LoopTreeBase
Definition:
LoopBase.hpp:85
cacao::jit::compiler2::ScheduleLatePass::ID
static char ID
Definition:
ScheduleLatePass.hpp:56
I
#define I(value)
Definition:
codegen.c:279
Loop.hpp
cacao::jit::compiler2::Method
Definition:
MethodC2.hpp:62
Pass.hpp
Generated on Fri Aug 4 2017 03:01:52 for CACAO by
1.8.5