1. 02 12月, 2016 1 次提交
  2. 01 12月, 2016 2 次提交
  3. 02 11月, 2016 1 次提交
    • A
      Rework compilation of OpNE/OpEQ SpEL operators · 38cd1ecf
      Andy Clement 提交于
      For SPR-14863 we need to adjust the code generation for OpNE
      to use !x.equals(y) rather than x!=y. There are also further
      cases in the equalityCheck() code in Operator that were not
      being handled in the compilation case (when comparators are
      used for example). This latter issue also affects OpEQ.
      
      Rather than add yet more bytecode generation, both OpNE and
      OpEQ generateCode() methods have been simplified. The
      generated code now delegates to equalityCheck() in Operator
      which is exactly what the interpreted case does.
      
      This ensures that the compiled code continues to behave just
      like the interpreted case. It ensures changes to the interpreted
      case are automatically picked up for the compiled case. It
      makes the bytecode generation simpler.
      
      The benefit of compilation of SpEL expressions is to avoid
      slow reflective calls - that doesn't apply for a basic
      (in)equality test so there is no need to go crazy in bytecode
      gen.
      
      Issue: SPR-14863
      (cherry picked from commit 9000acd3)
      38cd1ecf
  4. 01 11月, 2016 1 次提交
  5. 31 10月, 2016 2 次提交
  6. 21 10月, 2016 1 次提交
  7. 14 9月, 2016 1 次提交
  8. 21 7月, 2016 1 次提交
  9. 15 7月, 2016 1 次提交
  10. 06 7月, 2016 1 次提交
  11. 01 7月, 2016 1 次提交
  12. 06 5月, 2016 1 次提交
    • A
      Fix compilation of expressions using instanceof and primitives · a31f0bb3
      Andy Clement 提交于
      Prior to this commit the SpEL compiler would generate bad bytecode
      if the left hand operand of an instanceof was a primitive or
      if the right hand operand was a primitive type reference.
      With the fixes primitives on the left hand side are now
      correctly boxed and special handling is in place for when the
      right hand side is a primitive type reference. Using a primitive
      type reference on the right always causes the instanceof
      check to return false.
      
      Additionally a guard has been added such that compilation is
      not allowed when the right hand side of an expression
      is not a type reference. If it is, for example, a variable
      reference that evaluates to a type reference then that
      cannot be expressed in bytecode so compilation is not performed.
      
      Issue: SPR-14250
      a31f0bb3
  13. 16 4月, 2016 1 次提交
  14. 26 3月, 2016 1 次提交
  15. 25 3月, 2016 1 次提交
  16. 08 2月, 2016 1 次提交
  17. 22 1月, 2016 1 次提交
    • A
      Allow use of '&' prefix to access factory bean in SpEL · a12f2393
      Andy Clement 提交于
      Prior to this change SpEL did not have an syntactic
      construct enabling easy access to a FactoryBean. With this
      change it is now possible to use &foo in an expression when
      the factory bean should be returned.
      
      Issue: SPR-9511
      a12f2393
  18. 14 12月, 2015 1 次提交
  19. 13 12月, 2015 2 次提交
  20. 12 12月, 2015 1 次提交
    • A
      Fix SpEL compilation of static method/property/field operations · a28fc760
      Andy Clement 提交于
      Before this change the compilation of a method reference or property/field
      access was not properly cleaning up the stack if compilation meant
      calling a static method or accessing a static field. In these cases there
      is no need for a target object on the stack and it should be removed if
      present. For a simple expression it is harmless since the end result of
      the expression is the thing on the top of the stack, but for nested
      expressions if the inner expression suffered this issue, the outer
      expression can find itself operating on the wrong element.
      
      The particular issue covered the case of a static field access but this
      fix (and associated tests) cover static method, property and field access.
      
      Issue: SPR-13781
      a28fc760
  21. 09 12月, 2015 1 次提交
  22. 26 11月, 2015 1 次提交
  23. 25 11月, 2015 2 次提交
  24. 04 9月, 2015 1 次提交
  25. 20 7月, 2015 1 次提交
  26. 17 7月, 2015 1 次提交
  27. 15 7月, 2015 2 次提交
  28. 19 6月, 2015 1 次提交
  29. 29 5月, 2015 1 次提交
  30. 22 5月, 2015 1 次提交
    • A
      SpEL: ensure correct object used for nested #this references · 91ed5b6b
      Andy Clement 提交于
      Before this commit the object that #this would refer to in
      nested expressions within projection/selection clauses was always
      the root context object. This was incorrect as it should be the
      element being projected/selected over. This commit introduces
      a scope root context object which is set upon entering a new
      scope (like when entering a projection or selection). Any
      object. With this change this kind of expression now behaves:
      
      where #this is the element of list1. Unqualified references
      are also resolved against this scope root context object.
      
      Issues: SPR-10417, SPR-12035, SPR-13055
      91ed5b6b
  31. 20 5月, 2015 1 次提交
  32. 13 5月, 2015 1 次提交
  33. 07 5月, 2015 1 次提交
  34. 31 3月, 2015 1 次提交
    • A
      Allow NEW and T to be used as unquoted map keys in SpEL · c382b6f0
      Andy Clement 提交于
      This change provides support for map[NEW], map[new], map[T]
      and map[t]. Prior to this change the 'new' and 't' had to
      be quoted because they were keywords in SpEL for a constructor
      reference and type reference respectively.
      
      Issue: SPR-11783
      c382b6f0
  35. 12 3月, 2015 1 次提交