CACAO
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
source
cacao
src
vm
jit
compiler2
Type.hpp
Go to the documentation of this file.
1
/* src/vm/jit/compiler2/Type.hpp - Types used in the 2nd stage compiler IR
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_TYPE
26
#define _JIT_COMPILER2_TYPE
27
28
#include "
vm/method.hpp
"
29
30
namespace
cacao {
31
namespace
jit {
32
namespace
compiler2 {
33
34
class
PrimitiveType
;
35
class
ReferenceType;
36
class
NumericType;
37
class
BooleanType;
38
class
ReturnAddressType;
39
class
IntegralType;
40
class
FloatingPointType;
41
class
ByteType;
42
class
ShortType;
43
class
IntType;
44
class
LongType;
45
class
CharType;
46
class
FloatType;
47
class
DoubleType;
48
class
VoidType;
49
50
/**
51
* Type Class
52
*
53
* See JVM spec 2.2
54
*/
55
class
Type
{
56
public
:
57
enum
TypeID
{
58
PrimitiveTypeID
,
59
ReferenceTypeID
,
60
NumericTypeID
,
61
BooleanTypeID
,
62
ReturnAddressTypeID
,
63
IntegralTypeID
,
64
FloatingPointTypeID
,
65
ByteTypeID
,
66
ShortTypeID
,
67
IntTypeID
,
68
LongTypeID
,
69
CharTypeID
,
70
FloatTypeID
,
71
DoubleTypeID
,
72
GlobalStateTypeID
,
73
VoidTypeID
74
};
75
76
struct
PrimitiveType
{
77
operator
Type::TypeID
() {
return
PrimitiveTypeID
; }
78
};
79
struct
ReferenceType
{
80
operator
Type::TypeID
() {
return
ReferenceTypeID
; }
81
};
82
struct
NumericType
{
83
operator
Type::TypeID
() {
return
NumericTypeID
; }
84
};
85
struct
BooleanType
{
86
operator
Type::TypeID
() {
return
BooleanTypeID
; }
87
};
88
struct
ReturnAddressType
{
89
operator
Type::TypeID
() {
return
ReturnAddressTypeID
; }
90
};
91
struct
IntegralType
{
92
operator
Type::TypeID
() {
return
IntegralTypeID
; }
93
};
94
struct
FloatingPointType
{
95
operator
Type::TypeID
() {
return
FloatingPointTypeID
; }
96
};
97
struct
ByteType
{
98
operator
Type::TypeID
() {
return
ByteTypeID
; }
99
};
100
struct
ShortType
{
101
operator
Type::TypeID
() {
return
ShortTypeID
; }
102
};
103
struct
IntType
{
104
operator
Type::TypeID
() {
return
IntTypeID
; }
105
};
106
struct
LongType
{
107
operator
Type::TypeID
() {
return
LongTypeID
; }
108
};
109
struct
CharType
{
110
operator
Type::TypeID
() {
return
CharTypeID
; }
111
};
112
struct
FloatType
{
113
operator
Type::TypeID
() {
return
FloatTypeID
; }
114
};
115
struct
DoubleType
{
116
operator
Type::TypeID
() {
return
DoubleTypeID
; }
117
};
118
struct
GlobalStateType
{
119
operator
Type::TypeID
() {
return
GlobalStateTypeID
; }
120
};
121
struct
VoidType
{
122
operator
Type::TypeID
() {
return
VoidTypeID
; }
123
};
124
};
125
126
const
char
*
get_type_name
(
const
Type::TypeID
&type);
127
128
// conversion functions
129
const
char
*
get_var_type
(
int
type);
130
Type::TypeID
convert_var_type
(
int
type);
131
132
OStream
&
operator<<
(
OStream
&
OS
,
const
Type::TypeID
&type);
133
134
}
// end namespace cacao
135
}
// end namespace jit
136
}
// end namespace compiler2
137
138
#endif
/* _JIT_COMPILER2_TYPE */
139
140
141
/*
142
* These are local overrides for various environment variables in Emacs.
143
* Please do not remove this and leave it at the end of the file, where
144
* Emacs will automagically detect them.
145
* ---------------------------------------------------------------------
146
* Local variables:
147
* mode: c++
148
* indent-tabs-mode: t
149
* c-basic-offset: 4
150
* tab-width: 4
151
* End:
152
* vim:noexpandtab:sw=4:ts=4:
153
*/
cacao::jit::compiler2::Type::ReferenceType
Definition:
Type.hpp:79
cacao::jit::compiler2::Type::ReferenceTypeID
Definition:
Type.hpp:59
cacao::jit::compiler2::Type::LongType
Definition:
Type.hpp:106
cacao::jit::compiler2::Type::ShortTypeID
Definition:
Type.hpp:66
cacao::jit::compiler2::Type::DoubleType
Definition:
Type.hpp:115
cacao::jit::compiler2::Type::ByteType
Definition:
Type.hpp:97
cacao::jit::compiler2::Type::CharTypeID
Definition:
Type.hpp:69
cacao::jit::compiler2::Type::LongTypeID
Definition:
Type.hpp:68
cacao::jit::compiler2::Type::CharType
Definition:
Type.hpp:109
cacao::jit::compiler2::Type::NumericType
Definition:
Type.hpp:82
cacao::jit::compiler2::get_type_name
const char * get_type_name(const Type::TypeID &type)
Definition:
Type.cpp:91
PrimitiveType
PrimitiveType
JVM types.
Definition:
primitive.hpp:55
cacao::jit::compiler2::Type::ShortType
Definition:
Type.hpp:100
cacao::jit::compiler2::Type
Type Class.
Definition:
Type.hpp:55
cacao::jit::compiler2::Type::PrimitiveTypeID
Definition:
Type.hpp:58
cacao::jit::compiler2::Type::GlobalStateTypeID
Definition:
Type.hpp:72
cacao::jit::compiler2::Type::FloatingPointType
Definition:
Type.hpp:94
cacao::jit::compiler2::Type::DoubleTypeID
Definition:
Type.hpp:71
cacao::jit::compiler2::Type::ReturnAddressTypeID
Definition:
Type.hpp:62
cacao::OStream
Simple stream class for formatted output.
Definition:
OStream.hpp:141
cacao::jit::compiler2::Type::VoidType
Definition:
Type.hpp:121
cacao::jit::compiler2::operator<<
OStream & operator<<(OStream &OS, const Conditional::CondID &cond)
Definition:
Conditional.cpp:34
cacao::jit::compiler2::Type::BooleanType
Definition:
Type.hpp:85
cacao::jit::compiler2::Type::IntType
Definition:
Type.hpp:103
cacao::jit::compiler2::Type::VoidTypeID
Definition:
Type.hpp:73
method.hpp
OS
OStream & OS
Definition:
LivetimeAnalysisPass.cpp:316
cacao::jit::compiler2::Type::GlobalStateType
Definition:
Type.hpp:118
cacao::jit::compiler2::Type::IntegralTypeID
Definition:
Type.hpp:63
cacao::jit::compiler2::Type::IntTypeID
Definition:
Type.hpp:67
cacao::jit::compiler2::Type::PrimitiveType
Definition:
Type.hpp:76
cacao::jit::compiler2::convert_var_type
Type::TypeID convert_var_type(int type)
Definition:
Type.cpp:51
cacao::jit::compiler2::Type::ByteTypeID
Definition:
Type.hpp:65
cacao::jit::compiler2::Type::FloatTypeID
Definition:
Type.hpp:70
cacao::jit::compiler2::Type::NumericTypeID
Definition:
Type.hpp:60
cacao::jit::compiler2::Type::TypeID
TypeID
Definition:
Type.hpp:57
cacao::jit::compiler2::Type::FloatingPointTypeID
Definition:
Type.hpp:64
cacao::jit::compiler2::Type::BooleanTypeID
Definition:
Type.hpp:61
cacao::jit::compiler2::Type::FloatType
Definition:
Type.hpp:112
cacao::jit::compiler2::get_var_type
const char * get_var_type(int type)
Definition:
Type.cpp:37
cacao::jit::compiler2::Type::ReturnAddressType
Definition:
Type.hpp:88
cacao::jit::compiler2::Type::IntegralType
Definition:
Type.hpp:91
Generated on Fri Aug 4 2017 03:01:52 for CACAO by
1.8.5