blob: 76a6a7f62868a4a380080af16eb6da502764b1d8 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (16) -->
<title>FunctionEmulator (OpenJ9 JDK 16)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: module: openj9.dtfj, package: com.ibm.j9ddr.corereaders.tdump.zebedee.le, class: FunctionEmulator">
<meta name="generator" content="javadoc/ClassWriterImpl">
<meta name="keywords" content="com.ibm.j9ddr.corereaders.tdump.zebedee.le.FunctionEmulator class">
<meta name="keywords" content="getStackFloor()">
<meta name="keywords" content="createDummyReturnAddress()">
<meta name="keywords" content="setPrintOffsets()">
<meta name="keywords" content="setInstructionTracing()">
<meta name="keywords" content="setInstructionRecording()">
<meta name="keywords" content="getTraceEntries()">
<meta name="keywords" content="setBranchInstructionTracing()">
<meta name="keywords" content="setCallTreeCapture()">
<meta name="keywords" content="getCallTreeRoot()">
<meta name="keywords" content="getCurrentFunction()">
<meta name="keywords" content="getEmulator()">
<meta name="keywords" content="setArgument()">
<meta name="keywords" content="getArgument()">
<meta name="keywords" content="getMutableAddressSpace()">
<meta name="keywords" content="registerCallbackFunction()">
<meta name="keywords" content="overrideFunction()">
<meta name="keywords" content="run()">
<meta name="keywords" content="recordCalledFunctions()">
<meta name="keywords" content="recordAllCalledFunctions()">
<meta name="keywords" content="runAllPaths()">
<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.5.1.min.js"></script>
<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar.top">
<div class="skip-nav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<div class="about-language"><div style="margin-top: 9px;"><strong>OpenJ9 JDK 16</strong></div></div>
<ul id="navbar.top.firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../../../index.html">Overview</a></li>
<li><a href="../../../../../../../module-summary.html">Module</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/FunctionEmulator.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip.navbar.top">
<!-- -->
</span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="module-label-in-type">Module</span>&nbsp;<a href="../../../../../../../module-summary.html">openj9.dtfj</a></div>
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">com.ibm.j9ddr.corereaders.tdump.zebedee.le</a></div>
<h1 title="Class FunctionEmulator" class="title">Class FunctionEmulator</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link" target="_blank">java.lang.Object</a>
<div class="inheritance">com.ibm.j9ddr.corereaders.tdump.zebedee.le.FunctionEmulator</div>
</div>
<section class="description">
<hr>
<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">FunctionEmulator</span>
<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link" target="_blank">Object</a></span></div>
<div class="block">This class acts as a more convenient way of using the <a href="../util/Emulator.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.util"><code>Emulator</code></a> class.
Because it is in the LE package it adds the following benefits:
<ul>
<li>it knows the XPLINK calling conventions
<li>sets up the stack automatically
<li>can obtain a function address and environment from a function name
<li>provides tracing including function entry and exit
</ul></div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<li>
<section class="nested-class-summary" id="nested.class.summary">
<h2>Nested Class Summary</h2>
<div class="caption"><span>Nested Classes</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Class</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static interface&nbsp;</code></div>
<div class="col-second even-row-color"><code><span class="member-name-link"><a href="FunctionEmulator.CallbackFunction.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.CallbackFunction</a></span></code></div>
<div class="col-last even-row-color">
<div class="block">This interface is similar to Emulator.CallbackFunction except that it adds the ability
to set the return value from the function (which is XPLINK specific).</div>
</div>
<div class="col-first odd-row-color"><code>static class&nbsp;</code></div>
<div class="col-second odd-row-color"><code><span class="member-name-link"><a href="FunctionEmulator.CallOriginalException.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.CallOriginalException</a></span></code></div>
<div class="col-last odd-row-color">
<div class="block">This exception can be thrown by callback functions which want to call the overridden
function.</div>
</div>
<div class="col-first even-row-color"><code>class&nbsp;</code></div>
<div class="col-second even-row-color"><code><span class="member-name-link"><a href="FunctionEmulator.Function.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.Function</a></span></code></div>
<div class="col-last even-row-color">
<div class="block">This class represents a called function.</div>
</div>
<div class="col-first odd-row-color"><code>class&nbsp;</code></div>
<div class="col-second odd-row-color"><code><span class="member-name-link"><a href="FunctionEmulator.TraceEntry.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.TraceEntry</a></span></code></div>
<div class="col-last odd-row-color">
<div class="block">Describes a trace entry</div>
</div>
</div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor.summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><span class="member-name-link"><a href="#%3Cinit%3E(com.ibm.j9ddr.corereaders.tdump.zebedee.dumpreader.AddressSpace,long,long)">FunctionEmulator</a></span>&#8203;(<a href="../dumpreader/AddressSpace.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.dumpreader">AddressSpace</a>&nbsp;space,
long&nbsp;functionEntryPoint,
long&nbsp;functionEnv)</code></div>
<div class="col-last even-row-color">
<div class="block">Create a new FunctionEmulator.</div>
</div>
<div class="col-constructor-name odd-row-color"><code><span class="member-name-link"><a href="#%3Cinit%3E(com.ibm.j9ddr.corereaders.tdump.zebedee.dumpreader.AddressSpace,java.lang.String)">FunctionEmulator</a></span>&#8203;(<a href="../dumpreader/AddressSpace.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.dumpreader">AddressSpace</a>&nbsp;space,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link" target="_blank">String</a>&nbsp;functionName)</code></div>
<div class="col-last odd-row-color">
<div class="block">Create a new FunctionEmulator.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method.summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>long</code></div>
<div class="col-second even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#createDummyReturnAddress()">createDummyReturnAddress</a></span>()</code></div>
<div class="col-last even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Register a dummy return address.</div>
</div>
<div class="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>long</code></div>
<div class="col-second odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#getArgument(int)">getArgument</a></span>&#8203;(int&nbsp;argNumber)</code></div>
<div class="col-last odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Gets the given function argument.</div>
</div>
<div class="col-first even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><a href="FunctionEmulator.Function.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.Function</a></code></div>
<div class="col-second even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#getCallTreeRoot()">getCallTreeRoot</a></span>()</code></div>
<div class="col-last even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Returns the root of the call tree.</div>
</div>
<div class="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><a href="FunctionEmulator.Function.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.Function</a></code></div>
<div class="col-second odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#getCurrentFunction()">getCurrentFunction</a></span>()</code></div>
<div class="col-last odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Returns the current function.</div>
</div>
<div class="col-first even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><a href="../util/Emulator.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.util">Emulator</a></code></div>
<div class="col-second even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#getEmulator()">getEmulator</a></span>()</code></div>
<div class="col-last even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Returns the <a href="../util/Emulator.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.util"><code>Emulator</code></a> object we use.</div>
</div>
<div class="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><a href="../dumpreader/MutableAddressSpace.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.dumpreader">MutableAddressSpace</a></code></div>
<div class="col-second odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#getMutableAddressSpace()">getMutableAddressSpace</a></span>()</code></div>
<div class="col-last odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Returns the MutableAddressSpace used by the emulator.</div>
</div>
<div class="col-first even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>long</code></div>
<div class="col-second even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#getStackFloor()">getStackFloor</a></span>()</code></div>
<div class="col-last even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Return the xplink stack floor.</div>
</div>
<div class="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link" target="_blank">List</a></code></div>
<div class="col-second odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#getTraceEntries()">getTraceEntries</a></span>()</code></div>
<div class="col-last odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Return a list of the instruction trace entries</div>
</div>
<div class="col-first even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>void</code></div>
<div class="col-second even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#overrideFunction(long,com.ibm.j9ddr.corereaders.tdump.zebedee.le.FunctionEmulator.CallbackFunction)">overrideFunction</a></span>&#8203;(long&nbsp;functionEntryPoint,
<a href="FunctionEmulator.CallbackFunction.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.CallbackFunction</a>&nbsp;callback)</code></div>
<div class="col-last even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Allows the given function to be "overridden".</div>
</div>
<div class="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#overrideFunction(java.lang.String,long)">overrideFunction</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link" target="_blank">String</a>&nbsp;functionName,
long&nbsp;returnValue)</code></div>
<div class="col-last odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">&nbsp;</div>
<div class="col-first even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>void</code></div>
<div class="col-second even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#overrideFunction(java.lang.String,long,boolean)">overrideFunction</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link" target="_blank">String</a>&nbsp;functionName,
long&nbsp;retVal,
boolean&nbsp;protect)</code></div>
<div class="col-last even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#overrideFunction(java.lang.String,com.ibm.j9ddr.corereaders.tdump.zebedee.le.FunctionEmulator.CallbackFunction)">overrideFunction</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link" target="_blank">String</a>&nbsp;functionName,
<a href="FunctionEmulator.CallbackFunction.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.CallbackFunction</a>&nbsp;callback)</code></div>
<div class="col-last odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Allows the given function to be "overridden".</div>
</div>
<div class="col-first even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>void</code></div>
<div class="col-second even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#recordAllCalledFunctions()">recordAllCalledFunctions</a></span>()</code></div>
<div class="col-last even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#recordCalledFunctions()">recordCalledFunctions</a></span>()</code></div>
<div class="col-last odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Run the emulator and record any called functions as new <a href="DllFunction.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le"><code>DllFunction</code></a>s.</div>
</div>
<div class="col-first even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>long</code></div>
<div class="col-second even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#registerCallbackFunction(com.ibm.j9ddr.corereaders.tdump.zebedee.le.FunctionEmulator.CallbackFunction)">registerCallbackFunction</a></span>&#8203;(<a href="FunctionEmulator.CallbackFunction.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.CallbackFunction</a>&nbsp;callback)</code></div>
<div class="col-last even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Registers a callback function.</div>
</div>
<div class="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>long</code></div>
<div class="col-second odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#run()">run</a></span>()</code></div>
<div class="col-last odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Now run the emulator.</div>
</div>
<div class="col-first even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>long</code></div>
<div class="col-second even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#run(long)">run</a></span>&#8203;(long&nbsp;functionPointer)</code></div>
<div class="col-last even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Run the emulator using the supplied xplink C function pointer.</div>
</div>
<div class="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>long</code></div>
<div class="col-second odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#run(java.lang.String)">run</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link" target="_blank">String</a>&nbsp;functionName)</code></div>
<div class="col-last odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Run the emulator using the supplied xplink C function.</div>
</div>
<div class="col-first even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>void</code></div>
<div class="col-second even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#runAllPaths()">runAllPaths</a></span>()</code></div>
<div class="col-last even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Run all paths of the function.</div>
</div>
<div class="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#setArgument(int,int)">setArgument</a></span>&#8203;(int&nbsp;argNumber,
int&nbsp;value)</code></div>
<div class="col-last odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Sets the given function argument.</div>
</div>
<div class="col-first even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>void</code></div>
<div class="col-second even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#setArgument(int,long)">setArgument</a></span>&#8203;(int&nbsp;argNumber,
long&nbsp;value)</code></div>
<div class="col-last even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Sets the given function argument.</div>
</div>
<div class="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#setBranchInstructionTracing(boolean)">setBranchInstructionTracing</a></span>&#8203;(boolean&nbsp;branchInstructionTrace)</code></div>
<div class="col-last odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Turn branch instruction tracing on or off.</div>
</div>
<div class="col-first even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>void</code></div>
<div class="col-second even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#setCallTreeCapture()">setCallTreeCapture</a></span>()</code></div>
<div class="col-last even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Turn call tree capturing on.</div>
</div>
<div class="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#setInstructionRecording(boolean)">setInstructionRecording</a></span>&#8203;(boolean&nbsp;instructionRecord)</code></div>
<div class="col-last odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Turn instruction recording on or off.</div>
</div>
<div class="col-first even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>void</code></div>
<div class="col-second even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#setInstructionTracing(boolean)">setInstructionTracing</a></span>&#8203;(boolean&nbsp;instructionTrace)</code></div>
<div class="col-last even-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Turn instruction tracing on or off.</div>
</div>
<div class="col-first odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table"><code><span class="member-name-link"><a href="#setPrintOffsets(boolean)">setPrintOffsets</a></span>&#8203;(boolean&nbsp;printOffsets)</code></div>
<div class="col-last odd-row-color method-summary-table-tab2 method-summary-table-tab4 method-summary-table">
<div class="block">Include instruction offsets from the start of the function when tracing.</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods.inherited.from.class.java.lang.Object">Methods declared in class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link" target="_blank">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link" target="_blank">clone</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link" target="_blank">equals</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link" target="_blank">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link" target="_blank">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link" target="_blank">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link" target="_blank">notify</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link" target="_blank">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link" target="_blank">toString</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link" target="_blank">wait</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link" target="_blank">wait</a>, <a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link" target="_blank">wait</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor.detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;(com.ibm.j9ddr.corereaders.tdump.zebedee.dumpreader.AddressSpace,java.lang.String)">
<h3>FunctionEmulator</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">FunctionEmulator</span>&#8203;<span class="parameters">(<a href="../dumpreader/AddressSpace.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.dumpreader">AddressSpace</a>&nbsp;space,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link" target="_blank">String</a>&nbsp;functionName)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link" target="_blank">NoSuchMethodException</a></span></div>
<div class="block">Create a new FunctionEmulator.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>space</code> - the AddressSpace containing the code and data we are to use</dd>
<dd><code>functionName</code> - the name of the function to call</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link" target="_blank">NoSuchMethodException</a></code> - if the given function can't be found</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(com.ibm.j9ddr.corereaders.tdump.zebedee.dumpreader.AddressSpace,long,long)">
<h3>FunctionEmulator</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">FunctionEmulator</span>&#8203;<span class="parameters">(<a href="../dumpreader/AddressSpace.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.dumpreader">AddressSpace</a>&nbsp;space,
long&nbsp;functionEntryPoint,
long&nbsp;functionEnv)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link" target="_blank">NoSuchMethodException</a></span></div>
<div class="block">Create a new FunctionEmulator. This is a raw form where the address of the function entry
point and env are supplied. Note that the so-called "environment" pointer is not required
by all functions. It is the value that is stored in R5. If you do need to know it you
can sometimes find it by looking in the DSA of the function to find the saved value
(assuming the dump has the function in one of the stacks!).</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>space</code> - the AddressSpace containing the code and data we are to use</dd>
<dd><code>functionEntryPoint</code> - the address of the function entry point</dd>
<dd><code>functionEnv</code> - the address of the "environment" for the function (not all
functions require this to be set)</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link" target="_blank">NoSuchMethodException</a></code> - if the given function can't be found</dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></code></dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method.detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="getStackFloor()">
<h3>getStackFloor</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">getStackFloor</span>()</div>
<div class="block">Return the xplink stack floor. Be careful with this.</div>
</section>
</li>
<li>
<section class="detail" id="createDummyReturnAddress()">
<h3>createDummyReturnAddress</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">createDummyReturnAddress</span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></span></div>
<div class="block">Register a dummy return address. When this is branched to we simply
stop the emulator</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setPrintOffsets(boolean)">
<h3>setPrintOffsets</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setPrintOffsets</span>&#8203;<span class="parameters">(boolean&nbsp;printOffsets)</span></div>
<div class="block">Include instruction offsets from the start of the function when tracing.
XXX doesn't yet work for called functions</div>
</section>
</li>
<li>
<section class="detail" id="setInstructionTracing(boolean)">
<h3>setInstructionTracing</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setInstructionTracing</span>&#8203;<span class="parameters">(boolean&nbsp;instructionTrace)</span></div>
<div class="block">Turn instruction tracing on or off. A trace of all instructions executed will be
sent to System.out.</div>
</section>
</li>
<li>
<section class="detail" id="setInstructionRecording(boolean)">
<h3>setInstructionRecording</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setInstructionRecording</span>&#8203;<span class="parameters">(boolean&nbsp;instructionRecord)</span></div>
<div class="block">Turn instruction recording on or off. A trace of all instructions executed will be
saved.</div>
</section>
</li>
<li>
<section class="detail" id="getTraceEntries()">
<h3>getTraceEntries</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link" target="_blank">List</a></span>&nbsp;<span class="element-name">getTraceEntries</span>()</div>
<div class="block">Return a list of the instruction trace entries</div>
</section>
</li>
<li>
<section class="detail" id="setBranchInstructionTracing(boolean)">
<h3>setBranchInstructionTracing</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setBranchInstructionTracing</span>&#8203;<span class="parameters">(boolean&nbsp;branchInstructionTrace)</span></div>
<div class="block">Turn branch instruction tracing on or off. A trace of all branch instructions executed will be
sent to System.out.</div>
</section>
</li>
<li>
<section class="detail" id="setCallTreeCapture()">
<h3>setCallTreeCapture</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setCallTreeCapture</span>()</div>
<div class="block">Turn call tree capturing on. The call tree may be retrieved with <a href="#getCallTreeRoot()"><code>getCallTreeRoot()</code></a>.</div>
</section>
</li>
<li>
<section class="detail" id="getCallTreeRoot()">
<h3>getCallTreeRoot</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="FunctionEmulator.Function.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.Function</a></span>&nbsp;<span class="element-name">getCallTreeRoot</span>()</div>
<div class="block">Returns the root of the call tree. <a href="#setCallTreeCapture()"><code>setCallTreeCapture()</code></a> must have been called
prior to the emulator having run. These routines can be used to obtain the actual call
tree during a run of the emulator. Note that the root function is a dummy one.</div>
</section>
</li>
<li>
<section class="detail" id="getCurrentFunction()">
<h3>getCurrentFunction</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="FunctionEmulator.Function.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.Function</a></span>&nbsp;<span class="element-name">getCurrentFunction</span>()</div>
<div class="block">Returns the current function. User callbacks can make use of this.</div>
</section>
</li>
<li>
<section class="detail" id="getEmulator()">
<h3>getEmulator</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../util/Emulator.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.util">Emulator</a></span>&nbsp;<span class="element-name">getEmulator</span>()</div>
<div class="block">Returns the <a href="../util/Emulator.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.util"><code>Emulator</code></a> object we use.</div>
</section>
</li>
<li>
<section class="detail" id="setArgument(int,int)">
<h3>setArgument</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setArgument</span>&#8203;<span class="parameters">(int&nbsp;argNumber,
int&nbsp;value)</span></div>
<div class="block">Sets the given function argument.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>argNumber</code> - the number of the argument to be set, starting at one (XXX currently limited to a max of 3)</dd>
<dd><code>value</code> - the value of the argument</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="setArgument(int,long)">
<h3>setArgument</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setArgument</span>&#8203;<span class="parameters">(int&nbsp;argNumber,
long&nbsp;value)</span></div>
<div class="block">Sets the given function argument.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>argNumber</code> - the number of the argument to be set, starting at one (XXX currently limited to a max of 3)</dd>
<dd><code>value</code> - the value of the argument</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getArgument(int)">
<h3>getArgument</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">getArgument</span>&#8203;<span class="parameters">(int&nbsp;argNumber)</span></div>
<div class="block">Gets the given function argument. To be used from callback functions.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>argNumber</code> - the number of the argument to be got, starting at one</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getMutableAddressSpace()">
<h3>getMutableAddressSpace</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../dumpreader/MutableAddressSpace.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.dumpreader">MutableAddressSpace</a></span>&nbsp;<span class="element-name">getMutableAddressSpace</span>()</div>
<div class="block">Returns the MutableAddressSpace used by the emulator. This can be used by users wishing
to allocate space for input arguments for instance.</div>
</section>
</li>
<li>
<section class="detail" id="registerCallbackFunction(com.ibm.j9ddr.corereaders.tdump.zebedee.le.FunctionEmulator.CallbackFunction)">
<h3>registerCallbackFunction</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">registerCallbackFunction</span>&#8203;<span class="parameters">(<a href="FunctionEmulator.CallbackFunction.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.CallbackFunction</a>&nbsp;callback)</span></div>
<div class="block">Registers a callback function.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the address of the linkage pointer. This is what you put in place of a
C function pointer.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="overrideFunction(java.lang.String,com.ibm.j9ddr.corereaders.tdump.zebedee.le.FunctionEmulator.CallbackFunction)">
<h3>overrideFunction</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">overrideFunction</span>&#8203;<span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link" target="_blank">String</a>&nbsp;functionName,
<a href="FunctionEmulator.CallbackFunction.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.CallbackFunction</a>&nbsp;callback)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link" target="_blank">NoSuchMethodException</a></span></div>
<div class="block">Allows the given function to be "overridden". The supplied callback function will
be called rather than the real one.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>functionName</code> - the name of the function to override</dd>
<dd><code>callback</code> - the user function that will be called rather than the real one</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link" target="_blank">NoSuchMethodException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="overrideFunction(long,com.ibm.j9ddr.corereaders.tdump.zebedee.le.FunctionEmulator.CallbackFunction)">
<h3>overrideFunction</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">overrideFunction</span>&#8203;<span class="parameters">(long&nbsp;functionEntryPoint,
<a href="FunctionEmulator.CallbackFunction.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.CallbackFunction</a>&nbsp;callback)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link" target="_blank">NoSuchMethodException</a></span></div>
<div class="block">Allows the given function to be "overridden". The supplied callback function will
be called rather than the real one. This is the raw version of overrideFunction
that takes the address of the function.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>functionEntryPoint</code> - the address of the function entry point</dd>
<dd><code>callback</code> - the user function that will be called rather than the real one</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link" target="_blank">NoSuchMethodException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="overrideFunction(java.lang.String,long,boolean)">
<h3>overrideFunction</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">overrideFunction</span>&#8203;<span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link" target="_blank">String</a>&nbsp;functionName,
long&nbsp;retVal,
boolean&nbsp;protect)</span></div>
</section>
</li>
<li>
<section class="detail" id="overrideFunction(java.lang.String,long)">
<h3>overrideFunction</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">overrideFunction</span>&#8203;<span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link" target="_blank">String</a>&nbsp;functionName,
long&nbsp;returnValue)</span></div>
</section>
</li>
<li>
<section class="detail" id="run()">
<h3>run</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">run</span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></span></div>
<div class="block">Now run the emulator. This method returns when the emulated function returns.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the return value from the function (if any)</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="run(long)">
<h3>run</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">run</span>&#8203;<span class="parameters">(long&nbsp;functionPointer)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></span></div>
<div class="block">Run the emulator using the supplied xplink C function pointer. This method
returns when the emulated function returns.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the return value from the function (if any)</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="run(java.lang.String)">
<h3>run</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">run</span>&#8203;<span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link" target="_blank">String</a>&nbsp;functionName)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link" target="_blank">NoSuchMethodException</a></span></div>
<div class="block">Run the emulator using the supplied xplink C function. This method
returns when the emulated function returns.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>the return value from the function (if any)</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/NoSuchMethodException.html" title="class or interface in java.lang" class="external-link" target="_blank">NoSuchMethodException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="recordCalledFunctions()">
<h3>recordCalledFunctions</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">recordCalledFunctions</span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></span></div>
<div class="block">Run the emulator and record any called functions as new <a href="DllFunction.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le"><code>DllFunction</code></a>s.
The purpose of this method is to obtain the entry points for functions which are not
in the export list for a DLL. The emulator is run and any functions called are saved
as fake DllFunction entries which may then be obtained using
<a href="Dll.html#getFunction(java.lang.String)"><code>Dll.getFunction(java.lang.String)</code></a>.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="recordAllCalledFunctions()">
<h3>recordAllCalledFunctions</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">recordAllCalledFunctions</span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></span></div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="runAllPaths()">
<h3>runAllPaths</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">runAllPaths</span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></span></div>
<div class="block">Run all paths of the function. This is used for disassembly.</div>
<dl class="notes">
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link" target="_blank">IOException</a></code></dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small><a href="https://www.eclipse.org/openj9/" target="_blank">Eclipse OpenJ9 website.</a><br> To raise a bug report or suggest an improvement create an <a href="https://github.com/eclipse-openj9/openj9/issues" target="_blank">Eclipse Openj9 issue.</a><br> Copyright &copy; 1998, 2021, IBM Corp. and others.</small></p>
</footer>
</div>
</div>
</body>
</html>