Commit Graph

236 Commits

Author SHA1 Message Date
Nicholas Nethercote
5eddcbaa96 Bug 551039 - nanojit: account for eight-byte alignment of stack in StackFilter. r=gal.
--HG--
extra : convert_revision : 73a17dbefb346ec569b86ae5f28a56a06297181d
2010-03-11 14:59:45 -08:00
Nicholas Nethercote
e9aaac654a Bug 545274 - nanojit: start adding alias info to loads/stores/calls. r=rreitmai.
--HG--
extra : convert_revision : 4adbf1bbb16cf4751b46a49a4f9c474c0ab0a3b9
2010-03-02 12:43:20 +11:00
Nicholas Nethercote
10443de653 Bug 535705 - nanojit: finish regstate update fixes for i386. r=edwsmith.
--HG--
extra : convert_revision : 05949faa5b451d5452c9b5eb95296a53b555dda1
2010-03-01 14:57:19 +11:00
Nicholas Nethercote
23edcdcbce Bug 535706 - nanojit: fix regstate updates for X64. r=edwsmith.
--HG--
extra : convert_revision : 6fb5f71fba861a333e17de644fe49de60bb7a1bd
2010-03-01 09:46:17 +11:00
Nicholas Nethercote
a361abc6fa Bug 539874 - nanojit: remove LIR_ov. r=edwsmith, Jacob.Bramley.
--HG--
extra : convert_revision : eb5f9b4138530e15b3ffd478071bf98bb7495405
2010-02-19 15:04:55 +11:00
Steven Johnson
894487e422 Bug 542133 - Add a real NJConfig struct to nanojit (r=edwsmith,r=nnethercote)
--HG--
extra : convert_revision : 353c06e32329377cc9ed5f66eeb6bcaf72ff3aea
2010-02-15 17:56:41 -08:00
Nicholas Nethercote
78e2d52f98 merge
--HG--
extra : convert_revision : 035a5165bc8bbf7940415d4802bf9b14d1226740
2010-02-15 17:24:21 +11:00
Nicholas Nethercote
66b0d6df6b Bug 507089 - TM/nanojit: introduce get/set methods for CallInfo::_argtypes. r=edwsmith.
--HG--
extra : convert_revision : 8075a19e11565e6de5f33ed829fe435e47e116ca
2010-02-15 11:01:04 +11:00
Nicholas Nethercote
2481388fac Bug 542326 - nanojit: add NJ_SOFTFLOAT_SUPPORTED, and only compile in support for non-universal opcodes on platforms that use them. r=stejohns,edwsmith.
--HG--
extra : convert_revision : 990d84e8d841139009cb2728297d81e8fc4aad27
2010-02-12 12:30:16 +11:00
Rick Reitmaier
140845622b Bug 504202 - MIPS target support (r+graydon,rreitmai) [chris.dearman]
MIPS target support added courtesy of Chris Dearman.

--HG--
extra : convert_revision : 45136ae8db067291bb4b6595f6c4319675012cc5
2010-02-01 10:22:30 -08:00
Nicholas Nethercote
b61775ba66 Bug 540368 - nanojit: split LIR_qlo, LIR_live and LIR_ret into two opcodes each to faciliate LIR type-checking (NJ-specific part). r=edwsmith.
--HG--
extra : convert_revision : 54cf6d39a21dc1e209d3e0e48bb6c2b61ab5f909
2010-01-28 08:45:29 +11:00
Nicholas Nethercote
09e7e8d0a8 Bug 541886 - nanojit: move compile() into class Assembler. r=rreitmai.
--HG--
extra : convert_revision : f3506c693a7e8b7af089367313cbe960d7e2607f
2010-01-26 13:38:15 +11:00
Nicholas Nethercote
b2dcc26c38 Bug 538924 - nanojit: rework reservations. r=edwsmith.
--HG--
extra : convert_revision : 51a78a175b1074c933323e0bf24d6f64b5c6c35d
2010-01-25 10:39:36 +11:00
Nicholas Nethercote
a0704e558a Bug 540351 - nanojit: refactor hint() and registerAlloc(). r=rreitmai.
--HG--
extra : convert_revision : fa4f34a51239317d312b9388f2eb9ca2631b463e
2010-01-25 09:40:11 +11:00
Nicholas Nethercote
43cc6ace57 Bug 534313 - nanojit: split isQuad() into isI64() + isF64() + is64(). r=dvander,stejohns.
--HG--
extra : convert_revision : f24a70adec4c24dffd3a9c6c3572c5755938291a
2010-01-25 08:25:04 +11:00
Edwin Smith
605b734ba8 (second try) Adds protect/unprotect API to CodeAlloc (bug 460993 r=nnethercote,rreitmai sr=gal)
Removes calls to VMPI_setPageProtection from CodeAlloc, and adds a new
protect/unprotect API to CodeAlloc, along with an SPI for the vm to implement
actual page protection.

