Parent Directory
|
Revision Log
Links to HEAD: | (view) (annotate) |
Sticky Revision: |
fixed missing locals
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
Creation of CAT_mono branch to implement variant/invariant proposal
Ensured generic signature fingerprint has no trailing zeroes and is empty when there are no arguments or result of formal generic type in particular.
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.
Support for multi constraint generics: - Central new class is TYPE_SET_A: It provides features for type checking and feature lookup. (the TYPE_A interface is not perfectly complete until now) - Added EXTENDED_TYPE_A: It basically encapsulates a type and a feature renaming. - Changed parser to accept the new syntax. - Adapted validity checks for generics to reflect the new rules. - Changed AST_FEATURE_CHECKER_GENERATOR in particular `process_call' and its siblings to select the so called `multi_constrained_static'. This is the actual static type of the target. It is done for each access on a multi constraint generic. - Added error classes VTGC*, VTGD* and VTMC*. - Changed code which called `constrained_type' feature to make it capable of handling multi constraints. This is in most cases achieved through handling these cases explicitly: Autocompletion, query language and debugger are not yet adapted and don't work properly in the presence of multi constraint formals. - Changed AST_DECORATED_OUTPUT_STRATEGY and the like to pretty print the multi constraints correctly. Support for recursive formals: - I added a second pass AST_FORMAL_GENERICS_PASS2 which handles the registration of suppliers and transformation of the types into the right class (formal or class type). The rest of the changes are targeted to either one of these.
Renamed `is_deep_equal' into `is_safe_equivalent' since there is `is_deep_equal' from ANY when compiling with FreeELKS.
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.
Avoided precondition violation when attempting to get custom attributes on inherited external abstract methods.
Added {FEATURE_I}.has_rescue to compiler data and display using pixmaps this information in the call stacks tool.
Removed the requirement that external routine should be frozen to access them statically.
Added lookup for associated property setter when an assigner procedure is declared only in an ancestor and not in the current class, but the property setter still has to be generated (this fixes bug#11876, test#dotnet047, test#dotnet048).
Supported indexing tags that allow for custom attributes for features to be set on interface only ('interface_metadata') or implementation only ('class_metadata') basis like it is done for classes (this fixes bug#11773).
Taken into account the availability of property getter and setter that might be associated with a feature.
some changes to make use of the new ID_AS behavior
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
Ensured a feature is recompiled if its property status or its property name are changed.
Corrections for problem reports: PR #11144, PR #11156, PR #11157, PR #11147, PR #11146 - Breakpoint calculation for loops was wrong. - Agents on constant attributes didn't work. - No breakpoints for inline agents of invariants are generated anymore. - Locals in inline agents of inherited assertions crashed the compiler.
Corrected the calculation of the first breakpoint slot index of a feature. Works now even more correct than in 5.6.
Added debugger support for inline-agents. Improved behavior when stepping trough agent creations and calls. Optimized ROUTINE by providing a more compact set_rout_disp_final method for finalized code.
Renamed classes VPIR_1 and VPIR_3 to VPIR1 and VPIR2.
- Corrected several problems with inline agents. (Specially when they occur in assertions) - Added semantic checks for locals and arguments (VPID) of inline agents - Optimized agents calls for classic eiffel. - It is now possible to make agents on named tuple attributes.
Added missing postcondition to `written_class' to states it cannot be Void.
Forced .NET properties to be specified explicitly, their names are either specified as a string or match the feature name if an identified `auto' is used instead of a property name.
- Support for agents on attributes and externals - Support for inline agents. - No freeze anymore when creating a new agent. - Removed bug in Named tuples
It is now possible to call `same_signature' on two features with different names.
Implemented static call on anchored class and formal type class.
Made check for VDRD(6) stricter to ensure that expandedness status of an attribute is not changed.
Tracked properties and their getters and setters associated with features.
Moved trunk/Src/bench/Eiffel to trunk/Src/Eiffel.
Fixed mixing paranthesis in indexing clause for the licensing. Added missing license reference in newly created Eiffel classes.
Removed a check that avoided creation of ANY_FEATURE_B in classic mode as it does not make any difference for code generation.
New compiler with new configuration system For now only the batch compiler works
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
Added a query to find out if a feature has an assigner command in some ancestor of the given class.
Added a feature to find an associated assigner routine in a given class.
Refactored temporary ast, body and invariant servers into tmp_ast_server and keep information in memory until after degree 2.
Added text of the GPL license to all classes of the compiler.
Taken into account process-relative status of a once routine during recompilation to ensure that an optimized access to it is generated correctly (e.g., in finalized mode, see eweasel test incr235).
Changed signature of `instantiate' to accept LIKE_CURRENT that can now be used during type checking in addition to the previously used CL_TYPE_A.
Added a check to prevent inheritance links to external classes from expanded types. Changed signature of a feature "real_body_id" that now requires a class type for which the real body index is to be evaluated, because using the first class type to calculate the index gives incorrect results for class types that have differently generated code, e.g. for expanded class types.
Changed VFAC error report to use assigner feature from the current class rather than the one from the class where it is defined.
Compared actual types rather than syntactically specified ones when checking for assigner command validity to handle anchored types properly. Removed unused feature.
Removed features that deal with escaped feature name because it is no longer used as string escaping is done by the generation buffer itself.
Updated a validity rule description to match ECMA standard wording. Replaced non-standard validity error codes with new standard ones.
Removed useless inheritance to SHARED_CODE_FILES.
Added a test that features refer to the same version of assigner command. Added checks for violation of assigner command validity rules that are not in standard yet. Improved error report for VFAC violation.
Setting of `is_il_external' for E_FEATURE can now be done in FEATURE_I, so that it also covers .NET attributes and deferred routines.
Supported declaration of assigner command. Added checks for violation of assigner command validity rule (VFAC). Added a test to ensure that `real_body_id' does not cause feature call on void target when a new feature is just added, there was error in compilation and the feature is to be shown in flat view.
Supported convert mark on feature alias. Supported different kinds of alias names (binary/unary operator, bracket). Added test if two features have the same alias name. Change equivalence test to take into account changes in aliases. Added checks for new validity rules that aliases of joined or redeclared features are the same.
Added an alias name for a feature.
Extended incrementality test to track changes of constant status so that when constant attribute in a class is changed into non-constant feature, the clients or descendants will be checked to ensure that multi-branch instruction validity rules are not violated by this change (e.g., this fixes bugs incr087 and incr092).
Removed `compute_byte_code' and `type_check' which have been replaced by the AST_FEATURE_CHECKER_GENERATOR. Simplified `check_types' using the AST_TYPE_CHECKER visitor. Note: `special_arguments' should be improved, better remove its usage.
In `check_feature' added a call to `AST_CONTEXT.set_current_feature' so that for error reporting we know which features the error is (useful to report errors in eweasel test valid158).
Slightly optimized a test for presence of formal generics and anchored types in feature signature.
Extended a feature that tests whether its signature depends on an anchored type or not to cover also the case of formal generic parameters.
Added a feature to test whether feature signature depends on an anchored type or not.
Fixed a VWEQ compiler error not detected before since it was disabled for Void.
Added a query to identify process-relative features (e.g., once routines) as opposed to thread-relative ones.
Renamed BYTE_CONTEXT feature "clear_all" to "clear_feature_data".
Although it is not used, updated `written_type' with recent changes of `written_type' in CLASS_TYPE. Removed `written_type_id' because it was not used and because it can be obtained through `written_type.type_id'.
Renamed TYPE into TYPE_AS
Allowed debugging of features of SPECIAL since there is nothing special about SPECIAL.
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.
Simplified creation of FEATURE_B or ANY_FEATURE_B instances by using new creation routine `make'. By doing so, it also fixes bug when calling the precursor version when redefining a routine of ANY where in IL code generation we were generating an infinite recursion because `precursor_type' was not set in the case of a Precursor call.
When we handle a routine written in ANY, we create a descendant node ANY_FEATURE_B of FEATURE_B so that proper inlining of the routine of ANY is done at code generation time in IL code generation.
Removed `is_none_attribute' since we don't do a special case anymore for NONE attribute. Added `escaped_feature_name' for C code generation of name for `infix' or `prefix features. Redeclaration are now checked through normal `conform_to', no need for `valid_redeclaration'. Now `update_instantiator2' updates all types, not just the generic one.
Removed former SCOOP implementation as it is now obsolete and if any new implementation there is (through ETH) most likely it will be completely different from the previous one. We only keep `separate' at the type checking level, but not for code generation.
Use `twin' instead of `clone' which is now made obsolete. Use `as_lower' and `as_upper' whenever appropriate instead of cloning and then calling `to_lower' or `to_upper'.
fixed access to body for performance issue in number_of_breakpoint_slots
fixed case where body is Void
Added number_of_all_precondition_slots
Prevented use of static access on externals that are not frozen or that have assertions.
Removed previous fix, it is now replaced by forcing a freeze each time we add an external routine to the melted_set of CLASS_C (add_feature_to_melted_set).
Fixed eweasel bugs incr212 where changing the argument order was not changing the C generated code that needed to be changed since some argument names have changed.
Since we always generate an encapsulation of the external routines which has `Current' as first argument, there is no problem in having an Eiffel routine being redefined as an external one and conversely.
Removed redefinition of `valid_body_id' from EXTERNAL_I and updated version from FEATURE_I to be True for an external too as now they are by default call through their encapsulation. No more redefinition of `new_rout_entry' as the one of FEATURE_I since we always call externals through their encapsulation. Removed non-used routines of EXTERNAL_I. Updated `generate' so that it can work for both .NET and classic Eiffel. 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
Replace !! with create keyword. Replace creation keyword with create keyword. Change order of elements in Precursor instructions.
Renamed `is_procedure' into `is_routine' as this is exactly what it represents.
Fixed incorrect implementation of `infix "<"' since `feature_name' might not be initialized (just after object creation for example) and we need to take this into account for invariants.
Maded FEATURE_I comparable so that we can sort features by their name.
Added precondition to to `check_expanded'
Made sure that constants defined in external classes are also marked `is_il_external'.
Added `is_il_external' to quickly find out if we are handling an IL external. Added post-condition to `is_c_external'.
Removed non-used local variables.
New feature to get byte code of a custom attribute applied on an Eiffel routine.
Previous modification on `has_static_access' forbid the access to C externals in IL code generation.
Added `extension' as a feature of FEATURE_I. Updated descendant that already had an `extension' feature. Simplified code of `has_static_access' in FEATURE_I to reflect the above change.
Fixed `number_of_precondition_slots' and `number_of_postcondition_slots so that they take into account case where there is no body (it happens for external routines defined in a non-Eiffel class representation (usually XML for a .NET class)). Fixed `debug_output' so that it satisfies its inherited post-condition where Result should not be Void.
Added `has_return_value' to quickly find out if we are handling an attribute, a constant or a function.
Fixed `new_deferred' so that when `il_generation' we save the `extension' info of an external into the deferred. Enabling us to call the new deferred fetature directly.
Renamed `is_formal_attribute' into `is_type_feature' as it is the new name of the class TYPE_FEATURE_I.
Added inheritance to DEBUG_OUTPUT so that we see the feature name in debugger. Renamed `base_class_id' into `class_id'. Moved commented code to a different place.
Added `is_formal_attribute' to find out if a FEATURE_I objects is a FORMAL_ATTRIBUTE_I one or not.
Fixed `equiv' so that changing a once into a non-once and vice versa implies that a propagation will be done on all client of the class. Needed for correct generation of once optimization. Fixed eweasel entry `incr153'.
Removed usage of `set_private_external_name' as we decided now that the name of an external feature should not be modified by the user as it can have some big consequences since the compiler is not checking that the new name is valid.
Cosmetics on feature header comments (removed `the')
Improved precondition of `private_external_name' so that it is not called when no private_external_name_id has not yet been set.
In `generate_il' we now set `set_current_feature' from BYTE_CONTEXT. This is required as we take the `current_feature' from BYTE_CONTEXT during code generation for fastest access to the FEATURE_I being generated (rather than having to go through the FEATURE_TABLE)
Cosmetics (added indexing clause) Made `access' frozen which now calls `access_for_feature' which is deferred. `access_for_feature' has two arguments `access_type' and `static_type'. `static_type' will not be Void when this is a call to Precursor or a static accesss call. Removed `original_name_id', `implemented_in' and `belongs_to_interface'. We now use `origin_feature_id', `origin_class_id' and `written_feature_id' for IL code generation. Removed all booleans and replaced them by an INTEGER_16 `feature_flags'. We use functions now to query the state of a FEATURE_I. This saves about 4MB in space for a 160MB EIFGEN without noticable performance degradation. Renamed `empty_body' into `is_empty'.
Fixed `has_static_access' so that it returns True for a C externals in IL code generation.
Forgot to add static constant access in case of IL generation.
Implementation of static feature access on constants. Enabled inspect statement to have static feature access on attribute.
Added supports multiple inheritance for IL code generation.
Added a feature that checks a feature can be called in a static way.
Use of NAMES_HEAP so that we store an INTEGER rather than a STRING on external. The integer is used for storing: - feature/alias name - parameter types - return type - header file name.
Added `set_renamed_name_id' that is a synonym of `set_renamed_name'.
Use of `feature_name_id' anywhere it was feasible. Removed inheritance from PART_COMPARABLE since never used, accordingly removed definition of infix "<".
Fixed `check_argument_names' where VRLE errors were not reported anymore for two contiguous identical argument name. This was due because we were before iterating on the area and now we don't do this anymore. At the same time, optimized this feature to never use the name, but the name ID instead.
Replaced `feature_name' attribute by a function using the new INTEGER attribute `feature_name_id'. Doing so, the `hash_code' is now the `feature_name_id'. Same with `private_external_name'. Updated `set_feature_name', `set_renamed_name' and `set_external_name' to reflect that change and to record the names in NAMES_HEAP. Removed `argument_names', it is better to use `arguments: FEAT_ARG' instead. Updated code that was using `argument_names' to use either arguments or the fact now they are integers.
Merged branch `dev46_manu' to the trunc.
Complete a bug fix for the dead code removal. Previously the problem was that we did not keep `x' in `a: like x' where x was a feature. We fixed the problem, but we forgot the following case `a: ARRAY [like x]'. This is now done by adding in TYPE_A a new feature called `update_dependance'.
Added a new feature `set_renamed_name' which is used only when renaming a routine. It does the same as `set_feature_name' except in the case of an EXTERNAL_I which does not define an alias name.
Modified completeley the validity checking of the constraint part of a generic class. Before, it was not able starting from scratch to detect invalid use of creation constraint clause, now it is. Fixed a bug of command/query separation for `check_constraints' defined in TYPE_A. The remaining problems are a missing incrementallity check when someone changes the creation clause of a class used as a generic parameter of a generic class.
Implementation of the new default_create mechanism. In SYSTEM_I changed the run-time licensing number.
CONSTRUCT_LIST now inherits from ARRAYED_LIST instead of FIXED_LIST.
fixed a painful little bug in the dead code removal concerning the anchored features.
When using precompiled generic classes, their body_ids have to be updated but they were not updated in the depend server. This correct the bug.
Fixed the bug with default rescue, by memorizing in the byte code itself that we do have a default_rescue. This information is used when generating the byte code or the breakpoints.
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.
Improved traversal speed of `argument_names' which is an EIFFEL_LIST [ID_AS] by using `area' and local variables. Also changed the way how to call `index_of' from CONSTRUCT_LIST which has been changed into `locate_index_of' which has a new argument to give the start position in the search so that the cost is now "n(n+1)/2" instead of "n*n".
Use a local variable to access PATTERN_TABLE. Now, all the features of SPECIAL, i.e. put and item can be inlined
Fixed a bug in the new reverse engineering which generates the body of features.
Changed the C generation so that it generates into a string buffer first, and the it writes the content of the buffer into a file.
Rescue clause + external added to the CASEGEN generation
attempt integraion
Changed LINKED_LIST [CLASS_TYPE] into TYPE_LIST
Replaced all the occurences to the old AST *_AS_B by *_AS.
Speed up the extension of the list with `forth'
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.
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
Cosmetics Speed up the access on `item' from Body_server
Adaptation to the new HASH_TABLE with `found_item' New way to create the constraint_error_list to be conform to the new implementation of `check_constraints'
Cosmetics (Removed semicolon) Use precursor to simplify the inheritance scheme Simplify some features
Cosmetics Optimizations in the degree -2 and -5. We removed an unused loop, ie we can merge two loops into one.
Cosmetics
Added default_rescue stuff. Typos.
fixed a bug in CEC. When a new featured whose pattern id does not exist, freezing is automatically enforced.
optimization
Concurrent Eiffel
set/reset cluster in INST_CONTEXT
class_name => name in CLASS_C (comig from E_CLASS)
ANSI C/C++ code generation: redefinition rule
C++ extension
optimization: `is_equal' called on IDs instead of `equal' unused local removed precondition not Void added
new abstraction: PATTERN_ID (multiple precompilation)
bug fix: current break mark wasn't displayed all the time (generic derivations
server ids are of type IDABLE (instead of INTEGER) `trace' implemented in COMPILER_ID
new abstractions for system counters (body id, body_index)
new abstractions for system counters (class ids and type ids)
new abstractions for system counters (class ids and type ids)
an E_FEATURE knows from which class it was created
new abstractions for system counters (only ROUTINE_ID so far)
signature features removed (use E_FEATURE instead)
different output routines inherits from COMPILER_EXPORTER (export status)
implementation of the API
`body': able to retrieve the body of uncompiled feature (after a Degree 4 error for instance)
debug statement `stone': optimization
dle
abstract parser: <type> => <type_B>
inheritance from BASIC_ROUTINES removed
`is_debuggable' returns false for basic types or special classes (SPECIAL and TO_SPECIAL) => we cannot debug built-in features
log files
cosmetics inlining log file for generated features and removed features disk_item instead of item for debug info => no side effect to the compiler
PELKS conformance bug fix: check before accessing (tmp_)body_server => used by feature_stones
inlining
case stuff
externals: new semantic
Array optimization: loop for the optimized byte code before generating the code
`valid_body_id' is used as a precondition for `real_body_id', redefined in EXTERNAL_I if encapsulated (new syntax for external features)
case stuff
debug statement for `equiv' `body' has been added
case stuff
new protocol: locals and args (call stack)
case stuff
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
`old'
*** empty log message ***
Debuggable byte code generation.
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.
ViewVC Help | |
Powered by ViewVC 1.1.23 |