韩天峰
|
df78e177f4
|
refactor(optimizer): 优化函数调用参数转换逻辑
- 提取参数转换逻辑到独立的 applyArgConversion 方法中
- 将数组类型参数转换改为 convertArrayExpr 方法
- 在 UniversalMethodCall 中实现 PHP 函数调用优化
- 添加 tryOptimizePhpFn 方法支持直接 C++ 调用
- 实现 mergeConstArgs 方法合并常量参数
- 保留动态 php::call 作为备选方案
|
2 months ago |
韩天峰
|
797c19824d
|
Revert "refactor(Php): 将PHP函数调用改为C++函数调用"
This reverts commit b1cc95818a.
|
2 months ago |
韩天峰
|
b1cc95818a
|
refactor(Php): 将PHP函数调用改为C++函数调用
- 将数学函数的handler从php_fn改为cpp_fn,并更新函数命名空间为php::fn::
- 将字符串函数的handler从php_fn改为cpp_fn,并更新函数命名空间为php::fn::
- 将数组函数的handler从php_fn改为cpp_fn,并更新函数命名空间为php::fn::
- 将序列化相关函数的handler从php_fn改为cpp_fn,并更新函数命名空间为php::fn::
- 更新jsonDecodeToObject配置以移除不必要的常量参数设置
|
2 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函数调用路径
|
2 months ago |
韩天峰
|
17e1035e21
|
test(stdlib): 添加新标准库函数测试用例
- 测试 gettype 函数对不同数据类型的返回值
- 验证 ucfirst 函数首字母大写功能
- 检查 floor 和 ceil 数学函数的正确性
- 测试 max 和 min 函数的数值比较功能
- 验证 uniqid 函数生成唯一标识符的能力
- 测试
|
3 months ago |
韩天峰
|
b640fef73b
|
feat(compiler): 实现方法调用去虚化优化和BigFloat sqrt支持
- 添加classSubClasses属性用于存储反向类继承关系
- 扩展abs函数支持到BigFloat类型并添加sqrt函数实现
- 允许Big类型与原生类型之间的隐式转换
- 实现方法调用去虚化逻辑,支持final类、final方法、私有方法等情况
- 添加SSA稳定对象类型推断功能
- 修复SSABuilder中空参数值的处理
- 优化SSA类型分析中的非可缩小类型处理
- 添加多个
|
3 months ago |
韩天峰
|
4176e1f4c2
|
fix(aot): 修复trait常量继承和数组常量传播问题
- 将trait中的私有常量改为受保护,以便子类能够访问
- 添加数组常量在继承链中的清理机制
- 实现数组常量向子类的传播功能
- 新增测试用例验证trait方法和常量继承行为
|
3 months ago |
韩天峰
|
f30a29a048
|
fix(php): 修复文件编码检查和方法调用问题
- 添加了UTF-8编码检查以确保文件正确读取
- 更新了composer.json中的swoole/phpx依赖版本
- 修复了Translator中类名获取的方法调用
- 移除了UniversalMethodCall中不需要的返回类型参数
|
3 months ago |
韩天峰
|
775972cc8c
|
refactor(php): 移除未使用的常量和方法
- 移除了未使用的 MAX_BYTES_IN_STACK 常量
- 移除了未使用的 addCompilationOption 方法
- 移除了未使用的 TYPE_SEARCH_ORDER 常量
- 清理了编译器基类中的冗余代码
|
3 months ago |
韩天峰
|
b04ee5e8b2
|
refactor(Php): 重构编译器中的类名解析和参数构建逻辑
- 将 toObject() 方法中的类名解析逻辑提取为独立的 resolveClassNameArg() 方法
- 简化了 UniversalMethodCall 中的参数构建过程
- 提取通用的 buildReceiverArgs() 方法来处理接收者参数构建
- 移除了重复的参数处理代码,提高了代码复用性
- 改进了错误处理的一致性
|
3 months ago |
韩天峰
|
7a164aa8ee
|
refactor(php): 重构关键词方法查找机制以支持扩展方法
- 将 TO_METHOD_TYPE_MAP 重命名为 KEYWORD_METHOD_MAP
- 实现统一的关键词方法查找函数 findKeywordMethod()
- 添加对 __ 扩展方法的支持,允许作为 $receiver->camelCase() 调用
- 在方法分派前先检查关键词扩展方法
- 为关键词扩展方法实现蛇形命名转换和参数验证逻辑
- 更新现有方法调用以使用新的关键词方法映射常量
|
3 months ago |
韩天峰
|
32ac23630a
|
fix(type): 修复stream和box伪类型的类型转换处理
- 移除CompilerBase中对stream/box类型的硬编码转换逻辑
- 在Preprocessor中添加stream/box到var类型的运行时转换
- 修改Translator中参数类型的C++代码生成逻辑
- 更新UniversalMethodCall中stream/box类型的参数匹配规则
- 添加测试用例验证数组元素链式调用的类型转换功能
|
3 months ago |
韩天峰
|
3f9c76df5d
|
refactor(compiler): 替换 std::unsafe_cast 为对象方法调用并优化类型转换
- 将测试文件中的 std::unsafe_cast 调用替换为对应的 toStd* 方法
- 移除 std::unsafe_cast 函数实现,改为使用 $source->toStdMap 等方法
- 更新错误消息输出,移除函数名前缀
- 添加 TO_METHOD_TYPE_MAP 常量定义类型转换方法映射
- 修改变量赋值检查逻辑,支持新的 to* 转换方法
- 移除对 objval 函数的支持,统一使用 toObject 方法
- 新增 parseToStdAssign 方法处理标准容器转换分配
- 添加 genToObjectCall 和 genToConvertCall 代码生成方法
- 重构 UniversalMethodCall 类,移除重复的转换方法定义
- 优化类型检测逻辑,支持新的转换方法类型推断
|
3 months ago |
韩天峰
|
08f90e2df9
|
feat(php): 添加对box类型的支持
- 在CompilerBase中添加TYPE_BOX常量定义
- 将box类型映射到php::Box类型标识符
- 修改类型解析逻辑以支持box伪类型处理
- 更新gen_stub.php中的类型转换和映射逻辑
- 在StdContainerParser中扩展box类型处理
- 添加box类型到类型搜索顺序数组中
- 实现box类型与其他类型的转换逻辑
|
3 months ago |
韩天峰
|
ee81d116ef
|
refactor(Php): 将静态常量引用从父类改为当前类
|
3 months ago |
韩天峰
|
95b1c89053
|
BitInt 支持位运算操作符
|
3 months ago |
韩天峰
|
826e62e7b4
|
feat(php): 添加 Windows 平台的大数运算库支持
- 为 Windows 平台添加 gmp.lib、gmpxx.lib、mpfr.lib 库依赖
- 为 Windows 平台添加 libmpdec.lib、libmpdec++.lib 库依赖
- 统一跨平台的大数运算库配置逻辑
- 移除平台判断条件,简化库文件加载代码
|
3 months ago |
韩天峰
|
144b60a3e3
|
feat(compiler): 支持 bigint_types 和 decimal_types 声明指令
- 添加了 bigint_types 和 decimal_types 的 use 指令支持
- 实现了整数字面量自动转换为 BigInt 类型的功能
- 实现了浮点数字面量自动转换为 Decimal 类型的功能
- 添加了新的数学运算方法如 divmod、powmod、sqrt 等
- 更新了类型转换逻辑以支持大数运算
- 添加了相应的测试用例验证功能正确性
- 修改了编译器内部类型检测和转换机制
|
3 months ago |
韩天峰
|
6b5e8ad2e0
|
feat(universal_method): 支持通过反射调用PHP内部函数作为扩展方法
- 移除原有的字符串append方法实现
- 新增universal_method_internal.phpt测试文件验证内部函数扩展方法功能
- 修改findExtensionMethod方法支持先查找用户定义函数再回退到PHP内部函数
- 添加buildInternalExtensionMethod方法构建内部函数扩展方法定义
- 实现validateExtensionFirstParam和validateInternalExtensionFirstParam方法验证参数类型
- 更新测试用例移除已删除的append方法相关测试
|
3 months ago |
韩天峰
|
1476e5a4eb
|
fix(universal-method): 修复扩展方法链式调用的返回类型推断
- 在内置方法查找后添加扩展方法的返回类型检查
- 重构 findExtensionMethod 调用逻辑以支持链式调用场景
- 使用函数定义的返回类型而非默认的 TYPE_VAR
- 移除冗余的命名空间函数查找逻辑
|
3 months ago |
韩天峰
|
ee30acc94e
|
feat(compiler): 添加大整数、小数和大浮点数类型支持
- 在编译器基础类中添加 BigInt、Decimal 和 BigFloat 类型常量
- 实现大数字字面量自动识别逻辑,包括超过 64 位整数范围的整数字面量
- 实现高精度小数字面量识别,对 16 位以上有效数字的浮点数字面量进行特殊处理
- 添加算术运算符重载支持,实现 BigInt、Decimal、BigFloat 的 +、-、*、/、% 等操作
- 添加比较运算符支持,实现 <、>、<=、>=、==、!=、<=> 运算符的正确处理
- 实现不同数值类型间的转换逻辑,确保精度安全
- 添加幂运算符 (**) 对 BigInt 类型的支持
- 添加一元负号运算符对大数字类型的支持
- 实现类型检测逻辑,准确识别各种大数字类型
- 添加对 std::bigInt、std::decimal、std::bigFloat 构造函数的支持
- 添加必要的第三方库依赖,包括 GMP、libmpdec 和 MPFR 库
- 新增多组测试用例验证大数字类型的功能正确性
|
3 months ago |
韩天峰
|
dd940db5d9
|
feat(php): 添加数学函数和数组排序方法支持
- 添加 abs、ceil、floor、round 等数学函数支持
- 添加 sqrt、pow、log、exp 等数学运算函数
- 添加三角函数 sin、cos、tan 及其反函数
- 添加角度转换函数 deg2rad、rad2deg
- 添加最值函数 max、min
- 添加数组排序方法 sortDesc、keySort、valueSort
- 添加数组组合函数 combine 和 fillKeys
- 为整型和浮点型分别配置数学函数映射
|
3 months ago |
韩天峰
|
1b6884a983
|
fix(aot): 修复流资源类型处理和常量文件移除问题
- 更新测试用例中的错误消息断言以匹配正确的流资源错误描述
- 在编译器基础类中添加 stream 类型定义并将其映射为 var 类型进行处理
- 修复函数参数和返回值中 stream 类型的处理逻辑
- 移除不再需要的 constants.php 配置文件及其全部内容
|
3 months ago |
韩天峰
|
c04778cc51
|
refactor(php): 优化编译器基础类和通用方法调用实现
- 在CompilerBase.php中添加占位符表达式检查逻辑,统一返回TYPE_OBJECT类型
- 更新UniversalMethodCall.php中的方法处理器配置,将多个方法从php_fn改为direct_method
- 为genUniversalDirectMethod方法添加intCastArgs参数支持
- 实现genUniversalCppFn方法用于C++函数调用
- 为genUniversalPhpFn方法添加constArgs参数和接收器位置控制
- 重构字符串方法配置,移除toString方法和isTyped数组方法
- 更新测试文件,移除toString方法相关测试用例
- 改进代码生成逻辑,支持参数类型转换和常量参数插入
|
3 months ago |
韩天峰
|
6309346c9a
|
feat(core): 通用方法实现,纯静态,零成本抽象
|
3 months ago |