blob: 89264c3f235bbe3e7795f82e1521eb166947c115 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>FunctionEmulator (OpenJ9 JDK 11)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<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="../../../../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="FunctionEmulator (OpenJ9 JDK 11)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" 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="navBarCell1Rev">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 class="aboutLanguage"><div style="margin-top: 9px;"><strong>OpenJ9 JDK 11</strong></div></div>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<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="subNavList">
<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>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="moduleLabelInType">Module</span>&nbsp;<a href="../../../../../../../module-summary.html">openj9.dtfj</a></div>
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">com.ibm.j9ddr.corereaders.tdump.zebedee.le</a></div>
<h2 title="Class FunctionEmulator" class="title">Class FunctionEmulator</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>com.ibm.j9ddr.corereaders.tdump.zebedee.le.FunctionEmulator</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">FunctionEmulator</span>
extends <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">Object</a></pre>
<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>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="FunctionEmulator.CallbackFunction.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.CallbackFunction</a></span></code></th>
<td class="colLast">
<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>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="FunctionEmulator.CallOriginalException.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.CallOriginalException</a></span></code></th>
<td class="colLast">
<div class="block">This exception can be thrown by callback functions which want to call the overridden
function.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="FunctionEmulator.Function.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.Function</a></span></code></th>
<td class="colLast">
<div class="block">This class represents a called function.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="FunctionEmulator.TraceEntry.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.TraceEntry</a></span></code></th>
<td class="colLast">
<div class="block">Describes a trace entry</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><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></th>
<td class="colLast">
<div class="block">Create a new FunctionEmulator.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><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/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">String</a>&nbsp;functionName)</code></th>
<td class="colLast">
<div class="block">Create a new FunctionEmulator.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createDummyReturnAddress()">createDummyReturnAddress</a></span>()</code></th>
<td class="colLast">
<div class="block">Register a dummy return address.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getArgument(int)">getArgument</a></span>&#8203;(int&nbsp;argNumber)</code></th>
<td class="colLast">
<div class="block">Gets the given function argument.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="FunctionEmulator.Function.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.Function</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCallTreeRoot()">getCallTreeRoot</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the root of the call tree.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="FunctionEmulator.Function.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.Function</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getCurrentFunction()">getCurrentFunction</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the current function.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../util/Emulator.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.util">Emulator</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getEmulator()">getEmulator</a></span>()</code></th>
<td class="colLast">
<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>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../dumpreader/MutableAddressSpace.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.dumpreader">MutableAddressSpace</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMutableAddressSpace()">getMutableAddressSpace</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the MutableAddressSpace used by the emulator.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getStackFloor()">getStackFloor</a></span>()</code></th>
<td class="colLast">
<div class="block">Return the xplink stack floor.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink" target="_blank">List</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTraceEntries()">getTraceEntries</a></span>()</code></th>
<td class="colLast">
<div class="block">Return a list of the instruction trace entries</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><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></th>
<td class="colLast">
<div class="block">Allows the given function to be "overridden".</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#overrideFunction(java.lang.String,long)">overrideFunction</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">String</a>&nbsp;functionName,
long&nbsp;returnValue)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#overrideFunction(java.lang.String,long,boolean)">overrideFunction</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">String</a>&nbsp;functionName,
long&nbsp;retVal,
boolean&nbsp;protect)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><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/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink" 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></th>
<td class="colLast">
<div class="block">Allows the given function to be "overridden".</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#recordAllCalledFunctions()">recordAllCalledFunctions</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#recordCalledFunctions()">recordCalledFunctions</a></span>()</code></th>
<td class="colLast">
<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>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><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></th>
<td class="colLast">
<div class="block">Registers a callback function.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#run()">run</a></span>()</code></th>
<td class="colLast">
<div class="block">Now run the emulator.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#run(long)">run</a></span>&#8203;(long&nbsp;functionPointer)</code></th>
<td class="colLast">
<div class="block">Run the emulator using the supplied xplink C function pointer.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#run(java.lang.String)">run</a></span>&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">String</a>&nbsp;functionName)</code></th>
<td class="colLast">
<div class="block">Run the emulator using the supplied xplink C function.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#runAllPaths()">runAllPaths</a></span>()</code></th>
<td class="colLast">
<div class="block">Run all paths of the function.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setArgument(int,int)">setArgument</a></span>&#8203;(int&nbsp;argNumber,
int&nbsp;value)</code></th>
<td class="colLast">
<div class="block">Sets the given function argument.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setArgument(int,long)">setArgument</a></span>&#8203;(int&nbsp;argNumber,
long&nbsp;value)</code></th>
<td class="colLast">
<div class="block">Sets the given function argument.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setBranchInstructionTracing(boolean)">setBranchInstructionTracing</a></span>&#8203;(boolean&nbsp;branchInstructionTrace)</code></th>
<td class="colLast">
<div class="block">Turn branch instruction tracing on or off.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setCallTreeCapture()">setCallTreeCapture</a></span>()</code></th>
<td class="colLast">
<div class="block">Turn call tree capturing on.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setInstructionRecording(boolean)">setInstructionRecording</a></span>&#8203;(boolean&nbsp;instructionRecord)</code></th>
<td class="colLast">
<div class="block">Turn instruction recording on or off.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setInstructionTracing(boolean)">setInstructionTracing</a></span>&#8203;(boolean&nbsp;instructionTrace)</code></th>
<td class="colLast">
<div class="block">Turn instruction tracing on or off.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setPrintOffsets(boolean)">setPrintOffsets</a></span>&#8203;(boolean&nbsp;printOffsets)</code></th>
<td class="colLast">
<div class="block">Include instruction offsets from the start of the function when tracing.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods declared in class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink" target="_blank">clone</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink" target="_blank">equals</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink" target="_blank">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink" target="_blank">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink" target="_blank">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink" target="_blank">notify</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink" target="_blank">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink" target="_blank">toString</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink" target="_blank">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink" target="_blank">wait</a>, <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink" target="_blank">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(com.ibm.j9ddr.corereaders.tdump.zebedee.dumpreader.AddressSpace,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>FunctionEmulator</h4>
<pre>public&nbsp;FunctionEmulator&#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/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">String</a>&nbsp;functionName)
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">NoSuchMethodException</a></pre>
<div class="block">Create a new FunctionEmulator.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></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><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang" class="externalLink" 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/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></code></dd>
</dl>
</li>
</ul>
<a id="&lt;init&gt;(com.ibm.j9ddr.corereaders.tdump.zebedee.dumpreader.AddressSpace,long,long)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>FunctionEmulator</h4>
<pre>public&nbsp;FunctionEmulator&#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)
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">NoSuchMethodException</a></pre>
<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>
<dt><span class="paramLabel">Parameters:</span></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><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang" class="externalLink" 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/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="getStackFloor()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getStackFloor</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;getStackFloor()</pre>
<div class="block">Return the xplink stack floor. Be careful with this.</div>
</li>
</ul>
<a id="createDummyReturnAddress()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createDummyReturnAddress</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;createDummyReturnAddress()
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></pre>
<div class="block">Register a dummy return address. When this is branched to we simply
stop the emulator</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></code></dd>
</dl>
</li>
</ul>
<a id="setPrintOffsets(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setPrintOffsets</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setPrintOffsets&#8203;(boolean&nbsp;printOffsets)</pre>
<div class="block">Include instruction offsets from the start of the function when tracing.
XXX doesn't yet work for called functions</div>
</li>
</ul>
<a id="setInstructionTracing(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setInstructionTracing</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setInstructionTracing&#8203;(boolean&nbsp;instructionTrace)</pre>
<div class="block">Turn instruction tracing on or off. A trace of all instructions executed will be
sent to System.out.</div>
</li>
</ul>
<a id="setInstructionRecording(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setInstructionRecording</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setInstructionRecording&#8203;(boolean&nbsp;instructionRecord)</pre>
<div class="block">Turn instruction recording on or off. A trace of all instructions executed will be
saved.</div>
</li>
</ul>
<a id="getTraceEntries()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTraceEntries</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink" target="_blank">List</a>&nbsp;getTraceEntries()</pre>
<div class="block">Return a list of the instruction trace entries</div>
</li>
</ul>
<a id="setBranchInstructionTracing(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setBranchInstructionTracing</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setBranchInstructionTracing&#8203;(boolean&nbsp;branchInstructionTrace)</pre>
<div class="block">Turn branch instruction tracing on or off. A trace of all branch instructions executed will be
sent to System.out.</div>
</li>
</ul>
<a id="setCallTreeCapture()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setCallTreeCapture</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setCallTreeCapture()</pre>
<div class="block">Turn call tree capturing on. The call tree may be retrieved with <a href="#getCallTreeRoot()"><code>getCallTreeRoot()</code></a>.</div>
</li>
</ul>
<a id="getCallTreeRoot()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCallTreeRoot</h4>
<pre class="methodSignature">public&nbsp;<a href="FunctionEmulator.Function.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.Function</a>&nbsp;getCallTreeRoot()</pre>
<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>
</li>
</ul>
<a id="getCurrentFunction()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentFunction</h4>
<pre class="methodSignature">public&nbsp;<a href="FunctionEmulator.Function.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.Function</a>&nbsp;getCurrentFunction()</pre>
<div class="block">Returns the current function. User callbacks can make use of this.</div>
</li>
</ul>
<a id="getEmulator()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getEmulator</h4>
<pre class="methodSignature">public&nbsp;<a href="../util/Emulator.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.util">Emulator</a>&nbsp;getEmulator()</pre>
<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>
</li>
</ul>
<a id="setArgument(int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setArgument</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setArgument&#8203;(int&nbsp;argNumber,
int&nbsp;value)</pre>
<div class="block">Sets the given function argument.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></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>
</li>
</ul>
<a id="setArgument(int,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setArgument</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setArgument&#8203;(int&nbsp;argNumber,
long&nbsp;value)</pre>
<div class="block">Sets the given function argument.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></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>
</li>
</ul>
<a id="getArgument(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getArgument</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;getArgument&#8203;(int&nbsp;argNumber)</pre>
<div class="block">Gets the given function argument. To be used from callback functions.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>argNumber</code> - the number of the argument to be got, starting at one</dd>
</dl>
</li>
</ul>
<a id="getMutableAddressSpace()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMutableAddressSpace</h4>
<pre class="methodSignature">public&nbsp;<a href="../dumpreader/MutableAddressSpace.html" title="class in com.ibm.j9ddr.corereaders.tdump.zebedee.dumpreader">MutableAddressSpace</a>&nbsp;getMutableAddressSpace()</pre>
<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>
</li>
</ul>
<a id="registerCallbackFunction(com.ibm.j9ddr.corereaders.tdump.zebedee.le.FunctionEmulator.CallbackFunction)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerCallbackFunction</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;registerCallbackFunction&#8203;(<a href="FunctionEmulator.CallbackFunction.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.CallbackFunction</a>&nbsp;callback)</pre>
<div class="block">Registers a callback function.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the address of the linkage pointer. This is what you put in place of a
C function pointer.</dd>
</dl>
</li>
</ul>
<a id="overrideFunction(java.lang.String,com.ibm.j9ddr.corereaders.tdump.zebedee.le.FunctionEmulator.CallbackFunction)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>overrideFunction</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;overrideFunction&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink" 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)
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">NoSuchMethodException</a></pre>
<div class="block">Allows the given function to be "overridden". The supplied callback function will
be called rather than the real one.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></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><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">NoSuchMethodException</a></code></dd>
</dl>
</li>
</ul>
<a id="overrideFunction(long,com.ibm.j9ddr.corereaders.tdump.zebedee.le.FunctionEmulator.CallbackFunction)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>overrideFunction</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;overrideFunction&#8203;(long&nbsp;functionEntryPoint,
<a href="FunctionEmulator.CallbackFunction.html" title="interface in com.ibm.j9ddr.corereaders.tdump.zebedee.le">FunctionEmulator.CallbackFunction</a>&nbsp;callback)
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">NoSuchMethodException</a></pre>
<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>
<dt><span class="paramLabel">Parameters:</span></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><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">NoSuchMethodException</a></code></dd>
</dl>
</li>
</ul>
<a id="overrideFunction(java.lang.String,long,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>overrideFunction</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;overrideFunction&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">String</a>&nbsp;functionName,
long&nbsp;retVal,
boolean&nbsp;protect)</pre>
</li>
</ul>
<a id="overrideFunction(java.lang.String,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>overrideFunction</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;overrideFunction&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">String</a>&nbsp;functionName,
long&nbsp;returnValue)</pre>
</li>
</ul>
<a id="run()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>run</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;run()
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></pre>
<div class="block">Now run the emulator. This method returns when the emulated function returns.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the return value from the function (if any)</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></code></dd>
</dl>
</li>
</ul>
<a id="run(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>run</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;run&#8203;(long&nbsp;functionPointer)
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></pre>
<div class="block">Run the emulator using the supplied xplink C function pointer. This method
returns when the emulated function returns.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the return value from the function (if any)</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></code></dd>
</dl>
</li>
</ul>
<a id="run(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>run</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;run&#8203;(<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">String</a>&nbsp;functionName)
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a>,
<a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">NoSuchMethodException</a></pre>
<div class="block">Run the emulator using the supplied xplink C function. This method
returns when the emulated function returns.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the return value from the function (if any)</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/NoSuchMethodException.html?is-external=true" title="class or interface in java.lang" class="externalLink" target="_blank">NoSuchMethodException</a></code></dd>
</dl>
</li>
</ul>
<a id="recordCalledFunctions()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>recordCalledFunctions</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;recordCalledFunctions()
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></pre>
<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>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></code></dd>
</dl>
</li>
</ul>
<a id="recordAllCalledFunctions()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>recordAllCalledFunctions</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;recordAllCalledFunctions()
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></code></dd>
</dl>
</li>
</ul>
<a id="runAllPaths()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>runAllPaths</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;runAllPaths()
throws <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></pre>
<div class="block">Run all paths of the function. This is used for disassembly.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink" target="_blank">IOException</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" 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="navBarCell1Rev">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 class="aboutLanguage"><div style="margin-top: 9px;"><strong>OpenJ9 JDK 11</strong></div></div>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<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="subNavList">
<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>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><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>
</body>
</html>