Remove gc scanning suport for Extension subclasses
commit014e12744f1dfdd9da4452ed6962f9ee5ac4be32
authorEdwin Smith <smith@fb.com>
Thu, 24 Nov 2016 14:36:28 +0000 (24 06:36 -0800)
committerHhvm Bot <hhvm-bot-bot@fb.com>
Thu, 24 Nov 2016 14:40:52 +0000 (24 06:40 -0800)
tree51d512b486aa68622d3de93affa5c505ca552ed7
parentfb03acf9a9709829b4dcdecdc6c5571d7b64e59b
Remove gc scanning suport for Extension subclasses

Summary:
Use other ways to get scanned, mostly ThreadLocal<T>. Only
a few subclasses actually overrode vscan() anyway:

- ext_filter already used ThreadLocal<T> so it was being
  scanned both ways. (fixed).
- json_parser used ThreadLocal<T> but needed a custom scanner.
  (wrote it).
- ext_session manually used __thread; converted it to
  ThreadLocalNoCheck<T>

This eliminates the final use of IMarker, so remove it.
The scaner may use virtual-calls to scan certian kinds of
objects, but those scanner functions no longer call back
anywhere; they just add pointers to type_scan::Scanner's
internal pointer-buffers using inlineable operations.

Differential Revision: D3830436

fbshipit-source-id: fa3fc5ccb54d4917a166898fafbe9c495a03bbdf
12 files changed:
hphp/runtime/base/exceptions.cpp
hphp/runtime/base/heap-scan.h
hphp/runtime/base/imarker.h [deleted file]
hphp/runtime/ext/extension-registry.cpp
hphp/runtime/ext/extension.h
hphp/runtime/ext/filter/ext_filter.cpp
hphp/runtime/ext/imagick/constants.cpp
hphp/runtime/ext/json/JSON_parser.cpp
hphp/runtime/ext/json/JSON_parser.h
hphp/runtime/ext/json/ext_json.cpp
hphp/runtime/ext/json/jsonc_parser.cpp
hphp/runtime/ext/session/ext_session.cpp