History log of /php-src/ext/opcache/jit/zend_jit_trace.c (Results 276 – 300 of 539)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
Revision tags: php-7.4.11, php-7.3.23, php-8.0.0beta4, php-7.4.11RC1, php-7.3.23RC1, php-8.0.0beta3, php-7.4.10, php-7.3.22, php-8.0.0beta2, php-7.3.22RC1, php-7.4.10RC1, php-8.0.0beta1, php-7.4.9, php-7.2.33, php-7.3.21, php-8.0.0alpha3, php-7.4.9RC1, php-7.3.21RC1, php-7.4.8, php-7.2.32, php-8.0.0alpha2, php-7.3.20, php-8.0.0alpha1, php-7.4.8RC1, php-7.3.20RC1, php-7.4.7, php-7.3.19, php-7.4.7RC1, php-7.3.19RC1
# d9510342 16-May-2020 Tyson Andre

Optimize ZEND_COUNT opcodes on arrays in the jit

Avoid the overhead of a call and checking types
when the argument is definitely an array.
Avoid the overhead of gc when `__destruct`

Optimize ZEND_COUNT opcodes on arrays in the jit

Avoid the overhead of a call and checking types
when the argument is definitely an array.
Avoid the overhead of gc when `__destruct` won't get called.

This seemed cheap enough to check for in the jit.

Because of https://wiki.php.net/rfc/restrict_globals_usage
we can be sure in the ZEND_COUNT handler that the array count does not have to
be recomputed in php 8.1.

The below example took 0.854 seconds before the optimization,
and 0.564 seconds after the optimization, giving the same result

```php
<?php
/** @jit */
function bench_count(int $n): int {
$total = 0;
$arr = [];
for ($i = 0; $i < $n; $i++) {
$arr[] = $i;
$total += count($arr);
}
return $total;
}

function main() {
$n = 1000;
$iterations = 50000;
$start = microtime(true);
$result = 0;
for ($i = 0; $i < $iterations; $i++) {
$result += bench_count($n);
}
$elapsed = microtime(true) - $start;

printf("Total for n=%d, iterations=%d = %d, elapsed=%.3f\n", $n, $iterations, $result, $elapsed);
}
main();
```

Before

```asm
mov $0x7feb8cf8a858, %r15
mov $ZEND_COUNT_SPEC_CV_UNUSED_HANDLER, %rax
call *%rax
```

After

```asm
mov 0x70(%r14), %rdi - Copy the count from the `zend_array*` pointer
mov %rdi, (%rax) - Store the count in the destination's value
mov $0x4, 0x8(%rax) - Store IS_LONG(4) in the destination's type
```

And add tracing jit support

Closes GH-5584

show more ...

# 3e01f5af 15-Jan-2021 Nikita Popov

Replace zend_bool uses with bool

We're starting to see a mix between uses of zend_bool and bool.
Replace all usages with the standard bool type everywhere.

Of course, zend_bool

Replace zend_bool uses with bool

We're starting to see a mix between uses of zend_bool and bool.
Replace all usages with the standard bool type everywhere.

Of course, zend_bool is retained as an alias.

show more ...

# 3edf5c96 14-Jan-2021 Dmitry Stogov

Fixed bug #80422 (php_opcache.dll crashes when using Apache 2.4 with JIT)

# 35e0506a 11-Jan-2021 Dmitry Stogov

Add guard if lvalue of assignment may be a reference, but wasn't a reference during recording

# 23bbff2b 24-Dec-2020 Dmitry Stogov

Eliminate redundand comparison insructions

# dde55729 10-Dec-2020 Dmitry Stogov

Eliminate some repeatable IS_REFERENCE checks

# e9f9e9f8 09-Dec-2020 Dmitry Stogov

Perform early guard type check for result of FETCH_CONSTANT

# 1674c96c 01-Dec-2020 Dmitry Stogov

Bug #80447 (Strange out of memory error when running with JIT)

# 5f36d049 30-Nov-2020 Dmitry Stogov

Fixed "may be used uninitialized" compilation warnings

# 3697648b 26-Nov-2020 Dmitry Stogov

Eliminate deafd stores

# 586ccfdf 23-Nov-2020 Dmitry Stogov

Fixed use-after-free in PHPUnit tests

# c0d1dbcb 20-Nov-2020 Dmitry Stogov

Fixed incorrect TRACE_FRAME_MASK_NESTED flag setting

# 069f9cba 19-Nov-2020 Dmitry Stogov

Added missing deoptimization code for trampoline handling

# 9841e8e4 17-Nov-2020 Dmitry Stogov

Fixed trampoline handling

# e3c63de0 16-Nov-2020 Dmitry Stogov

Fixed alias handling

# edf5c190 16-Nov-2020 Dmitry Stogov

Fixed incorrect FETCH_THIS optimization

# 64dc79f9 16-Nov-2020 Dmitry Stogov

Trampoline cleanup

# 9acebe14 11-Nov-2020 Dmitry Stogov

Fixed incorrectly eliminated type store

# 03e78543 11-Nov-2020 Dmitry Stogov

Remove assertion

# 2d2d42b2 11-Nov-2020 Dmitry Stogov

Fixed incorrect invariant guard motion

# a0de82ad 11-Nov-2020 Dmitry Stogov

Fixed reference-counting propagation

# 4bbe55b2 09-Nov-2020 Dmitry Stogov

Fixed missaligned access

# 98e4f946 06-Nov-2020 Dmitry Stogov

Move stack overflow checks out of the loops

# ff918006 05-Nov-2020 Dmitry Stogov

Fixed incorrect invariant guard motion

# b133183e 30-Oct-2020 Dmitry Stogov

Create TSSA loops for recursive call/return traces and move invariant type guards out of loops.

1...<<11121314151617181920>>...22