From 22b4b0ee2582b47eebbb6296ab26017c5ac3edb8 Mon Sep 17 00:00:00 2001
From: "p.privalov"
Date: Thu, 4 Aug 2016 19:27:57 +0300
Subject: [PATCH] SRADA-886 Memory Callstack logic implemented.
Memory callstack Table now able to fill itself with
callstack appended with allocation function.
Callstack is not complete yet due to lack of information.
Change-Id: I62a7695eb7a644ca72db78852f709d0da2acdeb2
---
.../ui/info/callstack/CallstackTable.java | 6 +-
.../ui/memory/MemoryCallStackView.java | 6 +-
.../ui/memory/table/MemoryCallStackTable.java | 191 ++++++++++++++++++++-
3 files changed, 193 insertions(+), 10 deletions(-)
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallstackTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallstackTable.java
index 8cd58f7..6cbc519 100644
--- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallstackTable.java
+++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/info/callstack/CallstackTable.java
@@ -126,11 +126,7 @@ public class CallstackTable extends DATableComposite {
seqNum = (Long) calltraceData.get(FunctionEntryDBTable.COLUMN.SEQUENCE_NUMBER.index);
pid = (Integer) calltraceData.get(FunctionEntryDBTable.COLUMN.PID.index);
time = (Long) calltraceData.get(FunctionEntryDBTable.COLUMN.START_TIME.index);
- } else if (tableData.getType() == AnalyzerConstants.TYPE_TABLE_MEM_ALLOCATEDTRACE) {
- GridItem gridItem = new GridItem(table, SWT.NONE);
- gridItem.setText(0, "Stub for callstack");
- return;
- }else if (tableData.getType() == AnalyzerConstants.TYPE_TABLE_INTERACTIVE) {
+ } else if (tableData.getType() == AnalyzerConstants.TYPE_TABLE_INTERACTIVE) {
return; // TODO
} else { // in case table has LogData
LogData logData = tableData.getLogData();
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/MemoryCallStackView.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/MemoryCallStackView.java
index 26b20d7..3b5759a 100644
--- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/MemoryCallStackView.java
+++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/MemoryCallStackView.java
@@ -34,7 +34,7 @@ import org.tizen.dynamicanalyzer.nl.InformationViewLabels;
import org.tizen.dynamicanalyzer.nl.MemoryPageLabels;
import org.tizen.dynamicanalyzer.resources.ColorResources;
import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackInserter;
-import org.tizen.dynamicanalyzer.ui.info.callstack.CallstackTable;
+import org.tizen.dynamicanalyzer.ui.memory.table.MemoryCallStackTable;
import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite;
import org.tizen.dynamicanalyzer.ui.widgets.table.TableColumnSizePackListener;
import org.tizen.dynamicanalyzer.widgets.da.view.DAViewComposite;
@@ -65,7 +65,7 @@ public class MemoryCallStackView extends DAViewComposite {
contents.setBackground(ColorResources.WINDOW_BG_COLOR);
contents.setLayout(new FillLayout());
- callstackTableComp = new CallstackTable(contents, SWT.NONE, SWT.SINGLE | SWT.BORDER
+ callstackTableComp = new MemoryCallStackTable(contents, SWT.NONE, SWT.SINGLE | SWT.BORDER
| SWT.H_SCROLL | SWT.V_SCROLL);
callstackTableComp.setTableName("Callstack"); //$NON-NLS-1$
callstackTableComp.setColumns(columnNames);
@@ -87,7 +87,7 @@ public class MemoryCallStackView extends DAViewComposite {
DASelectionData seldata = (DASelectionData) data;
if (seldata.getData() instanceof GridItem[]) {
- ((CallstackTable) callstackTableComp).updateCallstackTable(seldata);
+ ((MemoryCallStackTable) callstackTableComp).updateCallstackTable(seldata);
} else {
updateView();
}
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/table/MemoryCallStackTable.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/table/MemoryCallStackTable.java
index 15b3163..7f5dd90 100644
--- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/table/MemoryCallStackTable.java
+++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/memory/table/MemoryCallStackTable.java
@@ -24,11 +24,30 @@
package org.tizen.dynamicanalyzer.ui.memory.table;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import org.eclipse.nebula.widgets.grid.GridItem;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Composite;
+import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
+import org.tizen.dynamicanalyzer.common.AnalyzerManager;
+import org.tizen.dynamicanalyzer.common.DASelectionData;
+import org.tizen.dynamicanalyzer.common.Global;
import org.tizen.dynamicanalyzer.model.TableInput;
+import org.tizen.dynamicanalyzer.project.callstack.RuntimeCallstackManager;
+import org.tizen.dynamicanalyzer.ui.info.callstack.CallStackUnit;
+import org.tizen.dynamicanalyzer.ui.memory.MemoryAllocationTraceTableView;
+import org.tizen.dynamicanalyzer.ui.timeline.common.TimelineTableView;
+import org.tizen.dynamicanalyzer.ui.toolbar.Toolbar;
import org.tizen.dynamicanalyzer.ui.widgets.table.DATableComposite;
+import org.tizen.dynamicanalyzer.ui.widgets.table.DATableDataFormat;
+import org.tizen.dynamicanalyzer.util.Logger;
+import org.tizen.dynamicanalyzer.utils.Formatter;
+import org.tizen.dynamicanalyzer.widgets.da.view.DAViewData;
public class MemoryCallStackTable extends DATableComposite {
@@ -39,12 +58,180 @@ public class MemoryCallStackTable extends DATableComposite {
public MemoryCallStackTable(Composite parent, int compStyle, int tableStyle) {
super(parent, compStyle, tableStyle);
- // TODO Auto-generated constructor stub
+
+ table.addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ AnalyzerManager.getCurrentPage().updateView(
+ new DAViewData(TimelineTableView.tabID, null));
+ GridItem[] sels = table.getSelection();
+ if (sels.length <= 0) {
+ return;
+ }
+ table.setFocusItem(sels[0]);
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+
+ applyFilterImage();
+ }
+
+ public void updateCallstackTable(DASelectionData selData) {
+ table.removeAll();
+ if (null == selData) {
+ return;
+ }
+ String viewId = selData.getViewID();
+ if (!viewId.equals(MemoryAllocationTraceTableView.class.getName()))
+ return;
+
+ Object obj = selData.getData();
+ if (obj instanceof GridItem[]) {
+ GridItem[] items = (GridItem[]) obj;
+ if (items.length <= 0) {
+ return;
+ }
+ DATableDataFormat tableData = (DATableDataFormat) items[0].getData();
+
+ long seqNum = -1;
+ List pids = new ArrayList();
+ long time = -1;
+ long allocAddr;
+ String allocPath;
+ String allocName;
+ if (tableData.getType() == AnalyzerConstants.TYPE_TABLE_MEM_ALLOCATEDTRACE) {
+ List