migrate many callsites from Config::GetFoo to Config::Bind

Summary: codemod -m --extensions cpp '([^ ]*)\s*=\s*Config::Get(Bool|String|Byte|UByte|Int16|UInt16|Int32|UInt32|Int64|UInt64)[(]ini,\s*([^\s]*),\s*([^\s]*)[)];' 'Config::Bind(\1, ini, \2, \3);'

and some manual rebasing to current behavior

Reviewed By: @ptarjan

Differential Revision: D1371389
Add hhvm.pcre.jit ini flag to check build config

Summary: Want the benchmark script to check this.

Reviewed By: @oyamauchi

Differential Revision: D1545388
Add hhvm.build_type ini setting

Summary: Also want the benchmark script to check this === release

Reviewed By: @JoelMarcey

Differential Revision: D1545461
Implement RegexIterator::INVERT_MATCH

Summary: Closes https://github.com/facebook/hhvm/pull/3718

Reviewed By: @sgolemon

Differential Revision: D1547317
Re-fix CMake jemalloc check

Summary: Get rid of backslashes that nobody
fully understands and add 0x to the version
constant, 'cause it's supposed to be hex.

Reviewed By: @fredemmott

Differential Revision: D1547859
Improve siege flags

Reviewed By: @​aravind

Differential Revision: D1548017
Make benchmarking script check HHVM build is suitable

Summary: ```
[fredemmott@devbig076 ~/fbcode/hphp/test/frameworks/perf] hhvm perf.php --toys --hhvm=/data/fio/fbcode/_bin/hphp/hhvm/hhvm
HHVM build is not suitable for benchmarking:
  HHVM build type: Debug
  Required: Release
Existing due to invalid config. You can run anyway with --i-am-not-benchmarking, but the results will not be suitable for any kind of comparison.
[fredemmott@devbig076 ~/fbcode/hphp/test/frameworks/perf] hhvm perf.php --toys --hhvm=/data/fio/fbcode/_bin/hphp/hhvm/hhvm --i-am-not-benchmarking

***********************
** 2014-09-09 21:40:42
** Installing framework

**********************
** 2014-09-09 21:40:42
** Starting Nginx
```

Reviewed By: @JoelMarcey

Differential Revision: D1545572
--wrap is specific to linux's gcc linker

Summary: This broke the Mac OSX build.

Reviewed By: @JoelMarcey

Differential Revision: D1546684
Fix race in user*Handler destruction

Summary: Closes #3329

Reviewed By: @ptarjan

Differential Revision: D1546084
try not to use ThreadInfo::s_threadInfo before it is constructed

Summary: I'm seeing lots of segfaults like:

  0  HPHP::File::TranslatePathKeepRelative(HPHP::String const&) at hphp/runtime/base/file.cpp:62
  1  _M_invoke at hphp/runtime/base/request-injection-data.cpp:144
  2  std::_Function_handler<bool (folly::dynamic const&), void HPHP::IniSetting::Bind<std::basic_fbstring<char, std::char_traits<char>, std::allocator<char>, std::fbstring_core<char> > >(HPHP::Extension const*, HPHP::IniSetting::Mode, std::basic_fbstring<char, std::char_traits<char>, std::allocator<char>, std::fbstring_core<char> > const&, char const*, HPHP::IniSetting::SetAndGet<std::basic_fbstring<char, std::char_traits<char>, std::allocator<char>, std::fbstring_core<char> > >, std::basic_fbstring<char, std::char_traits<char>, std::allocator<char>, std::fbstring_core<char> >*)::{lambda(folly::dynamic const&) 1}>::_M_invoke(std::_Any_data const&, folly::dynamic const&) at third-party2/libgcc/4.8.1/gcc-4.8.1-glibc-2.17-fb/8aac7fc/include/c++/4.8.1/functional:2468
  3  void HPHP::IniSetting::Bind<std::basic_fbstring<char, std::char_traits<char>, std::allocator<char>, std::fbstring_core<char> > >(HPHP::Extension const*, HPHP::IniSetting::Mode, std::basic_fbstring<char, std::char_traits<char>, std::allocator<char>, std::fbstring_core<char> > const&, char const*, HPHP::IniSetting::SetAndGet<std::basic_fbstring<char, std::char_traits<char>, std::allocator<char>, std::fbstring_core<char> > >, std::basic_fbstring<char, std::char_traits<char>, std::allocator<char>, std::fbstring_core<char> >*) at hphp/runtime/base/ini-setting.h:226
  4  HPHP::RequestInjectionData::threadInit() at hphp/runtime/base/ini-setting.h:235
  5  HPHP::RequestInjectionData::RequestInjectionData() at hphp/runtime/base/request-injection-data.h:68
  6  HPHP::ThreadInfo::ThreadInfo() at hphp/runtime/base/thread-info.cpp:52
  7  HPHP::ThreadLocalNoCheck<HPHP::ThreadInfo>::create() at hphp/util/thread-local.h:250
  8  HPHP::ThreadLocalNoCheck<HPHP::ThreadInfo>::getCheck() const at hphp/util/thread-local.h:255
  9  HPHP::init_thread_locals(void*) at hphp/runtime/base/thread-init-fini.cpp:60
  10 HPHP::hphp_process_init() at hphp/runtime/base/program-functions.cpp:1628
  11 HPHP::execute_program_impl(int, char**) at hphp/runtime/base/program-functions.cpp:1431
  12 HPHP::execute_program(int, char**) at hphp/runtime/base/program-functions.cpp:944
  13 main at hphp/hhvm/main.cpp:61