It is up to the VM to call codeAlloc->protect() before executing jit'd code,
but CodeAlloc will internally call unprotect() before modifying blocks, as code
is generated.  If the VM's implementation of allocCodePage allocates memory
as RWX, then the new protection api's can be ignored and the implementations
of markCodeChunkExec/Write can be empty functions.

A flag per code chunk is used so that only modified pages are unprotected and
reprotected.

CodeAlloc never calls VMPI_setPageProtection any more, so platform abstractions
for this can be encapsulated in the CodeAlloc SPI methods.

nanojit/avmplus.cpp was modified to call VMPI_setPageProtection on the platforms
that didn't already allocate code memory as RWX.  Since those callsites are platform
specific and the only place we call VMPI_setPageProtection, the code could be further
simplified.

--HG--
extra : convert_revision : 3c9030f46c15cc0f033592db6ba96674e1f5173b
2010-01-22 15:18:12 -05:00
Nicholas Nethercote
c1a35c54aa Bug 521692 - NJ merge: don't check for error twice in Assembler::gen(). r=graydon.
--HG--
extra : convert_revision : c0257e13ea032510ed6ec3e1a6ea55c0fe98e614
2010-01-22 13:24:59 +11:00
Nicholas Nethercote
3dd103b579 Backed out changeset (by hand due to update-nanojit difficulties) 69d5a3454a6e (bug 460993), avmplus.cpp changes were bogus. 2010-01-22 08:43:09 +11:00
Edwin Smith
b1f006af09 Adds protect/unprotect API to CodeAlloc (bug 460993 r=nnethercote,rreitmai sr=gal)
Removes calls to VMPI_setPageProtection from CodeAlloc, and adds a new
protect/unprotect API to CodeAlloc, along with an SPI for the vm to implement
actual page protection.

It is up to the VM to call codeAlloc->protect() before executing jit'd code,
but CodeAlloc will internally call unprotect() before modifying blocks, as code
is generated.  If the VM's implementation of allocCodePage allocates memory
as RWX, then the new protection api's can be ignored and the implementations
of markCodeChunkExec/Write can be empty functions.

A flag per code chunk is used so that only modified pages are unprotected and
reprotected.

CodeAlloc never calls VMPI_setPageProtection any more, so platform abstractions
for this can be encapsulated in the CodeAlloc SPI methods.

nanojit/avmplus.cpp was modified to call VMPI_setPageProtection on the platforms
that didn't already allocate code memory as RWX.  Since those callsites are platform
specific and the only place we call VMPI_setPageProtection, the code could be further
simplified.

