summaryrefslogtreecommitdiff
path: root/Zend/zend_vm_gen.php
diff options
context:
space:
mode:
authorBob Weinand <bobwei9@hotmail.com>2013-12-21 19:22:47 +0100
committerBob Weinand <bobwei9@hotmail.com>2013-12-21 19:22:47 +0100
commit50d50c2f047dde3c2e3bf48490a1aa230e71ba16 (patch)
tree88cfc00c29dd1e3bdf09d8e94ad9674d2e7d4a60 /Zend/zend_vm_gen.php
parenta6fa52028f6391da6876d4c7eec20be8fb5a0bc0 (diff)
downloadphp-git-50d50c2f047dde3c2e3bf48490a1aa230e71ba16.tar.gz
Added an opcode to opcode name map
That way extensions etc. don't have to maintain their own lists anymore. Also as phpdbg is included and needs such a map, it'd be counterproductive to need to change two things on every new opcode.
Diffstat (limited to 'Zend/zend_vm_gen.php')
-rw-r--r--Zend/zend_vm_gen.php10
1 files changed, 10 insertions, 0 deletions
diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php
index 37deae8657..2f7c3cfd42 100644
--- a/Zend/zend_vm_gen.php
+++ b/Zend/zend_vm_gen.php
@@ -1201,11 +1201,21 @@ function gen_vm($def, $skel) {
// Insert header
out($f, $GLOBALS['header_text']);
+ fputs($f, "#ifndef ZEND_VM_OPCODES_H\n#define ZEND_VM_OPCODES_H\n\n");
+
foreach ($opcodes as $code => $dsc) {
$code = str_pad((string)$code,$code_len," ",STR_PAD_LEFT);
$op = str_pad($dsc["op"],$max_opcode_len);
fputs($f,"#define $op $code\n");
}
+
+ fputs($f,"\nconst char *zend_vm_opcodes_map[] = {\n");
+ for ($i = 0; $i <= $max_opcode; $i++) {
+ fputs($f,"\t".(isset($opcodes[$i]["op"])?'"'.$opcodes[$i]["op"].'"':"NULL").",\n");
+ }
+ fputs($f, "};\n");
+
+ fputs($f, "\n#endif");
fclose($f);
echo "zend_vm_opcodes.h generated successfully.\n";