Refactoring of function types. Also fixes some library import bugs.
This commit is contained in:
@@ -557,6 +557,13 @@ void HIRBuilder::CallIndirectTrue(
|
||||
EndBlock();
|
||||
}
|
||||
|
||||
void HIRBuilder::CallExtern(FunctionInfo* symbol_info) {
|
||||
Instr* i = AppendInstr(OPCODE_CALL_EXTERN_info, 0);
|
||||
i->src1.symbol_info = symbol_info;
|
||||
i->src2.value = i->src3.value = NULL;
|
||||
EndBlock();
|
||||
}
|
||||
|
||||
void HIRBuilder::Return() {
|
||||
Instr* i = AppendInstr(OPCODE_RETURN_info, 0);
|
||||
i->src1.value = i->src2.value = i->src3.value = NULL;
|
||||
|
||||
@@ -74,6 +74,7 @@ public:
|
||||
uint32_t call_flags = 0);
|
||||
void CallIndirect(Value* value, uint32_t call_flags = 0);
|
||||
void CallIndirectTrue(Value* cond, Value* value, uint32_t call_flags = 0);
|
||||
void CallExtern(runtime::FunctionInfo* symbol_info);
|
||||
void Return();
|
||||
void ReturnTrue(Value* cond);
|
||||
|
||||
|
||||
@@ -94,6 +94,7 @@ enum Opcode {
|
||||
OPCODE_CALL_TRUE,
|
||||
OPCODE_CALL_INDIRECT,
|
||||
OPCODE_CALL_INDIRECT_TRUE,
|
||||
OPCODE_CALL_EXTERN,
|
||||
OPCODE_RETURN,
|
||||
OPCODE_RETURN_TRUE,
|
||||
|
||||
|
||||
@@ -74,6 +74,12 @@ DEFINE_OPCODE(
|
||||
OPCODE_SIG_X_V_V,
|
||||
OPCODE_FLAG_BRANCH);
|
||||
|
||||
DEFINE_OPCODE(
|
||||
OPCODE_CALL_EXTERN,
|
||||
"call_extern",
|
||||
OPCODE_SIG_X_S,
|
||||
OPCODE_FLAG_BRANCH);
|
||||
|
||||
DEFINE_OPCODE(
|
||||
OPCODE_RETURN,
|
||||
"return",
|
||||
|
||||
Reference in New Issue
Block a user