pike.git / src / code / amd64.h

version» Context lines:

pike.git/src/code/amd64.h:1:      #define OPCODE_INLINE_BRANCH   #define OPCODE_RETURN_JUMPADDR   #define OPCODE_INLINE_RETURN + #define USE_APPLY_N      #if defined(_M_X64) && !defined(__GNUC__)      #define DEF_PROG_COUNTER void *amd64_pc; \    _asm { _asm mov amd64_pc, rbp }   #define PROG_COUNTER (((unsigned char **)amd64_pc)[1])      #else /* _M_X64_ && !__GNUC__ */      #ifdef OPCODE_RETURN_JUMPADDR   /* Don't need an lvalue in this case. */   #define PROG_COUNTER ((unsigned char *)__builtin_return_address(0))   #else   #define PROG_COUNTER (((unsigned char **)__builtin_frame_address(0))[1])   #endif      #endif      #define CALL_MACHINE_CODE(pc) \    do { \ -  /* The test is needed to get the labels to work... */ \ -  if (pc) { \ +     ((int (*)(struct Pike_interpreter_struct *))(pc)) (Pike_interpreter_pointer); \ -  goto inter_return_label; \ -  } \ +     } while(0)    -  +  + void amd64_start_function(int no_pc); + void amd64_end_function(int no_pc); +  + #define START_NEW_FUNCTION amd64_start_function + #define END_FUNCTION amd64_end_function +    void amd64_ins_entry(void);   #define INS_ENTRY() amd64_ins_entry()   /* Size of the prologue added by INS_ENTRY() (in PIKE_OPCODE_T's). */   #define ENTRY_PROLOGUE_SIZE 0x14      void amd64_flush_code_generator_state(void);   #define FLUSH_CODE_GENERATOR_STATE() amd64_flush_code_generator_state()      int amd64_ins_f_jump(unsigned int op, int backward_jump);   int amd64_ins_f_jump_with_arg(unsigned int op, INT32 a, int backward_jump);
pike.git/src/code/amd64.h:79:   #define ins_data(VAL) ins_int((VAL), (void (*)(char))add_to_program)   #define read_program_data(PTR, OFF) EXTRACT_INT((PTR) + (sizeof(INT32)*(OFF)))      void amd64_update_pc(void);      #define UPDATE_PC() amd64_update_pc()      extern ptrdiff_t amd64_prev_stored_pc;      #define READ_INCR_BYTE(PC) EXTRACT_UCHAR((PC)++) -  -  -  +