Refactoring SymbolInfo/FunctionInfo/Function into Symbol/Function.

This commit is contained in:
Ben Vanik
2015-08-05 21:50:02 -07:00
parent 48d6e6becf
commit eaa1a8ee3a
54 changed files with 715 additions and 1027 deletions

View File

@@ -13,10 +13,11 @@
#include <cstring>
#include "xenia/base/assert.h"
#include "xenia/cpu/function.h"
#include "xenia/cpu/hir/block.h"
#include "xenia/cpu/hir/instr.h"
#include "xenia/cpu/hir/label.h"
#include "xenia/cpu/symbol_info.h"
#include "xenia/cpu/symbol.h"
#include "xenia/profiling.h"
// Will scribble arena memory to hopefully find use before clears.
@@ -162,7 +163,7 @@ void HIRBuilder::DumpOp(StringBuffer* str, OpcodeSignatureType sig_type,
break;
case OPCODE_SIG_TYPE_S:
if (true) {
auto target = op->symbol_info;
auto target = op->symbol;
str->Append(!target->name().empty() ? target->name() : "<fn>");
}
break;
@@ -820,25 +821,24 @@ void HIRBuilder::TrapTrue(Value* cond, uint16_t trap_code) {
EndBlock();
}
void HIRBuilder::Call(FunctionInfo* symbol_info, uint16_t call_flags) {
void HIRBuilder::Call(Function* symbol, uint16_t call_flags) {
Instr* i = AppendInstr(OPCODE_CALL_info, call_flags);
i->src1.symbol_info = symbol_info;
i->src1.symbol = symbol;
i->src2.value = i->src3.value = NULL;
EndBlock();
}
void HIRBuilder::CallTrue(Value* cond, FunctionInfo* symbol_info,
uint16_t call_flags) {
void HIRBuilder::CallTrue(Value* cond, Function* symbol, uint16_t call_flags) {
if (cond->IsConstant()) {
if (cond->IsConstantTrue()) {
Call(symbol_info, call_flags);
Call(symbol, call_flags);
}
return;
}
Instr* i = AppendInstr(OPCODE_CALL_TRUE_info, call_flags);
i->set_src1(cond);
i->src2.symbol_info = symbol_info;
i->src2.symbol = symbol;
i->src3.value = NULL;
EndBlock();
}
@@ -868,9 +868,9 @@ void HIRBuilder::CallIndirectTrue(Value* cond, Value* value,
EndBlock();
}
void HIRBuilder::CallExtern(FunctionInfo* symbol_info) {
void HIRBuilder::CallExtern(Function* symbol) {
Instr* i = AppendInstr(OPCODE_CALL_EXTERN_info, 0);
i->src1.symbol_info = symbol_info;
i->src1.symbol = symbol;
i->src2.value = i->src3.value = NULL;
EndBlock();
}

View File

@@ -83,12 +83,11 @@ class HIRBuilder {
void Trap(uint16_t trap_code = 0);
void TrapTrue(Value* cond, uint16_t trap_code = 0);
void Call(FunctionInfo* symbol_info, uint16_t call_flags = 0);
void CallTrue(Value* cond, FunctionInfo* symbol_info,
uint16_t call_flags = 0);
void Call(Function* symbol, uint16_t call_flags = 0);
void CallTrue(Value* cond, Function* symbol, uint16_t call_flags = 0);
void CallIndirect(Value* value, uint16_t call_flags = 0);
void CallIndirectTrue(Value* cond, Value* value, uint16_t call_flags = 0);
void CallExtern(FunctionInfo* symbol_info);
void CallExtern(Function* symbol);
void Return();
void ReturnTrue(Value* cond);
void SetReturnAddress(Value* value);

View File

@@ -15,7 +15,7 @@
namespace xe {
namespace cpu {
class FunctionInfo;
class Function;
} // namespace cpu
} // namespace xe
@@ -37,7 +37,7 @@ class Instr {
uint32_t ordinal;
typedef union {
FunctionInfo* symbol_info;
Function* symbol;
Label* label;
Value* value;
uint64_t offset;