nitlanguage
/
nit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
lib/json: regenerate with new nitcc
[nit.git]
/
src
/
compiler
/
separate_compiler.nit
diff --git
a/src/compiler/separate_compiler.nit
b/src/compiler/separate_compiler.nit
index
c73bf58
..
ff5f3ba
100644
(file)
--- a/
src/compiler/separate_compiler.nit
+++ b/
src/compiler/separate_compiler.nit
@@
-252,7
+252,8
@@
class SeparateCompiler
do
# Collect all bas box class
# FIXME: this is not completely fine with a separate compilation scheme
do
# Collect all bas box class
# FIXME: this is not completely fine with a separate compilation scheme
- for classname in ["Int", "Bool", "Byte", "Char", "Float", "NativeString", "Pointer"] do
+ for classname in ["Int", "Bool", "Byte", "Char", "Float", "NativeString",
+ "Pointer", "Int8", "Int16", "UInt16", "Int32", "UInt32"] do
var classes = self.mainmodule.model.get_mclasses_by_name(classname)
if classes == null then continue
assert classes.length == 1 else print classes.join(", ")
var classes = self.mainmodule.model.get_mclasses_by_name(classname)
if classes == null then continue
assert classes.length == 1 else print classes.join(", ")
@@
-2217,12
+2218,9
@@
class SeparateRuntimeFunction
var mmethoddef = self.mmethoddef
var sig = "{c_ret} {c_name}{c_sig}"
var mmethoddef = self.mmethoddef
var sig = "{c_ret} {c_name}{c_sig}"
- compiler.provide_declaration(self.c_name, "{sig} __attribute__((weak));")
+ compiler.provide_declaration(self.c_name, "{sig};")
var rta = compiler.as(SeparateCompiler).runtime_type_analysis
var rta = compiler.as(SeparateCompiler).runtime_type_analysis
- if rta != null and not rta.live_mmodules.has(mmethoddef.mclassdef.mmodule) then
- return
- end
var recv = self.mmethoddef.mclassdef.bound_mtype
var v = compiler.new_visitor
var recv = self.mmethoddef.mclassdef.bound_mtype
var v = compiler.new_visitor
@@
-2264,6
+2262,8
@@
class SeparateRuntimeFunction
assert subret != null
v.assign(frame.returnvar.as(not null), subret)
end
assert subret != null
v.assign(frame.returnvar.as(not null), subret)
end
+ else if rta != null and not rta.live_mmodules.has(mmethoddef.mclassdef.mmodule) then
+ v.add_abort("FATAL: Dead method executed.")
else
mmethoddef.compile_inside_to_c(v, arguments)
end
else
mmethoddef.compile_inside_to_c(v, arguments)
end