1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 19:50:24 +02:00

JIT tracks register clobbers

* libguile/jit.c (struct scm_jit_state): Add beginnings of a little
  local register allocator.
  (reset_register_state): New helper.
  (clear_scratch_register_state): Use new helper.
  (record_gpr_clobber, record_fpr_clobber): New helpers, used when there
  may be cached variables in registers, called when registers are
  written.
  (set_sp_cache_gpr, set_sp_cache_fpr): New helpers, called when results
  are written to the stack.
  (emit_retval, emit_movi, emit_ldxi, DEFINE_CLOBBER_RECORDING_EMITTER_R)
  (DEFINE_CLOBBER_RECORDING_EMITTER_P, DEFINE_CLOBBER_RECORDING_EMITTER_R_I)
  (DEFINE_CLOBBER_RECORDING_EMITTER_R_R): New wrappers for Lightning API
  that also records register clobbers.  Update callers.
  (save_reloadable_register_state): New helper.
  (restore_reloadable_register_state): Rename from
  ensure_register_state.
This commit is contained in:
Andy Wingo 2018-08-29 14:01:20 +02:00
parent 10bfd55ec3
commit c03e2bbbb4

File diff suppressed because it is too large Load diff