/[eiffelstudio]/branches/eth/eve/Src/Eiffel/eiffel/generation/entry.e
ViewVC logotype

Log of /branches/eth/eve/Src/Eiffel/eiffel/generation/entry.e

Parent Directory Parent Directory | Revision Log Revision Log


Links to HEAD: (view) (annotate)
Sticky Revision:

Revision 94983 - (view) (annotate) - [select for diffs]
Modified Fri May 2 11:05:28 2014 UTC (5 years, 5 months ago) by jasonw
File length: 5653 byte(s)
Diff to previous 89347
<<Merged from trunk#94978.>>

Revision 89347 - (view) (annotate) - [select for diffs]
Modified Fri Aug 10 15:09:25 2012 UTC (7 years, 2 months ago) by jasonw
File length: 5725 byte(s)
Diff to previous 87305
<<Merged from trunk#89346.>>

Revision 87305 - (view) (annotate) - [select for diffs]
Modified Fri Sep 23 08:21:01 2011 UTC (8 years ago) by jasonw
File length: 5726 byte(s)
Diff to previous 87220
<<Merged from trunk#87304.>>

Revision 87220 - (view) (annotate) - [select for diffs]
Modified Thu Sep 15 08:09:35 2011 UTC (8 years, 1 month ago) by jasonw
File length: 5758 byte(s)
Diff to previous 83441
<<Merged from trunk#87219.>>

Revision 83441 - (view) (annotate) - [select for diffs]
Modified Sat Jun 5 13:52:53 2010 UTC (9 years, 4 months ago) by jasonw
File length: 5691 byte(s)
Diff to previous 83331
Renamed branch eve3 to eve. The eve branch serves as the new branch for the EVE project.

Revision 83331 - (view) (annotate) - [select for diffs]
Modified Wed May 26 18:49:35 2010 UTC (9 years, 4 months ago) by jasonw
Original Path: branches/eth/eve3/Src/Eiffel/eiffel/generation/entry.e
File length: 5691 byte(s)
Diff to previous 81487
<<Breanched from trunk@83330>> Created a branch to upgrade Eiffel Transform library to trunk.

Revision 81487 - (view) (annotate) - [select for diffs]
Modified Wed Nov 11 01:58:08 2009 UTC (9 years, 11 months ago) by king
Original Path: trunk/Src/Eiffel/eiffel/generation/entry.e
File length: 5691 byte(s)
Diff to previous 80000
Implemented simple poly table entry object aliasing, this saves on one object per addition to the table for both normal routines and invariants.  `bootstrap' shows a 4-5% speed increase (90s to 87s) by doing so.

Aliasing only occurs on the last item to be placed in to the corresponding desc list, previously the helper object was completely discarded when in fact it is a valid entry that can be reused.

Revision 80000 - (view) (annotate) - [select for diffs]
Modified Wed Jul 29 05:05:44 2009 UTC (10 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/generation/entry.e
File length: 5673 byte(s)
Diff to previous 79982
Updated copyright.


Revision 79982 - (view) (annotate) - [select for diffs]
Modified Tue Jul 28 18:20:09 2009 UTC (10 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/generation/entry.e
File length: 5675 byte(s)
Diff to previous 77520
Fixed eweasel test#final084 where if you have a type which is LIKE_FEATURE and that this type is
  anchored to another type whose type is not polymorphic but still the whole is generic, then the
  compiler would not generate a generic description of the type causing to generate just A instead 
  of A [STRING, STRING] and a crash at run-time (and assertion violation in runtime when enabled).


Revision 77520 - (view) (annotate) - [select for diffs]
Modified Wed Mar 4 01:50:25 2009 UTC (10 years, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/generation/entry.e
File length: 5695 byte(s)
Diff to previous 76432
Updated to new syntax of object test and attached/detachable types using the `syntax_updater' tool.


