Package org.adoptopenjdk.jitwatch.ui.optimizedvcall

Source Code of org.adoptopenjdk.jitwatch.ui.optimizedvcall.VCallTableBuilder

package org.adoptopenjdk.jitwatch.ui.optimizedvcall;

import java.util.ArrayList;
import java.util.List;

import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;

import org.adoptopenjdk.jitwatch.model.IMetaMember;
import org.adoptopenjdk.jitwatch.optimizedvcall.OptimizedVirtualCall;
import org.adoptopenjdk.jitwatch.ui.IStageAccessProxy;
import org.adoptopenjdk.jitwatch.ui.triview.ITriView;

public class VCallTableBuilder
{
  public static TableView<VCallRow> buildTable(final IStageAccessProxy proxy, List<OptimizedVirtualCall> vCalls)
  {
    TableView<VCallRow> tableView = new TableView<>();

    TableColumn<VCallRow, String> colCallerClass = new TableColumn<VCallRow, String>("Caller Class");
    colCallerClass.setCellValueFactory(new PropertyValueFactory<VCallRow, String>("callerClass"));

    TableColumn<VCallRow, String> colCallerMember = new TableColumn<VCallRow, String>("Method");
    colCallerMember.setCellValueFactory(new PropertyValueFactory<VCallRow, String>("callerMember"));

    TableColumn<VCallRow, Integer> colCallerLine = new TableColumn<VCallRow, Integer>("Source Line");
    colCallerLine.setCellValueFactory(new PropertyValueFactory<VCallRow, Integer>("callerSourceLine"));

    TableColumn<VCallRow, Integer> colCallerBytecode = new TableColumn<VCallRow, Integer>("Bytecode offset");
    colCallerBytecode.setCellValueFactory(new PropertyValueFactory<VCallRow, Integer>("callerBCI"));

    tableView.getColumns().add(colCallerClass);
    tableView.getColumns().add(colCallerMember);
    tableView.getColumns().add(colCallerLine);
    tableView.getColumns().add(colCallerBytecode);

    TableColumn<VCallRow, String> colCalleeClass = new TableColumn<VCallRow, String>("Callee Class");
    colCalleeClass.setCellValueFactory(new PropertyValueFactory<VCallRow, String>("calleeClass"));

    TableColumn<VCallRow, String> colCalleeMember = new TableColumn<VCallRow, String>("Method");
    colCalleeMember.setCellValueFactory(new PropertyValueFactory<VCallRow, String>("calleeMember"));

    TableColumn<VCallRow, Integer> colCalleeLine = new TableColumn<VCallRow, Integer>("Source Line");
    colCalleeLine.setCellValueFactory(new PropertyValueFactory<VCallRow, Integer>("calleeSourceLine"));

    TableColumn<VCallRow, Integer> colCalleeBytecode = new TableColumn<VCallRow, Integer>("Bytecode offset");
    colCalleeBytecode.setCellValueFactory(new PropertyValueFactory<VCallRow, Integer>("calleeBCI"));

    tableView.getColumns().add(colCalleeClass);
    tableView.getColumns().add(colCalleeMember);
    tableView.getColumns().add(colCalleeLine);
    tableView.getColumns().add(colCalleeBytecode);

    tableView.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<VCallRow>()
    {
      @Override
      public void changed(ObservableValue<? extends VCallRow> arg0, VCallRow oldRow, VCallRow newRow)
      {
        if (newRow != null)
        {
          IMetaMember callingMember = newRow.getCallingMember();

          ITriView triView = proxy.openTriView(callingMember, true);

          triView.highlightSourceLine(newRow.getCallerSourceLine());
        }
      }
    });

    List<VCallRow> rowList = new ArrayList<>();

    for (OptimizedVirtualCall vCall : vCalls)
    {
      VCallRow row = new VCallRow(vCall.getCallingMember(), vCall.getCaller(), vCall.getCallee());
      rowList.add(row);
    }

    tableView.setItems(FXCollections.observableArrayList(rowList));

    return tableView;
  }
}
TOP

Related Classes of org.adoptopenjdk.jitwatch.ui.optimizedvcall.VCallTableBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.