Successfully reported this slideshow.
Your SlideShare is downloading. ×

Inferring Types by Mining Class Usage Frequency from Inline Caches

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
Gc algorithms
Gc algorithms
Loading in …3
×

Check these out next

1 of 13 Ad
Advertisement

More Related Content

More from ESUG (20)

Advertisement

Recently uploaded (20)

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

×