CACAO
ValueMap.hpp
Go to the documentation of this file.
1 /* src/vm/jit/loop/ValueMap.hpp
2 
3  Copyright (C) 1996-2012
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 _VALUE_MAP_HPP
26 #define _VALUE_MAP_HPP
27 
28 #include <vector>
29 
30 #include "Value.hpp"
31 
32 /**
33  * Contains a Value-object for every variable.
34  * Initially every variable v is mapped to the value v + 0.
35  */
36 class ValueMap
37 {
38  std::vector<Value> _values;
39 
40 public:
41 
42  //explicit ValueMap(size_t varCount);
43 
44  Value& operator[](size_t varIndex);
45 };
46 
47 inline Value& ValueMap::operator[](size_t varIndex)
48 {
49  for (size_t i = _values.size(); i <= varIndex; i++)
50  {
51  _values.push_back(Value::newAddition(i, 0));
52  }
53  return _values[varIndex];
54 }
55 
56 #endif
57 
58 /*
59  * These are local overrides for various environment variables in Emacs.
60  * Please do not remove this and leave it at the end of the file, where
61  * Emacs will automagically detect them.
62  * ---------------------------------------------------------------------
63  * Local variables:
64  * mode: c++
65  * indent-tabs-mode: t
66  * c-basic-offset: 4
67  * tab-width: 4
68  * End:
69  * vim:noexpandtab:sw=4:ts=4:
70  */
71 
Contains a Value-object for every variable.
Definition: ValueMap.hpp:36
MIIterator i
std::vector< Value > _values
Definition: ValueMap.hpp:38
Represents the result of the addition of a certain IR-variable with a certain constant.
Definition: Value.hpp:36
Value & operator[](size_t varIndex)
Definition: ValueMap.hpp:47
static Value newAddition(s4 variable, s4 constant)
Definition: Value.hpp:72