improve compilation of arithmetic and other builtins, this should

make it more aggressive (and still correct).
This commit is contained in:
Vitor Santos Costa
2009-02-25 00:13:56 +00:00
parent 91657556ee
commit 083b7c9b92
4 changed files with 132 additions and 88 deletions

View File

@@ -693,7 +693,8 @@ static char *opformat[] =
"fetch_integer_reg\t%d,%N",
"fetch_reg_integer\t%d,%N",
"function_to_var\t%v,%B",
"function_to_al\t%v,%B",
"function_to_val\t%v,%B",
"function_to_0\t%B",
"enter_profiling\t\t%g",
"retry_profiled\t\t%g",
"count_call_op\t\t%g",
@@ -748,49 +749,49 @@ static char *opformat[] =
"put_number_on_val\t",
"put_float_on_val\t",
"put_integer_on_val\t",
"equal_floats\n",
"equal_ints\n",
"equal_numbers\n",
"lt_floats\n",
"lt_ints\n",
"lt_numbers\n",
"gt_floats\n",
"gt_ints\n",
"add_float\n",
"add_int\n",
"add\n",
"sub_float\n",
"sub_int\n",
"sub\n",
"mul_float\n",
"mul_int\n",
"mul\n",
"shift_right_constant\n",
"shift_right_by_constant\n",
"shift_right\n",
"shift_left_constant\n",
"shift_left_by_constant\n",
"shift_left\n",
"divide_constant\n",
"divide_by_constant\n",
"divide\n",
"integer_divide_constant\n",
"integer_divide_by_constant\n",
"integer_divide\n",
"mod_constant\n",
"mod_by_constant\n",
"mod\n",
"rem_constant\n",
"rem_by_constant\n",
"rem\n",
"and_constant\n",
"and\n",
"or_constant\n",
"or\n",
"xor_constant\n",
"xor\n",
"uminus\n",
"label_control\n"
"equal_floats\t",
"equal_ints\t",
"equal_numbers\t",
"lt_floats\t",
"lt_ints\t",
"lt_numbers\t",
"gt_floats\t",
"gt_ints\t",
"add_float\t",
"add_int\t",
"add\t",
"sub_float\t",
"sub_int\t",
"sub\t",
"mul_float\t",
"mul_int\t",
"mul\t",
"shift_right_constant\t",
"shift_right_by_constant\t",
"shift_right\t",
"shift_left_constant\t",
"shift_left_by_constant\t",
"shift_left\t",
"divide_constant\t",
"divide_by_constant\t",
"divide\t",
"integer_divide_constant\t",
"integer_divide_by_constant\t",
"integer_divide\t",
"mod_constant\t",
"mod_by_constant\t",
"mod\t",
"rem_constant\t",
"rem_by_constant\t",
"rem\t",
"and_constant\t",
"and\t",
"or_constant\t",
"or\t",
"xor_constant\t",
"xor\t",
"uminus\t",
"label_control\t"
#ifdef SFUNC
,
"get_s_f_op\t%f,%r",