summaryrefslogtreecommitdiff
path: root/Zend/zend_compile.c
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>1999-04-08 20:21:36 +0000
committerZeev Suraski <zeev@php.net>1999-04-08 20:21:36 +0000
commit17bdb70823db3b890ee6023d339fe0864b8d4ea3 (patch)
treed82792d85a317664132feeef84dae0d52c6d0c55 /Zend/zend_compile.c
parent9d1a9331b3168fdd1f5a7e1efe4de5a4ecc88aaa (diff)
downloadphp-git-17bdb70823db3b890ee6023d339fe0864b8d4ea3.tar.gz
$GLOBALS support
Diffstat (limited to 'Zend/zend_compile.c')
-rw-r--r--Zend/zend_compile.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 48b7d9aea1..9f4dc4e079 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -154,6 +154,24 @@ void do_binary_assign_op(int op, znode *result, znode *op1, znode *op2 CLS_DC)
}
+
+void do_fetch_globals(znode *varname)
+{
+ if (!CG(active_op_array)->initialized_globals
+ && varname->op_type == IS_CONST
+ && varname->u.constant.type == IS_STRING
+ && varname->u.constant.value.str.len == (sizeof("GLOBALS")-1)
+ && !memcmp(varname->u.constant.value.str.val, "GLOBALS", sizeof("GLOBALS")-1)) {
+ zend_op *opline = get_next_op(CG(active_op_array) CLS_CC);
+
+ opline->opcode = ZEND_INIT_GLOBALS;
+ SET_UNUSED(opline->op1);
+ SET_UNUSED(opline->op2);
+ CG(active_op_array)->initialized_globals = 1;
+ }
+}
+
+
void fetch_simple_variable(znode *result, znode *varname, int bp CLS_DC)
{
int next_op_number = get_next_op_number(CG(active_op_array));