From 230e505fd8decde99af720fd640e70aaa297b5e2 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 30 Oct 2017 10:41:27 +0300 Subject: Fixed type inference --- ext/opcache/Optimizer/zend_inference.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ext/opcache/Optimizer/zend_inference.c b/ext/opcache/Optimizer/zend_inference.c index 6e0d0cb5d9..d333947c66 100644 --- a/ext/opcache/Optimizer/zend_inference.c +++ b/ext/opcache/Optimizer/zend_inference.c @@ -3075,7 +3075,13 @@ static int zend_update_type_info(const zend_op_array *op_array, } j = zend_ssa_next_use(ssa_ops, ssa_ops[i].result_def, j); } - UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def); + if ((tmp & MAY_BE_ARRAY) + && (tmp & (MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING))) { + UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def); + } else { + /* invalid key type */ + UPDATE_SSA_TYPE(t1, ssa_ops[i].op1_def); + } COPY_SSA_OBJ_TYPE(ssa_ops[i].op1_use, ssa_ops[i].op1_def); } /* FETCH_LIST on a string behaves like FETCH_R on null */ -- cgit v1.2.1 From 741efa78074388c9aebf9be9789b68fe0ab3ec24 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 30 Oct 2017 08:42:59 +0100 Subject: Catch with the latest AppVeyor unzip errors --- appveyor/build.bat | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/appveyor/build.bat b/appveyor/build.bat index 31081bbe06..a27abc2660 100644 --- a/appveyor/build.bat +++ b/appveyor/build.bat @@ -17,10 +17,17 @@ if not exist "%PHP_BUILD_CACHE_SDK_DIR%" ( echo Cloning remote SDK repository git clone --branch %SDK_BRANCH% %SDK_REMOTE% "%PHP_BUILD_CACHE_SDK_DIR%" 2>&1 ) else ( - echo Fetching remote SDK repository - git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" fetch --prune origin 2>&1 - echo Checkout SDK repository branch - git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" checkout --force %SDK_BRANCH% + git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" status 2>&1 + if %errorlevel% neq 0 ( + rmdir /s /q "%PHP_BUILD_CACHE_SDK_DIR%" + echo Cloning remote SDK repository + git clone --branch %SDK_BRANCH% %SDK_REMOTE% "%PHP_BUILD_CACHE_SDK_DIR%" 2>&1 + ) else ( + echo Fetching remote SDK repository + git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" fetch --prune origin 2>&1 + echo Checkout SDK repository branch + git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" checkout --force %SDK_BRANCH% + ) ) set SDK_RUNNER=%PHP_BUILD_CACHE_SDK_DIR%\phpsdk-vc14-%PLATFORM%.bat -- cgit v1.2.1 From d9de0f8683286f204facff774b87a99e2461f137 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Mon, 30 Oct 2017 16:26:59 +0800 Subject: Use abbrev --- ext/opcache/Optimizer/zend_inference.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ext/opcache/Optimizer/zend_inference.c b/ext/opcache/Optimizer/zend_inference.c index d333947c66..1d142566ab 100644 --- a/ext/opcache/Optimizer/zend_inference.c +++ b/ext/opcache/Optimizer/zend_inference.c @@ -3075,8 +3075,7 @@ static int zend_update_type_info(const zend_op_array *op_array, } j = zend_ssa_next_use(ssa_ops, ssa_ops[i].result_def, j); } - if ((tmp & MAY_BE_ARRAY) - && (tmp & (MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING))) { + if ((tmp & MAY_BE_ARRAY) && (tmp & MAY_BE_ARRAY_KEY_ANY)) { UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def); } else { /* invalid key type */ -- cgit v1.2.1 From bc410c2609adb6141aced2b52e6c7aa91a5d5b2d Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 30 Oct 2017 10:14:05 +0100 Subject: Remove status check on the SDK repo and add version check If Appveyor fails to unzip, .git would be in an arbitrary state anyway. Thus this check doesn't help. For the version check - rely on the branch naming scheme in the SDK. --- appveyor/build.bat | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/appveyor/build.bat b/appveyor/build.bat index a27abc2660..22c617f11c 100644 --- a/appveyor/build.bat +++ b/appveyor/build.bat @@ -17,12 +17,8 @@ if not exist "%PHP_BUILD_CACHE_SDK_DIR%" ( echo Cloning remote SDK repository git clone --branch %SDK_BRANCH% %SDK_REMOTE% "%PHP_BUILD_CACHE_SDK_DIR%" 2>&1 ) else ( - git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" status 2>&1 - if %errorlevel% neq 0 ( - rmdir /s /q "%PHP_BUILD_CACHE_SDK_DIR%" - echo Cloning remote SDK repository - git clone --branch %SDK_BRANCH% %SDK_REMOTE% "%PHP_BUILD_CACHE_SDK_DIR%" 2>&1 - ) else ( + for /f "tokens=*" %%a in ('type %PHP_BUILD_CACHE_SDK_DIR%\VERSION') do set GOT_SDK_VER=%%a + if "%GOT_SDK_VER%" NEQ "%SDK_BRANCH:~8%" ( echo Fetching remote SDK repository git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" fetch --prune origin 2>&1 echo Checkout SDK repository branch -- cgit v1.2.1 From 591e811a3520d96e185173d80cb73176f162097a Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 30 Oct 2017 10:34:11 +0100 Subject: Don't use the cache dependency, SDK version is handled in script --- .appveyor.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index e55c2adab2..d1c5c0f448 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -18,7 +18,6 @@ clone_depth: 64 cache: - c:\build-cache - - c:\build-cache\sdk -> .appveyor.yml environment: PHP_BUILD_CACHE_BASE_DIR: c:\build-cache -- cgit v1.2.1 From c6e8c2bc9fe107254b01f3d24ce23e521579decf Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 30 Oct 2017 10:53:12 +0100 Subject: Fix SDK version comparison and add more verbosity --- appveyor/build.bat | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/appveyor/build.bat b/appveyor/build.bat index 22c617f11c..8119c097f4 100644 --- a/appveyor/build.bat +++ b/appveyor/build.bat @@ -18,7 +18,9 @@ if not exist "%PHP_BUILD_CACHE_SDK_DIR%" ( git clone --branch %SDK_BRANCH% %SDK_REMOTE% "%PHP_BUILD_CACHE_SDK_DIR%" 2>&1 ) else ( for /f "tokens=*" %%a in ('type %PHP_BUILD_CACHE_SDK_DIR%\VERSION') do set GOT_SDK_VER=%%a - if "%GOT_SDK_VER%" NEQ "%SDK_BRANCH:~8%" ( + echo Got SDK version %GOT_SDK_VER% + if NOT "%GOT_SDK_VER%" == "%PHP_BUILD_SDK_BRANCH:~8%" ( + echo Updating to the configured SDK version %SDK_BRANCH:~8% echo Fetching remote SDK repository git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" fetch --prune origin 2>&1 echo Checkout SDK repository branch -- cgit v1.2.1 From 7bf2947016dc840fcc2dcef8ef4f2003f00f7aef Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 30 Oct 2017 11:28:32 +0100 Subject: Fix fetching the SDK version --- appveyor/build.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appveyor/build.bat b/appveyor/build.bat index 8119c097f4..e18b9a3dbb 100644 --- a/appveyor/build.bat +++ b/appveyor/build.bat @@ -13,11 +13,11 @@ if not exist "%PHP_BUILD_OBJ_DIR%" ( mkdir "%PHP_BUILD_OBJ_DIR%" ) +for /f "tokens=*" %%a in ('type %PHP_BUILD_CACHE_SDK_DIR%\VERSION') do set GOT_SDK_VER=%%a if not exist "%PHP_BUILD_CACHE_SDK_DIR%" ( echo Cloning remote SDK repository git clone --branch %SDK_BRANCH% %SDK_REMOTE% "%PHP_BUILD_CACHE_SDK_DIR%" 2>&1 ) else ( - for /f "tokens=*" %%a in ('type %PHP_BUILD_CACHE_SDK_DIR%\VERSION') do set GOT_SDK_VER=%%a echo Got SDK version %GOT_SDK_VER% if NOT "%GOT_SDK_VER%" == "%PHP_BUILD_SDK_BRANCH:~8%" ( echo Updating to the configured SDK version %SDK_BRANCH:~8% -- cgit v1.2.1 From e305e8fb7aac133095d11b80c10ebec9eeddaae3 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 30 Oct 2017 12:07:27 +0100 Subject: Ensure SDK is checked out before asking for version --- appveyor/build.bat | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/appveyor/build.bat b/appveyor/build.bat index e18b9a3dbb..1ad3d96123 100644 --- a/appveyor/build.bat +++ b/appveyor/build.bat @@ -13,19 +13,19 @@ if not exist "%PHP_BUILD_OBJ_DIR%" ( mkdir "%PHP_BUILD_OBJ_DIR%" ) -for /f "tokens=*" %%a in ('type %PHP_BUILD_CACHE_SDK_DIR%\VERSION') do set GOT_SDK_VER=%%a if not exist "%PHP_BUILD_CACHE_SDK_DIR%" ( echo Cloning remote SDK repository git clone --branch %SDK_BRANCH% %SDK_REMOTE% "%PHP_BUILD_CACHE_SDK_DIR%" 2>&1 -) else ( - echo Got SDK version %GOT_SDK_VER% - if NOT "%GOT_SDK_VER%" == "%PHP_BUILD_SDK_BRANCH:~8%" ( - echo Updating to the configured SDK version %SDK_BRANCH:~8% - echo Fetching remote SDK repository - git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" fetch --prune origin 2>&1 - echo Checkout SDK repository branch - git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" checkout --force %SDK_BRANCH% - ) +) + +for /f "tokens=*" %%a in ('type %PHP_BUILD_CACHE_SDK_DIR%\VERSION') do set GOT_SDK_VER=%%a +echo Got SDK version %GOT_SDK_VER% +if NOT "%GOT_SDK_VER%" == "%PHP_BUILD_SDK_BRANCH:~8%" ( + echo Updating to the configured SDK version %SDK_BRANCH:~8% + echo Fetching remote SDK repository + git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" fetch --prune origin 2>&1 + echo Checkout SDK repository branch + git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" checkout --force %SDK_BRANCH% ) set SDK_RUNNER=%PHP_BUILD_CACHE_SDK_DIR%\phpsdk-vc14-%PLATFORM%.bat -- cgit v1.2.1 From 7ea44da104309d4ce358022849f45898b4381b02 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 30 Oct 2017 12:16:53 +0100 Subject: Yet one attempt to mitigate the unzip error on AppVeyor --- appveyor/build.bat | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/appveyor/build.bat b/appveyor/build.bat index 1ad3d96123..c4a21c7faa 100644 --- a/appveyor/build.bat +++ b/appveyor/build.bat @@ -2,6 +2,7 @@ set SDK_REMOTE=https://github.com/OSTC/php-sdk-binary-tools.git set SDK_BRANCH=%PHP_BUILD_SDK_BRANCH% +set SDK_RUNNER=%PHP_BUILD_CACHE_SDK_DIR%\phpsdk-vc14-%PLATFORM%.bat if not exist "%PHP_BUILD_CACHE_BASE_DIR%" ( echo Creating %PHP_BUILD_CACHE_BASE_DIR% @@ -13,6 +14,10 @@ if not exist "%PHP_BUILD_OBJ_DIR%" ( mkdir "%PHP_BUILD_OBJ_DIR%" ) +if not exist "%SDK_RUNNER%" ( + if exist "%PHP_BUILD_CACHE_SDK_DIR%" rmdir /s /q "%PHP_BUILD_CACHE_SDK_DIR%" +) + if not exist "%PHP_BUILD_CACHE_SDK_DIR%" ( echo Cloning remote SDK repository git clone --branch %SDK_BRANCH% %SDK_REMOTE% "%PHP_BUILD_CACHE_SDK_DIR%" 2>&1 @@ -21,14 +26,13 @@ if not exist "%PHP_BUILD_CACHE_SDK_DIR%" ( for /f "tokens=*" %%a in ('type %PHP_BUILD_CACHE_SDK_DIR%\VERSION') do set GOT_SDK_VER=%%a echo Got SDK version %GOT_SDK_VER% if NOT "%GOT_SDK_VER%" == "%PHP_BUILD_SDK_BRANCH:~8%" ( - echo Updating to the configured SDK version %SDK_BRANCH:~8% + echo Switching to the configured SDK version %SDK_BRANCH:~8% echo Fetching remote SDK repository git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" fetch --prune origin 2>&1 echo Checkout SDK repository branch git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" checkout --force %SDK_BRANCH% ) -set SDK_RUNNER=%PHP_BUILD_CACHE_SDK_DIR%\phpsdk-vc14-%PLATFORM%.bat if not exist "%SDK_RUNNER%" ( echo "%SDK_RUNNER%" doesn't exist exit /b 3 -- cgit v1.2.1