mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-04 22:40:25 +02:00
* include/lightning/jit_s390.h, lib/jit_s390-cpu.c, lib/jit_s390-fpu.c, lib/jit_s390-sz.c, lib/jit_s390.c: Renamed s390x* files to s390*. * check/float.tst, check/lightning.c, configure.ac, include/lightning.h, include/lightning/Makefile.am, lib/Makefile.am, lib/jit_s390.c, lib/jit_size.c, lib/lightning.c: Update for renamed files.
130 lines
2.7 KiB
C
130 lines
2.7 KiB
C
/*
|
|
* Copyright (C) 2013 Free Software Foundation, Inc.
|
|
*
|
|
* This file is part of GNU lightning.
|
|
*
|
|
* GNU lightning is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU Lesser General Public License as published
|
|
* by the Free Software Foundation; either version 3, or (at your option)
|
|
* any later version.
|
|
*
|
|
* GNU lightning is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
|
* License for more details.
|
|
*
|
|
* Authors:
|
|
* Paulo Cesar Pereira de Andrade
|
|
*/
|
|
|
|
#include <lightning.h>
|
|
#include <lightning/jit_private.h>
|
|
#if GET_JIT_SIZE
|
|
# include <stdio.h>
|
|
#endif
|
|
|
|
/*
|
|
* Initialization
|
|
*/
|
|
static jit_int16_t _szs[jit_code_last_code + 1] = {
|
|
#if GET_JIT_SIZE
|
|
# define JIT_INSTR_MAX 256
|
|
#else
|
|
# if defined(__i386__) || defined(__x86_64__)
|
|
# include "jit_x86-sz.c"
|
|
# elif defined(__mips__)
|
|
# include "jit_mips-sz.c"
|
|
# elif defined(__arm__)
|
|
# include "jit_arm-sz.c"
|
|
# elif defined(__ppc__) || defined(__powerpc__)
|
|
# include "jit_ppc-sz.c"
|
|
# elif defined(__sparc__)
|
|
# include "jit_sparc-sz.c"
|
|
# elif defined(__ia64__)
|
|
# include "jit_ia64-sz.c"
|
|
# elif defined(__hppa__)
|
|
# include "jit_hppa-sz.c"
|
|
# elif defined(__aarch64__)
|
|
# include "jit_aarch64-sz.c"
|
|
# elif defined(__s390__) || defined(__s390x__)
|
|
# include "jit_s390-sz.c"
|
|
# elif defined(__alpha__)
|
|
# include "jit_alpha-sz.c"
|
|
# endif
|
|
#endif
|
|
};
|
|
|
|
/*
|
|
* Implementation
|
|
*/
|
|
void
|
|
jit_init_size(void)
|
|
{
|
|
#if DEBUG
|
|
# if !GET_JIT_SIZE
|
|
jit_word_t offset;
|
|
|
|
for (offset = 0; offset < jit_size(_szs); offset++)
|
|
if (_szs[offset] != 0)
|
|
return;
|
|
/* Ensure data was collected */
|
|
abort();
|
|
# endif
|
|
#endif
|
|
}
|
|
|
|
#if GET_JIT_SIZE
|
|
void
|
|
_jit_size_prepare(jit_state_t *_jit)
|
|
{
|
|
_jitc->cptr = _jit->code.ptr;
|
|
_jitc->size = _jit->pc.w;
|
|
}
|
|
|
|
void
|
|
_jit_size_collect(jit_state_t *_jit, jit_node_t *node)
|
|
{
|
|
jit_word_t length;
|
|
|
|
if (_jitc->cptr == _jit->code.ptr) {
|
|
length = _jit->pc.w - _jitc->size;
|
|
if (_szs[node->code] < length)
|
|
_szs[node->code] = length;
|
|
}
|
|
}
|
|
|
|
#else
|
|
jit_word_t
|
|
_jit_get_size(jit_state_t *_jit)
|
|
{
|
|
jit_word_t size;
|
|
jit_node_t *node;
|
|
|
|
for (size = JIT_INSTR_MAX, node = _jitc->head; node; node = node->next)
|
|
size += _szs[node->code];
|
|
|
|
return ((size + 4095) & -4096);
|
|
}
|
|
#endif
|
|
|
|
jit_word_t
|
|
jit_get_max_instr(void)
|
|
{
|
|
return (JIT_INSTR_MAX);
|
|
}
|
|
|
|
void
|
|
jit_finish_size(void)
|
|
{
|
|
#if GET_JIT_SIZE
|
|
FILE *fp;
|
|
jit_word_t offset;
|
|
|
|
/* Define a single path */
|
|
fp = fopen(JIT_SIZE_PATH, "a");
|
|
assert(fp);
|
|
for (offset = 0; offset < jit_size(_szs); offset++)
|
|
fprintf(fp, "%d %d\n", offset, _szs[offset]);
|
|
fclose(fp);
|
|
#endif
|
|
}
|