1. Nov 06, 2014
  2. Aug 25, 2014
  3. Jul 22, 2014
  4. Apr 28, 2014
  5. Apr 07, 2014
    • Simon Hausmann's avatar
      Fix marking of prototype objects in chain · b50090e7
      Simon Hausmann authored
      
      With a real prototype chain it can happen that an internal class' prototype's
      class itself has a prototype. Therefore the first transition on the empty class
      is a PrototypeChange one, but the class the transition leads to may have
      PrototypeChange transitions itself, which weren't marked.
      
      There are multiple solutions to this, but this patch is the minimal fix by
      recursing fully through the internal class tree. That way it's easier to
      back-port the fix also into 5.2.x based branches.
      
      Task-number: QTBUG-37834
      
      Change-Id: I901b13a2663fbad5844003ca5752f2f304de320c
      Reviewed-by: default avatarLars Knoll <lars.knoll@digia.com>
      b50090e7
  6. Apr 04, 2014
  7. Mar 07, 2014
  8. Jan 03, 2014
  9. Dec 04, 2013
  10. Nov 19, 2013
    • Lars Knoll's avatar
      Greatly reduce memory consumed by QQmlEngine instances · 2602390b
      Lars Knoll authored
      
      Due to a inefficiency in our InternalClass implementation,
      we were not sharing the string and attribute table between
      internal class instances.
      
      This was extremely inefficient with the Qt object, as it created around
      1000 internal classes with large string and property tables. With the
      patch these tables are now shared.
      
      Reduces memory consumption of a QQmlEngine instance from around 6.5M
      to a couple of 100k.
      
      Change-Id: Ib763f31deca0808c000ac2c30aa0b05e806bda40
      Reviewed-by: default avatarErik Verbruggen <erik.verbruggen@digia.com>
      2602390b
  11. Nov 05, 2013
    • Lars Knoll's avatar
      Refactor marking GC'ed objects · 025365f1
      Lars Knoll authored
      
      Don't use recursive function calls anymore. Instead, push marked
      objects onto the JS stack, and then pop them off when their children
      are being marked.
      
      Should reduce stack memory usage, and improves performance by ~5%.
      
      Change-Id: I2d37d97579144fcba87ec8e9fd545dd220c01fbb
      Reviewed-by: default avatarSimon Hausmann <simon.hausmann@digia.com>
      025365f1
  12. Nov 04, 2013
  13. Oct 02, 2013
  14. Sep 21, 2013
  15. Sep 02, 2013
  16. Aug 08, 2013
    • Lars Knoll's avatar
      Restructure source code · 3288b87e
      Lars Knoll authored
      
      Move the v4 engine classes from a subdir of qml/qml into
      two subdirs (compiler and jsruntime) of the qml module
      Remove an unsued qv4syntaxchecker class, and move
      the moth code directly into compiler.
      
      Change-Id: I6929bede1f25098e6cb2e68087e779fac16b0c68
      Reviewed-by: default avatarSimon Hausmann <simon.hausmann@digia.com>
      3288b87e
  17. Jun 28, 2013
  18. Jun 24, 2013
  19. Jun 23, 2013
    • Simon Hausmann's avatar
      Fix a memory management issues with the name map in internal classes · 6a9badef
      Simon Hausmann authored
      
      The string pointer we store in the nameMap is not marked directly, i.e. our
      class hierarchy doesn't have a recursive mark() function. So we must otherwise
      make sure that that string is marked, otherwise we get dangling pointers that
      are likely to point to _other_ strings later. This is hard to reproduce, but it
      does happen with MM_AGGRESSIVE_GC=1 and the singletonType test in
      qqmlecmascript, when due to the dangling pointer we end up using the wrong
      property name in freeze() when iterating through the name map.
      
      This patch fixes that by storing the actual identifier string, that's
      guaranteed to get marked.
      
      Change-Id: I28d1a2d2f56fe3abf692229ba008af8b0789189e
      Reviewed-by: default avatarLars Knoll <lars.knoll@digia.com>
      6a9badef
  20. May 08, 2013
  21. May 06, 2013
    • Simon Hausmann's avatar
      Fix leakage of internal class hierarchy · a56a2283
      Simon Hausmann authored
      
      Allocate the InternalClass instances in a memory pool and delete them
      all in one shot at the end. The memory pool won't call the destructor,
      so we have to introduce our own recursive destroy() method, that will
      free the memory allocated.
      
      Change-Id: I507a893475181f765acf545b5cd2bfccc8c29747
      Reviewed-by: default avatarLars Knoll <lars.knoll@digia.com>
      a56a2283