DwAsm: check global bounds
This commit is contained in:
parent
574750681c
commit
e5693328e2
1 changed files with 12 additions and 1 deletions
|
@ -22,9 +22,20 @@ void FactoredSwitchCompiler::to_stream(
|
||||||
}
|
}
|
||||||
JumpPointMap jump_points;
|
JumpPointMap jump_points;
|
||||||
|
|
||||||
|
uintptr_t low_bound = sw.cases.front().low_bound,
|
||||||
|
high_bound = sw.cases.back().high_bound;
|
||||||
|
|
||||||
|
os << indent() << "if("
|
||||||
|
<< "0x" << hex << low_bound << " <= " << sw.switch_var
|
||||||
|
<< " && " << sw.switch_var << " <= 0x" << high_bound << dec << ") {\n";
|
||||||
|
indent_count++;
|
||||||
|
|
||||||
gen_binsearch_tree(os, jump_points, sw.switch_var,
|
gen_binsearch_tree(os, jump_points, sw.switch_var,
|
||||||
sw.cases.begin(), sw.cases.end(),
|
sw.cases.begin(), sw.cases.end(),
|
||||||
make_pair(sw.cases.front().low_bound, sw.cases.back().high_bound));
|
make_pair(low_bound, high_bound));
|
||||||
|
|
||||||
|
indent_count--;
|
||||||
|
os << indent() << "}\n";
|
||||||
|
|
||||||
os << indent() << "_factor_default:\n"
|
os << indent() << "_factor_default:\n"
|
||||||
<< indent_str(sw.default_case) << "\n"
|
<< indent_str(sw.default_case) << "\n"
|
||||||
|
|
Loading…
Reference in a new issue