# dslProgramGen **Repository Path**: liang63600/dslProgramGen ## Basic Information - **Project Name**: dslProgramGen - **Description**: 从内存操作记录trace转为内存操作DSL程序 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 2 - **Created**: 2023-11-11 - **Last Updated**: 2025-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dslProgramGen ## 一 介绍 从内存操作记录trace转为内存操作DSL程序 ## 二 主要流程 ### 1 trace清洗 #### 具体实现 参见 文件夹preProcessTrace中的README.md ### 2 函数及调用关系构建 #### 具体实现 参见 文件夹methodCallTreeGen中的README.md ### 3 每个函数内部DSL程序生成 #### 具体实现 参见 文件夹dslProgramGen中的README.md ## 三 使用说明 1. 准备两个输入文件`class.txt`和`trace.txt`放在`src/main/resources/input`目录下 2. 执行`src/main/java/TracesToMOPGen.java`中的main函数,使用前需要用户配置一个参数 ```java // 运行的Java程序main函数所在的主类名 FilterTraces.mainClassName = "com/google/common/cache/SegmentBenchmark"; ``` 3. 执行后的结果在`src/main/resources/output/mopProgram` * `dslProgram.txt`: 生成的MOP程序 * `MainClasses.txt`: MOP语言表示的类结构信息 * `Maini.txt`: i从0开始,表示全局变量 ## 四 附录 ### 单线程简单程序 1. trace清洗: 运行`src/preProcessTrace/PreProcessTraces.java` 2. 函数及调用关系构建: 运行`src/methodCallTreeGen/MethodCallTreeGen.java` 3. 每个函数内部DSL程序生成: 运行`src/dslProgramGen/DslProgramGen.java`中的genDslProgram函数 --- 我们自己构建了一个自测试集,包含一系列单线程简单程序测试用例 * 自测试集测试程序所在路径 `src/test/java/dslProgramGenForBaseMopTest/DslProgramGenForBaseMopTest.java` * 自测试集测试数据所在路径 `src/test/resources/dslProgramGenForBaseMop` 详细内容参考文件 `src/test/resources/dslProgramGenForBaseMop/README.md` ### 复杂程序 复杂程序包含 * 多线程Traces生成MOP程序 * 函数精简,即相同的函数只保留一个函数定义 * 递归函数Traces生成MOP程序 * 识别循环结构生成Loop语句 --- 执行步骤 1. trace清洗: 运行`src/main/java/preProcessTrace/FilterTraces.java` 2. 生成MOP程序: 运行`src/main/java/dslProgramGen/DslProgramGen.java`中的genDslProgramForAllThreads函数 --- 我们自己构建了一个自测试集,包含一系列复杂程序测试用例 * 自测试集测试程序所在路径 `src/test/java/dslProgramGenForComplexMopTest/DslProgramGenForComplexMopTest.java` * 自测试集测试数据所在路径 `src/test/resources/dslProgramGenForComplexMop` 详细内容参考文件 `src/test/resources/dslProgramGenForComplexMop/README.md`