Skip to content
Snippets Groups Projects
  1. Jul 10, 2012
  2. Jul 07, 2012
  3. Jul 06, 2012
  4. Jul 04, 2012
  5. Jun 01, 2011
    • Erwan Jahier's avatar
      Fix several bugs in static argument handling, in particular when · 65695130
      Erwan Jahier authored
      parametric nodes (or predef iterators) are nested.
      
      Before, nested iterators were handles as follows : a source-level
      (i.e., not compiled) alias node was created on-the-fly, and then
      compiled. But this way to proceed was buggy for static args coming
      from nested iterators or nested parametric nodes.
      
      Now, I rely on Inline.iterators to get rid of iterators (the iterator
      inlining is now recursive).
      65695130
  6. Jul 06, 2010
  7. Jan 22, 2010
  8. May 26, 2009
    • Erwan Jahier's avatar
      Attach the clock of Eff.val_exp to the val_exp itself, instead of · e7ef1b90
      Erwan Jahier authored
      maintaining (ugly and error-prone) hash tables.
      
      That change revealed an untriggered bug in EvalClock.check_args: it was wrong
      to add in subst the substitutions made of the parameters and the arguments (it
      is enough to unify the clocks of the pars and of the args). For instance, consider
      the node (in should_work/clock/clock.lus)
      
         node clock5(x :  bool; y:  bool when x; z: bool when y)
      
      and the call
      
        z2 = clock5(a, b when a, c when e);
      
      I was adding y/b in the subst, which was wrong.
      
      Other minor changes:
       - move const_to_val_eff from Eff to UnifyClock.
       - GetEff.translate_val_exp now returns a substitution, in order to be able
         to unify clock vars and propagate the resulting substitution.
      e7ef1b90
  9. Mar 12, 2009
  10. Mar 11, 2009
  11. Mar 03, 2009
  12. Feb 25, 2009
  13. Feb 11, 2009
    • Erwan Jahier's avatar
      Various fixes for the lv4 backend: · 672af392
      Erwan Jahier authored
       - expr such as "current x,y" should be written "current (x,y)"
       - abstract   struct  or   array   types  were   handled  as   extern
         types, which  prevent the struct  and array expanser to  work them
         out. In order to fix that, I have added an Abstract_type_eff variant
         to Eff.type_ which contains the concerte type.
      672af392
  14. Feb 09, 2009
  15. Feb 04, 2009
  16. Jan 30, 2009
  17. Jan 23, 2009
  18. Dec 12, 2008
    • Erwan Jahier's avatar
      Break the recursivity is the Eff.node_exp representation (which fix nested iter. pbs). · 5c722d86
      Erwan Jahier authored
      In  short, the  rationale for  this change,  is that  it is  having a
      recursive node_exp is
      - useless,
      - too complicated,
      - wrong w.r.t. nesting iterator calls
      
      In long:
      
      - It is useless because, at the  Eff level, a node cannot call itself
        via one  of its  static arg (which  was where the  recursivity came
        from).
      
      - and indeed, it  is much simpler to consider that  a static arg node
        can only be ident.long that identifies a node alias.
      
        This  means of  course, that  nested iterators  have  been unnested
        before,   inventing  alias   node  names   along  the   way...  And
        polymorphism makes thing difficult once again.
      
      - But the  *big* problem  with a recursive  node_exp is that  it make
        things very  complicated to (lic)dump nested  iterator call because
        of polymorphism!   Actually, it  even makes thing  complicated when
        the iterators were themselves not nested in the source code !
      
        Some ugly  things were done in  LicDump to unnest  those calls when
        printing node_exp.   But this uglyness  have a price:  tricky code,
        and bugs! Indeed, nested iterators calls were wong for example when
        using  the --inline-iterator  mode (but  i would  not  be surprised
        that is wrong in other cases...).
      
      Hence,  LicDump  is  simpler,  but  of course  LazyCompiler  is  more
      complicated.  But  this  is  reasonable:  a  pretty-printer  is  not
      supposed to be complicated.
      5c722d86
  19. Nov 28, 2008
  20. Nov 25, 2008
    • Erwan Jahier's avatar
      Replace constants by their values. · 3f2aa6c4
      Erwan Jahier authored
      The rationale for this change is that this is necessary for constants
      appearing static  arg to  be replaced. One  problem is that  they are
      handled in exactly  the same way as top-level  constants, which could
      be left  un-expanded. I could make  something in order  to not expand
      those top-levelconstants, but is it worth the trouble ?
      
      To do that,  I have changed sligthly the  representation of Eff.ARRAY
      (the elements  are now  attached to the  constructor itself,  and the
      operands  is empty)  and  the one  of  array constant  (we attach  to
      Array_const_eff  a  list  instead  of  an  array,  for  the  sake  of
      homogeneity) with what is done in Eff.val_eff.
      3f2aa6c4
  21. Nov 20, 2008
  22. Oct 24, 2008
  23. Oct 23, 2008
  24. Sep 15, 2008
  25. Sep 02, 2008
  26. Aug 29, 2008
  27. Aug 28, 2008
    • Erwan Jahier's avatar
      untabify all files. · a0ee285c
      Erwan Jahier authored
      a0ee285c
    • Erwan Jahier's avatar
      Avoid the generation of polymorphic type variables when iterating on · 8d8dcbd0
      Erwan Jahier authored
      polymorphic operators.
      
      For instance, when LicDumping expression such as
      
          map<<map<<+,4>>,5>>
      
      an  alias  node was  created  for  "map<<+,4>>"  (to unnest  iterator
      calls). Fut this node is intrically overloaded (polymorphic). In this
      change, we  look at  the type this  innr call  is used to  generate a
      specialised (mono-morphic) version of the node alias.
      
      Note that we currently still generate type variable when users write
      
           node mymap = map<<+,4>>;
      8d8dcbd0
  28. Aug 26, 2008
  29. Aug 22, 2008
  30. Aug 21, 2008
  31. Aug 19, 2008
    • Erwan Jahier's avatar
      Split expressions into atomic expressions. In other words, introduce · d7905aff
      Erwan Jahier authored
      as many  new local  variables as necessary  so that an  expression is
      made at most of one operator.
      
      The rational  for that  is to obtain  a lic  code that is  trivial to
      clock check (nested node calls, for example, make it less simple).
      
      The old behavior can still be obtained using --keep-nested-calls.
      
      During  that  change,   I  realised  that  I  did   not  clock  check
      asserts. Hence, I have also added this check.
      d7905aff
  32. Jul 23, 2008
  33. Jul 22, 2008
  34. Jul 01, 2008
  35. Jun 30, 2008
  36. Jun 26, 2008
Loading