File "vm__dump_8c_source.html"
Full Path: /home/attunedd/public_html/byp/izo/con7ext_sym404/rintoar.txt/opt/alt/ruby19/share/doc/ruby/html/dd/dd7/vm__dump_8c_source.html
File size: 205.21 KB
MIME-type: text/html
Charset: utf-8
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Ruby: vm_dump.c Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Ruby
 <span id="projectnumber">1.9.3p551(2014-11-13revision48407)</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">vm_dump.c</div> </div>
</div><!--header-->
<div class="contents">
<a href="../../dd/dd7/vm__dump_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/**********************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"></span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> vm_dump.c -</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> $Author: naruse $</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> Copyright (C) 2004-2007 Koichi Sasada</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"></span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">**********************************************************************/</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "<a class="code" href="../../de/de6/ruby_2ruby_8h.html">ruby/ruby.h</a>"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "<a class="code" href="../../d6/df3/addr2line_8h.html">addr2line.h</a>"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "<a class="code" href="../../d8/d32/vm__core_8h.html">vm_core.h</a>"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#a8537bba92a6b0ad9700c765c83969b57"> 16</a></span> <span class="preprocessor">#define MAX_POSBUF 128</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#acd3a62eaa8bfb2c0c2a59c2afa1179bb"> 18</a></span> <span class="preprocessor">#define VM_CFP_CNT(th, cfp) \</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor"> ((rb_control_frame_t *)((th)->stack + (th)->stack_size) - (rb_control_frame_t *)(cfp))</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#ac8e45243b47b9a4d73d977c62c3e6975"> 22</a></span> <a class="code" href="../../dd/dd7/vm__dump_8c.html#ac8e45243b47b9a4d73d977c62c3e6975">control_frame_dump</a>(<a class="code" href="../../d2/d66/structrb__thread__struct.html">rb_thread_t</a> *th, <a class="code" href="../../dd/d84/structrb__control__frame__t.html">rb_control_frame_t</a> *cfp)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  ptrdiff_t pc = -1, <a class="code" href="../../db/d16/debug_8h.html#a1baecad7f27ccf1689612054ecf6a397">bp</a> = -1;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  ptrdiff_t lfp = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#af3314cb37c8a27353101bf6f35574946">lfp</a> - th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">stack</a>;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  ptrdiff_t dfp = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#ac1cafd093e114d3ec99ebeca0ffeb048">dfp</a> - th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">stack</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordtype">char</span> lfp_in_heap = <span class="charliteral">' '</span>, dfp_in_heap = <span class="charliteral">' '</span>;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordtype">char</span> posbuf[<a class="code" href="../../dd/dd7/vm__dump_8c.html#a8537bba92a6b0ad9700c765c83969b57">MAX_POSBUF</a>+1];</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">int</span> line = 0;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">int</span> nopos = 0;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *magic, *iseq_name = <span class="stringliteral">"-"</span>, *selfstr = <span class="stringliteral">"-"</span>, *biseq_name = <span class="stringliteral">"-"</span>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> tmp;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">if</span> (cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a2b5202626f8eab242cb282e928a19420">block_iseq</a> != 0 && <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aee74f540353cd2d77d1cb37a3714bd7d">BUILTIN_TYPE</a>(cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a2b5202626f8eab242cb282e928a19420">block_iseq</a>) != <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a5f1cc49c4da51d5bdffa64be79ff6fb0">T_NODE</a>) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  biseq_name = <span class="stringliteral">""</span>; <span class="comment">/* RSTRING(cfp->block_iseq->name)->ptr; */</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span> (lfp < 0 || (<span class="keywordtype">size_t</span>)lfp > th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a1587dec1a575fb9f8d6a689ef4fdb6b5">stack_size</a>) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  lfp = (ptrdiff_t)cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#af3314cb37c8a27353101bf6f35574946">lfp</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  lfp_in_heap = <span class="charliteral">'p'</span>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">if</span> (dfp < 0 || (<span class="keywordtype">size_t</span>)dfp > th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a1587dec1a575fb9f8d6a689ef4fdb6b5">stack_size</a>) {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  dfp = (ptrdiff_t)cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#ac1cafd093e114d3ec99ebeca0ffeb048">dfp</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  dfp_in_heap = <span class="charliteral">'p'</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a8e19fd7af779b623f1e9477f271358e6">bp</a>) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="../../db/d16/debug_8h.html#a1baecad7f27ccf1689612054ecf6a397">bp</a> = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a8e19fd7af779b623f1e9477f271358e6">bp</a> - th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">stack</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">switch</span> (<a class="code" href="../../d8/d32/vm__core_8h.html#a423bad734fe427f4d5deeb4fe71fff65">VM_FRAME_TYPE</a>(cfp)) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">case</span> <a class="code" href="../../d8/d32/vm__core_8h.html#ac9390ef02c17a0bc7e3bd359264562c7">VM_FRAME_MAGIC_TOP</a>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  magic = <span class="stringliteral">"TOP"</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keywordflow">case</span> <a class="code" href="../../d8/d32/vm__core_8h.html#abc8be29d36c6252fce6bc61621f81b71">VM_FRAME_MAGIC_METHOD</a>:</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  magic = <span class="stringliteral">"METHOD"</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">case</span> <a class="code" href="../../d8/d32/vm__core_8h.html#a2524f590c07fceb689b2b7d53114ff5f">VM_FRAME_MAGIC_CLASS</a>:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  magic = <span class="stringliteral">"CLASS"</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">case</span> <a class="code" href="../../d8/d32/vm__core_8h.html#a83eeedff3dde6d2d1ffce5d84c2ba2f1">VM_FRAME_MAGIC_BLOCK</a>:</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  magic = <span class="stringliteral">"BLOCK"</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">case</span> <a class="code" href="../../d8/d32/vm__core_8h.html#a885c6468caef6c3de80b0ad6c50ae38d">VM_FRAME_MAGIC_FINISH</a>:</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  magic = <span class="stringliteral">"FINISH"</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  nopos = 1;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">case</span> <a class="code" href="../../d8/d32/vm__core_8h.html#a26308f33317bb5b96ff89924822e8eab">VM_FRAME_MAGIC_CFUNC</a>:</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  magic = <span class="stringliteral">"CFUNC"</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">case</span> <a class="code" href="../../d8/d32/vm__core_8h.html#ac1f5b7efa57bccbeb4ff5e7ae6ff18c2">VM_FRAME_MAGIC_PROC</a>:</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  magic = <span class="stringliteral">"PROC"</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">case</span> <a class="code" href="../../d8/d32/vm__core_8h.html#a57840803108748406429fb1cb3b10530">VM_FRAME_MAGIC_LAMBDA</a>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  magic = <span class="stringliteral">"LAMBDA"</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">case</span> <a class="code" href="../../d8/d32/vm__core_8h.html#a795522d157a66fe8f0cdd335b28099c9">VM_FRAME_MAGIC_IFUNC</a>:</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  magic = <span class="stringliteral">"IFUNC"</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">case</span> <a class="code" href="../../d8/d32/vm__core_8h.html#ac7b8d797cce488d08572c273f49f28fe">VM_FRAME_MAGIC_EVAL</a>:</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  magic = <span class="stringliteral">"EVAL"</span>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  magic = <span class="stringliteral">"------"</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  magic = <span class="stringliteral">"(none)"</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span> (0) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  tmp = <a class="code" href="../../db/d2e/intern_8h.html#acbb281bacf6b80f460143348e26142e9">rb_inspect</a>(cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a4c11a50358317e1207affd6d7b4ad576">self</a>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  selfstr = <a class="code" href="../../de/de6/ruby_2ruby_8h.html#afc32c1526ac6cb40ec33cad8782c0bae">StringValueCStr</a>(tmp);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  selfstr = <span class="stringliteral">""</span>;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span> (nopos) {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">/* no name */</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a4b25ca925a9f60481173632b9c09d4e0">iseq</a> != 0) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">if</span> (<a class="code" href="../../d8/d32/vm__core_8h.html#aa933aeb7a703c7cc2d136492acbbef22">RUBY_VM_IFUNC_P</a>(cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a4b25ca925a9f60481173632b9c09d4e0">iseq</a>)) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  iseq_name = <span class="stringliteral">"<ifunc>"</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  pc = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a28b0b301811a891225ba9a58c412482d">pc</a> - cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a4b25ca925a9f60481173632b9c09d4e0">iseq</a>-><a class="code" href="../../d6/de3/structrb__iseq__struct.html#aa70f3e195a4350acbbc130f8a95c9958">iseq_encoded</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  iseq_name = <a class="code" href="../../d8/df4/generator_8h.html#aa0c7097c0d82c8372072fbab5a604e39">RSTRING_PTR</a>(cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a4b25ca925a9f60481173632b9c09d4e0">iseq</a>-><a class="code" href="../../d6/de3/structrb__iseq__struct.html#a35596da255ce28a5d1da94c2cc508c7d">name</a>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  line = <a class="code" href="../../de/de9/vm_8c.html#a70289cbb34babceed6243d9471e70e5f">rb_vm_get_sourceline</a>(cfp);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">if</span> (line) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="../../d7/d72/subst_8h.html#aa367b75c5aed883fef5befbdf04835a4">snprintf</a>(posbuf, <a class="code" href="../../dd/dd7/vm__dump_8c.html#a8537bba92a6b0ad9700c765c83969b57">MAX_POSBUF</a>, <span class="stringliteral">"%s:%d"</span>, <a class="code" href="../../d8/df4/generator_8h.html#aa0c7097c0d82c8372072fbab5a604e39">RSTRING_PTR</a>(cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a4b25ca925a9f60481173632b9c09d4e0">iseq</a>-><a class="code" href="../../d6/de3/structrb__iseq__struct.html#a06859fa5de56f2ede3cb692f1d9215e2">filename</a>), line);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#aa0ec76f80ebaf0668b688c4e4e5e3e3f">me</a>) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  iseq_name = <a class="code" href="../../d5/d11/ripper_8c.html#a877bc58c495643fcf49dc64c44631e72">rb_id2name</a>(cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#aa0ec76f80ebaf0668b688c4e4e5e3e3f">me</a>-><a class="code" href="../../d7/db7/structrb__method__entry__struct.html#a6c868c50e67b757c6324dfef0f3184dc">def</a>-><a class="code" href="../../d6/dab/structrb__method__definition__struct.html#a7fc0edb8505a61f8ae8bf2544fa7f676">original_id</a>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="../../d7/d72/subst_8h.html#aa367b75c5aed883fef5befbdf04835a4">snprintf</a>(posbuf, <a class="code" href="../../dd/dd7/vm__dump_8c.html#a8537bba92a6b0ad9700c765c83969b57">MAX_POSBUF</a>, <span class="stringliteral">":%s"</span>, iseq_name);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  line = -1;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  fprintf(stderr, <span class="stringliteral">"c:%04"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aca444ec27cdd86e8456e34dfc4aed830">PRIdPTRDIFF</a><span class="stringliteral">" "</span>,</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  ((<a class="code" href="../../dd/d84/structrb__control__frame__t.html">rb_control_frame_t</a> *)(th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">stack</a> + th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a1587dec1a575fb9f8d6a689ef4fdb6b5">stack_size</a>) - cfp));</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span> (pc == -1) {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  fprintf(stderr, <span class="stringliteral">"p:---- "</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  fprintf(stderr, <span class="stringliteral">"p:%04"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aca444ec27cdd86e8456e34dfc4aed830">PRIdPTRDIFF</a><span class="stringliteral">" "</span>, pc);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  fprintf(stderr, <span class="stringliteral">"s:%04"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aca444ec27cdd86e8456e34dfc4aed830">PRIdPTRDIFF</a><span class="stringliteral">" b:%04"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aca444ec27cdd86e8456e34dfc4aed830">PRIdPTRDIFF</a><span class="stringliteral">" "</span>, (cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a29b331b150e5cae1e206cd87f892bad8">sp</a> - th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">stack</a>), <a class="code" href="../../db/d16/debug_8h.html#a1baecad7f27ccf1689612054ecf6a397">bp</a>);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  fprintf(stderr, lfp_in_heap == <span class="charliteral">' '</span> ? <span class="stringliteral">"l:%06"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aca444ec27cdd86e8456e34dfc4aed830">PRIdPTRDIFF</a><span class="stringliteral">" "</span> : <span class="stringliteral">"l:%06"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#ae6db36a50ae612535a9aac7ad0ec5a0d">PRIxPTRDIFF</a><span class="stringliteral">" "</span>, lfp % 10000);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  fprintf(stderr, dfp_in_heap == <span class="charliteral">' '</span> ? <span class="stringliteral">"d:%06"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aca444ec27cdd86e8456e34dfc4aed830">PRIdPTRDIFF</a><span class="stringliteral">" "</span> : <span class="stringliteral">"d:%06"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#ae6db36a50ae612535a9aac7ad0ec5a0d">PRIxPTRDIFF</a><span class="stringliteral">" "</span>, dfp % 10000);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  fprintf(stderr, <span class="stringliteral">"%-6s"</span>, magic);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span> (line && !nopos) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  fprintf(stderr, <span class="stringliteral">" %s"</span>, posbuf);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span> (0) {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  fprintf(stderr, <span class="stringliteral">" \t"</span>);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  fprintf(stderr, <span class="stringliteral">"iseq: %-24s "</span>, iseq_name);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  fprintf(stderr, <span class="stringliteral">"self: %-24s "</span>, selfstr);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  fprintf(stderr, <span class="stringliteral">"%-1s "</span>, biseq_name);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  fprintf(stderr, <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#a1dbfe98ae709e8806918bdd3121bf986"> 146</a></span> <a class="code" href="../../dd/dd7/vm__dump_8c.html#a1dbfe98ae709e8806918bdd3121bf986">rb_vmdebug_stack_dump_raw</a>(<a class="code" href="../../d2/d66/structrb__thread__struct.html">rb_thread_t</a> *th, <a class="code" href="../../dd/d84/structrb__control__frame__t.html">rb_control_frame_t</a> *cfp)</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#if 0</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *sp = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a29b331b150e5cae1e206cd87f892bad8">sp</a>, *<a class="code" href="../../db/d16/debug_8h.html#a1baecad7f27ccf1689612054ecf6a397">bp</a> = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a8e19fd7af779b623f1e9477f271358e6">bp</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *lfp = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#af3314cb37c8a27353101bf6f35574946">lfp</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *dfp = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#ac1cafd093e114d3ec99ebeca0ffeb048">dfp</a>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *<a class="code" href="../../d2/d99/win32ole_8c.html#a4b5a598a4f53b3724549c48dcfbf7c48">p</a>, *st, *t;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  fprintf(stderr, <span class="stringliteral">"-- stack frame ------------\n"</span>);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">for</span> (<a class="code" href="../../d2/d99/win32ole_8c.html#a4b5a598a4f53b3724549c48dcfbf7c48">p</a> = st = th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">stack</a>; <a class="code" href="../../d2/d99/win32ole_8c.html#a4b5a598a4f53b3724549c48dcfbf7c48">p</a> < sp; <a class="code" href="../../d2/d99/win32ole_8c.html#a4b5a598a4f53b3724549c48dcfbf7c48">p</a>++) {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  fprintf(stderr, <span class="stringliteral">"%04ld (%p): %08"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aa1bf33f94a5de592de48c16fcfe86db2">PRIxVALUE</a>, (<span class="keywordtype">long</span>)(<a class="code" href="../../d2/d99/win32ole_8c.html#a4b5a598a4f53b3724549c48dcfbf7c48">p</a> - st), <a class="code" href="../../d2/d99/win32ole_8c.html#a4b5a598a4f53b3724549c48dcfbf7c48">p</a>, *<a class="code" href="../../d2/d99/win32ole_8c.html#a4b5a598a4f53b3724549c48dcfbf7c48">p</a>);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  t = (<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *)*<a class="code" href="../../d2/d99/win32ole_8c.html#a4b5a598a4f53b3724549c48dcfbf7c48">p</a>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">if</span> (th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">stack</a> <= t && t < sp) {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  fprintf(stderr, <span class="stringliteral">" (= %ld)"</span>, (<span class="keywordtype">long</span>)((<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *)<a class="code" href="../../d8/d32/vm__core_8h.html#a373f1cafd944ff9e99986582d0fd695b">GC_GUARDED_PTR_REF</a>(t) - th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">stack</a>));</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span> (<a class="code" href="../../d2/d99/win32ole_8c.html#a4b5a598a4f53b3724549c48dcfbf7c48">p</a> == lfp)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  fprintf(stderr, <span class="stringliteral">" <- lfp"</span>);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">if</span> (<a class="code" href="../../d2/d99/win32ole_8c.html#a4b5a598a4f53b3724549c48dcfbf7c48">p</a> == dfp)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  fprintf(stderr, <span class="stringliteral">" <- dfp"</span>);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span> (<a class="code" href="../../d2/d99/win32ole_8c.html#a4b5a598a4f53b3724549c48dcfbf7c48">p</a> == <a class="code" href="../../db/d16/debug_8h.html#a1baecad7f27ccf1689612054ecf6a397">bp</a>)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  fprintf(stderr, <span class="stringliteral">" <- bp"</span>); <span class="comment">/* should not be */</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  fprintf(stderr, <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  fprintf(stderr, <span class="stringliteral">"-- Control frame information "</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="stringliteral">"-----------------------------------------------\n"</span>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">while</span> ((<span class="keywordtype">void</span> *)cfp < (<span class="keywordtype">void</span> *)(th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">stack</a> + th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a1587dec1a575fb9f8d6a689ef4fdb6b5">stack_size</a>)) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="../../dd/dd7/vm__dump_8c.html#ac8e45243b47b9a4d73d977c62c3e6975">control_frame_dump</a>(th, cfp);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  cfp++;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  fprintf(stderr, <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span> }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#a130d5c43a9da83c86a471cb88c28f080"> 184</a></span> <a class="code" href="../../dd/dd7/vm__dump_8c.html#a130d5c43a9da83c86a471cb88c28f080">rb_vmdebug_stack_dump_raw_current</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="../../d2/d66/structrb__thread__struct.html">rb_thread_t</a> *th = <a class="code" href="../../d8/d32/vm__core_8h.html#a8deb84ec6023e3229db88ac2c9da6138">GET_THREAD</a>();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="../../dd/dd7/vm__dump_8c.html#a1dbfe98ae709e8806918bdd3121bf986">rb_vmdebug_stack_dump_raw</a>(th, th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a2ed7f694d58d876aa6f0fae6986bc921">cfp</a>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#a00c5c84d7769a956e3651998e92ae823"> 191</a></span> <a class="code" href="../../dd/dd7/vm__dump_8c.html#a00c5c84d7769a956e3651998e92ae823">rb_vmdebug_env_dump_raw</a>(<a class="code" href="../../d0/d73/structrb__env__t.html">rb_env_t</a> *<a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a>, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *lfp, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *dfp)</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keywordtype">int</span> <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  fprintf(stderr, <span class="stringliteral">"-- env --------------------\n"</span>);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordflow">while</span> (<a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a>) {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  fprintf(stderr, <span class="stringliteral">"--\n"</span>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">for</span> (<a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a> = 0; <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a> < <a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a>->env_size; <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>++) {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  fprintf(stderr, <span class="stringliteral">"%04d: %08"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aa1bf33f94a5de592de48c16fcfe86db2">PRIxVALUE</a><span class="stringliteral">" (%p)"</span>, -<a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a>->local_size + <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>, <a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a>->env[<a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>],</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  (<span class="keywordtype">void</span> *)&<a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a>->env[<a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>]);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keywordflow">if</span> (&<a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a>->env[<a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>] == lfp)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  fprintf(stderr, <span class="stringliteral">" <- lfp"</span>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span> (&<a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a>->env[<a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>] == dfp)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  fprintf(stderr, <span class="stringliteral">" <- dfp"</span>);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  fprintf(stderr, <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span> (<a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a>->prev_envval != 0) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#aaa39b3177aba775195d515b937ef78ff">GetEnvPtr</a>(<a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a>->prev_envval, <a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a>);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a> = 0;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  fprintf(stderr, <span class="stringliteral">"---------------------------\n"</span>);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span> }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#ab3e8c769e0c63ba229bd1b6338639512"> 219</a></span> <a class="code" href="../../dd/dd7/vm__dump_8c.html#ab3e8c769e0c63ba229bd1b6338639512">rb_vmdebug_proc_dump_raw</a>(<a class="code" href="../../d5/d77/structrb__proc__t.html">rb_proc_t</a> *proc)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="../../d0/d73/structrb__env__t.html">rb_env_t</a> *<a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordtype">char</span> *selfstr;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> val = <a class="code" href="../../db/d2e/intern_8h.html#acbb281bacf6b80f460143348e26142e9">rb_inspect</a>(proc-><a class="code" href="../../d5/d77/structrb__proc__t.html#acf80b0e350012548c28cba1ea64a7a6e">block</a>.<a class="code" href="../../da/dc0/structrb__block__struct.html#ad54e1ec45ab21ef384fe9e4346570397">self</a>);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  selfstr = <a class="code" href="../../de/de6/ruby_2ruby_8h.html#afc32c1526ac6cb40ec33cad8782c0bae">StringValueCStr</a>(val);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  fprintf(stderr, <span class="stringliteral">"-- proc -------------------\n"</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  fprintf(stderr, <span class="stringliteral">"self: %s\n"</span>, selfstr);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#aaa39b3177aba775195d515b937ef78ff">GetEnvPtr</a>(proc-><a class="code" href="../../d5/d77/structrb__proc__t.html#acdb9a8c85422bf299615f7942ffbc916">envval</a>, <a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <a class="code" href="../../dd/dd7/vm__dump_8c.html#a00c5c84d7769a956e3651998e92ae823">rb_vmdebug_env_dump_raw</a>(<a class="code" href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a>, proc-><a class="code" href="../../d5/d77/structrb__proc__t.html#acf80b0e350012548c28cba1ea64a7a6e">block</a>.<a class="code" href="../../da/dc0/structrb__block__struct.html#a834e1c9b35a06714deeb62097636564f">lfp</a>, proc-><a class="code" href="../../d5/d77/structrb__proc__t.html#acf80b0e350012548c28cba1ea64a7a6e">block</a>.<a class="code" href="../../da/dc0/structrb__block__struct.html#ac3696ee534a836d6ccc55cdeb2181ac5">dfp</a>);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#aaefbe89c8af3d369bde339711a6e8668"> 233</a></span> <a class="code" href="../../dd/dd7/vm__dump_8c.html#aaefbe89c8af3d369bde339711a6e8668">rb_vmdebug_stack_dump_th</a>(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> thval)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="../../d2/d66/structrb__thread__struct.html">rb_thread_t</a> *th;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#a36e942386b2b43383c44e769bffe5808">GetThreadPtr</a>(thval, th);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="../../dd/dd7/vm__dump_8c.html#a1dbfe98ae709e8806918bdd3121bf986">rb_vmdebug_stack_dump_raw</a>(th, th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a2ed7f694d58d876aa6f0fae6986bc921">cfp</a>);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span> }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="preprocessor">#if VMDEBUG > 2</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span> vm_stack_dump_each(<a class="code" href="../../d2/d66/structrb__thread__struct.html">rb_thread_t</a> *th, <a class="code" href="../../dd/d84/structrb__control__frame__t.html">rb_control_frame_t</a> *cfp)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordtype">int</span> <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> rstr;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *sp = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a29b331b150e5cae1e206cd87f892bad8">sp</a>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *lfp = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#af3314cb37c8a27353101bf6f35574946">lfp</a>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *dfp = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#ac1cafd093e114d3ec99ebeca0ffeb048">dfp</a>;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordtype">int</span> <a class="code" href="../../df/d77/ruby_8c.html#ad1447518f4372828b8435ae82e48499e">argc</a> = 0, local_size = 0;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="code" href="../../d6/de3/structrb__iseq__struct.html">rb_iseq_t</a> *iseq = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a4b25ca925a9f60481173632b9c09d4e0">iseq</a>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span> (iseq == 0) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keywordflow">if</span> (<a class="code" href="../../d8/d32/vm__core_8h.html#ae154762699bf1f722bdf05c22026d678">RUBYVM_CFUNC_FRAME_P</a>(cfp)) {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a> = <a class="code" href="../../d5/d11/ripper_8c.html#a877bc58c495643fcf49dc64c44631e72">rb_id2name</a>(cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#aa0ec76f80ebaf0668b688c4e4e5e3e3f">me</a>->original_id);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a> = <span class="stringliteral">"?"</span>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="../../d8/d32/vm__core_8h.html#aa933aeb7a703c7cc2d136492acbbef22">RUBY_VM_IFUNC_P</a>(iseq)) {</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a> = <span class="stringliteral">"<ifunc>"</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="../../df/d77/ruby_8c.html#ad1447518f4372828b8435ae82e48499e">argc</a> = iseq-><a class="code" href="../../d6/de3/structrb__iseq__struct.html#a5fd0acd110681eeb0f95c3b283451a0a">argc</a>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  local_size = iseq-><a class="code" href="../../d6/de3/structrb__iseq__struct.html#afbae994355f91f3ea547570debb757c0">local_size</a>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a> = <a class="code" href="../../d8/df4/generator_8h.html#aa0c7097c0d82c8372072fbab5a604e39">RSTRING_PTR</a>(iseq-><a class="code" href="../../d6/de3/structrb__iseq__struct.html#a35596da255ce28a5d1da94c2cc508c7d">name</a>);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="comment">/* stack trace header */</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span> (<a class="code" href="../../d8/d32/vm__core_8h.html#a423bad734fe427f4d5deeb4fe71fff65">VM_FRAME_TYPE</a>(cfp) == <a class="code" href="../../d8/d32/vm__core_8h.html#abc8be29d36c6252fce6bc61621f81b71">VM_FRAME_MAGIC_METHOD</a> ||</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#a423bad734fe427f4d5deeb4fe71fff65">VM_FRAME_TYPE</a>(cfp) == <a class="code" href="../../d8/d32/vm__core_8h.html#ac9390ef02c17a0bc7e3bd359264562c7">VM_FRAME_MAGIC_TOP</a> ||</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#a423bad734fe427f4d5deeb4fe71fff65">VM_FRAME_TYPE</a>(cfp) == <a class="code" href="../../d8/d32/vm__core_8h.html#a83eeedff3dde6d2d1ffce5d84c2ba2f1">VM_FRAME_MAGIC_BLOCK</a> ||</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#a423bad734fe427f4d5deeb4fe71fff65">VM_FRAME_TYPE</a>(cfp) == <a class="code" href="../../d8/d32/vm__core_8h.html#a2524f590c07fceb689b2b7d53114ff5f">VM_FRAME_MAGIC_CLASS</a> ||</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#a423bad734fe427f4d5deeb4fe71fff65">VM_FRAME_TYPE</a>(cfp) == <a class="code" href="../../d8/d32/vm__core_8h.html#ac1f5b7efa57bccbeb4ff5e7ae6ff18c2">VM_FRAME_MAGIC_PROC</a> ||</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#a423bad734fe427f4d5deeb4fe71fff65">VM_FRAME_TYPE</a>(cfp) == <a class="code" href="../../d8/d32/vm__core_8h.html#a57840803108748406429fb1cb3b10530">VM_FRAME_MAGIC_LAMBDA</a> ||</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#a423bad734fe427f4d5deeb4fe71fff65">VM_FRAME_TYPE</a>(cfp) == <a class="code" href="../../d8/d32/vm__core_8h.html#a26308f33317bb5b96ff89924822e8eab">VM_FRAME_MAGIC_CFUNC</a> ||</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#a423bad734fe427f4d5deeb4fe71fff65">VM_FRAME_TYPE</a>(cfp) == <a class="code" href="../../d8/d32/vm__core_8h.html#a795522d157a66fe8f0cdd335b28099c9">VM_FRAME_MAGIC_IFUNC</a> ||</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#a423bad734fe427f4d5deeb4fe71fff65">VM_FRAME_TYPE</a>(cfp) == <a class="code" href="../../d8/d32/vm__core_8h.html#ac7b8d797cce488d08572c273f49f28fe">VM_FRAME_MAGIC_EVAL</a>) {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *ptr = dfp - local_size;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  vm_stack_dump_each(th, cfp + 1);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="../../dd/dd7/vm__dump_8c.html#ac8e45243b47b9a4d73d977c62c3e6975">control_frame_dump</a>(th, cfp);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="keywordflow">if</span> (lfp != dfp) {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  local_size++;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  }</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">for</span> (<a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a> = 0; <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a> < <a class="code" href="../../df/d77/ruby_8c.html#ad1447518f4372828b8435ae82e48499e">argc</a>; <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>++) {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  rstr = <a class="code" href="../../db/d2e/intern_8h.html#acbb281bacf6b80f460143348e26142e9">rb_inspect</a>(*ptr);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  fprintf(stderr, <span class="stringliteral">" arg %2d: %8s (%p)\n"</span>, <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#afc32c1526ac6cb40ec33cad8782c0bae">StringValueCStr</a>(rstr),</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  (<span class="keywordtype">void</span> *)ptr++);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">for</span> (; <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a> < local_size - 1; <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>++) {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  rstr = <a class="code" href="../../db/d2e/intern_8h.html#acbb281bacf6b80f460143348e26142e9">rb_inspect</a>(*ptr);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  fprintf(stderr, <span class="stringliteral">" local %2d: %8s (%p)\n"</span>, <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#afc32c1526ac6cb40ec33cad8782c0bae">StringValueCStr</a>(rstr),</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  (<span class="keywordtype">void</span> *)ptr++);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  ptr = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a8e19fd7af779b623f1e9477f271358e6">bp</a>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">for</span> (; ptr < sp; ptr++, <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>++) {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">if</span> (*ptr == <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a2edf6990280eb2637623ccd421dee4f0">Qundef</a>) {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  rstr = <a class="code" href="../../db/d2e/intern_8h.html#ada1577ce4242b06ff5c1c52f37f5e679">rb_str_new2</a>(<span class="stringliteral">"undef"</span>);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  rstr = <a class="code" href="../../db/d2e/intern_8h.html#acbb281bacf6b80f460143348e26142e9">rb_inspect</a>(*ptr);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  fprintf(stderr, <span class="stringliteral">" stack %2d: %8s (%"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aca444ec27cdd86e8456e34dfc4aed830">PRIdPTRDIFF</a><span class="stringliteral">")\n"</span>, <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#afc32c1526ac6cb40ec33cad8782c0bae">StringValueCStr</a>(rstr),</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  (ptr - th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">stack</a>));</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="../../d8/d32/vm__core_8h.html#a423bad734fe427f4d5deeb4fe71fff65">VM_FRAME_TYPE</a>(cfp) == <a class="code" href="../../d8/d32/vm__core_8h.html#a885c6468caef6c3de80b0ad6c50ae38d">VM_FRAME_MAGIC_FINISH</a>) {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">if</span> ((th)->stack + (th)->stack_size > (<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *)(cfp + 2)) {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  vm_stack_dump_each(th, cfp + 1);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="comment">/* SDR(); */</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <a class="code" href="../../db/dcc/error_8c.html#a2d5fb28e54f792e7341b2c45f52f3860">rb_bug</a>(<span class="stringliteral">"unsupport frame type: %08lx"</span>, <a class="code" href="../../d8/d32/vm__core_8h.html#a423bad734fe427f4d5deeb4fe71fff65">VM_FRAME_TYPE</a>(cfp));</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  }</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#a066f88891bb609fc5d137b4347038f40"> 330</a></span> <a class="code" href="../../dd/dd7/vm__dump_8c.html#a066f88891bb609fc5d137b4347038f40">rb_vmdebug_debug_print_register</a>(<a class="code" href="../../d2/d66/structrb__thread__struct.html">rb_thread_t</a> *th)</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="../../dd/d84/structrb__control__frame__t.html">rb_control_frame_t</a> *cfp = th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a2ed7f694d58d876aa6f0fae6986bc921">cfp</a>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  ptrdiff_t pc = -1;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  ptrdiff_t lfp = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#af3314cb37c8a27353101bf6f35574946">lfp</a> - th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">stack</a>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  ptrdiff_t dfp = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#ac1cafd093e114d3ec99ebeca0ffeb048">dfp</a> - th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">stack</a>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  ptrdiff_t cfpi;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span> </div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">if</span> (<a class="code" href="../../d8/d32/vm__core_8h.html#a79d03ad9b9cf8b7a8ca2b849e495a74f">RUBY_VM_NORMAL_ISEQ_P</a>(cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a4b25ca925a9f60481173632b9c09d4e0">iseq</a>)) {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  pc = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a28b0b301811a891225ba9a58c412482d">pc</a> - cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a4b25ca925a9f60481173632b9c09d4e0">iseq</a>-><a class="code" href="../../d6/de3/structrb__iseq__struct.html#aa70f3e195a4350acbbc130f8a95c9958">iseq_encoded</a>;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">if</span> (lfp < 0 || (<span class="keywordtype">size_t</span>)lfp > th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a1587dec1a575fb9f8d6a689ef4fdb6b5">stack_size</a>)</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  lfp = -1;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">if</span> (dfp < 0 || (<span class="keywordtype">size_t</span>)dfp > th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a1587dec1a575fb9f8d6a689ef4fdb6b5">stack_size</a>)</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  dfp = -1;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  cfpi = ((<a class="code" href="../../dd/d84/structrb__control__frame__t.html">rb_control_frame_t</a> *)(th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">stack</a> + th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a1587dec1a575fb9f8d6a689ef4fdb6b5">stack_size</a>)) - cfp;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  fprintf(stderr, <span class="stringliteral">" [PC] %04"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aca444ec27cdd86e8456e34dfc4aed830">PRIdPTRDIFF</a><span class="stringliteral">", [SP] %04"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aca444ec27cdd86e8456e34dfc4aed830">PRIdPTRDIFF</a><span class="stringliteral">", [LFP] %04"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aca444ec27cdd86e8456e34dfc4aed830">PRIdPTRDIFF</a><span class="stringliteral">", [DFP] %04"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aca444ec27cdd86e8456e34dfc4aed830">PRIdPTRDIFF</a><span class="stringliteral">", [CFP] %04"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aca444ec27cdd86e8456e34dfc4aed830">PRIdPTRDIFF</a><span class="stringliteral">"\n"</span>,</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  pc, (cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a29b331b150e5cae1e206cd87f892bad8">sp</a> - th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">stack</a>), lfp, dfp, cfpi);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> }</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#a2dcc677a7d7e5b4bebbbcf6afe5955fd"> 353</a></span> <a class="code" href="../../dd/dd7/vm__dump_8c.html#a2dcc677a7d7e5b4bebbbcf6afe5955fd">rb_vmdebug_thread_dump_regs</a>(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> thval)</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <a class="code" href="../../d2/d66/structrb__thread__struct.html">rb_thread_t</a> *th;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#a36e942386b2b43383c44e769bffe5808">GetThreadPtr</a>(thval, th);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <a class="code" href="../../dd/dd7/vm__dump_8c.html#a066f88891bb609fc5d137b4347038f40">rb_vmdebug_debug_print_register</a>(th);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#ad61ad81b4e157971a62f262265a27160"> 361</a></span> <a class="code" href="../../dd/dd7/vm__dump_8c.html#ad61ad81b4e157971a62f262265a27160">rb_vmdebug_debug_print_pre</a>(<a class="code" href="../../d2/d66/structrb__thread__struct.html">rb_thread_t</a> *th, <a class="code" href="../../dd/d84/structrb__control__frame__t.html">rb_control_frame_t</a> *cfp)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span> {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <a class="code" href="../../d6/de3/structrb__iseq__struct.html">rb_iseq_t</a> *iseq = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a4b25ca925a9f60481173632b9c09d4e0">iseq</a>;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">if</span> (iseq != 0 && <a class="code" href="../../d8/d32/vm__core_8h.html#a423bad734fe427f4d5deeb4fe71fff65">VM_FRAME_TYPE</a>(cfp) != <a class="code" href="../../d8/d32/vm__core_8h.html#a885c6468caef6c3de80b0ad6c50ae38d">VM_FRAME_MAGIC_FINISH</a>) {</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> *seq = iseq-><a class="code" href="../../d6/de3/structrb__iseq__struct.html#a8699ab44e2c44e7f8df87e26a9c7bee8">iseq</a>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  ptrdiff_t pc = cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a28b0b301811a891225ba9a58c412482d">pc</a> - iseq-><a class="code" href="../../d6/de3/structrb__iseq__struct.html#aa70f3e195a4350acbbc130f8a95c9958">iseq_encoded</a>;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  printf(<span class="stringliteral">"%3"</span><a class="code" href="../../de/de6/ruby_2ruby_8h.html#aca444ec27cdd86e8456e34dfc4aed830">PRIdPTRDIFF</a><span class="stringliteral">" "</span>, <a class="code" href="../../dd/dd7/vm__dump_8c.html#acd3a62eaa8bfb2c0c2a59c2afa1179bb">VM_CFP_CNT</a>(th, cfp));</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">if</span> (pc >= 0) {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <a class="code" href="../../dd/d74/iseq_8c.html#a8af8d884c25dccb7380ce2c0e5ce1e1c">rb_iseq_disasm_insn</a>(0, seq, (<span class="keywordtype">size_t</span>)pc, iseq, 0);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  }</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> </div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="preprocessor">#if VMDEBUG > 3</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  fprintf(stderr, <span class="stringliteral">" (1)"</span>);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <a class="code" href="../../dd/dd7/vm__dump_8c.html#a066f88891bb609fc5d137b4347038f40">rb_vmdebug_debug_print_register</a>(th);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#a10140e7b70a08eb48ba3befe9485ac42"> 382</a></span> <a class="code" href="../../dd/dd7/vm__dump_8c.html#a10140e7b70a08eb48ba3befe9485ac42">rb_vmdebug_debug_print_post</a>(<a class="code" href="../../d2/d66/structrb__thread__struct.html">rb_thread_t</a> *th, <a class="code" href="../../dd/d84/structrb__control__frame__t.html">rb_control_frame_t</a> *cfp</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> #<span class="keywordflow">if</span> <a class="code" href="../../dc/d92/vm__opts_8h.html#ae1ded4471910adbc5bbe8e6566469341">OPT_STACK_CACHING</a></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  , <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> reg_a, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> reg_b</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> #endif</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  )</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span> {</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="preprocessor">#if VMDEBUG > 9</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#ab913ccb5c8b4c3065335169b15925411">SDR2</a>(cfp);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> </div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="preprocessor">#if VMDEBUG > 3</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  fprintf(stderr, <span class="stringliteral">" (2)"</span>);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <a class="code" href="../../dd/dd7/vm__dump_8c.html#a066f88891bb609fc5d137b4347038f40">rb_vmdebug_debug_print_register</a>(th);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="comment">/* stack_dump_raw(th, cfp); */</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> </div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="preprocessor">#if VMDEBUG > 2</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="comment">/* stack_dump_thobj(th); */</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  vm_stack_dump_each(th, th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a2ed7f694d58d876aa6f0fae6986bc921">cfp</a>);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="preprocessor">#if OPT_STACK_CACHING</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> rstr;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  rstr = <a class="code" href="../../db/d2e/intern_8h.html#acbb281bacf6b80f460143348e26142e9">rb_inspect</a>(reg_a);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  fprintf(stderr, <span class="stringliteral">" sc reg A: %s\n"</span>, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#afc32c1526ac6cb40ec33cad8782c0bae">StringValueCStr</a>(rstr));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  rstr = <a class="code" href="../../db/d2e/intern_8h.html#acbb281bacf6b80f460143348e26142e9">rb_inspect</a>(reg_b);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  fprintf(stderr, <span class="stringliteral">" sc reg B: %s\n"</span>, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#afc32c1526ac6cb40ec33cad8782c0bae">StringValueCStr</a>(rstr));</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  printf</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  (<span class="stringliteral">"--------------------------------------------------------------\n"</span>);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span> }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="preprocessor">#ifdef COLLECT_USAGE_ANALYSIS</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span> <span class="comment">/* uh = {</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <span class="comment"> * insn(Fixnum) => ihash(Hash)</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="comment"> * }</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="comment"> * ihash = {</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="comment"> * -1(Fixnum) => count, # insn usage</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="comment"> * 0(Fixnum) => ophash, # operand usage</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="comment"> * }</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="comment"> * ophash = {</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="comment"> * val(interned string) => count(Fixnum)</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="comment"> * }</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> <span class="comment"> */</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <a class="code" href="../../de/de9/vm_8c.html#aadc79f2891643166c13ed45e187396f2">vm_analysis_insn</a>(<span class="keywordtype">int</span> insn)</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span> {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#afa5b9137f051ac26d7ccc8824f178233">ID</a> usage_hash;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#afa5b9137f051ac26d7ccc8824f178233">ID</a> bigram_hash;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="keyword">static</span> <span class="keywordtype">int</span> prev_insn = -1;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> </div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> uh;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> ihash;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> <a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a>;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aa50b9d5bc665eb5545f6857c89232161">CONST_ID</a>(usage_hash, <span class="stringliteral">"USAGE_ANALYSIS_INSN"</span>);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aa50b9d5bc665eb5545f6857c89232161">CONST_ID</a>(bigram_hash, <span class="stringliteral">"USAGE_ANALYSIS_INSN_BIGRAM"</span>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  uh = <a class="code" href="../../db/d2e/intern_8h.html#a17a81c1a7d754e5ab49fc4b4369b6c8c">rb_const_get</a>(<a class="code" href="../../de/de9/vm_8c.html#a600dc9ffdba414e21dacfe809c4a9ec8">rb_cRubyVM</a>, usage_hash);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">if</span> ((ihash = <a class="code" href="../../d1/d04/hash_8c.html#ab7063832c7ed02351e87922a78e35c32">rb_hash_aref</a>(uh, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(insn))) == <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aba03c3c4ff187bbda6c4459e2dc9f6c6">Qnil</a>) {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  ihash = <a class="code" href="../../d1/d04/hash_8c.html#af1da586524a3a1739fd5b91272037815">rb_hash_new</a>();</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="../../d1/d04/hash_8c.html#ac477edf136d86a33bc06d1fbea67bb9a">rb_hash_aset</a>(uh, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(insn), ihash);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">if</span> ((<a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a> = <a class="code" href="../../d1/d04/hash_8c.html#ab7063832c7ed02351e87922a78e35c32">rb_hash_aref</a>(ihash, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(-1))) == <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aba03c3c4ff187bbda6c4459e2dc9f6c6">Qnil</a>) {</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a> = <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(0);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <a class="code" href="../../d1/d04/hash_8c.html#ac477edf136d86a33bc06d1fbea67bb9a">rb_hash_aset</a>(ihash, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(-1), <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a9444c431b3cb1184e7523fc572f2c758">FIX2INT</a>(<a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a>) + 1));</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span> </div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">/* calc bigram */</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">if</span> (prev_insn != -1) {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> bi;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> ary[2];</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> <a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a>;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  ary[0] = <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(prev_insn);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  ary[1] = <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(insn);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  bi = <a class="code" href="../../dc/dcc/array_8c.html#a575a99eebf6ce65893ed83c2b6783d2d">rb_ary_new4</a>(2, &ary[0]);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span> </div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  uh = <a class="code" href="../../db/d2e/intern_8h.html#a17a81c1a7d754e5ab49fc4b4369b6c8c">rb_const_get</a>(<a class="code" href="../../de/de9/vm_8c.html#a600dc9ffdba414e21dacfe809c4a9ec8">rb_cRubyVM</a>, bigram_hash);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="keywordflow">if</span> ((<a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a> = <a class="code" href="../../d1/d04/hash_8c.html#ab7063832c7ed02351e87922a78e35c32">rb_hash_aref</a>(uh, bi)) == <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aba03c3c4ff187bbda6c4459e2dc9f6c6">Qnil</a>) {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a> = <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(0);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <a class="code" href="../../d1/d04/hash_8c.html#ac477edf136d86a33bc06d1fbea67bb9a">rb_hash_aset</a>(uh, bi, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a9444c431b3cb1184e7523fc572f2c758">FIX2INT</a>(<a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a>) + 1));</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  prev_insn = insn;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span> }</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="comment">/* from disasm.c */</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="keyword">extern</span> <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> <a class="code" href="../../dd/d74/iseq_8c.html#af94502bbd024003d18377cfb27b2045f">insn_operand_intern</a>(<span class="keywordtype">int</span> insn, <span class="keywordtype">int</span> op_no, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> op,</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordtype">int</span> <a class="code" href="../../d3/d15/name2ctype_8h.html#aed1cc4dca5d94cb452f79691f54f7423">len</a>, <span class="keywordtype">int</span> pos, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> child);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span> </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <a class="code" href="../../de/de9/vm_8c.html#a70b2fd040eae21f04d68a7a6f7ee1a05">vm_analysis_operand</a>(<span class="keywordtype">int</span> insn, <span class="keywordtype">int</span> n, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> op)</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span> {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#afa5b9137f051ac26d7ccc8824f178233">ID</a> usage_hash;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span> </div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> uh;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> ihash;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> ophash;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> valstr;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> <a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span> </div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aa50b9d5bc665eb5545f6857c89232161">CONST_ID</a>(usage_hash, <span class="stringliteral">"USAGE_ANALYSIS_INSN"</span>);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  uh = <a class="code" href="../../db/d2e/intern_8h.html#a17a81c1a7d754e5ab49fc4b4369b6c8c">rb_const_get</a>(<a class="code" href="../../de/de9/vm_8c.html#a600dc9ffdba414e21dacfe809c4a9ec8">rb_cRubyVM</a>, usage_hash);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">if</span> ((ihash = <a class="code" href="../../d1/d04/hash_8c.html#ab7063832c7ed02351e87922a78e35c32">rb_hash_aref</a>(uh, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(insn))) == <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aba03c3c4ff187bbda6c4459e2dc9f6c6">Qnil</a>) {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  ihash = <a class="code" href="../../d1/d04/hash_8c.html#af1da586524a3a1739fd5b91272037815">rb_hash_new</a>();</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="../../d1/d04/hash_8c.html#ac477edf136d86a33bc06d1fbea67bb9a">rb_hash_aset</a>(uh, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(insn), ihash);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">if</span> ((ophash = <a class="code" href="../../d1/d04/hash_8c.html#ab7063832c7ed02351e87922a78e35c32">rb_hash_aref</a>(ihash, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(n))) == <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aba03c3c4ff187bbda6c4459e2dc9f6c6">Qnil</a>) {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  ophash = <a class="code" href="../../d1/d04/hash_8c.html#af1da586524a3a1739fd5b91272037815">rb_hash_new</a>();</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <a class="code" href="../../d1/d04/hash_8c.html#ac477edf136d86a33bc06d1fbea67bb9a">rb_hash_aset</a>(ihash, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(n), ophash);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="comment">/* intern */</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  valstr = <a class="code" href="../../dd/d74/iseq_8c.html#af94502bbd024003d18377cfb27b2045f">insn_operand_intern</a>(insn, n, op, 0, 0, 0);</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="comment">/* set count */</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordflow">if</span> ((<a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a> = <a class="code" href="../../d1/d04/hash_8c.html#ab7063832c7ed02351e87922a78e35c32">rb_hash_aref</a>(ophash, valstr)) == <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aba03c3c4ff187bbda6c4459e2dc9f6c6">Qnil</a>) {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a> = <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(0);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <a class="code" href="../../d1/d04/hash_8c.html#ac477edf136d86a33bc06d1fbea67bb9a">rb_hash_aset</a>(ophash, valstr, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a9444c431b3cb1184e7523fc572f2c758">FIX2INT</a>(<a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a>) + 1));</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span> }</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <a class="code" href="../../de/de9/vm_8c.html#a22af4689a1b73006b14a25502191cde5">vm_analysis_register</a>(<span class="keywordtype">int</span> reg, <span class="keywordtype">int</span> isset)</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span> {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#afa5b9137f051ac26d7ccc8824f178233">ID</a> usage_hash;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> uh;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> rhash;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> valstr;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> regstrs[][5] = {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="stringliteral">"pc"</span>, <span class="comment">/* 0 */</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="stringliteral">"sp"</span>, <span class="comment">/* 1 */</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="stringliteral">"cfp"</span>, <span class="comment">/* 2 */</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="stringliteral">"lfp"</span>, <span class="comment">/* 3 */</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="stringliteral">"dfp"</span>, <span class="comment">/* 4 */</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="stringliteral">"self"</span>, <span class="comment">/* 5 */</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="stringliteral">"iseq"</span>, <span class="comment">/* 6 */</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  };</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> getsetstr[][4] = {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="stringliteral">"get"</span>,</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="stringliteral">"set"</span>,</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  };</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="keyword">static</span> <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> syms[<span class="keyword">sizeof</span>(regstrs) / <span class="keyword">sizeof</span>(regstrs[0])][2];</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span> </div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> <a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a>;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span> </div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aa50b9d5bc665eb5545f6857c89232161">CONST_ID</a>(usage_hash, <span class="stringliteral">"USAGE_ANALYSIS_REGS"</span>);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">if</span> (syms[0] == 0) {</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordtype">char</span> buff[0x10];</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordtype">int</span> <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span> </div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">for</span> (<a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a> = 0; <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a> < <span class="keyword">sizeof</span>(regstrs) / <span class="keyword">sizeof</span>(regstrs[0]); <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>++) {</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordtype">int</span> j;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">for</span> (j = 0; j < 2; j++) {</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  snfprintf(stderr, buff, 0x10, <span class="stringliteral">"%d %s %-4s"</span>, <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>, getsetstr[j],</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  regstrs[<a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>]);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  syms[<a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>][j] = <a class="code" href="../../dc/d0c/cparse_8c.html#a48bfb6519a45249fb2ec0193ea3b6e1c">ID2SYM</a>(<a class="code" href="../../dc/dcc/array_8c.html#a9cfa42d4b79c89d68c53be8b2150a503">rb_intern</a>(buff));</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  }</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  valstr = syms[reg][isset];</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span> </div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  uh = <a class="code" href="../../db/d2e/intern_8h.html#a17a81c1a7d754e5ab49fc4b4369b6c8c">rb_const_get</a>(<a class="code" href="../../de/de9/vm_8c.html#a600dc9ffdba414e21dacfe809c4a9ec8">rb_cRubyVM</a>, usage_hash);</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">if</span> ((<a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a> = <a class="code" href="../../d1/d04/hash_8c.html#ab7063832c7ed02351e87922a78e35c32">rb_hash_aref</a>(uh, valstr)) == <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aba03c3c4ff187bbda6c4459e2dc9f6c6">Qnil</a>) {</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a> = <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(0);</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  }</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <a class="code" href="../../d1/d04/hash_8c.html#ac477edf136d86a33bc06d1fbea67bb9a">rb_hash_aset</a>(uh, valstr, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a>(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a9444c431b3cb1184e7523fc572f2c758">FIX2INT</a>(<a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a>) + 1));</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span> }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span> </div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span> </div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span> <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a></div><div class="line"><a name="l00556"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#a4829e1bba567279a3c7df1a8e0056c65"> 556</a></span> <a class="code" href="../../dd/dd7/vm__dump_8c.html#a4829e1bba567279a3c7df1a8e0056c65">rb_vmdebug_thread_dump_state</a>(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> <span class="keyword">self</span>)</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span> {</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <a class="code" href="../../d2/d66/structrb__thread__struct.html">rb_thread_t</a> *th;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  <a class="code" href="../../dd/d84/structrb__control__frame__t.html">rb_control_frame_t</a> *cfp;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#a36e942386b2b43383c44e769bffe5808">GetThreadPtr</a>(<span class="keyword">self</span>, th);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  cfp = th-><a class="code" href="../../d2/d66/structrb__thread__struct.html#a2ed7f694d58d876aa6f0fae6986bc921">cfp</a>;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span> </div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  fprintf(stderr, <span class="stringliteral">"Thread state dump:\n"</span>);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  fprintf(stderr, <span class="stringliteral">"pc : %p, sp : %p\n"</span>, (<span class="keywordtype">void</span> *)cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a28b0b301811a891225ba9a58c412482d">pc</a>, (<span class="keywordtype">void</span> *)cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#a29b331b150e5cae1e206cd87f892bad8">sp</a>);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  fprintf(stderr, <span class="stringliteral">"cfp: %p, lfp: %p, dfp: %p\n"</span>, (<span class="keywordtype">void</span> *)cfp, (<span class="keywordtype">void</span> *)cfp-><a class="code" href="../../dd/d84/structrb__control__frame__t.html#af3314cb37c8a27353101bf6f35574946">lfp</a>, (<span class="keywordtype">void</span> *)cfp->dfp);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">return</span> <a class="code" href="../../de/de6/ruby_2ruby_8h.html#aba03c3c4ff187bbda6c4459e2dc9f6c6">Qnil</a>;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span> }</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span> </div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span> <span class="keyword">static</span> <span class="keywordtype">int</span></div><div class="line"><a name="l00571"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#ae5165393259e08cff52a6c3d66619217"> 571</a></span> <a class="code" href="../../dd/dd7/vm__dump_8c.html#ae5165393259e08cff52a6c3d66619217">bugreport_backtrace</a>(<span class="keywordtype">void</span> *arg, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> file, <span class="keywordtype">int</span> line, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a> <a class="code" href="../../d7/d2a/structiseq__inline__cache__entry.html#afe485ee1e6c1127a5512d3ec8c43d6a6">method</a>)</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span> {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *filename = <a class="code" href="../../de/de6/ruby_2ruby_8h.html#a4832bad8845a35fc50f7a160901854a1">NIL_P</a>(file) ? <span class="stringliteral">"ruby"</span> : <a class="code" href="../../d8/df4/generator_8h.html#aa0c7097c0d82c8372072fbab5a604e39">RSTRING_PTR</a>(file);</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">if</span> (!*(<span class="keywordtype">int</span> *)arg) {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  fprintf(stderr, <span class="stringliteral">"-- Ruby level backtrace information "</span></div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="stringliteral">"----------------------------------------\n"</span>);</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  *(<span class="keywordtype">int</span> *)arg = 1;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="keywordflow">if</span> (<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a4832bad8845a35fc50f7a160901854a1">NIL_P</a>(<a class="code" href="../../d7/d2a/structiseq__inline__cache__entry.html#afe485ee1e6c1127a5512d3ec8c43d6a6">method</a>)) {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  fprintf(stderr, <span class="stringliteral">"%s:%d:in unknown method\n"</span>, filename, line);</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keywordflow">else</span> {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  fprintf(stderr, <span class="stringliteral">"%s:%d:in `%s'\n"</span>, filename, line, <a class="code" href="../../d8/df4/generator_8h.html#aa0c7097c0d82c8372072fbab5a604e39">RSTRING_PTR</a>(<a class="code" href="../../d7/d2a/structiseq__inline__cache__entry.html#afe485ee1e6c1127a5512d3ec8c43d6a6">method</a>));</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span> }</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span> </div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <span class="preprocessor">#if defined(__FreeBSD__) && defined(__OPTIMIZE__)</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="preprocessor">#undef HAVE_BACKTRACE</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> <span class="preprocessor">#if HAVE_BACKTRACE</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span> <span class="preprocessor"># include <execinfo.h></span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="preprocessor">#elif defined(_WIN32)</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span> <span class="preprocessor"># include <imagehlp.h></span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span> <span class="preprocessor"># ifndef SYMOPT_DEBUG</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span> <span class="preprocessor"># define SYMOPT_DEBUG 0x80000000</span></div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="preprocessor"># ifndef MAX_SYM_NAME</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span> <span class="preprocessor"># define MAX_SYM_NAME 2000</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  DWORD64 Offset;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  WORD Segment;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  ADDRESS_MODE Mode;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span> } ADDRESS64;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  DWORD64 Thread;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a> ThCallbackStack;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a> ThCallbackBStore;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a> NextCallback;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a> FramePointer;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  DWORD64 KiCallUserMode;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  DWORD64 KeUserCallbackDispatcher;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  DWORD64 SystemRangeStart;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  DWORD64 KiUserExceptionDispatcher;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  DWORD64 StackBase;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  DWORD64 StackLimit;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  DWORD64 Reserved[5];</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span> } KDHELP64;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  ADDRESS64 AddrPC;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  ADDRESS64 AddrReturn;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  ADDRESS64 AddrFrame;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  ADDRESS64 AddrStack;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  ADDRESS64 AddrBStore;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordtype">void</span> *FuncTableEntry;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  DWORD64 Params[4];</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  BOOL Far;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  BOOL Virtual;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  DWORD64 Reserved[3];</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  KDHELP64 KdHelp;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span> } STACKFRAME64;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#a516d92a41f815ad3c448380a9aa3e4d0">ULONG</a> SizeOfStruct;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#a516d92a41f815ad3c448380a9aa3e4d0">ULONG</a> TypeIndex;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  ULONG64 Reserved[2];</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#a516d92a41f815ad3c448380a9aa3e4d0">ULONG</a> Index;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#a516d92a41f815ad3c448380a9aa3e4d0">ULONG</a> Size;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  ULONG64 ModBase;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#a516d92a41f815ad3c448380a9aa3e4d0">ULONG</a> Flags;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  ULONG64 Value;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  ULONG64 Address;</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#a516d92a41f815ad3c448380a9aa3e4d0">ULONG</a> Register;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#a516d92a41f815ad3c448380a9aa3e4d0">ULONG</a> Scope;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#a516d92a41f815ad3c448380a9aa3e4d0">ULONG</a> Tag;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#a516d92a41f815ad3c448380a9aa3e4d0">ULONG</a> NameLen;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#a516d92a41f815ad3c448380a9aa3e4d0">ULONG</a> MaxNameLen;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordtype">char</span> Name[1];</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span> } SYMBOL_INFO;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a> SizeOfStruct;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  <span class="keywordtype">void</span> *Key;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a> LineNumber;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keywordtype">char</span> *FileName;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  DWORD64 Address;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span> } IMAGEHLP_LINE64;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="keyword">typedef</span> <span class="keywordtype">void</span> *PREAD_PROCESS_MEMORY_ROUTINE64;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="keyword">typedef</span> <span class="keywordtype">void</span> *PFUNCTION_TABLE_ACCESS_ROUTINE64;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="keyword">typedef</span> <span class="keywordtype">void</span> *PGET_MODULE_BASE_ROUTINE64;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> <span class="keyword">typedef</span> <span class="keywordtype">void</span> *PTRANSLATE_ADDRESS_ROUTINE64;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="preprocessor"># endif</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span> </div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> <span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> dump_thread(<span class="keywordtype">void</span> *arg)</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span> {</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  HANDLE dbghelp;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  BOOL (WINAPI *pSymInitialize)(HANDLE, <span class="keyword">const</span> <span class="keywordtype">char</span> *, BOOL);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  BOOL (WINAPI *pSymCleanup)(HANDLE);</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  BOOL (WINAPI *pStackWalk64)(<a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a>, HANDLE, HANDLE, STACKFRAME64 *, <span class="keywordtype">void</span> *, PREAD_PROCESS_MEMORY_ROUTINE64, PFUNCTION_TABLE_ACCESS_ROUTINE64, PGET_MODULE_BASE_ROUTINE64, PTRANSLATE_ADDRESS_ROUTINE64);</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  DWORD64 (WINAPI *pSymGetModuleBase64)(HANDLE, DWORD64);</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  BOOL (WINAPI *pSymFromAddr)(HANDLE, DWORD64, DWORD64 *, SYMBOL_INFO *);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  BOOL (WINAPI *pSymGetLineFromAddr64)(HANDLE, DWORD64, <a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a> *, IMAGEHLP_LINE64 *);</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  HANDLE (WINAPI *pOpenThread)(<a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a>, BOOL, <a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a>);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a> tid = *(<a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a> *)arg;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  HANDLE ph;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  HANDLE th;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span> </div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  dbghelp = LoadLibrary(<span class="stringliteral">"dbghelp.dll"</span>);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordflow">if</span> (!dbghelp) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  pSymInitialize = (BOOL (WINAPI *)(HANDLE, <span class="keyword">const</span> <span class="keywordtype">char</span> *, BOOL))GetProcAddress(dbghelp, <span class="stringliteral">"SymInitialize"</span>);</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  pSymCleanup = (BOOL (WINAPI *)(HANDLE))GetProcAddress(dbghelp, <span class="stringliteral">"SymCleanup"</span>);</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  pStackWalk64 = (BOOL (WINAPI *)(<a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a>, HANDLE, HANDLE, STACKFRAME64 *, <span class="keywordtype">void</span> *, PREAD_PROCESS_MEMORY_ROUTINE64, PFUNCTION_TABLE_ACCESS_ROUTINE64, PGET_MODULE_BASE_ROUTINE64, PTRANSLATE_ADDRESS_ROUTINE64))GetProcAddress(dbghelp, <span class="stringliteral">"StackWalk64"</span>);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  pSymGetModuleBase64 = (DWORD64 (WINAPI *)(HANDLE, DWORD64))GetProcAddress(dbghelp, <span class="stringliteral">"SymGetModuleBase64"</span>);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  pSymFromAddr = (BOOL (WINAPI *)(HANDLE, DWORD64, DWORD64 *, SYMBOL_INFO *))GetProcAddress(dbghelp, <span class="stringliteral">"SymFromAddr"</span>);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  pSymGetLineFromAddr64 = (BOOL (WINAPI *)(HANDLE, DWORD64, <a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a> *, IMAGEHLP_LINE64 *))GetProcAddress(dbghelp, <span class="stringliteral">"SymGetLineFromAddr64"</span>);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  pOpenThread = (HANDLE (WINAPI *)(<a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a>, BOOL, <a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a>))GetProcAddress(GetModuleHandle(<span class="stringliteral">"kernel32.dll"</span>), <span class="stringliteral">"OpenThread"</span>);</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keywordflow">if</span> (pSymInitialize && pSymCleanup && pStackWalk64 && pSymGetModuleBase64 &&</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  pSymFromAddr && pSymGetLineFromAddr64 && pOpenThread) {</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  SymSetOptions(SYMOPT_UNDNAME | SYMOPT_DEFERRED_LOADS | SYMOPT_DEBUG | SYMOPT_LOAD_LINES);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  ph = GetCurrentProcess();</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  pSymInitialize(ph, <a class="code" href="../../d4/db0/__sdbm_8c.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="code" href="../../d1/d5c/nkf_8h.html#aa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>);</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  th = pOpenThread(THREAD_SUSPEND_RESUME|THREAD_GET_CONTEXT, <a class="code" href="../../d1/d5c/nkf_8h.html#aa93f0eb578d23995850d61f7d61c55c1">FALSE</a>, tid);</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordflow">if</span> (th) {</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordflow">if</span> (SuspendThread(th) != (<a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a>)-1) {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  CONTEXT context;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  memset(&context, 0, <span class="keyword">sizeof</span>(context));</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  context.ContextFlags = CONTEXT_FULL;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keywordflow">if</span> (GetThreadContext(th, &context)) {</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="keywordtype">char</span> libpath[MAX_PATH];</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keywordtype">char</span> <a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#ac37f17a60c8b5533aac4840c681f62b8">buf</a>[<span class="keyword">sizeof</span>(SYMBOL_INFO) + MAX_SYM_NAME];</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  SYMBOL_INFO *info = (SYMBOL_INFO *)<a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#ac37f17a60c8b5533aac4840c681f62b8">buf</a>;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a> mac;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  STACKFRAME64 frame;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  memset(&frame, 0, <span class="keyword">sizeof</span>(frame));</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span> <span class="preprocessor">#if defined(_M_AMD64) || defined(__x86_64__)</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  mac = IMAGE_FILE_MACHINE_AMD64;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  frame.AddrPC.Mode = AddrModeFlat;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  frame.AddrPC.Offset = context.Rip;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  frame.AddrFrame.Mode = AddrModeFlat;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  frame.AddrFrame.Offset = context.Rbp;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  frame.AddrStack.Mode = AddrModeFlat;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  frame.AddrStack.Offset = context.Rsp;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span> <span class="preprocessor">#elif defined(_M_IA64) || defined(__ia64__)</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  mac = IMAGE_FILE_MACHINE_IA64;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  frame.AddrPC.Mode = AddrModeFlat;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  frame.AddrPC.Offset = context.StIIP;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  frame.AddrBStore.Mode = AddrModeFlat;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  frame.AddrBStore.Offset = context.RsBSP;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  frame.AddrStack.Mode = AddrModeFlat;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  frame.AddrStack.Offset = context.IntSp;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span> <span class="preprocessor">#else </span><span class="comment">/* i386 */</span><span class="preprocessor"></span></div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  mac = IMAGE_FILE_MACHINE_I386;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  frame.AddrPC.Mode = AddrModeFlat;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  frame.AddrPC.Offset = context.Eip;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  frame.AddrFrame.Mode = AddrModeFlat;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  frame.AddrFrame.Offset = context.Ebp;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  frame.AddrStack.Mode = AddrModeFlat;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  frame.AddrStack.Offset = context.Esp;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span> </div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <span class="keywordflow">while</span> (pStackWalk64(mac, ph, th, &frame, &context, <a class="code" href="../../d4/db0/__sdbm_8c.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>,</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <a class="code" href="../../d4/db0/__sdbm_8c.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="code" href="../../d4/db0/__sdbm_8c.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>, <a class="code" href="../../d4/db0/__sdbm_8c.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)) {</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  DWORD64 addr = frame.AddrPC.Offset;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  IMAGEHLP_LINE64 line;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  DWORD64 displacement;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a> tmp;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span> </div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="keywordflow">if</span> (addr == frame.AddrReturn.Offset || addr == 0 ||</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  frame.AddrReturn.Offset == 0)</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span> </div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  memset(<a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#ac37f17a60c8b5533aac4840c681f62b8">buf</a>, 0, <span class="keyword">sizeof</span>(<a class="code" href="../../d6/da0/nkf-utf8_2nkf_8c.html#ac37f17a60c8b5533aac4840c681f62b8">buf</a>));</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  info->SizeOfStruct = <span class="keyword">sizeof</span>(SYMBOL_INFO);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  info->MaxNameLen = MAX_SYM_NAME;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">if</span> (pSymFromAddr(ph, addr, &displacement, info)) {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  <span class="keywordflow">if</span> (GetModuleFileName((HANDLE)(<a class="code" href="../../dc/db1/win32_8h.html#a728e973c799f206f0151c8a3bd1e5699">uintptr_t</a>)pSymGetModuleBase64(ph, addr), libpath, <span class="keyword">sizeof</span>(libpath)))</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  fprintf(stderr, <span class="stringliteral">"%s"</span>, libpath);</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  fprintf(stderr, <span class="stringliteral">"(%s+0x%I64x)"</span>,</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  info->Name, displacement);</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  }</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  fprintf(stderr, <span class="stringliteral">" [0x%p]"</span>, (<span class="keywordtype">void</span> *)(<a class="code" href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a>)addr);</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  memset(&line, 0, <span class="keyword">sizeof</span>(line));</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  line.SizeOfStruct = <span class="keyword">sizeof</span>(line);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">if</span> (pSymGetLineFromAddr64(ph, addr, &tmp, &line))</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  fprintf(stderr, <span class="stringliteral">" %s:%lu"</span>, line.FileName, line.LineNumber);</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  fprintf(stderr, <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  }</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  }</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span> </div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  ResumeThread(th);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  CloseHandle(th);</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  }</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  pSymCleanup(ph);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  }</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  FreeLibrary(dbghelp);</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span> }</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> </div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <span class="keywordtype">void</span></div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="../../dd/dd7/vm__dump_8c.html#af1b67bbf4b72295a772178d0bd939dd0"> 770</a></span> <a class="code" href="../../dd/dd7/vm__dump_8c.html#af1b67bbf4b72295a772178d0bd939dd0">rb_vm_bugreport</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span> {</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <a class="code" href="../../db/d74/structrb__vm__struct.html">rb_vm_t</a> *vm = <a class="code" href="../../d8/d32/vm__core_8h.html#a6cfcd3997994924c8cd13c3b5c099ec6">GET_VM</a>();</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordflow">if</span> (vm) {</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  <span class="keywordtype">int</span> <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a> = 0;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <a class="code" href="../../d8/d32/vm__core_8h.html#ac33c371d81972685538097cb4f49181f">SDR</a>();</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span> </div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="keywordflow">if</span> (<a class="code" href="../../d8/d32/vm__core_8h.html#a53d4377e7685dd916255009372937561">rb_backtrace_each</a>(<a class="code" href="../../dd/dd7/vm__dump_8c.html#ae5165393259e08cff52a6c3d66619217">bugreport_backtrace</a>, &<a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>)) {</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  fputs(<span class="stringliteral">"\n"</span>, stderr);</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  }</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  }</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span> </div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span> <span class="preprocessor">#if HAVE_BACKTRACE || defined(_WIN32)</span></div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  fprintf(stderr, <span class="stringliteral">"-- C level backtrace information "</span></div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="stringliteral">"-------------------------------------------\n"</span>);</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span> </div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  {</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span> <span class="preprocessor">#if defined __MACH__ && defined __APPLE__</span></div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  fprintf(stderr, <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  fprintf(stderr, <span class="stringliteral">" See Crash Report log file under "</span></div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="stringliteral">"~/Library/Logs/CrashReporter or\n"</span>);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  fprintf(stderr, <span class="stringliteral">" /Library/Logs/CrashReporter, for "</span></div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="stringliteral">"the more detail of.\n"</span>);</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span> <span class="preprocessor">#elif HAVE_BACKTRACE</span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="preprocessor">#define MAX_NATIVE_TRACE 1024</span></div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> *trace[MAX_NATIVE_TRACE];</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordtype">int</span> n = backtrace(trace, MAX_NATIVE_TRACE);</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordtype">char</span> **syms = backtrace_symbols(trace, n);</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span> </div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <span class="keywordflow">if</span> (syms) {</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <span class="preprocessor">#ifdef USE_ELF</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  rb_dump_backtrace_with_lines(n, trace, syms);</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span> <span class="preprocessor">#else</span></div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="keywordtype">int</span> <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordflow">for</span> (<a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>=0; <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a><n; <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>++) {</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  fprintf(stderr, <span class="stringliteral">"%s\n"</span>, syms[<a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>]);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  }</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#a18100522f0b19b5e9b9875f5737a9386">free</a>(syms);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  }</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span> <span class="preprocessor">#elif defined(_WIN32)</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <a class="code" href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a> tid = GetCurrentThreadId();</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  HANDLE th = (HANDLE)_beginthread(dump_thread, 0, &tid);</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keywordflow">if</span> (th != (HANDLE)-1)</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  WaitForSingleObject(th, INFINITE);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  }</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> </div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  fprintf(stderr, <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span> <span class="preprocessor">#endif </span><span class="comment">/* HAVE_BACKTRACE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span> </div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  fprintf(stderr, <span class="stringliteral">"-- Other runtime information "</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="stringliteral">"-----------------------------------------------\n\n"</span>);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  {</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordtype">int</span> <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span> </div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  fprintf(stderr, <span class="stringliteral">"* Loaded script: %s\n"</span>, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#afc32c1526ac6cb40ec33cad8782c0bae">StringValueCStr</a>(vm-><a class="code" href="../../db/d74/structrb__vm__struct.html#a0fabbe8c44aac34d9538388955e2b461">progname</a>));</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  fprintf(stderr, <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  fprintf(stderr, <span class="stringliteral">"* Loaded features:\n\n"</span>);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">for</span> (<a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>=0; <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a><<a class="code" href="../../d8/df4/generator_8h.html#ae988773ed219452578f881fc7189c486">RARRAY_LEN</a>(vm-><a class="code" href="../../db/d74/structrb__vm__struct.html#adc9a2f20cba11e9a872bbe603b7db593">loaded_features</a>); <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>++) {</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  fprintf(stderr, <span class="stringliteral">" %4d %s\n"</span>, <a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>, <a class="code" href="../../de/de6/ruby_2ruby_8h.html#afc32c1526ac6cb40ec33cad8782c0bae">StringValueCStr</a>(<a class="code" href="../../d8/df4/generator_8h.html#abb794fe2d7c73eea87e7ba2273939a8e">RARRAY_PTR</a>(vm-><a class="code" href="../../db/d74/structrb__vm__struct.html#adc9a2f20cba11e9a872bbe603b7db593">loaded_features</a>)[<a class="code" href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a>]));</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  fprintf(stderr, <span class="stringliteral">"\n"</span>);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> </div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span> <span class="preprocessor">#if __linux__</span></div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  {</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <a class="code" href="../../db/ddf/struct____s_f_i_l_e.html">FILE</a> *fp = fopen(<span class="stringliteral">"/proc/self/maps"</span>, <span class="stringliteral">"r"</span>);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="keywordflow">if</span> (fp) {</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  fprintf(stderr, <span class="stringliteral">"* Process memory map:\n\n"</span>);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span> </div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">while</span> (!<a class="code" href="../../da/d50/vsnprintf_8c.html#ac752882e678e3368676e57e5eb4b9d86">feof</a>(fp)) {</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <span class="keywordtype">char</span> buff[0x100];</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <span class="keywordtype">size_t</span> rn = fread(buff, 1, 0x100, fp);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  fwrite(buff, 1, rn, stderr);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  }</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span> </div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  fclose(fp);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  fprintf(stderr, <span class="stringliteral">"\n\n"</span>);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  }</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span> <span class="preprocessor">#endif </span><span class="comment">/* __linux__ */</span><span class="preprocessor"></span></div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  }</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> }</div><div class="ttc" id="structrb__thread__struct_html_a2ed7f694d58d876aa6f0fae6986bc921"><div class="ttname"><a href="../../d2/d66/structrb__thread__struct.html#a2ed7f694d58d876aa6f0fae6986bc921">rb_thread_struct::cfp</a></div><div class="ttdeci">rb_control_frame_t * cfp</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00400">vm_core.h:400</a></div></div>
<div class="ttc" id="vm__core_8h_html_a83eeedff3dde6d2d1ffce5d84c2ba2f1"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#a83eeedff3dde6d2d1ffce5d84c2ba2f1">VM_FRAME_MAGIC_BLOCK</a></div><div class="ttdeci">#define VM_FRAME_MAGIC_BLOCK</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00573">vm_core.h:573</a></div></div>
<div class="ttc" id="iseq_8c_html_a8af8d884c25dccb7380ce2c0e5ce1e1c"><div class="ttname"><a href="../../dd/d74/iseq_8c.html#a8af8d884c25dccb7380ce2c0e5ce1e1c">rb_iseq_disasm_insn</a></div><div class="ttdeci">int rb_iseq_disasm_insn(VALUE ret, VALUE *iseq, size_t pos, rb_iseq_t *iseqdat, VALUE child)</div><div class="ttdoc">Disassemble a instruction Iseq -> Iseq inspect object. </div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d74/iseq_8c_source.html#l00849">iseq.c:849</a></div></div>
<div class="ttc" id="structrb__control__frame__t_html_a2b5202626f8eab242cb282e928a19420"><div class="ttname"><a href="../../dd/d84/structrb__control__frame__t.html#a2b5202626f8eab242cb282e928a19420">rb_control_frame_t::block_iseq</a></div><div class="ttdeci">rb_iseq_t * block_iseq</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00341">vm_core.h:341</a></div></div>
<div class="ttc" id="array_8c_html_a575a99eebf6ce65893ed83c2b6783d2d"><div class="ttname"><a href="../../dc/dcc/array_8c.html#a575a99eebf6ce65893ed83c2b6783d2d">rb_ary_new4</a></div><div class="ttdeci">VALUE rb_ary_new4(long n, const VALUE *elts)</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dcc/array_8c_source.html#l00366">array.c:366</a></div></div>
<div class="ttc" id="error_8c_html_a2d5fb28e54f792e7341b2c45f52f3860"><div class="ttname"><a href="../../db/dcc/error_8c.html#a2d5fb28e54f792e7341b2c45f52f3860">rb_bug</a></div><div class="ttdeci">void rb_bug(const char *fmt,...)</div><div class="ttdef"><b>Definition:</b> <a href="../../db/dcc/error_8c_source.html#l00265">error.c:265</a></div></div>
<div class="ttc" id="nkf_8h_html_aa93f0eb578d23995850d61f7d61c55c1"><div class="ttname"><a href="../../d1/d5c/nkf_8h.html#aa93f0eb578d23995850d61f7d61c55c1">FALSE</a></div><div class="ttdeci">#define FALSE</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d5c/nkf_8h_source.html#l00185">nkf.h:185</a></div></div>
<div class="ttc" id="vm__core_8h_html_aa933aeb7a703c7cc2d136492acbbef22"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#aa933aeb7a703c7cc2d136492acbbef22">RUBY_VM_IFUNC_P</a></div><div class="ttdeci">#define RUBY_VM_IFUNC_P(ptr)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00620">vm_core.h:620</a></div></div>
<div class="ttc" id="win32ole_8c_html_acb559820d9ca11295b4500f179ef6392"><div class="ttname"><a href="../../d2/d99/win32ole_8c.html#acb559820d9ca11295b4500f179ef6392">i</a></div><div class="ttdeci">int i</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d99/win32ole_8c_source.html#l00776">win32ole.c:776</a></div></div>
<div class="ttc" id="vm__dump_8c_html_acd3a62eaa8bfb2c0c2a59c2afa1179bb"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#acd3a62eaa8bfb2c0c2a59c2afa1179bb">VM_CFP_CNT</a></div><div class="ttdeci">#define VM_CFP_CNT(th, cfp)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00018">vm_dump.c:18</a></div></div>
<div class="ttc" id="vm__dump_8c_html_ac8e45243b47b9a4d73d977c62c3e6975"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#ac8e45243b47b9a4d73d977c62c3e6975">control_frame_dump</a></div><div class="ttdeci">static void control_frame_dump(rb_thread_t *th, rb_control_frame_t *cfp)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00022">vm_dump.c:22</a></div></div>
<div class="ttc" id="vm__core_8h_html_a26308f33317bb5b96ff89924822e8eab"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#a26308f33317bb5b96ff89924822e8eab">VM_FRAME_MAGIC_CFUNC</a></div><div class="ttdeci">#define VM_FRAME_MAGIC_CFUNC</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00577">vm_core.h:577</a></div></div>
<div class="ttc" id="vm__dump_8c_html_a4829e1bba567279a3c7df1a8e0056c65"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#a4829e1bba567279a3c7df1a8e0056c65">rb_vmdebug_thread_dump_state</a></div><div class="ttdeci">VALUE rb_vmdebug_thread_dump_state(VALUE self)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00556">vm_dump.c:556</a></div></div>
<div class="ttc" id="ruby_2ruby_8h_html"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html">ruby.h</a></div></div>
<div class="ttc" id="vm__core_8h_html_a79d03ad9b9cf8b7a8ca2b849e495a74f"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#a79d03ad9b9cf8b7a8ca2b849e495a74f">RUBY_VM_NORMAL_ISEQ_P</a></div><div class="ttdeci">#define RUBY_VM_NORMAL_ISEQ_P(ptr)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00621">vm_core.h:621</a></div></div>
<div class="ttc" id="structrb__vm__struct_html_a0fabbe8c44aac34d9538388955e2b461"><div class="ttname"><a href="../../db/d74/structrb__vm__struct.html#a0fabbe8c44aac34d9538388955e2b461">rb_vm_struct::progname</a></div><div class="ttdeci">VALUE progname</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00316">vm_core.h:316</a></div></div>
<div class="ttc" id="debug_8h_html_a1baecad7f27ccf1689612054ecf6a397"><div class="ttname"><a href="../../db/d16/debug_8h.html#a1baecad7f27ccf1689612054ecf6a397">bp</a></div><div class="ttdeci">#define bp()</div><div class="ttdef"><b>Definition:</b> <a href="../../db/d16/debug_8h_source.html#l00027">debug.h:27</a></div></div>
<div class="ttc" id="vm__dump_8c_html_aaefbe89c8af3d369bde339711a6e8668"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#aaefbe89c8af3d369bde339711a6e8668">rb_vmdebug_stack_dump_th</a></div><div class="ttdeci">void rb_vmdebug_stack_dump_th(VALUE thval)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00233">vm_dump.c:233</a></div></div>
<div class="ttc" id="vm__dump_8c_html_a8537bba92a6b0ad9700c765c83969b57"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#a8537bba92a6b0ad9700c765c83969b57">MAX_POSBUF</a></div><div class="ttdeci">#define MAX_POSBUF</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00016">vm_dump.c:16</a></div></div>
<div class="ttc" id="vm__core_8h_html_ab913ccb5c8b4c3065335169b15925411"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#ab913ccb5c8b4c3065335169b15925411">SDR2</a></div><div class="ttdeci">#define SDR2(cfp)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00635">vm_core.h:635</a></div></div>
<div class="ttc" id="structrb__control__frame__t_html_a29b331b150e5cae1e206cd87f892bad8"><div class="ttname"><a href="../../dd/d84/structrb__control__frame__t.html#a29b331b150e5cae1e206cd87f892bad8">rb_control_frame_t::sp</a></div><div class="ttdeci">VALUE * sp</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00334">vm_core.h:334</a></div></div>
<div class="ttc" id="structrb__block__struct_html_ad54e1ec45ab21ef384fe9e4346570397"><div class="ttname"><a href="../../da/dc0/structrb__block__struct.html#ad54e1ec45ab21ef384fe9e4346570397">rb_block_struct::self</a></div><div class="ttdeci">VALUE self</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00347">vm_core.h:347</a></div></div>
<div class="ttc" id="generator_8h_html_aa0c7097c0d82c8372072fbab5a604e39"><div class="ttname"><a href="../../d8/df4/generator_8h.html#aa0c7097c0d82c8372072fbab5a604e39">RSTRING_PTR</a></div><div class="ttdeci">#define RSTRING_PTR(string)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/df4/generator_8h_source.html#l00042">generator.h:42</a></div></div>
<div class="ttc" id="ruby_2ruby_8h_html_aa1bf33f94a5de592de48c16fcfe86db2"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#aa1bf33f94a5de592de48c16fcfe86db2">PRIxVALUE</a></div><div class="ttdeci">#define PRIxVALUE</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00130">ruby.h:130</a></div></div>
<div class="ttc" id="vm__core_8h_html_abc8be29d36c6252fce6bc61621f81b71"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#abc8be29d36c6252fce6bc61621f81b71">VM_FRAME_MAGIC_METHOD</a></div><div class="ttdeci">#define VM_FRAME_MAGIC_METHOD</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00572">vm_core.h:572</a></div></div>
<div class="ttc" id="vm__core_8h_html_a423bad734fe427f4d5deeb4fe71fff65"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#a423bad734fe427f4d5deeb4fe71fff65">VM_FRAME_TYPE</a></div><div class="ttdeci">#define VM_FRAME_TYPE(cfp)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00585">vm_core.h:585</a></div></div>
<div class="ttc" id="vm__core_8h_html_a795522d157a66fe8f0cdd335b28099c9"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#a795522d157a66fe8f0cdd335b28099c9">VM_FRAME_MAGIC_IFUNC</a></div><div class="ttdeci">#define VM_FRAME_MAGIC_IFUNC</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00579">vm_core.h:579</a></div></div>
<div class="ttc" id="generator_8h_html_ae988773ed219452578f881fc7189c486"><div class="ttname"><a href="../../d8/df4/generator_8h.html#ae988773ed219452578f881fc7189c486">RARRAY_LEN</a></div><div class="ttdeci">#define RARRAY_LEN(ARRAY)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/df4/generator_8h_source.html#l00039">generator.h:39</a></div></div>
<div class="ttc" id="vm__core_8h_html_ac33c371d81972685538097cb4f49181f"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#ac33c371d81972685538097cb4f49181f">SDR</a></div><div class="ttdeci">#define SDR()</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00634">vm_core.h:634</a></div></div>
<div class="ttc" id="vm__core_8h_html_aaa39b3177aba775195d515b937ef78ff"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#aaa39b3177aba775195d515b937ef78ff">GetEnvPtr</a></div><div class="ttdeci">#define GetEnvPtr(obj, ptr)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00536">vm_core.h:536</a></div></div>
<div class="ttc" id="vm_8c_html_a70289cbb34babceed6243d9471e70e5f"><div class="ttname"><a href="../../de/de9/vm_8c.html#a70289cbb34babceed6243d9471e70e5f">rb_vm_get_sourceline</a></div><div class="ttdeci">RUBY_FUNC_EXPORTED int rb_vm_get_sourceline(const rb_control_frame_t *cfp)</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de9/vm_8c_source.html#l00769">vm.c:769</a></div></div>
<div class="ttc" id="structrb__thread__struct_html"><div class="ttname"><a href="../../d2/d66/structrb__thread__struct.html">rb_thread_struct</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00393">vm_core.h:393</a></div></div>
<div class="ttc" id="vm__dump_8c_html_a00c5c84d7769a956e3651998e92ae823"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#a00c5c84d7769a956e3651998e92ae823">rb_vmdebug_env_dump_raw</a></div><div class="ttdeci">void rb_vmdebug_env_dump_raw(rb_env_t *env, VALUE *lfp, VALUE *dfp)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00191">vm_dump.c:191</a></div></div>
<div class="ttc" id="cparse_8c_html_a48bfb6519a45249fb2ec0193ea3b6e1c"><div class="ttname"><a href="../../dc/d0c/cparse_8c.html#a48bfb6519a45249fb2ec0193ea3b6e1c">ID2SYM</a></div><div class="ttdeci">#define ID2SYM(i)</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/d0c/cparse_8c_source.html#l00063">cparse.c:63</a></div></div>
<div class="ttc" id="structrb__control__frame__t_html_aa0ec76f80ebaf0668b688c4e4e5e3e3f"><div class="ttname"><a href="../../dd/d84/structrb__control__frame__t.html#aa0ec76f80ebaf0668b688c4e4e5e3e3f">rb_control_frame_t::me</a></div><div class="ttdeci">const rb_method_entry_t * me</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00343">vm_core.h:343</a></div></div>
<div class="ttc" id="structrb__method__definition__struct_html_a7fc0edb8505a61f8ae8bf2544fa7f676"><div class="ttname"><a href="../../d6/dab/structrb__method__definition__struct.html#a7fc0edb8505a61f8ae8bf2544fa7f676">rb_method_definition_struct::original_id</a></div><div class="ttdeci">ID original_id</div><div class="ttdef"><b>Definition:</b> <a href="../../db/d0a/method_8h_source.html#l00061">method.h:61</a></div></div>
<div class="ttc" id="structrb__proc__t_html_acdb9a8c85422bf299615f7942ffbc916"><div class="ttname"><a href="../../d5/d77/structrb__proc__t.html#acdb9a8c85422bf299615f7942ffbc916">rb_proc_t::envval</a></div><div class="ttdeci">VALUE envval</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00529">vm_core.h:529</a></div></div>
<div class="ttc" id="vm__core_8h_html_a8deb84ec6023e3229db88ac2c9da6138"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#a8deb84ec6023e3229db88ac2c9da6138">GET_THREAD</a></div><div class="ttdeci">#define GET_THREAD()</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00690">vm_core.h:690</a></div></div>
<div class="ttc" id="struct____s_f_i_l_e_html"><div class="ttname"><a href="../../db/ddf/struct____s_f_i_l_e.html">__sFILE</a></div><div class="ttdef"><b>Definition:</b> <a href="../../da/d50/vsnprintf_8c_source.html#l00175">vsnprintf.c:175</a></div></div>
<div class="ttc" id="win32ole_8c_html_a4b5a598a4f53b3724549c48dcfbf7c48"><div class="ttname"><a href="../../d2/d99/win32ole_8c.html#a4b5a598a4f53b3724549c48dcfbf7c48">p</a></div><div class="ttdeci">Win32OLEIDispatch * p</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d99/win32ole_8c_source.html#l00778">win32ole.c:778</a></div></div>
<div class="ttc" id="structrb__iseq__struct_html_a35596da255ce28a5d1da94c2cc508c7d"><div class="ttname"><a href="../../d6/de3/structrb__iseq__struct.html#a35596da255ce28a5d1da94c2cc508c7d">rb_iseq_struct::name</a></div><div class="ttdeci">VALUE name</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00168">vm_core.h:168</a></div></div>
<div class="ttc" id="structrb__iseq__struct_html_a8699ab44e2c44e7f8df87e26a9c7bee8"><div class="ttname"><a href="../../d6/de3/structrb__iseq__struct.html#a8699ab44e2c44e7f8df87e26a9c7bee8">rb_iseq_struct::iseq</a></div><div class="ttdeci">VALUE * iseq</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00171">vm_core.h:171</a></div></div>
<div class="ttc" id="structrb__thread__struct_html_a3fd7aab45a1c539bc9ca022acfc1ad51"><div class="ttname"><a href="../../d2/d66/structrb__thread__struct.html#a3fd7aab45a1c539bc9ca022acfc1ad51">rb_thread_struct::stack</a></div><div class="ttdeci">VALUE * stack</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00398">vm_core.h:398</a></div></div>
<div class="ttc" id="structrb__iseq__struct_html_a06859fa5de56f2ede3cb692f1d9215e2"><div class="ttname"><a href="../../d6/de3/structrb__iseq__struct.html#a06859fa5de56f2ede3cb692f1d9215e2">rb_iseq_struct::filename</a></div><div class="ttdeci">VALUE filename</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00169">vm_core.h:169</a></div></div>
<div class="ttc" id="hash_8c_html_ac477edf136d86a33bc06d1fbea67bb9a"><div class="ttname"><a href="../../d1/d04/hash_8c.html#ac477edf136d86a33bc06d1fbea67bb9a">rb_hash_aset</a></div><div class="ttdeci">VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val)</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d04/hash_8c_source.html#l01133">hash.c:1133</a></div></div>
<div class="ttc" id="structrb__control__frame__t_html_af3314cb37c8a27353101bf6f35574946"><div class="ttname"><a href="../../dd/d84/structrb__control__frame__t.html#af3314cb37c8a27353101bf6f35574946">rb_control_frame_t::lfp</a></div><div class="ttdeci">VALUE * lfp</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00339">vm_core.h:339</a></div></div>
<div class="ttc" id="win32ole_8c_html_ad3196fc77437d523ed1459e8ff809d3a"><div class="ttname"><a href="../../d2/d99/win32ole_8c.html#ad3196fc77437d523ed1459e8ff809d3a">DWORD</a></div><div class="ttdeci">IUnknown DWORD</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d99/win32ole_8c_source.html#l00149">win32ole.c:149</a></div></div>
<div class="ttc" id="structrb__iseq__struct_html_a5fd0acd110681eeb0f95c3b283451a0a"><div class="ttname"><a href="../../d6/de3/structrb__iseq__struct.html#a5fd0acd110681eeb0f95c3b283451a0a">rb_iseq_struct::argc</a></div><div class="ttdeci">int argc</div><div class="ttdoc">argument information </div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00214">vm_core.h:214</a></div></div>
<div class="ttc" id="subst_8h_html_aa367b75c5aed883fef5befbdf04835a4"><div class="ttname"><a href="../../d7/d72/subst_8h.html#aa367b75c5aed883fef5befbdf04835a4">snprintf</a></div><div class="ttdeci">#define snprintf</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/d72/subst_8h_source.html#l00006">subst.h:6</a></div></div>
<div class="ttc" id="ruby_2ruby_8h_html_a4832bad8845a35fc50f7a160901854a1"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#a4832bad8845a35fc50f7a160901854a1">NIL_P</a></div><div class="ttdeci">#define NIL_P(v)</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00374">ruby.h:374</a></div></div>
<div class="ttc" id="vm_8c_html_a600dc9ffdba414e21dacfe809c4a9ec8"><div class="ttname"><a href="../../de/de9/vm_8c.html#a600dc9ffdba414e21dacfe809c4a9ec8">rb_cRubyVM</a></div><div class="ttdeci">VALUE rb_cRubyVM</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de9/vm_8c_source.html#l00035">vm.c:35</a></div></div>
<div class="ttc" id="ruby_8c_html_ad1447518f4372828b8435ae82e48499e"><div class="ttname"><a href="../../df/d77/ruby_8c.html#ad1447518f4372828b8435ae82e48499e">argc</a></div><div class="ttdeci">int argc</div><div class="ttdef"><b>Definition:</b> <a href="../../df/d77/ruby_8c_source.html#l00120">ruby.c:120</a></div></div>
<div class="ttc" id="vm__core_8h_html_a2524f590c07fceb689b2b7d53114ff5f"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#a2524f590c07fceb689b2b7d53114ff5f">VM_FRAME_MAGIC_CLASS</a></div><div class="ttdeci">#define VM_FRAME_MAGIC_CLASS</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00574">vm_core.h:574</a></div></div>
<div class="ttc" id="vm__dump_8c_html_ae5165393259e08cff52a6c3d66619217"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#ae5165393259e08cff52a6c3d66619217">bugreport_backtrace</a></div><div class="ttdeci">static int bugreport_backtrace(void *arg, VALUE file, int line, VALUE method)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00571">vm_dump.c:571</a></div></div>
<div class="ttc" id="vm__dump_8c_html_af1b67bbf4b72295a772178d0bd939dd0"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#af1b67bbf4b72295a772178d0bd939dd0">rb_vm_bugreport</a></div><div class="ttdeci">void rb_vm_bugreport(void)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00770">vm_dump.c:770</a></div></div>
<div class="ttc" id="ruby_2ruby_8h_html_a5f1cc49c4da51d5bdffa64be79ff6fb0"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#a5f1cc49c4da51d5bdffa64be79ff6fb0">T_NODE</a></div><div class="ttdeci">#define T_NODE</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00434">ruby.h:434</a></div></div>
<div class="ttc" id="ruby_2ruby_8h_html_aca444ec27cdd86e8456e34dfc4aed830"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#aca444ec27cdd86e8456e34dfc4aed830">PRIdPTRDIFF</a></div><div class="ttdeci">#define PRIdPTRDIFF</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00155">ruby.h:155</a></div></div>
<div class="ttc" id="vm__dump_8c_html_a066f88891bb609fc5d137b4347038f40"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#a066f88891bb609fc5d137b4347038f40">rb_vmdebug_debug_print_register</a></div><div class="ttdeci">void rb_vmdebug_debug_print_register(rb_thread_t *th)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00330">vm_dump.c:330</a></div></div>
<div class="ttc" id="intern_8h_html_a17a81c1a7d754e5ab49fc4b4369b6c8c"><div class="ttname"><a href="../../db/d2e/intern_8h.html#a17a81c1a7d754e5ab49fc4b4369b6c8c">rb_const_get</a></div><div class="ttdeci">VALUE rb_const_get(VALUE, ID)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/d2a/variable_8c_source.html#l01635">variable.c:1635</a></div></div>
<div class="ttc" id="structrb__block__struct_html_a834e1c9b35a06714deeb62097636564f"><div class="ttname"><a href="../../da/dc0/structrb__block__struct.html#a834e1c9b35a06714deeb62097636564f">rb_block_struct::lfp</a></div><div class="ttdeci">VALUE * lfp</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00348">vm_core.h:348</a></div></div>
<div class="ttc" id="structiseq__inline__cache__entry_html_afe485ee1e6c1127a5512d3ec8c43d6a6"><div class="ttname"><a href="../../d7/d2a/structiseq__inline__cache__entry.html#afe485ee1e6c1127a5512d3ec8c43d6a6">iseq_inline_cache_entry::method</a></div><div class="ttdeci">rb_method_entry_t * method</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00133">vm_core.h:133</a></div></div>
<div class="ttc" id="nkf_8h_html_aa8cecfc5c5c054d2875c03e77b7be15d"><div class="ttname"><a href="../../d1/d5c/nkf_8h.html#aa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a></div><div class="ttdeci">#define TRUE</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d5c/nkf_8h_source.html#l00186">nkf.h:186</a></div></div>
<div class="ttc" id="structrb__proc__t_html"><div class="ttname"><a href="../../d5/d77/structrb__proc__t.html">rb_proc_t</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00526">vm_core.h:526</a></div></div>
<div class="ttc" id="vm_8c_html_a70b2fd040eae21f04d68a7a6f7ee1a05"><div class="ttname"><a href="../../de/de9/vm_8c.html#a70b2fd040eae21f04d68a7a6f7ee1a05">vm_analysis_operand</a></div><div class="ttdeci">void vm_analysis_operand(int insn, int n, VALUE op)</div></div>
<div class="ttc" id="structrb__vm__struct_html_adc9a2f20cba11e9a872bbe603b7db593"><div class="ttname"><a href="../../db/d74/structrb__vm__struct.html#adc9a2f20cba11e9a872bbe603b7db593">rb_vm_struct::loaded_features</a></div><div class="ttdeci">VALUE loaded_features</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00302">vm_core.h:302</a></div></div>
<div class="ttc" id="vm__dump_8c_html_a1dbfe98ae709e8806918bdd3121bf986"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#a1dbfe98ae709e8806918bdd3121bf986">rb_vmdebug_stack_dump_raw</a></div><div class="ttdeci">void rb_vmdebug_stack_dump_raw(rb_thread_t *th, rb_control_frame_t *cfp)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00146">vm_dump.c:146</a></div></div>
<div class="ttc" id="hash_8c_html_af1da586524a3a1739fd5b91272037815"><div class="ttname"><a href="../../d1/d04/hash_8c.html#af1da586524a3a1739fd5b91272037815">rb_hash_new</a></div><div class="ttdeci">VALUE rb_hash_new(void)</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d04/hash_8c_source.html#l00229">hash.c:229</a></div></div>
<div class="ttc" id="nkf-utf8_2nkf_8c_html_ac37f17a60c8b5533aac4840c681f62b8"><div class="ttname"><a href="../../d6/da0/nkf-utf8_2nkf_8c.html#ac37f17a60c8b5533aac4840c681f62b8">buf</a></div><div class="ttdeci">unsigned char buf[MIME_BUF_SIZE]</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/da0/nkf-utf8_2nkf_8c_source.html#l03913">nkf.c:3913</a></div></div>
<div class="ttc" id="ruby_2ruby_8h_html_afa5b9137f051ac26d7ccc8824f178233"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#afa5b9137f051ac26d7ccc8824f178233">ID</a></div><div class="ttdeci">unsigned long ID</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00089">ruby.h:89</a></div></div>
<div class="ttc" id="vm__core_8h_html_ae154762699bf1f722bdf05c22026d678"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#ae154762699bf1f722bdf05c22026d678">RUBYVM_CFUNC_FRAME_P</a></div><div class="ttdeci">#define RUBYVM_CFUNC_FRAME_P(cfp)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00590">vm_core.h:590</a></div></div>
<div class="ttc" id="ruby_2ruby_8h_html_aba03c3c4ff187bbda6c4459e2dc9f6c6"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#aba03c3c4ff187bbda6c4459e2dc9f6c6">Qnil</a></div><div class="ttdeci">#define Qnil</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00367">ruby.h:367</a></div></div>
<div class="ttc" id="win32_8h_html_a728e973c799f206f0151c8a3bd1e5699"><div class="ttname"><a href="../../dc/db1/win32_8h.html#a728e973c799f206f0151c8a3bd1e5699">uintptr_t</a></div><div class="ttdeci">unsigned int uintptr_t</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/db1/win32_8h_source.html#l00096">win32.h:96</a></div></div>
<div class="ttc" id="vm__core_8h_html"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html">vm_core.h</a></div></div>
<div class="ttc" id="vm__core_8h_html_ac7b8d797cce488d08572c273f49f28fe"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#ac7b8d797cce488d08572c273f49f28fe">VM_FRAME_MAGIC_EVAL</a></div><div class="ttdeci">#define VM_FRAME_MAGIC_EVAL</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00580">vm_core.h:580</a></div></div>
<div class="ttc" id="structrb__iseq__struct_html_aa70f3e195a4350acbbc130f8a95c9958"><div class="ttname"><a href="../../d6/de3/structrb__iseq__struct.html#aa70f3e195a4350acbbc130f8a95c9958">rb_iseq_struct::iseq_encoded</a></div><div class="ttdeci">VALUE * iseq_encoded</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00172">vm_core.h:172</a></div></div>
<div class="ttc" id="ruby_2ruby_8h_html_aee74f540353cd2d77d1cb37a3714bd7d"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#aee74f540353cd2d77d1cb37a3714bd7d">BUILTIN_TYPE</a></div><div class="ttdeci">#define BUILTIN_TYPE(x)</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00438">ruby.h:438</a></div></div>
<div class="ttc" id="ruby_2ruby_8h_html_a3c1d4bfc6a81af60bdcb48744c35f760"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#a3c1d4bfc6a81af60bdcb48744c35f760">VALUE</a></div><div class="ttdeci">unsigned long VALUE</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00088">ruby.h:88</a></div></div>
<div class="ttc" id="ruby_2ruby_8h_html_a9444c431b3cb1184e7523fc572f2c758"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#a9444c431b3cb1184e7523fc572f2c758">FIX2INT</a></div><div class="ttdeci">#define FIX2INT(x)</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00538">ruby.h:538</a></div></div>
<div class="ttc" id="name2ctype_8h_html_aed1cc4dca5d94cb452f79691f54f7423"><div class="ttname"><a href="../../d3/d15/name2ctype_8h.html#aed1cc4dca5d94cb452f79691f54f7423">len</a></div><div class="ttdeci">register unsigned int len</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d15/name2ctype_8h_source.html#l22210">name2ctype.h:22210</a></div></div>
<div class="ttc" id="generator_8h_html_abb794fe2d7c73eea87e7ba2273939a8e"><div class="ttname"><a href="../../d8/df4/generator_8h.html#abb794fe2d7c73eea87e7ba2273939a8e">RARRAY_PTR</a></div><div class="ttdeci">#define RARRAY_PTR(ARRAY)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/df4/generator_8h_source.html#l00036">generator.h:36</a></div></div>
<div class="ttc" id="vm__opts_8h_html_ae1ded4471910adbc5bbe8e6566469341"><div class="ttname"><a href="../../dc/d92/vm__opts_8h.html#ae1ded4471910adbc5bbe8e6566469341">OPT_STACK_CACHING</a></div><div class="ttdeci">#define OPT_STACK_CACHING</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/d92/vm__opts_8h_source.html#l00046">vm_opts.h:46</a></div></div>
<div class="ttc" id="structrb__control__frame__t_html_a8e19fd7af779b623f1e9477f271358e6"><div class="ttname"><a href="../../dd/d84/structrb__control__frame__t.html#a8e19fd7af779b623f1e9477f271358e6">rb_control_frame_t::bp</a></div><div class="ttdeci">VALUE * bp</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00335">vm_core.h:335</a></div></div>
<div class="ttc" id="structrb__control__frame__t_html_ac1cafd093e114d3ec99ebeca0ffeb048"><div class="ttname"><a href="../../dd/d84/structrb__control__frame__t.html#ac1cafd093e114d3ec99ebeca0ffeb048">rb_control_frame_t::dfp</a></div><div class="ttdeci">VALUE * dfp</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00340">vm_core.h:340</a></div></div>
<div class="ttc" id="structrb__control__frame__t_html_a28b0b301811a891225ba9a58c412482d"><div class="ttname"><a href="../../dd/d84/structrb__control__frame__t.html#a28b0b301811a891225ba9a58c412482d">rb_control_frame_t::pc</a></div><div class="ttdeci">VALUE * pc</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00333">vm_core.h:333</a></div></div>
<div class="ttc" id="ruby_2ruby_8h_html_afc32c1526ac6cb40ec33cad8782c0bae"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#afc32c1526ac6cb40ec33cad8782c0bae">StringValueCStr</a></div><div class="ttdeci">#define StringValueCStr(v)</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00468">ruby.h:468</a></div></div>
<div class="ttc" id="vm__core_8h_html_ac9390ef02c17a0bc7e3bd359264562c7"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#ac9390ef02c17a0bc7e3bd359264562c7">VM_FRAME_MAGIC_TOP</a></div><div class="ttdeci">#define VM_FRAME_MAGIC_TOP</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00575">vm_core.h:575</a></div></div>
<div class="ttc" id="vm__core_8h_html_ac1f5b7efa57bccbeb4ff5e7ae6ff18c2"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#ac1f5b7efa57bccbeb4ff5e7ae6ff18c2">VM_FRAME_MAGIC_PROC</a></div><div class="ttdeci">#define VM_FRAME_MAGIC_PROC</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00578">vm_core.h:578</a></div></div>
<div class="ttc" id="vm__core_8h_html_a53d4377e7685dd916255009372937561"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#a53d4377e7685dd916255009372937561">rb_backtrace_each</a></div><div class="ttdeci">int rb_backtrace_each(rb_backtrace_iter_func *iter, void *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d3/d80/vm__eval_8c_source.html#l01682">vm_eval.c:1682</a></div></div>
<div class="ttc" id="iseq_8c_html_af94502bbd024003d18377cfb27b2045f"><div class="ttname"><a href="../../dd/d74/iseq_8c.html#af94502bbd024003d18377cfb27b2045f">insn_operand_intern</a></div><div class="ttdeci">static VALUE insn_operand_intern(rb_iseq_t *iseq, VALUE insn, int op_no, VALUE op, int len, size_t pos, VALUE *pnop, VALUE child)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/d74/iseq_8c_source.html#l00743">iseq.c:743</a></div></div>
<div class="ttc" id="vm__core_8h_html_a57840803108748406429fb1cb3b10530"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#a57840803108748406429fb1cb3b10530">VM_FRAME_MAGIC_LAMBDA</a></div><div class="ttdeci">#define VM_FRAME_MAGIC_LAMBDA</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00581">vm_core.h:581</a></div></div>
<div class="ttc" id="ruby_2ruby_8h_html_ac55fae7f748afd3fc2533d0d7d06cf5a"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#ac55fae7f748afd3fc2533d0d7d06cf5a">INT2FIX</a></div><div class="ttdeci">#define INT2FIX(i)</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00225">ruby.h:225</a></div></div>
<div class="ttc" id="structrb__proc__t_html_acf80b0e350012548c28cba1ea64a7a6e"><div class="ttname"><a href="../../d5/d77/structrb__proc__t.html#acf80b0e350012548c28cba1ea64a7a6e">rb_proc_t::block</a></div><div class="ttdeci">rb_block_t block</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00527">vm_core.h:527</a></div></div>
<div class="ttc" id="nkf-utf8_2nkf_8c_html_a064e4a3a0f3f97b34dc187ea21bcc2f1"><div class="ttname"><a href="../../d6/da0/nkf-utf8_2nkf_8c.html#a064e4a3a0f3f97b34dc187ea21bcc2f1">cv</a></div><div class="ttdeci">static const unsigned char cv[]</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/da0/nkf-utf8_2nkf_8c_source.html#l00561">nkf.c:561</a></div></div>
<div class="ttc" id="structrb__method__entry__struct_html_a6c868c50e67b757c6324dfef0f3184dc"><div class="ttname"><a href="../../d7/db7/structrb__method__entry__struct.html#a6c868c50e67b757c6324dfef0f3184dc">rb_method_entry_struct::def</a></div><div class="ttdeci">rb_method_definition_t * def</div><div class="ttdef"><b>Definition:</b> <a href="../../db/d0a/method_8h_source.html#l00078">method.h:78</a></div></div>
<div class="ttc" id="hash_8c_html_ab7063832c7ed02351e87922a78e35c32"><div class="ttname"><a href="../../d1/d04/hash_8c.html#ab7063832c7ed02351e87922a78e35c32">rb_hash_aref</a></div><div class="ttdeci">VALUE rb_hash_aref(VALUE hash, VALUE key)</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d04/hash_8c_source.html#l00518">hash.c:518</a></div></div>
<div class="ttc" id="structrb__control__frame__t_html_a4c11a50358317e1207affd6d7b4ad576"><div class="ttname"><a href="../../dd/d84/structrb__control__frame__t.html#a4c11a50358317e1207affd6d7b4ad576">rb_control_frame_t::self</a></div><div class="ttdeci">VALUE self</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00338">vm_core.h:338</a></div></div>
<div class="ttc" id="vm__dump_8c_html_a2dcc677a7d7e5b4bebbbcf6afe5955fd"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#a2dcc677a7d7e5b4bebbbcf6afe5955fd">rb_vmdebug_thread_dump_regs</a></div><div class="ttdeci">void rb_vmdebug_thread_dump_regs(VALUE thval)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00353">vm_dump.c:353</a></div></div>
<div class="ttc" id="structrb__iseq__struct_html_afbae994355f91f3ea547570debb757c0"><div class="ttname"><a href="../../d6/de3/structrb__iseq__struct.html#afbae994355f91f3ea547570debb757c0">rb_iseq_struct::local_size</a></div><div class="ttdeci">int local_size</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00186">vm_core.h:186</a></div></div>
<div class="ttc" id="structrb__block__struct_html_ac3696ee534a836d6ccc55cdeb2181ac5"><div class="ttname"><a href="../../da/dc0/structrb__block__struct.html#ac3696ee534a836d6ccc55cdeb2181ac5">rb_block_struct::dfp</a></div><div class="ttdeci">VALUE * dfp</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00349">vm_core.h:349</a></div></div>
<div class="ttc" id="structrb__control__frame__t_html_a4b25ca925a9f60481173632b9c09d4e0"><div class="ttname"><a href="../../dd/d84/structrb__control__frame__t.html#a4b25ca925a9f60481173632b9c09d4e0">rb_control_frame_t::iseq</a></div><div class="ttdeci">rb_iseq_t * iseq</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00336">vm_core.h:336</a></div></div>
<div class="ttc" id="vm__core_8h_html_a36e942386b2b43383c44e769bffe5808"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#a36e942386b2b43383c44e769bffe5808">GetThreadPtr</a></div><div class="ttdeci">#define GetThreadPtr(obj, ptr)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00356">vm_core.h:356</a></div></div>
<div class="ttc" id="vm__dump_8c_html_ab3e8c769e0c63ba229bd1b6338639512"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#ab3e8c769e0c63ba229bd1b6338639512">rb_vmdebug_proc_dump_raw</a></div><div class="ttdeci">void rb_vmdebug_proc_dump_raw(rb_proc_t *proc)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00219">vm_dump.c:219</a></div></div>
<div class="ttc" id="vm_8c_html_aadc79f2891643166c13ed45e187396f2"><div class="ttname"><a href="../../de/de9/vm_8c.html#aadc79f2891643166c13ed45e187396f2">vm_analysis_insn</a></div><div class="ttdeci">void vm_analysis_insn(int insn)</div></div>
<div class="ttc" id="nkf-utf8_2nkf_8c_html_a8f8f80d37794cde9472343e4487ba3eb"><div class="ttname"><a href="../../d6/da0/nkf-utf8_2nkf_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a></div><div class="ttdeci">const char * name</div><div class="ttdef"><b>Definition:</b> <a href="../../d6/da0/nkf-utf8_2nkf_8c_source.html#l00208">nkf.c:208</a></div></div>
<div class="ttc" id="structrb__vm__struct_html"><div class="ttname"><a href="../../db/d74/structrb__vm__struct.html">rb_vm_struct</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00277">vm_core.h:277</a></div></div>
<div class="ttc" id="vm__dump_8c_html_a130d5c43a9da83c86a471cb88c28f080"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#a130d5c43a9da83c86a471cb88c28f080">rb_vmdebug_stack_dump_raw_current</a></div><div class="ttdeci">void rb_vmdebug_stack_dump_raw_current(void)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00184">vm_dump.c:184</a></div></div>
<div class="ttc" id="structrb__iseq__struct_html"><div class="ttname"><a href="../../d6/de3/structrb__iseq__struct.html">rb_iseq_struct</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00151">vm_core.h:151</a></div></div>
<div class="ttc" id="ripper_8c_html_a877bc58c495643fcf49dc64c44631e72"><div class="ttname"><a href="../../d5/d11/ripper_8c.html#a877bc58c495643fcf49dc64c44631e72">rb_id2name</a></div><div class="ttdeci">const char * rb_id2name(ID id)</div><div class="ttdef"><b>Definition:</b> <a href="../../d5/d11/ripper_8c_source.html#l16362">ripper.c:16362</a></div></div>
<div class="ttc" id="intern_8h_html_acbb281bacf6b80f460143348e26142e9"><div class="ttname"><a href="../../db/d2e/intern_8h.html#acbb281bacf6b80f460143348e26142e9">rb_inspect</a></div><div class="ttdeci">VALUE rb_inspect(VALUE)</div><div class="ttdef"><b>Definition:</b> <a href="../../d0/de1/object_8c_source.html#l00372">object.c:372</a></div></div>
<div class="ttc" id="vm__core_8h_html_a885c6468caef6c3de80b0ad6c50ae38d"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#a885c6468caef6c3de80b0ad6c50ae38d">VM_FRAME_MAGIC_FINISH</a></div><div class="ttdeci">#define VM_FRAME_MAGIC_FINISH</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00576">vm_core.h:576</a></div></div>
<div class="ttc" id="vm__core_8h_html_a373f1cafd944ff9e99986582d0fd695b"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#a373f1cafd944ff9e99986582d0fd695b">GC_GUARDED_PTR_REF</a></div><div class="ttdeci">#define GC_GUARDED_PTR_REF(p)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00608">vm_core.h:608</a></div></div>
<div class="ttc" id="ruby_2ruby_8h_html_aa50b9d5bc665eb5545f6857c89232161"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#aa50b9d5bc665eb5545f6857c89232161">CONST_ID</a></div><div class="ttdeci">#define CONST_ID(var, str)</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l01127">ruby.h:1127</a></div></div>
<div class="ttc" id="structrb__thread__struct_html_a1587dec1a575fb9f8d6a689ef4fdb6b5"><div class="ttname"><a href="../../d2/d66/structrb__thread__struct.html#a1587dec1a575fb9f8d6a689ef4fdb6b5">rb_thread_struct::stack_size</a></div><div class="ttdeci">unsigned long stack_size</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00399">vm_core.h:399</a></div></div>
<div class="ttc" id="addr2line_8h_html"><div class="ttname"><a href="../../d6/df3/addr2line_8h.html">addr2line.h</a></div></div>
<div class="ttc" id="array_8c_html_a9cfa42d4b79c89d68c53be8b2150a503"><div class="ttname"><a href="../../dc/dcc/array_8c.html#a9cfa42d4b79c89d68c53be8b2150a503">rb_intern</a></div><div class="ttdeci">#define rb_intern(str)</div></div>
<div class="ttc" id="vsnprintf_8c_html_ac752882e678e3368676e57e5eb4b9d86"><div class="ttname"><a href="../../da/d50/vsnprintf_8c.html#ac752882e678e3368676e57e5eb4b9d86">feof</a></div><div class="ttdeci">#define feof(p)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d50/vsnprintf_8c_source.html#l00217">vsnprintf.c:217</a></div></div>
<div class="ttc" id="win32_8c_html_af973ca20f6594ad664c03daa83867128"><div class="ttname"><a href="../../d5/df2/win32_8c.html#af973ca20f6594ad664c03daa83867128">env</a></div><div class="ttdeci">#define env</div></div>
<div class="ttc" id="ruby_2ruby_8h_html_ae6db36a50ae612535a9aac7ad0ec5a0d"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#ae6db36a50ae612535a9aac7ad0ec5a0d">PRIxPTRDIFF</a></div><div class="ttdeci">#define PRIxPTRDIFF</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00159">ruby.h:159</a></div></div>
<div class="ttc" id="__sdbm_8c_html_a070d2ce7b6bb7e5c05602aa8c308d0c4"><div class="ttname"><a href="../../d4/db0/__sdbm_8c.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a></div><div class="ttdeci">#define NULL</div><div class="ttdef"><b>Definition:</b> <a href="../../d4/db0/__sdbm_8c_source.html#l00107">_sdbm.c:107</a></div></div>
<div class="ttc" id="ruby_2ruby_8h_html_a2edf6990280eb2637623ccd421dee4f0"><div class="ttname"><a href="../../de/de6/ruby_2ruby_8h.html#a2edf6990280eb2637623ccd421dee4f0">Qundef</a></div><div class="ttdeci">#define Qundef</div><div class="ttdef"><b>Definition:</b> <a href="../../de/de6/ruby_2ruby_8h_source.html#l00368">ruby.h:368</a></div></div>
<div class="ttc" id="win32ole_8c_html_a516d92a41f815ad3c448380a9aa3e4d0"><div class="ttname"><a href="../../d2/d99/win32ole_8c.html#a516d92a41f815ad3c448380a9aa3e4d0">ULONG</a></div><div class="ttdeci">static ULONG(STDMETHODCALLTYPE AddRef)(IDispatch __RPC_FAR *This)</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d99/win32ole_8c_source.html#l00606">win32ole.c:606</a></div></div>
<div class="ttc" id="intern_8h_html_ada1577ce4242b06ff5c1c52f37f5e679"><div class="ttname"><a href="../../db/d2e/intern_8h.html#ada1577ce4242b06ff5c1c52f37f5e679">rb_str_new2</a></div><div class="ttdeci">VALUE rb_str_new2(const char *)</div></div>
<div class="ttc" id="win32ole_8c_html_a18100522f0b19b5e9b9875f5737a9386"><div class="ttname"><a href="../../d2/d99/win32ole_8c.html#a18100522f0b19b5e9b9875f5737a9386">free</a></div><div class="ttdeci">free(psz)</div></div>
<div class="ttc" id="vm__dump_8c_html_ad61ad81b4e157971a62f262265a27160"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#ad61ad81b4e157971a62f262265a27160">rb_vmdebug_debug_print_pre</a></div><div class="ttdeci">void rb_vmdebug_debug_print_pre(rb_thread_t *th, rb_control_frame_t *cfp)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00361">vm_dump.c:361</a></div></div>
<div class="ttc" id="vm__dump_8c_html_a10140e7b70a08eb48ba3befe9485ac42"><div class="ttname"><a href="../../dd/dd7/vm__dump_8c.html#a10140e7b70a08eb48ba3befe9485ac42">rb_vmdebug_debug_print_post</a></div><div class="ttdeci">void rb_vmdebug_debug_print_post(rb_thread_t *th, rb_control_frame_t *cfp)</div><div class="ttdef"><b>Definition:</b> <a href="../../dd/dd7/vm__dump_8c_source.html#l00382">vm_dump.c:382</a></div></div>
<div class="ttc" id="vm_8c_html_a22af4689a1b73006b14a25502191cde5"><div class="ttname"><a href="../../de/de9/vm_8c.html#a22af4689a1b73006b14a25502191cde5">vm_analysis_register</a></div><div class="ttdeci">void vm_analysis_register(int reg, int isset)</div></div>
<div class="ttc" id="structrb__control__frame__t_html"><div class="ttname"><a href="../../dd/d84/structrb__control__frame__t.html">rb_control_frame_t</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00332">vm_core.h:332</a></div></div>
<div class="ttc" id="structrb__env__t_html"><div class="ttname"><a href="../../d0/d73/structrb__env__t.html">rb_env_t</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00539">vm_core.h:539</a></div></div>
<div class="ttc" id="vm__core_8h_html_a6cfcd3997994924c8cd13c3b5c099ec6"><div class="ttname"><a href="../../d8/d32/vm__core_8h.html#a6cfcd3997994924c8cd13c3b5c099ec6">GET_VM</a></div><div class="ttdeci">#define GET_VM()</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d32/vm__core_8h_source.html#l00689">vm_core.h:689</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>