Files
VisualSapfor/src/_VisualDVM/Passes/All/SPF_GetArrayDistributionOnlyAnalysis.java

81 lines
3.3 KiB
Java
Raw Normal View History

2024-10-14 12:14:01 +03:00
package _VisualDVM.Passes.All;
2024-10-14 01:50:33 +03:00
import Common.Utils.Vector_;
2024-10-12 00:17:51 +03:00
import _VisualDVM.Global;
2024-10-09 22:01:19 +03:00
import _VisualDVM.Visual.Controls.PassControl;
import _VisualDVM.Visual.UI;
2023-09-17 22:13:42 +03:00
import Common.Utils.Index;
2024-10-09 22:21:57 +03:00
import _VisualDVM.GlobalData.Settings.SettingName;
import _VisualDVM.ProjectData.SapforData.Regions.ParallelRegion;
2024-10-14 12:14:01 +03:00
import _VisualDVM.Passes.Sapfor.SapforAnalysis;
2023-09-17 22:13:42 +03:00
import java.util.Comparator;
import java.util.Vector;
public class SPF_GetArrayDistributionOnlyAnalysis extends SapforAnalysis {
@Override
2024-10-14 01:50:33 +03:00
protected Vector<String> getForbiddenPhases() {
return new Vector_<>("SPF_GetArrayDistributionOnlyRegions");
2023-09-17 22:13:42 +03:00
}
@Override
public String phase() {
return "CREATE_DISTR_DIRS";
}
@Override
protected boolean isAtomic() {
return false;
}
@Override
protected void unpack(String packed) throws Exception {
String[] splited = packed.split("#");
Index idx = new Index();
int n = Integer.parseInt(splited[idx.Inc()]);
for (int i = 0; i < n; ++i) {
ParallelRegion p = new ParallelRegion(splited, idx);
target.parallelRegions.put(p.regionId, p);
}
//отсортировать по имени шаблоны
target.templates.sort(Comparator.comparing(o -> o.name));
target.GenRules();
}
@Override
protected void performPreparation() throws Exception {
super.performPreparation(); //удаление интеррупта.
//как то вывести эти методы в проект. чтобы и при очистке юзать.
//иначе анархия.
target.parallelRegions.clear();
target.templates.clear();
target.parallelVariants.clear();
}
@Override
protected void showPreparation() {
UI.getVersionsWindow().getVariantsWindow().ShowNoProjectDistribution();
UI.getVersionsWindow().getVariantsWindow().ShowNoVariantsFilter();
UI.getVersionsWindow().getVariantsWindow().ShowNoVariants();
UI.getMainWindow().getProjectWindow().getAnalysisWindow().ShowNoRegions();
UI.getMainWindow().getProjectWindow().getAnalysisWindow().ShowNoProjectMaxDim();
}
@Override
protected void showDone() throws Exception {
UI.getVersionsWindow().getVariantsWindow().ShowProjectDistribution();
UI.getVersionsWindow().getVariantsWindow().ShowVariantsFilter();
UI.getVersionsWindow().getVariantsWindow().ShowTotalVariantsCount();
UI.getVersionsWindow().getVariantsWindow().ShowFilteredVariantsCount();
UI.getVersionsWindow().getVariantsWindow().ShowCheckedVariantsCount();
UI.getMainWindow().getProjectWindow().getAnalysisWindow().ShowRegions();
UI.getMainWindow().getProjectWindow().getAnalysisWindow().ShowProjectMaxDim();
super.showDone();
}
@Override
protected void FocusResult() {
UI.getMainWindow().FocusProject();
UI.getMainWindow().getProjectWindow().FocusAnalysis();
}
@Override
public String getDescription() {
2024-10-12 00:17:51 +03:00
return Global.mainModule.getDb().settings.get(SettingName.MPI_PROGRAM).toBoolean()?
"Анализ кода (общая память)":"Анализ кода";
}
public void RefreshControls(){
for (PassControl control: controls)
control.setText(getDescription());
}
2023-09-17 22:13:42 +03:00
}