nitlanguage
/
nit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rta: resolve the open-types in a depth-first order to reach limit faster
[nit.git]
/
src
/
rapid_type_analysis.nit
diff --git
a/src/rapid_type_analysis.nit
b/src/rapid_type_analysis.nit
index
f763a56
..
2d621e8
100644
(file)
--- a/
src/rapid_type_analysis.nit
+++ b/
src/rapid_type_analysis.nit
@@
-132,7
+132,7
@@
class RapidTypeAnalysis
var types = typeset.to_a
(new CachedAlphaComparator).sort(types)
var res = new CsvDocument
var types = typeset.to_a
(new CachedAlphaComparator).sort(types)
var res = new CsvDocument
- res.format = new CsvFormat('"', ';', "\n")
+ res.separator = ';'
res.header = ["Type", "Resolution", "Liveness", "Cast-liveness"]
for t in types do
var reso
res.header = ["Type", "Resolution", "Liveness", "Cast-liveness"]
for t in types do
var reso
@@
-314,7
+314,9
@@
class RapidTypeAnalysis
if not check_depth(rt) then continue
#print "{ot}/{t} -> {rt}"
live_types.add(rt)
if not check_depth(rt) then continue
#print "{ot}/{t} -> {rt}"
live_types.add(rt)
- todo_types.add(rt)
+ # unshift means a deep-first visit.
+ # So that the `check_depth` limit is reached sooner.
+ todo_types.unshift(rt)
end
end
#print "MType {live_types.length}: {live_types.join(", ")}"
end
end
#print "MType {live_types.length}: {live_types.join(", ")}"
@@
-585,6
+587,11
@@
redef class AStringFormExpr
v.add_type(native)
var prop = v.get_method(native, "to_s_full")
v.add_monomorphic_send(native, prop)
v.add_type(native)
var prop = v.get_method(native, "to_s_full")
v.add_monomorphic_send(native, prop)
+ v.add_callsite(to_re)
+ v.add_callsite(ignore_case)
+ v.add_callsite(newline)
+ v.add_callsite(extended)
+ v.add_callsite(to_bytes_with_copy)
end
end
end
end