Revision 76432 - (view) (annotate) - [select for diffs]
Modified Mon Dec 29 23:41:59 2008 UTC (10 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/generation/entry.e
File length: 5673 byte(s)
Diff to previous 76160
Removal of `is' keyword.
Replacement of `is' by `=' for constant definitions.
Replaced `indexing' by `note'.


Revision 76160 - (view) (annotate) - [select for diffs]
Modified Mon Dec 15 05:13:15 2008 UTC (10 years, 10 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/generation/entry.e
File length: 5735 byte(s)
Diff to previous 75723
Adapted our libraries to use the alias names rather than infix/prefix since now EiffelBase is using the
  alias names for its operators.


Revision 75723 - (view) (annotate) - [select for diffs]
Modified Tue Nov 18 20:48:32 2008 UTC (10 years, 10 months ago) by alexk
Original Path: trunk/Src/Eiffel/eiffel/generation/entry.e
File length: 5727 byte(s)
Diff to previous 75567
Called wrappers for attributes that can be redeclared to self-initializing ones.

Revision 75567 - (view) (annotate) - [select for diffs]
Modified Thu Nov 13 20:39:48 2008 UTC (10 years, 11 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/generation/entry.e
File length: 5596 byte(s)
Diff to previous 74866
Added support for attachment marks at runtime in actual generic parameters:
- Updated runtime to understand annotation marks in our type arrays and all routines for 
  creating types and handling conformance.
- To properly handle conformance, a new entry in the type arrays generated in eparents.c have been
  added, it stores whether or not a type is attached. That is to say A inherits B, and when we check if
  !A conforms to !B, we modify the type array so that it has the attachment mark.
- Increased storable version number as old systems cannot understand the marks.
- Fixed catcall detection at runtime which was not properly handling attached arguments (as before
  we only check catcalls for non-void argument, but it the argument is attached, then we need to
  check that it is indeed not Void.
- Changed the Eiffel code generation so that even if we asked to create !A, we actually create A
  (i.e. we remove the annotation as they do not make sense for the type of an object).
- Made sure that a generic descriptor is created for attributes whose type is an attached non-generic type
  as well as a non-explicit type (e.g. formal/anchors).


Revision 74866 - (view) (annotate) - [select for diffs]
Modified Mon Sep 29 16:28:32 2008 UTC (11 years ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/generation/entry.e
File length: 5405 byte(s)
Diff to previous 73124
Refactored the code for simplification of the runtime type encoding code generation.
Fixed an issue where A [INTEGER], A [?INTEGER] and A [!INTEGER] would generate 3 different
  CLASS_TYPEs instances where one is enough since an expanded type is always attached.
Added support (but disabled it for the time being) for encoding the attachment mark in the
  runtime type encoding, this is done via {TYPE_A}.annotation_flags which currently always
  return 0.
Changed the way `eparents' is generated, instead of generating again the class name, we simply
  generate the type id and we use that `type_id' to get the class name via the `cn_generator' field
  of the `struct cnode' structure.


Revision 73124 - (view) (annotate) - [select for diffs]
Modified Sun Apr 20 20:58:53 2008 UTC (11 years, 5 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/generation/entry.e
File length: 5409 byte(s)
Diff to previous 72419
Redesigned the generation of polymorphic wrapper: instead of generating it during the code
  generation of a routine we now do it during the generation of the polymorphic table. Doing
  so fixes eweasel tests test#final051, test#final052, test#final053 and test#final054. The
  execution is slightly slower now since the computation of `pattern_id' for each ENTRY is
  costing a little.

Made sure that `EIFFEL_HISTORY.poly_table' always return non-void if a valid routine ID is used.
Removed optimization of not having deferred routines in the table of routine, it actually made things
  more complicated especially since we need to know the `pattern_id' of the routine on which the
  call is being made.
Added a query `is_deferred' to show that all routines in a table are deferred. It is better than
  returning a Void polytable.

Fixed polymorphic calls on external involving generics, they were not processed at all (this
  fixes test#final054).

Changed `meta_type' for expanded type to simply return the same as reference type since at C
  code generation time they are both EIF_REFERENCE. Fixed `meta_type' in LIKE_CURRENT to be still
  LIKE_CURRENT as it is needed to know how `like Current' is seen in descendant class especially
  when it is used to represent a basic type.

Renamed `feature_i_with_body_index' into `feature_of_body_index' since it returns a FEATURE_I.


Revision 72419 - (view) (annotate) - [select for diffs]
Modified Sat Feb 23 00:45:27 2008 UTC (11 years, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/generation/entry.e
File length: 5319 byte(s)
Diff to previous 68280
Changed SUPPLIER_AS to only create the supplier on demands.

Merged TYPE_I and TYPE_A hierarchies in just TYPE_A one.
1-The major change is that now to compute the associated class type (CLASS_TYPE instance) of a TYPE_A
  one has to provide a context in which the TYPE_A instance appear. If no context is provided, then
  formal generics are not replaced. For example: LIST [G] alone will simply give you the LIST [G]
  CLASS_TYPE, but if you do it in the context of TEST [INTEGER], then it will return the
  LIST [INTEGER] CLASS_TYPE.
2-Updated all callers accordingly.
3-Simplified a few calls where before we did `type.associated_class_type.associated_class' to just
  `type.associated_class'.
4-Added new preconditions to the context provided, it really helped finding out when we were not doing
  things properly especially in code generation when regenerating code from parent into descendant.
5-Eventhough TYPE_I disappeared, I kept TYPE_C and its descendants since they are useful to have
  them for C code generation and quick discimination for TYPE_A instances.
6-Made validity of types better controled by checking more things in `{TYPE_A}.is_valid'. For example
  that if type used to represent a class which was expanded and that it is not expanded anymore, then
  the type is not valid anymore.
7-The most problematic change with TYPE_I/TYPE_A was that they had different notion of `is_external'
  we have added `is_true_external' to simplify the code in certain areas where the old TYPE_I semantic
  was needed.

Code generation change:
1-We now assume that the default context is always `{BYTE_CONTEXT}.context_class_type'. Then in
  `real_type' and `creation_type' we use `{TYPE_A}.evaluated_type_in_descendant' to properly evaluate
  a type from the ancestor code in the current context. Very useful for regeneration of inherited
  assertions and replicated features. Before it worked, but it was not clear how to do things properly,
  now it is clear.
2-Changed the way we generate the type information for like arguments: we simply nest calls to resolve
  the type of the arguments. This affects the interpreter and C code generation which includes a level
  ID for computing the type of generics.

C Code generation change:
1-Because debugging was too difficult at some point during that work and also because the name mapping
  we were using limited us to 32767 types and 131071 routines, I've changed the mechanism to not use
  the `encode.c' modules in C/bench and did everything in Eiffel. So now we simply write for a feature
  name FXXX_YYY where XXX is the type ID and YYY the body index. The same kind of changes have been
  done for other names (See ENCODER class for details.).
2-We also use `type_id' instead of `static_type_id' for names. The reason it is safe to do so is because
  `type_id' never changes in workbench mode and that in finalized mode, even if you have different
  incremental recompilation, 2 projects should generate more or less the same code at the ID levels
  making it easier to compare them.
3-Changed the way type are created. Instead of having a CREATE_INFO instance in the TYPE_I objects
  used to properly generate the type, we simply use the original TYPE_A instance. That way when we
  have an anchor, we either generate its `actual_type' or its anchor spec depending on the value of
  `use_info. We still use CREATE_INFO to generate the type information but instead of being an object
  in each TYPE_I, it is merely a once that we reinitialize each time we need it.
4-ONE CRITICAL ASPECT OF THE CHANGE #3 was that storable depends on the way type descriptions are generated
  and thanks to eweasel test#storable013 I was able to catch this much earlier in the process.
5-Generates less polymorphic tables for attributes and types specification. What happened before was
  that when we needed a polymorphic type specification for example to create `like x' where x is covariantly
  redefined, we were generating at the same time the polymorphic table for `x' even though if `x'
  was not actually used in the system. This reduces by a tiny amount only the size of the executable.
6-Made the DESCRIPTOR entries much smaller than they used to be by computing the number of ancestors
  instead of allocating for the numbers of routines which was really silly.

IL code generation change:
1-Provided a implementation for creation of BIT constants in .NET however it does not completely work yet,
  it has to do with the manner we generate the BIT_REF class.
2-Changed the way we compare signatures, we store a CLASS_TYPE and a routine ID instead. And then when
  needed we refetch the FEATURE_I object to perform the signature comparions. The issue is that the previous
  solution would not work if NATIVE_ARRAY and TYPED_POINTER do not record all the possible genereric
  derivations in which they are present which is now the case for simplicity.
3-Fixed a bug in code generation for a TYPE_FEATURE_I that is instantiated as a basic type. We would
  generate its associated reference type instead of the basic type. It was not caught before because those
  routines where never called at runtime unless you had a formal generic parameter creation constraint.
4-Fixed an inconsistency shown by eweasel test#incr168 where a precondition check was generated eventhough
  none was needed because one inherited routine had a True precondition. The C code was doing it ok, but
  not .NET
5-Found out see eweasel test#final041 that we first generate inherited assertion and then precondition,
  which is the contrary of what is done in melted or C code generation.
6-Simplified creation of manifest ARRAYS and TUPLE by avoiding a local variable.


Debugger:
1-Updated the code accordingly to the TYPE_I/TYPE_A merge
2-Fixed bug in {DBG_EVALUATOR}.prepare_parameters so that we do not use BYTE_CONTEXT to resolve
  the type but `instantiation_in' instead. It seems to solve one case that the previous debugger did
  not handle (See updated comment).
3-Fixed precondition violation in
  {AST_DEBUGGER_EXPRESSION_CHECKER_GENERATOR}.expression_or_instruction_type_check_and_code where
  we were still trying to evaluate in the descendant if the parent evaluation failed. Causing some
  precondition violations since the AST was not completely annotated with IDs needed for resolution.

Bug fixes:
1-Fixed issue with the way we maintained {CLASS_C}.generic_features, because you could rebuild the list
  without recompiling descendants (case of modifying only a contract of the class) and the rebuilding
  would yield new routine IDs. Then during either type checking or code generation the evaluation of 
  `{TYPE_A}.evaluate_type_in_descendant' could fail because it is not find the new routine ID in the
  descendant class. Now we preserve the routine ID as long as we can, same with feature ID.
2-Made `feature_of_rout_id' works to find the invariant feature.
3-Made sure that when removing an ID from a server it is also removed from the TMP server. Added
  a `not_present' postcondition after calling `remove' to ensure that.


Revision 68280 - (view) (annotate) - [select for diffs]
Modified Sun May 13 18:06:54 2007 UTC (12 years, 5 months ago) by alexk
Original Path: trunk/Src/Eiffel/eiffel/generation/entry.e
File length: 5598 byte(s)
Diff to previous 58325
Supported reattachment of objects of types that are generic derivations
with expanded parameters to entities of types that are suitable generic
derivations with reference parameters.



Revision 58325 - (view) (annotate) - [select for diffs]
Modified Thu Apr 20 16:05:16 2006 UTC (13 years, 6 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/generation/entry.e
File length: 5863 byte(s)
Diff to previous 58027
Moved trunk/Src/bench/Eiffel to trunk/Src/Eiffel.

Revision 58027 - (view) (annotate) - [select for diffs]
Modified Wed Apr 5 07:08:57 2006 UTC (13 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 5863 byte(s)
Diff to previous 57371
Fixed mixing paranthesis in indexing clause for the licensing.
Added missing license reference in newly created Eiffel classes.


Revision 57371 - (view) (annotate) - [select for diffs]
Modified Wed Mar 8 00:05:46 2006 UTC (13 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 5862 byte(s)
Diff to previous 56544
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 56544 - (view) (annotate) - [select for diffs]
Modified Tue Jan 17 12:06:13 2006 UTC (13 years, 9 months ago) by alexk
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 5874 byte(s)
Diff to previous 56535
Avoided using status of byte context to evaluate type in favor of direct evaluation.

Revision 56535 - (view) (annotate) - [select for diffs]
Modified Tue Jan 17 01:37:10 2006 UTC (13 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 5958 byte(s)
Diff to previous 55712
Added text of the GPL license to all classes of the compiler.


Revision 55712 - (view) (annotate) - [select for diffs]
Modified Fri Nov 11 19:11:56 2005 UTC (13 years, 11 months ago) by alexk
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 4544 byte(s)
Diff to previous 50378
Removed check whether a type has formal before calling "instantiation_in"
because the latter will also be used for calculating "like Current" type.


Revision 50378 - (view) (annotate) - [select for diffs]
Modified Mon Apr 25 04:56:38 2005 UTC (14 years, 5 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 4571 byte(s)
Diff to previous 43826
Fixed improved eweasel test exec199 because we need to track return types of
queries which are formal generic parameter, so that we know exactly the type
in descendant classes.


Revision 43826 - (view) (annotate) - [select for diffs]
Modified Tue Jun 15 18:10:23 2004 UTC (15 years, 4 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 4531 byte(s)
Diff to previous 43084
Updated code using `instantiation_in' from TYPE_I since now the parameter has
  to be a CLASS_TYPE and not a GEN_TYPE_I.
Added missing precondition to `update' and `entry'.


Revision 43084 - (view) (annotate) - [select for diffs]
Modified Tue May 18 04:14:09 2004 UTC (15 years, 5 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 4489 byte(s)
Diff to previous 36644
Used two words names instead of just one for `put_xx', `read_xx' and `last_xxx' routines.
Used specific `put_xxx_id' routines to generate runtime IDs. This removes those
  very annoying `- 1' in the code because the runtime and the compiler are not
  indexed the same way.


Revision 36644 - (view) (annotate) - [select for diffs]
Modified Tue Apr 8 17:14:57 2003 UTC (16 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 4482 byte(s)
Diff to previous 26913
Added evaluation of `type' in the context of CLASS_TYPE associated to `type_id'
to enable proper generation of attribute type description which is used for proper
type creation in generated code. It is similar to the problem we encountered
in ATTR_DESC with storable in version 1.13.


Revision 26913 - (view) (annotate) - [select for diffs]
Modified Sun Aug 12 23:50:20 2001 UTC (18 years, 2 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 3917 byte(s)
Diff to previous 11912
Merged branch `dev46_manu' to the trunc.


Revision 11912 - (view) (annotate) - [select for diffs]
Modified Tue Nov 10 07:54:39 1998 UTC (20 years, 11 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 3876 byte(s)
Diff to previous 11867
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 11867 - (view) (annotate) - [select for diffs]
Modified Tue Nov 10 02:57:52 1998 UTC (20 years, 11 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 3612 byte(s)
Diff to previous 11844
Cosmetics


Revision 11844 - (view) (annotate) - [select for diffs]
Modified Sat Nov 7 02:16:58 1998 UTC (20 years, 11 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 3613 byte(s)
Diff to previous 11598
Removed `is_set', `is_polymorphic' from ENTRY since they are not used anymore
(replaced by the functions in EIFFEL_HISTORY).

Also add an argument to the creation of POLY_TABLEs.


Revision 11598 - (view) (annotate) - [select for diffs]
Modified Tue Oct 13 01:17:58 1998 UTC (21 years ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 4172 byte(s)
Diff to previous 11555
Changed the C generation, now it is using a string buffer before writing on disk.


Revision 11555 - (view) (annotate) - [select for diffs]
Modified Thu Oct 8 20:45:44 1998 UTC (21 years ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 4136 byte(s)
Diff to previous 11424
Modify the way how to call `generated_id' to conform to the fact that it is
now this feature which is doing the generation and not the caller.


Revision 11424 - (view) (annotate) - [select for diffs]
Modified Mon Sep 28 02:02:30 1998 UTC (21 years ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 4150 byte(s)
Diff to previous 11298
Add two new attributes `is_set' and `is_polymorphic'. This enables to have a kind
of cache mechanism at generation time, because you won't have to compute again if
`rout_if' from `type_id' is polymorphic or not (this save a lot of time). Of course
the speed improvement depends on the POLY_CACHE or EIFFEL_HISTORY size (the bigger
it is, the better it is)


Revision 11298 - (view) (annotate) - [select for diffs]
Modified Sun Sep 13 20:40:22 1998 UTC (21 years, 1 month ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 3516 byte(s)
Diff to previous 11064
Improved the conformance of generic by writing in a file instead of creating a STRING.
Fixed one bug related to the use of `has_associated_class_type' in CL_TYPE_I.
Fixed one bug related to a bad generation of C code and the GC


Revision 11064 - (view) (annotate) - [select for diffs]
Modified Wed Aug 19 03:26:46 1998 UTC (21 years, 2 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 3549 byte(s)
Diff to previous 10889
Fixed a bug in generic conformance with `gen_type_string' which needs an
argument which specifies in which mode we are. for DESC_UNIT, it's False
and for POLY_TABLE it's True


Revision 10889 - (view) (annotate) - [select for diffs]
Modified Tue Aug 11 00:08:20 1998 UTC (21 years, 2 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 3550 byte(s)
Diff to previous 10818
Updated generic conformance


Revision 10818 - (view) (annotate) - [select for diffs]
Modified Thu Jul 30 20:33:23 1998 UTC (21 years, 2 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 3536 byte(s)
Diff to previous 10419
Add the generic conformance to the compiler


Revision 10419 - (view) (annotate) - [select for diffs]
Modified Wed Jun 17 00:47:09 1998 UTC (21 years, 4 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 2958 byte(s)
Diff to previous 10314
Improvement on the speed of the finalization time.

First, I removed all the *_UNIT* classes from the `polymorphism' cluster. I merged the definition
with the *_ENTRY* classes. Why? Basically, because from the *_UNI* which were stored in the EIFGEN
directory we were rebuilding a set of *_ENTRY* classes. This implies a big penalty, because we
are using SORTED_TWO_WAY_LIST as a layout structure and each time we are inserting an element it takes
forever.

The first step was to switch all the code from *_UNIT* into *_ENTRY* and this has been done without
any problems. However, we thought it was not enough because the data structure was not fast enough,
so we decide to change it and to use a sorted array.

Since the creation of the data structures is done mostly at degree -4, we decided to create unsorted
array with elements and just before to store them in the EIFGEN we will sort them using the quicksort
algorithm. The change in the data structure implies to update all the traversal and since it was
sorted I've created a binary search algorithm to do a quick search on the data structure.

Now, it is very fast to finalize.


Revision 10314 - (view) (annotate) - [select for diffs]
Modified Mon Jun 1 22:27:43 1998 UTC (21 years, 4 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 1745 byte(s)
Diff to previous 5304
Removed DLE from the compiler.
This implies some code removing and small changes to the code so that it won't include
any DLE specific classes


Revision 5304 - (view) (annotate) - [select for diffs]
Modified Fri May 24 15:42:07 1996 UTC (23 years, 4 months ago) by ericb
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 1937 byte(s)
Diff to previous 4877
unused features removed


Revision 4877 - (view) (annotate) - [select for diffs]
Modified Tue Apr 23 16:14:56 1996 UTC (23 years, 5 months ago) by ericb
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 2133 byte(s)
Diff to previous 3652
new feature `generated_static_feature_type_id'


Revision 3652 - (view) (annotate) - [select for diffs]
Modified Mon Jan 15 15:32:22 1996 UTC (23 years, 9 months ago) by ericb
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 1750 byte(s)
Diff to previous 2739
new abstractions for system counters (class ids and type ids)


Revision 2739 - (view) (annotate) - [select for diffs]
Modified Tue Jul 25 11:08:18 1995 UTC (24 years, 2 months ago) by ericb
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 1747 byte(s)
Diff to previous 1280
dle


Revision 1280 - (view) (annotate) - [select for diffs]
Modified Fri Oct 28 22:59:39 1994 UTC (24 years, 11 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 1555 byte(s)
Diff to previous 621
PELKS conformance


Revision 621 - (view) (annotate) - [select for diffs]
Modified Thu Jul 14 21:37:03 1994 UTC (25 years, 3 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 1526 byte(s)
Diff to previous 207
*** empty log message ***


Revision 207 - (view) (annotate) - [select for diffs]
Modified Thu May 13 09:52:29 1993 UTC (26 years, 5 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 1522 byte(s)
Diff to previous 187
*** empty log message ***


Revision 187 - (view) (annotate) - [select for diffs]
Modified Mon May 10 17:42:24 1993 UTC (26 years, 5 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 1201 byte(s)
Diff to previous 18
*** empty log message ***


Revision 18 - (view) (annotate) - [select for diffs]
Added Fri Mar 12 17:44:01 1993 UTC (26 years, 7 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/eiffel/generation/entry.e
File length: 1197 byte(s)
Initial revision


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.

  Diffs between and
  Type of Diff should be a

  ViewVC Help
Powered by ViewVC 1.1.23