التوثيق
/
التشويش الأساسي
/

تسطيح تدفق التحكم

تسطيح تدفق التحكم

controlFlowFlattening
~1.5x slower

يحوّل بنية الكود لإخفاء تدفق البرنامج الأصلي، ويجعل التحليل اليدوي أصعب بكثير عبر تحويل الكود الخطي إلى آلة حالات قائمة على تعليمة switch.

// Before
function process() {
    step1();
    step2();
    step3();
}

// After (flattened)
function process() {
    var state = '0|1|2'.split('|'), i = 0;
    while (true) {
        switch (state[i++]) {
            case '0': step1(); continue;
            case '1': step2(); continue;
            case '2': step3(); continue;
        }
        break;
    }
}

يتكامل تسطيح تدفق التحكم جيدًا مع الخيارات الأساسية الأخرى ومع تشويش VM - إذ تُحوَّل آلة الحالات المسطَّحة بدورها إلى بايت كود عند تفعيل VM.