Skip to content

Commit 3e09906

Browse files
committed
fix error
1 parent ed96756 commit 3e09906

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

3/zend_global_register.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CONST_HANDLER(Z
4343
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4444
}
4545
```
46-
所有opcode的handler定义格式都是相同的,其参数列表通过ZEND_OPCODE_HANDLER_ARGS宏定义,展开后实际只有一个execute_data;ZEND_FASTCALL这个宏是用于指定C语言函数调用方式的,这里指定的是fastcall方式,GNU C下就是__attribute__((fastcall))。去掉一些非关键操作展开后
46+
所有opcode的handler定义格式都是相同的,其参数列表通过ZEND_OPCODE_HANDLER_ARGS宏定义,展开后实际只有一个execute_data,展开后
4747
```c
48-
static int __attribute__((fastcall)) ZEND_ASSIGN_SPEC_CV_CONST_HANDLER(zend_execute_data *execute_data)
48+
static int ZEND_ASSIGN_SPEC_CV_CONST_HANDLER(zend_execute_data *execute_data)
4949
{
5050
//USE_OPLINE
5151
const zend_op *opline = execute_data->opline;
@@ -148,7 +148,7 @@ ZEND_API void execute_ex(zend_execute_data *ex)
148148
```
149149
这个时候调用各opcode指令的handler时就不再传入execute_data的参数了,handler使用时直接从全局变量读取,仍以上面的赋值ZEND_ASSIGN指令为例,handler展开后:
150150
```c
151-
static int __attribute__((fastcall)) ZEND_ASSIGN_SPEC_CV_CONST_HANDLER(void)
151+
static int ZEND_ASSIGN_SPEC_CV_CONST_HANDLER(void)
152152
{
153153
...
154154

0 commit comments

Comments
 (0)