[K/N] Added checks for tests that current frame after catch is right
This commit is contained in:
+5
@@ -1051,6 +1051,11 @@ internal abstract class FunctionGenerationContext(
|
||||
return exception
|
||||
}
|
||||
|
||||
fun generateFrameCheck() {
|
||||
assert(slotsPhi != null)
|
||||
call(context.llvm.checkCurrentFrameFunction, listOf(slotsPhi!!))
|
||||
}
|
||||
|
||||
inline fun ifThenElse(
|
||||
condition: LLVMValueRef,
|
||||
thenValue: LLVMValueRef,
|
||||
|
||||
+1
@@ -457,6 +457,7 @@ internal class Llvm(val context: Context, val llvmModule: LLVMModuleRef) : Runti
|
||||
val enterFrameFunction = importRtFunction("EnterFrame")
|
||||
val leaveFrameFunction = importRtFunction("LeaveFrame")
|
||||
val setCurrentFrameFunction = importRtFunction("SetCurrentFrame")
|
||||
val checkCurrentFrameFunction = importRtFunction("CheckCurrentFrame")
|
||||
val lookupInterfaceTableRecord = importRtFunction("LookupInterfaceTableRecord")
|
||||
val isInstanceFunction = importRtFunction("IsInstance")
|
||||
val isInstanceOfClassFastFunction = importRtFunction("IsInstanceOfClassFast")
|
||||
|
||||
+1
@@ -1213,6 +1213,7 @@ internal class CodeGeneratorVisitor(val context: Context, val lifetimes: Map<IrE
|
||||
fun genCatchBlock() {
|
||||
using(VariableScope()) {
|
||||
currentCodeContext.genDeclareVariable(catch.catchParameter, exception, null)
|
||||
functionGenerationContext.generateFrameCheck()
|
||||
evaluateExpressionAndJump(catch.result, success)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user