Dmitry Stogov
e868ded6ef
Don't call _zend_hash_index_find() for packed arrays
2021-11-08 13:13:23 +03:00
Dmitry Stogov
7bf63243e1
JIT: Fixed incorrect guard elimination
2021-11-08 12:28:36 +03:00
Dmitry Stogov
34d22acc7e
Tracing JIT: Fixed incorrect guard elimination
2021-11-03 23:37:00 +03:00
Dmitry Stogov
66d93c63ff
Fixed type inference for FETCH_DIM_W without use
2021-11-03 19:44:38 +03:00
Dmitry Stogov
2605911272
Tracing JIT: Fixed reference counting when escape because of IS_UNDEF element (test)
2021-11-01 22:19:10 +03:00
Dmitry Stogov
d7ac39b02d
Tracing JIT: Fixed reference counting when escape because of IS_UNDEF element
2021-11-01 22:14:12 +03:00
Dmitry Stogov
5c43e0c0ee
Fixed incorrect assumption about reference counting
2021-11-01 20:28:05 +03:00
Dmitry Stogov
f1e6a7d83d
JIT: Fixed numeric string index handling
2021-11-01 18:50:32 +03:00
Dmitry Stogov
cd32b47235
JIT: Fixed register allocation in case of integer overflow
2021-11-01 16:46:41 +03:00
Nikita Popov
2e29817005
Handle FETCH_DIM_R after FETCH_DIM_FUNC_ARG in inference
...
This can happen if a call is optimized, but FETCH_DIM_FUNC_ARG
cannot be converted to FETCH_DIM_R because it uses an UNUSED op2,
which is not supported by FETCH_DIM_R.
Fixes oss-fuzz 6144185837682688.
2021-11-01 14:26:36 +01:00
Nikita Popov
f8ec5a1d4c
Fix range inference hang
...
We shouldn't switch from range to no range for ZEND_DIV and instead
explicitly return an overflowing range. Otherwise the range will
not actually get updated during widening, and we'll perform
essentially infinite narrowing.
Fixes oss-fuzz #40566 .
2021-11-01 12:31:34 +01:00
Dmitry Stogov
29c8c1e955
Tracing JIT: Fixed possible endless loop when escape from ZEND_CALL_TOP frame
2021-10-25 12:10:25 +03:00
Dmitry Stogov
d3251632ad
Tracing JIT: Fixed incorrect assumption about in-memeory zval type
2021-10-22 14:38:38 +03:00
Dmitry Stogov
c7e974fc4e
Tracing JIT: Fixed incorrect assumtion about temporary variable types clobbered by *_ROPE instructions
2021-10-21 21:35:57 +03:00
Dmitry Stogov
b69c6ba9df
Use right frame
2021-10-20 23:50:33 +03:00
Dmitry Stogov
95c0dfc57f
JIT: Fixed megamorphic call detection
2021-10-20 22:16:25 +03:00
Dmitry Stogov
38626dbaad
JIT: Fixed memory leak
2021-10-20 10:38:47 +03:00
Dmitry Stogov
6bd5271c62
Fixed incorrect optimization that may cause JIT assertion
2021-10-18 23:18:52 +03:00
Dmitry Stogov
d3063c02c6
Tracing JIT: Fixed memory leak
2021-10-18 22:14:53 +03:00
Dmitry Stogov
e59d0a7151
JIT: Fixed DASM_S_RANGE_VREG error
2021-10-18 17:58:42 +03:00
Dmitry Stogov
13d1244575
Tracing JIT: Fixed ADD with two references to arrays
2021-10-18 17:26:36 +03:00
Dmitry Stogov
6021e72143
Tracinf JIT: Prevnt generation code for instruction that with cyclic dependency
...
e.g. $a[] += $a is compiled into ASSIGN_DIM_OP+OP_DATA, where OP_DATA.op1_use depends on ASSIGN_DIM_OP.op1_def
2021-10-18 16:53:45 +03:00
Nikita Popov
9ebe8494b8
Don't replace tmp with cv in YIELD argument
...
For by-ref generators, these may have different behavior.
Fixes oss-fuzz 6059739298004992.
2021-10-12 14:26:53 +02:00
Dmitry Stogov
a4c41d45cd
Fixed type inference for COPY_TMP
2021-10-11 16:56:07 +03:00
Dmitry Stogov
ccdda69a18
JIT: Fixed usage of incorrect specialized zval destructor
2021-10-11 13:00:23 +03:00
Dmitry Stogov
ed8ec9d71e
Fixed type inference (ASSIGN_OP with typed reference may cause type conversion)
2021-10-11 10:48:49 +03:00
Dmitry Stogov
bbd875268a
JIT: Fixed incorrect double/long register hinting
2021-10-08 15:46:49 +03:00
Dmitry Stogov
b279de416e
JIT: Fixed extension handling
2021-10-08 14:06:32 +03:00
Dmitry Stogov
45b127ad4a
Flush error messages emitted during preloading
2021-10-08 12:34:25 +03:00
Dmitry Stogov
7cea20f937
JIT: Fixed FETCH_LIST_R on string
2021-10-07 22:13:39 +03:00
Dmitry Stogov
b47a48ff80
Fixed bug #81512 (Unexpected behavior with arrays and JIT)
2021-10-07 21:24:38 +03:00
Nikita Popov
b564113756
Check exception after undef var notice
...
For simple assignments, we may not emit an exception check elsewhere,
so perform it directly after the undef var notice.
2021-10-07 16:54:26 +02:00
Nikita Popov
08c29a657d
Handle undefined dim in assign_dim_helper
...
Not only the value can be undefined here, but the offset as well.
2021-10-07 15:35:16 +02:00
Nikita Popov
455837139e
Set opline before calling undef op helper
2021-10-07 14:38:02 +02:00
Dmitry Stogov
a743fd7633
JIT: Fixed wrong comparison skip
2021-10-07 15:27:56 +03:00
Dmitry Stogov
6ab36fb6f9
JIT: Fixed incorrect reference handling in PRE_INC/DEC_OBJ
2021-10-07 14:34:18 +03:00
Dmitry Stogov
cd45bd0a81
JIT: Fixed incorrect code generation for JMPZ
2021-10-07 13:48:28 +03:00
Dmitry Stogov
8a0873020a
JIT: Fixed NaN handling
2021-10-06 16:35:33 +03:00
Dmitry Stogov
f681f9075c
JIT: Fixed register clobbering
2021-10-06 12:10:39 +03:00
Nikita Popov
f890c9c5e3
Fix return type verification with undef var
...
This was loading EG(uninitialized_value) into r0 rather than
FCARG1a.
However, if we fix this issue an existing test fails because
the undef var warning promoted to exception is not caught early
enough, so we need to explicitly check for the exception before
performing the type check.
2021-10-05 15:30:55 +02:00
Dmitry Stogov
22ef1fb832
Fixed SSA construction
2021-10-05 16:14:39 +03:00
Nikita Popov
c958adce70
POST_INC_OBJ/POST_DEC_OBJ don't have optional result
...
Possibly we should be encoding this in the opcode metadata, rather
than maintaining a separate list.
Fixes oss-fuzz #39503 .
2021-10-05 12:05:39 +02:00
Nikita Popov
d0860f67ca
Fix cache slot assignment for ASSIGN_OBJ_OP
...
ASSIGN_OBJ_OP stores the cache slot in OP_DATA, so this ended up
overwriting the binop opcode instread.
2021-09-30 14:34:12 +02:00
Dmitry Stogov
512dfaba3a
JIT: Fixed incorrect named parameter handling
2021-09-30 14:51:43 +03:00
Dmitry Stogov
4b31cb3eb8
JIT: Fixed memory leak
2021-09-30 13:01:56 +03:00
Dmitry Stogov
7710047ed1
JIT x86: Fixed NaN handling
2021-09-28 23:49:26 +03:00
Dmitry Stogov
c30298bf57
Tracing JIT: Fixed possible memory-leak or missed destructor call.
...
Reference-counter of return_value may be indirectly decremented to 1.
2021-09-28 22:40:04 +03:00
Nikita Popov
97b5eeeb6c
Fix leak with ASSIGN_OBJ on null
...
We still need to free op1 in this case.
Fixes oss-fuzz 5782176231194624 (part of #38542 ).
2021-09-28 16:33:11 +02:00
Dmitry Stogov
3fd1f6cdad
JIT: Fixed label mess
2021-09-28 15:21:11 +03:00
Nikita Popov
1bb7ee3207
Fix ASSIGN_DIM result inference with typed refs
...
Same issue as with ASSIGN. Also make the handling for ASSIGN more
precise, we can only have conversions between scalar values.
2021-09-28 14:14:01 +02:00