CALLSTACK, FUNCTION PROFILING : remove potential bugs 12/35212/1
authorwoojin <woojin2.jung@samsung.com>
Tue, 10 Feb 2015 15:06:02 +0000 (00:06 +0900)
committerwoojin <woojin2.jung@samsung.com>
Tue, 10 Feb 2015 15:06:02 +0000 (00:06 +0900)
1. safer usage of locks
2. remove potential NullPointerException
3. remove dead code

Change-Id: Icb8dd27c9038d00f100a6142ccefbf5ded47d888
Signed-off-by: woojin <woojin2.jung@samsung.com>
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/callstack/BaseCallstackManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallStackInserter.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallstackTable.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallstackView.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/summary/profiling/FunctionUsageProfiler.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StopLogProcessor.java

index cba3a3c..7e3df03 100644 (file)
@@ -103,7 +103,7 @@ public abstract class BaseCallstackManager {
 
        public void offerCallStackUnit(CallStackUnit csu) {
                if (callstackInserter != null) {
-                       callstackInserter.startInserterThread();
+                       CallStackInserter.startInserterThread();
                        callstackInserter.offerCallstackUnit(csu);
                }
                return;
@@ -111,7 +111,7 @@ public abstract class BaseCallstackManager {
 
        public void offerCallStackData(CallStackData csd) {
                if (callstackInserter != null) {
-                       callstackInserter.startInserterThread();
+                       CallStackInserter.startInserterThread();
                        callstackInserter.offerCallstackData(csd);
                }
                return;
index b019117..69df153 100644 (file)
@@ -78,7 +78,7 @@ public class CallStackInserter implements Runnable {
                return callStackUnitTable;
        }
 
-       public synchronized void startInserterThread() {
+       public static synchronized void startInserterThread() {
                if (inserterThread == null) {
                        stopTrace = false;
                        inserterThread = new Thread(null, getInstance(),
@@ -87,7 +87,7 @@ public class CallStackInserter implements Runnable {
                }
        }
 
-       public void stopInserterThread() {
+       public static synchronized void stopInserterThread() {
                if (inserterThread != null && inserterThread.isAlive()) {
                        try {
                                stopTrace = true;
index d7e9b89..9010c22 100644 (file)
@@ -64,7 +64,7 @@ public class CallstackTable extends DATableComposite {
                                AnalyzerManager.getCurrentPage().updateView(
                                                new DAViewData(ScreenshotTabComposite.tabID, null));
                                GridItem[] sels = table.getSelection();
-                               if (sels.length < 0) {
+                               if (sels.length <= 0) {
                                        return;
                                }
                                table.setFocusItem(sels[0]);
index 29f36f7..4f1f746 100644 (file)
@@ -99,61 +99,63 @@ public class CallstackView extends DAViewComposite {
                for (int i = 0; i < size; i++) {
                        DAViewComposite view = (DAViewComposite) AnalyzerManager
                                        .getCurrentPage().getView(observingViews[i]);
-                       Control control = view.getControl();
-                       Grid table = null;
-                       if (control instanceof DATableComposite) {
-                               table = ((DATableComposite) control).getTable();
-                       } else if (control instanceof DAWindowingTableComposite) {
-                               table = ((DAWindowingTableComposite) control).getTable();
-                       } else if (control instanceof DATreeComposite) {
-                               table = ((DATreeComposite) control).getTable();
-                       } else {
-                               continue;
-                       }
-                       if (table.getSelectionCount() > 0) {
-                               GridItem[] selection = table.getSelection();
-                               long startTime = -1;
-                               DATableDataFormat tableData = (DATableDataFormat) selection[0]
-                                               .getData();
-                               if (tableData.getType() == AnalyzerConstants.TYPE_TABLE_FAILED) {
-                                       List<Object> failedData = tableData.getData();
-                                       startTime = (Long) failedData.get(1);
-                               } else if (tableData.getType() == AnalyzerConstants.TYPE_TABLE_LEAK) {
-                                       List<Object> leakData = tableData.getData();
-                                       startTime = (Long) leakData.get(4);
-                               } else if (tableData.getType() == AnalyzerConstants.TYPE_TABLE_CALLTRACE) {
-                                       List<Object> calltraceData = tableData.getData();
-                                       startTime = (Long) calltraceData.get(FunctionEntryDBTable.COLUMN.STARTTIME.index);
-                               } else { // in case table has LogData
-                                       LogData startData = ((DATableDataFormat) selection[0]
-                                                       .getData()).getLogData();
-                                       startTime = startData.getTime();
+                       if (view != null) {
+                               Control control = view.getControl();
+                               Grid table = null;
+                               if (control instanceof DATableComposite) {
+                                       table = ((DATableComposite) control).getTable();
+                               } else if (control instanceof DAWindowingTableComposite) {
+                                       table = ((DAWindowingTableComposite) control).getTable();
+                               } else if (control instanceof DATreeComposite) {
+                                       table = ((DATreeComposite) control).getTable();
+                               } else {
+                                       continue;
                                }
-                               long endTime = startTime;
-                               // TODO: need to review what below code does 
-                               if (null != selection[selection.length - 1].getData()) {
-                                       DATableDataFormat lastTableData = (DATableDataFormat) selection[selection.length - 1]
+                               if (table.getSelectionCount() > 0) {
+                                       GridItem[] selection = table.getSelection();
+                                       long startTime = -1;
+                                       DATableDataFormat tableData = (DATableDataFormat) selection[0]
                                                        .getData();
-                                       if (lastTableData.getType() == AnalyzerConstants.TYPE_TABLE_FAILED) {
-                                               List<Object> failedData = lastTableData.getData();
-                                               endTime = (Long) failedData.get(1);
-                                       } else if (lastTableData.getType() == AnalyzerConstants.TYPE_TABLE_LEAK) {
-                                               List<Object> leakData = lastTableData.getData();
-                                               endTime = (Long) leakData.get(4);
-                                       } else if (lastTableData.getType() == AnalyzerConstants.TYPE_TABLE_CALLTRACE) {
-                                               List<Object> calltraceData = lastTableData.getData();
-                                               endTime = (Long) calltraceData.get(FunctionEntryDBTable.COLUMN.STARTTIME.index);
-                                       } else {
-                                               LogData endData = lastTableData.getLogData();
-                                               endTime = endData.getTime();
+                                       if (tableData.getType() == AnalyzerConstants.TYPE_TABLE_FAILED) {
+                                               List<Object> failedData = tableData.getData();
+                                               startTime = (Long) failedData.get(1);
+                                       } else if (tableData.getType() == AnalyzerConstants.TYPE_TABLE_LEAK) {
+                                               List<Object> leakData = tableData.getData();
+                                               startTime = (Long) leakData.get(4);
+                                       } else if (tableData.getType() == AnalyzerConstants.TYPE_TABLE_CALLTRACE) {
+                                               List<Object> calltraceData = tableData.getData();
+                                               startTime = (Long) calltraceData.get(FunctionEntryDBTable.COLUMN.STARTTIME.index);
+                                       } else { // in case table has LogData
+                                               LogData startData = ((DATableDataFormat) selection[0]
+                                                               .getData()).getLogData();
+                                               startTime = startData.getTime();
+                                       }
+                                       long endTime = startTime;
+                                       // TODO: need to review what below code does 
+                                       if (null != selection[selection.length - 1].getData()) {
+                                               DATableDataFormat lastTableData = (DATableDataFormat) selection[selection.length - 1]
+                                                               .getData();
+                                               if (lastTableData.getType() == AnalyzerConstants.TYPE_TABLE_FAILED) {
+                                                       List<Object> failedData = lastTableData.getData();
+                                                       endTime = (Long) failedData.get(1);
+                                               } else if (lastTableData.getType() == AnalyzerConstants.TYPE_TABLE_LEAK) {
+                                                       List<Object> leakData = lastTableData.getData();
+                                                       endTime = (Long) leakData.get(4);
+                                               } else if (lastTableData.getType() == AnalyzerConstants.TYPE_TABLE_CALLTRACE) {
+                                                       List<Object> calltraceData = lastTableData.getData();
+                                                       endTime = (Long) calltraceData.get(FunctionEntryDBTable.COLUMN.STARTTIME.index);
+                                               } else {
+                                                       LogData endData = lastTableData.getLogData();
+                                                       endTime = endData.getTime();
+                                               }
                                        }
+       
+                                       DASelectionData data = new DASelectionData(observingViews[i],
+                                                       startTime, endTime, selection, table);
+                                       updateView(data);
                                }
-
-                               DASelectionData data = new DASelectionData(observingViews[i],
-                                               startTime, endTime, selection, table);
-                               updateView(data);
+                               return;
                        }
-                       return;
                }
                clear();
        }
index e923512..658c2b3 100644 (file)
@@ -67,7 +67,7 @@ public class FunctionUsageProfiler extends PageDataManager {
        
        private HashMap<Integer, ProfileDataMaker> profileDataMakerMap = null;
        
-       private static long lastSampleSeq = -1;
+       private long lastSampleSeq = -1;
        private Object sampleSeqLock = new Object();
        
        public void setLastSampleSeq(long seq) {
index 43dc2fd..5440d6f 100644 (file)
@@ -105,7 +105,7 @@ public class StopLogProcessor implements Runnable {
                        project.setTotalStopTime(ToolbarArea.getInstance().getTime());
 //                     SqlManager.getInstance().saveLeakData();
 //                     SqlManager.getInstance().saveFailedData();
-                       CallStackInserter.getInstance().stopInserterThread();
+                       CallStackInserter.stopInserterThread();
                        FunctionUsageProfiler.getInstance().saveProfilingData();
                        FunctionUsageProfiler.getInstance().saveProfilingChildData();
                        project.save();