<div dir="ltr">Thank you for your reply and your patience!<div><br></div><div>I compiled your code and get the same output as yours.<br><div><br></div><div>However my implementation is different from yours. While we both have an EvalFrame function, your implementation built an module in Python, but I prefer to modify Python source and compile a full distribution.<br></div><div><br></div><div>To be more specific, I first implement an EvalFrame function, which is a simple call of _PyEval_EvalFrameDefault. I compile this function into a .so file. Then in Python/pylifecycle.c, I use dlsym to get the EvalFrame function to replace the function interp->eval_frame. So each time when interp->eval_frame(default as _PyEval_EvalFrameDefault) is called, what is really called is my EvalFrame function. This seems should be fine, but it doesn't work.</div></div><div><br></div><div>My code is here: <a href="https://github.com/KuribohG/Python-JIT-problem">https://github.com/KuribohG/Python-JIT-problem</a></div><div><br></div><div>To compile it, get a Python-3.6.1.tgz source from Python official website. Replace Python/pylifecycle.c with the one on github. Then use CMake to compile the libPubbon.so, and get into Python directory to make Python. It will give an error message, and the python.exe target cannot run.</div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-03-31 23:15 GMT+08:00 Siu Kwan Lam <span dir="ltr"><<a href="mailto:siu@continuum.io" target="_blank">siu@continuum.io</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr" class="m_8579371989149675701gmail_msg"><div class="m_8579371989149675701gmail_msg">I have never tried PEP0523 before so I have just did a quick look and pushed what I got to <a href="https://github.com/sklam/etude_py36_custom_jit" target="_blank">https://github.com/sklam/<wbr>etude_py36_custom_jit</a>.</div><div class="m_8579371989149675701gmail_msg"><br></div><div class="m_8579371989149675701gmail_msg">If you run <a href="https://github.com/sklam/etude_py36_custom_jit/blob/master/test.py" target="_blank">https://github.com/sklam/<wbr>etude_py36_custom_jit/blob/<wbr>master/test.py</a>, you should get the following printouts:</div><div class="m_8579371989149675701gmail_msg"><br></div>Hello <br>Hey <br>Yes <br>** myjit is evaluating frame=0x10c623048 lasti=-1 lineno=10 <br>Enter apple() <br>** myjit is evaluating frame=0x7f9a74e02178 lasti=-1 lineno=16 <br>Enter orange() <br>Exit orange() <br>Exit apple() <br>** myjit is evaluating frame=0x10c460d48 lasti=-1 lineno=27<br class="m_8579371989149675701gmail_msg"><div class="m_8579371989149675701gmail_msg"><div class="m_8579371989149675701gmail_msg"><span style="color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif;font-size:15px" class="m_8579371989149675701gmail_msg"><br class="m_8579371989149675701gmail_msg"></span></div></div></div><div>The frame is different for each method.  </div><div><br></div><div>Can you try your implementation with my test so we can compare?</div><br class="m_8579371989149675701gmail_msg"><div class="gmail_quote m_8579371989149675701gmail_msg"><div><div class="h5"><div dir="ltr" class="m_8579371989149675701gmail_msg">On Thu, Mar 30, 2017 at 11:46 PM Yuheng Zou <<a href="mailto:zouyuheng1998@gmail.com" class="m_8579371989149675701gmail_msg" target="_blank">zouyuheng1998@gmail.com</a>> wrote:<br class="m_8579371989149675701gmail_msg"></div></div></div><blockquote class="gmail_quote m_8579371989149675701gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr" class="m_8579371989149675701gmail_msg"><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif" class="m_8579371989149675701gmail_msg">I am building a Python JIT, so I want to change the <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="m_8579371989149675701gmail_msg">interp->eval_frame</code> to my own function.</p><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif" class="m_8579371989149675701gmail_msg">I built a C++ library which contains <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="m_8579371989149675701gmail_msg">EvalFrame</code> function, and then use <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="m_8579371989149675701gmail_msg">dlopen</code> and <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="m_8579371989149675701gmail_msg">dlsym</code> to use it. It looks like this:</p><pre class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-default m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-prettyprint m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-prettyprinted m_8579371989149675701gmail_msg" style="white-space:pre-wrap;margin-top:0px;margin-bottom:1em;padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);color:rgb(57,51,24);word-wrap:normal"><code style="margin:0px;padding:0px;border:0px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;white-space:inherit" class="m_8579371989149675701gmail_msg"><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-kwd m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">extern</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-str m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">"C"</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-typ m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">PyObject</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">*</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-typ m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">EvalFrame</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-typ m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">PyFrameObject</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">*</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">f</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-kwd m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">int</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> throwflag</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">)</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">{</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
    </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-kwd m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">return</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-typ m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">_PyEval_EvalFrameDefault</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">f</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> throwflag</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">}</span></code></pre><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif" class="m_8579371989149675701gmail_msg">I added following code to <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="m_8579371989149675701gmail_msg">Python/pylifecycle.c</code> at function <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="m_8579371989149675701gmail_msg">_Py_InitializeEx_<wbr>Private</code>(Python version is 3.6.1):</p><pre class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-default m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-prettyprint m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-prettyprinted m_8579371989149675701gmail_msg" style="white-space:pre-wrap;margin-top:0px;margin-bottom:1em;padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);color:rgb(57,51,24);word-wrap:normal"><code style="margin:0px;padding:0px;border:0px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;white-space:inherit" class="m_8579371989149675701gmail_msg"><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-kwd m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">void</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">*</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">pyjit </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">=</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> NULL</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">;</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
