aboutsummaryrefslogtreecommitdiff
path: root/src/analyzer.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/analyzer.js')
-rw-r--r--src/analyzer.js25
1 files changed, 9 insertions, 16 deletions
diff --git a/src/analyzer.js b/src/analyzer.js
index dd14b09a..28c2aa97 100644
--- a/src/analyzer.js
+++ b/src/analyzer.js
@@ -298,14 +298,6 @@ function analyzer(data) {
// Tools
- function cleanLabel(label) {
- if (label[0] == 'B') {
- return label.substr(5);
- } else {
- return label;
- }
- }
-
function replaceLabels(line, labelIds, toLabelId) {
var ret = [];
function process(item) {
@@ -461,7 +453,12 @@ function analyzer(data) {
}
if (!RELOOP) return emulated();
- if (entries.length > 1) return emulated();
+ // === 'splitter' ===
+
+ if (entries.length > 1) {
+ return emulated();
+ }
+
var entry = entries[0];
assert(entry);
dprint('relooping', 'makeBlock: ' + entry + ',' + labels.length + ' labels');
@@ -513,16 +510,12 @@ function analyzer(data) {
// Verify that no external can reach an internal
var inLabels = set(getLabelIds(internals));
- var fail = false;
externals.forEach(function(external) {
- if (fail || values(setIntersect(external.outLabels, inLabels)).length > 0) {
- fail = true;
+ if (values(setIntersect(external.outLabels, inLabels)).length > 0) {
+ dprint('relooping', 'Found an external that wants to reach an internal, fallback to |return emulated()|?');
+ throw "Spaghetti label flow";
}
});
- if (fail) {
- dprint('relooping', 'Found an external that wants to reach an internal, fallback to flow emulation');
- return emulated();
- }
dprint('relooping', function() { return ' Creating reloop: Inner: ' + dump(getLabelIds(internals)) + ', Exxer: ' + dump(currExitLabels) });