--HG--
extra : convert_revision : a1002278492b012b727550db2fb928faa6bee36b
2010-01-20 13:32:02 -05:00
Nicholas Nethercote
0c9683a5c5 Bug 539379 - TM: Crash [@ ExecuteTrace] or [@ ExecuteTree]. r=edwsmith.
--HG--
extra : convert_revision : a5115ee971c8496182e9b4f6847ad91619b4a585
2010-01-15 15:07:32 +11:00
Vladimir Vukicevic
78c3d13a0e b=523251; add LIR_f2i; r=njn,edwsmith
--HG--
extra : convert_revision : 95e6284a8725404dfb1f2685e1ee5efdc334d169
2010-01-13 14:40:35 -08:00
Edwin Smith
313f22a44e Lazy-allocate code memory for side exits (bug 538393 r=nnethercote+)
--HG--
extra : convert_revision : 97bacc5dff62389b91741265ca30dc73a2a8f532
2010-01-12 08:58:14 -05:00
Vladimir Vukicevic
37cc5c283f Backed out changeset fea4da580994 -- need to split LIR_f2i into nj-central and tm patches 2010-01-11 21:54:02 -08:00
Vladimir Vukicevic
373168d7d3 b=523251; add LIR_f2i; r=gal 2010-01-11 21:41:20 -08:00
Edwin Smith
127df225b6 Whitespace hygene (r=me)
--HG--
extra : convert_revision : f5f333d75636ed9e4c7869bdcf6aaa69beb35a2e
2010-01-07 13:05:33 -05:00
Steven Johnson
9efa35156a Add NJ_USES_QUAD_CONSTANTS mode (and i386 implementation) to allow for faster float constants on CPUs without useful 64-bit immediates. Instead of allocating stack space for the constants (and filling them in via move-immediates), allocate data space for them and embed literal pointers into the code stream. (r=edwsmith, r=nnethercote, bug=533546)
--HG--
extra : convert_revision : 42048199209f5614ee62adaa25cc6bf75821911a
2010-01-05 15:28:40 -08:00
Nicholas Nethercote
1022818501 Bug 520714 - nanojit: distinguish 64-bit int and float loads/stores. r=gal,rreitmai.
--HG--
extra : convert_revision : a19809f7ba60b4381b77b84363bebf0ff7cf9629
2010-01-05 14:03:49 +11:00
Nicholas Nethercote
af8581791c Bug 536098 - nanojit: speed up intersectRegisterState(). r=edwsmith.
--HG--
extra : convert_revision : 12013e9b8fab0168bc26e2e04fe9779e5aed2559
2009-12-22 19:47:17 -08:00
Steven Johnson
147c31c411 speed up AR::validate (r=nnethercote,bug=473769)
--HG--
extra : convert_revision : 0ff411e99654f590121e90a93345257b14442721
2009-12-22 17:32:49 -08:00
Steven Johnson
12ce52af94 AR::freeEntryAt could underrun the _entries array, leading to crashiness (r=rreitmai,bug=536378)
--HG--
extra : convert_revision : 6937b91b3b20430521eb476adba4f124beaac216
2009-12-22 16:59:36 -08:00
Nicholas Nethercote
1c0554f24b Bug 524640 - nanojit: avoid calling releaseRegisters() twice. r=gal.
--HG--
extra : convert_revision : 5af925a7a5ceae6ab8bb9219585bfacccdf56ef0
2009-12-22 21:37:49 +11:00
Edwin Smith
245eaeb9f7 Whitespace hygene (r=me)
--HG--
extra : convert_revision : b7a4852a92d3ceb74592c1da0e1cd0beace84eb5
2009-12-21 15:05:48 -05:00
Steven Johnson
4015262424 Increase NJ_MAX_STACK_ENTRY on desktop systems, revise search algo in AR (r=nnethercote,r=edwsmith,bug=473769)
--HG--
extra : convert_revision : 0a12bb3f8436feac1814bfdd25dde1afcd050c0a
2009-12-21 12:03:59 -08:00
Steven Johnson
360031a709 fix windows build breakage
--HG--
extra : convert_revision : e4bce7ea53c77d9bec640d68c98c917909538fe3
2009-12-21 11:03:02 -08:00
Steven Johnson
f6bd527266 Encapsulate AR structure (r=nnethercote,bug=473769)
--HG--
extra : convert_revision : a2bdfa990384135e642f027d79dd7c01c48e8994
2009-12-21 10:51:57 -08:00
Nicholas Nethercote
0a83128602 Bug 516347 - nanojit: avoid premature regalloc state updates in the i386 backend. r=edwsmith,dvander.
--HG--
extra : convert_revision : e7b2c0d805eb61ca0ead9402f8a01f6bb85de29f
2009-12-18 12:39:16 +11:00
Nicholas Nethercote
387808d7b9 Bug 527178 - NJ: all our efforts at handling valid displacements are defeated (take 2a). r=graydon,gal.
--HG--
extra : convert_revision : c2be4b89e09d6dd1b8c83b14240d00d57c084419
2009-12-18 08:24:39 +11:00
Nicholas Nethercote
d0b6417b4c Backed out changeset 2bd8a736808d, caused ARM bustage.
--HG--
extra : convert_revision : 7fd3a1258dbf608d4c62862029d1a30317f7b9e5
2009-12-15 13:16:54 +11:00
Nicholas Nethercote
84f5fd65b2 Bug 527178 - NJ: all our efforts at handling valid displacements are defeated (take 2). r=graydon,gal.
--HG--
extra : convert_revision : 2bd8a736808d4a2582233d05832f11899ccc2fd7
2009-12-15 12:54:26 +11:00
Nicholas Nethercote
2c6fd78104 Bug 504507 - nanojit: kill LIR64 (NJ-only part). r=gal.
--HG--
extra : convert_revision : 2271d9cb2d87970d20befb51dbc7092c830a4e10
2009-12-09 15:49:15 -08:00
Nicholas Nethercote
51c20028df Bug 533233 - nanojit: get rid of LC_NoCodeAddrs. r=edwsmith.
--HG--
extra : convert_revision : 5edcef2131dfd0f521b306aee9a40a51b487efb9
2009-12-08 07:57:17 -08:00
Nicholas Nethercote
a4408cec60 Bug 531347 - nanojit: rejig asm_call(). r=edwsmith.
--HG--
extra : convert_revision : 1c68f440a757a8cb002c8da9118d034a9c7d4fab
2009-12-01 18:50:07 -08:00
Steven Johnson
4732e1b682 nanojit/Assembler.cpp: when LIR_stqi calls asm_store32 twice, pass LIR_sti for the opcode, rather than op. (r=me)
--HG--
extra : convert_revision : 0da91726eca5ccbfed98d340e428d3303d5708f0
2009-12-01 17:40:25 -08:00
Steven Johnson
45a6270f4c Add new opcodes to allow load/store of 8-bit int, 16-bit int, and 32-bit floats. Initially implemented only for i386, other backend implementations to follow. See https://bugzilla.mozilla.org/show_bug.cgi?id=527083 for more detail. (r=rreitmai, nnethercote)
--HG--
extra : convert_revision : 7c5395e67078266797de2e2de6555974ee61acf7
2009-12-01 16:50:03 -08:00
Nicholas Nethercote
dfc1dd039d Bug 515313 - nanojit: finish killing reservations. r=edwsmith.
--HG--
extra : convert_revision : 1b6cb808f3048c25857613fa6e77e865fee51d8e
2009-11-24 23:00:23 -08:00
Nicholas Nethercote
a603d864d1 Bug 512181 - nanojit: rework TMFLAGS=assembly,regalloc,activation. r=edwsmith.
--HG--
extra : convert_revision : 43e64a1135f17761aad95ee7ce2d1692aa937579
2009-11-24 22:38:51 -08:00
Nicholas Nethercote
b33368aede Bug 525379 - nanojit: make the _nIns/_nExitIns swap hack more consistent. r=edwsmith.
--HG--
extra : convert_revision : bad9394918255f4afcbff259153dc9d8c9afad25
2009-11-24 14:56:33 +11:00
Nicholas Nethercote
348df1cdbf Bug 529725 - nanojit: improve asm_prep_fcall() in i386 and Sparc backends. r=rreitmai.
--HG--
extra : convert_revision : 30767eb970427b1044fae5db99c2427f57e576fe
2009-11-23 11:04:59 +11:00
Julian Seward
937420dbec Bug 520905 - collapse callee saved register spills/reloads into LDMIA/STMIA instructions, r=vlad.
--HG--
extra : convert_revision : 73952814a07755be92fba1060efc97d5010b38c9
2009-11-20 10:11:33 -08:00
Edwin Smith
c75cfaf023 Fix PPC bustage (bug 513863, r=me)
--HG--
extra : convert_revision : 606f3e6e99b02907d3c983dd37aa7e011a7fa43e
2009-11-18 13:42:08 -05:00