I'm not sure what introduced this recently, but it looks like a legit calling order, and this code I'm changing is probably wrong. Instead of trying to read in the global state, I'll use the local instance as we do in other places while binding other INI settings.

I found this crash going all the way back a month:

-rw------- 1 twsvcscm twsvcscm 4285 Aug  6 15:25 stacktrace.3303.log

Reviewed By: @markw65

Differential Revision: D1546487
Remove prepXMM() and cgBinaryDblOp()

Summary: prepXMM() was guaranteed to always be passed Dbl args
assigned to virtual registers, turning the whole thing
into a nop. Consequently, cgBinaryDblOp became a nop too,
so just hand-inlined it everywhere. Removed a few
unnecessary copies too.

Reviewed By: @ottoni

Differential Revision: D1548190
(I inspected each one, and it's just the FTP tests which
are failing many diffs)
Fix Vasm generation for Jmp

Summary: It wasn't handling source operands with types that have constant value (Null, Uninit), which don't require any registers.

Reviewed By: @edwinsmith

Differential Revision: D1547383
stop killing LightProcesses while writing out stacktrace.log

Summary: This check was added 4.5 years ago in a very different environment. We're seeing a lot of deadlocks while writing out the stacktrace file and it would be better to just make LightProcesses able to have its parent go away.

Reviewed By: @markw65

Differential Revision: D1547676
Rewrite + speed up unit test script.

Summary: * Python is easier to maintain
* I want to add coverage support, so this rewrite makes it easier
* We run tests in parallel now, with a 3-4x speedup!
* Easy to run tests independently of fbmake (and avoid its slow startup time) -- and we can either test a single file or an entire directory @elgenie said this would be useful)

Reviewed By: @elgenie

Differential Revision: D1546618
VASM: remove useless instructions

Summary: This diff implements dead code elimination over VASM. Instructions
that modify cpu flags, physical registers, memory, or control flow,
are considered "useful"; this is conservative but correct when we aren't doing
dataflow analysis on machine state (registers, flags, memory).

A current limitation is that we don't track liveness of status flags, so we
cannot remove otherwise-dead ALU instructions (in case the flags are used).

Runs DCE before register allocation.

Reviewed By: @jasone

Differential Revision: D1460512
Extend the throughput performance benchmark driver to have delay knobs.

Change the plumbing so that the $options are pushed around more uniformly
into the workers' constructors, and use properties from the $options
directly.

Add various knobs to control delays before/after most sub-process
launches, delays waiting for responses from the server, delays on the
fcgi channel, and the like. These knobs are reflected as command line
arguments to perf.php. The chosen default values seem plausible or
are historical.

These knobs have proven necessary to support slower systems, or a hhvm
UUT that is itself compiled for debugging or coverage, or is profiling
the PHP being executed.

Add knobs to:
  * override the temporary directory name;
  * plumb subprocess output to files, as using pipes leads to deadlock;
  * trace the subprocess invocations.