Bytecode Dynamic Module Entry Point: DART_SDK/pkg/dart2bytecode/testcases/try_blocks.dart::main Library 'DART_SDK/pkg/dart2bytecode/testcases/try_blocks.dart' name '#lib' script 'DART_SDK/pkg/dart2bytecode/testcases/try_blocks.dart' Class '', script = 'DART_SDK/pkg/dart2bytecode/testcases/try_blocks.dart' Function 'testTryCatch1', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 4 CheckStack 0 Try #0 start: PushConstant CP#0 DirectCall CP#1, 1 Drop1 Jump L1 Try #0 end: Try #0 handler: SetFrame 4 MoveSpecial exception, r0 MoveSpecial stackTrace, r1 Push r0 PopLocal r2 PushNull PushInt 2 CreateArrayTOS StoreLocal r3 Push r3 PushInt 0 PushConstant CP#4 StoreIndexedTOS Push r3 PushInt 1 Push r2 StoreIndexedTOS DirectCall CP#5, 1 DirectCall CP#1, 1 Drop1 Jump L1 L1: PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 4, end 14, handler 14, types [CP#3] } ConstantPool { [0] = ObjectRef 'danger!' [1] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [2] = Reserved [3] = Type dart:core::Object [4] = ObjectRef 'caught ' [5] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names [] [6] = Reserved } Function 'testTryCatch2', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 5 CheckStack 0 Try #0 start: PushConstant CP#0 DirectCall CP#1, 1 Drop1 Jump L1 Try #0 end: Try #0 handler: SetFrame 5 MoveSpecial exception, r0 MoveSpecial stackTrace, r1 Push r0 PushConstant CP#3 InterfaceCall CP#4, 2 JumpIfFalse L2 PushConstant CP#6 DirectCall CP#1, 1 Drop1 Jump L1 L2: Push r0 PushConstant CP#7 InterfaceCall CP#4, 2 JumpIfFalse L3 Push r0 PopLocal r2 PushNull PushInt 2 CreateArrayTOS StoreLocal r3 Push r3 PushInt 0 PushConstant CP#8 StoreIndexedTOS Push r3 PushInt 1 Push r2 StoreIndexedTOS DirectCall CP#9, 1 DirectCall CP#1, 1 Drop1 Jump L1 L3: Push r0 PushConstant CP#11 InterfaceCall CP#4, 2 JumpIfFalse L4 Push r0 PopLocal r2 Push r1 PopLocal r3 PushNull PushInt 4 CreateArrayTOS StoreLocal r4 Push r4 PushInt 0 PushConstant CP#12 StoreIndexedTOS Push r4 PushInt 1 Push r2 StoreIndexedTOS Push r4 PushInt 2 PushConstant CP#13 StoreIndexedTOS Push r4 PushInt 3 Push r3 StoreIndexedTOS DirectCall CP#9, 1 DirectCall CP#1, 1 Drop1 Jump L1 L4: Push r0 PopLocal r2 Push r1 PopLocal r3 PushNull PushInt 4 CreateArrayTOS StoreLocal r4 Push r4 PushInt 0 PushConstant CP#15 StoreIndexedTOS Push r4 PushInt 1 Push r2 StoreIndexedTOS Push r4 PushInt 2 PushConstant CP#13 StoreIndexedTOS Push r4 PushInt 3 Push r3 StoreIndexedTOS DirectCall CP#9, 1 DirectCall CP#1, 1 Drop1 Jump L1 L1: PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 4, end 14, handler 14, needs-stack-trace, types [CP#3, CP#7, CP#11, CP#14] } ConstantPool { [0] = ObjectRef 'danger!' [1] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [2] = Reserved [3] = Type dart:core::TypeError [4] = InterfaceCall 'dart:core::Object::_simpleInstanceOf', ArgDesc num-args 2, num-type-args 0, names [] [5] = Reserved [6] = ObjectRef 'caught type error' [7] = Type dart:core::AssertionError [8] = ObjectRef 'caught assertion error ' [9] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names [] [10] = Reserved [11] = Type dart:core::Error [12] = ObjectRef 'caught error ' [13] = ObjectRef ' ' [14] = Type dart:core::Object [15] = ObjectRef 'caught something ' } Function 'testTryCatch3', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 7 CheckStack 0 AllocateContext 0, 3 PopLocal r0 Push r0 PushInt 1 StoreContextVar 0, 0 Push r0 PopLocal r2 Try #0 start: Push r0 PushInt 2 StoreContextVar 0, 1 AllocateClosure CP#6 StoreLocal r5 Push r5 Push r0 StoreClosureElement 0 PopLocal r4 Push r4 Push r4 UncheckedClosureCall CP#8, 1 Drop1 Push r0 LoadContextVar 0, 1 DirectCall CP#2, 1 Drop1 Jump L1 Try #0 end: Try #0 handler: SetFrame 7 Push r2 PopLocal r0 MoveSpecial exception, r2 MoveSpecial stackTrace, r3 Push r2 PopLocal r4 Push r0 Push r3 StoreContextVar 0, 2 PushNull PushInt 4 CreateArrayTOS StoreLocal r5 Push r5 PushInt 0 PushConstant CP#9 StoreIndexedTOS Push r5 PushInt 1 Push r4 StoreIndexedTOS Push r5 PushInt 2 PushConstant CP#10 StoreIndexedTOS Push r5 PushInt 3 Push r0 LoadContextVar 0, 2 StoreIndexedTOS DirectCall CP#11, 1 DirectCall CP#2, 1 Drop1 AllocateClosure CP#21 StoreLocal r5 Push r5 Push r0 StoreClosureElement 0 PopLocal r6 Push r6 ReturnTOS L1: Push r0 LoadContextParent PopLocal r0 PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 20, end 60, handler 60, needs-stack-trace, types [CP#4] } ConstantPool { [0] = ClosureFunction 0 [1] = ObjectRef 'danger foo' [2] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [3] = Reserved [4] = Type dart:core::Object [5] = EndClosureFunctionScope [6] = AllocateClosure 0, num-elements: 1, flags: 0 [7] = Reserved [8] = ObjectRef ArgDesc num-args 1, num-type-args 0, names [] [9] = ObjectRef 'caught ' [10] = ObjectRef ' ' [11] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names [] [12] = Reserved [13] = ClosureFunction 1 [14] = ObjectRef 'danger bar' [15] = Type dart:core::Error [16] = InterfaceCall 'dart:core::Object::_simpleInstanceOf', ArgDesc num-args 2, num-type-args 0, names [] [17] = Reserved [18] = ObjectRef 'error ' [19] = ObjectRef ', captured stack trace: ' [20] = EndClosureFunctionScope [21] = AllocateClosure 1, num-elements: 1, flags: 0 [22] = Reserved } Closure DART_SDK/pkg/dart2bytecode/testcases/try_blocks.dart::testTryCatch3::'foo' () -> void ClosureCode { Entry 5 Push FP[-5] LoadClosureElement 0 PopLocal r0 CheckStack 0 Push r0 PopLocal r2 Try #0 start: PushConstant CP#1 DirectCall CP#2, 1 Drop1 Jump L1 Try #0 end: Try #0 handler: SetFrame 5 Push r2 PopLocal r0 MoveSpecial exception, r2 MoveSpecial stackTrace, r3 Push r2 PopLocal r4 Push r0 LoadContextVar 0, 0 DirectCall CP#2, 1 Drop1 Push r0 PushInt 3 StoreContextVar 0, 1 Jump L1 L1: PushNull ReturnTOS } Closure DART_SDK/pkg/dart2bytecode/testcases/try_blocks.dart::testTryCatch3::'bar' () -> void ClosureCode { Entry 6 Push FP[-5] LoadClosureElement 0 PopLocal r0 CheckStack 0 Push r0 PopLocal r2 Try #0 start: PushConstant CP#14 DirectCall CP#2, 1 Drop1 Jump L1 Try #0 end: Try #0 handler: SetFrame 6 Push r2 PopLocal r0 MoveSpecial exception, r2 MoveSpecial stackTrace, r3 Push r2 PushConstant CP#15 InterfaceCall CP#16, 2 JumpIfFalse L2 Push r2 PopLocal r4 PushNull PushInt 4 CreateArrayTOS StoreLocal r5 Push r5 PushInt 0 PushConstant CP#18 StoreIndexedTOS Push r5 PushInt 1 Push r4 StoreIndexedTOS Push r5 PushInt 2 PushConstant CP#19 StoreIndexedTOS Push r5 PushInt 3 Push r0 LoadContextVar 0, 2 StoreIndexedTOS DirectCall CP#11, 1 DirectCall CP#2, 1 Drop1 Jump L1 L2: Push r2 Push r3 Throw 1 L1: PushNull ReturnTOS } Function 'testRethrow', static, reflectable, debuggable parameters [dart:core::bool 'cond'] (required: 1) return-type dynamic Bytecode { Entry 8 CheckStack 0 Try #0 start: Try #1 start: PushConstant CP#0 DirectCall CP#1, 1 Drop1 Jump L1 Try #1 end: Try #1 handler: SetFrame 8 MoveSpecial exception, r2 MoveSpecial stackTrace, r3 Push r2 PopLocal r4 Try #2 start: PushConstant CP#4 DirectCall CP#1, 1 Drop1 Push FP[-5] JumpIfFalse L2 Push r2 Push r3 Throw 1 L2: Jump L3 Try #2 end: Try #2 handler: SetFrame 8 MoveSpecial exception, r5 MoveSpecial stackTrace, r6 Push r5 PopLocal r7 PushConstant CP#5 DirectCall CP#1, 1 Drop1 Jump L3 L3: Jump L1 L1: Jump L4 Try #0 end: Try #0 handler: SetFrame 8 MoveSpecial exception, r0 MoveSpecial stackTrace, r1 Push r0 PopLocal r2 Push r1 PopLocal r3 PushConstant CP#6 DirectCall CP#1, 1 Drop1 Push r3 DirectCall CP#1, 1 Drop1 Jump L4 L4: PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 4, end 78, handler 78, needs-stack-trace, types [CP#3] try-index 1, outer 0, start 4, end 14, handler 14, needs-stack-trace, types [CP#3] try-index 2, outer 0, start 26, end 48, handler 48, types [CP#3] } ConstantPool { [0] = ObjectRef 'try 1 > try 2' [1] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [2] = Reserved [3] = Type dart:core::Object [4] = ObjectRef 'try 1 > catch 2 > try 3' [5] = ObjectRef 'try 1 > catch 2 > catch 3' [6] = ObjectRef 'catch 1' } Function 'testTryFinally1', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 3 CheckStack 0 PushInt 0 PopLocal r0 L5: CheckStack 1 Push r0 PushInt 10 CompareIntLt JumpIfFalse L1 Try #0 start: Push r0 PushInt 5 CompareIntGt JumpIfFalse L2 Jump L3 L2: Jump L4 Try #0 end: Try #0 handler: SetFrame 3 MoveSpecial exception, r1 MoveSpecial stackTrace, r2 Push r0 DirectCall CP#1, 1 Drop1 Push r1 Push r2 Throw 1 L3: Push r0 DirectCall CP#1, 1 Drop1 Jump L1 L4: Push r0 DirectCall CP#1, 1 Drop1 Push r0 PushInt 1 AddInt StoreLocal r0 Drop1 Jump L5 L1: PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 19, end 36, handler 36, needs-stack-trace, synthetic, types [CP#0] } ConstantPool { [0] = Type dynamic [1] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [2] = Reserved } Function 'testTryFinally2', static, reflectable, debuggable parameters [dart:core::int 'x'] (required: 1) return-type dynamic Bytecode { Entry 9 CheckStack 0 AllocateContext 0, 2 PopLocal r0 Push r0 Push FP[-5] StoreContextVar 0, 0 Push r0 LoadContextVar 0, 0 PopLocal r2 PushInt 1 Push r2 InterfaceCall CP#0, 2 JumpIfTrue L1 PushInt 2 Push r2 InterfaceCall CP#0, 2 JumpIfTrue L2 Jump L3 L1: Push r0 PopLocal r3 Try #0 start: PushConstant CP#2 DirectCall CP#3, 1 Drop1 Push r0 PushInt 3 StoreContextVar 0, 1 Push r0 PopLocal r5 Try #1 start: PushConstant CP#5 DirectCall CP#3, 1 Drop1 AllocateClosure CP#8 StoreLocal r8 Push r8 Push r0 StoreClosureElement 0 PopLocal r7 Push r7 Push r7 UncheckedClosureCall CP#10, 1 Drop1 Jump L4 Try #1 end: Try #1 handler: SetFrame 9 Push r5 PopLocal r0 MoveSpecial exception, r5 MoveSpecial stackTrace, r6 PushConstant CP#12 DirectCall CP#3, 1 Drop1 Push r5 Push r6 Throw 1 L4: Push r5 PopLocal r0 PushConstant CP#12 DirectCall CP#3, 1 Drop1 Jump L5 Try #0 end: Try #0 handler: SetFrame 9 Push r3 PopLocal r0 MoveSpecial exception, r3 MoveSpecial stackTrace, r4 PushConstant CP#14 DirectCall CP#3, 1 Drop1 Push r3 Push r4 Throw 1 L5: Push r3 PopLocal r0 PushConstant CP#14 DirectCall CP#3, 1 Drop1 Jump L2 L2: PushConstant CP#15 DirectCall CP#3, 1 Drop1 Jump L3 L3: PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 53, end 138, handler 138, needs-stack-trace, synthetic, types [CP#11] try-index 1, outer 0, start 70, end 100, handler 100, needs-stack-trace, synthetic, types [CP#11] } ConstantPool { [0] = InterfaceCall 'dart:core::Object::==', ArgDesc num-args 2, num-type-args 0, names [] [1] = Reserved [2] = ObjectRef 'before try 1' [3] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [4] = Reserved [5] = ObjectRef 'try' [6] = ClosureFunction 0 [7] = EndClosureFunctionScope [8] = AllocateClosure 0, num-elements: 1, flags: 0 [9] = Reserved [10] = ObjectRef ArgDesc num-args 1, num-type-args 0, names [] [11] = Type dynamic [12] = ObjectRef 'finally 1' [13] = ObjectRef 'after try 1' [14] = ObjectRef 'finally 2' [15] = ObjectRef 'case 2' } Closure DART_SDK/pkg/dart2bytecode/testcases/try_blocks.dart::testTryFinally2::'foo' () -> void ClosureCode { Entry 2 Push FP[-5] LoadClosureElement 0 PopLocal r0 CheckStack 0 Push r0 LoadContextVar 0, 0 DirectCall CP#3, 1 Drop1 Push r0 LoadContextVar 0, 1 DirectCall CP#3, 1 Drop1 PushNull ReturnTOS } Function 'testTryFinally3', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 6 CheckStack 0 AllocateContext 0, 1 PopLocal r0 Push r0 PushInt 11 StoreContextVar 0, 0 PushNull PopLocal r2 Push r0 PopLocal r3 Try #0 start: AllocateClosure CP#7 StoreLocal r5 Push r5 Push r0 StoreClosureElement 0 PopLocal r2 Jump L1 Try #0 end: Try #0 handler: SetFrame 6 Push r3 PopLocal r0 MoveSpecial exception, r3 MoveSpecial stackTrace, r4 Push r0 LoadContextVar 0, 0 DirectCall CP#1, 1 Drop1 Push r2 DynamicCall CP#9, 1 Drop1 Push r3 Push r4 Throw 1 L1: Push r3 PopLocal r0 Push r0 LoadContextVar 0, 0 DirectCall CP#1, 1 Drop1 Push r2 DynamicCall CP#9, 1 Drop1 Push r0 LoadContextParent PopLocal r0 PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 23, end 39, handler 39, needs-stack-trace, synthetic, types [CP#4] } ConstantPool { [0] = ClosureFunction 0 [1] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [2] = Reserved [3] = ObjectRef 'try 1' [4] = Type dynamic [5] = ObjectRef 'try 2' [6] = EndClosureFunctionScope [7] = AllocateClosure 0, num-elements: 1, flags: 0 [8] = Reserved [9] = DynamicCall 'implicit:call', ArgDesc num-args 1, num-type-args 0, names [] [10] = Reserved } Closure DART_SDK/pkg/dart2bytecode/testcases/try_blocks.dart::testTryFinally3::'' () -> dart:core::int ClosureCode { Entry 6 Push FP[-5] LoadClosureElement 0 PopLocal r0 CheckStack 0 Push r0 LoadContextVar 0, 0 DirectCall CP#1, 1 Drop1 Push r0 PopLocal r2 Try #0 start: PushConstant CP#3 DirectCall CP#1, 1 Drop1 Jump L1 Try #0 end: Try #0 handler: SetFrame 6 Push r2 PopLocal r0 MoveSpecial exception, r2 MoveSpecial stackTrace, r3 Push r0 PopLocal r4 Try #1 start: PushConstant CP#5 DirectCall CP#1, 1 Drop1 Jump L2 Try #1 end: Try #1 handler: SetFrame 6 Push r4 PopLocal r0 MoveSpecial exception, r4 MoveSpecial stackTrace, r5 Push r0 LoadContextVar 0, 0 DirectCall CP#1, 1 Drop1 Push r4 Push r5 Throw 1 L2: Push r4 PopLocal r0 Push r0 LoadContextVar 0, 0 DirectCall CP#1, 1 Drop1 PushInt 43 ReturnTOS L1: Push r2 PopLocal r0 Push r0 PopLocal r4 Try #2 start: PushConstant CP#5 DirectCall CP#1, 1 Drop1 Jump L3 Try #2 end: Try #2 handler: SetFrame 6 Push r4 PopLocal r0 MoveSpecial exception, r4 MoveSpecial stackTrace, r5 Push r0 LoadContextVar 0, 0 DirectCall CP#1, 1 Drop1 Push r4 Push r5 Throw 1 L3: Push r4 PopLocal r0 Push r0 LoadContextVar 0, 0 DirectCall CP#1, 1 Drop1 PushInt 43 ReturnTOS } Function 'testTryCatchFinally', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 5 CheckStack 0 Try #0 start: Try #1 start: PushConstant CP#0 DirectCall CP#1, 1 Drop1 Jump L1 Try #1 end: Try #1 handler: SetFrame 5 MoveSpecial exception, r2 MoveSpecial stackTrace, r3 Push r2 PopLocal r4 PushConstant CP#4 DirectCall CP#1, 1 Drop1 Jump L1 L1: Jump L2 Try #0 end: Try #0 handler: SetFrame 5 MoveSpecial exception, r0 MoveSpecial stackTrace, r1 PushConstant CP#6 DirectCall CP#1, 1 Drop1 Push r0 Push r1 Throw 1 L2: PushConstant CP#6 DirectCall CP#1, 1 Drop1 PushNull ReturnTOS } ExceptionsTable { try-index 0, outer -1, start 4, end 40, handler 40, needs-stack-trace, synthetic, types [CP#5] try-index 1, outer 0, start 4, end 14, handler 14, types [CP#3] } ConstantPool { [0] = ObjectRef 'try' [1] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] [2] = Reserved [3] = Type dart:core::Object [4] = ObjectRef 'catch' [5] = Type dynamic [6] = ObjectRef 'finally' } Function 'main', static, reflectable, debuggable parameters [] (required: 0) return-type dynamic Bytecode { Entry 0 CheckStack 0 PushNull ReturnTOS } ConstantPool { }