pike.git / src / code / README.txt

version» Context lines:

pike.git/src/code/README.txt:85:   void CALL_MACHINE_CODE(PIKE_OPCODE_T *pc)    Start execution of the machine-code located at 'pc'.    NOTE: This macro does not return, but instead contains    code that returns from the calling context. The value    returned in the macro should be one of -1 (inter return),    or -2 (inter escape catch).      void EXIT_MACHINE_CODE()    Clean up from CALL_MACHINE_CODE.    + int MACHINE_CODE_FORCE_FP() +  Kludge to force the C compiler to generate a frame +  for some opcode functions. This is needed for a few +  machine code backends. +    void START_NEW_FUNCTION(int store_lines)    Called at the start of a function. store_lines is true for any    non-constant evaluation function. This hook can be used to    add common helper subroutines and/or reset code-generator state.      void END_FUNCTION(int store_lines)    Called after all f-codes for a function have been emitted.    Typically used to clean up after START_NEW_FUNCTION().    store_lines will contain the same value as when    START_NEW_FUNCTION() was called.
pike.git/src/code/README.txt:127:    should be skipped e.g. when tail recursing. Required when    INS_ENTRY is used.      void RELOCATE_program(struct program *p, PIKE_OPCODE_T *new);    Relocate the copy of 'p'->program at 'new' to be able    to execute at the new position.      void FLUSH_INSTRUCTION_CACHE(void *addr, size_t len);    Flush the memory at 'addr' from the instruction cache.    - void ENCODE_PROGRAM(struct program *p, struct dynamic_buffer_s *buf); + void ENCODE_PROGRAM(struct program *p, struct byte_buffer *buf);    Encode 'p'->program in a way accepted by DECODE_PROGRAM().    NOTE: The encoded data MUST have the length p->num_program *    sizeof(PIKE_OPCODE_T).      void DECODE_PROGRAM(struct program *p)    Decode 'p'->program as encoded by ENCODE_PROGRAM().    NOTE: 'p'->relocations is valid at this point.      void FLUSH_CODE_GENERATOR_STATE(void)    Called at labels and beginning of functions to notify
pike.git/src/code/README.txt:214:      OPCODE_RETURN_JUMPADDR    If defined, jump functions that return the address to jump to    will be generated for I_JUMP instructions, so the ins_f_byte*    must generate machine code that (unconditionally) jumps to the    return value for those opcodes. If this isn't defined, they    will instead use SET_PROG_COUNTER to change the address they    return to. This macro allows faster code on cpus where setting    the return address wreaks havoc in the instruction pipelines.    + OPCODE_INLINE_CATCH +  If defined, each F_CATCH opcode should set up its own +  recovery. Pike_interpreter.catching_eval_jmpbuf isn't used in +  that case. +    JUMP_SET_TO_PC_AT_NEXT(PIKE_OPCODE_T *PC)    Used in I_JUMP opcodes to store the pc to the next    instruction, to compensate for any machine code that is    inserted after the call. PC is the lvalue where it should be    stored. Must be defined if OPCODE_RETURN_JUMPADDR is.      void CHECK_RELOC(size_t reloc, size_t program_size)    Check if a relocation is valid for the program.    Should throw an error on bad relocations.   
pike.git/src/code/README.txt:236:      Help structures and functions implemented in other places:      struct instr instrs[];    Array of bytecode instruction definitions. Indexed by    F-opcode minus F_OFFSET. See opcodes.h for details.      PIKE_OPCODE_T *inter_return_opcode_F_CATCH(PIKE_OPCODE_T *addr)    Function to simplify implementation of F_CATCH in    OPCODE_INLINE_RETURN mode. See interpret.c for details. +  + PIKE_OPCODE_T *setup_catch_context(PIKE_OPCODE_T *addr) +  Helper function for F_CATCH machine code. See interpret.c for details. +  + PIKE_OPCODE_T *handle_caught_exception(void) +  Helper function for F_CATCH machine code. See interpret.c for details.