summaryrefslogtreecommitdiff
path: root/xcache/xc_opcode_spec.h
blob: c2cb6c300a27720ecff6ca56826b375aaed665e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "php.h"

#define OPSPECS(OPSPEC) \
	OPSPEC(STD) \
	OPSPEC(UNUSED) \
	OPSPEC(OPLINE) \
	OPSPEC(FCALL) \
	OPSPEC(INIT_FCALL) \
	OPSPEC(ARG) \
	OPSPEC(CAST) \
	OPSPEC(FETCH) \
	OPSPEC(DECLARE) \
	OPSPEC(SEND) \
	OPSPEC(SEND_NOREF) \
	OPSPEC(FCLASS) \
	OPSPEC(UCLASS) \
	OPSPEC(CLASS) \
	OPSPEC(FE) \
	OPSPEC(IFACE) \
	OPSPEC(ISSET) \
	OPSPEC(BIT) \
	OPSPEC(VAR) \
	OPSPEC(TMP) \
	OPSPEC(JMPADDR) \
	OPSPEC(BRK) \
	OPSPEC(CONT) \
	OPSPEC(INCLUDE) \
	OPSPEC(ASSIGN) \
	OPSPEC(FETCHTYPE)

#define OPSPECS_DEF_ENUM(name) OPSPEC_##name,
typedef enum { OPSPECS(OPSPECS_DEF_ENUM) OPSPEC_DUMMY } xc_op_spec_t;

typedef struct {
	xc_op_spec_t ext;
	xc_op_spec_t op1;
	xc_op_spec_t op2;
	xc_op_spec_t res;
} xc_opcode_spec_t;

const xc_opcode_spec_t *xc_get_opcode_spec(zend_uchar opcode);
zend_uchar xc_get_opcode_spec_count();
zend_uchar xc_get_op_spec_count();
const char *xc_get_op_spec(zend_uchar spec);