Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Inferring Types by Mining Class Usage Frequency from Inline Caches

216 views

Published on

Presentation of IWST16, Prag

Published in: Software
  • Be the first to comment

  • Be the first to like this

Inferring Types by Mining Class Usage Frequency from Inline Caches

  1. 1. Inferring Types by Mining Class Usage Frequency from Inline Caches Nevena Milojković SCG University of Bern 1 Mohammad Ghafari SCG University of Bern Oscar Nierstrasz SCG University of Bern Clément Béra RMOD - INRIA Lille Nord Europe
  2. 2. Example GLMPane>>resetAnnouncer super resetAnnouncer. self presentations do: [ :each | each resetAnnouncer] resetAnnouncer update 2 resetAnnouncer 75 63 classes 75 classes GLMPane>>update ... self presentations do: [ :each | each update ]
  3. 3. Possible types for each GTGenericStackDebugger GLMRoassal2Presentation … MooseFinder PPBrowser … GTPPDebugger PPVerticalParserInspector GLMPane … GTSimpleMethodsBrowser GLMRubricTextPresentation 3 63 classes GTGenericStackDebugger GLMRoassal2Presentation … MooseFinder PPBrowser … GTPPDebugger PPVerticalParserInspector GLMPane … GTSimpleMethodsBrowser GLMRubricTextPresentation DYNAMIC TYPE
  4. 4. Possible hierarchies for each GLMPane GLMPresentation 4 Two hierarchies GLMPane GLMPresentation
  5. 5. Inline Caches 5 GLMPane>>resetAnnouncer super resetAnnouncer. self presentations do: [ :each | each resetAnnouncer] RECEIVER TYPE 21 <70> self 22 <85 00> superSend: resetAnnouncer 24 <87> pop 25 <70> self 26 <D1> send: presentations 27 <8F 01 00 03> closureNumCopied: 0 numArgs: 1 bytes 31 to 33 31 <10> pushTemp: 0 32 <D0> send: resetAnnouncer 33 <7D> blockReturn 34 <CB> send: do: 35 <87> pop 36 <78> returnSelf BYTECODE
  6. 6. Inline Caches 6 22 2 0 6 0 0 112 3 13 GTGenericStackDebugger GLMRoassal2Presentation … MooseFinder PPBrowser … GTPPDebugger PPVerticalParserInspector GLMPane … GTSimpleMethodsBrowser GLMRubricTextPresentation
  7. 7. Inline Caches - Ordered Classes 7 112 22 13 6 3 2 0 0 0 … … … GTGenericStackDebugger GLMRoassal2Presentation MooseFinder PPBrowser GTPPDebugger PPVerticalParserInspector GLMPane GTSimpleMethodsBrowser GLMRubricTextPresentation
  8. 8. Inline Caches - Ordered Hierarchies 8 GLMPane GLMPresentation 112 564
  9. 9. Inline Caches - Ordered Hierarchies 9 GLMPresentation GLMPane 564 112
  10. 10. RESULTS - classes 10 0% 25% 50% 75% 100% Roassal2 Glamour Morphic Moose 37%40%34%34% 16%9% 6%6% 47%51% 60%60% guessed variables - average 59% near-guessed variables - average 7% incorrectly guessed variables - average 34%
  11. 11. RESULTS - hierarchies 11 0% 25% 50% 75% 100% Roassal2 Glamour Morphic Moose 26% 11% 4% 15% 9% 12% 7% 13% 65% 77% 89% 72% guessed variables - average 72% near-guessed variables - average 13% incorrectly guessed variables - average 15%
  12. 12. Comparison with EATI 12 0 1000 2000 3000 4000 Inline Caches EATI 748 542 2'080 3'090 # of guessed variables # of near-guessed variables
  13. 13. Summary 13 GLMPane>>resetAnnouncer super resetAnnouncer. self presentations do: [ :each | each resetAnnouncer] GLMPane>>update ... self presentations do: [ :each | each update ] GTGenericStackDebugger … MooseFinder PPBrowser … GTPPDebugger GLMPane … GTSimpleMethodsBrowser GLMRubricTextPresentation GLMPane GLMTabulator GLMCompositePresentation GLMListPresentation … GLMImplicitBrowser OnMooseMetaPropertiesWithoutComments PPParserBrowser GLMSpecPresentation INLINE CACHING FREQUENCY DATA

×