Log of /branches/CAT_mono/Src/Eiffel/eiffel/inheritance/inherit_table.e
Parent Directory
|
Revision Log
Revision
69685 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Wed Jul 25 18:14:30 2007 UTC
(12 years, 4 months ago)
by
juliant
File length: 52247 byte(s)
Diff to
previous 69629
added statistics from CAT_interval_types branch
added feature flags (covariant/formal) from CAT_interval_types branch
added catcall check from CAT_interval_types branch
set resolved type of like Current to be monomorphic
Revision
69629 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Mon Jul 23 21:36:18 2007 UTC
(12 years, 4 months ago)
by
manus
File length: 51774 byte(s)
Diff to
previous 68945
Creation of CAT_mono branch to implement variant/invariant proposal
Revision
68945 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Fri Jun 8 14:58:16 2007 UTC
(12 years, 6 months ago)
by
alexk
Original Path:
trunk/Src/Eiffel/eiffel/inheritance/inherit_table.e
File length: 51774 byte(s)
Diff to
previous 68280
Renamed `{SYSTEM_I}.set_freeze' and `{SYSTEM_I}.private_freeze' into
`request_freeze' and `is_freeze_requested' respectively to highlight the
fact that freezing happens because of compiler needs rather than due to
project settings or users' request.
Made `{SYSTEM_I}.is_freeze_requested' available for call to allow quick
test if the system is about to be frozen anyway to avoid more complex
checks.
Changed code generation for CECIL table in workbench mode to call wrappers
that convert CECIL types into EIF_UNION and back, so that CECIL interface
is preserved (this fixes code generation issues in test#ccomp063).
Ensured that if visible features are recompiled, the code is frozen so that
CECIL wrappers are generated.
Removed precondition "has_current_class" from `{TYPE_A}.create_info'
because it is not required for the implementation.
Removed byte code generation for CECIL table as it is not used in the
current implementation.
Revision
66895 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Sun Feb 25 17:11:57 2007 UTC
(12 years, 9 months ago)
by
manus
Original Path:
trunk/Src/Eiffel/eiffel/inheritance/inherit_table.e
File length: 50980 byte(s)
Diff to
previous 65996
Support for FreeELKS:
- Added byte code for `floor' and `ceiling' operation on real types.
- Made `c_tagged_out' take an EIF_REFERENCE rather than an EIF_OBJECT, updated
all C code using it accordingly and ANY/ISE_RUNTIME.
- Added `eif_built_in.h' to keep all macros used for external "built_in' features
not implemented with Eiffel code.
- Added BUILT_IN_AS node for representing external "built_in' features:
* when a built_in routine is found, we look in $ISE_EIFFEL/studio/built_ins to
see if it has a corresponding implementation and the FEATURE_I/STD_BYTE_CODE
is generated from the implementation. Otherwise we consider it as a special
C routines.
* In the formatters, we show the actual code of the implementation and not the
external body, the same for debugging.
- Partial fix for Precursor call when call is made in an expanded class, the ancestor
version might have non-expanded arguments and return type (e.g. like Current).
- Changed CLASS_TYPE for basic types so that `type_i' is a CL_TYPE_I and not
a BASIC_I. It solves issues when you have code defined in basic types which
would not be properly generated. Since it would be generated as if it was a
normal expanded type but the types where still EIF_XXX instead of EIF_REFERENCE.
This was needed for FreeELKS since now we have implementation in the basic types.
Added some queries to CLASS_TYPE to avoid accessing `type' to get the information
since sometime we still want to know that we are in basic types. Added `basic_type'
to be used when it is a basic type. It has mostly an implication with .NET code
generation.
- Updated debugger so that one can debug all features but attributes, deferred and
constants.
Revision
65165 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Tue Nov 21 01:36:22 2006 UTC
(13 years ago)
by
patrickr
Original Path:
trunk/Src/Eiffel/eiffel/inheritance/inherit_table.e
File length: 50945 byte(s)
Diff to
previous 65081
made old and new HASH_TABLE compatible
added some catcall detection and prevention features to HASH_TABLE
changed ID_AS not to inherit form STRING but have a name_id which is an id into the names heap
switched compiler from the obsolete HASH_TABLE to the normal HASH_TABLE of base
Revision
57371 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Wed Mar 8 00:05:46 2006 UTC
(13 years, 9 months ago)
by
manus
Original Path:
trunk/Src/bench/Eiffel/eiffel/inheritance/inherit_table.e
File length: 48681 byte(s)
Diff to
previous 57106
Refactoring which separate TYPE_AS from TYPE_A.
* The TYPE_AS classes specific to the compiler have been removed, we now use the one from the
parser cluster. Only INTEGER_CONSTANT and FORMAL_CONSTRAINT_AS are compiler specific, but defined
as descendants of INTEGER_AS and FORMAL_DEC_AS.
* The return type and arguments' type are of type TYPE_A, which help us in removing many calls to
`actual_type' when the purpose was to get the TYPE_A instance as statically it was a TYPE_AS, but
dynamically it was TYPE_A.
* Rewritten the way we go from TYPE_AS to TYPE_A. This is now done in two steps.
1 - convert TYPE_AS into TYPE_A using the AST_TYPE_A_GENERATOR visitor. For Bits symbol and anchors
we get an UNEVALUATED_XX version.
2 - evaluate and check validity of TYPE_A we obtained by 1), this is done using TYPE_A_CHECKER.
TYPE_A_CHECKER is modular in the sense that it can be configured to trigger or not errors.
Useful to disable when we are in part of the UI of EiffelStudio who does not care about an
error reporting.
* Thanks to the above refactoring, I fixed eweasel tests: test#valid104, test#valid131, test#valid135.
It was due to a bug that when solving an anchor type, we did not update `feature_id', as a consequence
a comparison would yield False instead of True, because they were referring to the same anchor.
* In TYPE_A, try to add some preconditions to `associated_class' and fix all incorrect usage of it.
Use `is_valid' a lot to ensure that we have a valid type (used to check validity of types in
inheritance clause and constraints).
* Changed formatting so that we see G#x and arg#x (whereas it was Generic #x, Formal #x and arg # x)
to make things more compact.
* Updated all the other part of EiffelStudio that depended on the above changes.
* New version number 5.7.0806
Revision
48553 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Fri Feb 18 08:20:53 2005 UTC
(14 years, 9 months ago)
by
manus
Original Path:
trunk/Src/bench/Eiffel/eiffel/inheritance/inherit_table.e
File length: 47611 byte(s)
Diff to
previous 47861
Fixed eweasel tests `fake005' and `incr228' by forcing a comparison of the
original body and, this is new, with the last compiled body, to see if the
body has changed or not.
Also made sure that the cache for `Tmp_body_server' was cleared at the end
of the degree 4 for each class, so that we get the new bodies and not the
old one we used to perform the comparison `above'.
Revision
43252 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Tue May 25 23:30:03 2004 UTC
(15 years, 6 months ago)
by
manus
Original Path:
trunk/Src/bench/Eiffel/eiffel/inheritance/inherit_table.e
File length: 47649 byte(s)
Diff to
previous 43081
Changed default size of FEATURE_TABLE from 100 to 35. By doing so we speed
up the compiler by about 6% (we went from 910s down to 855s). Made sure
that in INHERIT_TABLE, `inherited_features' was always resized to the
`default_size' to ensure the smallest possible feature table. We chose
35 because at the moment there are 30 features in ANY. We tried 40 but
it slows down thing by about 11s.
Revision
41832 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Sat Mar 6 02:12:14 2004 UTC
(15 years, 9 months ago)
by
manus
Original Path:
trunk/Src/bench/Eiffel/eiffel/inheritance/inherit_table.e
File length: 47340 byte(s)
Diff to
previous 40970
Removed call to `process_creation_feature', it is now called at degree 3.
Fixed a vicious bug when changing a class from expanded to not expanded or
vice versa, then when recompiling code using that type in feature signature
we were not updating this change because we were retrieving the previous
computed type, now we don't and we force a recomputation to ensure that we
detect this change properly.
Use `NAMED_TYPE_A' instead of `CL_TYPE_A' for conversion checking.
Revision
38323 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Tue Aug 5 22:43:33 2003 UTC
(16 years, 4 months ago)
by
manus
Original Path:
trunk/Src/bench/Eiffel/eiffel/inheritance/inherit_table.e
File length: 47548 byte(s)
Diff to
previous 38161
Each time we change the assertions on an external we have to force a freeze
as we don't know yet how to generate byte code that calls to the C external
directly. I guess we have to generate 2 encapsulation, one for the Eiffel
routine which calls the external routine (with all the assertions monitoring)
and one which only encapsulate the compound of the external routine which
is called from melted code only.
Revision
38161 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Wed Jul 23 01:19:29 2003 UTC
(16 years, 4 months ago)
by
manus
Original Path:
trunk/Src/bench/Eiffel/eiffel/inheritance/inherit_table.e
File length: 47041 byte(s)
Diff to
previous 37691
Removed use of SHARED_EXTERNALS since not in system.
Always add new externals to PASS2_CONTROL since EXTERNALS will track everything
as now externals are always called through their encapsulation in workbench mode.
Freezing is necessary if EXTERNALS.is_equivalent is False.
Part of the following commit session:
Modified Files:
common/parser/parser/external.l common/parser/parser/external.y
common/parser/parser/external_parser.e
common/parser/parser/external_scanner.e common/parser/parser/external_tokens.e
eiffel/AST/external/c_extension_as.e eiffel/AST/external/cpp_extension_as.e
eiffel/AST/external/dll_extension_as.e eiffel/AST/external/external_as.e
eiffel/AST/external/external_extension_as.e eiffel/AST/external/external_lang_as.e
eiffel/AST/external/il_extension_as.e eiffel/AST/external/inline_extension_as.e
eiffel/AST/external/macro_extension_as.e eiffel/AST/external/struct_extension_as.e
eiffel/AST/skeleton/body_as.e eiffel/byte_code/ext_byte_code.e
eiffel/byte_code/external_bl.e eiffel/byte_code/external_bw.e
eiffel/compiler/externals.e eiffel/compiler/feature_table.e
eiffel/compiler/melted_info.e eiffel/compiler/pass2_control.e
eiffel/generation/rout_table.e eiffel/genericity/type_c.e
eiffel/inheritance/inherit_table.e eiffel/interface/c_extension_i.e
eiffel/interface/c_macro_extension_i.e eiffel/interface/class_c.e
eiffel/interface/cpp_extension_i.e eiffel/interface/dll_extension_i.e
eiffel/interface/external_ext_i.e eiffel/interface/external_i.e
eiffel/interface/feature_i.e eiffel/interface/il_extension_i.e
eiffel/interface/inline_extension_i.e eiffel/interface/struct_extension_i.e
eiffel/interface/system_i.e eiffel/tables/execution_unit.e
Removed Files:
eiffel/byte_code/c_ext_byte_code.e eiffel/byte_code/cpp_ext_byte_code.e
eiffel/byte_code/dll_ext_byte_code.e eiffel/byte_code/il_ext_byte_code.e
eiffel/byte_code/inline_ext_byte_code.e eiffel/byte_code/macro_ext_byte_code.e
eiffel/byte_code/struct_ext_byte_code.e eiffel/compiler/ext_feat_melted_info.e
eiffel/compiler/external_info.e eiffel/compiler/il_c_externals.e
eiffel/generation/extern_entry.e eiffel/shared/shared_externals.e
eiffel/tables/ext_execution_unit.e
Revision
36868 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Sat Apr 19 18:18:27 2003 UTC
(16 years, 7 months ago)
by
manus
Original Path:
trunk/Src/bench/Eiffel/eiffel/inheritance/inherit_table.e
File length: 45130 byte(s)
Diff to
previous 36382
New implementation of ROUT_ID_SET which uses less space in memory. We have
saved about 6% in size of COMP directory, and we have also improved performance
by having just one attribute of type INTEGER for the first element of the set,
and if there are 2 or more elements we create the SPECIAL [INTEGER] instance
that holds the remaining items.
Updated callers to `make' as it does not take an argument now.
Revision
27562 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Wed Sep 12 02:14:23 2001 UTC
(18 years, 3 months ago)
by
manus
Original Path:
trunk/Src/bench/Eiffel/eiffel/inheritance/inherit_table.e
File length: 42974 byte(s)
Diff to
previous 27526
Made same change as we did for FEATURE_TABLE. Now the key is an integer
instead of a STRING to accelerate lookups. Updated the interface to use
INTEGERs instead of STRING. This enables to perform fast lookups on the
FEATURE_TABLE we access here.
Due to interface changes in CLASS_C, `changed_features' is now an ARRAYED_LIST [INTEGER]
updated code using it to insert `feature_name_id' instead of `feature_name'.
Made `origins' an ARRAYED_LIST [INTEGER] to avoid the cost of STRING comparisons.
Revision
11912 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Tue Nov 10 07:54:39 1998 UTC
(21 years, 1 month ago)
by
manus
Original Path:
trunk/Src/bench/Eiffel/eiffel/inheritance/inherit_table.e
File length: 51693 byte(s)
Diff to
previous 11833
API/interface/e_feature.e
eiffel/AST/clickable/class_type_as.e
eiffel/AST/expressions/binary_as.e
eiffel/AST/expressions/un_strip_as.e
eiffel/AST/expressions/unary_as.e
eiffel/AST/skeleton/access_address_as.e
eiffel/AST/skeleton/access_feat_as.e
eiffel/AST/skeleton/bits_symbol_as.e
eiffel/AST/skeleton/id_as.e
eiffel/AST/skeleton/like_id_as.e
eiffel/AST/skeleton/precursor_as.e
eiffel/byte_code/feature_b.e
eiffel/compiler/array_optimizer.e
eiffel/compiler/class_dependance.e
eiffel/compiler/depend_unit.e
eiffel/compiler/feat_iterator.e
eiffel/compiler/feature_dependance.e
eiffel/compiler/feature_table.e
eiffel/compiler/remover.e
eiffel/compiler/select_table.e
eiffel/generation/attr_entry.e
eiffel/generation/entry.e
eiffel/generation/poly_table.e
eiffel/generation/rout_entry.e
eiffel/generation/special_entry.e
eiffel/inheritance/inherit_table.e
eiffel/interface/attribute_i.e
eiffel/interface/class_c.e
eiffel/interface/external_i.e
eiffel/interface/feature_i.e
eiffel/interface/system_i.e
eiffel/server/depend_server.e
New dead code removal: the old dead code removal was going through the
FEATURE_I of the system in a non-linear way which took a very long
time since the FEATURE_I are not very fast to be retrieved (We were
retrieving them through the FEATURE_TABLE). Now, the
algorythm is basically the same, we go through the whole system marking
the features alive and then their dependances, but we transfered the
usefull information for the algorithm in the dependances themselves
making it a more compact information to retrieve. Thus we had also to
update all the calls to the feature dependances in the system.
Revision
11735 -
(
view)
(
annotate)
-
[select for diffs]
Modified
Sat Oct 24 00:05:39 1998 UTC
(21 years, 1 month ago)
by
manus
Original Path:
trunk/Src/bench/Eiffel/eiffel/inheritance/inherit_table.e
File length: 51678 byte(s)
Diff to
previous 11342
Changed the way how to traverse a PARENT_LIST, we are using `area' instead of the
start/after/forth/item function. Merged `check_validity1' with the merge feature
from INEHRIT_TABLE.
Move `a_class.check_parents' from the loop, so that we do it only once.
Changed the way how to check the renamings
Cosmetics
This form allows you to request diffs between any two revisions of this file.
For each of the two "sides" of the diff,
enter a numeric revision.