1 # This file is part of NIT ( http://www.nitlanguage.org ).
3 # Copyright 2015 Julien Pagès <julien.pages@lirmm.fr>
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
17 # The compilation module of the VirtualMachine
20 import variables_numbering
23 redef class VirtualMachine
25 # The currently analyzed APropdef
26 var current_propdef
: APropdef
28 redef fun new_frame
(node
, mpropdef
, args
)
30 # Save the current propdef
31 if node
isa APropdef then self.current_propdef
= node
43 # A new instance of SSA to analyze the self propdef
44 var ssa
= new SSA(self)
46 # Generate basic_blocks and compute SSA-algorithm for this propdef
50 # Redef to add the same position to a new version of a Variable than the original variable
51 redef fun generate_name
(v
, counter
, expr
, ssa
)
53 var new_version
= super
55 # All versions of a variable have the same position in the environment
56 new_version
.position
= v
.original_variable
.position