The world's most popular open source database
#include <sp_head.h>
Inheritance diagram for sp_instr_hpush_jump:


Public Member Functions | |
| sp_instr_hpush_jump (uint ip, sp_pcontext *ctx, int htype, uint fp) | |
| virtual | ~sp_instr_hpush_jump () |
| virtual int | execute (THD *thd, uint *nextp) |
| virtual void | print (String *str) |
| virtual uint | opt_mark (sp_head *sp) |
| virtual uint | opt_shortcut_jump (sp_head *sp, sp_instr *start) |
| void | add_condition (struct sp_cond_type *cond) |
Private Member Functions | |
| sp_instr_hpush_jump (const sp_instr_hpush_jump &) | |
| void | operator= (sp_instr_hpush_jump &) |
Private Attributes | |
| int | m_type |
| uint | m_frame |
| List< struct sp_cond_type > | m_cond |
Definition at line 866 of file sp_head.h.
| sp_instr_hpush_jump::sp_instr_hpush_jump | ( | const sp_instr_hpush_jump & | ) | [private] |
| sp_instr_hpush_jump::sp_instr_hpush_jump | ( | uint | ip, | |
| sp_pcontext * | ctx, | |||
| int | htype, | |||
| uint | fp | |||
| ) | [inline] |
| virtual sp_instr_hpush_jump::~sp_instr_hpush_jump | ( | ) | [inline, virtual] |
| void sp_instr_hpush_jump::add_condition | ( | struct sp_cond_type * | cond | ) | [inline] |
| int sp_instr_hpush_jump::execute | ( | THD * | thd, | |
| uint * | nextp | |||
| ) | [virtual] |
Reimplemented from sp_instr_jump.
Definition at line 2847 of file sp_head.cc.
References DBUG_ENTER, DBUG_RETURN, m_cond, sp_instr_opt_meta::m_dest, m_frame, sp_instr::m_ip, m_type, and p.
02848 { 02849 DBUG_ENTER("sp_instr_hpush_jump::execute"); 02850 List_iterator_fast<sp_cond_type_t> li(m_cond); 02851 sp_cond_type_t *p; 02852 02853 while ((p= li++)) 02854 thd->spcont->push_handler(p, m_ip+1, m_type, m_frame); 02855 02856 *nextp= m_dest; 02857 DBUG_RETURN(0); 02858 }
| void sp_instr_hpush_jump::operator= | ( | sp_instr_hpush_jump & | ) | [private] |
Reimplemented from sp_instr_jump.
Definition at line 2893 of file sp_head.cc.
References sp_head::get_instr(), sp_instr_opt_meta::m_dest, sp_instr::m_ip, sp_instr_opt_meta::m_optdest, sp_instr::marked, sp_head::opt_mark(), and sp_instr::opt_shortcut_jump().
02894 { 02895 sp_instr *i; 02896 02897 marked= 1; 02898 if ((i= sp->get_instr(m_dest))) 02899 { 02900 m_dest= i->opt_shortcut_jump(sp, this); 02901 m_optdest= sp->get_instr(m_dest); 02902 } 02903 sp->opt_mark(m_dest); 02904 return m_ip+1; 02905 }
Here is the call graph for this function:

| virtual uint sp_instr_hpush_jump::opt_shortcut_jump | ( | sp_head * | sp, | |
| sp_instr * | start | |||
| ) | [inline, virtual] |
Reimplemented from sp_instr_jump.
Definition at line 891 of file sp_head.h.
References sp_instr::m_ip.
00892 { 00893 return m_ip; 00894 }
| void sp_instr_hpush_jump::print | ( | String * | str | ) | [virtual] |
Reimplemented from sp_instr_jump.
Definition at line 2862 of file sp_head.cc.
References sp_instr_opt_meta::m_dest, m_frame, m_type, String::qs_append(), String::reserve(), SP_HANDLER_CONTINUE, SP_HANDLER_EXIT, SP_HANDLER_NONE, SP_HANDLER_UNDO, SP_INSTR_UINT_MAXLEN, and STRING_WITH_LEN.
02863 { 02864 /* hpush_jump dest fsize type */ 02865 if (str->reserve(SP_INSTR_UINT_MAXLEN*2 + 21)) 02866 return; 02867 str->qs_append(STRING_WITH_LEN("hpush_jump ")); 02868 str->qs_append(m_dest); 02869 str->qs_append(' '); 02870 str->qs_append(m_frame); 02871 switch (m_type) { 02872 case SP_HANDLER_NONE: 02873 str->qs_append(STRING_WITH_LEN(" NONE")); // This would be a bug 02874 break; 02875 case SP_HANDLER_EXIT: 02876 str->qs_append(STRING_WITH_LEN(" EXIT")); 02877 break; 02878 case SP_HANDLER_CONTINUE: 02879 str->qs_append(STRING_WITH_LEN(" CONTINUE")); 02880 break; 02881 case SP_HANDLER_UNDO: 02882 str->qs_append(STRING_WITH_LEN(" UNDO")); 02883 break; 02884 default: 02885 // This would be a bug as well 02886 str->qs_append(STRING_WITH_LEN(" UNKNOWN:")); 02887 str->qs_append(m_type); 02888 } 02889 }
Here is the call graph for this function:

List<struct sp_cond_type> sp_instr_hpush_jump::m_cond [private] |
Definition at line 905 of file sp_head.h.
Referenced by add_condition(), execute(), sp_instr_hpush_jump(), and ~sp_instr_hpush_jump().
uint sp_instr_hpush_jump::m_frame [private] |
int sp_instr_hpush_jump::m_type [private] |
1.4.7

