韩天峰
|
df78e177f4
|
refactor(optimizer): 优化函数调用参数转换逻辑
- 提取参数转换逻辑到独立的 applyArgConversion 方法中
- 将数组类型参数转换改为 convertArrayExpr 方法
- 在 UniversalMethodCall 中实现 PHP 函数调用优化
- 添加 tryOptimizePhpFn 方法支持直接 C++ 调用
- 实现 mergeConstArgs 方法合并常量参数
- 保留动态 php::call 作为备选方案
|
3 months ago |
韩天峰
|
ef6a9fb8e5
|
refactor(php): 统一PHP函数命名空间从std到fn
- 将所有php::std::前缀的函数调用更改为php::fn::前缀
- 替换AssignOpTrait.php中的pow函数调用路径
- 更新BinaryOpTrait.php中的mod和pow函数调用路径
- 修改CompilerBase.php中的头文件引用,合并为统一的phpx_std.h
- 在CompilerBase.php的throw语句中添加析构函数警告检查
- 更新FuncCallOptimizer.php中的各类数学和标准库函数调用路径
- 移除Translator.php中重复的标准库源文件引用
- 更新UniversalMethodCall.php中的parseStr函数调用路径
|
3 months ago |
韩天峰
|
0c7464b4b3
|
refactor(php): 从函数调用优化器中移除 reset 和 end 函数
- 从 FuncCallOptimizer.php 中移除了 'reset' 和 'end' 函数
- 删除了相关的类型错误测试文件 reset_end_type_error.phpt
- 更新了优化器中的函数列表配置
|
3 months ago |
韩天峰
|
9138dea99f
|
feat(php): 实现赋值表达式返回值和函数参数检查功能
- 在数组赋值操作中添加临时变量存储以支持返回值
- 为属性赋值操作实现逗号表达式确保右值先计算后赋值
- 添加内部函数参数数量验证机制防止运行时错误
- 优化三元运算符表达式确保类型一致性
- 扩展函数调用优化器以支持参数类型和数量检查
- 添加测试用例验证数组维度赋值返回功能
- 添加测试用例验证属性赋值返回功能
- 添加测试用例验证三元运算符类型转换功能
|
3 months ago |
韩天峰
|
246689db4c
|
feat(compiler): 优化函数调用编译器实现支持可变参数类型转换
- 添加 array_merge 混合类型参数测试用例
- 在 CompilerBase 中为表达式添加括号包装确保正确解析
- 将 FuncCallOptimizer 中的所有私有方法和常量改为受保护访问级别
- 实现可变参数类型的类型感知转换功能
- 添加 variadicType 配置选项用于指定可变参数类型
- 扩展参数反射信息获取逻辑包含可变参数类型信息
- 更新生成可变参数调用方法支持类型转换
- 添加基础容器数组表达式转换辅助方法
- 修改返回赋值属性测试用例验证功能完整性
|
3 months ago |
韩天峰
|
d26c76b9d8
|
feat(optimizer): 扩展函数调用优化器支持更多字符串和编码函数
- 添加 base64 编码解码函数优化支持 (base64_encode, base64_decode)
- 添加 URL 编码解码函数优化支持 (urlencode, urldecode, rawurlencode, rawurldecode)
- 扩展优化器对常用字符串处理函数的覆盖范围
|
3 months ago |
韩天峰
|
abed2d8d22
|
test(stdlib): 添加标准库函数边缘情况和错误处理测试
- 添加 abs 函数边缘情况测试,包括 PHP_INT_MIN 和 -0.0
- 添加 array_fill 负数计数参数的 ValueError 测试
- 添加 base_convert 无效进制参数的 ValueError 测试
- 添加 bindec/hexdec/octdec 空输入和无效字符测试
- 添加 chr/ord 函数边界值测试
- 添加 count 函数非数组/对象参数的 TypeError 测试
- 添加 explode 空分隔符和限制参数测试
- 添加 intdiv 除零和溢出错误测试
- 添加 log 函数零、负数和无效底数测试
- 添加 reset/end 非数组参数的 TypeError 测试
- 添加 round 非数值参数的 TypeError 测试
- 添加 str_repeat 负数次数的 ValueError 测试
- 添加 strtotime 时间戳 0 和无效日期测试
- 添加 substr 负偏移和长度边界测试
- 添加 version_compare 操作符参数测试
- 移除未使用的 php_std_url.h 头文件和源文件引用
- 更新函数优化配置以改进数学函数和字符串函数支持
- 添加 is_callable 函数处理程序和 max/min 函数的原始实现
- 为 abs、pow、sqrt 函数添加大数类型回退实现
|
3 months ago |
韩天峰
|
8450e69e1c
|
refactor(Php): 优化函数调用优化器中的参数类型常量
- 将简写的参数类型常量重命名为更具描述性的名称
- 为数组类型添加新的参数类型支持
- 更新所有相关的常量引用以使用新命名
- 实现标准容器数组表达式的转换功能
- 修复字符串键名处理中的缺少方法调用问题
|
3 months ago |
韩天峰
|
e996dc8b43
|
feat(debug): 添加内存泄漏检测脚本
- 实现了随机数生成函数 gen_random
- 添加了堆排序算法实现 heapsort 和 heapsort_r
- 集成了高精度时间测量功能 gethrtime
- 创建了性能测试框架包括 start_test 和 end_test 函数
- 实现了测试结果显示和统计功能 total
- 添加了主函数 main 来执行完整的性能测试流程
|
3 months ago |
韩天峰
|
9b1477e13b
|
refactor(php): 重构对象属性赋值检查逻辑并优化循环变量检测
- 提取公共的对象属性赋值验证方法 assertCanAssignObjectProperty
- 统一处理对象属性和静态属性的赋值检查逻辑
- 在类型检查中增加对抽象类、接口和未知类的处理
- 优化循环变量依赖检测算法,改进错误处理流程
- 移除静态编译阶段无法确定类型的严格检查,改为运行时处理
- 修复循环变量优化器中的依赖检测中断逻辑
|
3 months ago |
韩天峰
|
51772c1e27
|
refactor(php): 优化SSA类型优化器代码结构
- 移除未使用的 Expr 导入并添加 SsaVar 导入
- 简化 detectSsaDefType 方法中的类型声明
- 移除 Foreach 和 Switch 语句中冗余的节点类型检查
- 提高代码可读性和维护性
|
3 months ago |
韩天峰
|
1e7401b57d
|
refactor(php): 优化SsaPropOptimizer中的节点类型检查和代码清理
- 移除未使用的NodeAbstract导入
- 修正注释中的拼写错误touched again afterward
- 将节点名称类型检查从通用Node改为具体的Node\Identifier
- 删除冗余的字符串类型检查逻辑
- 简化ArrayDimFetch节点的条件判断逻辑
|
3 months ago |
韩天峰
|
ba8c96712a
|
fix(optimizer): 解决对象属性优化中的动态调用安全检查问题
- 添加了对 eval 和 include 语句的对象属性访问保护
- 实现了内部函数和静态方法调用的安全性检查机制
- 新增了 isSafeObjectExposureCall 方法来判断安全的对象暴露调用
- 修复了对象别名和动态属性操作中的潜在风险
- 添加了相关的单元测试验证安全性检查逻辑
|
3 months ago |
韩天峰
|
feb5041d2e
|
feat(php): 添加静态属性赋值检查和本地槽位优化支持
- 在 AssignOpTrait 中添加对静态属性赋值的支持
- 扩展 CompilerBase 以实现静态属性类型检测和赋值验证
- 添加 assertCanAssignStaticProp 方法进行静态属性赋值检查
- 重构静态属性本地槽位生成逻辑,支持不同数据类型
- 为对象属性提升优化添加安全检查机制
- 新增测试用例验证静态属性原生类型默认值功能
- 更新函数上下文文档注释以反映静态属性槽位映射变化
|
3 months ago |
韩天峰
|
279fe22d82
|
fix(compiler): 解决对象属性类型检查和赋值操作问题
- 添加对象属性赋值时的类型验证逻辑
- 实现固定类型对象属性的 unset 操作默认值恢复
- 修复 std 命名空间内置类型方法的类型检测
- 更新对象属性类型推断和方法返回类型解析
- 添加对象属性子类赋值到基类类型的错误检查
- 修改测试用例以反映 AOT 编译器的严格类型行为
|
3 months ago |
韩天峰
|
21338f022f
|
refactor(compiler): 优化对象属性提升逻辑并增强危险操作检测
- 移除对this_对象属性unset操作的特殊警告处理
- 重构对象属性提升逻辑,支持更多类型的安全提升判断
- 添加unsafeObjectProps上下文跟踪以标记不可安全提升的属性
- 扩展危险属性操作检测功能,支持动态属性名和引用操作检测
- 优化循环变量分析器,增加对字符串函数的支持
- 添加多项单元测试验证属性提升和危险操作检测的准确性
- 改进代码生成,支持不同类型的属性值宏展开
|
3 months ago |
韩天峰
|
dbaa5a10e0
|
feat(compiler): 添加循环变量优化器以提升整数类型推断
- 在CompilerBase中集成LoopVarOptimizer trait
- 实现range-proven循环变量优化算法,支持while和for循环
- 添加多项式时间复杂度的循环计数器类型窄化功能
- 集成安全检查机制防止不安全的整数运算推导
- 添加针对strlen、count等函数的非负整数类型识别
- 实现循环边界安全检测避免溢出风险
- 新增多种循环模式的测试用例验证优化效果
- 更新现有测试注释以反映新的类型推断行为
|
3 months ago |
韩天峰
|
cdd0b05bf7
|
test(analysis): 添加SSA分析相关组件的单元测试
- 添加SsaFlags常量值的测试验证
- 添加SsaVar对象创建和默认值的测试
- 添加PiConstraint约束条件的测试用例
- 添加SsaBlock基本块结构的测试验证
- 添加VarState变量状态管理的测试
- 添加SsaBuilder构造器基础功能测试
- 添加控制流图CFG构建的测试用例
- 添加goto语句和标签处理的测试
- 添加类型约束构建buildPiConstraints的测试
- 添加
|
3 months ago |
韩天峰
|
de50cad4a8
|
refactor(optimizer): 将函数访问修饰符从私有更改为受保护
- 将 FuncCallOptimizer 中的 genFuncGetArgs 和 genFuncGetArg 方法从 public 改为 protected
- 将 SsaPropOptimizer 中的辅助方法从 private 改为 protected,包括 collectObjectAssignments、scanStmtForObjectAssign、resolveNewExprClass 等
- 将 SsaTypeOptimizer 中的常量和辅助方法从 private 改为 protected,包括 SAFE_INT_BINARY_OPS、SAFE_INT_ASSIGN_OPS 和各种检测方法
- 此更改允许子类继承和重用这些优化器中的实用方法
|
3 months ago |
韩天峰
|
2af89f270e
|
refactor(php): 优化PHP编译器中的整数类型推断和溢出检测
- 启用之前被注释掉的 optimizeVarTypes() 方法调用
- 添加安全整数运算操作的常量定义,包括位运算和取模运算
- 改进表达式溢出检测逻辑,移除幂运算的特殊处理并将其标记为危险操作
- 实现更精确的整数运算危害检查函数 exprHasIntHazard
- 添加递归变量使用检测功能 exprUsesVar 和 isVarNamed 辅助方法
- 扩展危险整数操作检查范围,涵盖控制流语句中的条件表达式
-
|
3 months ago |
韩天峰
|
48a8ddd8b5
|
fix(optimizer): 修复变量名转义问题
- 在处理变量组时添加了变量名转义逻辑
- 防止特殊字符导致的解析错误
|
3 months ago |
韩天峰
|
9beb5cbba2
|
fix(parser): 修复赋值操作符和递增递减操作符的上下文状态管理
- 在 parseAssignOp 方法中正确保存和恢复 inAssignExpr 上下文状态
- 在 parsePreInc 方法中正确保存和恢复 inAssignExpr 上下文状态
- 在 parsePostOp 方法中正确保存和恢复 inAssignExpr 上下文状态
- 在 parsePreDec 方法中正确保存和恢复 inAssignExpr 上下文状态
- 修复 FuncCallOptimizer 中对函数参数类型的检查逻辑,排除 VariadicPlaceholder 占位符情况
|
3 months ago |
韩天峰
|
195013ae7c
|
perf(php): 优化PHP到C++转换性能
- 添加相同操作符编译时类型优化,对相同原始类型直接使用C++ ==
- 实现is_*函数编译时消除,当SSA缩小类型时直接返回true
- 添加count()函数字面量数组编译时计算
- 实现字符串字面量编译时操作优化,支持strtoupper、strtolower、trim等函数
|
3 months ago |
韩天峰
|
b640fef73b
|
feat(compiler): 实现方法调用去虚化优化和BigFloat sqrt支持
- 添加classSubClasses属性用于存储反向类继承关系
- 扩展abs函数支持到BigFloat类型并添加sqrt函数实现
- 允许Big类型与原生类型之间的隐式转换
- 实现方法调用去虚化逻辑,支持final类、final方法、私有方法等情况
- 添加SSA稳定对象类型推断功能
- 修复SSABuilder中空参数值的处理
- 优化SSA类型分析中的非可缩小类型处理
- 添加多个
|
3 months ago |
韩天峰
|
a4a869b7cd
|
feat(php): 添加SSA对象属性引用提升优化器
- 引入SsaPropOptimizer trait实现对象属性引用提升功能
- 扩展CompilerBase类集成新的SSA属性优化器
- 实现对象稳定性分析和安全属性访问检测
- 支持对SSA证明稳定的对象进行int/float属性提升
- 添加对魔术方法、引用捕获等危险操作的安全检查
- 为稳定对象属性生成C++引用别名提升性能
- 添加相关单元测试验证优化效果
|
3 months ago |
韩天峰
|
bf31da8e7b
|
feat(compiler): 实现SSA分析和类型优化功能
- 添加SsaBuilder类用于构建SSA形式和e-SSA分析
- 引入SsaTypeOptimizer trait实现基于SSA的类型窄化优化
- 将FuncCallOptimizer移至Optimizer命名空间
- 在FunctionContext中添加SSA分析器实例
- 实现变量类型的自动窄化为C++原生类型(int/float)
- 添加防止危险操作的类型安全检查
- 支持常量折叠和溢出检测逻辑
- 重构函数参数名称以提高代码可读性
- 添加完整的SSA构建器单元测试覆盖各种场景
|
3 months ago |