split functions to reduce C compile time

This commit is contained in:
Matthew Flatt 2011-03-20 07:18:38 -06:00
parent 58c3c84c1b
commit 39ebb083cc

View File

@ -151,9 +151,9 @@ static void ts_scheme_on_demand(void) XFORM_SKIP_PROC
/* ************************************************************ */ /* ************************************************************ */
int scheme_do_generate_common(mz_jit_state *jitter, void *_data) static int common0(mz_jit_state *jitter, void *_data)
{ {
int in, i, ii, iii; int in;
GC_CAN_IGNORE jit_insn *ref, *ref2; GC_CAN_IGNORE jit_insn *ref, *ref2;
/* *** check_arity_code *** */ /* *** check_arity_code *** */
@ -261,6 +261,14 @@ int scheme_do_generate_common(mz_jit_state *jitter, void *_data)
__END_SHORT_JUMPS__(1); __END_SHORT_JUMPS__(1);
mz_epilog(JIT_V1); mz_epilog(JIT_V1);
return 1;
}
static int common1(mz_jit_state *jitter, void *_data)
{
int i;
GC_CAN_IGNORE jit_insn *ref, *ref2;
/* *** [bad_][m]{car,cdr,...,{imag,real}_part}_code *** */ /* *** [bad_][m]{car,cdr,...,{imag,real}_part}_code *** */
/* Argument is in R0 for car/cdr, R2 otherwise */ /* Argument is in R0 for car/cdr, R2 otherwise */
for (i = 0; i < 12; i++) { for (i = 0; i < 12; i++) {
@ -375,6 +383,14 @@ int scheme_do_generate_common(mz_jit_state *jitter, void *_data)
scheme_jit_register_sub_func(jitter, code, scheme_false); scheme_jit_register_sub_func(jitter, code, scheme_false);
} }
return 1;
}
static int common1b(mz_jit_state *jitter, void *_data)
{
int i;
GC_CAN_IGNORE jit_insn *ref, *ref2;
/* *** bad_set_{car,cdr}_code and make_[fl]rectangular_code *** */ /* *** bad_set_{car,cdr}_code and make_[fl]rectangular_code *** */
/* Bad argument is in R0, other is in R1 */ /* Bad argument is in R0, other is in R1 */
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
@ -494,6 +510,14 @@ int scheme_do_generate_common(mz_jit_state *jitter, void *_data)
CHECK_LIMIT(); CHECK_LIMIT();
scheme_jit_register_sub_func(jitter, sjc.bad_fxvector_length_code, scheme_false); scheme_jit_register_sub_func(jitter, sjc.bad_fxvector_length_code, scheme_false);
return 1;
}
static int common2(mz_jit_state *jitter, void *_data)
{
int in, i;
GC_CAN_IGNORE jit_insn *ref, *ref2;
/* *** call_original_unary_arith_code *** */ /* *** call_original_unary_arith_code *** */
/* R0 is arg, R2 is code pointer, V1 is return address (for false); /* R0 is arg, R2 is code pointer, V1 is return address (for false);
if for branch, LOCAL2 is target address for true */ if for branch, LOCAL2 is target address for true */
@ -831,6 +855,14 @@ int scheme_do_generate_common(mz_jit_state *jitter, void *_data)
CHECK_LIMIT(); CHECK_LIMIT();
} }
return 1;
}
static int common3(mz_jit_state *jitter, void *_data)
{
int i, ii, iii;
GC_CAN_IGNORE jit_insn *ref;
/* *** {vector,string,bytes}_{ref,set}_[check_index_]code *** */ /* *** {vector,string,bytes}_{ref,set}_[check_index_]code *** */
/* R0 is vector/string/bytes, R1 is index (Scheme number in check-index mode), /* R0 is vector/string/bytes, R1 is index (Scheme number in check-index mode),
V1 is vector/string/bytes offset in non-check-index mode (and for V1 is vector/string/bytes offset in non-check-index mode (and for
@ -1090,6 +1122,14 @@ int scheme_do_generate_common(mz_jit_state *jitter, void *_data)
} }
} }
return 1;
}
static int common4(mz_jit_state *jitter, void *_data)
{
int i, ii, iii;
GC_CAN_IGNORE jit_insn *ref;
/* *** {flvector}_{ref,set}_check_index_code *** */ /* *** {flvector}_{ref,set}_check_index_code *** */
/* Same calling convention as for vector ops. */ /* Same calling convention as for vector ops. */
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++) {
@ -1458,6 +1498,13 @@ int scheme_do_generate_common(mz_jit_state *jitter, void *_data)
} }
} }
return 1;
}
static int common5(mz_jit_state *jitter, void *_data)
{
int i, ii;
#ifdef CAN_INLINE_ALLOC #ifdef CAN_INLINE_ALLOC
/* *** retry_alloc_code[{_keep_r0_r1,_keep_fpr1}] *** */ /* *** retry_alloc_code[{_keep_r0_r1,_keep_fpr1}] *** */
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++) {
@ -1628,6 +1675,11 @@ int scheme_do_generate_common(mz_jit_state *jitter, void *_data)
} }
} }
return 1;
}
static int common6(mz_jit_state *jitter, void *_data)
{
/* wcm_[nontail_]code */ /* wcm_[nontail_]code */
/* key and value are on runstack */ /* key and value are on runstack */
{ {
@ -1763,7 +1815,20 @@ int scheme_do_generate_common(mz_jit_state *jitter, void *_data)
return 1; return 1;
} }
int scheme_do_generate_more_common(mz_jit_state *jitter, void *_data) int scheme_do_generate_common(mz_jit_state *jitter, void *_data)
{
if (!common0(jitter, _data)) return 0;
if (!common1(jitter, _data)) return 0;
if (!common1b(jitter, _data)) return 0;
if (!common2(jitter, _data)) return 0;
if (!common3(jitter, _data)) return 0;
if (!common4(jitter, _data)) return 0;
if (!common5(jitter, _data)) return 0;
if (!common6(jitter, _data)) return 0;
return 1;
}
static int more_common0(mz_jit_state *jitter, void *_data)
{ {
/* *** check_proc_extract_code *** */ /* *** check_proc_extract_code *** */
/* arguments are on the Scheme stack */ /* arguments are on the Scheme stack */
@ -1963,6 +2028,11 @@ int scheme_do_generate_more_common(mz_jit_state *jitter, void *_data)
scheme_jit_register_sub_func(jitter, sjc.module_start_start_code, scheme_eof); scheme_jit_register_sub_func(jitter, sjc.module_start_start_code, scheme_eof);
} }
return 1;
}
static int more_common1(mz_jit_state *jitter, void *_data)
{
/* apply_to_list_tail_code */ /* apply_to_list_tail_code */
/* argc is in V1 */ /* argc is in V1 */
{ {
@ -2396,4 +2466,11 @@ int scheme_do_generate_more_common(mz_jit_state *jitter, void *_data)
return 1; return 1;
} }
int scheme_do_generate_more_common(mz_jit_state *jitter, void *_data)
{
if (!more_common0(jitter, _data)) return 0;
if (!more_common1(jitter, _data)) return 0;
return 1;
}
#endif #endif