Changing return type of opcode handlers to ecma_CompletionValue_t.

This commit is contained in:
Ruben Ayrapetyan 2014-07-17 20:53:48 +04:00
parent a20aa29354
commit dd5c9dfb39
2 changed files with 21 additions and 6 deletions

View File

@ -13,6 +13,7 @@
* limitations under the License. * limitations under the License.
*/ */
#include "ecma-helpers.h"
#include "ecma-operations.h" #include "ecma-operations.h"
#include "interpreter.h" #include "interpreter.h"
#include "jerry-libc.h" #include "jerry-libc.h"
@ -66,13 +67,13 @@
op(var_decl) op(var_decl)
#define DEFINE_UNIMPLEMENTED_OP(op) \ #define DEFINE_UNIMPLEMENTED_OP(op) \
void opfunc_ ## op(OPCODE opdata, struct __int_data *int_data) { \ ecma_CompletionValue_t opfunc_ ## op(OPCODE opdata, struct __int_data *int_data) { \
JERRY_UNIMPLEMENTED_REF_UNUSED_VARS( opdata, int_data); \ JERRY_UNIMPLEMENTED_REF_UNUSED_VARS( opdata, int_data); \
} }
OP_UNIMPLEMENTED_LIST(DEFINE_UNIMPLEMENTED_OP) OP_UNIMPLEMENTED_LIST(DEFINE_UNIMPLEMENTED_OP)
#undef DEFINE_UNIMPLEMENTED_OP #undef DEFINE_UNIMPLEMENTED_OP
void ecma_CompletionValue_t
opfunc_loop_inf (OPCODE opdata, struct __int_data *int_data) opfunc_loop_inf (OPCODE opdata, struct __int_data *int_data)
{ {
#ifdef __HOST #ifdef __HOST
@ -82,9 +83,13 @@ opfunc_loop_inf (OPCODE opdata, struct __int_data *int_data)
#endif #endif
int_data->pos = opdata.data.loop_inf.loop_root; int_data->pos = opdata.data.loop_inf.loop_root;
return ecma_MakeCompletionValue( ECMA_COMPLETION_TYPE_NORMAL,
ecma_MakeSimpleValue( ECMA_SIMPLE_VALUE_EMPTY),
ECMA_TARGET_ID_RESERVED);
} }
void ecma_CompletionValue_t
opfunc_call_1 (OPCODE opdata __unused, struct __int_data *int_data) opfunc_call_1 (OPCODE opdata __unused, struct __int_data *int_data)
{ {
#ifdef __HOST #ifdef __HOST
@ -95,9 +100,14 @@ opfunc_call_1 (OPCODE opdata __unused, struct __int_data *int_data)
#endif #endif
int_data->pos++; int_data->pos++;
// FIXME
return ecma_MakeCompletionValue( ECMA_COMPLETION_TYPE_NORMAL,
ecma_MakeSimpleValue( ECMA_SIMPLE_VALUE_EMPTY),
ECMA_TARGET_ID_RESERVED);
} }
void ecma_CompletionValue_t
opfunc_jmp (OPCODE opdata, struct __int_data *int_data) opfunc_jmp (OPCODE opdata, struct __int_data *int_data)
{ {
#ifdef __HOST #ifdef __HOST
@ -107,6 +117,10 @@ opfunc_jmp (OPCODE opdata, struct __int_data *int_data)
#endif #endif
int_data->pos = opdata.data.jmp.opcode_idx; int_data->pos = opdata.data.jmp.opcode_idx;
return ecma_MakeCompletionValue( ECMA_COMPLETION_TYPE_NORMAL,
ecma_MakeSimpleValue( ECMA_SIMPLE_VALUE_EMPTY),
ECMA_TARGET_ID_RESERVED);
} }
/** Opcode generators. */ /** Opcode generators. */

View File

@ -16,6 +16,7 @@
#ifndef OPCODES_H #ifndef OPCODES_H
#define OPCODES_H #define OPCODES_H
#include "ecma-globals.h"
#include "globals.h" #include "globals.h"
#define OPCODE struct __opcode #define OPCODE struct __opcode
@ -23,7 +24,7 @@ struct __int_data;
#define OP_STRUCT_FIELD(name) struct __op_##name name; #define OP_STRUCT_FIELD(name) struct __op_##name name;
#define OP_ENUM_FIELD(name) __op__idx_##name , #define OP_ENUM_FIELD(name) __op__idx_##name ,
#define OP_FUNC_DECL(name) void opfunc_##name (OPCODE, struct __int_data *); #define OP_FUNC_DECL(name) ecma_CompletionValue_t opfunc_##name (OPCODE, struct __int_data *);
/** A single bytecode instruction is 32bit wide and has an 8bit opcode field /** A single bytecode instruction is 32bit wide and has an 8bit opcode field
and several operand of 8 of 16 bit.*/ and several operand of 8 of 16 bit.*/
@ -32,7 +33,7 @@ struct __int_data;
#define T_IDX uint8_t /** index values */ #define T_IDX uint8_t /** index values */
OPCODE; OPCODE;
typedef void (*opfunc)(OPCODE, struct __int_data *); typedef ecma_CompletionValue_t (*opfunc)(OPCODE, struct __int_data *);
#define OP_LOOPS(op) \ #define OP_LOOPS(op) \
op(loop_inf) \ op(loop_inf) \