{"action":"created","issue":{"url":"https://api.github.com/repos/eclipse/omr/issues/374","repository_url":"https://api.github.com/repos/eclipse/omr","labels_url":"https://api.github.com/repos/eclipse/omr/issues/374/labels{/name}","comments_url":"https://api.github.com/repos/eclipse/omr/issues/374/comments","events_url":"https://api.github.com/repos/eclipse/omr/issues/374/events","html_url":"https://github.com/eclipse/omr/pull/374","id":184985907,"number":374,"title":"Refactor GC_ObjectModel into core OMR_GC_ObjectModel base class","user":{"login":"ktbriggs","id":18146124,"avatar_url":"https://avatars.githubusercontent.com/u/18146124?v=3","gravatar_id":"","url":"https://api.github.com/users/ktbriggs","html_url":"https://github.com/ktbriggs","followers_url":"https://api.github.com/users/ktbriggs/followers","following_url":"https://api.github.com/users/ktbriggs/following{/other_user}","gists_url":"https://api.github.com/users/ktbriggs/gists{/gist_id}","starred_url":"https://api.github.com/users/ktbriggs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ktbriggs/subscriptions","organizations_url":"https://api.github.com/users/ktbriggs/orgs","repos_url":"https://api.github.com/users/ktbriggs/repos","events_url":"https://api.github.com/users/ktbriggs/events{/privacy}","received_events_url":"https://api.github.com/users/ktbriggs/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-10-25T00:03:42Z","updated_at":"2016-12-02T18:27:49Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/eclipse/omr/pulls/374","html_url":"https://github.com/eclipse/omr/pull/374","diff_url":"https://github.com/eclipse/omr/pull/374.diff","patch_url":"https://github.com/eclipse/omr/pull/374.patch"},"body":"[Continued from #296]\r\n\r\nSplit object model methods depending only on header slot offset and \r\nflags shift into core GC_ObjectModelBase base class to simplify the\r\nprocess of constructing language-specfic object models. Removed \r\nspurious macro definitions. Client languages will extend this base \r\nclass to produce their own GC_ObjectModel classes. \r\n\r\nCleaned up example object model method comments. Updated Scavenger and\r\ngenerational access barrier as required to adapt to object model \r\nchanges.\r\n\r\nMoved example/glue object flags byte to high order byte of object\r\nheader to allow some verification of base object model handling of \r\nheader flags.\r\n\r\nThis is a first step toward setting example/glue/ObjectModel.[ch]pp up\r\nas model/template to serve as starting point for development of \r\nlanguage-specific object model classes. \r\n\r\nIssue: #296\r\nSigned-off-by: Kim Briggs briggs@ca.ibm.com\r\n"},"comment":{"url":"https://api.github.com/repos/eclipse/omr/issues/comments/264525956","html_url":"https://github.com/eclipse/omr/pull/374#issuecomment-264525956","issue_url":"https://api.github.com/repos/eclipse/omr/issues/374","id":264525956,"user":{"login":"ktbriggs","id":18146124,"avatar_url":"https://avatars.githubusercontent.com/u/18146124?v=3","gravatar_id":"","url":"https://api.github.com/users/ktbriggs","html_url":"https://github.com/ktbriggs","followers_url":"https://api.github.com/users/ktbriggs/followers","following_url":"https://api.github.com/users/ktbriggs/following{/other_user}","gists_url":"https://api.github.com/users/ktbriggs/gists{/gist_id}","starred_url":"https://api.github.com/users/ktbriggs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ktbriggs/subscriptions","organizations_url":"https://api.github.com/users/ktbriggs/orgs","repos_url":"https://api.github.com/users/ktbriggs/repos","events_url":"https://api.github.com/users/ktbriggs/events{/privacy}","received_events_url":"https://api.github.com/users/ktbriggs/received_events","type":"User","site_admin":false},"created_at":"2016-12-02T18:27:49Z","updated_at":"2016-12-02T18:27:49Z","body":"Template-based solution was abandoned for 2 main reasons:\r\n1. DDR does not provide sufficient support, class template use breaks builds.\r\n2. Class templates cannot have an associated cpp file as the template parameters are not known to the compiler when compiling the cpp file. \r\nInstead introduced component-delegate pattern, with a GC_ObjectModelDelegate class with interface (methods, method signatures) defined by OMR and language-specific implementation. This provides everything required of the template solution, including inline delegate method implementations, without the limitations.\r\n\r\nTesting:\r\nomr.personal build (all platforms): http://vmfarm.ottawa.ibm.com/build_info.php?build_id=328327\r\n\r\nx86-64/linux (with J9/compressedrefs, all gc policies, 48 CPUs, 48G heap)\r\n- SPECjvm2008 (derby xml.validation mpegaudio serial compress scimark.lu.large)\r\n- SPECjbb2005\r\n- SPECjbb2015\r\n\r\nTotal elapsed runtime ~16 hours (~768 CPU-hours). No segfaults, although SPECjbb2015 performed badly due to lack of tuning of SPEC properties, same results would be seen with sdk built from HEAD.\r\n"}}
{"actor":{"display_login":"ktbriggs"}}