X-Git-Url: http://plrg.eecs.uci.edu/git/?p=cdsspec-compiler.git;a=blobdiff_plain;f=src%2Fedu%2Fuci%2Feecs%2FspecCompiler%2FcodeGenerator%2FCodeGenerator.java;h=49299d13a5ac1b295c79210efd7ebdaac14bcf5a;hp=0ada8dd96710437d63cf42646816f4c539175bc3;hb=60246219b510f28980a6f93f615458e41262a23f;hpb=74da3442bd935d6667dd7ee45571b8c9a249d71c diff --git a/src/edu/uci/eecs/specCompiler/codeGenerator/CodeGenerator.java b/src/edu/uci/eecs/specCompiler/codeGenerator/CodeGenerator.java index 0ada8dd..49299d1 100644 --- a/src/edu/uci/eecs/specCompiler/codeGenerator/CodeGenerator.java +++ b/src/edu/uci/eecs/specCompiler/codeGenerator/CodeGenerator.java @@ -11,6 +11,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import edu.uci.eecs.specCompiler.specExtraction.CPClearConstruct; import edu.uci.eecs.specCompiler.specExtraction.CPDefineCheckConstruct; import edu.uci.eecs.specCompiler.specExtraction.CPDefineConstruct; import edu.uci.eecs.specCompiler.specExtraction.ClassEndConstruct; @@ -183,6 +184,19 @@ public class CodeGenerator { } codeAdditions.get(construct.file).add(addition); } + + private void CPClear2Code(CPClearConstruct construct) { + int lineNum = construct.beginLineNum; + ArrayList newCode = CodeVariables.generateCPClear( + _semantics, construct); + + CodeAddition addition = new CodeAddition(lineNum, newCode); + if (!codeAdditions.containsKey(construct.file)) { + codeAdditions.put(construct.file, new ArrayList()); + } + codeAdditions.get(construct.file).add(addition); + } + /** * private void ClassEnd2Code(ClassEndConstruct construct) { int lineNum = @@ -243,6 +257,8 @@ public class CodeGenerator { CPDefine2Code((CPDefineConstruct) construct); } else if (construct instanceof CPDefineCheckConstruct) { CPDefineCheck2Code((CPDefineCheckConstruct) construct); + } else if (construct instanceof CPClearConstruct) { + CPClear2Code((CPClearConstruct) construct); } else if (construct instanceof EntryPointConstruct) { EntryPoint2Code((EntryPointConstruct) construct); } @@ -282,6 +298,8 @@ public class CodeGenerator { File[] srcMSQueue = { new File(homeDir + "/benchmark/ms-queue/my_queue.c"), + new File(homeDir + "/benchmark/ms-queue/testcase.c"), + new File(homeDir + "/benchmark/ms-queue/testcase1.c"), new File(homeDir + "/benchmark/ms-queue/main.c"), new File(homeDir + "/benchmark/ms-queue/my_queue.h") }; @@ -291,6 +309,7 @@ public class CodeGenerator { File[] srcDeque = { new File(homeDir + "/benchmark/chase-lev-deque-bugfix/deque.c"), new File(homeDir + "/benchmark/chase-lev-deque-bugfix/main.c"), + new File(homeDir + "/benchmark/chase-lev-deque-bugfix/testcase.c"), new File(homeDir + "/benchmark/chase-lev-deque-bugfix/deque.h") }; File[] srcMCSLock = { @@ -305,11 +324,11 @@ public class CodeGenerator { File[] srcMPMCQueue = { new File(homeDir + "/benchmark/mpmc-queue/mpmc-queue.h"), new File(homeDir + "/benchmark/mpmc-queue/mpmc-queue.cc") }; +// +// File[][] sources = { srcLinuxRWLocks, srcMSQueue, srcRCU, +// srcDeque, srcMCSLock, srcSPSCQueue, srcMPMCQueue, srcHashtable }; - File[][] sources = { srcLinuxRWLocks, srcMSQueue, srcRCU, - srcDeque, srcMCSLock, srcSPSCQueue, srcMPMCQueue, srcHashtable }; - -// File[][] sources = { srcMPMCQueue }; + File[][] sources = {srcMSQueue }; // Compile all the benchmarks for (int i = 0; i < sources.length; i++) { CodeGenerator gen = new CodeGenerator(sources[i]);