By default, zend source compatability remains disabled,
however you can now explicitly request compilation of the
infrastructure and the extensions it supports via:
cmake -DENABLE_ZEND_COMPAT=ON .
Note that CMake caches -D defines between runs, so a later call
without ENABLE_ZEND_COMPAT will still retain the option enabled.
Either explicitly set it to OFF, or delete CMakeCache.txt if
switching between the two.
A direct port of zend's forked libmagic code embeded in the same way they do it. All the bad tests are from `var_dump` imcompatability or unrelated unimplemented functions.
Reviewed By: @paroski
Differential Revision: D1050594
make install
Installs hhvm and systemlib.php to CMAKE_INSTALL_PREFIX/bin
To override the default location define it during cmake:
cmake -DCMAKE_INSTALL_PREFIX=/usr/hphp .
This change is mostly for FB internal organizational reasons.
Building is not effected beyond the fact that the target now
lands in hphp/hhvm/hhvm rather than src/hhvm/hhvm.
Move hphp/main.cpp to compiler/compiler.cpp, and rename
a few things to make it possible to link with hhvm.
Modify hhvm startup to run as hphp if
the first argument is --hphp.
Separates hhvm from hphpc. (This will mean we don't have to
compile hphpc when iterating on VM changes, and will help for eventual
hphpc-deprecation.) Details:
- Stubs for hphpc-externals symbols that can't yet be removed.
- src/system now includes g_system_class_map, which is essentially
what the hhvm class map contained (only system stuff, plus things
from constants.php).
- VM::ProcessInit was the only part of the runtime that depended on
libext_hhvm---breaks that dependency using a function pointer for
now so you can link hphp_runtime without linking ext_hhvm.
- Remove dlsym usage to access compiler symbols, using function
pointers for now too.
Fix casting resources to strings in the translator
Add request_alloc(); use it for non-ObjectData instead of ALLOCOBJSZ
Take two at reverting short array notation
Make more requires "mergeable"
Fix TestCodeRun-Exit
Change VectorArray to allocate values contiguously
Force file removal in merge-me-to-rc and merge-rc-to-release.
Run all C++ tests on each hphp diff sent out
Fix uncompilable code gen
Move HPHP::VM::Verifier::Arena to HPHP::Arena
Add a TinyVector<> class that can replace some uses of vector; use it some
ServiceRouter: bump version in hphp after single host fix
HPHP: get building with gcc-4.7.1
HPHP extension for textGetHyperlinks
Export translation counters through the hardware counters interface
Fix Makefile
HphpArray methods don't need to be virtual, clean up inline decls.
Remove a few things we don't follow from coding_guideline
Fix bugs with attributes for closures and methods imported from traits
Remove some new using directives that crept in after earlier removal
Add a check for lowercase extension function names in gen_ext_hhvm.php
[tc-print] More detailed summary of events
[tc-print] Changes to tc-prod-collect
Allow COMPILER_ID to be overridden on the command line
Remove boolean args from HphpArray::addVal[WithRef]
Fix NameValueTable load factor check.
Reduce StringBuffer memory usage
Fix compilation errors
Update login for megabench test user
make zend array bucket smaller
Clean up HphpArray code
Fix parser to allow xhp classes as attribute type hints
Enable the use of static analysis types in RepoAuthoritative mode
Fix compilation errors in HphpArray without USE_JEMALLOC
Remove extra element alignment and casting in HphpArray
Revert "HPHP extension for textGetHyperlinks"
bump fbcode revision to include D507348
HPHP extension for textGetHyperlinks
Remove KindOfIndirect support from HphpArray, add new VarEnv implementation
Teach the hhas assembler about string and int vector immediates
Allow ':' to be followed by T_XHP_LABEL
[tc-print] Add top translations summary
Fix string buffer overflows and other issues
Make type-profiling name-driven, and fix bugs.
Summary: Added plumbing to the cmake scripts to enable hhvm builds.
To build the VM, export USE_HHVM=1, and follow the wiki instructions
to do a clean build.
Summary: The test binary was hard coded to expect hphpi at src/hphpi/hphpi. Fix
it to take the path via a define at compile time, rather than copying the binary
there from OUTPUT_ROOT. A couple of other small fixes.
Test Plan: fast_tests slow_tests with/without OUTDIR_BY_TYPE set
Reviewers: qigao, myang
Reviewed By: myang
CC: ps, mwilliams, myang
Differential Revision: 344296
Summary:
Previously, to run tests, the 'run' binary would dlopen the
libtest.so shared library for the current test and run its
'main' function. This caused problems with glibc, as it has
an issue where using pthread_join in static initializers
when run via dlopen causes a deadlock:
- http://sourceware.org/bugzilla/show_bug.cgi?id=12307
- https://bugzilla.redhat.com/show_bug.cgi?id=661676
The problem occurs when initializing newer versions of the
mysql library (newer versions than what is in the HPHP externals
repo, which is why the problem hasn't been seen yet), which is
used from the fbcode third-party repository.
This diff replaces the use of dlopen in the test runner to
use the dynamic linker instead. This required building against
a dummy libtest.so, then using LD_LIBRARY_PATH to point the
test runner to the correct libtest.so when running the actual
tests.
Test Plan:
Ran slow tests for builds of HPHP
1) Against its own externals tree
2) Against the fbcode gcc-4.4.5-glibc-2.11.2 externals tree
3) With TAINTED=1
Reviewers: mwilliams, ldbrandy, gpatangay
Reviewed By: mwilliams
CC: mwang, ps, mwilliams, ldbrandy
Differential Revision: 311686
Summary:
Failing to define TAINTED for build targets of a tainted hphp binary
will result in segfaults due to conflicting definitions. To ensure this
never happens, when we compile the hphp binary, if the build is tainted,
we place a sentinel file in HPHP_LIB; then for any build under the
tainted binary, we check for the existence of this file and pass
-DTAINTED if we find it.
In order to switch from tainted to untainted or vice versa, a clean is
needed so that we rebuild hphp with the code guarded by TAINTED flags.
This removes the sentinel file. However, since code generation is taint-
blind, we can still compile code generated under a tainted build with an
untainted build and vice versa by pointing HPHP_HOME and HPHP_LIB to the
desired repo.
Test Plan:
Ran 'make TAINTED=1 -C src -j' and made www without passing TAINTED;
ran hphpi and www as server with no crash and saw taint logs. Then did
the same for untainted builds, seeing no taint logs.
Reviewed By: mwilliams
Reviewers: mwilliams, gpatangay
CC: srenfro, hphp-diffs@lists, ps, mwilliams, mwang
Revert Plan:
Tags:
- begin *PUBLIC* platform impact section -
Bugzilla: #
- end platform impact -
Differential Revision: 309659
Task ID: 656564
Summary: dynConstruct was generated per class, but should obviously be
implemented using getConstructor()/getMeth(), to avoid the per-class overhead.
However, inspection revealed that it was only called from one place in the
entire code base, and that was limited to the spl classes. So I removed the
function entirely, and rewrote the one callsite to use getConstructor directly.
Test Plan: fast_tests slow_tests, build www/www-dev.
Reviewed By: myang
Reviewers: qigao, myang
CC: mpal, cbueno, ps, mwilliams, myang
Revert Plan:
Tags:
- begin *PUBLIC* platform impact section -
Bugzilla: #
- end platform impact -
Differential Revision: 308366
Summary:
Separable extensions were always built into the source directory, which wasnt
really compatible with the use of OUTPUT_ROOT and OUTDIR_BY_TYPE for the
compiler.
Add a hook.mk in src/hphpi to add the facebook specific separable extensions to
the hphpi build.
Reviewed By: myang
Reviewers: qigao, myang
CC: ps, mwilliams, perflab-dev@lists, myang
Revert Plan:
Tags:
- begin *PUBLIC* platform impact section -
Bugzilla: #
- end platform impact -
Differential Revision: 276669
Summary:
The parser transformation that creates the generator marks the hints the
continuation parameter as Continuation. But that doesnt take effect, because the
body of the function contains an LVariableTable, and so "anything" could happen
to the continuation parameter.
I marked the parameter "hidden", which says to keep it out of the variable
table. This allows the compiler to deduce that its not altered, and hence that
its type is Continuation throughout the function. So now we get direct calls to
the continuation methods, rather than indirect calls.
I then made some minor tweaks to the Closure/Continuation methods to fix return
types, so that eg getLabel() returns an int, making the initial switch more
efficient.
Test Plan:
fast_tests slow_tests
Reviewed By: myang
Reviewers: qigao, myang
CC: ps, mwilliams, myang
Revert Plan:
Tags:
- begin *PUBLIC* platform impact section -
Bugzilla: #
- end platform impact -
Differential Revision: 259841
Summary:
We autogenerate ffi wrappers for most functions. But functions created by
create_function, or closures dont need wrappers because they're never called
directly. In addition, some of the wrappers dont add a prefix, so these
functions would end up with invalid names.
Test Plan:
fast_tests, slow_tests, build libffi/python
DiffCamp Revision: 218069
Reviewed By: qixin
Reviewers: qixin
CC: qixin, mwilliams, hphp-diffs@lists
Tasks:
#504523: create_function() creates syntax error for FFI wrappers
Revert Plan:
OK
Summary:
The recent header file reorganization caused problems with --format=lib,
because we then generate inline wrapper functions for each method. Because of
the way SmartPtr was implemented, this could require class definitions, rather
than just forward declarations.
In order to fix the dependencies, we would have to move the wrappers out of the
class, so that the class headers could all be included, and then the methods
could be declared.
For now, Im going for the simpler solution of changing the implementation of
SmartPtr so that it doesnt depend on the inheritance hierarchy (in particular,
SmartPtr<T> doesnt need to know that T derives from ObjectData).
Test Plan:
fast_tests, slow_tests, build libcore and www-dev
DiffCamp Revision: 207411
Reviewed By: qixin
Reviewers: qixin, qigao
CC: qixin, hphp-diffs@lists
Revert Plan:
OK
Summary:
Compilation now takes place outside of hphp, so record and display the time
separately.
Also update .gitignore to include some files generated by
Test Plan:
build www, www-dev from facebook, and www from facebook/push. Observe compile
time messages.
DiffCamp Revision: 182262
Reviewed By: hzhao
CC: hzhao, hphp-diffs@lists
Tasks:
Revert Plan:
OK
Summary:
not all working, but some are :-)
Test Plan:
make
DiffCamp Revision: 178427
Reviewed By: qixin
CC: achao, qixin, hphp-diffs@lists
Revert Plan:
OK
Summary:
The various hook.mk were copying files into the src directory, and then
compiling them. Also, there seemed to be some issues with the copy rules
This made it awkward to work with those files.
Test Plan:
make -Csrc. make fast_tests, slow_tests.
DiffCamp Revision: 123656
Reviewed By: myang
CC: hphp-diffs@lists, myang
Revert Plan:
OK
Summary:
Replaced the "@" prefixes on all commands with $(V), which defaults to @. If you want to see the make commands echoed, use "make V=".
Added USE_CCACHE option. If set, and ccache is available, it will use ccache for compiles.
Added .gitignore files for git users
Reviewed By: hzhao
Test Plan:
Build still works, git status doesnt show me any cruft files, and ccache builds are really fast (once the cache is populated).
Revert: OK
DiffCamp Revision: 87920
git-svn-id: http://svn.facebook.net/hiphop/fbomb/branches/hphp-dev/fbcode/hphp@21557 2248de34-8caa-4a3c-bc55-5e52d9d7b73a