var pos: Map[E, Int] = new HashMap[E, Int]
end
-class PHTypingLayout[E: Object]
+class PHLayout[E: Object]
super Layout[E]
# Masks used by hash function
var masks: Map[E, Int] = new HashMap[E, Int]
class PHTypeLayoutBuilder
super TypingLayoutBuilder[MType]
- redef type LAYOUT: PHTypingLayout[MType]
+ redef type LAYOUT: PHLayout[MType]
private var hasher: PerfectHasher[MType, MType]
# Compute mtypes ids and position using BM
redef fun build_layout(mtypes) do
- var result = new PHTypingLayout[MType]
+ var result = new PHLayout[MType]
var conflicts = build_conflicts(mtypes)
result.ids = self.compute_ids(mtypes)
result.masks = self.hasher.compute_masks(conflicts, result.ids)
class PHClassLayoutBuilder
super TypingLayoutBuilder[MClass]
- redef type LAYOUT: PHTypingLayout[MClass]
+ redef type LAYOUT: PHLayout[MClass]
private var hasher: PerfectHasher[MClass, MClass]
# Compute mclasses ids and position using BM
redef fun build_layout(mclasses) do
- var result = new PHTypingLayout[MClass]
+ var result = new PHLayout[MClass]
var conflicts = build_conflicts(mclasses)
result.ids = self.compute_ids(mclasses)
result.masks = self.hasher.compute_masks(conflicts, result.ids)
supers.add(mtype)
for sup in supers do
var color: Int
- if layout isa PHTypingLayout[MType] then
+ if layout isa PHLayout[MType] then
color = layout.hashes[mtype][sup]
else
color = layout.pos[sup]
v.add_decl("{self.type_layout.ids[mtype]},")
v.add_decl("\"{mtype}\", /* class_name_string */")
var layout = self.type_layout
- if layout isa PHTypingLayout[MType] then
+ if layout isa PHLayout[MType] then
v.add_decl("{layout.masks[mtype]},")
else
v.add_decl("{layout.pos[mtype]},")
supers.add(mclass)
for sup in supers do
var color: Int
- if layout isa PHTypingLayout[MClass] then
+ if layout isa PHLayout[MClass] then
color = layout.hashes[mclass][sup]
else
color = layout.pos[sup]
v.add_decl("\"{mclass.name}\", /* class_name_string */")
v.add_decl("{self.box_kind_of(mclass)}, /* box_kind */")
var layout = self.class_layout
- if layout isa PHTypingLayout[MClass] then
+ if layout isa PHLayout[MClass] then
v.add_decl("{layout.masks[mclass]},")
else
v.add_decl("{layout.pos[mclass]},")
self.add("{res} = {accept_null};")
self.add("\} else \{")
end
- if self.compiler.as(SeparateErasureCompiler).class_layout isa PHTypingLayout[MClass] then
+ if self.compiler.as(SeparateErasureCompiler).class_layout isa PHLayout[MClass] then
self.add("{cltype} = HASH({class_ptr}color, {idtype});")
end
self.add("if({cltype} >= {class_ptr}type_table->size) \{")