From d1aa44ed89c43ad2d2a93c2fc72c441e1ee6ed14 Mon Sep 17 00:00:00 2001 From: Mikhail Kornaukhov <66915223+mkornaukhov03@users.noreply.github.com> Date: Mon, 22 Apr 2024 12:47:38 +0300 Subject: [PATCH] Fix KPHP_GLOBAL_SPLIT_CNT option (#980) * Increase possible parts_cnt & fix assert * Replace assert with kphp_assert and kphp_error --- .github/workflows/Dockerfile.jammy | 7 +++++-- compiler/code-gen/files/vars-cpp.cpp | 5 ++++- compiler/kphp2cpp.cpp | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/Dockerfile.jammy b/.github/workflows/Dockerfile.jammy index 1dd63369c2..7946c13bde 100644 --- a/.github/workflows/Dockerfile.jammy +++ b/.github/workflows/Dockerfile.jammy @@ -7,8 +7,11 @@ COPY tests/python/requirements.txt /tmp/ # php 7.4 on ubuntu 22, where default php version is 8.1 RUN apt update && \ - apt install -y --no-install-recommends apt-utils ca-certificates gnupg wget software-properties-common pkg-config && \ - wget -qO /etc/apt/trusted.gpg.d/vkpartner.asc https://artifactory-external.vkpartner.ru/artifactory/api/gpg/key/public && \ + apt install -y --no-install-recommends apt-utils ca-certificates gnupg wget software-properties-common pkg-config neofetch + +RUN neofetch + +RUN wget -qO /etc/apt/trusted.gpg.d/vkpartner.asc https://artifactory-external.vkpartner.ru/artifactory/api/gpg/key/public && \ echo "deb https://artifactory-external.vkpartner.ru/artifactory/kphp jammy main" >> /etc/apt/sources.list && \ add-apt-repository ppa:ondrej/php -y && \ add-apt-repository ppa:deadsnakes/ppa && \ diff --git a/compiler/code-gen/files/vars-cpp.cpp b/compiler/code-gen/files/vars-cpp.cpp index 30814647ce..e206c3b9ff 100644 --- a/compiler/code-gen/files/vars-cpp.cpp +++ b/compiler/code-gen/files/vars-cpp.cpp @@ -165,7 +165,10 @@ static void compile_vars_part(CodeGenerator &W, const std::vector &vars, VarsCpp::VarsCpp(std::vector &&max_dep_levels, size_t parts_cnt) : max_dep_levels_(std::move(max_dep_levels)) , parts_cnt_(parts_cnt) { - kphp_assert (1 <= parts_cnt_ && parts_cnt_ <= 1024); + kphp_assert(1 <= parts_cnt_); + kphp_error(parts_cnt_ <= G->settings().globals_split_count.get(), + fmt_format("Too many globals initialization .cpp files({}) for the specified globals_split_count({})", parts_cnt_, + G->settings().globals_split_count.get())); } void VarsCpp::compile(CodeGenerator &W) const { diff --git a/compiler/kphp2cpp.cpp b/compiler/kphp2cpp.cpp index 9d685d4d88..48718d9fd3 100644 --- a/compiler/kphp2cpp.cpp +++ b/compiler/kphp2cpp.cpp @@ -236,7 +236,7 @@ int main(int argc, char *argv[]) { parser.add("Threads number for the transpilation", settings->threads_count, 't', "threads-count", "KPHP_THREADS_COUNT", std::to_string(get_default_threads_count())); parser.add("Count of global variables per dedicated .cpp file. Lowering it could decrease compilation time", settings->globals_split_count, - "globals-split-count", "KPHP_GLOBALS_SPLIT_COUNT", "1024"); + "globals-split-count", "KPHP_GLOBALS_SPLIT_COUNT", "1536"); parser.add("Builtin tl schema. Incompatible with lib mode", settings->tl_schema_file, 'T', "tl-schema", "KPHP_TL_SCHEMA"); parser.add("Generate storers and fetchers for internal tl functions", settings->gen_tl_internals,