llvm-project/llvm/utils
Maksim Panchenko cce239c45d HHVM calling conventions.
HHVM calling convention, hhvmcc, is used by HHVM JIT for
functions in translated cache. We currently support LLVM back end to
generate code for X86-64 and may support other architectures in the
future.

In HHVM calling convention any GP register could be used to pass and
return values, with the exception of R12 which is reserved for
thread-local area and is callee-saved. Other than R12, we always
pass RBX and RBP as args, which are our virtual machine's stack pointer
and frame pointer respectively.

When we enter translation cache via hhvmcc function, we expect
the stack to be aligned at 16 bytes, i.e. skewed by 8 bytes as opposed
to standard ABI alignment. This affects stack object alignment and stack
adjustments for function calls.

One extra calling convention, hhvm_ccc, is used to call C++ helpers from
HHVM's translation cache. It is almost identical to standard C calling
convention with an exception of first argument which is passed in RBP
(before we use RDI, RSI, etc.)

Differential Revision: http://reviews.llvm.org/D12681

llvm-svn: 248832
2015-09-29 22:09:16 +00:00
..
FileCheck Cleanup places that passed SMLoc by const reference to pass it by value instead. NFC 2015-09-20 23:35:59 +00:00
KillTheDoctor More missing includes only visible to MSVC. 2015-03-23 18:23:08 +00:00
Misc
PerfectShuffle
TableGen TableGen: Add LLVM_READONLY to generated InstrMapping functions 2015-09-24 07:51:20 +00:00
Target/ARM
bugpoint
buildit
count
crosstool
emacs Cleaning up LLVM IR mode for Emacs. 2015-09-10 13:44:28 +00:00
fpcmp
git
git-svn Improve check on git-svnrevert, better error message 2015-05-16 10:23:48 +00:00
jedit Rename all references to old mailing lists to new lists.llvm.org address. 2015-08-05 03:51:17 +00:00
kate Rename all references to old mailing lists to new lists.llvm.org address. 2015-08-05 03:51:17 +00:00
lint
lit Fix passed env var name in lit for Android tests. 2015-09-04 23:52:04 +00:00
llvm-build Filter libraries that are not installed out of CMake exports (currently 2015-08-21 18:10:57 +00:00
llvm-lit Revert r229224: Make the 'llvm-lit' utility defend against a system where Python3 2015-02-14 07:11:25 +00:00
not Add a small "usage:" comment at the top of not.cpp 2014-11-26 22:53:46 +00:00
release Revert r245355 "Release script: correctly symlink clang-tools-extra into the build (PR22765)" 2015-08-24 23:34:28 +00:00
testgen
textmate
unittest Rename all references to old mailing lists to new lists.llvm.org address. 2015-08-05 03:51:17 +00:00
valgrind valgrind/x86_64-pc-linux-gnu.supp: Suppress also /bin/bash. 2014-09-24 04:38:20 +00:00
vim HHVM calling conventions. 2015-09-29 22:09:16 +00:00
yaml-bench YAML: Implement block scalar parsing. 2015-05-13 23:10:51 +00:00
DSAclean.py
DSAextract.py
GenLibDeps.pl
GetRepositoryPath
GetSourceVersion
LLVMBuild.txt
Makefile Fix r236754: Add the missing yaml-bench dir to the makefile for utils. 2015-05-07 18:48:48 +00:00
UpdateCMakeLists.pl
bisect
check-each-file
clang-parse-diagnostics-file
codegen-diff
countloc.sh
create_ladder_graph.py Add ladder graph utility 2015-04-14 18:14:38 +00:00
findmisopt Delete -std-compile-opts. 2014-10-16 20:00:02 +00:00
findoptdiff
findsym.pl
getsrcs.sh
lldbDataFormatters.py utils: Teach lldbDataFormatters about llvm::Optional 2015-02-20 02:55:22 +00:00
llvm-compilers-check
llvm-native-gxx
llvm.grm
llvm.natvis
llvmdo
llvmgrep
makellvm
shuffle_fuzz.py [shuffles] Tweak my shufflevector fuzz test generation script to produce 2015-02-18 01:36:45 +00:00
sort_includes.py Add polly support to sort_includes.py 2015-05-09 09:08:56 +00:00
test_debuginfo.pl
update_llc_test_checks.py [x86] Teach my test updating script about another quirk of the printed 2015-02-15 00:08:01 +00:00
wciia.py