2017-02-21
2017-02-21 20:41:13 by Martin Karlgren <marty@roxen.com>
-
26da463cb93e873f1feca3441932a7a2ddd07aff
(6 lines)
(+6/-0)
[
Show
| Annotate
]
Branch: marty/call_frames
Inline the F_CATCH opcode (on AMD64 so far).
This is a prerequisite for MACHINE_CODE_STACK_FRAMES, since
inter_return_opcode_F_CATCH will "inject" itself on the C stack when the first
F_CATCH opcode is encountered (and won't vanish until inter return, which may
occur in an outer Pike frame).
12:
#include "pike_error.h"
#include "object.h"
#include "pike_rusage.h"
+ #include "pikecode.h"
struct catch_context
{
848: Inside #if defined(PIKE_USE_MACHINE_CODE) and #if defined(OPCODE_INLINE_RETURN)
#ifdef OPCODE_INLINE_RETURN
PIKE_OPCODE_T *inter_return_opcode_F_CATCH(PIKE_OPCODE_T *addr);
#endif
+ #ifdef OPCODE_INLINE_CATCH
+ PIKE_OPCODE_T *setup_catch_context(PIKE_OPCODE_T *addr);
+ PIKE_OPCODE_T *handle_caught_exception(void);
+ #endif
#ifdef PIKE_DEBUG
void simple_debug_instr_prologue_0 (PIKE_INSTR_T instr);
void simple_debug_instr_prologue_1 (PIKE_INSTR_T instr, INT32 arg);