Abstrakt. Java PathFinder (JPF) är en explicit modellkontroll för Java-program. Det utforskar alla avrättningar som ett givet program kan ha på grund av olika trådar interleaveings och icke-deterministiska val. JPF implementerar en backtracking Java Virtual Machine (JVM) som kör bytekoder med hjälp av en särskild representation av JVM-tillstånd. Denna speciella representation gör det möjligt för JPF att snabbt lagra, återställa och jämföra stater; det är avgörande för att göra den övergripande statliga utforskningen effektiv. Men, denna speciella representation skapar overhead för varje utförande, även verkställande av deterministiska block som inte har någon tråd interleaveings eller icke-deterministiska val. Vi föreslår blandad avrättning, en teknik som förbättrar verkställandet av deterministiska block i JPF. Vår teknik utnyttjar det faktum att JPF är skrivet i Java: JPF är en speciell JVM som körs ovanpå en vanlig, värd JVM. Blandade avrättningar genom att översätta staten mellan den särskilda JPF-representationen och värdorganisationen för JVM. Vi presenterar också lat översättning, en optimering som påskyndar blandad utförande genom att översätta endast de delar av staten som en utförande dynamiskt beror på. Vi utvärderar blandad körning på sex ämnesprogram som använder JPF för att generera tester för datastrukturer och på en fallstudie för att verifiera ett nätverksprotokoll. De experimentella resultaten visar att blandad utförande kan förbättra den totala utforskningstiden för staten upp till 36,98 %, samtidigt som verkställandetiden för deterministiska block upp till 69,15 %.
Vi har tidigare föreslagit en teknik, som kallas Mixed Execution, för att påskynda rakt utförande i JPF REF.
Optimized Execution of Deterministic Blocks in Java PathFinder
{'venue': 'ICFEM', 'journal': None, 'mag_field_of_study': ['Computer Science']}