- branch optimization.
This commit is contained in:
parent
17d9a152e7
commit
77192fa9dd
4 changed files with 165 additions and 96 deletions
|
|
@ -328,6 +328,7 @@ public:
|
|||
bool IsObject() const { return ValueType->IsKindOf(RUNTIME_CLASS(PPointer)) && !ValueType->IsKindOf(RUNTIME_CLASS(PClassPointer)) && ValueType != TypeNullPtr && static_cast<PPointer*>(ValueType)->PointedType->IsKindOf(RUNTIME_CLASS(PClass)); }
|
||||
|
||||
virtual ExpEmit Emit(VMFunctionBuilder *build);
|
||||
virtual void EmitCompare(VMFunctionBuilder *build, bool invert, TArray<size_t> &patchspots_yes, TArray<size_t> &patchspots_no);
|
||||
|
||||
FScriptPosition ScriptPosition;
|
||||
PType *ValueType = nullptr;
|
||||
|
|
@ -565,6 +566,7 @@ public:
|
|||
FxExpression *Resolve(FCompileContext&);
|
||||
|
||||
ExpEmit Emit(VMFunctionBuilder *build);
|
||||
void EmitCompare(VMFunctionBuilder *build, bool invert, TArray<size_t> &patchspots_yes, TArray<size_t> &patchspots_no);
|
||||
};
|
||||
|
||||
class FxIntCast : public FxExpression
|
||||
|
|
@ -734,6 +736,7 @@ public:
|
|||
~FxUnaryNotBoolean();
|
||||
FxExpression *Resolve(FCompileContext&);
|
||||
ExpEmit Emit(VMFunctionBuilder *build);
|
||||
void EmitCompare(VMFunctionBuilder *build, bool invert, TArray<size_t> &patchspots_yes, TArray<size_t> &patchspots_no);
|
||||
};
|
||||
|
||||
//==========================================================================
|
||||
|
|
@ -934,7 +937,9 @@ public:
|
|||
|
||||
FxCompareRel(int, FxExpression*, FxExpression*);
|
||||
FxExpression *Resolve(FCompileContext&);
|
||||
ExpEmit EmitCommon(VMFunctionBuilder *build, bool forcompare, bool invert);
|
||||
ExpEmit Emit(VMFunctionBuilder *build);
|
||||
void EmitCompare(VMFunctionBuilder *build, bool invert, TArray<size_t> &patchspots_yes, TArray<size_t> &patchspots_no);
|
||||
};
|
||||
|
||||
//==========================================================================
|
||||
|
|
@ -949,7 +954,9 @@ public:
|
|||
|
||||
FxCompareEq(int, FxExpression*, FxExpression*);
|
||||
FxExpression *Resolve(FCompileContext&);
|
||||
ExpEmit EmitCommon(VMFunctionBuilder *build, bool forcompare, bool invert);
|
||||
ExpEmit Emit(VMFunctionBuilder *build);
|
||||
void EmitCompare(VMFunctionBuilder *build, bool invert, TArray<size_t> &patchspots_yes, TArray<size_t> &patchspots_no);
|
||||
};
|
||||
|
||||
//==========================================================================
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue