fun compile_mod_to_c(v: CompilerVisitor)
do
v.add_decl("extern const char *LOCATE_{name};")
- if not v.program.tc.global then
+ if not v.program.tc.use_SFT_optimization then
v.add_decl("extern const int SFT_{name}[];")
end
var i = 0
for e in local_table do
var value: String
- if v.program.tc.global then
+ if v.program.tc.use_SFT_optimization then
value = "{e.value(v.program)}"
else
value = "SFT_{name}[{i}]"
do
v.add_instr("const char *LOCATE_{name} = \"{location.file}\";")
- if v.program.tc.global or local_table.is_empty then
+ if v.program.tc.use_SFT_optimization or local_table.is_empty then
return
end
readable var _opt_boost: OptionBool = new OptionBool("Optimize compilation", "-O", "--boost")
readable var _opt_no_cc: OptionBool = new OptionBool("Do not invoke C compiler", "--no_cc")
readable var _opt_global: OptionBool = new OptionBool("Use global compilation", "--global")
+ readable var _opt_global_no_STF_opt: OptionBool = new OptionBool("Do not use SFT optimization", "--no-global-SFT-optimization")
readable var _opt_clibdir: OptionString = new OptionString("NIT C library directory", "--clibdir")
readable var _opt_bindir: OptionString = new OptionString("NIT tools directory", "--bindir")
readable var _opt_compdir: OptionString = new OptionString("Intermediate compilation directory", "--compdir")
init
do
super("nitc")
- option_context.add_option(opt_output, opt_boost, opt_no_cc, opt_global, opt_clibdir, opt_bindir, opt_compdir, opt_extension_prefix, opt_dump)
+ option_context.add_option(opt_output, opt_boost, opt_no_cc, opt_global, opt_clibdir, opt_bindir, opt_compdir, opt_extension_prefix, opt_dump, opt_global_no_STF_opt)
end
redef fun process_options
var ext = opt_extension_prefix.value
if ext != null then ext_prefix = ext else ext_prefix = ""
global = opt_global.value
+ use_SFT_optimization = not opt_global_no_STF_opt.value
compdir = opt_compdir.value
if compdir == null then
var dir = once ("NIT_COMPDIR".to_symbol).environ
redef class ToolContext
readable writable var _global: Bool = false
+ writable var _use_SFT_optimization: Bool = true
+
+ # We can say that we are using SFT optimization *only* when we are
+ # doing global compilation and we enabled the command line option
+ fun use_SFT_optimization: Bool do return global and _use_SFT_optimization
end
# Instances of this class represent a program/library that will