Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/GStreamer/orc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Schleef <ds@schleef.org>2012-03-01 11:54:47 +0400
committerDavid Schleef <ds@schleef.org>2012-03-01 11:54:47 +0400
commit2267ce1de252db478c1d6dd516fa3f1740f8304a (patch)
tree5d6fb4fcde9b91eab03f8ed0ce8fc0408ca3abaf
parentdd1a8b9d761aca09530cf68c51d6503c6286c5fc (diff)
bytecode: Add bytecode for instruction flags
-rw-r--r--orc/orcbytecode.c10
-rw-r--r--orc/orcbytecode.h2
2 files changed, 11 insertions, 1 deletions
diff --git a/orc/orcbytecode.c b/orc/orcbytecode.c
index 0d86373..19af32c 100644
--- a/orc/orcbytecode.c
+++ b/orc/orcbytecode.c
@@ -155,6 +155,10 @@ orc_bytecode_from_program (OrcProgram *p)
for(i=0;i<p->n_insns;i++){
OrcInstruction *insn = p->insns + i;
+ if (insn->flags) {
+ bytecode_append_code (bytecode, ORC_BC_INSTRUCTION_FLAGS);
+ bytecode_append_int (bytecode, insn->flags);
+ }
bytecode_append_code (bytecode, (insn->opcode - opcode_set->opcodes) + 32);
if (insn->opcode->dest_size[0] != 0) {
bytecode_append_int (bytecode, insn->dest_args[0]);
@@ -376,6 +380,7 @@ orc_bytecode_parse_function (OrcProgram *program, const orc_uint8 *bytecode)
int size;
int alignment;
OrcOpcodeSet *opcode_set;
+ int instruction_flags = 0;
memset (parse, 0, sizeof(*parse));
parse->bytecode = bytecode;
@@ -470,6 +475,9 @@ orc_bytecode_parse_function (OrcProgram *program, const orc_uint8 *bytecode)
size = orc_bytecode_parse_get_int (parse);
orc_program_add_temporary (program, size, "t");
break;
+ case ORC_BC_INSTRUCTION_FLAGS:
+ instruction_flags = orc_bytecode_parse_get_int (parse);
+ break;
default:
break;
}
@@ -494,6 +502,8 @@ orc_bytecode_parse_function (OrcProgram *program, const orc_uint8 *bytecode)
if (insn->opcode->src_size[2] != 0) {
insn->src_args[2] = orc_bytecode_parse_get_int (parse);
}
+ insn->flags = instruction_flags;
+ instruction_flags = 0;
program->n_insns++;
}
diff --git a/orc/orcbytecode.h b/orc/orcbytecode.h
index 23aae09..c71f57b 100644
--- a/orc/orcbytecode.h
+++ b/orc/orcbytecode.h
@@ -29,7 +29,7 @@ typedef enum {
ORC_BC_ADD_PARAMETER_INT64,
ORC_BC_ADD_PARAMETER_DOUBLE,
ORC_BC_ADD_TEMPORARY,
- ORC_BC_RESERVED_21,
+ ORC_BC_INSTRUCTION_FLAGS,
ORC_BC_RESERVED_22,
ORC_BC_RESERVED_23,
ORC_BC_RESERVED_24,