Explain union safety in MicroLock comment
authorDaniel Colascione <dancol@fb.com>
Sat, 12 Mar 2016 21:31:46 +0000 (13:31 -0800)
committerFacebook Github Bot 7 <facebook-github-bot-7-bot@fb.com>
Sat, 12 Mar 2016 21:35:19 +0000 (13:35 -0800)
Reviewed By: ot

Differential Revision: D3045850

fb-gh-sync-id: ee19b146c43410d8d8804c9bfe79c3811394b10e
shipit-source-id: ee19b146c43410d8d8804c9bfe79c3811394b10e

folly/MicroLock.h

index 07aa40b8df592a08ac557fc3c47e5b1e649d5443..159e3341c6dce3beb2ad2881193e4afeefb34f60 100644 (file)
@@ -43,6 +43,10 @@ namespace folly {
  * limit yourself to MicroLock slot zero, which will use the two
  * least-significant bits in the bottom byte.
  *
+ * (Note that such a union is safe only because MicroLock is based on
+ * a character type, and even under a strict interpretation of C++'s
+ * aliasing rules, character types may alias anything.)
+ *
  * MicroLock uses a dirty trick: it actually operates on the full
  * word-size, word-aligned bit of memory into which it is embedded.
  * It never modifies bits outside the ones it's defined to modify, but