projects
/
mono.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
2007-09-30 Carlos Alberto Cortez <calberto.cortez@gmail.com>
[mono.git]
/
mono
/
mini
/
abcremoval.c
diff --git
a/mono/mini/abcremoval.c
b/mono/mini/abcremoval.c
index c9764bad0589ea89cbe3c6552a7bf5fe457c749a..5d526718e73a403944b090a39bb9935dcc7f443e 100644
(file)
--- a/
mono/mini/abcremoval.c
+++ b/
mono/mini/abcremoval.c
@@
-460,6
+460,9
@@
handle_load:
summarize_array_value (area, value->inst_left, result, TRUE);
value_kind = MONO_UNSIGNED_INTEGER_VALUE_SIZE_4;
break;
summarize_array_value (area, value->inst_left, result, TRUE);
value_kind = MONO_UNSIGNED_INTEGER_VALUE_SIZE_4;
break;
+ case OP_LCONV_TO_I4:
+ value_kind = summarize_integer_value (area, value->inst_left, result, result_value_kind);
+ break;
case OP_PHI:
result->type = MONO_PHI_SUMMARIZED_VALUE;
result->value.phi.number_of_alternatives = *(value->inst_phi_args);
case OP_PHI:
result->type = MONO_PHI_SUMMARIZED_VALUE;
result->value.phi.number_of_alternatives = *(value->inst_phi_args);
@@
-1237,7
+1240,7
@@
process_block (MonoBasicBlock *bb, MonoVariableRelationsEvaluationArea *area) {
int inst_index;
MonoInst *current_inst;
MonoAdditionalVariableRelationsForBB additional_relations;
int inst_index;
MonoInst *current_inst;
MonoAdditionalVariableRelationsForBB additional_relations;
- GList *dominated_bb;
+ G
S
List *dominated_bb;
if (TRACE_ABC_REMOVAL) {
printf ("Processing block %d [dfn %d]...\n", bb->block_num, bb->dfn);
if (TRACE_ABC_REMOVAL) {
printf ("Processing block %d [dfn %d]...\n", bb->block_num, bb->dfn);
@@
-1277,7
+1280,7
@@
process_block (MonoBasicBlock *bb, MonoVariableRelationsEvaluationArea *area) {
printf ("Processing block %d [dfn %d] done.\n", bb->block_num, bb->dfn);
}
printf ("Processing block %d [dfn %d] done.\n", bb->block_num, bb->dfn);
}
- for (dominated_bb =
g_list_first (bb->dominated); dominated_bb != NULL; dominated_bb = g_list_next (dominated_bb)
) {
+ for (dominated_bb =
bb->dominated; dominated_bb != NULL; dominated_bb = dominated_bb->next
) {
process_block ((MonoBasicBlock*) (dominated_bb->data), area);
}
process_block ((MonoBasicBlock*) (dominated_bb->data), area);
}
@@
-1317,11
+1320,11
@@
mono_perform_abc_removal (MonoCompile *cfg)
area.cfg = cfg;
area.relations = (MonoSummarizedValueRelation *)
area.cfg = cfg;
area.relations = (MonoSummarizedValueRelation *)
-
alloca (
sizeof (MonoSummarizedValueRelation) * (cfg->num_varinfo) * 2);
+
mono_mempool_alloc (cfg->mempool,
sizeof (MonoSummarizedValueRelation) * (cfg->num_varinfo) * 2);
area.contexts = (MonoRelationsEvaluationContext *)
area.contexts = (MonoRelationsEvaluationContext *)
-
alloca (
sizeof (MonoRelationsEvaluationContext) * (cfg->num_varinfo));
+
mono_mempool_alloc (cfg->mempool,
sizeof (MonoRelationsEvaluationContext) * (cfg->num_varinfo));
area.variable_value_kind = (MonoIntegerValueKind *)
area.variable_value_kind = (MonoIntegerValueKind *)
-
alloca (
sizeof (MonoIntegerValueKind) * (cfg->num_varinfo));
+
mono_mempool_alloc (cfg->mempool,
sizeof (MonoIntegerValueKind) * (cfg->num_varinfo));
for (i = 0; i < cfg->num_varinfo; i++) {
area.variable_value_kind [i] = MONO_UNKNOWN_INTEGER_VALUE;
area.relations [i].relation = MONO_EQ_RELATION;
for (i = 0; i < cfg->num_varinfo; i++) {
area.variable_value_kind [i] = MONO_UNKNOWN_INTEGER_VALUE;
area.relations [i].relation = MONO_EQ_RELATION;
@@
-1386,7
+1389,7
@@
handle_integer_value:
apply_value_kind_to_range (&range, effective_value_kind);
if (range.upper < INT_MAX) {
apply_value_kind_to_range (&range, effective_value_kind);
if (range.upper < INT_MAX) {
- type_relation = (MonoSummarizedValueRelation *)
alloca (
sizeof (MonoSummarizedValueRelation));
+ type_relation = (MonoSummarizedValueRelation *)
mono_mempool_alloc (cfg->mempool,
sizeof (MonoSummarizedValueRelation));
type_relation->relation = MONO_LE_RELATION;
type_relation->related_value.type = MONO_CONSTANT_SUMMARIZED_VALUE;
type_relation->related_value.value.constant.value = range.upper;
type_relation->relation = MONO_LE_RELATION;
type_relation->related_value.type = MONO_CONSTANT_SUMMARIZED_VALUE;
type_relation->related_value.value.constant.value = range.upper;
@@
-1398,7
+1401,7
@@
handle_integer_value:
}
}
if (range.lower > INT_MIN) {
}
}
if (range.lower > INT_MIN) {
- type_relation = (MonoSummarizedValueRelation *)
alloca (
sizeof (MonoSummarizedValueRelation));
+ type_relation = (MonoSummarizedValueRelation *)
mono_mempool_alloc (cfg->mempool,
sizeof (MonoSummarizedValueRelation));
type_relation->relation = MONO_GE_RELATION;
type_relation->related_value.type = MONO_CONSTANT_SUMMARIZED_VALUE;
type_relation->related_value.value.constant.value = range.lower;
type_relation->relation = MONO_GE_RELATION;
type_relation->related_value.type = MONO_CONSTANT_SUMMARIZED_VALUE;
type_relation->related_value.value.constant.value = range.lower;