no message

This commit is contained in:
2025-04-13 17:19:10 +03:00
parent 7efe852bc1
commit 46e1bd17f1
9 changed files with 32 additions and 32 deletions

9
.idea/workspace.xml generated
View File

@@ -7,17 +7,16 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment=""> <list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/SapforData/Functions/Json/FileFunctionsJson.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/SapforData/Functions/Json/FunctionParameterJson.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/SapforData/Functions/Json/FunctionsJson.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" /> <change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/SPF_GetGraphFunctionPositions.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/SPF_GetGraphFunctionPositions.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/SPF_GetGraphFunctions.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/SPF_GetGraphFunctions.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/SPF_GetGraphFunctions.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/SPF_GetGraphFunctions.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/SPF_InlineProcedures.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/SPF_InlineProcedures.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Files/DBProjectFile.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Files/DBProjectFile.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Files/DBProjectFile.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Files/DBProjectFile.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Project/db_project_info.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Project/db_project_info.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/SapforData/Functions/FuncCall.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/SapforData/Functions/FuncCall.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/SapforData/Functions/FuncCall.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/SapforData/Functions/FuncCall.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/SapforData/Functions/FuncInfo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/SapforData/Functions/FuncInfo.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/SapforData/Functions/FuncInfo.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/SapforData/Functions/FuncInfo.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/SapforData/Functions/FunctionsJson/FileFunctionsJson.java" beforeDir="false" /> <change beforePath="$PROJECT_DIR$/Инструкция по распараллеливанию в системе SAPFOR.pptx" beforeDir="false" afterPath="$PROJECT_DIR$/Инструкция по распараллеливанию в системе SAPFOR.pptx" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/SapforData/Functions/FunctionsJson/FunctionsJson.java" beforeDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -83,12 +83,12 @@ public class SPF_GetGraphFunctionPositions extends SilentSapforPass {
res.add(name); res.add(name);
if (depth > 0) { if (depth > 0) {
if (out) { if (out) {
for (FuncCall call : target.allFunctions.get(name).calls) for (FuncCall call : target.allFunctions.get(name).callsFrom)
getNeighbors_r(res, call.funcName, depth - 1, in, true); getNeighbors_r(res, call.funcName, depth - 1, in, true);
} }
if (in) { if (in) {
for (FuncInfo parent : target.allFunctions.values()) { for (FuncInfo parent : target.allFunctions.values()) {
for (FuncCall call : parent.calls) { for (FuncCall call : parent.callsFrom) {
if (call.funcName.equals(name)) { if (call.funcName.equals(name)) {
getNeighbors_r(res, parent.funcName, depth - 1, true, out); getNeighbors_r(res, parent.funcName, depth - 1, true, out);
} }
@@ -102,12 +102,12 @@ public class SPF_GetGraphFunctionPositions extends SilentSapforPass {
if (!res.contains(name)) { if (!res.contains(name)) {
res.add(name); res.add(name);
if (out) { if (out) {
for (FuncCall call : target.allFunctions.get(name).calls) for (FuncCall call : target.allFunctions.get(name).callsFrom)
getNeighborsNoDepth_r(res, call.funcName, in, true); getNeighborsNoDepth_r(res, call.funcName, in, true);
} }
if (in) { if (in) {
for (FuncInfo parent : target.allFunctions.values()) { for (FuncInfo parent : target.allFunctions.values()) {
for (FuncCall call : parent.calls) { for (FuncCall call : parent.callsFrom) {
if (call.funcName.equals(name)) { if (call.funcName.equals(name)) {
getNeighborsNoDepth_r(res, parent.funcName, true, out); getNeighborsNoDepth_r(res, parent.funcName, true, out);
} }
@@ -237,7 +237,7 @@ public class SPF_GetGraphFunctionPositions extends SilentSapforPass {
//теперь добавить ребер. //теперь добавить ребер.
for (String funcName : target.functionsGraph.vertexMap.keySet()) { for (String funcName : target.functionsGraph.vertexMap.keySet()) {
FuncInfo fi = target.allFunctions.get(funcName); FuncInfo fi = target.allFunctions.get(funcName);
for (FuncCall fc : fi.calls) { for (FuncCall fc : fi.callsFrom) {
if (target.functionsGraph.vertexMap.containsKey(fc.funcName)) if (target.functionsGraph.vertexMap.containsKey(fc.funcName))
target.functionsGraph.addEdge( target.functionsGraph.addEdge(
funcName, funcName,

View File

@@ -1,5 +1,6 @@
package _VisualDVM.Passes.All; package _VisualDVM.Passes.All;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import Common.Visual.UI;
import _VisualDVM.Current; import _VisualDVM.Current;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode; import _VisualDVM.Passes.PassCode;
@@ -48,7 +49,6 @@ public class SPF_GetGraphFunctions extends SapforAnalysis {
@Override @Override
protected void unpack(String packed) throws Exception { protected void unpack(String packed) throws Exception {
LinkedHashMap<String, FuncInfo> declarated_functions = new LinkedHashMap<>(); LinkedHashMap<String, FuncInfo> declarated_functions = new LinkedHashMap<>();
//--
FunctionsJson functionsJson = Utils_.gson.fromJson(packed, FunctionsJson.class); FunctionsJson functionsJson = Utils_.gson.fromJson(packed, FunctionsJson.class);
for (FileFunctionsJson fileFunctionsJson : functionsJson.allFunctions) { for (FileFunctionsJson fileFunctionsJson : functionsJson.allFunctions) {
fileFunctionsJson.file = Utils_.toW(fileFunctionsJson.file); fileFunctionsJson.file = Utils_.toW(fileFunctionsJson.file);
@@ -65,7 +65,7 @@ public class SPF_GetGraphFunctions extends SapforAnalysis {
//------ //------
LinkedHashMap<String, FuncInfo> special_functions = new LinkedHashMap<>(); LinkedHashMap<String, FuncInfo> special_functions = new LinkedHashMap<>();
for (FuncInfo funcInfo : declarated_functions.values()) { for (FuncInfo funcInfo : declarated_functions.values()) {
for (FuncCall funcCall : funcInfo.calls) { for (FuncCall funcCall : funcInfo.callsFrom) {
if (!declarated_functions.containsKey(funcCall.funcName) && ( if (!declarated_functions.containsKey(funcCall.funcName) && (
!special_functions.containsKey(funcCall.funcName) !special_functions.containsKey(funcCall.funcName)
)) { )) {

View File

@@ -18,8 +18,8 @@ public class SPF_InlineProcedures extends SapforTransformation {
Vector<String> Result = new Vector<>(); Vector<String> Result = new Vector<>();
for (FuncInfo fi : target.allFunctions.values()) { for (FuncInfo fi : target.allFunctions.values()) {
Vector<FuncCall> selected_children = new Vector<>(); Vector<FuncCall> selected_children = new Vector<>();
for (String calls_file : fi.own_calls.keySet()) { for (String calls_file : fi.ownCalls.keySet()) {
for (FuncCall call : fi.own_calls.get(calls_file)) { for (FuncCall call : fi.ownCalls.get(calls_file)) {
if (call.isSelected()) if (call.isSelected())
selected_children.add(call); selected_children.add(call);
} }

View File

@@ -275,7 +275,7 @@ public class DBProjectFile extends ProjectFile {
DefaultMutableTreeNode root = new DefaultMutableTreeNode(CallGraphTitle); DefaultMutableTreeNode root = new DefaultMutableTreeNode(CallGraphTitle);
for (FuncInfo fi : function_decls.values()) { for (FuncInfo fi : function_decls.values()) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(fi); DefaultMutableTreeNode node = new DefaultMutableTreeNode(fi);
for (FuncCall fc : fi.calls) for (FuncCall fc : fi.callsFrom)
node.add(new DefaultMutableTreeNode(fc)); node.add(new DefaultMutableTreeNode(fc));
root.add(node); root.add(node);
} }
@@ -347,7 +347,7 @@ public class DBProjectFile extends ProjectFile {
public int FragmentFunctionCallsCount(int first, int second) { public int FragmentFunctionCallsCount(int first, int second) {
int res = 0; int res = 0;
for (FuncInfo fi : function_decls.values()) for (FuncInfo fi : function_decls.values())
for (FuncCall fc : fi.calls) { for (FuncCall fc : fi.callsFrom) {
if ((fc.line >= first) && (fc.line <= second)) if ((fc.line >= first) && (fc.line <= second))
res++; res++;
} }
@@ -356,7 +356,7 @@ public class DBProjectFile extends ProjectFile {
public FuncCall find_current_func_call() { public FuncCall find_current_func_call() {
//------------- //-------------
for (FuncInfo fi : function_decls.values()) { for (FuncInfo fi : function_decls.values()) {
for (FuncCall fc : fi.calls) { for (FuncCall fc : fi.callsFrom) {
if ((fc.line == form.getEditor().getCurrentLine()) && if ((fc.line == form.getEditor().getCurrentLine()) &&
!Global.mainModule.getSapfor().isIntrinsic(fc.funcName) !Global.mainModule.getSapfor().isIntrinsic(fc.funcName)
) { ) {
@@ -369,7 +369,7 @@ public class DBProjectFile extends ProjectFile {
} }
public FuncCall find_func_call(String funcName) { public FuncCall find_func_call(String funcName) {
for (FuncInfo fi : function_decls.values()) { for (FuncInfo fi : function_decls.values()) {
for (FuncCall fc : fi.calls) { for (FuncCall fc : fi.callsFrom) {
if (fc.funcName.equalsIgnoreCase(funcName) && if (fc.funcName.equalsIgnoreCase(funcName) &&
(fc.line == form.getEditor().getCurrentLine() (fc.line == form.getEditor().getCurrentLine()
)) { )) {
@@ -502,8 +502,9 @@ public class DBProjectFile extends ProjectFile {
funcInfo.type = FunctionType.Default; funcInfo.type = FunctionType.Default;
} }
//-- //--
funcInfo.ownCalls = new LinkedHashMap<>();
function_decls.put(funcInfo.funcName, funcInfo); function_decls.put(funcInfo.funcName, funcInfo);
call_count+=funcInfo.calls.size(); call_count+=funcInfo.callsFrom.size();
} }
//-- //--
CallGraphTitle = "Объявлений : " + function_decls.size() + "; Вызовов : " + call_count; CallGraphTitle = "Объявлений : " + function_decls.size() + "; Вызовов : " + call_count;

View File

@@ -773,13 +773,13 @@ public class db_project_info extends DBObject {
inline_root.add(node); inline_root.add(node);
//- //-
for (FuncInfo decl2 : allFunctions.values()) { for (FuncInfo decl2 : allFunctions.values()) {
for (FuncCall call : decl2.calls) { for (FuncCall call : decl2.callsFrom) {
if (call.funcName.equals(decl1.funcName)) { if (call.funcName.equals(decl1.funcName)) {
if (!decl1.own_calls.containsKey(call.file)) if (!decl1.ownCalls.containsKey(call.file))
decl1.own_calls.put(call.file, new Vector<>()); decl1.ownCalls.put(call.file, new Vector<>());
if (decl1.needToInline==1) call.Select(true); if (decl1.needToInline==1) call.Select(true);
call.canBeInlined = (decl1.doNotInline==1)?0:1; call.canBeInlined = (decl1.doNotInline==1)?0:1;
decl1.own_calls.get(call.file).add(call); decl1.ownCalls.get(call.file).add(call);
node.add(new DefaultMutableTreeNode(call)); node.add(new DefaultMutableTreeNode(call));
} }
} }
@@ -792,7 +792,7 @@ public class db_project_info extends DBObject {
//особый случай. //особый случай.
main_functionH = new FuncCallH(main_function); main_functionH = new FuncCallH(main_function);
DefaultMutableTreeNode main_node = new DefaultMutableTreeNode(main_functionH); DefaultMutableTreeNode main_node = new DefaultMutableTreeNode(main_functionH);
for (FuncCall call : main_function.calls) { for (FuncCall call : main_function.callsFrom) {
Vector<String> chain = new Vector<>(); Vector<String> chain = new Vector<>();
chain.add(main_functionH.funcName); chain.add(main_functionH.funcName);
// UI.Info("start new chain"); // UI.Info("start new chain");
@@ -812,7 +812,7 @@ public class db_project_info extends DBObject {
DefaultMutableTreeNode res = null; DefaultMutableTreeNode res = null;
FuncInfo funcInfo = allFunctions.get(funcCall.funcName); FuncInfo funcInfo = allFunctions.get(funcCall.funcName);
res = new DefaultMutableTreeNode(funcCallH); res = new DefaultMutableTreeNode(funcCallH);
for (FuncCall call : funcInfo.calls) { for (FuncCall call : funcInfo.callsFrom) {
if (!chain.contains(call.funcName)) { if (!chain.contains(call.funcName)) {
DefaultMutableTreeNode node = BuildInlineGraph2_r(call, chain); DefaultMutableTreeNode node = BuildInlineGraph2_r(call, chain);
if (node != null) { if (node != null) {

View File

@@ -11,10 +11,8 @@ public class FuncCall extends FileObjectWithMessages{
//JSON------------------------------------------ //JSON------------------------------------------
@Expose @Expose
public String funcName = ""; public String funcName = "";
@Expose
public int canBeInlined = 0; public int canBeInlined = 0;
@Expose public int parentLineOffset = 0;// line объявления - line вычислять?
public int parentLineOffset = 0;// line объявления - line
//END OF JSON------------------------------------ //END OF JSON------------------------------------
@Description("IGNORE") @Description("IGNORE")
private boolean selected = false; private boolean selected = false;

View File

@@ -29,9 +29,11 @@ public class FuncInfo extends FileObjectWithMessages {
public FunctionType type = FunctionType.Default; public FunctionType type = FunctionType.Default;
//вызовы функций в теле этой функции //вызовы функций в теле этой функции
public Vector<FuncCall> calls = new Vector<>(); @Expose
public Vector<FuncCall> callsFrom = new Vector<>();
//----
//вызовы этой самой функции, рассортированные по файлам. //вызовы этой самой функции, рассортированные по файлам.
public LinkedHashMap<String, Vector<FuncCall>> own_calls = new LinkedHashMap<>(); public LinkedHashMap<String, Vector<FuncCall>> ownCalls = new LinkedHashMap<>();
//Узел фуннкции при отрисовке графа процедур. //Узел фуннкции при отрисовке графа процедур.
//Нужен для сохранения всех позиций графа. //Нужен для сохранения всех позиций графа.
public mxCell functionsGraphCell = null; public mxCell functionsGraphCell = null;
@@ -56,8 +58,8 @@ public class FuncInfo extends FileObjectWithMessages {
return Utils_.getIcon("/icons/Function.png"); return Utils_.getIcon("/icons/Function.png");
} }
public void SelectAllChildren(boolean select) { public void SelectAllChildren(boolean select) {
for (String file_name : own_calls.keySet()) for (String file_name : ownCalls.keySet())
for (FuncCall fc : own_calls.get(file_name)) for (FuncCall fc : ownCalls.get(file_name))
fc.Select(select); fc.Select(select);
} }
public boolean isDeclared() { public boolean isDeclared() {