mirror of
https://github.com/ganelson/inform.git
synced 2024-06-26 12:10:44 +03:00
Fix for Jira bug I7-2107
This commit is contained in:
parent
d08a9659b8
commit
4bd2c0ad86
|
@ -1,13 +1,13 @@
|
|||
Total memory consumption was 123345K = 120 MB
|
||||
|
||||
---- was used for 2044505 objects, in 362824 frames in 0 x 800K = 0K = 0 MB:
|
||||
---- was used for 2044504 objects, in 362823 frames in 0 x 800K = 0K = 0 MB:
|
||||
|
||||
33.1% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
|
||||
20.5% text_stream_array 4603 x 100 = 460300 objects, 25924096 bytes
|
||||
19.2% linked_list 43446 objects, 24329760 bytes
|
||||
11.1% inter_symbol_array 132 x 1024 = 135168 objects, 14061696 bytes
|
||||
10.4% inter_error_stash_array 101 x 1024 = 103424 objects, 13241504 bytes
|
||||
8.2% parse_node 129721 objects, 10377680 bytes
|
||||
8.2% parse_node 129720 objects, 10377600 bytes
|
||||
5.8% verb_conjugation 160 objects, 7425280 bytes
|
||||
4.3% parse_node_annotation_array 346 x 500 = 173000 objects, 5547072 bytes
|
||||
2.6% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes
|
||||
|
@ -255,5 +255,5 @@ Total memory consumption was 123345K = 120 MB
|
|||
---- code generation workspace for objects 1336 bytes in 4 claims
|
||||
0.2% emitter array storage 280032 bytes in 1997 claims
|
||||
|
||||
-146.-1% was overhead - -184624928 bytes = -180297K = -176 MB
|
||||
-146.-1% was overhead - -184624848 bytes = -180297K = -176 MB
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
100.0% in inform7 run
|
||||
70.8% in compilation to Inter
|
||||
50.8% in //Sequence::undertake_queued_tasks//
|
||||
70.9% in compilation to Inter
|
||||
50.6% in //Sequence::undertake_queued_tasks//
|
||||
4.6% in //MajorNodes::pre_pass//
|
||||
3.2% in //MajorNodes::pass_1//
|
||||
3.3% in //MajorNodes::pass_1//
|
||||
1.9% in //ImperativeDefinitions::assess_all//
|
||||
1.7% in //RTPhrasebook::compile_entries//
|
||||
1.5% in //RTKindConstructors::compile//
|
||||
1.1% in //Sequence::lint_inter//
|
||||
0.5% in //MajorNodes::pass_2//
|
||||
0.5% in //Sequence::undertake_queued_tasks//
|
||||
0.5% in //World::stage_V//
|
||||
1.8% in //RTPhrasebook::compile_entries//
|
||||
1.4% in //RTKindConstructors::compile//
|
||||
1.0% in //Sequence::lint_inter//
|
||||
0.6% in //MajorNodes::pass_2//
|
||||
0.6% in //Sequence::undertake_queued_tasks//
|
||||
0.6% in //World::stage_V//
|
||||
0.4% in //ImperativeDefinitions::compile_first_block//
|
||||
0.4% in //Sequence::undertake_queued_tasks//
|
||||
0.2% in //CompletionModule::compile//
|
||||
|
@ -18,20 +18,20 @@
|
|||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
0.1% in //Understand::traverse//
|
||||
0.1% in //World::stages_II_and_III//
|
||||
2.0% not specifically accounted for
|
||||
2.3% not specifically accounted for
|
||||
26.4% in running Inter pipeline
|
||||
10.2% in step 14/15: generate inform6 -> auto.inf
|
||||
5.8% in step 6/15: make-synoptic-module
|
||||
9.8% in step 14/15: generate inform6 -> auto.inf
|
||||
6.1% in step 6/15: make-synoptic-module
|
||||
5.7% in step 5/15: load-binary-kits
|
||||
1.6% in step 9/15: make-identifiers-unique
|
||||
0.5% in step 4/15: compile-splats
|
||||
0.4% in step 12/15: eliminate-redundant-operations
|
||||
0.4% in step 7/15: shorten-wiring
|
||||
0.4% in step 4/15: compile-splats
|
||||
0.3% in step 7/15: shorten-wiring
|
||||
0.3% in step 8/15: detect-indirect-calls
|
||||
0.2% in step 11/15: eliminate-redundant-labels
|
||||
0.1% in step 10/15: reconcile-verbs
|
||||
0.1% in step 2/15: parse-insertions
|
||||
0.1% in step 3/15: resolve-conditional-compilation
|
||||
0.5% not specifically accounted for
|
||||
2.3% in supervisor
|
||||
0.8% not specifically accounted for
|
||||
2.2% in supervisor
|
||||
0.4% not specifically accounted for
|
||||
|
|
|
@ -72,7 +72,7 @@ Section 2 - Current action
|
|||
The noun -- documented at var_noun -- is an object that varies.
|
||||
The second noun is an object that varies.
|
||||
The person asked -- documented at var_person_asked -- is an object that varies.
|
||||
The reason the action failed -- documented at var_reason -- is an action name
|
||||
The reason the action failed -- documented at var_reason -- is an action
|
||||
based rule producing nothing that varies.
|
||||
The item described is an object that varies.
|
||||
|
||||
|
|
|
@ -615,7 +615,6 @@ int Kinds::compatible(kind *from, kind *to) {
|
|||
if (Kinds::eq(from, to)) return ALWAYS_MATCH;
|
||||
|
||||
LOGIF(KIND_CHECKING, "(Is the kind %u compatible with %u?", from, to);
|
||||
|
||||
switch(Latticework::order_relation(from, to, TRUE)) {
|
||||
case NEVER_MATCH: LOGIF(KIND_CHECKING, " No)\n"); return NEVER_MATCH;
|
||||
case ALWAYS_MATCH: LOGIF(KIND_CHECKING, " Yes)\n"); return ALWAYS_MATCH;
|
||||
|
|
|
@ -331,6 +331,8 @@ and, of course, "value".
|
|||
o = Latticework::construct_compatible(from, to, allow_casts);
|
||||
int i, this_o = NEVER_MATCH, fallen = FALSE;
|
||||
for (i=0; i<arity; i++) {
|
||||
if ((Latticework::vacuous(from->kc_args[i])) && (Latticework::vacuous(to->kc_args[i])))
|
||||
continue;
|
||||
if (KindConstructors::variance(from->construct, i) == COVARIANT)
|
||||
this_o = Latticework::order_relation(from->kc_args[i], to->kc_args[i], allow_casts);
|
||||
else {
|
||||
|
@ -341,9 +343,15 @@ and, of course, "value".
|
|||
case SOMETIMES_MATCH: if (o != NEVER_MATCH) { o = this_o; fallen = TRUE; } break;
|
||||
}
|
||||
}
|
||||
if ((o == fallen) && (to->construct != CON_list_of)) return NEVER_MATCH;
|
||||
if ((fallen) && (to->construct != CON_list_of)) return NEVER_MATCH;
|
||||
return o;
|
||||
|
||||
@ =
|
||||
int Latticework::vacuous(kind *K) {
|
||||
if ((Kinds::eq(K, K_nil)) || (Kinds::eq(K, K_void))) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ =
|
||||
int Latticework::construct_compatible(kind *from, kind *to, int allow_casts) {
|
||||
kind *K = from;
|
||||
|
|
|
@ -36,23 +36,22 @@ void Kinds::Behaviour::set_range_number(kind *K, int r) {
|
|||
|
||||
=
|
||||
int Kinds::Behaviour::is_object(kind *K) {
|
||||
if ((Kinds::conforms_to(K, K_object)) && (Kinds::eq(K, K_nil) == FALSE) && (Kinds::eq(K, K_void) == FALSE))
|
||||
if ((Kinds::conforms_to(K, K_object)) &&
|
||||
(Kinds::eq(K, K_nil) == FALSE) && (Kinds::eq(K, K_void) == FALSE))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int Kinds::Behaviour::is_subkind_of_object(kind *K) {
|
||||
if ((Kinds::conforms_to(K, K_object)) && (Kinds::eq(K, K_object) == FALSE) &&
|
||||
(Kinds::eq(K, K_nil) == FALSE) &&
|
||||
(Kinds::eq(K, K_void) == FALSE))
|
||||
(Kinds::eq(K, K_nil) == FALSE) && (Kinds::eq(K, K_void) == FALSE))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int Kinds::Behaviour::is_object_of_kind(kind *K, kind *L) {
|
||||
if ((Kinds::conforms_to(K, K_object)) && (Kinds::conforms_to(K, L)) &&
|
||||
(Kinds::eq(K, K_nil) == FALSE) &&
|
||||
(Kinds::eq(K, K_void) == FALSE))
|
||||
(Kinds::eq(K, K_nil) == FALSE) && (Kinds::eq(K, K_void) == FALSE))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue