{"action":"created","issue":{"url":"https://api.github.com/repos/apple/swift/issues/1909","repository_url":"https://api.github.com/repos/apple/swift","labels_url":"https://api.github.com/repos/apple/swift/issues/1909/labels{/name}","comments_url":"https://api.github.com/repos/apple/swift/issues/1909/comments","events_url":"https://api.github.com/repos/apple/swift/issues/1909/events","html_url":"https://github.com/apple/swift/pull/1909","id":144055362,"number":1909,"title":"Provide non-atomic versions of many reference counting operations.","user":{"login":"swiftix","id":15327066,"avatar_url":"https://avatars.githubusercontent.com/u/15327066?v=3","gravatar_id":"","url":"https://api.github.com/users/swiftix","html_url":"https://github.com/swiftix","followers_url":"https://api.github.com/users/swiftix/followers","following_url":"https://api.github.com/users/swiftix/following{/other_user}","gists_url":"https://api.github.com/users/swiftix/gists{/gist_id}","starred_url":"https://api.github.com/users/swiftix/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/swiftix/subscriptions","organizations_url":"https://api.github.com/users/swiftix/orgs","repos_url":"https://api.github.com/users/swiftix/repos","events_url":"https://api.github.com/users/swiftix/events{/privacy}","received_events_url":"https://api.github.com/users/swiftix/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":9,"created_at":"2016-03-28T19:08:26Z","updated_at":"2016-03-30T23:39:12Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/apple/swift/pulls/1909","html_url":"https://github.com/apple/swift/pull/1909","diff_url":"https://github.com/apple/swift/pull/1909.diff","patch_url":"https://github.com/apple/swift/pull/1909.patch"},"body":"<!-- Please complete this template before creating pull request. -->\r\n#### What's in this pull request?\r\n<!-- Description about pull request. -->\r\nProvide non-atomic versions of many reference counting operations.\r\n\r\nNon-atomic reference counting operations are much faster than their atomic counterparts.\r\n\r\nThese new entry points will be used by optimizations, which would replace atomic reference counting operations by non-atomic reference counting operations when it is safe to do so. \r\n\r\n#### Resolved bug number: ([SR-248](https://bugs.swift.org/browse/SR-248))\r\n<!-- If this pull request resolves any bugs from Swift bug tracker -->\r\n\r\n* * * *\r\n\r\n<!-- This selection should only be completed by Swift admin -->\r\nBefore merging this pull request to apple/swift repository:\r\n- [x] Test pull request on Swift continuous integration.\r\n\r\n<details>\r\n  <summary>Triggering Swift CI</summary>\r\n\r\nThe swift-ci is triggered by writing a comment on this PR addressed to the GitHub user @swift-ci. Different tests will run depending on the specific comment that you use. The currently available comments are:\r\n\r\n**Smoke Testing**\r\n\r\n        Platform     | Comment\r\n        ------------ | -------------\r\n        All supported platforms     | @swift-ci Please smoke test\r\n        OS X platform               | @swift-ci Please smoke test OS X platform\r\n        Linux platform              | @swift-ci Please smoke test Linux platform\r\n\r\n **Validation Testing**\r\n\r\n        Platform     | Comment\r\n        ------------ | -------------\r\n        All supported platforms     | @swift-ci Please test\r\n        OS X platform               | @swift-ci Please test OS X platform\r\n        Linux platform              | @swift-ci Please test Linux platform\r\n\r\nNote: Only members of the Apple organization can trigger swift-ci.\r\n</details>\r\n<!-- Thank you for your contribution to Swift! -->\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/apple/swift/issues/comments/203686113","html_url":"https://github.com/apple/swift/pull/1909#issuecomment-203686113","issue_url":"https://api.github.com/repos/apple/swift/issues/1909","id":203686113,"user":{"login":"atrick","id":2165663,"avatar_url":"https://avatars.githubusercontent.com/u/2165663?v=3","gravatar_id":"","url":"https://api.github.com/users/atrick","html_url":"https://github.com/atrick","followers_url":"https://api.github.com/users/atrick/followers","following_url":"https://api.github.com/users/atrick/following{/other_user}","gists_url":"https://api.github.com/users/atrick/gists{/gist_id}","starred_url":"https://api.github.com/users/atrick/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/atrick/subscriptions","organizations_url":"https://api.github.com/users/atrick/orgs","repos_url":"https://api.github.com/users/atrick/repos","events_url":"https://api.github.com/users/atrick/events{/privacy}","received_events_url":"https://api.github.com/users/atrick/received_events","type":"User","site_admin":false},"created_at":"2016-03-30T23:39:12Z","updated_at":"2016-03-30T23:39:12Z","body":"@gparker42 \r\nAs I mentioned to @swiftix, the memory barrier on the refcount decrement is still required for the same reason that it was needed before.\r\n\r\nT1: store to x, release x\r\nT2: checkuniq x, release x, dealloc x (release barrier)\r\n\r\nWither a barrier on the normal release, T1 could issue the store after the object is deallocated by T2."}}