Rewrite gen_ext_hhvm and gen_infotabs in C++
commit781359b60dcc6f047faadf959a39205cb6ead040
authorOwen Yamauchi <oyamauchi@fb.com>
Fri, 19 Apr 2013 22:30:55 +0000 (19 15:30 -0700)
committerSara Golemon <sgolemon@fb.com>
Thu, 25 Apr 2013 07:50:04 +0000 (25 00:50 -0700)
tree2b85b5f026715cd047f634ea133b9cde416a899b
parent8cf864ef1428872546bf98212412a1a62dce52d4
Rewrite gen_ext_hhvm and gen_infotabs in C++

This is a near-straight translation of gen_ext_hhvm.php into C++. The
main goal of this change is to break the bootstrap cycle in the build
process: we have to run PHP scripts to build our PHP interpreter. This
isn't so bad for us internally, but in the open-source build, it's
philosophically lame to depend on an external PHP interpreter (i.e.
Zend) to build HHVM. To get around this, we have to check in the
generated ext_hhvm files: no good.

There's nothing particularly sophisticated in this program; it's just a
bunch of grunt work. I took the opportunity to make a few improvements
to the generated code -- there was some int-width confusion, and a bunch of
duplicated code to transfer return values to the right place.
248 files changed:
hphp/CMakeLists.txt
hphp/idl/array.idl.json
hphp/runtime/base/builtin_functions.ext_hhvm.cpp [copied from hphp/runtime/base/builtin_functions.ext_hhvm.h with 57% similarity]
hphp/runtime/base/builtin_functions.ext_hhvm.h
hphp/runtime/ext/JSON_parser.ext_hhvm.cpp
hphp/runtime/ext/JSON_parser.ext_hhvm.h
hphp/runtime/ext/asio/asio_context.ext_hhvm.cpp
hphp/runtime/ext/asio/asio_context.ext_hhvm.h
hphp/runtime/ext/asio/asio_session.ext_hhvm.cpp
hphp/runtime/ext/asio/asio_session.ext_hhvm.h
hphp/runtime/ext/asio/blockable_wait_handle.ext_hhvm.cpp
hphp/runtime/ext/asio/blockable_wait_handle.ext_hhvm.h
hphp/runtime/ext/asio/continuation_wait_handle.ext_hhvm.cpp
hphp/runtime/ext/asio/continuation_wait_handle.ext_hhvm.h
hphp/runtime/ext/asio/gen_array_wait_handle.ext_hhvm.cpp
hphp/runtime/ext/asio/gen_array_wait_handle.ext_hhvm.h
hphp/runtime/ext/asio/reschedule_wait_handle.ext_hhvm.cpp
hphp/runtime/ext/asio/reschedule_wait_handle.ext_hhvm.h
hphp/runtime/ext/asio/set_result_to_ref_wait_handle.ext_hhvm.cpp
hphp/runtime/ext/asio/set_result_to_ref_wait_handle.ext_hhvm.h
hphp/runtime/ext/asio/static_exception_wait_handle.ext_hhvm.cpp
hphp/runtime/ext/asio/static_exception_wait_handle.ext_hhvm.h
hphp/runtime/ext/asio/static_result_wait_handle.ext_hhvm.cpp
hphp/runtime/ext/asio/static_result_wait_handle.ext_hhvm.h
hphp/runtime/ext/asio/static_wait_handle.ext_hhvm.cpp
hphp/runtime/ext/asio/static_wait_handle.ext_hhvm.h
hphp/runtime/ext/asio/wait_handle.ext_hhvm.cpp
hphp/runtime/ext/asio/wait_handle.ext_hhvm.h
hphp/runtime/ext/asio/waitable_wait_handle.ext_hhvm.cpp
hphp/runtime/ext/asio/waitable_wait_handle.ext_hhvm.h
hphp/runtime/ext/ext_apache.ext_hhvm.cpp
hphp/runtime/ext/ext_apache.ext_hhvm.h
hphp/runtime/ext/ext_apc.ext_hhvm.cpp
hphp/runtime/ext/ext_apc.ext_hhvm.h
hphp/runtime/ext/ext_apd.ext_hhvm.cpp
hphp/runtime/ext/ext_apd.ext_hhvm.h
hphp/runtime/ext/ext_array.ext_hhvm.cpp
hphp/runtime/ext/ext_array.ext_hhvm.h
hphp/runtime/ext/ext_asio.ext_hhvm.cpp
hphp/runtime/ext/ext_asio.ext_hhvm.h
hphp/runtime/ext/ext_bcmath.ext_hhvm.cpp
hphp/runtime/ext/ext_bcmath.ext_hhvm.h
hphp/runtime/ext/ext_bzip2.ext_hhvm.cpp
hphp/runtime/ext/ext_bzip2.ext_hhvm.h
hphp/runtime/ext/ext_class.ext_hhvm.cpp
hphp/runtime/ext/ext_class.ext_hhvm.h
hphp/runtime/ext/ext_closure.ext_hhvm.cpp
hphp/runtime/ext/ext_closure.ext_hhvm.h
hphp/runtime/ext/ext_collections.ext_hhvm.cpp
hphp/runtime/ext/ext_collections.ext_hhvm.h
hphp/runtime/ext/ext_continuation.ext_hhvm.cpp
hphp/runtime/ext/ext_continuation.ext_hhvm.h
hphp/runtime/ext/ext_ctype.ext_hhvm.cpp
hphp/runtime/ext/ext_ctype.ext_hhvm.h
hphp/runtime/ext/ext_curl.ext_hhvm.cpp
hphp/runtime/ext/ext_curl.ext_hhvm.h
hphp/runtime/ext/ext_datetime.ext_hhvm.cpp
hphp/runtime/ext/ext_datetime.ext_hhvm.h
hphp/runtime/ext/ext_debugger.ext_hhvm.cpp
hphp/runtime/ext/ext_debugger.ext_hhvm.h
hphp/runtime/ext/ext_domdocument.ext_hhvm.cpp
hphp/runtime/ext/ext_domdocument.ext_hhvm.h
hphp/runtime/ext/ext_error.ext_hhvm.cpp
hphp/runtime/ext/ext_error.ext_hhvm.h
hphp/runtime/ext/ext_fb.ext_hhvm.cpp
hphp/runtime/ext/ext_fb.ext_hhvm.h
hphp/runtime/ext/ext_file.ext_hhvm.cpp
hphp/runtime/ext/ext_file.ext_hhvm.h
hphp/runtime/ext/ext_function.ext_hhvm.cpp
hphp/runtime/ext/ext_function.ext_hhvm.h
hphp/runtime/ext/ext_hash.ext_hhvm.cpp
hphp/runtime/ext/ext_hash.ext_hhvm.h
hphp/runtime/ext/ext_hotprofiler.ext_hhvm.cpp
hphp/runtime/ext/ext_hotprofiler.ext_hhvm.h
hphp/runtime/ext/ext_iconv.ext_hhvm.cpp
hphp/runtime/ext/ext_iconv.ext_hhvm.h
hphp/runtime/ext/ext_icu.ext_hhvm.cpp
hphp/runtime/ext/ext_icu.ext_hhvm.h
hphp/runtime/ext/ext_icu_ucnv.ext_hhvm.cpp
hphp/runtime/ext/ext_icu_ucnv.ext_hhvm.h
hphp/runtime/ext/ext_icu_ucsdet.ext_hhvm.cpp
hphp/runtime/ext/ext_icu_ucsdet.ext_hhvm.h
hphp/runtime/ext/ext_icu_uspoof.ext_hhvm.cpp
hphp/runtime/ext/ext_icu_uspoof.ext_hhvm.h
hphp/runtime/ext/ext_image.ext_hhvm.cpp
hphp/runtime/ext/ext_image.ext_hhvm.h
hphp/runtime/ext/ext_imagesprite.ext_hhvm.cpp
hphp/runtime/ext/ext_imagesprite.ext_hhvm.h
hphp/runtime/ext/ext_imap.ext_hhvm.cpp
hphp/runtime/ext/ext_imap.ext_hhvm.h
hphp/runtime/ext/ext_intl.ext_hhvm.cpp
hphp/runtime/ext/ext_intl.ext_hhvm.h
hphp/runtime/ext/ext_ipc.ext_hhvm.cpp
hphp/runtime/ext/ext_ipc.ext_hhvm.h
hphp/runtime/ext/ext_iterator.ext_hhvm.cpp
hphp/runtime/ext/ext_iterator.ext_hhvm.h
hphp/runtime/ext/ext_json.ext_hhvm.cpp
hphp/runtime/ext/ext_json.ext_hhvm.h
hphp/runtime/ext/ext_ldap.ext_hhvm.cpp
hphp/runtime/ext/ext_ldap.ext_hhvm.h
hphp/runtime/ext/ext_magick.ext_hhvm.cpp
hphp/runtime/ext/ext_magick.ext_hhvm.h
hphp/runtime/ext/ext_mailparse.ext_hhvm.cpp
hphp/runtime/ext/ext_mailparse.ext_hhvm.h
hphp/runtime/ext/ext_math.ext_hhvm.cpp
hphp/runtime/ext/ext_math.ext_hhvm.h
hphp/runtime/ext/ext_mb.ext_hhvm.cpp
hphp/runtime/ext/ext_mb.ext_hhvm.h
hphp/runtime/ext/ext_mcrypt.ext_hhvm.cpp
hphp/runtime/ext/ext_mcrypt.ext_hhvm.h
hphp/runtime/ext/ext_memcache.ext_hhvm.cpp
hphp/runtime/ext/ext_memcache.ext_hhvm.h
hphp/runtime/ext/ext_memcached.ext_hhvm.cpp
hphp/runtime/ext/ext_memcached.ext_hhvm.h
hphp/runtime/ext/ext_misc.ext_hhvm.cpp
hphp/runtime/ext/ext_misc.ext_hhvm.h
hphp/runtime/ext/ext_mysql.ext_hhvm.cpp
hphp/runtime/ext/ext_mysql.ext_hhvm.h
hphp/runtime/ext/ext_network.ext_hhvm.cpp
hphp/runtime/ext/ext_network.ext_hhvm.h
hphp/runtime/ext/ext_openssl.ext_hhvm.cpp
hphp/runtime/ext/ext_openssl.ext_hhvm.h
hphp/runtime/ext/ext_options.ext_hhvm.cpp
hphp/runtime/ext/ext_options.ext_hhvm.h
hphp/runtime/ext/ext_output.ext_hhvm.cpp
hphp/runtime/ext/ext_output.ext_hhvm.h
hphp/runtime/ext/ext_pdo.ext_hhvm.cpp
hphp/runtime/ext/ext_pdo.ext_hhvm.h
hphp/runtime/ext/ext_posix.ext_hhvm.cpp
hphp/runtime/ext/ext_posix.ext_hhvm.h
hphp/runtime/ext/ext_preg.ext_hhvm.cpp
hphp/runtime/ext/ext_preg.ext_hhvm.h
hphp/runtime/ext/ext_process.ext_hhvm.cpp
hphp/runtime/ext/ext_process.ext_hhvm.h
hphp/runtime/ext/ext_reflection.ext_hhvm.cpp
hphp/runtime/ext/ext_reflection.ext_hhvm.h
hphp/runtime/ext/ext_server.ext_hhvm.cpp
hphp/runtime/ext/ext_server.ext_hhvm.h
hphp/runtime/ext/ext_session.ext_hhvm.cpp
hphp/runtime/ext/ext_session.ext_hhvm.h
hphp/runtime/ext/ext_simplexml.ext_hhvm.cpp
hphp/runtime/ext/ext_simplexml.ext_hhvm.h
hphp/runtime/ext/ext_soap.ext_hhvm.cpp
hphp/runtime/ext/ext_soap.ext_hhvm.h
hphp/runtime/ext/ext_socket.ext_hhvm.cpp
hphp/runtime/ext/ext_socket.ext_hhvm.h
hphp/runtime/ext/ext_spl.ext_hhvm.cpp
hphp/runtime/ext/ext_spl.ext_hhvm.h
hphp/runtime/ext/ext_splfile.ext_hhvm.cpp
hphp/runtime/ext/ext_splfile.ext_hhvm.h
hphp/runtime/ext/ext_sqlite3.ext_hhvm.cpp
hphp/runtime/ext/ext_sqlite3.ext_hhvm.h
hphp/runtime/ext/ext_stream.ext_hhvm.cpp
hphp/runtime/ext/ext_stream.ext_hhvm.h
hphp/runtime/ext/ext_string.ext_hhvm.cpp
hphp/runtime/ext/ext_string.ext_hhvm.h
hphp/runtime/ext/ext_thread.ext_hhvm.cpp
hphp/runtime/ext/ext_thread.ext_hhvm.h
hphp/runtime/ext/ext_url.ext_hhvm.cpp
hphp/runtime/ext/ext_url.ext_hhvm.h
hphp/runtime/ext/ext_variable.ext_hhvm.cpp
hphp/runtime/ext/ext_variable.ext_hhvm.h
hphp/runtime/ext/ext_xml.ext_hhvm.cpp
hphp/runtime/ext/ext_xml.ext_hhvm.h
hphp/runtime/ext/ext_xmlreader.ext_hhvm.cpp
hphp/runtime/ext/ext_xmlreader.ext_hhvm.h
hphp/runtime/ext/ext_xmlwriter.ext_hhvm.cpp
hphp/runtime/ext/ext_xmlwriter.ext_hhvm.h
hphp/runtime/ext/ext_zlib.ext_hhvm.cpp
hphp/runtime/ext/ext_zlib.ext_hhvm.h
hphp/runtime/ext/extension.ext_hhvm.cpp
hphp/runtime/ext/extension.ext_hhvm.h
hphp/runtime/ext/hash/hash_adler32.ext_hhvm.cpp
hphp/runtime/ext/hash/hash_adler32.ext_hhvm.h
hphp/runtime/ext/hash/hash_crc32.ext_hhvm.cpp
hphp/runtime/ext/hash/hash_crc32.ext_hhvm.h
hphp/runtime/ext/hash/hash_fnv1.ext_hhvm.cpp
hphp/runtime/ext/hash/hash_fnv1.ext_hhvm.h
hphp/runtime/ext/hash/hash_furc.ext_hhvm.cpp
hphp/runtime/ext/hash/hash_furc.ext_hhvm.h
hphp/runtime/ext/hash/hash_gost.ext_hhvm.cpp
hphp/runtime/ext/hash/hash_gost.ext_hhvm.h
hphp/runtime/ext/hash/hash_haval.ext_hhvm.cpp
hphp/runtime/ext/hash/hash_haval.ext_hhvm.h
hphp/runtime/ext/hash/hash_md.ext_hhvm.cpp
hphp/runtime/ext/hash/hash_md.ext_hhvm.h
hphp/runtime/ext/hash/hash_murmur.ext_hhvm.cpp
hphp/runtime/ext/hash/hash_murmur.ext_hhvm.h
hphp/runtime/ext/hash/hash_ripemd.ext_hhvm.cpp
hphp/runtime/ext/hash/hash_ripemd.ext_hhvm.h
hphp/runtime/ext/hash/hash_salsa.ext_hhvm.cpp
hphp/runtime/ext/hash/hash_salsa.ext_hhvm.h
hphp/runtime/ext/hash/hash_sha.ext_hhvm.cpp
hphp/runtime/ext/hash/hash_sha.ext_hhvm.h
hphp/runtime/ext/hash/hash_snefru.ext_hhvm.cpp
hphp/runtime/ext/hash/hash_snefru.ext_hhvm.h
hphp/runtime/ext/hash/hash_tiger.ext_hhvm.cpp
hphp/runtime/ext/hash/hash_tiger.ext_hhvm.h
hphp/runtime/ext/hash/hash_whirlpool.ext_hhvm.cpp
hphp/runtime/ext/hash/hash_whirlpool.ext_hhvm.h
hphp/runtime/ext/icu/ICUMatcher.ext_hhvm.cpp
hphp/runtime/ext/icu/ICUMatcher.ext_hhvm.h
hphp/runtime/ext/icu/ICUTransliterator.ext_hhvm.cpp
hphp/runtime/ext/icu/ICUTransliterator.ext_hhvm.h
hphp/runtime/ext/icu/LifeEventTokenizer.ext_hhvm.cpp
hphp/runtime/ext/icu/LifeEventTokenizer.ext_hhvm.h
hphp/runtime/ext/mailparse/mime.ext_hhvm.cpp
hphp/runtime/ext/mailparse/mime.ext_hhvm.h
hphp/runtime/ext/mailparse/rfc822.ext_hhvm.cpp
hphp/runtime/ext/mailparse/rfc822.ext_hhvm.h
hphp/runtime/ext/mysql_stats.ext_hhvm.cpp
hphp/runtime/ext/mysql_stats.ext_hhvm.h
hphp/runtime/ext/pdo_driver.ext_hhvm.cpp
hphp/runtime/ext/pdo_driver.ext_hhvm.h
hphp/runtime/ext/pdo_mysql.ext_hhvm.cpp
hphp/runtime/ext/pdo_mysql.ext_hhvm.h
hphp/runtime/ext/pdo_sqlite.ext_hhvm.cpp
hphp/runtime/ext/pdo_sqlite.ext_hhvm.h
hphp/runtime/ext/soap/encoding.ext_hhvm.cpp
hphp/runtime/ext/soap/encoding.ext_hhvm.h
hphp/runtime/ext/soap/packet.ext_hhvm.cpp
hphp/runtime/ext/soap/packet.ext_hhvm.h
hphp/runtime/ext/soap/schema.ext_hhvm.cpp
hphp/runtime/ext/soap/schema.ext_hhvm.h
hphp/runtime/ext/soap/sdl.ext_hhvm.cpp
hphp/runtime/ext/soap/sdl.ext_hhvm.h
hphp/runtime/ext/soap/soap.ext_hhvm.cpp
hphp/runtime/ext/soap/soap.ext_hhvm.h
hphp/runtime/ext/soap/xml.ext_hhvm.cpp
hphp/runtime/ext/soap/xml.ext_hhvm.h
hphp/runtime/ext/thrift/binary.ext_hhvm.cpp
hphp/runtime/ext/thrift/binary.ext_hhvm.h
hphp/runtime/ext/thrift/compact.ext_hhvm.cpp
hphp/runtime/ext/thrift/compact.ext_hhvm.h
hphp/runtime/ext_hhvm/ext_hhvm_infotabs.cpp
hphp/runtime/ext_hhvm/ext_hhvm_infotabs.h
hphp/runtime/ext_hhvm/gen_ext_hhvm.php [deleted file]
hphp/runtime/ext_hhvm/gen_infotabs.php [deleted file]
hphp/runtime/ext_hhvm/gen_infotabs_header.php [deleted file]
hphp/runtime/ext_hhvm/gen_lib.php [deleted file]
hphp/runtime/ext_hhvm/make_infotabs_header.sh [new file with mode: 0755]
hphp/tools/gen-ext-hhvm/.gitignore [new file with mode: 0644]
hphp/tools/gen-ext-hhvm/CMakeLists.txt [new file with mode: 0644]
hphp/tools/gen-ext-hhvm/gen-ext-hhvm.cpp [new file with mode: 0644]
hphp/tools/gen-ext-hhvm/gen-infotabs.cpp [new file with mode: 0644]
hphp/tools/gen-ext-hhvm/idl.cpp [new file with mode: 0644]
hphp/tools/gen-ext-hhvm/idl.h [new file with mode: 0644]
hphp/tools/generated_files.sh