mirror of
https://github.com/php/php-src.git
synced 2024-09-22 18:37:25 +00:00
Merge branch 'PHP-8.0'
This commit is contained in:
commit
e2dc80b4e4
26
Zend/tests/dim_assign_001.phpt
Normal file
26
Zend/tests/dim_assign_001.phpt
Normal file
@ -0,0 +1,26 @@
|
||||
--TEST--
|
||||
JIT - Assigning to arrays using string key which parses to an integer
|
||||
--SKIPIF--
|
||||
<?php require_once('skipif.inc'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* We are going to store a value in an array, using the key "1"
|
||||
* PHP should always convert such strings to integers when storing or retrieving
|
||||
* values from an array
|
||||
*
|
||||
* We'll do it in a loop, so that if JIT is enabled, the code will be JIT'd
|
||||
* (Because this test was originally added as a regression test for a JIT bug)
|
||||
*
|
||||
* Also, the test will do this in a way which guarantees PHP won't be able to
|
||||
* predict whether the (string) key will be a numeric string or not */
|
||||
$fp = fopen(realpath(__DIR__ . '/dim_assign_001.txt'), 'r+');
|
||||
$array = array();
|
||||
while ($line = fgets($fp, 256)) {
|
||||
sscanf($line, '%x', $char);
|
||||
$char = chr($char);
|
||||
$array[$char] = "Values can be stored correctly using numeric string keys";
|
||||
}
|
||||
var_dump($array['1']);
|
||||
?>
|
||||
--EXPECT--
|
||||
string(56) "Values can be stored correctly using numeric string keys"
|
2
Zend/tests/dim_assign_001.txt
Normal file
2
Zend/tests/dim_assign_001.txt
Normal file
@ -0,0 +1,2 @@
|
||||
0x30
|
||||
0x31
|
@ -437,7 +437,7 @@ static int ZEND_FASTCALL zend_jit_undefined_op_helper_write(HashTable *ht, uint3
|
||||
|
||||
static void ZEND_FASTCALL zend_jit_fetch_dim_r_helper(zend_array *ht, zval *dim, zval *result)
|
||||
{
|
||||
zend_long hval;
|
||||
zend_ulong hval;
|
||||
zend_string *offset_key;
|
||||
zval *retval;
|
||||
|
||||
@ -478,6 +478,9 @@ static void ZEND_FASTCALL zend_jit_fetch_dim_r_helper(zend_array *ht, zval *dim,
|
||||
}
|
||||
|
||||
str_index:
|
||||
if (ZEND_HANDLE_NUMERIC(offset_key, hval)) {
|
||||
goto num_index;
|
||||
}
|
||||
retval = zend_hash_find(ht, offset_key);
|
||||
if (retval) {
|
||||
/* support for $GLOBALS[...] */
|
||||
@ -509,7 +512,7 @@ num_undef:
|
||||
|
||||
static void ZEND_FASTCALL zend_jit_fetch_dim_is_helper(zend_array *ht, zval *dim, zval *result)
|
||||
{
|
||||
zend_long hval;
|
||||
zend_ulong hval;
|
||||
zend_string *offset_key;
|
||||
zval *retval;
|
||||
|
||||
@ -550,6 +553,9 @@ static void ZEND_FASTCALL zend_jit_fetch_dim_is_helper(zend_array *ht, zval *dim
|
||||
}
|
||||
|
||||
str_index:
|
||||
if (ZEND_HANDLE_NUMERIC(offset_key, hval)) {
|
||||
goto num_index;
|
||||
}
|
||||
retval = zend_hash_find(ht, offset_key);
|
||||
if (retval) {
|
||||
/* support for $GLOBALS[...] */
|
||||
@ -578,7 +584,7 @@ num_undef:
|
||||
|
||||
static int ZEND_FASTCALL zend_jit_fetch_dim_isset_helper(zend_array *ht, zval *dim)
|
||||
{
|
||||
zend_long hval;
|
||||
zend_ulong hval;
|
||||
zend_string *offset_key;
|
||||
zval *retval;
|
||||
|
||||
@ -618,6 +624,9 @@ static int ZEND_FASTCALL zend_jit_fetch_dim_isset_helper(zend_array *ht, zval *d
|
||||
}
|
||||
|
||||
str_index:
|
||||
if (ZEND_HANDLE_NUMERIC(offset_key, hval)) {
|
||||
goto num_index;
|
||||
}
|
||||
retval = zend_hash_find(ht, offset_key);
|
||||
if (retval) {
|
||||
/* support for $GLOBALS[...] */
|
||||
@ -645,7 +654,7 @@ num_undef:
|
||||
|
||||
static zval* ZEND_FASTCALL zend_jit_fetch_dim_rw_helper(zend_array *ht, zval *dim)
|
||||
{
|
||||
zend_long hval;
|
||||
zend_ulong hval;
|
||||
zend_string *offset_key;
|
||||
zval *retval;
|
||||
|
||||
@ -688,6 +697,9 @@ static zval* ZEND_FASTCALL zend_jit_fetch_dim_rw_helper(zend_array *ht, zval *di
|
||||
}
|
||||
|
||||
str_index:
|
||||
if (ZEND_HANDLE_NUMERIC(offset_key, hval)) {
|
||||
goto num_index;
|
||||
}
|
||||
retval = zend_hash_find(ht, offset_key);
|
||||
if (retval) {
|
||||
/* support for $GLOBALS[...] */
|
||||
@ -726,7 +738,7 @@ num_undef:
|
||||
|
||||
static zval* ZEND_FASTCALL zend_jit_fetch_dim_w_helper(zend_array *ht, zval *dim)
|
||||
{
|
||||
zend_long hval;
|
||||
zend_ulong hval;
|
||||
zend_string *offset_key;
|
||||
zval *retval;
|
||||
|
||||
@ -769,6 +781,9 @@ static zval* ZEND_FASTCALL zend_jit_fetch_dim_w_helper(zend_array *ht, zval *dim
|
||||
}
|
||||
|
||||
str_index:
|
||||
if (ZEND_HANDLE_NUMERIC(offset_key, hval)) {
|
||||
goto num_index;
|
||||
}
|
||||
retval = zend_hash_find(ht, offset_key);
|
||||
if (retval) {
|
||||
/* support for $GLOBALS[...] */
|
||||
|
Loading…
Reference in New Issue
Block a user