pyjit </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">=</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> dlopen</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-str m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">"../cmake-build-debug/<wbr>libPubbon.dylib"</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-lit m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">0</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-kwd m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">if</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">pyjit </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">!=</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> NULL</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">)</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">{</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
    interp</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">-></span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">eval_frame </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">=</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-typ m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">_PyFrameEvalFunction</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">)</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">dlsym</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">py<wbr>jit</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-str m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">"EvalFrame"</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
    </span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-com m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(133,140,147)">//interp->eval_frame = _PyEval_EvalFrameDefault;</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">}</span><span class="m_8579371989149675701m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln m_8579371989149675701gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span></code></pre><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif" class="m_8579371989149675701gmail_msg">Then something strange happened. I used LLDB to trace the variables. When it ran at <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="m_8579371989149675701gmail_msg">EvalFrame</code>, the address of <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="m_8579371989149675701gmail_msg">f</code> pointer didn't change, but <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="m_8579371989149675701gmail_msg">f->f_lineno</code> changed.</p><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif" class="m_8579371989149675701gmail_msg">Why the address of the pointer didn't change, but the context change?</p><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif" class="m_8579371989149675701gmail_msg">I am working on Mac OS X and Python 3.6.1. I want to know how to replace _PyEval_EvalFrameDefault in interp->eval_frame with my own function.</p></div></div></div>
______________________________<wbr>_________________<br class="m_8579371989149675701gmail_msg">
Python-compilers mailing list<br class="m_8579371989149675701gmail_msg">
<a href="mailto:Python-compilers@python.org" class="m_8579371989149675701gmail_msg" target="_blank">Python-compilers@python.org</a><br class="m_8579371989149675701gmail_msg">
<a href="https://mail.python.org/mailman/listinfo/python-compilers" rel="noreferrer" class="m_8579371989149675701gmail_msg" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-<wbr>compilers</a><span class="HOEnZb"><font color="#888888"><br class="m_8579371989149675701gmail_msg">
</font></span></blockquote></div></div><span class="HOEnZb"><font color="#888888"><div dir="ltr">-- <br></div><div data-smartmail="gmail_signature"><div dir="ltr">Siu Kwan Lam<div>Software Engineer</div><div>Continuum Analytics</div></div></div>
</font></span></blockquote></div><br></div>