mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Gecko engine for Wine
d7a89e77b5
new opcode: LIR_jtbl. jtbl takes a uint32_t index and a table of label references (LIns**), representing a jump to one of the labels. the index must be in range (range checking is not included in the opcode). the table is allocated in memory at least as long lived as the LIR; this is accomplished by doing the allocation from the same Allocator used by LirBuffer. In the x86 backend, this is implemented with a simple jmp [R*4+ADDR] where ADDR is the address of the table. I added a new dataAllocator (Allocator&) parameter to Assembler, which is used for allocating data along with code (data & code have same lifetime). The x86 backend allocates the final table of addresses from this allocator and embeds the pointer to the table in code. In other backends more than one instruction must be used due to limited range of the constant part of the addressing mode (ppc, arm), or non-support for full-range pc-relative indexing (x64, ppc64). Anyone generating LIR code for use with LIR_jtbl must also generate a LIR_regfence instruction after each label reachable by a forwards edge from LIR_jtbl. This is to workaround the register allocator's inability to merge register states between 2 or more pre-existing targets. LIR_regfence is not required for backwards edges. --HG-- extra : convert_revision : ee709eaaa30f720f77ab863ba4c9e6d10d69982b |
||
---|---|---|
accessible | ||
browser | ||
build | ||
caps | ||
chrome | ||
config | ||
content | ||
db | ||
dbm | ||
docshell | ||
dom | ||
editor | ||
embedding | ||
extensions | ||
gfx | ||
intl | ||
jpeg | ||
js | ||
layout | ||
media | ||
memory/jemalloc | ||
modules | ||
netwerk | ||
nsprpub | ||
other-licenses | ||
parser | ||
probes | ||
profile | ||
rdf | ||
security | ||
storage | ||
testing | ||
toolkit | ||
tools | ||
uriloader | ||
view | ||
webshell | ||
widget | ||
xpcom | ||
xpfe | ||
xpinstall | ||
xulrunner | ||
.hgignore | ||
.hgtags | ||
aclocal.m4 | ||
allmakefiles.sh | ||
client.mk | ||
client.py | ||
configure.in | ||
LEGAL | ||
LICENSE | ||
Makefile.in | ||
README.txt |
An explanation of the Mozilla Source Code Directory Structure and links to project pages with documentation can be found at: https://developer.mozilla.org/en/Mozilla_Source_Code_Directory_Structure For information on how to build Mozilla from the source code, see: http://developer.mozilla.org/en/docs/Build_Documentation To have your bug fix / feature added to Mozilla, you should create a patch and submit it to Bugzilla (http://bugzilla.mozilla.org). Instructions are at: http://developer.mozilla.org/en/docs/Creating_a_patch http://developer.mozilla.org/en/docs/Getting_your_patch_in_the_tree If you have a question about developing Mozilla, and can't find the solution on http://developer.mozilla.org, you can try asking your question in a mozilla.* Usenet group, or on IRC at irc.mozilla.org. [The Mozilla news groups are accessible on Google Groups, or news.mozilla.org with a NNTP reader.] You can download nightly development builds from the Mozilla FTP server. Keep in mind that nightly builds, which are used by Mozilla developers for testing, may be buggy. Firefox nightlies, for example, can be found at: ftp://ftp.mozilla.org/pub/firefox/nightly/latest-trunk/