{"action":"created","issue":{"url":"https://api.github.com/repos/ocaml/ocaml/issues/203","labels_url":"https://api.github.com/repos/ocaml/ocaml/issues/203/labels{/name}","comments_url":"https://api.github.com/repos/ocaml/ocaml/issues/203/comments","events_url":"https://api.github.com/repos/ocaml/ocaml/issues/203/events","html_url":"https://github.com/ocaml/ocaml/pull/203","id":90060416,"number":203,"title":"Eliminate all uses of the page table from the GC (for no-naked-pointers mode)","user":{"login":"mshinwell","id":1315488,"avatar_url":"https://avatars.githubusercontent.com/u/1315488?v=3","gravatar_id":"","url":"https://api.github.com/users/mshinwell","html_url":"https://github.com/mshinwell","followers_url":"https://api.github.com/users/mshinwell/followers","following_url":"https://api.github.com/users/mshinwell/following{/other_user}","gists_url":"https://api.github.com/users/mshinwell/gists{/gist_id}","starred_url":"https://api.github.com/users/mshinwell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mshinwell/subscriptions","organizations_url":"https://api.github.com/users/mshinwell/orgs","repos_url":"https://api.github.com/users/mshinwell/repos","events_url":"https://api.github.com/users/mshinwell/events{/privacy}","received_events_url":"https://api.github.com/users/mshinwell/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":11,"created_at":"2015-06-22T10:11:02Z","updated_at":"2015-08-06T12:59:14Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ocaml/ocaml/pulls/203","html_url":"https://github.com/ocaml/ocaml/pull/203","diff_url":"https://github.com/ocaml/ocaml/pull/203.diff","patch_url":"https://github.com/ocaml/ocaml/pull/203.patch"},"body":"The first part of this patch adds GC block headers in the text segments immediately prior to function entry points.  This enables the GC to safely stop scanning when code pointers are reached in no-naked-pointers mode, rather than requiring a page table test, or indeed any special handling for closures.  (Another option would be to alter the closure representation to make it possible to identify which fields of a closure contain code pointers, but you then still need a special case in the GC.)  I think I've convinced myself this is safe.  In addition to being a useful optimization now, this work is a prerequisite for the multicore branch.\r\n\r\nThe second part of this patch eliminates all other references to the page table from the GC in no-naked-pointers mode.  Damien, I'd appreciate it if you could check this part."},"comment":{"url":"https://api.github.com/repos/ocaml/ocaml/issues/comments/128354311","html_url":"https://github.com/ocaml/ocaml/pull/203#issuecomment-128354311","issue_url":"https://api.github.com/repos/ocaml/ocaml/issues/203","id":128354311,"user":{"login":"xavierleroy","id":3845810,"avatar_url":"https://avatars.githubusercontent.com/u/3845810?v=3","gravatar_id":"","url":"https://api.github.com/users/xavierleroy","html_url":"https://github.com/xavierleroy","followers_url":"https://api.github.com/users/xavierleroy/followers","following_url":"https://api.github.com/users/xavierleroy/following{/other_user}","gists_url":"https://api.github.com/users/xavierleroy/gists{/gist_id}","starred_url":"https://api.github.com/users/xavierleroy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xavierleroy/subscriptions","organizations_url":"https://api.github.com/users/xavierleroy/orgs","repos_url":"https://api.github.com/users/xavierleroy/repos","events_url":"https://api.github.com/users/xavierleroy/events{/privacy}","received_events_url":"https://api.github.com/users/xavierleroy/received_events","type":"User","site_admin":false},"created_at":"2015-08-06T12:59:14Z","updated_at":"2015-08-06T12:59:14Z","body":"Ah, OK, I misunderstood.  Still, I'm curious to see how much performance impact this has, because of the \"bubbles\" introduced in the code cache. "}}