/[eiffelstudio]/branches/CAT_mono/Src/Eiffel/API/evaluated_type/cl_type_a.e
ViewVC logotype

Diff of /branches/CAT_mono/Src/Eiffel/API/evaluated_type/cl_type_a.e

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 69649 by manus, Mon Jul 23 21:36:18 2007 UTC revision 69650 by juliant, Tue Jul 24 17:18:14 2007 UTC
# Line 13  inherit Line 13  inherit
13                          is_expanded, is_reference, is_separate, instantiation_in, valid_generic,                          is_expanded, is_reference, is_separate, instantiation_in, valid_generic,
14                          duplicate, meta_type, same_as, good_generics, error_generics,                          duplicate, meta_type, same_as, good_generics, error_generics,
15                          has_expanded, is_valid, format, convert_to,                          has_expanded, is_valid, format, convert_to,
16                          is_full_named_type, is_external, is_enum, is_conformant_to                          is_full_named_type, is_external, is_enum, is_conformant_to,
17                            is_monomorph
18                  end                  end
19    
20          DEBUG_OUTPUT          DEBUG_OUTPUT
# Line 74  feature -- Properties Line 75  feature -- Properties
75                          definition: Result = (declaration_mark = separate_mark)                          definition: Result = (declaration_mark = separate_mark)
76                  end                  end
77    
78            has_monomorph_mark: BOOLEAN is
79                            -- Is class type explicitly marked as monomorph?
80                    do
81                            Result := declaration_mark = monomorph_mark
82                    ensure
83                            definition: Result = (declaration_mark = monomorph_mark)
84                    end
85    
86          is_expanded: BOOLEAN is          is_expanded: BOOLEAN is
87                          -- Is the type expanded?                          -- Is the type expanded?
88                  do                  do
# Line 137  feature -- Properties Line 146  feature -- Properties
146                                  l_class_id = l_system.any_class.compiled_class.class_id                                  l_class_id = l_system.any_class.compiled_class.class_id
147                  end                  end
148    
149            is_monomorph: BOOLEAN is
150                            -- Is the current type monomorph?
151                    do
152                            Result := has_monomorph_mark or is_expanded or associated_class.is_frozen
153                    end
154    
155  feature -- Comparison  feature -- Comparison
156    
157          is_equivalent (other: like Current): BOOLEAN is          is_equivalent (other: like Current): BOOLEAN is
# Line 188  feature -- Output Line 203  feature -- Output
203                          elseif has_separate_mark then                          elseif has_separate_mark then
204                                  st.process_keyword_text (ti_separate_keyword, Void)                                  st.process_keyword_text (ti_separate_keyword, Void)
205                                  st.add_space                                  st.add_space
206                            elseif has_monomorph_mark then
207                                    st.process_keyword_text (ti_frozen_keyword, Void)
208                                    st.add_space
209                          end                          end
210                          associated_class.append_name (st)                          associated_class.append_name (st)
211                  end                  end
# Line 207  feature -- Output Line 225  feature -- Output
225                          elseif has_separate_mark then                          elseif has_separate_mark then
226                                  create Result.make (class_name.count + 9)                                  create Result.make (class_name.count + 9)
227                                  Result.append ("separate ")                                  Result.append ("separate ")
228                            elseif has_monomorph_mark then
229                                    create Result.make (class_name.count + 7)
230                                    Result.append ("frozen ")
231                          else                          else
232                                  create Result.make (class_name.count)                                  create Result.make (class_name.count)
233                          end                          end
# Line 247  feature {COMPILER_EXPORTER} -- Settings Line 268  feature {COMPILER_EXPORTER} -- Settings
268                          has_separate_mark: has_separate_mark                          has_separate_mark: has_separate_mark
269                  end                  end
270    
271            set_monomorph_mark is
272                            -- Set class type declaration as monomorph.
273                    do
274                            declaration_mark := monomorph_mark
275                    ensure
276                            has_monomorph_mark: has_monomorph_mark
277                    end
278    
279          type_i: CL_TYPE_I is          type_i: CL_TYPE_I is
280                          -- C type                          -- C type
281                  do                  do
# Line 336  feature {COMPILER_EXPORTER} -- Conforman Line 365  feature {COMPILER_EXPORTER} -- Conforman
365                          elseif l_other_type_set /= Void then                          elseif l_other_type_set /= Void then
366                                  Result := to_type_set.conform_to (l_other_type_set.twin)                                  Result := to_type_set.conform_to (l_other_type_set.twin)
367                          end                          end
368                            if context.current_class.is_cat_call_detection then
369                                    if Result and other.is_monomorph then
370                                            Result := is_monomorph and then other.conform_to (Current)
371                                    end
372                            end
373                  end                  end
374    
375          is_conformant_to (other: TYPE_A): BOOLEAN is          is_conformant_to (other: TYPE_A): BOOLEAN is
# Line 556  feature {CL_TYPE_A, CL_TYPE_I, TUPLE_CLA Line 590  feature {CL_TYPE_A, CL_TYPE_I, TUPLE_CLA
590                  require                  require
591                          valid_declaration_mark:                          valid_declaration_mark:
592                                  mark = no_mark or mark = expanded_mark or                                  mark = no_mark or mark = expanded_mark or
593                                  mark = reference_mark or mark = separate_mark                                  mark = reference_mark or mark = separate_mark or
594                                    mark = monomorph_mark
595                  do                  do
596                          declaration_mark := mark                          declaration_mark := mark
597                  ensure                  ensure
# Line 575  feature {CL_TYPE_A, CL_TYPE_I, TUPLE_CLA Line 610  feature {CL_TYPE_A, CL_TYPE_I, TUPLE_CLA
610          separate_mark: NATURAL_8 is 3          separate_mark: NATURAL_8 is 3
611                          -- Separate declaration mark                          -- Separate declaration mark
612    
613            monomorph_mark: NATURAL_8 is 4
614                            -- Monomorph declaration mark
615    
616  invariant  invariant
617          class_id_positive: class_id > 0          class_id_positive: class_id > 0
618          valid_declaration_mark: declaration_mark = no_mark or declaration_mark = expanded_mark or          valid_declaration_mark: declaration_mark = no_mark or declaration_mark = expanded_mark or
619                  declaration_mark = reference_mark or declaration_mark = separate_mark                  declaration_mark = reference_mark or declaration_mark = separate_mark or
620                    declaration_mark = monomorph_mark
621          valid_class_declaration_mark:          valid_class_declaration_mark:
622                  class_declaration_mark = no_mark or                  class_declaration_mark = no_mark or
623                  class_declaration_mark = expanded_mark or                  class_declaration_mark = expanded_mark or
624                  class_declaration_mark = reference_mark or                  class_declaration_mark = reference_mark or
625                  class_declaration_mark = separate_mark                  class_declaration_mark = separate_mark or
626                    class_declaration_mark = monomorph_mark
627    
628  indexing  indexing
629          copyright:      "Copyright (c) 1984-2006, Eiffel Software"          copyright:      "Copyright (c) 1984-2006, Eiffel Software"

Legend:
Removed from v.69649  
changed lines
  Added in v.69650

  ViewVC Help
Powered by ViewVC 1.1.23